mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-03-07 10:57:19 +00:00
71 lines
1.7 KiB
TypeScript
71 lines
1.7 KiB
TypeScript
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;
|
||
|
||
constructor(dragon: InnerDragon) {
|
||
this[dragonSymbol] = dragon;
|
||
}
|
||
|
||
static create(dragon: InnerDragon | null) {
|
||
if (!dragon) return null;
|
||
return new Dragon(dragon);
|
||
}
|
||
|
||
/**
|
||
* is dragging or not
|
||
*/
|
||
get dragging() {
|
||
return this[dragonSymbol].dragging;
|
||
}
|
||
|
||
/**
|
||
* 绑定 dragstart 事件
|
||
* @param func
|
||
* @returns
|
||
*/
|
||
onDragstart(func: (e: LocateEvent) => any) {
|
||
return this[dragonSymbol].onDragstart((e: InnerLocateEvent) => func(LocateEvent.create(e)!));
|
||
}
|
||
|
||
/**
|
||
* 绑定 drag 事件
|
||
* @param func
|
||
* @returns
|
||
*/
|
||
onDrag(func: (e: LocateEvent) => any) {
|
||
return this[dragonSymbol].onDrag((e: InnerLocateEvent) => func(LocateEvent.create(e)!));
|
||
}
|
||
|
||
/**
|
||
* 绑定 dragend 事件
|
||
* @param func
|
||
* @returns
|
||
*/
|
||
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,
|
||
}),
|
||
);
|
||
}
|
||
|
||
/**
|
||
* 设置拖拽监听的区域 shell,以及自定义拖拽转换函数 boost
|
||
* @param shell 拖拽监听的区域
|
||
* @param boost 拖拽转换函数
|
||
*/
|
||
from(shell: Element, boost: (e: MouseEvent) => DragNodeDataObject | null) {
|
||
return this[dragonSymbol].from(shell, boost);
|
||
}
|
||
}
|