UNPKG

vue3-free-layout

Version:

[vue3+ts]拖动布局,自由拖动,标尺,放大缩小,控件之间的标尺

77 lines (76 loc) 3.07 kB
import { DesignWidget, Point, Widget } from "../types"; import { Component, InjectionKey, Ref } from "vue"; import AlignmentLineService from "@/services/alignmentLine.service"; import SynchronizeService, { YWidget } from "@/services/synchronize.service"; import UtilsService from "@/services/utils.service"; import { Publisher } from "@/utils/publisher"; export interface Modal { newWidget?: DesignWidget; rect: { x: number; y: number; width: number; height: number; }; canvaseRect: { x: number; y: number; width: number; height: number; }; pageRect: { x: number; y: number; width: number; height: number; cwidth: number; cheight: number; padding: [number, number, number, number]; }; scrollLeft: number; scrollTop: number; scale: number; selecteds: Array<YWidget>; widgets: Array<DesignWidget>; } export default class DesignService { props: any; emit: (event: 'page-resized' | 'drag-start' | 'drag-moving' | 'drag-end' | 'selected-change' | 'deleted' | 'addNewWidget' | 'delNewWidget' | 'addHeight', ...args: any) => void; static token: InjectionKey<DesignService>; static itemSlot: InjectionKey<(widget: DesignWidget) => Component>; static SPAN: number; drawerRef: Ref<HTMLElement | null>; selectedNewWidget?: Widget; selectedMousePoint?: Point; selectedNewOrgState?: DesignWidget; modal: Modal; utils: UtilsService; boundaryLine: import("vue").ComputedRef<import("@/services/alignmentLine.service").BoundaryLine[]>; syncService: SynchronizeService<DesignWidget>; alignLineService: AlignmentLineService; isNotOverlapInGridPublisher: Publisher<(widgets: Array<DesignWidget>) => boolean, DesignWidget[]>; canvase2PanelRect: import("vue").ComputedRef<{ x: number; y: number; ex: number; ey: number; }>; emitter: import("mitt").Emitter<Record<string, any>>; handlerSelectedChange: () => void; constructor(props: any, emit: (event: 'page-resized' | 'drag-start' | 'drag-moving' | 'drag-end' | 'selected-change' | 'deleted' | 'addNewWidget' | 'delNewWidget' | 'addHeight', ...args: any) => void, slots: any); initWidgets(widgets: Array<Widget>): void; handlerSelecteds(): () => void; createWidgetHandler(widget: Widget): void; newWidgetDragingRegistHandler: (event: MouseEvent) => void; newWidgetDropRegistHandler: (event: MouseEvent) => void; deleteWidget(id: string): void; addScale(value: number): void; setScale(newscale: number): void; setSelectedArea(begin: Point, end: Point): void; addSelected(widget: YWidget): void; setSelected(widgets: Array<YWidget>): void; clearnSelected(): void; deleteSelected(id: string): void; changePageSize(width: number, height: number, padding: [number, number, number, number]): void; getPageWidgets(): DesignWidget[]; }