vue3-free-layout
Version:
[vue3+ts]拖动布局,自由拖动,标尺,放大缩小,控件之间的标尺
38 lines (37 loc) • 1.25 kB
TypeScript
import * as Y from "yjs";
import { WebsocketProvider } from "y-websocket";
import { DesignWidget } from "@/types";
export type YWidget = Y.Map<any>;
export type YArray = Y.Array<YWidget>;
interface Delta {
insert?: Array<any> | string;
delete?: number;
retain?: number;
}
interface KeysData {
key: string;
action: 'add' | 'update' | 'delete';
value: any;
}
export interface UpdateData {
type: 'array' | 'map';
path: Array<number | string>;
target: any;
deltaData?: Delta;
keysData?: KeysData;
handler: Function;
}
export default class SynchronizeService<T> {
ydoc: Y.Doc;
wsProvider: WebsocketProvider;
yWidget: Y.Array<YWidget>;
constructor(serverUrl?: string, roomName?: string);
createWidget(widget: DesignWidget): Y.Map<any>;
_onDataUpdate(YArrayEvent: Array<any>, Transaction: any): void;
onDataUpdate: (data: T[], updateData: UpdateData[]) => void;
getCurrentByPath(data: any, path: Array<string | number>): any;
handlerArray(path: Array<string | number>, deltaData: Delta, currentData: any): void;
handlerMap(path: Array<string | number>, keysData: KeysData, currentData: any): void;
destroy(): void;
}
export {};