import { IService } from '../IService.js'; import { IDesignItem } from '../../item/IDesignItem.js'; import { IPoint } from '../../../interfaces/IPoint.js'; import { IDesignerCanvas } from '../../widgets/designerView/IDesignerCanvas.js'; export interface IPlacementService extends IService { startPlacementAllowed?(event: MouseEvent, designerCanvas: IDesignerCanvas, container: IDesignItem, items: IDesignItem[]): boolean; serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration, item?: IDesignItem): boolean; isEnterableContainer(container: IDesignItem): boolean; canEnter(container: IDesignItem, items: IDesignItem[]): boolean; canLeave(container: IDesignItem, items: IDesignItem[]): boolean; /** Resolve an insertion index before an action is recorded. Exclude item from the container's children when calculating the index. */ getInsertionIndex?(container: IDesignItem, item: IDesignItem, index?: number): number | undefined; enterContainer(container: IDesignItem, items: IDesignItem[], mode: 'normal' | 'drop'): any; leaveContainer(container: IDesignItem, items: IDesignItem[]): any; getElementOffset(container: IDesignItem, designItem?: IDesignItem): IPoint; placePoint(event: MouseEvent, designerCanvas: IDesignerCanvas, container: IDesignItem, startPoint: IPoint, offsetInControl: IPoint, newPoint: IPoint, items: IDesignItem[]): IPoint; startPlace(event: MouseEvent, designerCanvas: IDesignerCanvas, container: IDesignItem, startPoint: IPoint, offsetInControl: IPoint, newPoint: IPoint, items: IDesignItem[]): any; place(event: MouseEvent, designerCanvas: IDesignerCanvas, container: IDesignItem, startPoint: IPoint, offsetInControl: IPoint, newPoint: IPoint, items: IDesignItem[]): any; finishPlace(event: MouseEvent, designerCanvas: IDesignerCanvas, container: IDesignItem, startPoint: IPoint, offsetInControl: IPoint, newPoint: IPoint, items: IDesignItem[]): any; moveElements(designItems: IDesignItem[], position: IPoint, absolute: boolean): any; }