@pixerate/editor 0.19.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.md +95 -4
  2. package/dist/agent/index.cjs +625 -2
  3. package/dist/agent/index.cjs.map +1 -1
  4. package/dist/agent/index.d.cts +286 -2
  5. package/dist/agent/index.d.ts +286 -2
  6. package/dist/agent/index.js +624 -1
  7. package/dist/agent/index.js.map +1 -1
  8. package/dist/canvas/index.cjs +1240 -22
  9. package/dist/canvas/index.cjs.map +1 -1
  10. package/dist/canvas/index.d.cts +515 -3
  11. package/dist/canvas/index.d.ts +515 -3
  12. package/dist/canvas/index.js +1219 -1
  13. package/dist/canvas/index.js.map +1 -1
  14. package/dist/chunk-3TYMNULT.js +1367 -0
  15. package/dist/chunk-3TYMNULT.js.map +1 -0
  16. package/dist/chunk-4QPLEUL2.cjs +4480 -0
  17. package/dist/chunk-4QPLEUL2.cjs.map +1 -0
  18. package/dist/chunk-4SUNJZWB.cjs +553 -0
  19. package/dist/chunk-4SUNJZWB.cjs.map +1 -0
  20. package/dist/chunk-A7DKIA72.js +2657 -0
  21. package/dist/chunk-A7DKIA72.js.map +1 -0
  22. package/dist/chunk-AXV2ZW34.cjs +118 -0
  23. package/dist/chunk-AXV2ZW34.cjs.map +1 -0
  24. package/dist/chunk-B2ZRLN4S.js +118 -0
  25. package/dist/chunk-B2ZRLN4S.js.map +1 -0
  26. package/dist/chunk-CYFJCKC4.js +4480 -0
  27. package/dist/chunk-CYFJCKC4.js.map +1 -0
  28. package/dist/chunk-GVW4P7BG.js +2706 -0
  29. package/dist/chunk-GVW4P7BG.js.map +1 -0
  30. package/dist/chunk-JACER6TE.cjs +1 -0
  31. package/dist/chunk-JACER6TE.cjs.map +1 -0
  32. package/dist/chunk-JYRIOFEN.cjs +2657 -0
  33. package/dist/chunk-JYRIOFEN.cjs.map +1 -0
  34. package/dist/chunk-KYRZDWM4.js +299 -0
  35. package/dist/chunk-KYRZDWM4.js.map +1 -0
  36. package/dist/chunk-LA7PEGU3.cjs +299 -0
  37. package/dist/chunk-LA7PEGU3.cjs.map +1 -0
  38. package/dist/chunk-N7FG6CBO.js +1 -0
  39. package/dist/chunk-N7FG6CBO.js.map +1 -0
  40. package/dist/chunk-OYXSKQFR.js +553 -0
  41. package/dist/chunk-OYXSKQFR.js.map +1 -0
  42. package/dist/chunk-TVRC4KVT.cjs +1367 -0
  43. package/dist/chunk-TVRC4KVT.cjs.map +1 -0
  44. package/dist/chunk-U6NDQFOK.cjs +2706 -0
  45. package/dist/chunk-U6NDQFOK.cjs.map +1 -0
  46. package/dist/controller-OUdxPY-X.d.cts +754 -0
  47. package/dist/controller-OUdxPY-X.d.ts +754 -0
  48. package/dist/extensions/index.cjs +144 -3
  49. package/dist/extensions/index.cjs.map +1 -1
  50. package/dist/extensions/index.d.cts +9 -144
  51. package/dist/extensions/index.d.ts +9 -144
  52. package/dist/extensions/index.js +145 -4
  53. package/dist/grammar/index.cjs +31 -3
  54. package/dist/grammar/index.cjs.map +1 -1
  55. package/dist/grammar/index.d.cts +239 -19
  56. package/dist/grammar/index.d.ts +239 -19
  57. package/dist/grammar/index.js +31 -3
  58. package/dist/history/index.d.cts +2 -41
  59. package/dist/history/index.d.ts +2 -41
  60. package/dist/index-Ng1pG7JE.d.ts +899 -0
  61. package/dist/index-k3mFbPx_.d.cts +899 -0
  62. package/dist/index.cjs +457 -20
  63. package/dist/index.cjs.map +1 -1
  64. package/dist/index.d.cts +99 -12
  65. package/dist/index.d.ts +99 -12
  66. package/dist/index.js +457 -20
  67. package/dist/index.js.map +1 -1
  68. package/dist/registry-iAHbqkYt.d.cts +128 -0
  69. package/dist/registry-iAHbqkYt.d.ts +128 -0
  70. package/dist/serializers/index.cjs +26 -3
  71. package/dist/serializers/index.cjs.map +1 -1
  72. package/dist/serializers/index.d.cts +119 -6
  73. package/dist/serializers/index.d.ts +119 -6
  74. package/dist/serializers/index.js +24 -1
  75. package/dist/spreadsheet/index.cjs +122 -2
  76. package/dist/spreadsheet/index.cjs.map +1 -1
  77. package/dist/spreadsheet/index.d.cts +371 -313
  78. package/dist/spreadsheet/index.d.ts +371 -313
  79. package/dist/spreadsheet/index.js +127 -7
  80. package/dist/tokens-CyLZmIei.d.cts +76 -0
  81. package/dist/tokens-CyLZmIei.d.ts +76 -0
  82. package/dist/track-changes-G8JcWB8b.d.cts +306 -0
  83. package/dist/track-changes-G8JcWB8b.d.ts +306 -0
  84. package/dist/types-BZgcDsC5.d.cts +42 -0
  85. package/dist/types-BZgcDsC5.d.ts +42 -0
  86. package/dist/{types-JV3S8VeR.d.cts → types-DMe0vFB1.d.cts} +1 -1
  87. package/dist/{types-JV3S8VeR.d.ts → types-DMe0vFB1.d.ts} +1 -1
  88. package/package.json +11 -4
  89. package/dist/chunk-7FWEWE6T.js +0 -1888
  90. package/dist/chunk-7FWEWE6T.js.map +0 -1
  91. package/dist/chunk-AIZUKWTL.js +0 -1715
  92. package/dist/chunk-AIZUKWTL.js.map +0 -1
  93. package/dist/chunk-GLSIZKOX.js +0 -17
  94. package/dist/chunk-GLSIZKOX.js.map +0 -1
  95. package/dist/chunk-LDES3EOS.cjs +0 -1888
  96. package/dist/chunk-LDES3EOS.cjs.map +0 -1
  97. package/dist/chunk-LLUAKTLW.cjs +0 -532
  98. package/dist/chunk-LLUAKTLW.cjs.map +0 -1
  99. package/dist/chunk-MPPXH7U5.cjs +0 -336
  100. package/dist/chunk-MPPXH7U5.cjs.map +0 -1
  101. package/dist/chunk-O7LOPQMH.js +0 -336
  102. package/dist/chunk-O7LOPQMH.js.map +0 -1
  103. package/dist/chunk-QGVMBCT5.js +0 -532
  104. package/dist/chunk-QGVMBCT5.js.map +0 -1
  105. package/dist/chunk-SEDR75VH.cjs +0 -17
  106. package/dist/chunk-SEDR75VH.cjs.map +0 -1
  107. package/dist/chunk-YQCI4CCN.cjs +0 -1715
  108. package/dist/chunk-YQCI4CCN.cjs.map +0 -1
  109. package/dist/mention-Dcevh3ff.d.cts +0 -32
  110. package/dist/mention-Dcevh3ff.d.ts +0 -32
  111. package/dist/tokens-7kRTEtPb.d.cts +0 -39
  112. package/dist/tokens-7kRTEtPb.d.ts +0 -39
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/index.cjs","../src/controller.ts","../src/dirty.ts"],"names":[],"mappings":"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AK,QAAA,mCAAU,OAAA,+BAAS,SAAA,UAAW,gBAAA;AAAA,IACrC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKO,WAAA,CAAA,EAAiB;AACtB,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKO,WAAA,CAAY,KAAA,EAAgB;AACjC,IAAA,IAAA,CAAK,SAAA,EAAW,KAAA;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKO,OAAA,CAAQ,OAAA,EAAqB;AAClC,IAAA,OAAO,CAAC,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,QAAA,EAAU,OAAO,CAAA;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKO,KAAA,CAAM,OAAA,EAAkB;AAC7B,IAAA,IAAA,CAAK,SAAA,EAAW,OAAA;AAAA,EAClB;AACF,CAAA;AAKO,SAAS,kBAAA,CACd,eAAA,EACA,OAAA,EACiB;AACjB,EAAA,OAAO,IAAI,YAAA,CAAa,eAAA,EAAiB,OAAO,CAAA;AAClD;AFsMA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,6pJAAC","file":"/home/runner/work/editor/editor/packages/core/dist/index.cjs","sourcesContent":[null,"import { Editor, EditorOptions, Content, Extensions } from \"@tiptap/core\";\nimport { Slice } from \"@tiptap/pm/model\";\nimport { Token, tokenizePrompt } from \"./grammar\";\nimport {\n plainTextToTipTapHtml,\n plainTextToSlice,\n getEditorText,\n markdownToTipTapHtml,\n getEditorMarkdown,\n} from \"./serializers\";\n\nexport interface EditorControllerOptions extends Partial<\n Omit<EditorOptions, \"element\" | \"content\">\n> {\n element?: Element | HTMLElement | null;\n content?: string | Content;\n plainTextMode?: boolean;\n markdownMode?: boolean;\n extensions?: Extensions;\n onPlainTextChange?: (text: string) => void;\n onMarkdownChange?: (markdown: string) => void;\n onTokensChange?: (tokens: Token[]) => void;\n onSelectionChange?: (range: { from: number; to: number } | null) => void;\n}\n\n/**\n * UI-agnostic controller managing the lifecycle, commands, and plain-text/token\n * synchronization of a rich text or prompt editor.\n */\nexport class EditorController {\n public readonly editor: Editor;\n private readonly plainTextMode: boolean;\n private readonly markdownMode: boolean;\n private readonly onPlainTextChange?: (text: string) => void;\n private readonly onMarkdownChange?: (markdown: string) => void;\n private readonly onTokensChange?: (tokens: Token[]) => void;\n private readonly onSelectionChange?: (\n range: { from: number; to: number } | null,\n ) => void;\n private baselineContent: string;\n\n constructor(options: EditorControllerOptions = {}) {\n const {\n element,\n content,\n plainTextMode = false,\n markdownMode = false,\n extensions = [],\n onPlainTextChange,\n onMarkdownChange,\n onTokensChange,\n onSelectionChange,\n ...editorOptions\n } = options;\n\n this.plainTextMode = plainTextMode;\n this.markdownMode = markdownMode;\n this.onPlainTextChange = onPlainTextChange;\n this.onMarkdownChange = onMarkdownChange;\n this.onTokensChange = onTokensChange;\n this.onSelectionChange = onSelectionChange;\n\n const initialContent =\n plainTextMode && typeof content === \"string\"\n ? plainTextToTipTapHtml(content)\n : markdownMode && typeof content === \"string\"\n ? markdownToTipTapHtml(content)\n : content;\n\n this.editor = new Editor({\n element: element || undefined,\n content: initialContent,\n extensions,\n ...editorOptions,\n onUpdate: (props) => {\n editorOptions.onUpdate?.(props);\n this.handleUpdate();\n },\n onSelectionUpdate: (props) => {\n editorOptions.onSelectionUpdate?.(props);\n this.handleSelectionUpdate();\n },\n });\n\n if (plainTextMode) {\n this.enforcePlainTextClipboard();\n }\n\n this.baselineContent = this.getCurrentContentString();\n }\n\n private enforcePlainTextClipboard() {\n this.editor.setOptions({\n editorProps: {\n ...this.editor.options.editorProps,\n clipboardTextParser: (\n text: string,\n context: any,\n _plain: boolean,\n view?: any,\n ) => {\n const schema =\n context?.doc?.type?.schema ||\n context?.schema ||\n view?.state?.schema ||\n this.editor.schema;\n\n if (!schema) return Slice.empty;\n\n return plainTextToSlice(text, schema);\n },\n },\n });\n }\n\n private handleUpdate() {\n if (this.plainTextMode || this.onPlainTextChange || this.onTokensChange) {\n const text = this.getPlainText();\n this.onPlainTextChange?.(text);\n\n if (this.onTokensChange) {\n const tokens = tokenizePrompt(text);\n this.onTokensChange(tokens);\n }\n }\n\n if (this.markdownMode || this.onMarkdownChange) {\n const markdown = this.getMarkdown();\n this.onMarkdownChange?.(markdown);\n }\n }\n\n private handleSelectionUpdate() {\n if (this.onSelectionChange) {\n const { from, to } = this.editor.state.selection;\n this.onSelectionChange({ from, to });\n }\n }\n\n public getPlainText(): string {\n return getEditorText(this.editor);\n }\n\n public setPlainText(text: string, emitUpdate = true) {\n const html = plainTextToTipTapHtml(text);\n this.editor.commands.setContent(html, emitUpdate);\n }\n\n public getMarkdown(): string {\n return getEditorMarkdown(this.editor);\n }\n\n public setMarkdown(markdown: string, emitUpdate = true) {\n if (this.editor.storage?.markdown?.parser) {\n this.editor.commands.setContent(markdown, emitUpdate);\n } else {\n const html = markdownToTipTapHtml(markdown);\n this.editor.commands.setContent(html, emitUpdate);\n }\n }\n\n /**\n * Replaces `from`..`to` with literal text: HTML in `text` is not parsed, and\n * newlines split paragraphs.\n */\n private insertPlainText(from: number, to: number, text: string) {\n const { state, view } = this.editor;\n const tr = text.includes(\"\\n\") || text.includes(\"\\r\")\n ? state.tr.replace(from, to, plainTextToSlice(text, state.schema))\n : text\n ? state.tr.insertText(text, from, to)\n : state.tr.delete(from, to);\n view.dispatch(tr.scrollIntoView());\n }\n\n /** Inserts text literally at the selection; HTML in `text` is not parsed. */\n public insertText(text: string) {\n const { from, to } = this.editor.state.selection;\n this.insertPlainText(from, to, text);\n }\n\n /** Inserts text literally at `pos`; HTML in `text` is not parsed. */\n public insertTextAt(pos: number, text: string) {\n this.insertPlainText(pos, pos, text);\n this.editor.commands.focus();\n }\n\n /** Replaces a range with literal text; HTML in `text` is not parsed. */\n public replaceRange(from: number, to: number, text: string) {\n this.insertPlainText(from, to, text);\n this.editor.commands.focus();\n }\n\n public getCurrentContentString(): string {\n if (this.plainTextMode) return this.getPlainText();\n if (this.markdownMode) return this.getMarkdown();\n return this.editor.getHTML();\n }\n\n public isDirty(): boolean {\n return this.getCurrentContentString() !== this.baselineContent;\n }\n\n public setCheckpoint(content?: string): void {\n this.baselineContent =\n content !== undefined ? content : this.getCurrentContentString();\n }\n\n public resetDirty(): void {\n this.setCheckpoint();\n }\n\n public getBaselineContent(): string {\n return this.baselineContent;\n }\n\n public destroy() {\n this.editor.destroy();\n }\n}\n\n/**\n * Creates and initializes an EditorController instance.\n */\nexport function createEditor(\n options: EditorControllerOptions = {},\n): EditorController {\n return new EditorController(options);\n}\n","/**\n * Compares two values for structural equality.\n * Handles primitives, objects, arrays, and null/undefined.\n */\nexport function defaultIsEqual<T>(a: T, b: T): boolean {\n if (Object.is(a, b)) return true;\n if (\n typeof a !== \"object\" ||\n a === null ||\n typeof b !== \"object\" ||\n b === null\n ) {\n return false;\n }\n\n // Fast path for arrays\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!defaultIsEqual(a[i], b[i])) return false;\n }\n return true;\n }\n if (Array.isArray(a) !== Array.isArray(b)) {\n return false;\n }\n\n const keysA = Object.keys(a) as (keyof T)[];\n const keysB = Object.keys(b) as (keyof T)[];\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (!defaultIsEqual(a[key], b[key])) return false;\n }\n\n return true;\n}\n\nexport interface DirtyTrackerOptions<T> {\n isEqual?: (a: T, b: T) => boolean;\n}\n\n/**\n * Tracks a baseline value and determines if the current state is dirty (modified).\n */\nexport class DirtyTracker<T = unknown> {\n private baseline: T;\n private readonly isEqual: (a: T, b: T) => boolean;\n\n constructor(\n initialBaseline: T,\n options?: DirtyTrackerOptions<T> | ((a: T, b: T) => boolean),\n ) {\n this.baseline = initialBaseline;\n if (typeof options === \"function\") {\n this.isEqual = options;\n } else {\n this.isEqual = options?.isEqual ?? defaultIsEqual;\n }\n }\n\n /**\n * Returns current baseline value.\n */\n public getBaseline(): T {\n return this.baseline;\n }\n\n /**\n * Sets a new baseline value without triggering any dirty state.\n */\n public setBaseline(value: T): void {\n this.baseline = value;\n }\n\n /**\n * Checks whether the given value differs from the baseline.\n */\n public isDirty(current: T): boolean {\n return !this.isEqual(this.baseline, current);\n }\n\n /**\n * Resets the baseline to the provided current value (or clears dirty status).\n */\n public reset(current: T): void {\n this.baseline = current;\n }\n}\n\n/**\n * Creates a DirtyTracker instance.\n */\nexport function createDirtyTracker<T>(\n initialBaseline: T,\n options?: DirtyTrackerOptions<T> | ((a: T, b: T) => boolean),\n): DirtyTracker<T> {\n return new DirtyTracker(initialBaseline, options);\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/index.cjs","../src/controller.ts","../src/dirty.ts","../src/import/controller.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACnQA,oCAA2D;AAC3D,yCAAsB;AA4Bf,IAAM,iBAAA,EAAN,MAAuB;AAAA,EACZ;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGT;AAAA,EAER,WAAA,CAAY,QAAA,EAAmC,CAAC,CAAA,EAAG;AACjD,IAAA,MAAM;AAAA,MACJ,OAAA;AAAA,MACA,OAAA;AAAA,MACA,cAAA,EAAgB,KAAA;AAAA,MAChB,aAAA,EAAe,KAAA;AAAA,MACf,WAAA,EAAa,CAAC,CAAA;AAAA,MACd,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,iBAAA;AAAA,MACA,GAAG;AAAA,IACL,EAAA,EAAI,OAAA;AAEJ,IAAA,IAAA,CAAK,cAAA,EAAgB,aAAA;AACrB,IAAA,IAAA,CAAK,aAAA,EAAe,YAAA;AACpB,IAAA,IAAA,CAAK,kBAAA,EAAoB,iBAAA;AACzB,IAAA,IAAA,CAAK,iBAAA,EAAmB,gBAAA;AACxB,IAAA,IAAA,CAAK,eAAA,EAAiB,cAAA;AACtB,IAAA,IAAA,CAAK,kBAAA,EAAoB,iBAAA;AAEzB,IAAA,MAAM,eAAA,EACJ,cAAA,GAAiB,OAAO,QAAA,IAAY,SAAA,EAChC,qDAAA,OAA6B,EAAA,EAC7B,aAAA,GAAgB,OAAO,QAAA,IAAY,SAAA,EACjC,oDAAA,OAA4B,EAAA,EAC5B,OAAA;AAER,IAAA,IAAA,CAAK,OAAA,EAAS,IAAI,iBAAA,CAAO;AAAA,MACvB,OAAA,EAAS,QAAA,GAAW,KAAA,CAAA;AAAA,MACpB,OAAA,EAAS,cAAA;AAAA,MACT,UAAA;AAAA,MACA,GAAG,aAAA;AAAA,MACH,QAAA,EAAU,CAAC,KAAA,EAAA,GAAU;AACnB,wBAAA,aAAA,mBAAc,QAAA,0BAAA,CAAW,KAAK,GAAA;AAC9B,QAAA,IAAA,CAAK,YAAA,CAAa,CAAA;AAAA,MACpB,CAAA;AAAA,MACA,iBAAA,EAAmB,CAAC,KAAA,EAAA,GAAU;AAC5B,wBAAA,aAAA,qBAAc,iBAAA,0BAAA,CAAoB,KAAK,GAAA;AACvC,QAAA,IAAA,CAAK,qBAAA,CAAsB,CAAA;AAAA,MAC7B;AAAA,IACF,CAAC,CAAA;AAED,IAAA,GAAA,CAAI,aAAA,EAAe;AACjB,MAAA,IAAA,CAAK,yBAAA,CAA0B,CAAA;AAAA,IACjC;AAEA,IAAA,IAAA,CAAK,gBAAA,EAAkB,IAAA,CAAK,uBAAA,CAAwB,CAAA;AAAA,EACtD;AAAA,EAEQ,yBAAA,CAAA,EAA4B;AAElC,IAAA,MAAM,cAAA,kBAAgB,IAAA,qBAAK,MAAA,qBAAO,OAAA,6BAAS,eAAA;AAC3C,IAAA,GAAA,CAAI,aAAA,EAAe,aAAA,CAAc,cAAA,EAAgB,IAAA;AACjD,IAAA,MAAM,WAAA,kBAAa,IAAA,qBAAK,MAAA,qBAAO,gBAAA,+BAAkB,UAAA,uBAAW,IAAA;AAAA,MAC1D,CAAC,GAAA,EAAA,GAAQ,GAAA,CAAI,KAAA,IAAS;AAAA,IACxB,GAAA;AACA,IAAA,GAAA,CAAI,UAAA,EAAY,UAAA,CAAW,OAAA,CAAQ,YAAA,EAAc,IAAA;AAEjD,IAAA,IAAA,CAAK,MAAA,CAAO,UAAA,CAAW;AAAA,MACrB,WAAA,EAAa;AAAA,QACX,GAAG,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,WAAA;AAAA,QACvB,mBAAA,EAAqB,CACnB,IAAA,EACA,OAAA,EACA,MAAA,EACA,IAAA,EAAA,GACG;AACH,UAAA,MAAM,OAAA,kBACJ,OAAA,+BAAS,GAAA,+BAAK,IAAA,+BAAM,SAAA,mBACpB,OAAA,+BAAS,SAAA,mBACT,IAAA,+BAAM,KAAA,+BAAO,SAAA,GACb,IAAA,CAAK,MAAA,CAAO,MAAA;AAEd,UAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,OAAO,YAAA,CAAM,KAAA;AAE1B,UAAA,OAAO,gDAAA,IAAiB,EAAM,MAAM,CAAA;AAAA,QACtC;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAAA,EAEQ,YAAA,CAAA,EAAe;AACrB,IAAA,GAAA,CAAI,IAAA,CAAK,cAAA,GAAiB,IAAA,CAAK,kBAAA,GAAqB,IAAA,CAAK,cAAA,EAAgB;AACvE,MAAA,MAAM,KAAA,EAAO,IAAA,CAAK,YAAA,CAAa,CAAA;AAC/B,sBAAA,IAAA,uBAAK,iBAAA,4BAAA,CAAoB,IAAI,GAAA;AAE7B,MAAA,GAAA,CAAI,IAAA,CAAK,cAAA,EAAgB;AACvB,QAAA,MAAM,OAAA,EAAS,8CAAA,IAAmB,CAAA;AAClC,QAAA,IAAA,CAAK,cAAA,CAAe,MAAM,CAAA;AAAA,MAC5B;AAAA,IACF;AAEA,IAAA,GAAA,CAAI,IAAA,CAAK,aAAA,GAAgB,IAAA,CAAK,gBAAA,EAAkB;AAC9C,MAAA,MAAM,SAAA,EAAW,IAAA,CAAK,WAAA,CAAY,CAAA;AAClC,sBAAA,IAAA,uBAAK,gBAAA,4BAAA,CAAmB,QAAQ,GAAA;AAAA,IAClC;AAAA,EACF;AAAA,EAEQ,qBAAA,CAAA,EAAwB;AAC9B,IAAA,GAAA,CAAI,IAAA,CAAK,iBAAA,EAAmB;AAC1B,MAAA,MAAM,EAAE,IAAA,EAAM,GAAG,EAAA,EAAI,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,SAAA;AACvC,MAAA,IAAA,CAAK,iBAAA,CAAkB,EAAE,IAAA,EAAM,GAAG,CAAC,CAAA;AAAA,IACrC;AAAA,EACF;AAAA,EAEO,YAAA,CAAA,EAAuB;AAC5B,IAAA,OAAO,6CAAA,IAAc,CAAK,MAAM,CAAA;AAAA,EAClC;AAAA,EAEO,YAAA,CAAa,IAAA,EAAc,WAAA,EAAa,IAAA,EAAM;AACnD,IAAA,MAAM,KAAA,EAAO,qDAAA,IAA0B,CAAA;AACvC,IAAA,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,UAAA,CAAW,IAAA,EAAM,UAAU,CAAA;AAAA,EAClD;AAAA,EAEO,WAAA,CAAA,EAAsB;AAC3B,IAAA,OAAO,iDAAA,IAAkB,CAAK,MAAM,CAAA;AAAA,EACtC;AAAA,EAEO,WAAA,CAAY,QAAA,EAAkB,WAAA,EAAa,IAAA,EAAM;AACtD,IAAA,GAAA,iBAAI,IAAA,uBAAK,MAAA,uBAAO,OAAA,+BAAS,QAAA,+BAAU,QAAA,EAAQ;AACzC,MAAA,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,UAAA,CAAW,QAAA,EAAU,UAAU,CAAA;AAAA,IACtD,EAAA,KAAO;AACL,MAAA,MAAM,KAAA,EAAO,oDAAA,QAA6B,CAAA;AAC1C,MAAA,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,UAAA,CAAW,IAAA,EAAM,UAAU,CAAA;AAAA,IAClD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,eAAA,CAAgB,IAAA,EAAc,EAAA,EAAY,IAAA,EAAc;AAC9D,IAAA,MAAM,EAAE,KAAA,EAAO,KAAK,EAAA,EAAI,IAAA,CAAK,MAAA;AAC7B,IAAA,MAAM,GAAA,EAAK,IAAA,CAAK,QAAA,CAAS,IAAI,EAAA,GAAK,IAAA,CAAK,QAAA,CAAS,IAAI,EAAA,EAChD,KAAA,CAAM,EAAA,CAAG,OAAA,CAAQ,IAAA,EAAM,EAAA,EAAI,gDAAA,IAAiB,EAAM,KAAA,CAAM,MAAM,CAAC,EAAA,EAC/D,KAAA,EACE,KAAA,CAAM,EAAA,CAAG,UAAA,CAAW,IAAA,EAAM,IAAA,EAAM,EAAE,EAAA,EAClC,KAAA,CAAM,EAAA,CAAG,MAAA,CAAO,IAAA,EAAM,EAAE,CAAA;AAC9B,IAAA,IAAA,CAAK,QAAA,CAAS,EAAA,CAAG,cAAA,CAAe,CAAC,CAAA;AAAA,EACnC;AAAA;AAAA,EAGO,UAAA,CAAW,IAAA,EAAc;AAC9B,IAAA,MAAM,EAAE,IAAA,EAAM,GAAG,EAAA,EAAI,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,SAAA;AACvC,IAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,EAAM,EAAA,EAAI,IAAI,CAAA;AAAA,EACrC;AAAA;AAAA,EAGO,YAAA,CAAa,GAAA,EAAa,IAAA,EAAc;AAC7C,IAAA,IAAA,CAAK,eAAA,CAAgB,GAAA,EAAK,GAAA,EAAK,IAAI,CAAA;AACnC,IAAA,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,CAAA;AAAA,EAC7B;AAAA;AAAA,EAGO,YAAA,CAAa,IAAA,EAAc,EAAA,EAAY,IAAA,EAAc;AAC1D,IAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,EAAM,EAAA,EAAI,IAAI,CAAA;AACnC,IAAA,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,CAAA;AAAA,EAC7B;AAAA,EAEO,uBAAA,CAAA,EAAkC;AACvC,IAAA,GAAA,CAAI,IAAA,CAAK,aAAA,EAAe,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA;AACjD,IAAA,GAAA,CAAI,IAAA,CAAK,YAAA,EAAc,OAAO,IAAA,CAAK,WAAA,CAAY,CAAA;AAC/C,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,CAAA;AAAA,EAC7B;AAAA,EAEO,OAAA,CAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,uBAAA,CAAwB,EAAA,IAAM,IAAA,CAAK,eAAA;AAAA,EACjD;AAAA,EAEO,aAAA,CAAc,OAAA,EAAwB;AAC3C,IAAA,IAAA,CAAK,gBAAA,EACH,QAAA,IAAY,KAAA,EAAA,EAAY,QAAA,EAAU,IAAA,CAAK,uBAAA,CAAwB,CAAA;AAAA,EACnE;AAAA,EAEO,UAAA,CAAA,EAAmB;AACxB,IAAA,IAAA,CAAK,aAAA,CAAc,CAAA;AAAA,EACrB;AAAA,EAEO,kBAAA,CAAA,EAA6B;AAClC,IAAA,OAAO,IAAA,CAAK,eAAA;AAAA,EACd;AAAA,EAEO,OAAA,CAAA,EAAU;AACf,IAAA,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,CAAA;AAAA,EACtB;AACF,CAAA;AAKO,SAAS,YAAA,CACd,QAAA,EAAmC,CAAC,CAAA,EAClB;AAClB,EAAA,OAAO,IAAI,gBAAA,CAAiB,OAAO,CAAA;AACrC;ADkLA;AACA;AE3ZO,SAAS,cAAA,CAAkB,CAAA,EAAM,CAAA,EAAe;AACrD,EAAA,GAAA,CAAI,MAAA,CAAO,EAAA,CAAG,CAAA,EAAG,CAAC,CAAA,EAAG,OAAO,IAAA;AAC5B,EAAA,GAAA,CACE,OAAO,EAAA,IAAM,SAAA,GACb,EAAA,IAAM,KAAA,GACN,OAAO,EAAA,IAAM,SAAA,GACb,EAAA,IAAM,IAAA,EACN;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,GAAA,CAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,EAAA,GAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AACxC,IAAA,GAAA,CAAI,CAAA,CAAE,OAAA,IAAW,CAAA,CAAE,MAAA,EAAQ,OAAO,KAAA;AAClC,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,CAAE,MAAA,EAAQ,CAAA,EAAA,EAAK;AACjC,MAAA,GAAA,CAAI,CAAC,cAAA,CAAe,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAG,OAAO,KAAA;AAAA,IAC1C;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,GAAA,CAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,EAAA,IAAM,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AACzC,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA;AAC3B,EAAA,MAAM,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA;AAE3B,EAAA,GAAA,CAAI,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,MAAA,EAAQ,OAAO,KAAA;AAE1C,EAAA,IAAA,CAAA,MAAW,IAAA,GAAO,KAAA,EAAO;AACvB,IAAA,GAAA,CAAI,CAAC,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,GAAG,CAAA,EAAG,OAAO,KAAA;AAC1D,IAAA,GAAA,CAAI,CAAC,cAAA,CAAe,CAAA,CAAE,GAAG,CAAA,EAAG,CAAA,CAAE,GAAG,CAAC,CAAA,EAAG,OAAO,KAAA;AAAA,EAC9C;AAEA,EAAA,OAAO,IAAA;AACT;AASO,IAAM,aAAA,EAAN,MAAgC;AAAA,EAC7B;AAAA,EACS;AAAA,EAEjB,WAAA,CACE,eAAA,EACA,OAAA,EACA;AACA,IAAA,IAAA,CAAK,SAAA,EAAW,eAAA;AAChB,IAAA,GAAA,CAAI,OAAO,QAAA,IAAY,UAAA,EAAY;AACjC,MAAA,IAAA,CAAK,QAAA,EAAU,OAAA;AAAA,IACjB,EAAA,KAAO;AACL,MAAA,IAAA,CAAK,QAAA,mCAAU,OAAA,+BAAS,SAAA,UAAW,gBAAA;AAAA,IACrC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKO,WAAA,CAAA,EAAiB;AACtB,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKO,WAAA,CAAY,KAAA,EAAgB;AACjC,IAAA,IAAA,CAAK,SAAA,EAAW,KAAA;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKO,OAAA,CAAQ,OAAA,EAAqB;AAClC,IAAA,OAAO,CAAC,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,QAAA,EAAU,OAAO,CAAA;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKO,KAAA,CAAM,OAAA,EAAkB;AAC7B,IAAA,IAAA,CAAK,SAAA,EAAW,OAAA;AAAA,EAClB;AACF,CAAA;AAKO,SAAS,kBAAA,CACd,eAAA,EACA,OAAA,EACiB;AACjB,EAAA,OAAO,IAAI,YAAA,CAAa,eAAA,EAAiB,OAAO,CAAA;AAClD;AF2XA;AACA;AGndO,SAAS,eAAA,CAAgB,QAAA,EAAmD,CAAC,CAAA,EAAoB;AACtG,EAAA,GAAA,CAAI,OAAO,SAAA,IAAa,WAAA,EAAa,OAAO,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAC,CAAA;AAC9D,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAA,GAAY;AAC9B,IAAA,MAAM,MAAA,EAAQ,QAAA,CAAS,aAAA,CAAc,OAAO,CAAA;AAC5C,IAAA,KAAA,CAAM,KAAA,EAAO,MAAA;AACb,IAAA,KAAA,CAAM,OAAA,mBAAS,OAAA,CAAQ,MAAA,UAAU,uCAAA,CAAsB,MAAA,CAAO,UAAU,GAAA;AACxE,IAAA,KAAA,CAAM,SAAA,mBAAW,OAAA,CAAQ,QAAA,UAAY,MAAA;AACrC,IAAA,KAAA,CAAM,KAAA,CAAM,QAAA,EAAU,MAAA;AACtB,IAAA,MAAM,OAAA,EAAS,CAAC,KAAA,EAAA,GAAkB;AAChC,MAAA,KAAA,CAAM,MAAA,CAAO,CAAA;AACb,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,CAAA;AACA,IAAA,KAAA,CAAM,gBAAA,CAAiB,QAAA,EAAU,CAAA,EAAA,GAAM,MAAA,CAAO,KAAA,CAAM,IAAA,kBAAK,KAAA,CAAM,KAAA,UAAS,CAAC,GAAC,CAAC,CAAA,EAAG,EAAE,IAAA,EAAM,KAAK,CAAC,CAAA;AAC5F,IAAA,KAAA,CAAM,gBAAA,CAAiB,QAAA,EAAU,CAAA,EAAA,GAAM,MAAA,CAAO,CAAC,CAAC,CAAA,EAAG,EAAE,IAAA,EAAM,KAAK,CAAC,CAAA;AACjE,IAAA,QAAA,CAAS,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAC/B,IAAA,KAAA,CAAM,KAAA,CAAM,CAAA;AAAA,EACd,CAAC,CAAA;AACH;AAqBO,IAAM,qBAAA,YAAN,MAA2B;AAAA,EAKhC,WAAA,CACmB,SAAA,EACT,QAAA,EAAuC,CAAC,CAAA,EAChD;AAFiB,IAAA,IAAA,CAAA,UAAA,EAAA,SAAA;AACT,IAAA,IAAA,CAAA,QAAA,EAAA,OAAA;AAAA,EACP;AAAA,EAFgB;AAAA,EACT;AAAA,iBANF,MAAA,EAAyB,EAAE,WAAA,EAAa,KAAA,EAAO,KAAA,EAAO,IAAA,EAAM,YAAA,EAAc,CAAC,EAAE,EAAA;AAAA,kBACpE,UAAA,kBAAY,IAAI,GAAA,CAAsC,EAAA;AAAA,kBAC/D,QAAA,EAAU,EAAA;AAAA,EAOlB,UAAA,CAAW,OAAA,EAA4C;AACrD,IAAA,IAAA,CAAK,QAAA,EAAU,OAAA;AAAA,EACjB;AAAA;AAAA,EAGA,IAAI,MAAA,CAAA,EAAiB;AACnB,IAAA,OAAA,kBAAQ,IAAA,CAAK,OAAA,CAAQ,QAAA,UAAY,yCAAA,CAAA,CAAuB,MAAA,CAAO,UAAU,CAAA;AAAA,EAC3E;AAAA,kBAEA,SAAA,EAAW,CAAA,EAAA,GAAuB,IAAA,CAAK,MAAA;AAAA,kBAEvC,UAAA,EAAY,CAAC,QAAA,EAAA,GAA6D;AACxE,IAAA,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,QAAQ,CAAA;AAC3B,IAAA,OAAO,CAAA,EAAA,GAAM;AACX,MAAA,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAA;AAAA,IAChC,CAAA;AAAA,EACF,EAAA;AAAA,EAEQ,QAAA,CAAS,KAAA,EAAiC;AAChD,IAAA,IAAA,CAAK,MAAA,EAAQ,EAAE,GAAG,IAAA,CAAK,KAAA,EAAO,GAAG,MAAM,CAAA;AACvC,IAAA,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,CAAC,QAAA,EAAA,GAAa,QAAA,CAAS,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,EAC3D;AAAA;AAAA,kBAGA,YAAA,EAAc,MAAA,CACZ,KAAA,EACA,EAAA,EAAA,GAC6C;AAC7C,IAAA,MAAM,OAAA,EAAS,IAAA,CAAK,SAAA,CAAU,CAAA;AAC9B,IAAA,MAAM,KAAA,EAAO,KAAA,CAAM,IAAA,CAAK,KAA4B,CAAA;AACpD,IAAA,GAAA,CAAI,CAAC,OAAA,GAAU,IAAA,CAAK,OAAA,IAAW,CAAA,EAAG,OAAO,CAAC,CAAA;AAC1C,IAAA,IAAA,CAAK,OAAA,EAAA;AACL,IAAA,IAAA,CAAK,QAAA,CAAS,EAAE,WAAA,EAAa,IAAA,EAAM,KAAA,EAAO,KAAK,CAAC,CAAA;AAChD,IAAA,IAAI,MAAA,EAAsB,IAAA;AAC1B,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,EAAW,MAAM,qDAAA,MAAsB,EAAQ,IAAA,EAAM;AAAA,QACzD,GAAG,IAAA,CAAK,OAAA;AAAA,QACR,EAAA;AAAA,QACA,OAAA,EAAS,CAAC,GAAA,EAAK,IAAA,EAAA,GAAS;AACtB,UAAA,MAAA,EAAQ,GAAA;AACR,0BAAA,IAAA,uBAAK,OAAA,uBAAQ,OAAA,4BAAA,CAAU,GAAA,EAAK,IAAI,GAAA;AAAA,QAClC;AAAA,MACF,CAAC,CAAA;AACD,MAAA,IAAA,CAAK,OAAA,EAAA;AACL,MAAA,IAAA,CAAK,QAAA,CAAS,EAAE,WAAA,EAAa,IAAA,CAAK,QAAA,EAAU,CAAA,EAAG,KAAA,EAAO,YAAA,EAAc,SAAS,CAAC,CAAA;AAC9E,MAAA,OAAO,QAAA;AAAA,IACT,EAAA,MAAA,CAAS,GAAA,EAAK;AACZ,MAAA,IAAA,CAAK,OAAA,EAAA;AACL,MAAA,IAAA,CAAK,QAAA,CAAS,EAAE,WAAA,EAAa,IAAA,CAAK,QAAA,EAAU,CAAA,EAAG,KAAA,EAAO,IAAA,WAAe,MAAA,EAAQ,IAAA,EAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,EAAE,CAAC,CAAA;AAC3G,MAAA,OAAO,CAAC,CAAA;AAAA,IACV;AAAA,EACF,EAAA;AAAA;AAAA,kBAGA,eAAA,EAAiB,MAAA,CAAA,EAAA,GAAsD;AACrE,IAAA,MAAM,MAAA,EAAQ,MAAM,eAAA,CAAgB,EAAE,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAQ,QAAA,EAAU,IAAA,CAAK,OAAA,CAAQ,SAAS,CAAC,CAAA;AAC5F,IAAA,OAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,EAC/B,EAAA;AACF,UAAA;AAEO,SAAS,0BAAA,CACd,SAAA,EACA,OAAA,EACsB;AACtB,EAAA,OAAO,IAAI,oBAAA,CAAqB,SAAA,EAAW,OAAO,CAAA;AACpD;AHobA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,o+fAAC","file":"/home/runner/work/editor/editor/packages/core/dist/index.cjs","sourcesContent":[null,"import { Editor, EditorOptions, Content, Extensions } from \"@tiptap/core\";\nimport { Slice } from \"@tiptap/pm/model\";\nimport { Token, tokenizePrompt } from \"./grammar\";\nimport {\n plainTextToTipTapHtml,\n plainTextToSlice,\n getEditorText,\n markdownToTipTapHtml,\n getEditorMarkdown,\n} from \"./serializers\";\n\nexport interface EditorControllerOptions extends Partial<\n Omit<EditorOptions, \"element\" | \"content\">\n> {\n element?: Element | HTMLElement | null;\n content?: string | Content;\n plainTextMode?: boolean;\n markdownMode?: boolean;\n extensions?: Extensions;\n onPlainTextChange?: (text: string) => void;\n onMarkdownChange?: (markdown: string) => void;\n onTokensChange?: (tokens: Token[]) => void;\n onSelectionChange?: (range: { from: number; to: number } | null) => void;\n}\n\n/**\n * UI-agnostic controller managing the lifecycle, commands, and plain-text/token\n * synchronization of a rich text or prompt editor.\n */\nexport class EditorController {\n public readonly editor: Editor;\n private readonly plainTextMode: boolean;\n private readonly markdownMode: boolean;\n private readonly onPlainTextChange?: (text: string) => void;\n private readonly onMarkdownChange?: (markdown: string) => void;\n private readonly onTokensChange?: (tokens: Token[]) => void;\n private readonly onSelectionChange?: (\n range: { from: number; to: number } | null,\n ) => void;\n private baselineContent: string;\n\n constructor(options: EditorControllerOptions = {}) {\n const {\n element,\n content,\n plainTextMode = false,\n markdownMode = false,\n extensions = [],\n onPlainTextChange,\n onMarkdownChange,\n onTokensChange,\n onSelectionChange,\n ...editorOptions\n } = options;\n\n this.plainTextMode = plainTextMode;\n this.markdownMode = markdownMode;\n this.onPlainTextChange = onPlainTextChange;\n this.onMarkdownChange = onMarkdownChange;\n this.onTokensChange = onTokensChange;\n this.onSelectionChange = onSelectionChange;\n\n const initialContent =\n plainTextMode && typeof content === \"string\"\n ? plainTextToTipTapHtml(content)\n : markdownMode && typeof content === \"string\"\n ? markdownToTipTapHtml(content)\n : content;\n\n this.editor = new Editor({\n element: element || undefined,\n content: initialContent,\n extensions,\n ...editorOptions,\n onUpdate: (props) => {\n editorOptions.onUpdate?.(props);\n this.handleUpdate();\n },\n onSelectionUpdate: (props) => {\n editorOptions.onSelectionUpdate?.(props);\n this.handleSelectionUpdate();\n },\n });\n\n if (plainTextMode) {\n this.enforcePlainTextClipboard();\n }\n\n this.baselineContent = this.getCurrentContentString();\n }\n\n private enforcePlainTextClipboard() {\n // Opt-in rich clipboard / file import must not bypass the plain-text invariant.\n const richClipboard = this.editor.storage?.richClipboard;\n if (richClipboard) richClipboard.plainTextMode = true;\n const fileImport = this.editor.extensionManager?.extensions.find(\n (ext) => ext.name === \"fileImport\",\n );\n if (fileImport) fileImport.options.asPlainText = true;\n\n this.editor.setOptions({\n editorProps: {\n ...this.editor.options.editorProps,\n clipboardTextParser: (\n text: string,\n context: any,\n _plain: boolean,\n view?: any,\n ) => {\n const schema =\n context?.doc?.type?.schema ||\n context?.schema ||\n view?.state?.schema ||\n this.editor.schema;\n\n if (!schema) return Slice.empty;\n\n return plainTextToSlice(text, schema);\n },\n },\n });\n }\n\n private handleUpdate() {\n if (this.plainTextMode || this.onPlainTextChange || this.onTokensChange) {\n const text = this.getPlainText();\n this.onPlainTextChange?.(text);\n\n if (this.onTokensChange) {\n const tokens = tokenizePrompt(text);\n this.onTokensChange(tokens);\n }\n }\n\n if (this.markdownMode || this.onMarkdownChange) {\n const markdown = this.getMarkdown();\n this.onMarkdownChange?.(markdown);\n }\n }\n\n private handleSelectionUpdate() {\n if (this.onSelectionChange) {\n const { from, to } = this.editor.state.selection;\n this.onSelectionChange({ from, to });\n }\n }\n\n public getPlainText(): string {\n return getEditorText(this.editor);\n }\n\n public setPlainText(text: string, emitUpdate = true) {\n const html = plainTextToTipTapHtml(text);\n this.editor.commands.setContent(html, emitUpdate);\n }\n\n public getMarkdown(): string {\n return getEditorMarkdown(this.editor);\n }\n\n public setMarkdown(markdown: string, emitUpdate = true) {\n if (this.editor.storage?.markdown?.parser) {\n this.editor.commands.setContent(markdown, emitUpdate);\n } else {\n const html = markdownToTipTapHtml(markdown);\n this.editor.commands.setContent(html, emitUpdate);\n }\n }\n\n /**\n * Replaces `from`..`to` with literal text: HTML in `text` is not parsed, and\n * newlines split paragraphs.\n */\n private insertPlainText(from: number, to: number, text: string) {\n const { state, view } = this.editor;\n const tr = text.includes(\"\\n\") || text.includes(\"\\r\")\n ? state.tr.replace(from, to, plainTextToSlice(text, state.schema))\n : text\n ? state.tr.insertText(text, from, to)\n : state.tr.delete(from, to);\n view.dispatch(tr.scrollIntoView());\n }\n\n /** Inserts text literally at the selection; HTML in `text` is not parsed. */\n public insertText(text: string) {\n const { from, to } = this.editor.state.selection;\n this.insertPlainText(from, to, text);\n }\n\n /** Inserts text literally at `pos`; HTML in `text` is not parsed. */\n public insertTextAt(pos: number, text: string) {\n this.insertPlainText(pos, pos, text);\n this.editor.commands.focus();\n }\n\n /** Replaces a range with literal text; HTML in `text` is not parsed. */\n public replaceRange(from: number, to: number, text: string) {\n this.insertPlainText(from, to, text);\n this.editor.commands.focus();\n }\n\n public getCurrentContentString(): string {\n if (this.plainTextMode) return this.getPlainText();\n if (this.markdownMode) return this.getMarkdown();\n return this.editor.getHTML();\n }\n\n public isDirty(): boolean {\n return this.getCurrentContentString() !== this.baselineContent;\n }\n\n public setCheckpoint(content?: string): void {\n this.baselineContent =\n content !== undefined ? content : this.getCurrentContentString();\n }\n\n public resetDirty(): void {\n this.setCheckpoint();\n }\n\n public getBaselineContent(): string {\n return this.baselineContent;\n }\n\n public destroy() {\n this.editor.destroy();\n }\n}\n\n/**\n * Creates and initializes an EditorController instance.\n */\nexport function createEditor(\n options: EditorControllerOptions = {},\n): EditorController {\n return new EditorController(options);\n}\n","/**\n * Compares two values for structural equality.\n * Handles primitives, objects, arrays, and null/undefined.\n */\nexport function defaultIsEqual<T>(a: T, b: T): boolean {\n if (Object.is(a, b)) return true;\n if (\n typeof a !== \"object\" ||\n a === null ||\n typeof b !== \"object\" ||\n b === null\n ) {\n return false;\n }\n\n // Fast path for arrays\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!defaultIsEqual(a[i], b[i])) return false;\n }\n return true;\n }\n if (Array.isArray(a) !== Array.isArray(b)) {\n return false;\n }\n\n const keysA = Object.keys(a) as (keyof T)[];\n const keysB = Object.keys(b) as (keyof T)[];\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (!defaultIsEqual(a[key], b[key])) return false;\n }\n\n return true;\n}\n\nexport interface DirtyTrackerOptions<T> {\n isEqual?: (a: T, b: T) => boolean;\n}\n\n/**\n * Tracks a baseline value and determines if the current state is dirty (modified).\n */\nexport class DirtyTracker<T = unknown> {\n private baseline: T;\n private readonly isEqual: (a: T, b: T) => boolean;\n\n constructor(\n initialBaseline: T,\n options?: DirtyTrackerOptions<T> | ((a: T, b: T) => boolean),\n ) {\n this.baseline = initialBaseline;\n if (typeof options === \"function\") {\n this.isEqual = options;\n } else {\n this.isEqual = options?.isEqual ?? defaultIsEqual;\n }\n }\n\n /**\n * Returns current baseline value.\n */\n public getBaseline(): T {\n return this.baseline;\n }\n\n /**\n * Sets a new baseline value without triggering any dirty state.\n */\n public setBaseline(value: T): void {\n this.baseline = value;\n }\n\n /**\n * Checks whether the given value differs from the baseline.\n */\n public isDirty(current: T): boolean {\n return !this.isEqual(this.baseline, current);\n }\n\n /**\n * Resets the baseline to the provided current value (or clears dirty status).\n */\n public reset(current: T): void {\n this.baseline = current;\n }\n}\n\n/**\n * Creates a DirtyTracker instance.\n */\nexport function createDirtyTracker<T>(\n initialBaseline: T,\n options?: DirtyTrackerOptions<T> | ((a: T, b: T) => boolean),\n): DirtyTracker<T> {\n return new DirtyTracker(initialBaseline, options);\n}\n","import { defaultImportRegistry, type DocumentImport } from \"./adapters\";\nimport {\n importFilesIntoEditor,\n type ImportEditorTarget,\n type ImportFilesIntoEditorOptions,\n} from \"./editor\";\nimport type { FileLike, ImportOutcome } from \"./registry\";\n\n/**\n * Opens the browser file picker and resolves with the chosen files (an empty\n * array when the dialog is cancelled). `accept` defaults to every extension\n * and MIME type the default registry can import as a document.\n */\nexport function pickImportFiles(options: { accept?: string; multiple?: boolean } = {}): Promise<File[]> {\n if (typeof document === \"undefined\") return Promise.resolve([]);\n return new Promise((resolve) => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = options.accept ?? defaultImportRegistry.accept(\"document\");\n input.multiple = options.multiple ?? true;\n input.style.display = \"none\";\n const finish = (files: File[]) => {\n input.remove();\n resolve(files);\n };\n input.addEventListener(\"change\", () => finish(Array.from(input.files ?? [])), { once: true });\n input.addEventListener(\"cancel\", () => finish([]), { once: true });\n document.body.appendChild(input);\n input.click();\n });\n}\n\nexport interface FileImportState {\n isImporting: boolean;\n /** Last import error (cleared when a new import starts). */\n error: Error | null;\n /** Outcomes of the most recent import. */\n lastOutcomes: ImportOutcome<DocumentImport>[];\n}\n\nexport interface FileImportControllerOptions extends Omit<ImportFilesIntoEditorOptions, \"at\"> {\n /** Allow choosing several files in the picker (default `true`). */\n multiple?: boolean;\n}\n\n/**\n * Framework-agnostic state for a file-import button: tracks `isImporting` /\n * `error`, opens the file picker and inserts the imported content into the\n * editor returned by `getTarget`. React's `useFileImport` and Svelte's\n * `createFileImport` wrap it.\n */\nexport class FileImportController {\n private state: FileImportState = { isImporting: false, error: null, lastOutcomes: [] };\n private readonly listeners = new Set<(state: FileImportState) => void>();\n private pending = 0;\n\n constructor(\n private readonly getTarget: () => ImportEditorTarget | null | undefined,\n private options: FileImportControllerOptions = {},\n ) {}\n\n setOptions(options: FileImportControllerOptions): void {\n this.options = options;\n }\n\n /** `accept` attribute value for document imports. */\n get accept(): string {\n return (this.options.registry ?? defaultImportRegistry).accept(\"document\");\n }\n\n getState = (): FileImportState => this.state;\n\n subscribe = (listener: (state: FileImportState) => void): (() => void) => {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n };\n\n private setState(patch: Partial<FileImportState>) {\n this.state = { ...this.state, ...patch };\n this.listeners.forEach((listener) => listener(this.state));\n }\n\n /** Imports files into the editor at `at` (default: the selection). */\n importFiles = async (\n files: Iterable<FileLike> | ArrayLike<FileLike>,\n at?: number,\n ): Promise<ImportOutcome<DocumentImport>[]> => {\n const target = this.getTarget();\n const list = Array.from(files as ArrayLike<FileLike>);\n if (!target || list.length === 0) return [];\n this.pending++;\n this.setState({ isImporting: true, error: null });\n let error: Error | null = null;\n try {\n const outcomes = await importFilesIntoEditor(target, list, {\n ...this.options,\n at,\n onError: (err, file) => {\n error = err;\n this.options.onError?.(err, file);\n },\n });\n this.pending--;\n this.setState({ isImporting: this.pending > 0, error, lastOutcomes: outcomes });\n return outcomes;\n } catch (err) {\n this.pending--;\n this.setState({ isImporting: this.pending > 0, error: err instanceof Error ? err : new Error(String(err)) });\n return [];\n }\n };\n\n /** Opens the file picker and imports the chosen files at the selection. */\n openFilePicker = async (): Promise<ImportOutcome<DocumentImport>[]> => {\n const files = await pickImportFiles({ accept: this.accept, multiple: this.options.multiple });\n return this.importFiles(files);\n };\n}\n\nexport function createFileImportController(\n getTarget: () => ImportEditorTarget | null | undefined,\n options?: FileImportControllerOptions,\n): FileImportController {\n return new FileImportController(getTarget, options);\n}\n"]}
package/dist/index.d.cts CHANGED
@@ -1,18 +1,23 @@
1
- import { T as Token } from './tokens-7kRTEtPb.cjs';
2
- export { C as ColorGradient, I as INSTRUCTION_REGEX, a as TEMPLATE_REGEX, b as Template, c as TemplateVersion, d as TokenType, V as VARIABLE_REGEX, i as instructionRegex, t as templateRegex, v as variableRegex } from './tokens-7kRTEtPb.cjs';
3
- export { ResolveTemplatesOptions, SourceMapSegment, TEMPLATE_DEPTH_ERROR, TEMPLATE_LOOP_ERROR, extractInstructionNames, extractTemplateNames, extractVariableNames, getLatestVersion, getTemplateBody, mapRawOffsetToResolved, mapResolvedOffsetToRaw, resolveTemplates, resolveTemplatesWithMapping, resolveVariables, tokenizePrompt } from './grammar/index.cjs';
4
- export { ColorHighlighter, FontSize, GradientText, GradientTextOptions, Image, ImageOptions, LoadingNode, Markdown, RichTextPresetOptions, SlashCommandMatchData, SlashCommands, SlashCommandsOptions, SmilieReplacer, TemplateSuggestions, TemplateSuggestionsOptions, createRichTextPreset, findHexColors, handleImageInsertion, imagePastePluginKey, insertImageNode, removeImageNode, updateImageSrc } from './extensions/index.cjs';
5
- export { M as Mention, a as MentionEntity, b as MentionOptions, c as createMentionExtension } from './mention-Dcevh3ff.cjs';
6
- export { ExtractedMention, MARKDOWN_MENTION_SPLIT_REGEX, MENTION_REGEX, MarkdownToHtmlOptions, MentionSegment, PreprocessMarkdownMentionsOptions, escapeHtml, extractMentions, extractMentionsFromDoc, getEditorMarkdown, getEditorText, htmlToPlainText, markdownToTipTapHtml, parseMentionSegments, plainTextToSlice, plainTextToTipTapHtml, preprocessMarkdownFileLinks, preprocessMarkdownMentions, stripMarkdownCode } from './serializers/index.cjs';
1
+ import { T as Token } from './tokens-CyLZmIei.cjs';
2
+ export { C as ColorGradient, a as ConditionalKind, I as INSTRUCTION_REGEX, P as PromptDiagnostic, b as PromptDiagnosticCode, c as PromptValue, d as PromptValues, e as TEMPLATE_REGEX, f as Template, g as TemplateVersion, h as TokenType, V as VARIABLE_REGEX, i as instructionRegex, t as templateRegex, v as variableRegex } from './tokens-CyLZmIei.cjs';
3
+ export { ConditionalTagLike, ConditionalTagMatch, EvaluatedToken, ExtractVariablesOptions, ParsedVariableBody, ResolvePromptOptions, ResolvePromptResult, ResolveTemplatesOptions, SourceMapSegment, TEMPLATE_DEPTH_ERROR, TEMPLATE_LOOP_ERROR, TokenizeResult, VariableDescriptor, VariableFormField, compactVariableValues, escapeVariableText, evaluateCondition, evaluatePromptTokens, extractInstructionNames, extractTemplateNames, extractVariableNames, extractVariables, getLatestVersion, getPromptDiagnostics, getSuppliedValue, getTemplateBody, getVariableFormFields, isPromptValueSet, mapRawOffsetToResolved, mapResolvedOffsetToRaw, matchConditionalTags, parseVariableBody, resolvePrompt, resolveTemplates, resolveTemplatesWithMapping, resolveVariables, tokenizePrompt, tokenizePromptWithDiagnostics, unescapeVariableText } from './grammar/index.cjs';
4
+ import { D as DocumentImport } from './index-k3mFbPx_.cjs';
5
+ export { A as AddCommentOptions, a as Autocorrect, b as AutocorrectContext, c as AutocorrectCorrection, d as AutocorrectOptions, e as AutocorrectRule, f as AutocorrectStorage, B as BUILT_IN_IMPORT_ADAPTERS, g as Bookmark, h as BookmarkInfo, i as BookmarkOptions, C as COMMENT_MARK_NAME, j as ColorHighlighter, k as CommentRange, l as Comments, m as CommentsOptions, n as CommentsStorage, o as CreateImportAdapterRegistryOptions, p as CrossReference, q as CrossReferenceOptions, r as CrossReferenceTarget, s as CrossReferenceTargetType, t as DEFAULT_AUTOCORRECT_EXCEPTIONS, u as DocumentImportAdapter, v as DocumentStructureCommandArgs, w as DocumentStructureCommandItem, F as FileImport, x as FileImportOptions, y as FocusHeadingOptions, z as FontSize, E as Footnote, G as FootnoteInfo, H as FootnoteReference, I as Footnotes, J as FootnotesOptions, K as GradientText, L as GradientTextOptions, M as Image, N as ImageOptions, O as InsertFootnoteOptions, P as InsertTableOfContentsOptions, Q as LoadingNode, R as Markdown, S as Outline, T as OutlineHeading, U as OutlineOptions, V as OutlineSnapshot, W as OutlineStorage, X as OutlineStore, Y as OutlineTreeItem, Z as RichClipboard, _ as RichClipboardOptions, $ as RichClipboardStorage, a0 as RichTextPresetOptions, a1 as SMILIE_REPLACEMENTS, a2 as SetBookmarkOptions, a3 as SlashCommandMatchData, a4 as SlashCommands, a5 as SlashCommandsOptions, a6 as SmilieReplacer, a7 as TableOfContents, a8 as TableOfContentsEntry, a9 as TableOfContentsOptions, aa as TemplateSuggestions, ab as TemplateSuggestionsOptions, ac as autocorrectPluginKey, ad as buildOutlineTree, ae as capitalizeSentenceRules, af as commentsPluginKey, ag as computeOutline, ah as createImportAdapterRegistry, ai as createOutlineStore, aj as createRichTextPreset, ak as crossReferencePluginKey, al as defaultAutocorrectRules, am as defaultImportRegistry, an as documentStructureCommandItems, ao as fileImportPluginKey, ap as findAutocorrection, aq as findCommentRanges, ar as findHexColors, as as findImportAdapter, at as footnotesMarkdownIt, au as footnotesPluginKey, av as fractionRules, aw as getActiveHeading, ax as getBookmarks, ay as getCommentAnchors, az as getCommentAuthor, aA as getCommentIdsAt, aB as getCommentStore, aC as getCrossReferenceTargets, aD as getDocumentStructureCommandItems, aE as getFootnotes, aF as getImportAccept, aG as getOutline, aH as getTableOfContentsEntries, aI as handleImageInsertion, aJ as htmlImportAdapter, aK as imagePastePluginKey, aL as importFile, aM as insertImageNode, aN as isInsidePromptToken, aO as markdownImportAdapter, aP as navigateToHeading, aQ as outlinePluginKey, aR as plainTextImportAdapter, aS as registerImportAdapter, aT as removeImageNode, aU as richClipboardPluginKey, aV as rtfImportAdapter, aW as smartQuoteRules, aX as smilieAutocorrectRules, aY as symbolRules, aZ as syncFootnotes, a_ as tableOfContentsMarkdownIt, a$ as tableOfContentsPluginKey, b0 as twoInitialCapitalsRules, b1 as unregisterImportAdapter, b2 as updateImageSrc, b3 as writeRichClipboard } from './index-k3mFbPx_.cjs';
6
+ export { C as CommentAnchor, a as CommentReply, b as CommentStore, c as CommentStoreListener, d as CommentStoreOptions, e as CommentStoreSnapshot, f as CommentThread, g as CreateThreadInput, D as DELETION_MARK_NAME, I as INSERTION_MARK_NAME, M as Mention, h as MentionEntity, i as MentionOptions, R as ReviewAuthor, S as SerializedComments, T as TRACK_CHANGES_SKIP_META, j as TrackChanges, k as TrackChangesOptions, l as TrackChangesSnapshot, m as TrackChangesStorage, n as TrackChangesStore, o as TrackedChange, p as TrackedChangeAttributes, q as TrackedChangeType, r as TrackedChangesView, s as TrackedDeletion, t as TrackedInsertion, u as createCommentStore, v as createMentionExtension, w as createReviewId, x as formatReviewTime, y as getTrackChangesStore, z as getTrackedChangeAt, A as getTrackedChanges, B as isTrackChangesEnabled, E as resolveTrackedChanges, F as trackChangesPluginKey } from './track-changes-G8JcWB8b.cjs';
7
+ export { ClipboardDataLike, ExtractedMention, MARKDOWN_MENTION_SPLIT_REGEX, MENTION_REGEX, MarkdownToHtmlOptions, MentionSegment, PIXERATE_DOCUMENT_MIME, PlainTextOptions, PreprocessMarkdownMentionsOptions, RichClipboardPayload, SanitizeHtmlOptions, escapeHtml, extractMentions, extractMentionsFromDoc, getClipboardData, getEditorMarkdown, getEditorText, getSchemaSignature, htmlToPlainText, markdownToTipTapHtml, parseMentionSegments, parseRichClipboardPayload, plainTextToParagraphHtml, plainTextToSlice, plainTextToTipTapHtml, preprocessMarkdownFileLinks, preprocessMarkdownMentions, readRichClipboard, rtfToPlainText, sanitizeHtml, sanitizeImportedHtml, serializeRichClipboardPayload, stripMarkdownCode } from './serializers/index.cjs';
7
8
  import { Editor, EditorOptions, Content, Extensions } from '@tiptap/core';
