import { type Editor, Node } from '@tiptap/core'; import { type Node as ProseMirrorNode } from '@tiptap/pm/model'; /** * The deliberately small content-control surface exposed by Writer. * * Data binding, repeating sections, dates, drop-downs, pictures, and other * active form semantics are intentionally not represented by this model. A * control is an inline, editable container whose metadata can round-trip to a * passive Word `w:sdt`. */ export type WorkDocumentContentControlType = 'text' | 'richText'; export type WorkDocumentContentControlLock = 'unlocked' | 'contentLocked' | 'sdtLocked' | 'sdtContentLocked'; export type WorkDocumentContentControlAppearance = 'boundingBox' | 'hidden' | 'tags'; export interface WorkDocumentContentControlProperties { id: string; nativeId: number | null; type: WorkDocumentContentControlType; alias: string; tag: string; lock: WorkDocumentContentControlLock; multiLine: boolean; appearance: WorkDocumentContentControlAppearance; color: string | null; } export interface DocumentContentControlInsertOptions extends Partial { /** Initial plain text for an empty selection. */ text?: string; } export interface DocumentContentControlCommandOptions { restoreFocus?: boolean; /** Explicitly permits deleting a control whose `w:sdt` is locked. */ allowLocked?: boolean; } export interface SelectedDocumentContentControl { node: ProseMirrorNode; position: number; } declare module '@tiptap/core' { interface Commands { documentContentControl: { insertDocumentContentControl: (options?: DocumentContentControlInsertOptions) => ReturnType; setDocumentContentControlProperties: (value: Partial, options?: DocumentContentControlCommandOptions) => ReturnType; deleteDocumentContentControl: (options?: DocumentContentControlCommandOptions) => ReturnType; }; } } export declare const DOCUMENT_CONTENT_CONTROL_DEFAULTS: WorkDocumentContentControlProperties; /** Transaction meta used by the typed commands to cross the lock guard. */ export declare const DOCUMENT_CONTENT_CONTROL_MUTATION_META = "documentContentControlMutation"; export declare const DocumentContentControl: Node; export declare function documentContentControlProperties(editor: Editor): WorkDocumentContentControlProperties; export declare function setDocumentContentControlProperties(editor: Editor, value: Partial, options?: DocumentContentControlCommandOptions): boolean; export declare function selectedDocumentContentControl(stateOrEditor: Editor | Editor['state']): SelectedDocumentContentControl | null; export declare function normalizeDocumentContentControlProperties(value: Partial>): WorkDocumentContentControlProperties; export declare function contentControlLocksContent(value: WorkDocumentContentControlLock | unknown): boolean; export declare function contentControlLocksShell(value: WorkDocumentContentControlLock | unknown): boolean; export declare function contentControlCss(value: Partial>): string; export declare function contentControlDomAttributes(value: Partial>): Record; export declare function documentContentControlPropertiesFromElement(element: Element): WorkDocumentContentControlProperties;