mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-12 11:20:11 +00:00
feat: add some params for onDragstart & onDrag & onDragend
This commit is contained in:
parent
5bb8cf5d12
commit
d1c9838343
30
packages/shell/src/drag-object.ts
Normal file
30
packages/shell/src/drag-object.ts
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import { DragObject as InnerDragObject, DragNodeDataObject } from '@alilc/lowcode-designer';
|
||||||
|
import { dragObjectSymbol } from './symbols';
|
||||||
|
import Node from './node';
|
||||||
|
|
||||||
|
export default class DragObject {
|
||||||
|
private readonly [dragObjectSymbol]: InnerDragObject;
|
||||||
|
|
||||||
|
constructor(dragObject: InnerDragObject) {
|
||||||
|
this[dragObjectSymbol] = dragObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
static create(dragObject: InnerDragObject) {
|
||||||
|
if (!dragObject) return null;
|
||||||
|
return new DragObject(dragObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
get type() {
|
||||||
|
return this[dragObjectSymbol].type;
|
||||||
|
}
|
||||||
|
|
||||||
|
get nodes() {
|
||||||
|
const { nodes } = this[dragObjectSymbol];
|
||||||
|
if (!nodes) return null;
|
||||||
|
return nodes.map(Node.create);
|
||||||
|
}
|
||||||
|
|
||||||
|
get data() {
|
||||||
|
return (this[dragObjectSymbol] as DragNodeDataObject).data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,8 +1,12 @@
|
|||||||
import {
|
import {
|
||||||
Dragon as InnerDragon,
|
Dragon as InnerDragon,
|
||||||
|
DragObject as InnerDragObject,
|
||||||
DragNodeDataObject,
|
DragNodeDataObject,
|
||||||
|
LocateEvent as InnerLocateEvent,
|
||||||
} from '@alilc/lowcode-designer';
|
} from '@alilc/lowcode-designer';
|
||||||
import { dragonSymbol } from './symbols';
|
import { dragonSymbol } from './symbols';
|
||||||
|
import LocateEvent from './locate-event';
|
||||||
|
import DragObject from './drag-object';
|
||||||
|
|
||||||
export default class Dragon {
|
export default class Dragon {
|
||||||
private readonly [dragonSymbol]: InnerDragon;
|
private readonly [dragonSymbol]: InnerDragon;
|
||||||
@ -28,9 +32,8 @@ export default class Dragon {
|
|||||||
* @param func
|
* @param func
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
onDragstart(func: (/* e: LocateEvent */) => any) {
|
onDragstart(func: (e: LocateEvent) => any) {
|
||||||
// TODO: 补充必要参数
|
return this[dragonSymbol].onDragstart((e: InnerLocateEvent) => func(LocateEvent.create(e)!));
|
||||||
return this[dragonSymbol].onDragstart(() => func());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -38,9 +41,8 @@ export default class Dragon {
|
|||||||
* @param func
|
* @param func
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
onDrag(func: (/* e: LocateEvent */) => any) {
|
onDrag(func: (e: LocateEvent) => any) {
|
||||||
// TODO: 补充必要参数
|
return this[dragonSymbol].onDrag((e: InnerLocateEvent) => func(LocateEvent.create(e)!));
|
||||||
return this[dragonSymbol].onDrag(() => func());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -48,9 +50,13 @@ export default class Dragon {
|
|||||||
* @param func
|
* @param func
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
onDragend(func: (/* e: LocateEvent */) => any) {
|
onDragend(func: (o: { dragObject: DragObject; copy?: boolean }) => any) {
|
||||||
// TODO: 补充必要参数
|
return this[dragonSymbol].onDragend(
|
||||||
return this[dragonSymbol].onDragend(() => func());
|
(o: { dragObject: InnerDragObject; copy?: boolean }) => func({
|
||||||
|
dragObject: DragObject.create(o.dragObject)!,
|
||||||
|
copy: o.copy,
|
||||||
|
}),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -61,4 +67,4 @@ export default class Dragon {
|
|||||||
from(shell: Element, boost: (e: MouseEvent) => DragNodeDataObject | null) {
|
from(shell: Element, boost: (e: MouseEvent) => DragNodeDataObject | null) {
|
||||||
return this[dragonSymbol].from(shell, boost);
|
return this[dragonSymbol].from(shell, boost);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
48
packages/shell/src/locate-event.ts
Normal file
48
packages/shell/src/locate-event.ts
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
import { LocateEvent as InnerLocateEvent } from '@alilc/lowcode-designer';
|
||||||
|
import { locateEventSymbol } from './symbols';
|
||||||
|
import DragObject from './drag-object';
|
||||||
|
|
||||||
|
export default class LocateEvent {
|
||||||
|
private readonly [locateEventSymbol]: InnerLocateEvent;
|
||||||
|
|
||||||
|
constructor(locateEvent: InnerLocateEvent) {
|
||||||
|
this[locateEventSymbol] = locateEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
static create(locateEvent: InnerLocateEvent) {
|
||||||
|
if (!locateEvent) return null;
|
||||||
|
return new LocateEvent(locateEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
get type() {
|
||||||
|
return this[locateEventSymbol].type;
|
||||||
|
}
|
||||||
|
|
||||||
|
get globalX() {
|
||||||
|
return this[locateEventSymbol].globalX;
|
||||||
|
}
|
||||||
|
|
||||||
|
get globalY() {
|
||||||
|
return this[locateEventSymbol].globalY;
|
||||||
|
}
|
||||||
|
|
||||||
|
get originalEvent() {
|
||||||
|
return this[locateEventSymbol].originalEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
get target() {
|
||||||
|
return this[locateEventSymbol].target;
|
||||||
|
}
|
||||||
|
|
||||||
|
get canvasX() {
|
||||||
|
return this[locateEventSymbol].canvasX;
|
||||||
|
}
|
||||||
|
|
||||||
|
get canvasY() {
|
||||||
|
return this[locateEventSymbol].canvasY;
|
||||||
|
}
|
||||||
|
|
||||||
|
get dragObject() {
|
||||||
|
return DragObject.create(this[locateEventSymbol].dragObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -21,4 +21,6 @@ export const dragonSymbol = Symbol('dragon');
|
|||||||
export const componentMetaSymbol = Symbol('componentMeta');
|
export const componentMetaSymbol = Symbol('componentMeta');
|
||||||
export const dropLocationSymbol = Symbol('dropLocation');
|
export const dropLocationSymbol = Symbol('dropLocation');
|
||||||
export const simulatorHostSymbol = Symbol('simulatorHost');
|
export const simulatorHostSymbol = Symbol('simulatorHost');
|
||||||
export const simulatorRendererSymbol = Symbol('simulatorRenderer');
|
export const simulatorRendererSymbol = Symbol('simulatorRenderer');
|
||||||
|
export const dragObjectSymbol = Symbol('dragObject');
|
||||||
|
export const locateEventSymbol = Symbol('locateEvent');
|
||||||
Loading…
x
Reference in New Issue
Block a user