8
9
  export { Content, Editor, EditorOptions, Extensions } from '@tiptap/core';
9
- export { ASTNode, BinaryOpNode, CellCoordinate, CellData, CellDep, CellFormat, CellRange, CellRefNode, ColumnBinding, ColumnType, DataSourceBinder, DependencyGraph, EvaluationContext, FORMULA_ERRORS, FormulaEvaluator, FormulaParser, FormulaToken, FormulaTokenType, FunctionCallNode, LiteralNode, PropertyRefNode, RangeNode, RowType, SpreadsheetColumn, SpreadsheetController, SpreadsheetControllerOptions, SpreadsheetDataSource, SpreadsheetDataSourceField, SpreadsheetDocument, SpreadsheetRow, StructuralChange, UnaryOpNode, WHOLE_COLUMN_END_ROW, colNameToIndex, columnDependencyKey, extractCellDependencies, indexToColName, isFormulaError, parseCellReference, parseFormula, parseRange, shiftFormulaReferences, tokenizeFormula } from './spreadsheet/index.cjs';
10
- export { Command, HistoryManager, HistoryManagerOptions, HistoryState, MergedExecutionOptions, SnapshotCommandOptions, createHistoryManager } from './history/index.cjs';
10
+ export { A as ASTNode, B as BinaryOpNode, C as CellCoordinate, a as CellData, b as CellDep, c as CellFormat, d as CellPosition, e as CellRange, f as CellRefNode, g as CellValueReader, h as ColumnBinding, i as ColumnType, j as CsvExportOptions, k as CsvImportOptions, D as DEFAULT_COLUMN_WIDTH, l as DEFAULT_ROW_HEIGHT, m as DataSourceBinder, n as DependencyGraph, E as EvaluationContext, F as FORMULA_ERRORS, o as FilterOperator, p as FilterRule, q as FormulaDiagnostic, r as FormulaErrorCode, s as FormulaEvaluationResult, t as FormulaEvaluator, u as FormulaParser, v as FormulaRange, w as FormulaToken, x as FormulaTokenType, y as FunctionCallNode, G as GroupAggregate, z as GroupSummary, L as LiteralNode, N as NewFilterRule, P as ParsedSpreadsheetClipboard, H as PropertyRefNode, R as RangeNode, I as RowType, S as SPREADSHEET_CLIPBOARD_MIME, J as SortDirection, K as SortKey, M as SpreadsheetCellSpan, O as SpreadsheetClipboardCell, Q as SpreadsheetClipboardData, T as SpreadsheetClipboardPayload, U as SpreadsheetClipboardSource, V as SpreadsheetColumn, W as SpreadsheetController, X as SpreadsheetControllerOptions, Y as SpreadsheetDataSource, Z as SpreadsheetDataSourceField, _ as SpreadsheetDocument, $ as SpreadsheetFilterState, a0 as SpreadsheetGrouping, a1 as SpreadsheetRow, a2 as SpreadsheetRowGroup, a3 as SpreadsheetRowSection, a4 as SpreadsheetTableSettings, a5 as SpreadsheetViewColumn, a6 as SpreadsheetViewModel, a7 as SpreadsheetViewRow, a8 as StructuralChange, a9 as UnaryOpNode, aa as WHOLE_COLUMN_END_ROW, ab as buildSpreadsheetView, ac as colNameToIndex, ad as columnDependencyKey, ae as computeRowGroups, af as createSpreadsheetClipboardData, ag as describeFormulaError, ah as extractCellDependencies, ai as getRowSection, aj as getTableSections, ak as indexToColName, al as isFormulaError, am as mapFormulaReferences, an as offsetFormulaReferences, ao as parseCellReference, ap as parseFormula, aq as parseHtmlTable, ar as parseRange, as as readSpreadsheetClipboard, at as rebaseClipboardRows, au as remapFormulaReferences, av as rowPassesFilters, aw as serializeHtmlTable, ax as shiftFormulaReferences, ay as tokenizeFormula } from './controller-OUdxPY-X.cjs';
11
+ export { CsvParseOptions, CsvSerializeOptions, FillDirection, FormulaActiveCall, FormulaArgument, FormulaArgumentSpec, FormulaArgumentType, FormulaCaretContext, FormulaCriteriaPredicate, FormulaFunctionCategory, FormulaFunctionContext, FormulaFunctionDefinition, FormulaFunctionSuggestion, FormulaHints, FormulaSignaturePart, ImportFileIntoSpreadsheetOptions, SPREADSHEET_IMPORT_ADAPTERS, SPREADSHEET_TABLE_ACTIONS, SpreadsheetImport, SpreadsheetImportAdapter, SpreadsheetMenuItem, SpreadsheetTableActionName, SpreadsheetTableActions, aggregateValues, applyFormulaSuggestion, bindSpreadsheetTableActions, checkFormulaArgumentCount, compareCellValues, computeFillTarget, csvImportAdapter, escapeCsvField, fillSeries, formatValueWithCode, getFillDirection, getFormulaArgumentSpecIndex, getFormulaCaretContext, getFormulaFunction, getFormulaHints, getFormulaSignature, getFormulaSignatureParts, getSpreadsheetMenuItems, importFileIntoSpreadsheet, isBlankValue, isSingleCellRange, listFormulaFunctions, matchesFilterRule, normalizeRange, parseCriteria, parseCsv, parseTsv, rangeContains, rangeContainsRange, rangesIntersect, registerFormulaFunction, registerSpreadsheetImportAdapters, roundFloat, searchFormulaFunctions, serializeCsv, serializeTsv, toNumber, tsvImportAdapter, unregisterFormulaFunction, wildcardToRegExp } from './spreadsheet/index.cjs';
12
+ export { C as Command, H as HistoryManagerOptions, a as HistoryState, M as MergedExecutionOptions, S as SnapshotCommandOptions } from './types-BZgcDsC5.cjs';
13
+ export { HistoryManager, createHistoryManager } from './history/index.cjs';
14
+ import { I as ImportAdapterRegistry, a as ImportOutcome, F as FileLike } from './registry-iAHbqkYt.cjs';
15
+ export { b as FindImportAdapterQuery, c as ImportAdapter, d as ImportContext, e as ImportError, f as ImportErrorCode, g as ImportFileOptions, h as ImportInput, i as ImportTarget, R as RegisterImportAdapterOptions, j as createImportContext } from './registry-iAHbqkYt.cjs';
16
+ import { Schema, Slice } from '@tiptap/pm/model';
17
+ import { EditorView } from '@tiptap/pm/view';
11
18
  export { MarkdownOptions } from 'tiptap-markdown';
