mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-12 03:01:16 +00:00
66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import {
|
|
IPublicApiCanvas,
|
|
IPublicModelDropLocation,
|
|
IPublicModelScrollTarget,
|
|
IPublicModelScrollable,
|
|
IPublicModelScroller,
|
|
IDesigner,
|
|
IPublicTypeLocationData,
|
|
IPublicModelEditor,
|
|
IPublicModelDragon,
|
|
IPublicModelActiveTracker,
|
|
} from '@alilc/lowcode-types';
|
|
import {
|
|
ScrollTarget as InnerScrollTarget,
|
|
} from '@alilc/lowcode-designer';
|
|
import { editorSymbol, designerSymbol, nodeSymbol } from '../symbols';
|
|
import { Dragon } from '../model';
|
|
import { DropLocation } from '../model/drop-location';
|
|
import { ActiveTracker } from '../model/active-tracker';
|
|
|
|
|
|
export class Canvas implements IPublicApiCanvas {
|
|
private readonly [editorSymbol]: IPublicModelEditor;
|
|
|
|
private get [designerSymbol](): IDesigner {
|
|
return this[editorSymbol].get('designer') as IDesigner;
|
|
}
|
|
|
|
constructor(editor: IPublicModelEditor) {
|
|
this[editorSymbol] = editor;
|
|
}
|
|
|
|
createScrollTarget(shell: HTMLDivElement): IPublicModelScrollTarget {
|
|
return new InnerScrollTarget(shell);
|
|
}
|
|
|
|
createScroller(scrollable: IPublicModelScrollable): IPublicModelScroller {
|
|
return this[designerSymbol].createScroller(scrollable);
|
|
}
|
|
|
|
/**
|
|
* 创建插入位置,考虑放到 dragon 中
|
|
*/
|
|
createLocation(locationData: IPublicTypeLocationData): IPublicModelDropLocation {
|
|
return this[designerSymbol].createLocation({
|
|
...locationData,
|
|
target: (locationData.target as any)[nodeSymbol],
|
|
});
|
|
}
|
|
|
|
get dragon(): IPublicModelDragon | null {
|
|
return Dragon.create(this[designerSymbol].dragon);
|
|
}
|
|
|
|
get activeTracker(): IPublicModelActiveTracker | null {
|
|
const activeTracker = new ActiveTracker(this[designerSymbol].activeTracker);
|
|
return activeTracker;
|
|
}
|
|
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
get dropLocation() {
|
|
return DropLocation.create((this[designerSymbol] as any).dropLocation || null);
|
|
}
|
|
} |