import { DSLNodeType, DSLQuery } from '@lingxiteam/dsl'; import type { CSSProperties, FC } from 'react'; import React from 'react'; import type { BorderPosition } from '../types'; import LocalDragUtils, { CanvasDragMode } from '../../utils/localDragUtils'; declare type HoverContainer = 'pagezone' | 'siderBar' | ''; export interface PageZoneContextValue { currentDropIds: Set; addCurrentDrop: (id: string) => void; removeCurrentDropId: (id: string) => void; cleanCurrentDropIds: () => void; childCompId: string; currentDropCompId: string; setCurrentDropCompId: (id: string) => void; currentDropBorderPositon: BorderPosition; setCurrentDropBorderPositon: (borderPosition: BorderPosition) => void; scrollFlag: number; isHoverBlankContainer: boolean; addBlankContainer: (id: string) => void; removeBlankContainer: (id: string) => void; addFormQueue: (id: string) => void; isLegalForm: (data: any) => boolean; pageZoneContainerId: string; elementRelList: any; setElementRelList: (list: any) => void; cacheHoverElement?: any; currentHoverContainer: HoverContainer; editPageZoneCanRemoveCompBefore?: (node: DSLNodeType) => boolean; setCurrentHoverContainer: (type: HoverContainer) => void; currentBlankContainer: { formItemIndex: number; formContainerId: string; }; onChangeCurrentBlankContainer: (data: { formItemIndex: number; formContainerId: string; }) => void; localDragRef: { current: LocalDragUtils; }; canvasDragMode: CanvasDragMode; onDrop?: (dropData: any, dragNodeData: any, position: BorderPosition) => void; pageZoneType?: 'Editor' | 'SceneSimulator'; multiSelectMode: boolean; setMultiSelectMode(mode: boolean): void; DSLCore: DSLQuery | undefined; /** * 当前节点选中样式 * @param nodeId 节点id * @returns */ getSelectMaskStyle?: (nodeId: string) => CSSProperties; /** * 自定义渲染选中操作面板 * @param nodeId 节点id * @returns */ renderSelectOperator?: (nodeId: string) => React.Component; /** * 元素加载监听器 */ mutationObserver: { observer: MutationObserver; startObserver: (el: HTMLElement) => void; }; /** * 画布控件加载监听器 */ renderListeners: { listeners: Record; addListener: (compId: string, cb: Function) => void; triggerListener: (compId: string) => void; }; } export interface PageZoneProviderProps { editPageZoneCanRemoveCompBefore?: (node: DSLNodeType) => boolean; onDrop?: (dropData: any, dragNodeData: any, position: BorderPosition) => void; _pageZoneHoverContainerId?: string; pageZoneType?: 'Editor' | 'SceneSimulator'; /** * 当前节点选中样式 * @param nodeId 节点id * @returns */ getSelectMaskStyle?: (nodeId: string) => CSSProperties; /** * 自定义渲染选中操作面板 * @param nodeId 节点id * @returns */ renderSelectOperator?: (nodeId: string) => React.Component; /** * 画布只允许查看 */ canvasOnlyView?: boolean; ref?: any; } declare const PageZoneProvider: FC; declare const usePageZoneContext: () => PageZoneContextValue; export { PageZoneProvider, usePageZoneContext, HoverContainer };