12
- import '@tiptap/pm/view';
13
- import '@tiptap/pm/model';
14
- import '@tiptap/extension-image';
15
19
  import '@tiptap/pm/state';
20
+ import '@tiptap/extension-image';
16
21
  import '@tiptap/extension-mention';
17
22
  import '@tiptap/suggestion';
18
23
 
@@ -143,4 +148,86 @@ interface EditorSlotsMap {
143
148
  [customSlot: string]: ((props: any) => any) | undefined;
144
149
  }
145
150
 
146
- export { type BaseSlotProps, type ButtonSlotProps, DirtyTracker, type DirtyTrackerOptions, EditorController, type EditorControllerOptions, type EditorSlotsMap, type NodeHeaderSlotProps, Token, type TooltipSlotProps, createDirtyTracker, createEditor, defaultIsEqual };
151
+ /** A TipTap `Editor` (or anything with a `view`) or a ProseMirror `EditorView`. */
152
+ type ImportEditorTarget = EditorView | {
153
+ view: EditorView;
154
+ };
155
+ /**
156
+ * Parses (already sanitized) HTML into a slice for `schema`. The HTML is
157
+ * parsed with `DOMParser`, which produces an inert document: images don't
158
+ * load and handlers don't run. Returns `null` without a DOM.
159
+ */
160
+ declare function htmlToSlice(html: string, schema: Schema): Slice | null;
161
+ interface InsertImportedDocumentOptions {
162
+ /** Document position to insert at (default: replace the selection). */
163
+ at?: number;
164
+ /** Insert `text` literally instead of `html` (plain-text / prompt editors). */
165
+ asPlainText?: boolean;
166
+ }
167
+ /**
168
+ * Inserts an imported document into an editor as one transaction and returns
169
+ * the position right after the inserted content.
170
+ */
171
+ declare function insertImportedDocument(target: ImportEditorTarget, content: DocumentImport, options?: InsertImportedDocumentOptions): number;
172
+ interface ImportFilesIntoEditorOptions extends InsertImportedDocumentOptions {
173
+ /** Registry to match files against (default: the shared default registry). */
174
+ registry?: ImportAdapterRegistry;
175
+ /** Called after each file is inserted. */
176
+ onImport?: (outcome: ImportOutcome<DocumentImport>, file: FileLike) => void;
177
+ /** Called for each file that cannot be imported; other files continue. */
178
+ onError?: (error: Error, file: FileLike) => void;
179
+ }
180
+ /**
181
+ * Imports files with `document` adapters and inserts them one after another
182
+ * at `at` (or the selection). Files without a matching adapter are reported
183
+ * through `onError`. Resolves with the successful outcomes.
184
+ */
185
+ declare function importFilesIntoEditor(target: ImportEditorTarget, files: Iterable<FileLike> | ArrayLike<FileLike>, options?: ImportFilesIntoEditorOptions): Promise<ImportOutcome<DocumentImport>[]>;
186
+
187
+ /**
188
+ * Opens the browser file picker and resolves with the chosen files (an empty
189
+ * array when the dialog is cancelled). `accept` defaults to every extension
190
+ * and MIME type the default registry can import as a document.
191
+ */
192
+ declare function pickImportFiles(options?: {
193
+ accept?: string;
194
+ multiple?: boolean;
195
+ }): Promise<File[]>;
196
+ interface FileImportState {
197
+ isImporting: boolean;
198
+ /** Last import error (cleared when a new import starts). */
199
+ error: Error | null;
200
+ /** Outcomes of the most recent import. */
201
+ lastOutcomes: ImportOutcome<DocumentImport>[];
202
+ }
203
+ interface FileImportControllerOptions extends Omit<ImportFilesIntoEditorOptions, "at"> {
204
+ /** Allow choosing several files in the picker (default `true`). */
205
+ multiple?: boolean;
206
+ }
207
+ /**
208
+ * Framework-agnostic state for a file-import button: tracks `isImporting` /
209
+ * `error`, opens the file picker and inserts the imported content into the
210
+ * editor returned by `getTarget`. React's `useFileImport` and Svelte's
211
+ * `createFileImport` wrap it.
212
+ */
213
+ declare class FileImportController {
214
+ private readonly getTarget;
215
+ private options;
216
+ private state;
217
+ private readonly listeners;
218
+ private pending;
219
+ constructor(getTarget: () => ImportEditorTarget | null | undefined, options?: FileImportControllerOptions);
220
+ setOptions(options: FileImportControllerOptions): void;
221
+ /** `accept` attribute value for document imports. */
222
+ get accept(): string;
223
+ getState: () => FileImportState;
224
+ subscribe: (listener: (state: FileImportState) => void) => (() => void);
225
+ private setState;
226
+ /** Imports files into the editor at `at` (default: the selection). */
227
+ importFiles: (files: Iterable<FileLike> | ArrayLike<FileLike>, at?: number) => Promise<ImportOutcome<DocumentImport>[]>;
228
+ /** Opens the file picker and imports the chosen files at the selection. */
229
+ openFilePicker: () => Promise<ImportOutcome<DocumentImport>[]>;
230
+ }
231
+ declare function createFileImportController(getTarget: () => ImportEditorTarget | null | undefined, options?: FileImportControllerOptions): FileImportController;
232
+
233
+ export { type BaseSlotProps, type ButtonSlotProps, DirtyTracker, type DirtyTrackerOptions, DocumentImport, EditorController, type EditorControllerOptions, type EditorSlotsMap, FileImportController, type FileImportControllerOptions, type FileImportState, FileLike, ImportAdapterRegistry, type ImportEditorTarget, type ImportFilesIntoEditorOptions, ImportOutcome, type InsertImportedDocumentOptions, type NodeHeaderSlotProps, Token, type TooltipSlotProps, createDirtyTracker, createEditor, createFileImportController, defaultIsEqual, htmlToSlice, importFilesIntoEditor, insertImportedDocument, pickImportFiles };
package/dist/index.d.ts CHANGED
@@ -1,18 +1,23 @@
1
- import { T as Token } from './tokens-7kRTEtPb.js';
2
- export { C as ColorGradient, I as INSTRUCTION_REGEX, a as TEMPLATE_REGEX, b as Template, c as TemplateVersion, d as TokenType, V as VARIABLE_REGEX, i as instructionRegex, t as templateRegex, v as variableRegex } from './tokens-7kRTEtPb.js';
3
- export { ResolveTemplatesOptions, SourceMapSegment, TEMPLATE_DEPTH_ERROR, TEMPLATE_LOOP_ERROR, extractInstructionNames, extractTemplateNames, extractVariableNames, getLatestVersion, getTemplateBody, mapRawOffsetToResolved, mapResolvedOffsetToRaw, resolveTemplates, resolveTemplatesWithMapping, resolveVariables, tokenizePrompt } from './grammar/index.js';
4
- export { ColorHighlighter, FontSize, GradientText, GradientTextOptions, Image, ImageOptions, LoadingNode, Markdown, RichTextPresetOptions, SlashCommandMatchData, SlashCommands, SlashCommandsOptions, SmilieReplacer, TemplateSuggestions, TemplateSuggestionsOptions, createRichTextPreset, findHexColors, handleImageInsertion, imagePastePluginKey, insertImageNode, removeImageNode, updateImageSrc } from './extensions/index.js';
5
- export { M as Mention, a as MentionEntity, b as MentionOptions, c as createMentionExtension } from './mention-Dcevh3ff.js';
6
- export { ExtractedMention, MARKDOWN_MENTION_SPLIT_REGEX, MENTION_REGEX, MarkdownToHtmlOptions, MentionSegment, PreprocessMarkdownMentionsOptions, escapeHtml, extractMentions, extractMentionsFromDoc, getEditorMarkdown, getEditorText, htmlToPlainText, markdownToTipTapHtml, parseMentionSegments, plainTextToSlice, plainTextToTipTapHtml, preprocessMarkdownFileLinks, preprocessMarkdownMentions, stripMarkdownCode } from './serializers/index.js';
1
+ import { T as Token } from './tokens-CyLZmIei.js';
2
+ export { C as ColorGradient, a as ConditionalKind, I as INSTRUCTION_REGEX, P as PromptDiagnostic, b as PromptDiagnosticCode, c as PromptValue, d as PromptValues, e as TEMPLATE_REGEX, f as Template, g as TemplateVersion, h as TokenType, V as VARIABLE_REGEX, i as instructionRegex, t as templateRegex, v as variableRegex } from './tokens-CyLZmIei.js';
3
+ export { ConditionalTagLike, ConditionalTagMatch, EvaluatedToken, ExtractVariablesOptions, ParsedVariableBody, ResolvePromptOptions, ResolvePromptResult, ResolveTemplatesOptions, SourceMapSegment, TEMPLATE_DEPTH_ERROR, TEMPLATE_LOOP_ERROR, TokenizeResult, VariableDescriptor, VariableFormField, compactVariableValues, escapeVariableText, evaluateCondition, evaluatePromptTokens, extractInstructionNames, extractTemplateNames, extractVariableNames, extractVariables, getLatestVersion, getPromptDiagnostics, getSuppliedValue, getTemplateBody, getVariableFormFields, isPromptValueSet, mapRawOffsetToResolved, mapResolvedOffsetToRaw, matchConditionalTags, parseVariableBody, resolvePrompt, resolveTemplates, resolveTemplatesWithMapping, resolveVariables, tokenizePrompt, tokenizePromptWithDiagnostics, unescapeVariableText } from './grammar/index.js';
4
+ import { D as DocumentImport } from './index-Ng1pG7JE.js';
5
+ export { A as AddCommentOptions, a as Autocorrect, b as AutocorrectContext, c as AutocorrectCorrection, d as AutocorrectOptions, e as AutocorrectRule, f as AutocorrectStorage, B as BUILT_IN_IMPORT_ADAPTERS, g as Bookmark, h as BookmarkInfo, i as BookmarkOptions, C as COMMENT_MARK_NAME, j as ColorHighlighter, k as CommentRange, l as Comments, m as CommentsOptions, n as CommentsStorage, o as CreateImportAdapterRegistryOptions, p as CrossReference, q as CrossReferenceOptions, r as CrossReferenceTarget, s as CrossReferenceTargetType, t as DEFAULT_AUTOCORRECT_EXCEPTIONS, u as DocumentImportAdapter, v as DocumentStructureCommandArgs, w as DocumentStructureCommandItem, F as FileImport, x as FileImportOptions, y as FocusHeadingOptions, z as FontSize, E as Footnote, G as FootnoteInfo, H as FootnoteReference, I as Footnotes, J as FootnotesOptions, K as GradientText, L as GradientTextOptions, M as Image, N as ImageOptions, O as InsertFootnoteOptions, P as InsertTableOfContentsOptions, Q as LoadingNode, R as Markdown, S as Outline, T as OutlineHeading, U as OutlineOptions, V as OutlineSnapshot, W as OutlineStorage, X as OutlineStore, Y as OutlineTreeItem, Z as RichClipboard, _ as RichClipboardOptions, $ as RichClipboardStorage, a0 as RichTextPresetOptions, a1 as SMILIE_REPLACEMENTS, a2 as SetBookmarkOptions, a3 as SlashCommandMatchData, a4 as SlashCommands, a5 as SlashCommandsOptions, a6 as SmilieReplacer, a7 as TableOfContents, a8 as TableOfContentsEntry, a9 as TableOfContentsOptions, aa as TemplateSuggestions, ab as TemplateSuggestionsOptions, ac as autocorrectPluginKey, ad as buildOutlineTree, ae as capitalizeSentenceRules, af as commentsPluginKey, ag as computeOutline, ah as createImportAdapterRegistry, ai as createOutlineStore, aj as createRichTextPreset, ak as crossReferencePluginKey, al as defaultAutocorrectRules, am as defaultImportRegistry, an as documentStructureCommandItems, ao as fileImportPluginKey, ap as findAutocorrection, aq as findCommentRanges, ar as findHexColors, as as findImportAdapter, at as footnotesMarkdownIt, au as footnotesPluginKey, av as fractionRules, aw as getActiveHeading, ax as getBookmarks, ay as getCommentAnchors, az as getCommentAuthor, aA as getCommentIdsAt, aB as getCommentStore, aC as getCrossReferenceTargets, aD as getDocumentStructureCommandItems, aE as getFootnotes, aF as getImportAccept, aG as getOutline, aH as getTableOfContentsEntries, aI as handleImageInsertion, aJ as htmlImportAdapter, aK as imagePastePluginKey, aL as importFile, aM as insertImageNode, aN as isInsidePromptToken, aO as markdownImportAdapter, aP as navigateToHeading, aQ as outlinePluginKey, aR as plainTextImportAdapter, aS as registerImportAdapter, aT as removeImageNode, aU as richClipboardPluginKey, aV as rtfImportAdapter, aW as smartQuoteRules, aX as smilieAutocorrectRules, aY as symbolRules, aZ as syncFootnotes, a_ as tableOfContentsMarkdownIt, a$ as tableOfContentsPluginKey, b0 as twoInitialCapitalsRules, b1 as unregisterImportAdapter, b2 as updateImageSrc, b3 as writeRichClipboard } from './index-Ng1pG7JE.js';
6
+ export { C as CommentAnchor, a as CommentReply, b as CommentStore, c as CommentStoreListener, d as CommentStoreOptions, e as CommentStoreSnapshot, f as CommentThread, g as CreateThreadInput, D as DELETION_MARK_NAME, I as INSERTION_MARK_NAME, M as Mention, h as MentionEntity, i as MentionOptions, R as ReviewAuthor, S as SerializedComments, T as TRACK_CHANGES_SKIP_META, j as TrackChanges, k as TrackChangesOptions, l as TrackChangesSnapshot, m as TrackChangesStorage, n as TrackChangesStore, o as TrackedChange, p as TrackedChangeAttributes, q as TrackedChangeType, r as TrackedChangesView, s as TrackedDeletion, t as TrackedInsertion, u as createCommentStore, v as createMentionExtension, w as createReviewId, x as formatReviewTime, y as getTrackChangesStore, z as getTrackedChangeAt, A as getTrackedChanges, B as isTrackChangesEnabled, E as resolveTrackedChanges, F as trackChangesPluginKey } from './track-changes-G8JcWB8b.js';
7
+ export { ClipboardDataLike, ExtractedMention, MARKDOWN_MENTION_SPLIT_REGEX, MENTION_REGEX, MarkdownToHtmlOptions, MentionSegment, PIXERATE_DOCUMENT_MIME, PlainTextOptions, PreprocessMarkdownMentionsOptions, RichClipboardPayload, SanitizeHtmlOptions, escapeHtml, extractMentions, extractMentionsFromDoc, getClipboardData, getEditorMarkdown, getEditorText, getSchemaSignature, htmlToPlainText, markdownToTipTapHtml, parseMentionSegments, parseRichClipboardPayload, plainTextToParagraphHtml, plainTextToSlice, plainTextToTipTapHtml, preprocessMarkdownFileLinks, preprocessMarkdownMentions, readRichClipboard, rtfToPlainText, sanitizeHtml, sanitizeImportedHtml, serializeRichClipboardPayload, stripMarkdownCode } from './serializers/index.js';
7
8
  import { Editor, EditorOptions, Content, Extensions } from '@tiptap/core';
