import { L10n } from '@syncfusion/ej2-base'; import { CustomFormTemplate, ToolboxCategory } from '../../model/base'; import { FormBuilder } from '../../form-builder'; import { FormSchema } from '@syncfusion/ej2-form-renderer'; import { FieldDragStartEventArgs, FieldDragOverEventArgs, FieldDroppedEventArgs } from '../../form-builder'; import { FormNode } from '@syncfusion/ej2-form-renderer'; /** @private */ export interface MainSectionProps { formSchema: FormSchema; activeFieldId?: string; paletteConfig?: ToolboxCategory[]; mode?: 'Simple' | 'Developer'; enableRtl?: boolean; locale?: string; enablePreview?: boolean; hasClipboardData?: boolean; onDrop: (component: FormNode, dropTargetIndex?: number | null, dropPosition?: 'before' | 'after' | null) => void; onNestedDrop: (parentId: string, component: FormNode, cellInfo?: { row: number; col: number; tabIndex?: number; }, parentPath?: string, dropTargetIndex?: number | null, dropPosition?: 'before' | 'after' | null) => void; onReorder: (newComponents: FormNode[]) => void; onNestedReorder: (parentId: string, parentPath: string, newChildren: FormNode[], cellInfo?: { row?: number; col?: number; tabIndex?: number; }) => void; onDelete: (fieldId: string, isReordering?: boolean) => void; onEdit: (fieldId: string) => void; onCopy: (field: FormNode) => void; onPaste: (targetFieldId: string) => void; onSwitchWidget?: (fieldId: string, newWidgetType: string) => void; onMoveUp?: (fieldId: string) => void; onMoveDown?: (fieldId: string) => void; onNestedMoveUp?: (fieldId: string, parentId: string, parentPath: string, cellInfo?: { row?: number; col?: number; tabIndex?: number; }) => void; onNestedMoveDown?: (fieldId: string, parentId: string, parentPath: string, cellInfo?: { row?: number; col?: number; tabIndex?: number; }) => void; onFieldDragStarted?: (args: FieldDragStartEventArgs) => void; onFieldDraggingOver?: (args: FieldDragOverEventArgs) => void; onFieldDropped?: (args: FieldDroppedEventArgs) => void; onDropBatchStart?: () => void; onDropBatchEnd?: () => void; onReset?: () => void; onCopySchema: () => void; /** * The owning `FormBuilder` instance. The `FormFieldWrapper` consults * this to resolve the matching `ToolboxItemSettings` for the field * being rendered so it can mount the consumer's custom template via * `getTemplateFunction` instead of the default Syncfusion control. */ formBuilder?: FormBuilder | null; parent?: Element; } /** @private */ export declare class MainSection { private host; private props; private l10n; private rootEl; private formAreaEl; private cachedFields; static activeFieldId: string; private renderedInstances; private owners; private dropTargetIndex; private dropPosition; private draggedComponentInfo; private isReordering; private isNestedReordering; private activeNestedContainer; private draggingOverPanel; private currentComponents; private currentSchema; private pointerTrackerHost; private pointerTrackerHandler; private nestedDropTargetIndex; private nestedDropPosition; private activeTabIndices; private initialDragY; private currentDragY; private isDraggingFromPalette; private draggedItemIndex; private nestedInitialDragY; private nestedCurrentDragY; private nestedDraggedIndex; private nestedComponents; private nestedContainerId; private nestedContainerPath; private nestedCellInfo; private rootCloneHost; private nestedCloneHost; private toolbarHost; private editorToolbar; private showSplitView; private isPreviewOpen; private isListBoxPaneOpen; private addFieldMessageWrapper; private addFieldMessage; private listboxPane; private listboxPaneHost; private jsonViewer; private lastJsonSchemaRef; private previewPane; private previewPaneHost; private lastPreviewSchemaRef; private lastPreviewSplitData; private parent; private handlers; constructor(host: HTMLElement, props: MainSectionProps, l10n: L10n); render(schema: FormSchema, changedFieldId?: string, refreshCachedFields?: boolean): void; private refreshRenderedComponent; private destroyRenderedInstance; /** @private */ destroy(): void; /** @private */ static isDefaultFormSchema(schema: FormSchema | null | undefined): boolean; private getFormWidth; private buildShell; private renderToolbar; private handleReset; private handleCopySchema; private handleShowBuild; private handleShowJson; private handleShowPreview; /** @private */ closePreview(): void; private renderPreview; private ensurePreviewPane; /** * Returns the owning `FormBuilder.toolboxItems` entries so the preview * `FormRenderer` receives them as its `customWidgetSettings` — each * entry's `template` / `type` / `templateId` passed as-is. * * @private */ private getToolboxItems; private getPreviewPaneOwners; private disposePreviewPane; /** * Programmatically sets a form field's value for user edits. * * @private * @param {string} fieldName - The field's `name` (the schema property's `name`). * @param {any} value - The new value to set. * @returns void */ setFieldValue(fieldName: string, value: any): void; private renderJsonView; refreshJsonViewer(schema: FormSchema): void; updateJsonViewer(schema: FormSchema): void; private notifyFormIdInvalidation; private disposeJsonViewer; private disposeChildren; private renderEmptyState; private renderAddFieldMessage; private renderListBoxPaneHost; openListBoxPane(): void; closeListBoxPane(): void; private onAddFieldMessageKeyDown; private onListBoxSelect; private escapeHtml; private renderForm; private renderField; /** * Resolves the matching `ToolboxItemSettings` entry from the owning * `FormBuilder.toolboxItems` for the component being rendered, the * same flow the `FormRenderer` uses for its `customWidgetSettings`. * * @private */ private resolveCustomWidget; /** * @private */ private getTemplateFunction; /** * @private */ private sanitizeTemplateValue; private isCachedFieldType; private cacheFields; private disposeCachedFields; private renderFormComponent; private renderPanel; private renderNestedChildren; private createNestedFieldSlot; private mountNestedChildren; private renderCard; private renderTable; private renderTabs; private createTabBody; private isLayout; private registerRootDroppable; private installGlobalPointerTracker; private disposeGlobalPointerTracker; private makeEmptyStateDrop; private attachNestedDroppable; private extractComponentsFromDrop; private buildFormComponentFromPalette; /** * @private */ getToolboxEntry(type: string): any | null; private handleDragOver; private handleDragLeave; private handleDrop; private handleNestedDrop; private isTemplateDrop; private handleNestedDragOver; private handleNestedDragLeave; private helper; private fillCloneContent; private dragStart; private drag; private dragStop; private nestedHelper; private nestedDragStart; private nestedDrag; private nestedDragStop; private handleMoveUp; private handleMoveDown; private handleNestedMoveUp; private handleNestedMoveDown; private getNestedChildren; private findComponentById; private isIdInSubtree; private clearAllDragVisuals; private findDropTarget; private findFilteredClosest; private updateDropTargetVisuals; private clearDropTargetVisuals; private updateNestedDropTargetVisuals; private clearNestedDropTargetVisuals; private isPaletteDrag; private getClientY; private getEventPoint; private addTrackedListener; private removeTrackedListener; private trackTimeout; /** @private */ __audit(): { droppables: number; draggables: number; wrappers: number; tooltips: number; tabs: number; toolbars: number; messages: number; buttons: number; listeners: number; timers: number; gridRefs: number; preservedNodes: number; }; } /** @private */ export declare function extractTemplateComponents(template: CustomFormTemplate): FormNode[]; export default MainSection;