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 {
|
||||
Dragon as InnerDragon,
|
||||
DragObject as InnerDragObject,
|
||||
DragNodeDataObject,
|
||||
LocateEvent as InnerLocateEvent,
|
||||
} from '@alilc/lowcode-designer';
|
||||
import { dragonSymbol } from './symbols';
|
||||
import LocateEvent from './locate-event';
|
||||
import DragObject from './drag-object';
|
||||
|
||||
export default class Dragon {
|
||||
private readonly [dragonSymbol]: InnerDragon;
|
||||
@ -28,9 +32,8 @@ export default class Dragon {
|
||||
* @param func
|
||||
* @returns
|
||||
*/
|
||||
onDragstart(func: (/* e: LocateEvent */) => any) {
|
||||
// TODO: 补充必要参数
|
||||
return this[dragonSymbol].onDragstart(() => func());
|
||||
onDragstart(func: (e: LocateEvent) => any) {
|
||||
return this[dragonSymbol].onDragstart((e: InnerLocateEvent) => func(LocateEvent.create(e)!));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -38,9 +41,8 @@ export default class Dragon {
|
||||
* @param func
|
||||
* @returns
|
||||
*/
|
||||
onDrag(func: (/* e: LocateEvent */) => any) {
|
||||
// TODO: 补充必要参数
|
||||
return this[dragonSymbol].onDrag(() => func());
|
||||
onDrag(func: (e: LocateEvent) => any) {
|
||||
return this[dragonSymbol].onDrag((e: InnerLocateEvent) => func(LocateEvent.create(e)!));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,9 +50,13 @@ export default class Dragon {
|
||||
* @param func
|
||||
* @returns
|
||||
*/
|
||||
onDragend(func: (/* e: LocateEvent */) => any) {
|
||||
// TODO: 补充必要参数
|
||||
return this[dragonSymbol].onDragend(() => func());
|
||||
onDragend(func: (o: { dragObject: DragObject; copy?: boolean }) => any) {
|
||||
return this[dragonSymbol].onDragend(
|
||||
(o: { dragObject: InnerDragObject; copy?: boolean }) => func({
|
||||
dragObject: DragObject.create(o.dragObject)!,
|
||||
copy: o.copy,
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
@ -22,3 +22,5 @@ export const componentMetaSymbol = Symbol('componentMeta');
|
||||
export const dropLocationSymbol = Symbol('dropLocation');
|
||||
export const simulatorHostSymbol = Symbol('simulatorHost');
|
||||
export const simulatorRendererSymbol = Symbol('simulatorRenderer');
|
||||
export const dragObjectSymbol = Symbol('dragObject');
|
||||
export const locateEventSymbol = Symbol('locateEvent');
|
||||
Loading…
x
Reference in New Issue
Block a user