8
9
  export { Content, Editor, EditorOptions, Extensions } from '@tiptap/core';
9
- export { ASTNode, BinaryOpNode, CellCoordinate, CellData, CellDep, CellFormat, CellRange, CellRefNode, ColumnBinding, ColumnType, DataSourceBinder, DependencyGraph, EvaluationContext, FORMULA_ERRORS, FormulaEvaluator, FormulaParser, FormulaToken, FormulaTokenType, FunctionCallNode, LiteralNode, PropertyRefNode, RangeNode, RowType, SpreadsheetColumn, SpreadsheetController, SpreadsheetControllerOptions, SpreadsheetDataSource, SpreadsheetDataSourceField, SpreadsheetDocument, SpreadsheetRow, StructuralChange, UnaryOpNode, WHOLE_COLUMN_END_ROW, colNameToIndex, columnDependencyKey, extractCellDependencies, indexToColName, isFormulaError, parseCellReference, parseFormula, parseRange, shiftFormulaReferences, tokenizeFormula } from './spreadsheet/index.js';
10
- export { Command, HistoryManager, HistoryManagerOptions, HistoryState, MergedExecutionOptions, SnapshotCommandOptions, createHistoryManager } from './history/index.js';
10
+ export { A as ASTNode, B as BinaryOpNode, C as CellCoordinate, a as CellData, b as CellDep, c as CellFormat, d as CellPosition, e as CellRange, f as CellRefNode, g as CellValueReader, h as ColumnBinding, i as ColumnType, j as CsvExportOptions, k as CsvImportOptions, D as DEFAULT_COLUMN_WIDTH, l as DEFAULT_ROW_HEIGHT, m as DataSourceBinder, n as DependencyGraph, E as EvaluationContext, F as FORMULA_ERRORS, o as FilterOperator, p as FilterRule, q as FormulaDiagnostic, r as FormulaErrorCode, s as FormulaEvaluationResult, t as FormulaEvaluator, u as FormulaParser, v as FormulaRange, w as FormulaToken, x as FormulaTokenType, y as FunctionCallNode, G as GroupAggregate, z as GroupSummary, L as LiteralNode, N as NewFilterRule, P as ParsedSpreadsheetClipboard, H as PropertyRefNode, R as RangeNode, I as RowType, S as SPREADSHEET_CLIPBOARD_MIME, J as SortDirection, K as SortKey, M as SpreadsheetCellSpan, O as SpreadsheetClipboardCell, Q as SpreadsheetClipboardData, T as SpreadsheetClipboardPayload, U as SpreadsheetClipboardSource, V as SpreadsheetColumn, W as SpreadsheetController, X as SpreadsheetControllerOptions, Y as SpreadsheetDataSource, Z as SpreadsheetDataSourceField, _ as SpreadsheetDocument, $ as SpreadsheetFilterState, a0 as SpreadsheetGrouping, a1 as SpreadsheetRow, a2 as SpreadsheetRowGroup, a3 as SpreadsheetRowSection, a4 as SpreadsheetTableSettings, a5 as SpreadsheetViewColumn, a6 as SpreadsheetViewModel, a7 as SpreadsheetViewRow, a8 as StructuralChange, a9 as UnaryOpNode, aa as WHOLE_COLUMN_END_ROW, ab as buildSpreadsheetView, ac as colNameToIndex, ad as columnDependencyKey, ae as computeRowGroups, af as createSpreadsheetClipboardData, ag as describeFormulaError, ah as extractCellDependencies, ai as getRowSection, aj as getTableSections, ak as indexToColName, al as isFormulaError, am as mapFormulaReferences, an as offsetFormulaReferences, ao as parseCellReference, ap as parseFormula, aq as parseHtmlTable, ar as parseRange, as as readSpreadsheetClipboard, at as rebaseClipboardRows, au as remapFormulaReferences, av as rowPassesFilters, aw as serializeHtmlTable, ax as shiftFormulaReferences, ay as tokenizeFormula } from './controller-OUdxPY-X.js';
11
+ export { CsvParseOptions, CsvSerializeOptions, FillDirection, FormulaActiveCall, FormulaArgument, FormulaArgumentSpec, FormulaArgumentType, FormulaCaretContext, FormulaCriteriaPredicate, FormulaFunctionCategory, FormulaFunctionContext, FormulaFunctionDefinition, FormulaFunctionSuggestion, FormulaHints, FormulaSignaturePart, ImportFileIntoSpreadsheetOptions, SPREADSHEET_IMPORT_ADAPTERS, SPREADSHEET_TABLE_ACTIONS, SpreadsheetImport, SpreadsheetImportAdapter, SpreadsheetMenuItem, SpreadsheetTableActionName, SpreadsheetTableActions, aggregateValues, applyFormulaSuggestion, bindSpreadsheetTableActions, checkFormulaArgumentCount, compareCellValues, computeFillTarget, csvImportAdapter, escapeCsvField, fillSeries, formatValueWithCode, getFillDirection, getFormulaArgumentSpecIndex, getFormulaCaretContext, getFormulaFunction, getFormulaHints, getFormulaSignature, getFormulaSignatureParts, getSpreadsheetMenuItems, importFileIntoSpreadsheet, isBlankValue, isSingleCellRange, listFormulaFunctions, matchesFilterRule, normalizeRange, parseCriteria, parseCsv, parseTsv, rangeContains, rangeContainsRange, rangesIntersect, registerFormulaFunction, registerSpreadsheetImportAdapters, roundFloat, searchFormulaFunctions, serializeCsv, serializeTsv, toNumber, tsvImportAdapter, unregisterFormulaFunction, wildcardToRegExp } from './spreadsheet/index.js';
12
+ export { C as Command, H as HistoryManagerOptions, a as HistoryState, M as MergedExecutionOptions, S as SnapshotCommandOptions } from './types-BZgcDsC5.js';
13
+ export { HistoryManager, createHistoryManager } from './history/index.js';
14
+ import { I as ImportAdapterRegistry, a as ImportOutcome, F as FileLike } from './registry-iAHbqkYt.js';
15
+ export { b as FindImportAdapterQuery, c as ImportAdapter, d as ImportContext, e as ImportError, f as ImportErrorCode, g as ImportFileOptions, h as ImportInput, i as ImportTarget, R as RegisterImportAdapterOptions, j as createImportContext } from './registry-iAHbqkYt.js';
16
+ import { Schema, Slice } from '@tiptap/pm/model';
17
+ import { EditorView } from '@tiptap/pm/view';
11
18
  export { MarkdownOptions } from 'tiptap-markdown';
