71 lines
1.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}