12
- import '@tiptap/pm/view';
13
- import '@tiptap/pm/model';
14
- import '@tiptap/extension-image';
15
19
  import '@tiptap/pm/state';
20
+ import '@tiptap/extension-image';
16
21
  import '@tiptap/extension-mention';
17
22
  import '@tiptap/suggestion';
18
23
 
@@ -143,4 +148,86 @@ interface EditorSlotsMap {
143
148
  [customSlot: string]: ((props: any) => any) | undefined;
144
149
  }
145
150
 
146
- export { type BaseSlotProps, type ButtonSlotProps, DirtyTracker, type DirtyTrackerOptions, EditorController, type EditorControllerOptions, type EditorSlotsMap, type NodeHeaderSlotProps, Token, type TooltipSlotProps, createDirtyTracker, createEditor, defaultIsEqual };
151
+ /** A TipTap `Editor` (or anything with a `view`) or a ProseMirror `EditorView`. */
152
+ type ImportEditorTarget = EditorView | {
153
+ view: EditorView;
154
+ };
155
+ /**
156
+ * Parses (already sanitized) HTML into a slice for `schema`. The HTML is
157
+ * parsed with `DOMParser`, which produces an inert document: images don't
158
+ * load and handlers don't run. Returns `null` without a DOM.
159
+ */
160
+ declare function htmlToSlice(html: string, schema: Schema): Slice | null;
161
+ interface InsertImportedDocumentOptions {
162
+ /** Document position to insert at (default: replace the selection). */
163
+ at?: number;
164
+ /** Insert `text` literally instead of `html` (plain-text / prompt editors). */
165
+ asPlainText?: boolean;
166
+ }
167
+ /**
168
+ * Inserts an imported document into an editor as one transaction and returns
169
+ * the position right after the inserted content.
170
+ */
171
+ declare function insertImportedDocument(target: ImportEditorTarget, content: DocumentImport, options?: InsertImportedDocumentOptions): number;
172
+ interface ImportFilesIntoEditorOptions extends InsertImportedDocumentOptions {
173
+ /** Registry to match files against (default: the shared default registry). */
174
+ registry?: ImportAdapterRegistry;
175
+ /** Called after each file is inserted. */
176
+ onImport?: (outcome: ImportOutcome<DocumentImport>, file: FileLike) => void;
177
+ /** Called for each file that cannot be imported; other files continue. */
178
+ onError?: (error: Error, file: FileLike) => void;
179
+ }
180
+ /**
181
+ * Imports files with `document` adapters and inserts them one after another
182
+ * at `at` (or the selection). Files without a matching adapter are reported
183
+ * through `onError`. Resolves with the successful outcomes.
184
+ */
185
+ declare function importFilesIntoEditor(target: ImportEditorTarget, files: Iterable<FileLike> | ArrayLike<FileLike>, options?: ImportFilesIntoEditorOptions): Promise<ImportOutcome<DocumentImport>[]>;
186
+
187
+ /**
188
+ * Opens the browser file picker and resolves with the chosen files (an empty
189
+ * array when the dialog is cancelled). `accept` defaults to every extension
190
+ * and MIME type the default registry can import as a document.
191
+ */
192
+ declare function pickImportFiles(options?: {
193
+ accept?: string;
194
+ multiple?: boolean;
195
+ }): Promise<File[]>;
196
+ interface FileImportState {
197
+ isImporting: boolean;
198
+ /** Last import error (cleared when a new import starts). */
199
+ error: Error | null;
200
+ /** Outcomes of the most recent import. */
201
+ lastOutcomes: ImportOutcome<DocumentImport>[];
202
+ }
203
+ interface FileImportControllerOptions extends Omit<ImportFilesIntoEditorOptions, "at"> {
204
+ /** Allow choosing several files in the picker (default `true`). */
205
+ multiple?: boolean;
206
+ }
207
+ /**
208
+ * Framework-agnostic state for a file-import button: tracks `isImporting` /
209
+ * `error`, opens the file picker and inserts the imported content into the
210
+ * editor returned by `getTarget`. React's `useFileImport` and Svelte's
211
+ * `createFileImport` wrap it.
212
+ */
213
+ declare class FileImportController {
214
+ private readonly getTarget;
215
+ private options;
216
+ private state;
217
+ private readonly listeners;
218
+ private pending;
219
+ constructor(getTarget: () => ImportEditorTarget | null | undefined, options?: FileImportControllerOptions);
220
+ setOptions(options: FileImportControllerOptions): void;
221
+ /** `accept` attribute value for document imports. */
222
+ get accept(): string;
223
+ getState: () => FileImportState;
224
+ subscribe: (listener: (state: FileImportState) => void) => (() => void);
225
+ private setState;
226
+ /** Imports files into the editor at `at` (default: the selection). */
227
+ importFiles: (files: Iterable<FileLike> | ArrayLike<FileLike>, at?: number) => Promise<ImportOutcome<DocumentImport>[]>;
228
+ /** Opens the file picker and imports the chosen files at the selection. */
229
+ openFilePicker: () => Promise<ImportOutcome<DocumentImport>[]>;
230
+ }
231
+ declare function createFileImportController(getTarget: () => ImportEditorTarget | null | undefined, options?: FileImportControllerOptions): FileImportController;
232
+
233
+ export { type BaseSlotProps, type ButtonSlotProps, DirtyTracker, type DirtyTrackerOptions, DocumentImport, EditorController, type EditorControllerOptions, type EditorSlotsMap, FileImportController, type FileImportControllerOptions, type FileImportState, FileLike, ImportAdapterRegistry, type ImportEditorTarget, type ImportFilesIntoEditorOptions, ImportOutcome, type InsertImportedDocumentOptions, type NodeHeaderSlotProps, Token, type TooltipSlotProps, createDirtyTracker, createEditor, createFileImportController, defaultIsEqual, htmlToSlice, importFilesIntoEditor, insertImportedDocument, pickImportFiles };