@lyads/visual-editor 0.0.0-stage → 1.0.1

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 (258) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +201 -0
  3. package/NOTICE +8 -0
  4. package/README.md +135 -2
  5. package/THIRD_PARTY_NOTICES.md +21259 -0
  6. package/dist/application/block-placement.d.ts +30 -0
  7. package/dist/application/block-session.d.ts +135 -0
  8. package/dist/application/content-service.d.ts +73 -0
  9. package/dist/application/document-commands.d.ts +51 -0
  10. package/dist/application/document-metadata.d.ts +30 -0
  11. package/dist/application/document-presentation.d.ts +35 -0
  12. package/dist/application/email-insertion.d.ts +76 -0
  13. package/dist/application/host.d.ts +36 -0
  14. package/dist/application/image-link.d.ts +36 -0
  15. package/dist/application/section-layout.d.ts +25 -0
  16. package/dist/application/session.d.ts +128 -0
  17. package/dist/assets/browser-worker-D56tNvnb.js +1014 -0
  18. package/dist/assets/browser-worker-D56tNvnb.js.map +1 -0
  19. package/dist/block-controller-RjYGvOcn.js +2468 -0
  20. package/dist/block-controller-RjYGvOcn.js.map +1 -0
  21. package/dist/block-factory-C5oHi4Fm.js +5397 -0
  22. package/dist/block-factory-C5oHi4Fm.js.map +1 -0
  23. package/dist/blocks/block-checks.d.ts +34 -0
  24. package/dist/blocks/block-inspector.d.ts +55 -0
  25. package/dist/blocks/block-output.d.ts +28 -0
  26. package/dist/blocks/block-type.d.ts +124 -0
  27. package/dist/blocks/content-guard.d.ts +52 -0
  28. package/dist/blocks/conversion.d.ts +22 -0
  29. package/dist/blocks/definitions.d.ts +43 -0
  30. package/dist/blocks/device-styles.d.ts +31 -0
  31. package/dist/blocks/email-generator.d.ts +22 -0
  32. package/dist/blocks/email-preview.d.ts +23 -0
  33. package/dist/blocks/email-renderer.d.ts +20 -0
  34. package/dist/blocks/fields.d.ts +34 -0
  35. package/dist/blocks/page-generator.d.ts +16 -0
  36. package/dist/blocks/render-context.d.ts +58 -0
  37. package/dist/blocks/styles.d.ts +54 -0
  38. package/dist/blocks/types/embed.d.ts +40 -0
  39. package/dist/blocks/types/layout.d.ts +41 -0
  40. package/dist/blocks/types/media.d.ts +53 -0
  41. package/dist/blocks/types/structure.d.ts +44 -0
  42. package/dist/blocks/types/text.d.ts +88 -0
  43. package/dist/blocks/values.d.ts +64 -0
  44. package/dist/browser.js +69 -0
  45. package/dist/browser.js.map +1 -0
  46. package/dist/canvas-runtime/action-bar.d.ts +19 -0
  47. package/dist/canvas-runtime/auto-scroll.d.ts +10 -0
  48. package/dist/canvas-runtime/block-drag.d.ts +29 -0
  49. package/dist/canvas-runtime/bridge.d.ts +6 -0
  50. package/dist/canvas-runtime/context.d.ts +53 -0
  51. package/dist/canvas-runtime/document-sync.d.ts +21 -0
  52. package/dist/canvas-runtime/drop-targets.d.ts +34 -0
  53. package/dist/canvas-runtime/embed-markers.d.ts +15 -0
  54. package/dist/canvas-runtime/file-guard.d.ts +12 -0
  55. package/dist/canvas-runtime/image-tools.d.ts +31 -0
  56. package/dist/canvas-runtime/keyboard.d.ts +18 -0
  57. package/dist/canvas-runtime/main.d.ts +1 -0
  58. package/dist/canvas-runtime/messages.d.ts +26 -0
  59. package/dist/canvas-runtime/morph.d.ts +21 -0
  60. package/dist/canvas-runtime/navigation.d.ts +29 -0
  61. package/dist/canvas-runtime/overlay.d.ts +15 -0
  62. package/dist/canvas-runtime/pointer-intents.d.ts +14 -0
  63. package/dist/canvas-runtime/selection-layer.d.ts +16 -0
  64. package/dist/canvas-runtime/shared/shortcuts.d.ts +27 -0
  65. package/dist/canvas-runtime/text-editor.d.ts +55 -0
  66. package/dist/canvas-runtime/text-session.d.ts +39 -0
  67. package/dist/canvas-runtime/variable-marks.d.ts +20 -0
  68. package/dist/canvas-runtime/viewport.d.ts +10 -0
  69. package/dist/codecs/css.d.ts +74 -0
  70. package/dist/codecs/html.d.ts +81 -0
  71. package/dist/compilation/browser-compiler.d.ts +14 -0
  72. package/dist/compilation/browser-worker.d.ts +1 -0
  73. package/dist/compilation/compile-lanes.d.ts +18 -0
  74. package/dist/compilation/generated-mjml.d.ts +25 -0
  75. package/dist/compilation/guard.d.ts +40 -0
  76. package/dist/compilation/node-compiler.d.ts +17 -0
  77. package/dist/compilation/node-worker.d.ts +1 -0
  78. package/dist/composition/block-factory.d.ts +84 -0
  79. package/dist/composition/browser.d.ts +48 -0
  80. package/dist/composition/factory.d.ts +48 -0
  81. package/dist/composition/server.d.ts +43 -0
  82. package/dist/core/any-document.d.ts +16 -0
  83. package/dist/core/block-document.d.ts +215 -0
  84. package/dist/core/budget.d.ts +32 -0
  85. package/dist/core/canvas-contract.d.ts +29 -0
  86. package/dist/core/canvas-layout.d.ts +66 -0
  87. package/dist/core/catalog.d.ts +35 -0
  88. package/dist/core/document-presentation.d.ts +21 -0
  89. package/dist/core/document.d.ts +99 -0
  90. package/dist/core/history.d.ts +26 -0
  91. package/dist/core/html-content-model.d.ts +32 -0
  92. package/dist/core/html-escape.d.ts +2 -0
  93. package/dist/core/rich-text-format.d.ts +14 -0
  94. package/dist/core/rich-text-markup.d.ts +28 -0
  95. package/dist/core/section-layout.d.ts +83 -0
  96. package/dist/generated-mjml-CtzE-f3v.js +1235 -0
  97. package/dist/generated-mjml-CtzE-f3v.js.map +1 -0
  98. package/dist/identity-CJHb6l9N.js +13759 -0
  99. package/dist/identity-CJHb6l9N.js.map +1 -0
  100. package/dist/renderers/canvas-bridge.d.ts +75 -0
  101. package/dist/renderers/canvas-icons.d.ts +1 -0
  102. package/dist/renderers/canvas-runtime.generated.d.ts +3 -0
  103. package/dist/renderers/element-source.d.ts +13 -0
  104. package/dist/renderers/email-renderer.d.ts +14 -0
  105. package/dist/renderers/marked-preview.d.ts +34 -0
  106. package/dist/renderers/markup-tree.d.ts +36 -0
  107. package/dist/renderers/page-renderer.d.ts +15 -0
  108. package/dist/renderers/preview-document.d.ts +39 -0
  109. package/dist/renderers/preview-frame.d.ts +102 -0
  110. package/dist/renderers/section-scaffold.d.ts +16 -0
  111. package/dist/renderers/selection-preview.d.ts +47 -0
  112. package/dist/rich-text/command-executor.d.ts +26 -0
  113. package/dist/rich-text/commands.d.ts +36 -0
  114. package/dist/rich-text/document-builder.d.ts +52 -0
  115. package/dist/rich-text/formatting.d.ts +17 -0
  116. package/dist/rich-text/projection-export.d.ts +17 -0
  117. package/dist/rich-text/projection-rules.d.ts +13 -0
  118. package/dist/rich-text/schema.d.ts +50 -0
  119. package/dist/rich-text/whitespace.d.ts +7 -0
  120. package/dist/security/bounded-parser.d.ts +18 -0
  121. package/dist/security/conditional-comment.d.ts +30 -0
  122. package/dist/security/content-inventory.d.ts +78 -0
  123. package/dist/security/email-sanitizer.d.ts +36 -0
  124. package/dist/security/identity.d.ts +6 -0
  125. package/dist/security/markup-rules.d.ts +31 -0
  126. package/dist/security/policy.d.ts +61 -0
  127. package/dist/security/preview-message.d.ts +317 -0
  128. package/dist/security/rich-text-projection.d.ts +19 -0
  129. package/dist/security/sha256.d.ts +6 -0
  130. package/dist/security/source-markup.d.ts +53 -0
  131. package/dist/security/text-presentation.d.ts +19 -0
  132. package/dist/security/url-policy.d.ts +23 -0
  133. package/dist/server-worker.js +17 -0
  134. package/dist/server-worker.js.map +1 -0
  135. package/dist/server.js +79 -0
  136. package/dist/server.js.map +1 -0
  137. package/dist/templates/blank-email.d.ts +6 -0
  138. package/dist/templates/blocks/catalog.d.ts +31 -0
  139. package/dist/templates/catalog.d.ts +31 -0
  140. package/dist/visual-editor.css +2 -0
  141. package/dist/vue/block-controller.d.ts +106 -0
  142. package/dist/vue/block-workbench.d.ts +70 -0
  143. package/dist/vue/canvas/canvas-theme.d.ts +8 -0
  144. package/dist/vue/canvas/file-drop.d.ts +38 -0
  145. package/dist/vue/canvas/frame-window.d.ts +26 -0
  146. package/dist/vue/canvas/inline-text.d.ts +98 -0
  147. package/dist/vue/canvas/palette-drag.d.ts +55 -0
  148. package/dist/vue/canvas/piece-requests.d.ts +48 -0
  149. package/dist/vue/canvas/strip-reserve.d.ts +14 -0
  150. package/dist/vue/canvas-content-label.d.ts +5 -0
  151. package/dist/vue/components/BlockVisualEditor.vue.d.ts +44 -0
  152. package/dist/vue/components/CanvasSurface.vue.d.ts +11 -0
  153. package/dist/vue/components/CodeEditor.vue.d.ts +22 -0
  154. package/dist/vue/components/EditorBlockMenus.vue.d.ts +3 -0
  155. package/dist/vue/components/EditorBlockPalette.vue.d.ts +3 -0
  156. package/dist/vue/components/EditorDiagnostics.vue.d.ts +3 -0
  157. package/dist/vue/components/EditorDialogs.vue.d.ts +16 -0
  158. package/dist/vue/components/EditorDocumentMetadata.vue.d.ts +3 -0
  159. package/dist/vue/components/EditorDocumentStyles.vue.d.ts +15 -0
  160. package/dist/vue/components/EditorImageSizeControls.vue.d.ts +23 -0
  161. package/dist/vue/components/EditorLayoutControls.vue.d.ts +16 -0
  162. package/dist/vue/components/EditorLeftPanel.vue.d.ts +3 -0
  163. package/dist/vue/components/EditorNoticeIndicator.vue.d.ts +3 -0
  164. package/dist/vue/components/EditorPreview.vue.d.ts +8 -0
  165. package/dist/vue/components/EditorProperties.vue.d.ts +14 -0
  166. package/dist/vue/components/EditorRichTextControls.vue.d.ts +25 -0
  167. package/dist/vue/components/EditorSelectionPath.vue.d.ts +11 -0
  168. package/dist/vue/components/EditorShortcutHelp.vue.d.ts +3 -0
  169. package/dist/vue/components/EditorSourcePane.vue.d.ts +3 -0
  170. package/dist/vue/components/EditorStructureTree.vue.d.ts +3 -0
  171. package/dist/vue/components/EditorTemplateGallery.vue.d.ts +15 -0
  172. package/dist/vue/components/EditorTopBar.vue.d.ts +33 -0
  173. package/dist/vue/components/RichTextEditor.vue.d.ts +47 -0
  174. package/dist/vue/components/SelectionPreviewFrame.vue.d.ts +212 -0
  175. package/dist/vue/components/VisualEditor.vue.d.ts +53 -0
  176. package/dist/vue/components/blocks/BlockCanvas.vue.d.ts +15 -0
  177. package/dist/vue/components/blocks/BlockFieldControl.vue.d.ts +39 -0
  178. package/dist/vue/components/blocks/BlockGlobalStyles.vue.d.ts +3 -0
  179. package/dist/vue/components/blocks/BlockPalette.vue.d.ts +6 -0
  180. package/dist/vue/components/blocks/BlockProperties.vue.d.ts +5 -0
  181. package/dist/vue/components/blocks/BlockReview.vue.d.ts +5 -0
  182. package/dist/vue/components/properties/EditorPropertyAdvanced.vue.d.ts +8 -0
  183. package/dist/vue/components/properties/EditorPropertyContent.vue.d.ts +13 -0
  184. package/dist/vue/components/properties/EditorPropertyStyle.vue.d.ts +8 -0
  185. package/dist/vue/components/ui/EditorAnchoredMenu.vue.d.ts +36 -0
  186. package/dist/vue/components/ui/EditorBadge.vue.d.ts +18 -0
  187. package/dist/vue/components/ui/EditorButton.vue.d.ts +28 -0
  188. package/dist/vue/components/ui/EditorCheckbox.vue.d.ts +13 -0
  189. package/dist/vue/components/ui/EditorColorInput.vue.d.ts +27 -0
  190. package/dist/vue/components/ui/EditorConfirmDialog.vue.d.ts +35 -0
  191. package/dist/vue/components/ui/EditorContextMenu.vue.d.ts +27 -0
  192. package/dist/vue/components/ui/EditorContextPopover.vue.d.ts +33 -0
  193. package/dist/vue/components/ui/EditorEmpty.vue.d.ts +8 -0
  194. package/dist/vue/components/ui/EditorField.vue.d.ts +24 -0
  195. package/dist/vue/components/ui/EditorGroup.vue.d.ts +16 -0
  196. package/dist/vue/components/ui/EditorIcon.vue.d.ts +6 -0
  197. package/dist/vue/components/ui/EditorIconButton.vue.d.ts +19 -0
  198. package/dist/vue/components/ui/EditorInput.vue.d.ts +41 -0
  199. package/dist/vue/components/ui/EditorKeys.vue.d.ts +6 -0
  200. package/dist/vue/components/ui/EditorMeasurement.vue.d.ts +34 -0
  201. package/dist/vue/components/ui/EditorMenu.vue.d.ts +56 -0
  202. package/dist/vue/components/ui/EditorNotice.vue.d.ts +30 -0
  203. package/dist/vue/components/ui/EditorPropertyGroup.vue.d.ts +22 -0
  204. package/dist/vue/components/ui/EditorRecoveryDialog.vue.d.ts +23 -0
  205. package/dist/vue/components/ui/EditorScrollArea.vue.d.ts +13 -0
  206. package/dist/vue/components/ui/EditorSelect.vue.d.ts +25 -0
  207. package/dist/vue/components/ui/EditorSeparator.vue.d.ts +8 -0
  208. package/dist/vue/components/ui/EditorSidePanel.vue.d.ts +26 -0
  209. package/dist/vue/components/ui/EditorSwitch.vue.d.ts +12 -0
  210. package/dist/vue/components/ui/EditorTabs.vue.d.ts +28 -0
  211. package/dist/vue/components/ui/EditorTemplatePreview.vue.d.ts +9 -0
  212. package/dist/vue/components/ui/EditorTextToolbar.vue.d.ts +16 -0
  213. package/dist/vue/components/ui/EditorTree.vue.d.ts +37 -0
  214. package/dist/vue/components/ui/EditorUiProvider.vue.d.ts +13 -0
  215. package/dist/vue/components/ui/EditorVariablePicker.vue.d.ts +20 -0
  216. package/dist/vue/components/ui/color-style-value.d.ts +9 -0
  217. package/dist/vue/components/ui/composition-dismissal.d.ts +1 -0
  218. package/dist/vue/components/ui/editor-dialog-focus.d.ts +6 -0
  219. package/dist/vue/components/ui/numeric-style-value.d.ts +15 -0
  220. package/dist/vue/controller.d.ts +115 -0
  221. package/dist/vue/font-options.d.ts +6 -0
  222. package/dist/vue/icon-data.d.ts +233 -0
  223. package/dist/vue/icons.d.ts +5 -0
  224. package/dist/vue/locale.d.ts +7 -0
  225. package/dist/vue/outline.d.ts +26 -0
  226. package/dist/vue/projection-key.d.ts +7 -0
  227. package/dist/vue/properties/selection-properties.d.ts +40 -0
  228. package/dist/vue/properties/style-fields.d.ts +30 -0
  229. package/dist/vue/public.d.ts +14 -0
  230. package/dist/vue/recovery.d.ts +30 -0
  231. package/dist/vue/responsive-panel.d.ts +1 -0
  232. package/dist/vue/rich-text-commands.d.ts +29 -0
  233. package/dist/vue/services/block-command-definitions.d.ts +14 -0
  234. package/dist/vue/services/block-commands.d.ts +114 -0
  235. package/dist/vue/services/block-menu.d.ts +12 -0
  236. package/dist/vue/services/block-palette.d.ts +21 -0
  237. package/dist/vue/services/block-presentation.d.ts +16 -0
  238. package/dist/vue/services/diagnostic-groups.d.ts +25 -0
  239. package/dist/vue/services/image-requests.d.ts +80 -0
  240. package/dist/vue/services/live-change.d.ts +26 -0
  241. package/dist/vue/services/property-commands.d.ts +28 -0
  242. package/dist/vue/services/saved-blocks.d.ts +32 -0
  243. package/dist/vue/services/selection-path.d.ts +20 -0
  244. package/dist/vue/services/shortcuts.d.ts +39 -0
  245. package/dist/vue/services/structure-tree.d.ts +38 -0
  246. package/dist/vue/services/template-application.d.ts +33 -0
  247. package/dist/vue/services/tree-drag.d.ts +28 -0
  248. package/dist/vue/session/blocks.d.ts +44 -0
  249. package/dist/vue/session/guard.d.ts +13 -0
  250. package/dist/vue/session/structure.d.ts +36 -0
  251. package/dist/vue/session/text.d.ts +23 -0
  252. package/dist/vue/session/transfer.d.ts +23 -0
  253. package/dist/vue/theme.d.ts +20 -0
  254. package/dist/vue/variables.d.ts +21 -0
  255. package/dist/vue/workbench.d.ts +100 -0
  256. package/dist/vue.js +71418 -0
  257. package/dist/vue.js.map +1 -0
  258. package/package.json +125 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-controller-RjYGvOcn.js","names":["v.pipe","v.number","v.finite","v.minValue","v.maxValue","v.strictObject","v.exactOptional","v.boolean","v.parse","v.safeParse","v.picklist","v.string","v.maxLength","v.strictObject","v.pipe","v.array","v.number","v.integer","v.minValue","v.maxValue","v.minLength","v.maxLength","v.picklist","v.exactOptional","v.safeParse","v.parse","parse","v.exactOptional","v.pipe","v.string","v.maxLength","v.check","v.strictObject","v.number","v.finite","v.minValue","v.maxValue","v.trim","v.minLength","v.parse","parse","v.pipe","v.string","v.maxLength","v.strictObject","v.literal","v.unknown","v.exactOptional","v.minLength","v.boolean","v.number","v.integer","v.minValue","v.maxValue","v.safeParse","integer","pipe","DocumentBudget","check","boolean","minLength","string","minValue","unknown","trim","number","literal","maxLength","exactOptional","maxValue","parse","array","safeParse","strictObject","parse$1","defaultTreeAdapter","BlockCatalog","TEXT_FONT_FAMILIES","finite","NS","BoundedHtmlParser","CssDocumentCodec","UrlPolicy","SecureIdentifier","serialize","DocumentValidationError","EditorDocument","picklist","IMAGE_SIZE_LIMITS","DOCUMENT_STYLE_PROPERTIES","dimension","imageSizeSchema","DocumentPresentationPolicy","input","result","property","value","ContentService","codec","policy","styles","source","kind","previous","document","css","properties","line","declarations","incoming","existing","candidate","admitted","nodes","diagnostics","diagnostic","DocumentPresentationService","content","node","id","width","height","declaredRatio","settings","current","attrs","style","all","elements","root","values","originalProperties","context","parts","replace","replacement","infrastructure","unrendered","CanvasLayout","catalog","regions","walk","region","parentId","index","depth","containers","composite","structuralRow","locations","ids","location","sourceId","target","targetId","placement","projection","placements","selected","structural","parent","hasSibling","selectedId","body","roots","visible","destination","structuralTarget","tag","rowContent","descriptor","editable","rowCells","child","container","cells","row","childElements","candidates","visit","children","firstCell","table","RICH_TEXT_FORMATS","RICH_TEXT_ORIGIN_ATTRIBUTE","RICH_TEXT_REMOVED_ATTRIBUTE","formats","resets","linkAttributes","RichTextFormatPolicy","format","replacementTag","originalTag","SECTION_LAYOUT_LIMITS","SECTION_STACKING","SECTION_BREAKPOINTS","SECTION_LAYOUT_PRESETS","SectionLayoutSettingsSchema","SectionLayoutPatchSchema","SectionLayoutPolicy","name","path","section","columns","column","tbody","tr","td","rawRatios","parsed","valid","patch","RESERVED_ATTRIBUTE_PREFIX","NODE_ATTRIBUTE","TEXT_ORIGIN_ATTRIBUTE","EDIT_NODE_ATTRIBUTE","SELECTED_ATTRIBUTE","isReservedAttribute","CANVAS_BLOCK_ACTIONS","CANVAS_IMAGE_WIDTH_LIMIT","THEME_COLOR","isThemeColor","INFRASTRUCTURE","isInfrastructureTag","documentParts","head","frameset","markupChildren","stripReservedAttributes","stack","a","attribute","canonicalElements","canonical","entry","alignElements","island","expected","visitor","position","inline","blocks","RichTextProjectionRules","allowed","attributeNames","ElementSourceMap","span","html","found","element","K","sha256Base64","message","text","data","view","state","w","offset","i","b","s0","s1","c","d","e","f","g","h","t1","t2","binary","word","CANVAS_ICONS","CANVAS_RUNTIME_BUNDLE","CanvasBridgeScript","configuration","VARIABLE_KEY","previewVariables","entries","key","label","framePreview","renderer","selectionLabel","options","themeColor","previewThemeSchema","SELECTION_STYLE","PREVIEW_FRAMESET","normalizePreviewLanguage","previewMetadataSchema","PreviewFrameDocument","assembler","metadata","hostLanguage","labels","theme","existingLanguage","existingTitle","title","fallbackTitle","opened","csp","scriptSource","preview","names","variables","code","#bridge","bridge","output","MarkedPreviewRenderer","frame","identifiers","known","drawn","edits","edit","inside","owners","SelectionPreviewRenderer","#catalog","structure","#layout","#frame","#identifiers","#sources","originIds","origins","#rules","editIds","regionIds","escapeHtml","DocumentOutline","urls","capabilities","layout","rules","attributes","hasBlocks","normalized","inlineContent","BlockEditing","session","templates","guard","end","initial","type","movement","action","motion","siblings","left","right","neighbour","direction","parents","seen","owner","level","above","beside","where","containerId","list","edge","nodeId","reference","asset","MutationGuard","StructureQueries","outline","cached","#entries","#selected","#movement","targets","#insertion","TextEditing","textNode","boundedHtml","recoverySchema","DocumentRecovery","serialized","pendingRichText","budget","DocumentTransfer","filename","file","limit","recovery","pending","recovered","initialHtml","EditorController","shared","listener","fallback","template","field","mode","href","RICH_TEXT_LIMITS","RichTextProjection","fragment","error","count","adjusted","render","textStyle","COMPILE_SUPERSEDED","BUSY_RETRIES","BUSY_DELAY_MS","CompileLanes","compiler","#queuePreview","mjml","#queueFinal","#previewPending","#drainPreview","next","#previewRunning","#withRetry","job","#finalTail","attempt","run","keepTrying","resolve","GMAIL_CLIP_BYTES","GMAIL_NEAR_CLIP_BYTES","ANCHOR","HREF","BlockChecker","checks","block","finalHtml","bytes","kilobytes","props","blockId","markup","match","STRUCTURAL","BlockEditorController","#parts","definition","device","wrapped","saved","choice","group","lang","templateId","#textOwner","registry","parentType","last"],"sources":["../src/core/document-presentation.ts","../src/application/content-service.ts","../src/application/document-presentation.ts","../src/core/canvas-layout.ts","../src/core/rich-text-format.ts","../src/core/section-layout.ts","../src/core/canvas-contract.ts","../src/renderers/markup-tree.ts","../src/rich-text/projection-rules.ts","../src/renderers/element-source.ts","../src/security/sha256.ts","../src/renderers/canvas-icons.ts","../src/renderers/canvas-runtime.generated.ts","../src/renderers/canvas-bridge.ts","../src/renderers/preview-frame.ts","../src/renderers/marked-preview.ts","../src/renderers/selection-preview.ts","../src/core/html-escape.ts","../src/vue/outline.ts","../src/vue/session/blocks.ts","../src/vue/session/guard.ts","../src/vue/session/structure.ts","../src/vue/session/text.ts","../src/vue/recovery.ts","../src/vue/session/transfer.ts","../src/vue/controller.ts","../src/security/rich-text-projection.ts","../src/compilation/compile-lanes.ts","../src/blocks/block-checks.ts","../src/vue/block-controller.ts"],"sourcesContent":["import * as v from 'valibot';\nexport const IMAGE_SIZE_LIMITS = Object.freeze({ min: 1, max: 10000 });\nexport const DOCUMENT_STYLE_PROPERTIES = [\n 'font-family',\n 'font-size',\n 'line-height',\n 'color',\n 'background-color',\n] as const;\nexport type DocumentStyleProperty = (typeof DOCUMENT_STYLE_PROPERTIES)[number];\nconst dimension = v.pipe(\n v.number(),\n v.finite(),\n v.minValue(IMAGE_SIZE_LIMITS.min),\n v.maxValue(IMAGE_SIZE_LIMITS.max),\n);\nconst imageSizeSchema = v.strictObject({\n width: dimension,\n height: v.exactOptional(dimension),\n preserveRatio: v.exactOptional(v.boolean()),\n});\nexport type ImageSizeSettings = v.InferOutput<typeof imageSizeSchema>;\n\n/** Canonical bounded presentation settings, independent of adapters. */\nexport class DocumentPresentationPolicy {\n image(input: unknown): ImageSizeSettings {\n return v.parse(imageSizeSchema, input);\n }\n dimension(input: unknown): number {\n return v.parse(dimension, input);\n }\n safeDimension(input: unknown): number | undefined {\n const result = v.safeParse(dimension, input);\n return result.success ? result.output : undefined;\n }\n style(property: unknown, value: unknown): void {\n v.parse(v.picklist(DOCUMENT_STYLE_PROPERTIES), property);\n v.parse(v.pipe(v.string(), v.maxLength(256)), value);\n }\n}\n","import { EditorDocument } from '../core/document';\nimport type { RichTextDecorationLine } from '../core/rich-text-format';\nimport type {\n Diagnostic,\n DocumentKind,\n DocumentNode,\n EditorDocumentData,\n ImportResult,\n SourceInput,\n} from '../core/document';\n\nexport interface CodecPort {\n import(source: SourceInput, kind: DocumentKind, previous?: EditorDocumentData): ImportResult;\n export(document: EditorDocumentData | EditorDocument): SourceInput;\n /** Auxiliary parse which must not replace the preserved source of an edited document. */\n inspect?(source: SourceInput, kind: DocumentKind): ImportResult;\n}\n\nexport interface PolicyPort {\n validate(document: EditorDocumentData | EditorDocument): readonly Diagnostic[];\n assertSafe(document: EditorDocumentData | EditorDocument): void;\n /** Whether editor commands may write these nodes; stricter than what an import keeps. */\n writable?(nodes: readonly DocumentNode[]): boolean;\n /** Applies the removals of the document kind and says, grouped, what was removed. */\n sanitize?(document: EditorDocumentData | EditorDocument): AdmittedDocumentData;\n}\n\nexport interface AdmittedDocumentData {\n readonly document: EditorDocumentData;\n readonly diagnostics: readonly Diagnostic[];\n}\n\nexport interface AdmittedDocument {\n readonly document: EditorDocument;\n readonly diagnostics: readonly Diagnostic[];\n}\n\nexport interface InlineStylePort {\n setDeclaration(css: string, property: string, value: string): string;\n readDeclarations?(css: string): Readonly<Record<string, string>>;\n removeDeclarations?(css: string, properties: readonly string[]): string;\n prependDefaults(existing: string, incoming: readonly string[]): string;\n richTextStyles?(css: string): Readonly<Record<string, string>> | undefined;\n removeDecoration?(css: string, line: RichTextDecorationLine): string;\n hasDecorationRules?(css: string): boolean;\n}\n\nexport class ContentService {\n constructor(\n private readonly codec: CodecPort,\n private readonly policy: PolicyPort,\n private readonly styles: InlineStylePort,\n ) {}\n\n import(source: SourceInput, kind: DocumentKind, previous?: EditorDocumentData): ImportResult {\n return this.codec.import(source, kind, previous);\n }\n\n /** Imports a snippet or projection which never becomes the session document by itself. */\n inspect(source: SourceInput, kind: DocumentKind): ImportResult {\n return this.codec.inspect ? this.codec.inspect(source, kind) : this.codec.import(source, kind);\n }\n\n validate(document: EditorDocumentData | EditorDocument): readonly Diagnostic[] {\n return this.policy.validate(document);\n }\n\n setStyle(css: string, property: string, value: string): string {\n return this.styles.setDeclaration(css, property, value);\n }\n\n withoutStyles(css: string, properties: readonly string[]): string {\n if (!this.styles.removeDeclarations) throw new Error('UNSUPPORTED_LAYOUT_STYLE');\n return this.styles.removeDeclarations(css, properties);\n }\n\n inlineDeclarations(css: string): Readonly<Record<string, string>> {\n if (!this.styles.readDeclarations) throw new Error('UNSUPPORTED_STYLE_INSPECTION');\n return this.styles.readDeclarations(css);\n }\n\n richTextStyles(css: string): Readonly<Record<string, string>> | undefined {\n return this.styles.richTextStyles?.(css);\n }\n\n removeDecoration(css: string, line: RichTextDecorationLine): string {\n if (!this.styles.removeDecoration) throw new Error('Unsupported text decoration change');\n return this.styles.removeDecoration(css, line);\n }\n\n hasDecorationRules(css: string): boolean {\n if (!this.styles.hasDecorationRules) throw new Error('Unsupported text decoration context');\n return this.styles.hasDecorationRules(css);\n }\n\n mergeRichTextStyle(existing: string, incoming: string): string {\n const declarations = this.richTextStyles(incoming);\n if (!declarations) throw new Error('Unsafe rich text style');\n return Object.entries(declarations).reduce(\n (css, [property, value]) => this.setStyle(css, property, value),\n existing,\n );\n }\n\n addDefaultStyles(css: string, incoming: readonly string[]): string {\n return this.styles.prependDefaults(css, incoming);\n }\n\n /**\n * Entry of a document which did not come from this session: host JSON, a file, a backup.\n * It follows the same rules as imported source. An e-mail which still carries scripts,\n * embeds, handlers or code URLs has them removed and reported, never silently accepted.\n */\n admit(input: unknown): AdmittedDocument {\n const candidate = EditorDocument.from(input);\n const admitted = this.policy.sanitize?.(candidate);\n if (admitted?.diagnostics.length)\n return { document: this.document(admitted.document), diagnostics: admitted.diagnostics };\n this.policy.assertSafe(candidate);\n return { document: candidate, diagnostics: [] };\n }\n\n /**\n * Markup produced by a command or returned by the editing frame is held to the strict\n * rule, whatever the document kind keeps from an import.\n */\n assertWritable(nodes: readonly DocumentNode[]): void {\n if (this.policy.writable && !this.policy.writable(nodes))\n throw new Error('Unsafe authored markup');\n }\n\n document(input: unknown): EditorDocument {\n const document = EditorDocument.from(input);\n this.policy.assertSafe(document);\n return document;\n }\n\n export(document: EditorDocumentData | EditorDocument): SourceInput {\n this.policy.assertSafe(document);\n return this.codec.export(document);\n }\n\n /**\n * Source and notices of a document about to become the current one, validated once here\n * (the codec asserts the policy again and verifies its output by reparse).\n */\n render(document: EditorDocument): {\n readonly source: SourceInput;\n readonly diagnostics: readonly Diagnostic[];\n } {\n const diagnostics = this.policy.validate(document);\n if (diagnostics.some((diagnostic) => diagnostic.severity === 'error'))\n throw new Error('UNSAFE_DOCUMENT');\n return { source: this.codec.export(document), diagnostics };\n }\n}\n","import {\n DocumentPresentationPolicy,\n DOCUMENT_STYLE_PROPERTIES,\n} from '../core/document-presentation';\nimport type { DocumentStyleProperty, ImageSizeSettings } from '../core/document-presentation';\nimport { EditorDocument } from '../core/document';\nimport type { DocumentNode, EditorDocumentData } from '../core/document';\nimport { ContentService } from './content-service';\n\nexport { IMAGE_SIZE_LIMITS, DOCUMENT_STYLE_PROPERTIES } from '../core/document-presentation';\nexport type { DocumentStyleProperty, ImageSizeSettings } from '../core/document-presentation';\n\nexport interface ImageSizeContext {\n readonly id: string;\n readonly width?: number;\n readonly height?: number;\n readonly ratio?: number;\n}\nexport interface DocumentStyleContext {\n readonly id: string;\n readonly properties: typeof DOCUMENT_STYLE_PROPERTIES;\n readonly originalProperties: readonly DocumentStyleProperty[];\n readonly values: Readonly<Partial<Record<DocumentStyleProperty, string>>>;\n}\n\n/** Presentation changes are one validated document transaction, never DOM mutations. */\nexport class DocumentPresentationService {\n private readonly settings = new DocumentPresentationPolicy();\n constructor(private readonly content: ContentService) {}\n\n image(document: EditorDocumentData, id: string): ImageSizeContext | undefined {\n const node = this.find(document.nodes, id);\n if (node?.tag !== 'img') return undefined;\n const styles = this.content.inlineDeclarations(node.attrs?.style ?? '');\n const width =\n this.pixels(styles.width) ?? (styles.width ? undefined : this.number(node.attrs?.width));\n const height =\n this.pixels(styles.height) ?? (styles.height ? undefined : this.number(node.attrs?.height));\n const declaredRatio =\n styles.height === 'auto' || (!styles.height && !node.attrs?.height)\n ? this.ratio(styles['aspect-ratio'])\n : undefined;\n return {\n id,\n ...(width === undefined ? {} : { width }),\n ...(height === undefined ? {} : { height }),\n ...(declaredRatio\n ? { ratio: declaredRatio }\n : width && height\n ? { ratio: width / height }\n : {}),\n };\n }\n\n resize(document: EditorDocumentData, id: string, input: ImageSizeSettings): EditorDocument {\n const settings = this.settings.image(input);\n const current = this.image(document, id);\n const node = this.find(document.nodes, id);\n if (!current || !node) throw new Error('UNSUPPORTED_IMAGE_SIZE');\n if (settings.preserveRatio && !current.ratio) throw new Error('UNKNOWN_IMAGE_RATIO');\n if (settings.preserveRatio && settings.height !== undefined)\n throw new Error('AMBIGUOUS_IMAGE_SIZE');\n const height = settings.preserveRatio\n ? Math.round((settings.width / current.ratio!) * 1000) / 1000\n : settings.height;\n if (height !== undefined) this.settings.dimension(height);\n const attrs: Record<string, string> = { ...node.attrs, width: String(settings.width) };\n let style = this.content.setStyle(attrs.style ?? '', 'width', `${settings.width}px`);\n style = this.content.setStyle(style, 'max-width', '100%');\n style = this.content.setStyle(\n style,\n 'height',\n settings.preserveRatio || height === undefined ? 'auto' : `${height}px`,\n );\n style = settings.preserveRatio\n ? this.content.setStyle(style, 'aspect-ratio', `${settings.width}/${height}`)\n : this.content.withoutStyles(style, ['aspect-ratio']);\n attrs.style = style;\n if (height === undefined) delete attrs.height;\n else attrs.height = String(height);\n return this.change(document, id, { ...node, attrs });\n }\n\n styles(document: EditorDocumentData): DocumentStyleContext | undefined {\n const all = this.all(document.nodes);\n const elements = document.nodes.filter((node) => node.type === 'element');\n const root =\n all.find((node) => node.tag === 'body') ??\n (elements.length === 1 &&\n ['main', 'div', 'section', 'article'].includes(elements[0]?.tag ?? '')\n ? elements[0]\n : undefined);\n if (!root) return undefined;\n const declarations = this.content.inlineDeclarations(root.attrs?.style ?? '');\n const values: Partial<Record<DocumentStyleProperty, string>> = {};\n for (const property of DOCUMENT_STYLE_PROPERTIES) {\n const value = declarations[property];\n if (value && this.content.richTextStyles(`${property}:${value}`)) values[property] = value;\n }\n const originalProperties = DOCUMENT_STYLE_PROPERTIES.filter(\n (property) => declarations[property] && !values[property],\n );\n return { id: root.id, properties: DOCUMENT_STYLE_PROPERTIES, values, originalProperties };\n }\n\n style(\n document: EditorDocumentData,\n property: DocumentStyleProperty,\n value: string,\n ): EditorDocument {\n this.settings.style(property, value);\n const context = this.styles(document);\n const root = context && this.find(document.nodes, context.id);\n if (!root) throw new Error('UNSUPPORTED_DOCUMENT_ROOT');\n if (value && !this.content.richTextStyles(`${property}:${value}`))\n throw new Error('UNSAFE_DOCUMENT_STYLE');\n const style = value\n ? this.content.setStyle(root.attrs?.style ?? '', property, value)\n : this.content.withoutStyles(root.attrs?.style ?? '', [property]);\n return this.change(document, root.id, { ...root, attrs: { ...root.attrs, style } });\n }\n\n private ratio(value: string | undefined): number | undefined {\n const parts = value && /^([0-9]+(?:\\.[0-9]+)?)\\s*\\/\\s*([0-9]+(?:\\.[0-9]+)?)$/.exec(value);\n const width = parts ? this.number(parts[1]) : undefined;\n const height = parts ? this.number(parts[2]) : undefined;\n return width && height ? width / height : undefined;\n }\n\n private pixels(value: string | undefined): number | undefined {\n return value && /^\\d+(?:\\.\\d+)?px$/.test(value) ? this.number(value.slice(0, -2)) : undefined;\n }\n private number(value: string | undefined): number | undefined {\n if (!value || !/^\\d+(?:\\.\\d+)?$/.test(value)) return undefined;\n return this.settings.safeDimension(Number(value));\n }\n private find(nodes: readonly DocumentNode[], id: string): DocumentNode | undefined {\n return this.all(nodes).find((node) => node.id === id);\n }\n private all(nodes: readonly DocumentNode[]): readonly DocumentNode[] {\n return nodes.flatMap((node) => [node, ...this.all(node.children ?? [])]);\n }\n private change(\n document: EditorDocumentData,\n id: string,\n replacement: DocumentNode,\n ): EditorDocument {\n const replace = (nodes: readonly DocumentNode[]): readonly DocumentNode[] =>\n nodes.map((node) =>\n node.id === id\n ? replacement\n : node.children\n ? { ...node, children: replace(node.children) }\n : node,\n );\n return this.content.document(\n EditorDocument.from(document)\n .withChanges({ nodes: replace(document.nodes) })\n .snapshot(),\n );\n }\n}\n","import type { DocumentNode, EditorDocumentData } from './document';\nimport { BlockCatalog } from './catalog';\nimport type { BlockType } from './catalog';\n\nexport type CanvasPlacement = 'before' | 'after' | 'inside';\nexport interface CanvasTarget {\n readonly parentId?: string;\n /** Index after removing the moving source. Insertion indices have no removal adjustment. */\n readonly index: number;\n}\nexport interface CanvasMotion extends CanvasTarget {\n readonly sourceId: string;\n}\nexport interface CanvasMovementTarget {\n readonly targetId: string;\n readonly placements: readonly CanvasPlacement[];\n}\nexport interface CanvasRegion {\n readonly id: string;\n readonly parentId: string | null;\n readonly index: number;\n readonly depth: number;\n readonly kind: BlockType | 'container' | 'native';\n readonly labelKey?: string;\n readonly node: DocumentNode;\n readonly editable: boolean;\n readonly container: boolean;\n}\ninterface NodeLocation {\n readonly node: DocumentNode;\n readonly parentId: string | null;\n readonly index: number;\n}\n\ninterface MovementProjection {\n readonly locations: ReadonlyMap<string, NodeLocation>;\n readonly structural: ReadonlyMap<string, CanvasRegion>;\n readonly selection: ReadonlyMap<string, CanvasRegion>;\n}\n\nconst infrastructure = new Set([\n 'html',\n 'body',\n 'head',\n 'style',\n 'script',\n 'title',\n 'meta',\n 'link',\n]);\n\n/**\n * Elements which draw nothing in the canvas: they are part of the document, written back as\n * they came, but are neither selected nor moved as content.\n */\nconst unrendered = new Set([\n 'head',\n 'style',\n 'script',\n 'title',\n 'meta',\n 'link',\n 'base',\n 'noscript',\n 'template',\n 'noembed',\n 'noframes',\n]);\n\n/** Logical canvas regions and valid destinations derived from the canonical HTML tree. */\nexport class CanvasLayout {\n constructor(private readonly catalog = new BlockCatalog()) {}\n\n regions(document: EditorDocumentData): readonly CanvasRegion[] {\n const regions: CanvasRegion[] = [];\n const walk = (nodes: readonly DocumentNode[], parentId: string | null, depth: number): void => {\n nodes.forEach((node, index) => {\n if (node.type !== 'element' || unrendered.has(node.tag ?? '')) return;\n const region = this.region(node, parentId, index, depth);\n if (region) regions.push(region);\n // A text/media row is an atomic HTML unit. Its descendants resolve to that region.\n if (region && !region.container) return;\n walk(node.children ?? [], node.id, region ? depth + 1 : depth);\n });\n };\n walk(document.nodes, null, 0);\n return structuredClone(regions);\n }\n\n /** Content selection is independent of the HTML unit used by structural commands. */\n selectionRegions(document: EditorDocumentData): readonly CanvasRegion[] {\n const regions: CanvasRegion[] = [];\n const containers = new Set(\n this.regions(document)\n .filter((region) => region.container)\n .map((region) => region.id),\n );\n const walk = (nodes: readonly DocumentNode[], parentId: string | null, depth: number): void => {\n nodes.forEach((node, index) => {\n if (node.type !== 'element' || unrendered.has(node.tag ?? '')) return;\n const region = this.region(node, parentId, index, depth);\n const composite = this.hasRichTextBlocks(node);\n const structuralRow = node.tag === 'tr';\n if (region) {\n regions.push({\n ...region,\n ...(composite || (structuralRow && !region.container)\n ? { kind: 'container' as const, editable: false }\n : {}),\n container: region.container && containers.has(region.id),\n });\n }\n // Inline marks belong to their text block; composed content retains its own targets.\n if (\n region &&\n !region.container &&\n !composite &&\n !structuralRow &&\n !this.isContentWrapper(node, region.editable)\n )\n return;\n walk(node.children ?? [], node.id, region ? depth + 1 : depth);\n });\n };\n walk(document.nodes, null, 0);\n return structuredClone(regions);\n }\n\n /**\n * The closest selection region above each selection region, in document order; `undefined`\n * for a region at the top. Plain markup between two regions is skipped, as in the piece.\n */\n selectionParents(document: EditorDocumentData): ReadonlyMap<string, string | undefined> {\n const locations = this.locations(document);\n const regions = this.selectionRegions(document);\n const ids = new Set(regions.map((region) => region.id));\n const result = new Map<string, string | undefined>();\n for (const region of regions) {\n let parentId = region.parentId;\n while (parentId && !ids.has(parentId)) parentId = locations.get(parentId)?.parentId ?? null;\n result.set(region.id, parentId ?? undefined);\n }\n return result;\n }\n\n resolveSelection(document: EditorDocumentData, id: string): CanvasRegion | undefined {\n const locations = this.locations(document);\n const regions = new Map(this.selectionRegions(document).map((region) => [region.id, region]));\n let location = locations.get(id);\n while (location) {\n const region = regions.get(location.node.id);\n if (region) return region;\n location = location.parentId ? locations.get(location.parentId) : undefined;\n }\n return undefined;\n }\n\n resolve(document: EditorDocumentData, id: string): CanvasRegion | undefined {\n const locations = this.locations(document);\n const regions = new Map(this.regions(document).map((region) => [region.id, region]));\n let location = locations.get(id);\n while (location) {\n const region = regions.get(location.node.id);\n if (region) return region;\n location = location.parentId ? locations.get(location.parentId) : undefined;\n }\n return undefined;\n }\n\n editableNode(document: EditorDocumentData, id: string): DocumentNode | undefined {\n const region = this.resolve(document, id);\n if (!region) return undefined;\n return structuredClone(\n region.node.tag === 'tr' ? (this.rowContent(region.node) ?? region.node) : region.node,\n );\n }\n\n target(\n document: EditorDocumentData,\n sourceId: string,\n targetId: string,\n placement: CanvasPlacement,\n ): CanvasTarget | undefined {\n const locations = this.locations(document);\n const regions = new Map(this.regions(document).map((region) => [region.id, region]));\n const source = this.resolveRegion(regions, locations, sourceId);\n const target = this.resolveRegion(regions, locations, targetId);\n return this.structuralTarget(document, locations, source, target, placement);\n }\n\n motion(\n document: EditorDocumentData,\n sourceId: string,\n targetId: string,\n placement: CanvasPlacement,\n ): CanvasMotion | undefined {\n const projection = this.movementProjection(document);\n const source = this.resolveRegion(projection.selection, projection.locations, sourceId);\n const target = this.resolveRegion(projection.selection, projection.locations, targetId);\n return this.motionUsing(document, projection, source, target, placement);\n }\n\n validMovementTargets(\n document: EditorDocumentData,\n sourceId: string,\n ): readonly CanvasMovementTarget[] {\n const projection = this.movementProjection(document);\n const source = this.resolveRegion(projection.selection, projection.locations, sourceId);\n if (!source) return [];\n const result: CanvasMovementTarget[] = [];\n for (const target of projection.selection.values()) {\n const placements = (['before', 'after', 'inside'] as const).filter((placement) =>\n Boolean(this.motionUsing(document, projection, source, target, placement)),\n );\n if (placements.length) result.push({ targetId: target.id, placements });\n }\n return result;\n }\n\n actionUnit(document: EditorDocumentData, id: string): CanvasRegion | undefined {\n const projection = this.movementProjection(document);\n const selected = this.resolveRegion(projection.selection, projection.locations, id);\n const structural = this.resolveRegion(projection.structural, projection.locations, id);\n if (!selected || !structural) return undefined;\n const parent = selected.parentId\n ? projection.locations.get(selected.parentId)?.node\n : undefined;\n const hasSibling = (parent?.children ?? document.nodes).some(\n (node) => node.id !== selected.id && (node.type !== 'text' || !!node.value?.trim()),\n );\n if (\n this.isContentUnit(selected) &&\n hasSibling &&\n (parent\n ? this.catalog.acceptsChildren(parent, [selected.node])\n : this.catalog.acceptsRootChildren([selected.node]))\n )\n return selected;\n return structural;\n }\n\n insertionAt(\n document: EditorDocumentData,\n targetId: string,\n placement: CanvasPlacement,\n ): CanvasTarget | undefined {\n const region = this.resolve(document, targetId);\n return region ? this.regionDestination(region, placement) : undefined;\n }\n\n insertionTarget(document: EditorDocumentData, selectedId?: string): CanvasTarget | undefined {\n if (selectedId) {\n const region = this.resolve(document, selectedId);\n if (!region) return undefined;\n return this.insertionAt(document, region.id, region.container ? 'inside' : 'after');\n }\n const body = this.findTag(document.nodes, 'body');\n const roots = body?.children ?? document.nodes;\n const visible = roots.filter(\n (node) => node.type === 'element' && !infrastructure.has(node.tag ?? ''),\n );\n const root = visible.length === 1 ? visible[0] : undefined;\n if (root && this.region(root, body?.id ?? null, 0, 0)?.container) {\n const parent = this.contentTarget(root);\n return { parentId: parent.id, index: parent.children?.length ?? 0 };\n }\n return { ...(body ? { parentId: body.id } : {}), index: roots.length };\n }\n\n acceptsInsertion(\n document: EditorDocumentData,\n destination: CanvasTarget,\n nodes: readonly DocumentNode[],\n ): boolean {\n return this.acceptsAt(document, this.locations(document), destination, nodes);\n }\n\n private movementProjection(document: EditorDocumentData): MovementProjection {\n return {\n locations: this.locations(document),\n structural: new Map(this.regions(document).map((region) => [region.id, region])),\n selection: new Map(this.selectionRegions(document).map((region) => [region.id, region])),\n };\n }\n\n private resolveRegion(\n regions: ReadonlyMap<string, CanvasRegion>,\n locations: ReadonlyMap<string, NodeLocation>,\n id: string,\n ): CanvasRegion | undefined {\n let location = locations.get(id);\n while (location) {\n const region = regions.get(location.node.id);\n if (region) return region;\n location = location.parentId ? locations.get(location.parentId) : undefined;\n }\n return undefined;\n }\n\n private motionUsing(\n document: EditorDocumentData,\n projection: MovementProjection,\n source: CanvasRegion | undefined,\n target: CanvasRegion | undefined,\n placement: CanvasPlacement,\n ): CanvasMotion | undefined {\n if (!source || !target || source.id === target.id) return undefined;\n if (\n this.isContentUnit(source) &&\n source.parentId === target.parentId &&\n (placement === 'before' || placement === 'after')\n ) {\n const destination = {\n ...(target.parentId ? { parentId: target.parentId } : {}),\n index: target.index + (placement === 'after' ? 1 : 0),\n };\n if (this.acceptsAt(document, projection.locations, destination, [source.node])) {\n const index = destination.index - (source.index < destination.index ? 1 : 0);\n if (index === source.index) return undefined;\n return {\n sourceId: source.id,\n ...(destination.parentId ? { parentId: destination.parentId } : {}),\n index,\n };\n }\n }\n const structural = this.resolveRegion(projection.structural, projection.locations, source.id);\n const structuralTarget = this.resolveRegion(\n projection.structural,\n projection.locations,\n target.id,\n );\n const destination = this.structuralTarget(\n document,\n projection.locations,\n structural,\n structuralTarget,\n placement,\n );\n return structural && destination ? { sourceId: structural.id, ...destination } : undefined;\n }\n\n private structuralTarget(\n document: EditorDocumentData,\n locations: ReadonlyMap<string, NodeLocation>,\n source: CanvasRegion | undefined,\n target: CanvasRegion | undefined,\n placement: CanvasPlacement,\n ): CanvasTarget | undefined {\n if (!source || !target || source.id === target.id) return undefined;\n const destination = this.regionDestination(target, placement);\n if (\n !destination ||\n destination.parentId === source.id ||\n (destination.parentId && this.contains(source.node, destination.parentId))\n )\n return undefined;\n if (!this.acceptsAt(document, locations, destination, [source.node])) return undefined;\n const index =\n destination.index -\n (source.parentId === (destination.parentId ?? null) && source.index < destination.index\n ? 1\n : 0);\n if (source.parentId === (destination.parentId ?? null) && source.index === index)\n return undefined;\n return { ...(destination.parentId ? { parentId: destination.parentId } : {}), index };\n }\n\n private regionDestination(\n region: CanvasRegion,\n placement: CanvasPlacement,\n ): CanvasTarget | undefined {\n if (!['before', 'after', 'inside'].includes(placement)) return undefined;\n if (placement === 'inside') {\n if (!region.container) return undefined;\n const parent = this.contentTarget(region.node);\n return { parentId: parent.id, index: parent.children?.length ?? 0 };\n }\n return {\n ...(region.parentId ? { parentId: region.parentId } : {}),\n index: region.index + (placement === 'after' ? 1 : 0),\n };\n }\n\n private acceptsAt(\n document: EditorDocumentData,\n locations: ReadonlyMap<string, NodeLocation>,\n destination: CanvasTarget,\n nodes: readonly DocumentNode[],\n ): boolean {\n if (!Number.isInteger(destination.index) || destination.index < 0) return false;\n if (!destination.parentId)\n return destination.index <= document.nodes.length && this.catalog.acceptsRootChildren(nodes);\n const parent = locations.get(destination.parentId)?.node;\n return (\n !!parent &&\n destination.index <= (parent.children?.length ?? 0) &&\n this.catalog.acceptsChildren(parent, nodes)\n );\n }\n\n private isContentUnit(region: CanvasRegion): boolean {\n return (\n region.editable || ['image', 'button', 'divider', 'spacer', 'form'].includes(region.kind)\n );\n }\n\n private region(\n node: DocumentNode,\n parentId: string | null,\n index: number,\n depth: number,\n ): CanvasRegion | undefined {\n const tag = node.tag ?? '';\n if (infrastructure.has(tag) || tag === 'br') return undefined;\n const rowContent = tag === 'tr' ? this.rowContent(node) : undefined;\n const content = rowContent ?? node;\n const descriptor = this.catalog.recognize(content);\n const editable =\n this.catalog.canEditRichText(content) &&\n content.type === 'element' &&\n ['heading', 'text', 'button', 'footer'].includes(descriptor?.type ?? '');\n const rowCells = (node.children ?? []).filter(\n (child) => child.tag === 'td' || child.tag === 'th',\n );\n if (['tbody', 'thead', 'tfoot', 'colgroup', 'col'].includes(tag)) return undefined;\n if (tag === 'tr' && !rowContent && rowCells.length <= 1) return undefined;\n if (tag === 'table' && node.attrs?.role === 'presentation') return undefined;\n if (tag === 'div' && !descriptor && !this.hasVisibleContent(node)) return undefined;\n const container =\n !rowContent &&\n !editable &&\n (descriptor?.canContainChildren === true ||\n ['table', 'tr', 'td', 'th', 'ul', 'ol', 'dl'].includes(tag));\n return {\n id: node.id,\n parentId,\n index,\n depth,\n kind:\n tag === 'tr' && rowCells.length > 1\n ? 'columns'\n : (descriptor?.type ?? (container ? 'container' : 'native')),\n ...(descriptor ? { labelKey: descriptor.labelKey } : {}),\n node,\n editable,\n container,\n };\n }\n\n private rowContent(row: DocumentNode): DocumentNode | undefined {\n const cells = (row.children ?? []).filter((node) => node.tag === 'td' || node.tag === 'th');\n if (cells.length !== 1) return undefined;\n const childElements = (cells[0]?.children ?? []).filter((child) => child.type === 'element');\n if (\n this.findTag(cells[0]?.children ?? [], 'tr') &&\n !(childElements.length === 1 && childElements[0]?.tag === 'table')\n )\n return undefined;\n const candidates: DocumentNode[] = [];\n const visit = (node: DocumentNode): void => {\n if (node.type !== 'element') return;\n const descriptor = this.catalog.recognize(node);\n const children = (node.children ?? []).filter(\n (child) => child.type === 'element' || (child.type === 'text' && !!child.value?.trim()),\n );\n if (\n node.tag === 'div' &&\n children.length === 1 &&\n ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(children[0]?.tag ?? '')\n ) {\n visit(children[0]!);\n return;\n }\n if (\n ['td', 'th'].includes(node.tag ?? '') &&\n children.length === 1 &&\n ['a', 'img', 'hr'].includes(children[0]?.tag ?? '')\n ) {\n visit(children[0]!);\n return;\n }\n if (\n (this.catalog.canEditRichText(node) && this.hasVisibleContent(node)) ||\n ['image', 'button', 'divider', 'spacer', 'form'].includes(descriptor?.type ?? '')\n ) {\n candidates.push(node);\n return;\n }\n (node.children ?? []).forEach(visit);\n };\n (cells[0]?.children ?? []).forEach(visit);\n if (\n !candidates.length &&\n cells[0] &&\n this.hasVisibleContent(cells[0]) &&\n this.catalog.canEditRichText(cells[0])\n )\n candidates.push(cells[0]);\n return candidates.length === 1 ? candidates[0] : undefined;\n }\n\n private hasRichTextBlocks(node: DocumentNode): boolean {\n return (\n this.catalog.richTextAllowsBlocks(node) &&\n (node.children ?? []).some((child) =>\n [\n 'p',\n 'ul',\n 'ol',\n 'li',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'pre',\n 'hr',\n ].includes(child.tag ?? ''),\n )\n );\n }\n\n private isContentWrapper(node: DocumentNode, editable: boolean): boolean {\n return (\n !editable &&\n [\n 'a',\n 'p',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'span',\n 'strong',\n 'b',\n 'em',\n 'i',\n 'u',\n 's',\n 'small',\n 'sup',\n 'sub',\n 'code',\n 'li',\n 'pre',\n 'summary',\n 'figcaption',\n 'blockquote',\n ].includes(node.tag ?? '')\n );\n }\n\n private contentTarget(node: DocumentNode): DocumentNode {\n const tag = node.tag ?? '';\n if (\n [\n 'tbody',\n 'thead',\n 'tfoot',\n 'td',\n 'th',\n 'body',\n 'section',\n 'article',\n 'main',\n 'header',\n 'footer',\n 'figure',\n 'details',\n ].includes(tag)\n )\n return node;\n if (tag === 'tr') {\n const firstCell = (node.children ?? []).find(\n (child) => child.tag === 'td' || child.tag === 'th',\n );\n return firstCell ? this.contentTarget(firstCell) : node;\n }\n if (tag === 'table') {\n const body = (node.children ?? []).find((child) =>\n ['tbody', 'thead', 'tfoot'].includes(child.tag ?? ''),\n );\n return body ?? node;\n }\n // Compiled columns own a presentation table. Content moves as rows inside it.\n const table = (node.children ?? []).find(\n (child) => child.tag === 'table' && child.attrs?.role === 'presentation',\n );\n if (table) return this.contentTarget(table);\n return node;\n }\n\n private locations(document: EditorDocumentData): ReadonlyMap<string, NodeLocation> {\n const result = new Map<string, NodeLocation>();\n const visit = (nodes: readonly DocumentNode[], parentId: string | null): void => {\n nodes.forEach((node, index) => {\n result.set(node.id, { node, parentId, index });\n visit(node.children ?? [], node.id);\n });\n };\n visit(document.nodes, null);\n return result;\n }\n\n private hasVisibleContent(node: DocumentNode): boolean {\n return (node.children ?? []).some(\n (child) => child.type === 'element' || (child.type === 'text' && !!child.value?.trim()),\n );\n }\n\n private contains(node: DocumentNode, id: string): boolean {\n return node.id === id || (node.children ?? []).some((child) => this.contains(child, id));\n }\n\n private findTag(nodes: readonly DocumentNode[], tag: string): DocumentNode | undefined {\n for (const node of nodes) {\n if (node.tag === tag) return node;\n const child = this.findTag(node.children ?? [], tag);\n if (child) return child;\n }\n return undefined;\n }\n}\n","export const RICH_TEXT_FORMATS = ['bold', 'italic', 'underline', 'strike', 'link'] as const;\nexport type RichTextFormat = (typeof RICH_TEXT_FORMATS)[number];\nexport type RichTextDecorationLine = 'underline' | 'line-through';\nexport const RICH_TEXT_ORIGIN_ATTRIBUTE = 'data-editor-rich-origin';\nexport const RICH_TEXT_REMOVED_ATTRIBUTE = 'data-editor-rich-removed';\n\nconst formats: Readonly<Record<string, RichTextFormat>> = {\n strong: 'bold',\n b: 'bold',\n em: 'italic',\n i: 'italic',\n u: 'underline',\n s: 'strike',\n a: 'link',\n};\nconst resets: Readonly<Record<RichTextFormat, Readonly<Record<string, string>>>> = {\n bold: { 'font-weight': 'normal' },\n italic: { 'font-style': 'normal' },\n underline: {},\n strike: {},\n link: {},\n};\nconst linkAttributes = [\n 'href',\n 'target',\n 'rel',\n 'ping',\n 'download',\n 'hreflang',\n 'referrerpolicy',\n 'type',\n] as const;\n\n/** Canonical semantic-mark removal transitions and their fixed visual resets. */\nexport class RichTextFormatPolicy {\n formatForTag(tag: string | undefined): RichTextFormat | undefined {\n return tag && Object.hasOwn(formats, tag) ? formats[tag] : undefined;\n }\n\n isFormat(value: unknown): value is RichTextFormat {\n return typeof value === 'string' && (RICH_TEXT_FORMATS as readonly string[]).includes(value);\n }\n\n canRemove(\n originalTag: string | undefined,\n replacementTag: string | undefined,\n format: unknown,\n ): boolean {\n return (\n this.isFormat(format) &&\n replacementTag === 'span' &&\n this.formatForTag(originalTag) === format\n );\n }\n\n resets(format: RichTextFormat): Readonly<Record<string, string>> {\n return { ...resets[format] };\n }\n\n decorationFor(format: RichTextFormat): RichTextDecorationLine | undefined {\n return format === 'underline' ? 'underline' : format === 'strike' ? 'line-through' : undefined;\n }\n\n removedAttributes(format: RichTextFormat): readonly string[] {\n return format === 'link' ? [...linkAttributes] : [];\n }\n}\n","import * as v from 'valibot';\nimport type { DocumentKind, DocumentNode, EditorDocumentData } from './document';\n\nexport const SECTION_LAYOUT_LIMITS = Object.freeze({ columns: 4, weight: 12 });\nexport const SECTION_STACKING = ['normal', 'reverse', 'none'] as const;\nexport const SECTION_BREAKPOINTS = [480, 640, 768] as const;\nexport const SECTION_LAYOUT_PRESETS = [\n { id: 'single', ratios: [1], titleKey: 'properties.oneColumn' },\n { id: 'equal2', ratios: [1, 1], titleKey: 'properties.twoColumns' },\n { id: 'wideLeft', ratios: [2, 1], titleKey: 'properties.widerLeft' },\n { id: 'wideRight', ratios: [1, 2], titleKey: 'properties.widerRight' },\n { id: 'equal3', ratios: [1, 1, 1], titleKey: 'properties.threeColumns' },\n { id: 'equal4', ratios: [1, 1, 1, 1], titleKey: 'properties.fourColumns' },\n] as const;\nexport type SectionStacking = (typeof SECTION_STACKING)[number];\nexport type SectionBreakpoint = (typeof SECTION_BREAKPOINTS)[number];\nexport type SectionLayoutReason =\n | 'unsupported-structure'\n | 'invalid-settings'\n | 'column-not-empty'\n | 'identity-bearing-column'\n | 'readonly'\n | 'unavailable';\nexport interface SectionLayoutSettings {\n readonly ratios: readonly number[];\n readonly stacking: SectionStacking;\n readonly breakpoint: SectionBreakpoint;\n}\nexport interface SectionLayoutPatch {\n readonly ratios?: readonly number[];\n readonly stacking?: SectionStacking;\n readonly breakpoint?: SectionBreakpoint;\n}\nexport interface SectionLayoutContext extends SectionLayoutSettings {\n readonly id: string;\n readonly kind: DocumentKind;\n readonly columnIds: readonly string[];\n readonly removableColumnIds: readonly string[];\n readonly editable: boolean;\n readonly reason?: SectionLayoutReason;\n}\nexport interface SectionLayoutProjection {\n readonly section: DocumentNode;\n readonly columns: readonly DocumentNode[];\n readonly contentParent?: DocumentNode;\n readonly shell?: readonly DocumentNode[];\n}\nexport const SectionLayoutSettingsSchema = v.strictObject({\n ratios: v.pipe(\n v.array(\n v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(SECTION_LAYOUT_LIMITS.weight)),\n ),\n v.minLength(1),\n v.maxLength(SECTION_LAYOUT_LIMITS.columns),\n ),\n stacking: v.picklist(SECTION_STACKING),\n breakpoint: v.picklist(SECTION_BREAKPOINTS),\n});\nexport const SectionLayoutPatchSchema = v.strictObject({\n ratios: v.exactOptional(SectionLayoutSettingsSchema.entries.ratios),\n stacking: v.exactOptional(SectionLayoutSettingsSchema.entries.stacking),\n breakpoint: v.exactOptional(SectionLayoutSettingsSchema.entries.breakpoint),\n});\n\n/** Structural projection only: an imported marker never grants a mutation by itself. */\nexport class SectionLayoutPolicy {\n hasClass(node: DocumentNode, name: string): boolean {\n return (node.attrs?.class ?? '').split(/\\s+/).includes(name);\n }\n projection(document: EditorDocumentData, id: string): SectionLayoutProjection | undefined {\n const path = this.path(document.nodes, id);\n if (!path) return undefined;\n for (const section of [...path].reverse()) {\n if (document.kind === 'page') {\n if (\n section.type !== 'element' ||\n !['section', 'div'].includes(section.tag ?? '') ||\n !(\n this.hasClass(section, 'columns') ||\n ['columns', 'section'].includes(section.attrs?.['data-editor-block'] ?? '') ||\n section.attrs?.['data-editor-layout']\n )\n )\n continue;\n const columns = this.elements(section);\n if (\n columns.length < 1 ||\n columns.length > SECTION_LAYOUT_LIMITS.columns ||\n !columns.every((column) =>\n ['div', 'article', 'section', 'aside'].includes(column.tag ?? ''),\n ) ||\n (section.children ?? []).some((child) => child.type === 'text' && !!child.value?.trim())\n )\n continue;\n return { section, columns, contentParent: section };\n }\n if (\n section.type !== 'element' ||\n section.tag !== 'div' ||\n !this.hasClass(section, 'editor-layout-section')\n )\n continue;\n const table = this.onlyElement(section, 'table');\n const tbody = table && this.onlyElement(table, 'tbody');\n const tr = tbody && this.onlyElement(tbody, 'tr');\n const td = tr && this.onlyElement(tr, 'td');\n if (!table || !tbody || !tr || !td) continue;\n const columns = this.elements(td);\n if (\n columns.length < 1 ||\n columns.length > SECTION_LAYOUT_LIMITS.columns ||\n !columns.every(\n (column) =>\n column.tag === 'div' &&\n this.hasClass(column, 'editor-layout-column') &&\n !!this.columnBody(column),\n ) ||\n [section, table, tbody, tr, td].some((node) =>\n (node.children ?? []).some((child) => child.type === 'text' && !!child.value?.trim()),\n )\n )\n continue;\n return { section, columns, contentParent: td, shell: [section, table, tbody, tr, td] };\n }\n return undefined;\n }\n columnBody(column: DocumentNode): DocumentNode | undefined {\n const table = this.onlyElement(column, 'table');\n return table && table.attrs?.role === 'presentation'\n ? this.onlyElement(table, 'tbody')\n : undefined;\n }\n context(document: EditorDocumentData, id: string): SectionLayoutContext | undefined {\n const projection = this.projection(document, id);\n if (!projection) return undefined;\n const { section, columns } = projection;\n const rawRatios = section.attrs?.['data-editor-layout-ratios'];\n const candidate = {\n ratios: rawRatios ? rawRatios.split('-').map(Number) : columns.map(() => 1),\n stacking: section.attrs?.['data-editor-layout-stacking'] ?? 'normal',\n breakpoint: Number(section.attrs?.['data-editor-layout-breakpoint'] ?? 640),\n };\n const parsed = v.safeParse(SectionLayoutSettingsSchema, candidate);\n const valid = parsed.success && parsed.output.ratios.length === columns.length;\n const settings = valid\n ? parsed.output\n : { ratios: columns.map(() => 1), stacking: 'normal' as const, breakpoint: 640 as const };\n return {\n ...settings,\n id: section.id,\n kind: document.kind,\n columnIds: columns.map((column) => column.id),\n removableColumnIds: columns\n .filter((column) => !this.removalReason(column, document.kind))\n .map((column) => column.id),\n editable: valid,\n ...(!valid ? { reason: 'invalid-settings' as const } : {}),\n };\n }\n removalReason(column: DocumentNode, kind: DocumentKind): SectionLayoutReason | undefined {\n const body = kind === 'email' ? this.columnBody(column) : column;\n if (!body) return 'unsupported-structure';\n if (\n (body.children ?? []).some(\n (node) =>\n node.type === 'element' ||\n node.type === 'comment' ||\n (node.type === 'text' && !!node.value?.trim()),\n )\n )\n return 'column-not-empty';\n const wrappers = kind === 'email' ? [column, ...this.elements(column), body] : [column];\n if (wrappers.some((node) => node.attrs?.id || node.attrs?.name))\n return 'identity-bearing-column';\n return undefined;\n }\n settings(current: SectionLayoutContext, patch: SectionLayoutPatch): SectionLayoutSettings {\n const value = v.parse(SectionLayoutPatchSchema, patch);\n return v.parse(SectionLayoutSettingsSchema, {\n ratios: value.ratios ?? current.ratios,\n stacking: value.stacking ?? current.stacking,\n breakpoint: value.breakpoint ?? current.breakpoint,\n });\n }\n attributes(settings: SectionLayoutSettings): Readonly<Record<string, string>> {\n return {\n 'data-editor-layout': 'columns',\n 'data-editor-layout-ratios': settings.ratios.join('-'),\n 'data-editor-layout-stacking': settings.stacking,\n 'data-editor-layout-breakpoint': String(settings.breakpoint),\n };\n }\n elements(node: DocumentNode): readonly DocumentNode[] {\n return (node.children ?? []).filter((child) => child.type === 'element');\n }\n private onlyElement(node: DocumentNode, tag: string): DocumentNode | undefined {\n const children = this.elements(node);\n return children.length === 1 && children[0]?.tag === tag ? children[0] : undefined;\n }\n private path(nodes: readonly DocumentNode[], id: string): readonly DocumentNode[] | undefined {\n for (const node of nodes) {\n if (node.id === id) return [node];\n const path = this.path(node.children ?? [], id);\n if (path) return [node, ...path];\n }\n return undefined;\n }\n}\n","/**\n * What the host, the renderers, the message policy and the runtime of the frame agree on about the\n * piece on screen. It has no DOM and no dependency, so every side imports the same definition.\n */\n\n/** Every attribute the editor adds to the copy shown in the frame starts with this. */\nexport const RESERVED_ATTRIBUTE_PREFIX = 'data-visual-editor-';\n/** Marks a selectable block with the id of its node. */\nexport const NODE_ATTRIBUTE = 'data-visual-editor-node';\n/** Marks an element of an editable text which keeps attributes of its own. */\nexport const TEXT_ORIGIN_ATTRIBUTE = 'data-visual-editor-text-origin';\n/** Marks the element whose text may be edited in place. */\nexport const EDIT_NODE_ATTRIBUTE = 'data-visual-editor-edit-node';\n/** Set by the runtime on the selected block. */\nexport const SELECTED_ATTRIBUTE = 'data-visual-editor-selected';\n/** Set by the runtime on its own layer of controls. */\nexport const CONTROLS_ATTRIBUTE = 'data-visual-editor-controls';\n\nexport function isReservedAttribute(name: string): boolean {\n return name.toLowerCase().startsWith(RESERVED_ATTRIBUTE_PREFIX);\n}\n\n/** What the action bar, the context menu and the keyboard may ask about one block. */\nexport const CANVAS_BLOCK_ACTIONS = ['duplicate', 'remove', 'up', 'down', 'html', 'image'] as const;\n\nexport type CanvasBlockAction = (typeof CANVAS_BLOCK_ACTIONS)[number];\n\n/** Widest image a resize gesture may ask for, in CSS pixels. */\nexport const CANVAS_IMAGE_WIDTH_LIMIT = 4_000;\n\n/** Longest color value of the host theme which may reach the style of the controls. */\nexport const THEME_COLOR_LENGTH = 80;\nconst THEME_COLOR = /^[a-z0-9#(),.%/ -]+$/i;\n\n/** A plain CSS color value: no url, no quotes, no semicolon, nothing which could end a rule. */\nexport function isThemeColor(value: unknown): value is string {\n return (\n typeof value === 'string' &&\n value.length >= 1 &&\n value.length <= THEME_COLOR_LENGTH &&\n THEME_COLOR.test(value)\n );\n}\n\n/** Largest corner radius of the controls, in pixels. */\nexport const THEME_RADIUS_LIMIT = 24;\n\n/** Elements which exist in every document and are never a block of the piece. */\nconst INFRASTRUCTURE: ReadonlySet<string> = new Set([\n 'html',\n 'head',\n 'body',\n 'style',\n 'meta',\n 'title',\n]);\n\nexport function isInfrastructureTag(tag: string): boolean {\n return INFRASTRUCTURE.has(tag.toLowerCase());\n}\n","import { defaultTreeAdapter, html } from 'parse5';\nimport type { DefaultTreeAdapterMap } from 'parse5';\nimport { isInfrastructureTag, isReservedAttribute } from '../core/canvas-contract';\nimport type { DocumentNode } from '../core/document';\n\nexport type MarkupElement = DefaultTreeAdapterMap['element'];\nexport type MarkupParent = DefaultTreeAdapterMap['parentNode'];\n\nexport interface DocumentParts {\n readonly root?: MarkupElement;\n readonly head?: MarkupElement;\n /** Absent in a page made of frames, which has a `frameset` where the body would be. */\n readonly body?: MarkupElement;\n readonly frameset?: MarkupElement;\n}\n\nconst child = (parent: MarkupParent | undefined, tag: string): MarkupElement | undefined =>\n parent?.childNodes.find(\n (node): node is MarkupElement => defaultTreeAdapter.isElementNode(node) && node.tagName === tag,\n );\n\n/** The elements every parsed document has, wherever the source wrote or implied them. */\nexport function documentParts(document: DefaultTreeAdapterMap['document']): DocumentParts {\n const root = child(document, 'html');\n const head = child(root, 'head');\n const body = child(root, 'body');\n const frameset = child(root, 'frameset');\n return {\n ...(root ? { root } : {}),\n ...(head ? { head } : {}),\n ...(body ? { body } : {}),\n ...(frameset ? { frameset } : {}),\n };\n}\n\n/** The children a walk follows: the content of a template stands where its children would. */\nexport function markupChildren(node: MarkupParent): readonly DefaultTreeAdapterMap['childNode'][] {\n return 'content' in node ? node.content.childNodes : node.childNodes;\n}\n\n/** Removes every attribute reserved to the editor below `root`, template contents included. */\nexport function stripReservedAttributes(root: MarkupParent): void {\n const stack: MarkupParent[] = [root];\n while (stack.length) {\n const parent = stack.pop();\n if (!parent) break;\n if (\n defaultTreeAdapter.isElementNode(parent) &&\n parent.attrs.some((a) => isReservedAttribute(a.name))\n )\n parent.attrs = parent.attrs.filter((attribute) => !isReservedAttribute(attribute.name));\n for (const node of markupChildren(parent))\n if (defaultTreeAdapter.isElementNode(node)) stack.push(node);\n }\n}\n\n/** Elements of the document which a parser shows as elements of the piece, in document order. */\nexport function canonicalElements(nodes: readonly DocumentNode[]): DocumentNode[] {\n const canonical: DocumentNode[] = [];\n const stack = [...nodes].reverse();\n while (stack.length) {\n const node = stack.pop();\n if (!node) break;\n if (node.type === 'element' && !isInfrastructureTag(node.tag ?? '')) canonical.push(node);\n const children = node.children ?? [];\n for (let index = children.length - 1; index >= 0; index--) {\n const entry = children[index];\n if (entry) stack.push(entry);\n }\n }\n return canonical;\n}\n\nexport interface AlignmentVisitor {\n /** Every element of the HTML tree, infrastructure included, before it is matched. */\n element?(element: MarkupElement): void;\n /**\n * An element of the markup and the node of the document it stands for. `island` is an inline\n * SVG or MathML: one node of the document, whose inside is never walked. Return `false` to end\n * the walk there.\n */\n match(element: MarkupElement, node: DocumentNode, island: boolean): boolean | void;\n}\n\n/**\n * The one rule which pairs the markup a parser reads with the nodes of the document: the same\n * elements in the same order, skipping what every document has (`html`, `head`, `body`, `style`,\n * `meta`, `title`) and never going inside foreign content, which the document keeps as source.\n * Returns how many nodes were paired, or undefined when markup and document disagree.\n */\nexport function alignElements(\n root: MarkupParent,\n canonical: readonly DocumentNode[],\n visitor: AlignmentVisitor,\n): number | undefined {\n let index = 0;\n const stack: DefaultTreeAdapterMap['childNode'][] = [...root.childNodes].reverse();\n while (stack.length) {\n const node = stack.pop();\n if (!node) break;\n if (!defaultTreeAdapter.isElementNode(node)) continue;\n visitor.element?.(node);\n let island = false;\n if (!isInfrastructureTag(node.tagName)) {\n const expected = canonical[index];\n if (!expected || expected.tag?.toLowerCase() !== node.tagName) return undefined;\n index += 1;\n island = node.namespaceURI !== html.NS.HTML;\n if (visitor.match(node, expected, island) === false) return index;\n }\n if (island) continue;\n for (let position = node.childNodes.length - 1; position >= 0; position--) {\n const entry = node.childNodes[position];\n if (entry) stack.push(entry);\n }\n }\n return index;\n}\n","const inline = new Set([\n 'span',\n 'strong',\n 'b',\n 'em',\n 'i',\n 'u',\n 's',\n 'a',\n 'br',\n 'small',\n 'sup',\n 'sub',\n 'code',\n]);\nconst blocks = new Set([\n 'p',\n 'ul',\n 'ol',\n 'li',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'pre',\n 'hr',\n]);\nconst canonical: Readonly<Record<string, string>> = { b: 'strong', i: 'em', small: 'span' };\n\n/**\n * Which source markup the rich-text projection understands and when an element must carry its\n * origin, so the host projection and the editor inside the preview frame agree on one answer.\n */\nexport class RichTextProjectionRules {\n isInline(tag: string): boolean {\n return inline.has(tag);\n }\n\n isBlock(tag: string): boolean {\n return blocks.has(tag);\n }\n\n supports(tag: string): boolean {\n return inline.has(tag) || blocks.has(tag);\n }\n\n canonicalTag(tag: string): string {\n return canonical[tag] ?? tag;\n }\n\n semanticAttributes(tag: string): readonly string[] {\n const name = this.canonicalTag(tag);\n return name === 'a' ? ['href', 'target', 'rel', 'title'] : name === 'ol' ? ['start'] : [];\n }\n\n /** The element keeps attributes or a tag which only its source node can restore. */\n needsOrigin(tag: string, attributeNames: readonly string[]): boolean {\n const allowed = this.semanticAttributes(tag);\n return (\n ['span', 'small', 'a'].includes(tag) ||\n attributeNames.some((name) => !allowed.includes(name)) ||\n this.canonicalTag(tag) !== tag\n );\n }\n}\n","import { parse } from 'parse5';\nimport type { EditorDocumentData, SourceInput } from '../core/document';\nimport { alignElements, canonicalElements } from './markup-tree';\n\ninterface Span {\n readonly start: number;\n readonly end: number;\n}\n\n/**\n * Finds the exact stretch of the exported source which one element occupies. Editing an element\n * as HTML replaces only that stretch: everything else keeps its original bytes, and the result is\n * imported through the ordinary validation like any other source.\n */\nexport class ElementSourceMap {\n /** The markup of one element as it stands in the source, or undefined when it has none. */\n read(document: EditorDocumentData, source: SourceInput, id: string): string | undefined {\n const span = this.locate(document, source, id);\n return span ? source.html.slice(span.start, span.end) : undefined;\n }\n\n /** The whole source with one element replaced by `html`. */\n replace(\n document: EditorDocumentData,\n source: SourceInput,\n id: string,\n html: string,\n ): SourceInput | undefined {\n const span = this.locate(document, source, id);\n if (!span) return undefined;\n return {\n html: source.html.slice(0, span.start) + html + source.html.slice(span.end),\n css: source.css,\n };\n }\n\n private locate(document: EditorDocumentData, source: SourceInput, id: string): Span | undefined {\n const canonical = canonicalElements(document.nodes);\n if (!canonical.some((node) => node.id === id)) return undefined;\n let found: Span | undefined;\n // The source and the document must describe the same elements in the same order.\n const paired = alignElements(parse(source.html, { sourceCodeLocationInfo: true }), canonical, {\n match: (element, node) => {\n if (node.id !== id) return;\n const location = element.sourceCodeLocation;\n if (location) found = { start: location.startOffset, end: location.endOffset };\n return false;\n },\n });\n return paired === undefined ? undefined : found;\n }\n}\n","const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n]);\n\n/**\n * SHA-256 of the UTF-8 form of a text, in base64: the value of a CSP `'sha256-…'` source. The\n * preview is built synchronously and Web Crypto only digests asynchronously, so the few lines of\n * the algorithm live here. It authorizes a script by its exact text; it protects no secret.\n */\nexport function sha256Base64(text: string): string {\n const message = new TextEncoder().encode(text);\n const blocks = (message.length + 9 + 63) >> 6;\n const data = new Uint8Array(blocks << 6);\n data.set(message);\n data[message.length] = 0x80;\n const view = new DataView(data.buffer);\n view.setUint32(data.length - 8, Math.floor(message.length / 0x20000000));\n view.setUint32(data.length - 4, (message.length << 3) >>> 0);\n const state = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n ]);\n const w = new Uint32Array(64);\n for (let offset = 0; offset < data.length; offset += 64) {\n for (let i = 0; i < 16; i++) w[i] = view.getUint32(offset + i * 4);\n for (let i = 16; i < 64; i++) {\n const a = w[i - 15] ?? 0;\n const b = w[i - 2] ?? 0;\n const s0 = ((a >>> 7) | (a << 25)) ^ ((a >>> 18) | (a << 14)) ^ (a >>> 3);\n const s1 = ((b >>> 17) | (b << 15)) ^ ((b >>> 19) | (b << 13)) ^ (b >>> 10);\n w[i] = ((w[i - 16] ?? 0) + s0 + (w[i - 7] ?? 0) + s1) | 0;\n }\n let [a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0] = state;\n for (let i = 0; i < 64; i++) {\n const s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n const t1 = (h + s1 + ((e & f) ^ (~e & g)) + (K[i] ?? 0) + (w[i] ?? 0)) | 0;\n const s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n const t2 = (s0 + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n state[0] = ((state[0] ?? 0) + a) | 0;\n state[1] = ((state[1] ?? 0) + b) | 0;\n state[2] = ((state[2] ?? 0) + c) | 0;\n state[3] = ((state[3] ?? 0) + d) | 0;\n state[4] = ((state[4] ?? 0) + e) | 0;\n state[5] = ((state[5] ?? 0) + f) | 0;\n state[6] = ((state[6] ?? 0) + g) | 0;\n state[7] = ((state[7] ?? 0) + h) | 0;\n }\n let binary = '';\n for (const word of state)\n binary += String.fromCharCode(\n word >>> 24,\n (word >>> 16) & 0xff,\n (word >>> 8) & 0xff,\n word & 0xff,\n );\n return btoa(binary);\n}\n","// Generated by scripts/canvas-icons.mjs from @iconify-json/lucide@1.2.103. Do not draw or edit icon bodies here.\nexport const CANVAS_ICONS: Readonly<Record<string, string>> = Object.freeze({\n 'square-pen':\n '<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"><path d=\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"/><path d=\"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\"/></g>',\n 'grip-vertical':\n '<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"><circle cx=\"9\" cy=\"12\" r=\"1\"/><circle cx=\"9\" cy=\"5\" r=\"1\"/><circle cx=\"9\" cy=\"19\" r=\"1\"/><circle cx=\"15\" cy=\"12\" r=\"1\"/><circle cx=\"15\" cy=\"5\" r=\"1\"/><circle cx=\"15\" cy=\"19\" r=\"1\"/></g>',\n 'arrow-up':\n '<path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m5 12l7-7l7 7m-7 7V5\"/>',\n 'arrow-down':\n '<path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 5v14m7-7l-7 7l-7-7\"/>',\n copy: '<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/></g>',\n 'trash-2':\n '<path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M10 11v6m4-6v6m5-11v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/>',\n 'corner-left-up':\n '<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"><path d=\"M14 9L9 4L4 9\"/><path d=\"M20 20h-7a4 4 0 0 1-4-4V4\"/></g>',\n image:\n '<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/><path d=\"m21 15l-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"/></g>',\n 'code-xml':\n '<path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m18 16l4-4l-4-4M6 8l-4 4l4 4m8.5-12l-5 16\"/>',\n plus: '<path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7v14\"/>',\n 'app-window':\n '<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"><rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"/><path d=\"M10 4v4M2 8h20M6 4v4\"/></g>',\n});\n","// Generated by scripts/canvas-runtime.mjs (yarn runtime). Do not edit by hand.\nexport const CANVAS_RUNTIME_SOURCES: readonly string[] = [\n 'src/canvas-runtime/action-bar.ts',\n 'src/canvas-runtime/auto-scroll.ts',\n 'src/canvas-runtime/block-drag.ts',\n 'src/canvas-runtime/bridge.ts',\n 'src/canvas-runtime/context.ts',\n 'src/canvas-runtime/document-sync.ts',\n 'src/canvas-runtime/drop-targets.ts',\n 'src/canvas-runtime/embed-markers.ts',\n 'src/canvas-runtime/file-guard.ts',\n 'src/canvas-runtime/image-tools.ts',\n 'src/canvas-runtime/keyboard.ts',\n 'src/canvas-runtime/main.ts',\n 'src/canvas-runtime/messages.ts',\n 'src/canvas-runtime/morph.ts',\n 'src/canvas-runtime/navigation.ts',\n 'src/canvas-runtime/overlay.ts',\n 'src/canvas-runtime/pointer-intents.ts',\n 'src/canvas-runtime/selection-layer.ts',\n 'src/canvas-runtime/shared/shortcuts.ts',\n 'src/canvas-runtime/text-editor.ts',\n 'src/canvas-runtime/text-session.ts',\n 'src/canvas-runtime/variable-marks.ts',\n 'src/canvas-runtime/viewport.ts',\n 'src/core/canvas-contract.ts',\n 'src/core/html-escape.ts',\n 'src/core/rich-text-format.ts',\n 'src/rich-text/command-executor.ts',\n 'src/rich-text/commands.ts',\n 'src/rich-text/document-builder.ts',\n 'src/rich-text/formatting.ts',\n 'src/rich-text/projection-export.ts',\n 'src/rich-text/projection-rules.ts',\n 'src/rich-text/schema.ts',\n 'src/rich-text/whitespace.ts',\n];\nexport const CANVAS_RUNTIME_HASH =\n 'fd7772887582c5310fff89f84e8b3d793d6abe54b466de7ae1def4caf7405813';\nexport const CANVAS_RUNTIME_BUNDLE =\n '\"use strict\";(()=>{var $l=[\"bold\",\"italic\",\"underline\",\"strike\",\"superscript\",\"subscript\",\"bulletList\",\"orderedList\",\"color\",\"backgroundColor\",\"fontFamily\",\"fontSize\",\"lineHeight\",\"clearFormatting\",\"setLink\",\"unsetLink\",\"insertText\",\"undo\",\"redo\",\"finish\",\"cancel\"],Fl=[\"bold\",\"italic\",\"underline\",\"strike\",\"superscript\",\"subscript\",\"bulletList\",\"orderedList\"],us=[\"color\",\"backgroundColor\",\"fontFamily\",\"fontSize\",\"lineHeight\"],Mx=[...us,\"setLink\",\"insertText\"],tt=Object.freeze({commandValue:2048,insertedText:1024,styleValue:200});function fs(){let n=()=>({value:\"\",own:!1,mixed:!1});return{ready:!1,marks:[],styles:{color:n(),backgroundColor:n(),fontFamily:n(),fontSize:n(),lineHeight:n()},link:!1,href:\"\",empty:!0,canUndo:!1,canRedo:!1}}var ir=class{constructor(e,t,r){this.ctx=e;this.overlay=t;this.events=r;let i=e.cfg.labels;this.#e=t.node(\"div\",\"toolbar\"),this.#e.setAttribute(\"role\",\"toolbar\"),this.#e.setAttribute(\"aria-label\",i.edit),this.#e.hidden=!0;let s=(a,c,d)=>{let u=t.button(a,c,e.signal,d);return this.#e.append(u),u},o=a=>()=>{!e.readOnly&&e.selectedId&&e.send(\"action\",{nodeId:e.selectedId,action:a})};this.#i=t.node(\"span\",\"name\"),this.#e.append(this.#i),this.handle=s(i.move,\"grip-vertical\",()=>{}),this.handle.className=\"handle\",this.handle.setAttribute(\"aria-keyshortcuts\",\"Alt+ArrowUp Alt+ArrowDown\"),this.#n=s(i.parent,\"corner-left-up\",()=>e.select(e.parentOf(e.selectedId))),this.#t=s(i.edit,\"square-pen\",()=>r.edit()),s(i.up,\"arrow-up\",o(\"up\")).setAttribute(\"aria-keyshortcuts\",\"Alt+ArrowUp\"),s(i.down,\"arrow-down\",o(\"down\")).setAttribute(\"aria-keyshortcuts\",\"Alt+ArrowDown\"),s(i.duplicate,\"copy\",o(\"duplicate\")).setAttribute(\"aria-keyshortcuts\",\"Control+D\"),this.#r=s(i.image,\"image\",o(\"image\")),i.html&&s(i.html,\"code-xml\",o(\"html\")),this.#e.append(t.node(\"span\",\"sep\"));let l=s(i.remove,\"trash-2\",o(\"remove\"));l.classList.add(\"is-danger\"),l.setAttribute(\"aria-keyshortcuts\",\"Delete\"),t.shadow.append(this.#e),this.handle.addEventListener(\"pointerdown\",a=>r.grab(a,this.handle),{signal:e.signal}),this.handle.addEventListener(\"keydown\",a=>{e.readOnly||!e.selectedId||!a.altKey||a.key!==\"ArrowUp\"&&a.key!==\"ArrowDown\"||(a.preventDefault(),a.stopPropagation(),e.send(\"action\",{nodeId:e.selectedId,action:a.key===\"ArrowUp\"?\"up\":\"down\"}))},{signal:e.signal}),e.onMeasure(()=>this.#s())}ctx;overlay;events;#e;handle;#t;#n;#r;#i;#s(){let e=this.ctx,t=e.selectedId,r=t?e.marked.get(t):void 0;if(e.disposed||e.readOnly||!t||!r){this.#e.hidden=!0;return}let i=r.getBoundingClientRect();if(i.bottom<=0||i.top>=innerHeight){this.#e.hidden=!0;return}let s=e.regions.get(t),o=this.events.editingId()===t;this.#t.hidden=!s?.editable||o,this.#n.hidden=!e.parentOf(t),this.#r.hidden=s?.media!==\"image\",this.#i.textContent=s?.label??\"\",this.#i.hidden=!s?.label,this.#e.hidden=!1;let l=this.#e.getBoundingClientRect(),a=i.top-l.height-6,c=i.bottom+6,d=a>=4,u=d?a:o?Math.min(c,innerHeight-l.height-4):Math.max(4,Math.min(i.top,innerHeight-l.height-4)),f=d?i.left:i.right-l.width,h=Math.max(4,Math.min(f,innerWidth-l.width-4));this.#e.style.left=`${h}px`,this.#e.style.top=`${u}px`}};var sr=class{#e=0;#t=0;#n;update(e,t){this.#n=t;let r=56-e,i=e-(innerHeight-56);this.#e=r>0?-Math.ceil(Math.min(r,56)/56*22):i>0?Math.ceil(Math.min(i,56)/56*22):0,this.#e&&!this.#t&&(this.#t=requestAnimationFrame(()=>this.#r())),this.#e||this.stop()}#r(){if(this.#t=0,!this.#e)return;let e=scrollY;scrollBy(0,this.#e),scrollY!==e&&this.#n?.(),this.#t=requestAnimationFrame(()=>this.#r())}stop(){this.#e=0,this.#n=void 0,this.#t&&cancelAnimationFrame(this.#t),this.#t=0}};var or=class{constructor(e,t,r,i){this.ctx=e;this.targets=t;this.text=r;this.handle=i;let s={capture:!0,signal:e.signal};document.addEventListener(\"pointerdown\",o=>this.#i(o),s),document.addEventListener(\"pointermove\",o=>this.#s(o),{...s,passive:!1}),document.addEventListener(\"pointerup\",o=>{this.#n.delete(o.pointerId),this.#o(o,!0)},s),document.addEventListener(\"pointercancel\",o=>{this.#n.delete(o.pointerId),this.#o(o,!1)},s),document.addEventListener(\"lostpointercapture\",o=>{this.#e?.pointerId===o.pointerId&&this.cancel()},s),document.addEventListener(\"contextmenu\",()=>this.cancel(),s)}ctx;targets;text;handle;#e;#t=!1;#n=new Set;#r=new sr;get sourceId(){return this.#e?.sourceId}consumeClick(){let e=this.#t;return this.#t=!1,e}cancel(){let e=this.#e;if(this.#e=void 0,this.#r.stop(),this.targets.clear(),this.ctx.dragging&&this.ctx.schedule(),this.ctx.dragging=!1,!!e)try{e.capture.hasPointerCapture(e.pointerId)&&e.capture.releasePointerCapture(e.pointerId)}catch{}}interrupt(){this.cancel(),this.#n.clear()}start(e,t,r){if(this.ctx.readOnly||this.text.active||this.#e||!t||e.button!==0||!e.isPrimary||!this.ctx.regions.has(t)||e.pointerType===\"touch\"&&(r!==this.handle||this.#n.size!==1))return!1;try{r.setPointerCapture(e.pointerId)}catch{return!1}return this.#e={sourceId:t,pointerId:e.pointerId,x:e.clientX,y:e.clientY,moved:!1,capture:r,last:{x:e.clientX,y:e.clientY}},this.ctx.select(t),!0}grab(e){this.text.active&&this.text.end(\"finish\"),this.start(e,this.ctx.selectedId,this.handle)&&e.preventDefault()}#i(e){if(e.pointerType===\"touch\"){this.#n.add(e.pointerId),(this.#n.size>1||!e.isPrimary)&&this.cancel();return}if(this.ctx.isControls(e)||!(e.target instanceof Element)||this.text.contains(e.target)||(this.text.active&&this.text.end(\"finish\"),this.text.active))return;let t=this.ctx.regionFrom(e.target),r=t?this.ctx.marked.get(t):void 0;r&&this.start(e,t,r)}#s(e){let t=this.#e;if(!(!t||t.pointerId!==e.pointerId)){if(this.text.active||!t.capture.isConnected){this.cancel();return}Math.hypot(e.clientX-t.x,e.clientY-t.y)>5&&(t.moved=!0),t.moved&&(e.preventDefault(),this.ctx.dragging||this.ctx.schedule(),this.ctx.dragging=!0,getSelection()?.removeAllRanges(),t.last={x:e.clientX,y:e.clientY},this.targets.resolve(e.clientX,e.clientY,t.sourceId),this.#r.update(e.clientY,()=>{this.#e===t&&this.targets.resolve(t.last.x,t.last.y,t.sourceId)}))}}#o(e,t){let r=this.#e;if(!r||r.pointerId!==e.pointerId)return;let i=t&&r.moved&&this.targets.destination&&!this.ctx.readOnly&&!this.text.active;i&&this.targets.resolve(e.clientX,e.clientY,r.sourceId);let s=i?this.targets.destination:void 0;this.cancel(),s&&\"targetId\"in s&&this.ctx.send(\"move\",{sourceId:r.sourceId,...s}),r.moved&&(this.#t=!0,setTimeout(()=>{this.#t=!1},0))}insertion(e,t,r,i=!1){if(this.ctx.readOnly)return;let s=typeof t==\"number\"&&typeof r==\"number\";if(e===\"cancel\"||e===\"drop\"&&!s){this.#r.stop(),this.targets.clear(),this.ctx.dragging=!1;return}if(!s)return;let o=i===!0;if(this.ctx.dragging=!0,this.targets.resolve(t,r,void 0,o),e!==\"drop\"){this.#r.update(r,()=>this.targets.resolve(t,r,void 0,o)),this.ctx.schedule();return}let l=this.targets.destination;this.#r.stop(),this.targets.clear(),this.ctx.dragging=!1,l&&(\"replace\"in l?(this.ctx.select(l.replace),this.ctx.send(\"image-drop\",{nodeId:l.replace})):\"targetId\"in l?this.ctx.send(\"insertion\",l):this.ctx.send(\"insertion-end\",{}),this.ctx.schedule())}};var _l=\"data-visual-editor-\",me=\"data-visual-editor-node\",Vl=\"data-visual-editor-text-origin\",lr=\"data-visual-editor-edit-node\",$e=\"data-visual-editor-selected\",jl=\"data-visual-editor-controls\";var hs=4e3,Gf=80,Yf=/^[a-z0-9#(),.%/ -]+$/i;function ps(n){return typeof n==\"string\"&&n.length>=1&&n.length<=Gf&&Yf.test(n)}var Wl=24;var ar=class{constructor(e,t){this.nonce=e;this.revision=t}nonce;revision;#e=0;#t=!1;#n;#r=new Map;#i;#s=0;send(e,t={}){this.#t||(this.#e+=1,parent.postMessage({type:e,nonce:this.nonce,revision:this.revision,sequence:this.#e,...t},\"*\"))}selection(e){this.#t||parent.postMessage({type:\"selection\",nonce:this.nonce,revision:this.revision,nodeId:e},\"*\")}telemetry(e,t){if(this.#t)return;let r=this.#r.get(e)??{sent:-1/0};this.#r.set(e,r);let i=performance.now()-r.sent;if(i>=34&&!r.timer){r.sent=performance.now(),this.send(e,t);return}r.payload=t,r.timer??=setTimeout(()=>{delete r.timer;let s=r.payload;delete r.payload,r.sent=performance.now(),s&&this.send(e,s)},Math.max(0,34-i))}draft(e){if(this.#t)return;if(this.#i){this.#i.produce=e;return}let t=Math.max(0,50-(performance.now()-this.#s));this.#i={produce:e,timer:setTimeout(()=>this.flushDraft(),t)}}flushDraft(){let e=this.#i;if(!e)return;clearTimeout(e.timer),this.#i=void 0,this.#s=performance.now();let t=e.produce();t&&this.send(\"text-draft\",t)}cancelDraft(){this.#i&&clearTimeout(this.#i.timer),this.#i=void 0}defer(e){this.#n=e}takeDeferred(){let e=this.#n;return this.#n=void 0,e}dispose(){this.#t=!0,this.cancelDraft(),this.#n=void 0;for(let e of this.#r.values())e.timer&&clearTimeout(e.timer);this.#r.clear()}};function Ul(n){if(!n||typeof n!=\"object\")return!1;let e=n;return typeof e.id==\"string\"&&(e.parentId===null||typeof e.parentId==\"string\")&&typeof e.editable==\"boolean\"&&typeof e.container==\"boolean\"&&(e.blocks===void 0||typeof e.blocks==\"boolean\")&&(e.links===void 0||typeof e.links==\"boolean\")&&(e.label===void 0||typeof e.label==\"string\"&&e.label.length<=80)&&(e.media===void 0||e.media===\"image\")}var cr=class{constructor(e,t){this.cfg=e;this.controls=t;this.channel=new ar(e.nonce,e.revision),this.readOnly=e.readOnly,this.regions=new Map(e.regions.map(r=>[r.id,r])),this.index()}cfg;controls;lifecycle=new AbortController;channel;marked=new Map;regions;readOnly;selectedId;disposed=!1;dragging=!1;keyboardMenu=-1/0;#e=0;#t=[];#n=[];get signal(){return this.lifecycle.signal}index(){this.marked.clear();for(let e of document.querySelectorAll(`[${me}]`)){let t=e.getAttribute(me);t&&this.regions.has(t)&&this.marked.set(t,e)}}textElement(e){let t=this.marked.get(e);if(!t||t.getAttribute(lr)===e)return t;for(let r of t.querySelectorAll(`[${lr}]`))if(r.getAttribute(lr)===e&&r.closest(`[${me}]`)===t)return r;return t}setRegions(e){this.regions=new Map(e.map(t=>[t.id,t])),this.index()}send(e,t={}){this.disposed||this.channel.send(e,t)}select(e){if(!(this.disposed||!e||!this.regions.has(e))){for(let t of this.#n)t();this.channel.selection(e)}}beforeSelect(e){this.#n.push(e)}regionFrom(e){let t=e?.closest(`[${me}]`)?.getAttribute(me);return t&&this.regions.has(t)?t:void 0}parentOf(e){let t=e?this.marked.get(e):void 0;return this.regionFrom(t?.parentElement??null)}siblings(e){let t=this.regions.get(e)?.parentId,r=[];for(let i of this.regions.values())i.parentId===t&&this.marked.has(i.id)&&r.push(i.id);return r}isControls(e){return e.composedPath().includes(this.controls)}elementAt(e,t){let r=this.controls.style.getPropertyValue(\"visibility\");this.controls.style.setProperty(\"visibility\",\"hidden\",\"important\");let i=document.elementFromPoint(e,t);return this.controls.style.setProperty(\"visibility\",r||\"visible\",\"important\"),i}onMeasure(e){this.#t.push(e)}schedule(){this.disposed||this.#e||document.readyState===\"loading\"||(this.#e=requestAnimationFrame(()=>{this.#e=0;for(let e of this.#t)e()}))}dispose(){this.disposed=!0,this.lifecycle.abort(),this.#e&&cancelAnimationFrame(this.#e),this.#e=0,this.channel.dispose()}};var Qf=\\'script,meta,base,link[rel~=\"import\" i]\\';function Kl(n){return[...n.querySelectorAll(\\'link:not([rel~=\"import\" i])\\')].map(e=>[...e.attributes].map(t=>`${t.name}=${t.value}`).sort().join(`\\n`)).join(`\\n\\n`)}var dr=class{constructor(e){this.options=e}options;apply(e){let t=new DOMParser().parseFromString(e,\"text/html\");for(let i of t.querySelectorAll(\"noscript\"))i.replaceChildren();for(let i of t.body.querySelectorAll(Qf))i.remove();for(let i of t.head.querySelectorAll(\"script,base,meta[http-equiv]\"))i.remove();if(Kl(t.head)!==Kl(document.head))throw new Error(\"HEAD_RESOURCES_CHANGED\");let r=new Map;for(let i of document.body.querySelectorAll(`[${me}]`)){let s=i.getAttribute(me);s&&!r.has(s)&&r.set(s,i)}this.attributes(document.documentElement,t.documentElement),this.head(t),this.attributes(document.body,t.body),this.children(document.body,t.body,r)}head(e){e.title&&document.title!==e.title&&(document.title=e.title);let t=[...document.head.querySelectorAll(\"style\")],r=[...e.head.querySelectorAll(\"style\")];r.forEach((i,s)=>{let o=t[s];o?o.textContent!==i.textContent&&(o.textContent=i.textContent):document.head.append(document.importNode(i,!0))});for(let i of t.slice(r.length))i.remove()}attributes(e,t){for(let r of[...e.attributes])r.name===$e||t.hasAttribute(r.name)||e.removeAttribute(r.name);for(let r of[...t.attributes])e.getAttribute(r.name)!==r.value&&e.setAttribute(r.name,r.value)}matches(e,t){if(e.nodeType!==t.nodeType)return!1;if(e.nodeType!==Node.ELEMENT_NODE)return!0;let r=e,i=t;return r.localName===i.localName&&r.namespaceURI===i.namespaceURI&&r.getAttribute(me)===i.getAttribute(me)}children(e,t,r){let i=e.firstChild,s=()=>{for(;i&&this.options.keep(i);)i=i.nextSibling};for(let o of[...t.childNodes]){s();let l=o.nodeType===Node.ELEMENT_NODE?o.getAttribute(me):null,a;if(i&&this.matches(i,o))a=i;else if(l){let c=r.get(l);c&&this.matches(c,o)&&!c.contains(e)&&(a=c)}else{let c=i?.nextSibling??null;for(let d=0;c&&d<8;d+=1,c=c.nextSibling)if(!this.options.keep(c)&&c.nodeType===Node.ELEMENT_NODE&&!c.hasAttribute(me)&&this.matches(c,o)){a=c;break}}if(!a){e.insertBefore(document.importNode(o,!0),i);continue}l&&r.delete(l),a!==i?e.insertBefore(a,i):i=i.nextSibling,this.node(a,o,r)}for(s();i;){let o=i;i=i.nextSibling,this.options.keep(o)||o.remove()}}node(e,t,r){if(e.nodeType!==Node.ELEMENT_NODE){e.nodeValue!==t.nodeValue&&(e.nodeValue=t.nodeValue);return}let i=e;this.options.frozen?.(i)||(this.attributes(i,t),i.localName!==\"noscript\"&&this.children(i,t,r))}};var ur=class{constructor(e,t){this.ctx=e;this.parts=t;this.#e=new dr({keep:r=>r===e.controls||r instanceof Element&&r.localName===\"script\",frozen:r=>r===t.text.element()})}ctx;parts;#e;apply(e){let{ctx:t}=this,{text:r,drag:i,targets:s,selection:o,images:l}=this.parts;if(typeof e.html!=\"string\"||typeof e.revision!=\"number\"||!Number.isSafeInteger(e.revision)||e.revision<0||typeof e.readOnly!=\"boolean\"||!Array.isArray(e.regions)||e.regions.length>1e5||!e.regions.every(Ul))return;let a=e.revision===t.channel.revision,c=document.hasFocus()&&document.activeElement instanceof Element?t.regionFrom(document.activeElement):void 0,d=a?void 0:r.supersede();i.cancel(),t.channel.revision=e.revision;try{if(this.#e.apply(e.html),t.setRegions(e.regions),t.marked.size!==t.regions.size)throw new Error(\"MORPH_INCOMPLETE\")}catch{t.channel.defer(void 0),t.send(\"morph-failed\",{});return}t.readOnly=e.readOnly,a||r.forgetRefusals(),r.setEditable(),s.reset(),l.documentChanged();let u=t.selectedId;t.selectedId=void 0,o.highlight(u),t.send(\"ready\",{});let f=t.channel.takeDeferred();f?f():d&&r.editable(d)?r.begin(d,\"end\"):c&&!r.active&&document.activeElement!==t.marked.get(c)&&t.marked.get(c)?.focus({preventScroll:!0}),t.schedule()}};var Zf=[\"before\",\"after\",\"inside\"];function eh(n){return Array.isArray(n)&&n.length<=3&&n.every(e=>Zf.includes(e))}var fr=class{constructor(e,t){this.ctx=e;this.#e=t.node(\"div\",\"drop\"),this.#e.hidden=!0,this.#t=t.node(\"span\",\"drop-label\"),this.#e.append(this.#t),t.shadow.append(this.#e)}ctx;#e;#t;#n;#r;#i=new Map;#s;get destination(){return this.#n}clear(){this.#n=void 0,this.#e.hidden=!0}reset(){this.#r=void 0,this.#i=new Map,this.#s=void 0,this.clear()}#o(e){if(!Array.isArray(e)||e.length>1e4)return;let t=new Map;for(let r of e){if(!r||typeof r!=\"object\")return;let{targetId:i,placements:s}=r;if(typeof i!=\"string\"||!this.ctx.regions.has(i)||!eh(s))return;t.set(i,s)}return t}setMovement(e,t){if(typeof e!=\"string\"||!this.ctx.regions.has(e))return;let r=this.#o(t);if(!r)return;this.#r=e,this.#i=r;let i=this.#n;i&&\"targetId\"in i&&!r.get(i.targetId)?.includes(i.placement)&&this.clear()}setInsertion(e){let t=this.#o(e);t&&(this.#s=t)}#a(e,t,r){return r?this.#r===r&&!!this.#i.get(e)?.includes(t):this.#s?!!this.#s.get(e)?.includes(t):t!==\"inside\"||this.ctx.regions.get(e)?.container===!0}#l(e,t){let r=this.ctx.marked.get(e),i=this.ctx.marked.get(t);return!!r&&!!i&&r.contains(i)}#u(e,t){for(let r of this.ctx.siblings(e)){if(r===e)continue;let i=this.ctx.marked.get(r)?.getBoundingClientRect();if(!i||i.width<=0||i.height<=0)continue;if(i.top<t.bottom-1&&i.bottom>t.top+1&&(i.left>=t.right-1||i.right<=t.left+1))return!0}return!1}#p(e,t){let r,i=1/0;for(let[s,o]of this.ctx.marked){let l=o.getBoundingClientRect();if(l.width<=0&&l.height<=0)continue;let a=Math.max(l.left-e,0,e-l.right),c=Math.max(l.top-t,0,t-l.bottom),d=Math.hypot(a,c);(d<i||d===i&&r&&this.#l(r,s))&&(r=s,i=d)}return r}#f(e,t,r,i){let s=this.ctx.marked.get(e);if(!s)return;let o=s.getBoundingClientRect(),l=this.#u(e,o),a=l?o.width:o.height,c=l?t-o.left:r-o.top,d=a>0?Math.max(0,Math.min(1,c/a)):0,u=d<.5?\"before\":\"after\",f=u===\"before\"?\"after\":\"before\",h=this.ctx.regions.get(e)?.container===!0,p=h&&d>.28&&d<1-.28?[\"inside\",u]:[u,\"inside\"];for(let m of p)if((m!==\"inside\"||h)&&this.#a(e,m,i))return{placement:m,rect:o,horizontal:l};return this.#a(e,f,i)?{placement:f,rect:o,horizontal:l}:void 0}resolve(e,t,r,i=!1){if(this.clear(),this.ctx.readOnly||!Number.isFinite(e)||!Number.isFinite(t)||e<0||t<0||e>innerWidth||t>innerHeight)return;if(!this.ctx.marked.size){r||this.#h();return}let s=this.ctx.regionFrom(this.ctx.elementAt(e,t));if(i&&!r&&s&&this.ctx.regions.get(s)?.media===\"image\"){let a=this.ctx.marked.get(s)?.getBoundingClientRect();if(a&&a.width>0&&a.height>0){this.#n={replace:s},this.#d(\"inside\",a,!1),this.#t.textContent=this.ctx.cfg.labels.replace;return}}let o=s??this.#p(e,t),l=new Set;for(;o&&!l.has(o);){if(l.add(o),!r||!this.#l(r,o)){let a=this.#f(o,e,t,r);if(a){this.#n={targetId:o,placement:a.placement},this.#d(a.placement,a.rect,a.horizontal);return}}o=this.ctx.parentOf(o)}}#h(){this.#n={end:!0},this.#c(\"inside\",8,8,Math.max(12,innerWidth-16),Math.max(12,innerHeight-16))}#d(e,t,r){if(e===\"inside\"){let i=Math.max(0,t.top);this.#c(e,Math.max(0,t.left),i,Math.min(innerWidth,Math.max(12,t.width)),Math.max(8,Math.min(innerHeight-i,t.bottom-i)))}else if(r){let i=e===\"before\"?t.left-1:t.right-2;this.#c(e,Math.max(0,Math.min(i,innerWidth-3)),t.top,3,t.height)}else{let i=e===\"before\"?t.top-1:t.bottom-2;this.#c(e,Math.max(0,t.left),Math.max(0,Math.min(i,innerHeight-3)),Math.min(innerWidth,Math.max(12,t.width)),3)}}#c(e,t,r,i,s){this.#e.hidden=!1,this.#e.classList.toggle(\"is-inside\",e===\"inside\"),this.#e.classList.toggle(\"is-low\",r<22),this.#e.style.left=`${t}px`,this.#e.style.top=`${r}px`,this.#e.style.width=`${i}px`,this.#e.style.height=`${s}px`,this.#t.textContent=this.ctx.cfg.labels[e]}};var th=\"iframe,embed,object\",hr=class{constructor(e,t,r){this.ctx=e;this.overlay=t;this.drag=r;this.#n=t.node(\"div\",\"embeds\"),t.shadow.insertBefore(this.#n,t.shadow.children[1]??null),e.onMeasure(()=>this.#i())}ctx;overlay;drag;#e=new Map;#t=new WeakMap;#n;#r(e){let t=this.overlay.node(\"div\",\"embed\"),r=this.overlay.icon(\"app-window\",18),i=this.overlay.node(\"span\",\"embed-label\");i.textContent=this.ctx.cfg.labels.embed,r&&(t.innerHTML=r),t.append(i);let s=()=>this.ctx.regionFrom(e),o=this.ctx.signal;return t.addEventListener(\"pointerdown\",l=>{l.pointerType!==\"touch\"&&this.drag.start(l,s(),t)},{signal:o}),t.addEventListener(\"click\",l=>{l.preventDefault(),l.stopPropagation(),this.drag.consumeClick()||this.ctx.select(s())},{signal:o}),t.addEventListener(\"contextmenu\",l=>{l.preventDefault(),l.stopPropagation();let a=s();!a||this.ctx.readOnly||(this.ctx.marked.get(a)?.focus({preventScroll:!0}),this.ctx.select(a),this.ctx.cfg.menu!==!1&&this.ctx.send(\"context-menu\",{nodeId:a,x:Math.max(0,Math.min(l.clientX,innerWidth)),y:Math.max(0,Math.min(l.clientY,innerHeight))}))},{signal:o}),this.#n.append(t),t}#i(){let e=new Set,t=0;for(let r of document.querySelectorAll(th)){if(t>=40)break;let i=r.getBoundingClientRect();if(i.width<2||i.height<2||i.bottom<=0||i.top>=innerHeight)continue;t+=1,e.add(r);let s=this.#e.get(r)??this.#r(r);this.#e.set(r,s);let o=`left:${i.left}px;top:${i.top}px;width:${i.width}px;height:${i.height}px`;this.#t.get(s)!==o&&(this.#t.set(s,o),s.style.left=`${i.left}px`,s.style.top=`${i.top}px`,s.style.width=`${i.width}px`,s.style.height=`${i.height}px`)}for(let[r,i]of this.#e)e.has(r)||(i.remove(),this.#e.delete(r))}};var pr=class{constructor(e){this.ctx=e;let t={capture:!0,signal:e.signal};for(let r of[\"dragenter\",\"dragover\",\"drop\"])window.addEventListener(r,i=>this.#t(i),t)}ctx;#e=-1/0;#t(e){if(![...e.dataTransfer?.types??[]].includes(\"Files\")||(e.preventDefault(),e.stopImmediatePropagation(),e.dataTransfer&&(e.dataTransfer.dropEffect=\"none\"),e.type===\"drop\"))return;let t=performance.now();t-this.#e<500||(this.#e=t,this.ctx.send(\"file-drag\",{}))}};var nh=[\"nw\",\"ne\",\"sw\",\"se\"],ql=16,rh=1500,ih=450,Jl=\"se\",mr=class{constructor(e,t){this.ctx=e;for(let r of nh){let i=t.node(\"button\",`grip is-${r}`);i.type=\"button\",i.hidden=!0;let s=r===Jl;i.tabIndex=s?0:-1,i.title=e.cfg.labels.resize,i.setAttribute(\"aria-label\",s?e.cfg.labels.resizeHint:e.cfg.labels.resize),s&&(i.setAttribute(\"aria-keyshortcuts\",\"ArrowLeft ArrowRight Shift+ArrowLeft Shift+ArrowRight\"),i.addEventListener(\"keydown\",o=>this.#s(o),{signal:e.signal}),i.addEventListener(\"blur\",()=>this.#o(),{signal:e.signal})),i.addEventListener(\"pointerdown\",o=>this.#f(o,r,i),{signal:e.signal}),i.addEventListener(\"pointermove\",o=>this.#h(o),{signal:e.signal}),i.addEventListener(\"pointerup\",o=>this.#m(o,!0),{signal:e.signal}),i.addEventListener(\"pointercancel\",o=>this.#m(o,!1),{signal:e.signal}),i.addEventListener(\"lostpointercapture\",o=>this.#m(o,!1),{signal:e.signal}),this.#e.set(r,i),t.shadow.append(i)}this.#t=t.node(\"span\",\"size\"),this.#t.hidden=!0,t.shadow.append(this.#t),e.onMeasure(()=>this.#p()),document.addEventListener(\"pointerdown\",r=>{this.ctx.isControls(r)||this.#o()},{capture:!0,signal:e.signal}),e.beforeSelect(()=>this.#o())}ctx;#e=new Map;#t;#n;#r;#i;focusGrip(e){let t=this.#e.get(Jl);return!t||t.hidden||this.#u()?.id!==e?!1:(t.focus({preventScroll:!0}),!0)}dropKeys(){return this.#r?(this.#a(),!0):!1}get active(){return!!this.#n}#s(e){let t=this.ctx.selectedId;if(!t||e.ctrlKey||e.metaKey||e.altKey||e.isComposing)return;if(e.key===\"Tab\"){let s=[...this.ctx.marked.keys()],o=e.shiftKey?t:s[s.indexOf(t)+1],l=o?this.ctx.marked.get(o):void 0;if(!l)return;e.preventDefault(),e.stopPropagation(),this.#o(),l.focus({preventScroll:!0});return}if(e.key===\"Escape\"&&this.#r){e.preventDefault(),e.stopPropagation(),this.#a();return}let r=e.shiftKey?10:1,i=e.key===\"ArrowLeft\"||e.key===\"ArrowDown\"?-r:e.key===\"ArrowRight\"||e.key===\"ArrowUp\"?r:0;i&&(e.preventDefault(),e.stopPropagation(),this.nudge(t,i))}nudge(e,t){let r=this.#u();if(!r||r.id!==e||this.#n||!Number.isFinite(t))return!1;let i=this.#r;if(i&&(i.id!==e||!i.element.isConnected)&&(this.#o(),i=void 0),!i){let s=this.#i,o=s?.element===r.element?s.style:r.element.getAttribute(\"style\");this.#c(s?.element!==r.element);let l=r.element.getBoundingClientRect();if(l.width<=0||l.height<=0)return!1;i={id:e,element:r.element,width:l.width,ratio:l.width/l.height,style:o,next:Math.round(l.width),timer:void 0},this.#r=i}return i.timer&&clearTimeout(i.timer),i.next=Math.round(Math.max(ql,Math.min(this.#l(i.element),i.next+t))),i.element.style.width=`${i.next}px`,i.element.style.height=`${Math.round(i.next/i.ratio)}px`,i.timer=setTimeout(()=>this.#o(),ih),this.ctx.schedule(),!0}flushKeys(){this.#o()}#o(){let e=this.#r;e&&(this.#r=void 0,e.timer&&clearTimeout(e.timer),this.#y(e.id,e.element,e.style,e.width,e.next,e.ratio))}#a(){let e=this.#r;e&&(this.#r=void 0,e.timer&&clearTimeout(e.timer),e.element.isConnected&&this.#d(e.element,e.style))}#l(e){return Math.min(hs,e.parentElement?.getBoundingClientRect().width||hs)}#u(){let e=this.ctx.selectedId,t=e?this.ctx.marked.get(e):void 0;return e&&t&&!this.ctx.readOnly&&this.ctx.regions.get(e)?.media===\"image\"?{id:e,element:t}:void 0}#p(){let t=this.#u()?.element.getBoundingClientRect(),r=!!t&&t.width>0&&t.bottom>0&&t.top<innerHeight;for(let[s,o]of this.#e)o.hidden=!r,!(!t||!r)&&(o.style.left=`${s.endsWith(\"w\")?t.left:t.right}px`,o.style.top=`${s.startsWith(\"n\")?t.top:t.bottom}px`);let i=!!this.#n||!!this.#r;this.#t.hidden=!i||!t,i&&t&&(this.#t.textContent=`${Math.round(t.width)} \\\\xD7 ${Math.round(t.height)}`,this.#t.style.left=`${Math.max(4,t.left)}px`,this.#t.style.top=`${Math.min(innerHeight-24,t.bottom+6)}px`)}#f(e,t,r){let i=this.#u();if(!i||this.#n||e.button!==0||!e.isPrimary)return;let s=i.element.getBoundingClientRect();if(s.width<=0||s.height<=0)return;try{r.setPointerCapture(e.pointerId)}catch{return}e.preventDefault(),this.#o();let o=this.#i,l=o?.element===i.element?o.style:i.element.getAttribute(\"style\");this.#c(o?.element!==i.element),this.#n={id:i.id,element:i.element,pointerId:e.pointerId,corner:t,startX:e.clientX,width:s.width,ratio:s.width/s.height,style:l,next:s.width},this.ctx.dragging=!0}#h(e){let t=this.#n;if(!t||t.pointerId!==e.pointerId)return;e.preventDefault();let r=e.clientX-t.startX,i=this.#l(t.element);t.next=Math.round(Math.max(ql,Math.min(i,t.width+(t.corner.endsWith(\"w\")?-r:r)))),t.element.style.width=`${t.next}px`,t.element.style.height=`${Math.round(t.next/t.ratio)}px`,this.ctx.schedule()}#d(e,t){t===null?e.removeAttribute(\"style\"):e.setAttribute(\"style\",t),this.ctx.schedule()}#c(e=!0){let t=this.#i;if(!t)return;this.#i=void 0,clearTimeout(t.timer),e&&t.element.isConnected&&this.#d(t.element,t.style);let r=this.#g.splice(0);for(let i of r)i()}#g=[];afterAnswer(e){this.#i?this.#g.push(e):e()}documentChanged(){this.#c(!1),this.#r&&!this.#r.element.isConnected&&this.#a()}#m(e,t){let r=this.#n;if(!(!r||r.pointerId!==e.pointerId)){if(this.#n=void 0,this.ctx.dragging=!1,!t){this.#d(r.element,r.style);return}this.#y(r.id,r.element,r.style,r.width,r.next,r.ratio)}}#y(e,t,r,i,s,o){if(!(Math.abs(s-i)>=1)||this.ctx.readOnly||!t.isConnected){this.#d(t,r);return}this.#i={element:t,style:r,timer:setTimeout(()=>this.#c(),rh)},this.ctx.send(\"image-resize\",{nodeId:e,width:s,height:Math.max(1,Math.round(s/o))}),this.ctx.schedule()}};var gr=class{constructor(e){this.ctx=e}ctx;#e;origin(e){return e&&e===this.#e?e:this.ctx.selectedId??e}visible(e){let t=this.ctx.marked.get(e);if(!t||!t.getClientRects().length)return!1;let r=t.checkVisibility;return typeof r==\"function\"?r.call(t,{checkVisibilityCSS:!0,visibilityProperty:!0}):getComputedStyle(t).visibility!==\"hidden\"}#t(e){let t=new Set,r=this.ctx.parentOf(e);for(;r&&!t.has(r)&&!this.visible(r);)t.add(r),r=this.ctx.parentOf(r);return r}target(e,t){let r=this.ctx,i=r.marked.get(e);if(!i)return;if(t===\"selectParent\")return this.#t(e);let s=[...r.marked.keys()].filter(u=>u===e||this.visible(u));if(t===\"selectChild\")return s.find(u=>u!==e&&this.#t(u)===e);let o=this.#t(e),l=s.filter(u=>this.#t(u)===o),a=l.indexOf(e),c=l[a+(t===\"selectNext\"?1:-1)];if(c)return c;let d=s.indexOf(e);return t===\"selectNext\"?s.slice(d+1).find(u=>!i.contains(r.marked.get(u)??null)):s.slice(0,d).reverse().find(u=>!r.marked.get(u)?.contains(i))}go(e,t){let r=this.target(e,t),i=r?this.ctx.marked.get(r):void 0;return!r||!i?!1:(this.#e=r,this.ctx.select(r),i.focus({preventScroll:!0}),this.reveal(i),!0)}reveal(e){let t=e.getBoundingClientRect();if(t.width<=0&&t.height<=0)return;for(let i=e;i&&i!==document.body;i=i.parentElement)if(getComputedStyle(i).position===\"fixed\")return;let r=0;t.top<16?r=t.top-16:t.bottom>innerHeight-16&&(r=Math.min(t.bottom-innerHeight+16,t.top-16)),r&&scrollBy(0,r)}};var Jx=Object.freeze([{command:\"undo\",keys:[[\"Mod\",\"Z\"]]},{command:\"redo\",keys:[[\"Mod\",\"Shift\",\"Z\"],[\"Mod\",\"Y\"]]},{command:\"duplicate\",keys:[[\"Mod\",\"D\"]]},{command:\"moveUp\",keys:[[\"Alt\",\"\\\\u2191\"]]},{command:\"moveDown\",keys:[[\"Alt\",\"\\\\u2193\"]]},{command:\"remove\",keys:[[\"Delete\"],[\"Backspace\"]]},{command:\"parent\",keys:[[\"Esc\"]]},{command:\"save\",keys:[[\"Mod\",\"S\"]]},{command:\"insert\",keys:[[\"Alt\",\"Enter\"]]},{command:\"menu\",keys:[[\"Shift\",\"F10\"],[\"Menu\"]]},{command:\"selectPrevious\",keys:[[\"\\\\u2191\"]]},{command:\"selectNext\",keys:[[\"\\\\u2193\"]]},{command:\"selectParent\",keys:[[\"\\\\u2190\"]]},{command:\"selectChild\",keys:[[\"\\\\u2192\"]]},{command:\"shrinkImage\",keys:[[\"Shift\",\"Alt\",\"\\\\u2190\"]]},{command:\"growImage\",keys:[[\"Shift\",\"Alt\",\"\\\\u2192\"]]}]);function Xl(n){if(n.isComposing)return;let e=n.key.length===1?n.key.toLowerCase():n.key,t=n.ctrlKey||n.metaKey;if(t&&!n.altKey)return e===\"z\"?n.shiftKey?\"redo\":\"undo\":n.shiftKey?void 0:e===\"y\"?\"redo\":e===\"d\"?\"duplicate\":e===\"s\"?\"save\":void 0;if(n.altKey&&!t&&!n.shiftKey)return e===\"ArrowUp\"?\"moveUp\":e===\"ArrowDown\"?\"moveDown\":e===\"Enter\"?\"insert\":void 0;if(n.altKey&&n.shiftKey&&!t)return e===\"ArrowLeft\"?\"shrinkImage\":e===\"ArrowRight\"?\"growImage\":void 0;if(n.shiftKey&&!t&&!n.altKey)return e===\"F10\"?\"menu\":void 0;if(!(t||n.altKey||n.shiftKey)){if(e===\"Delete\"||e===\"Backspace\")return\"remove\";if(e===\"Escape\")return\"parent\";if(e===\"ContextMenu\")return\"menu\";if(e===\"ArrowUp\")return\"selectPrevious\";if(e===\"ArrowDown\")return\"selectNext\";if(e===\"ArrowLeft\")return\"selectParent\";if(e===\"ArrowRight\")return\"selectChild\"}}var yr=class{constructor(e,t,r,i,s){this.ctx=e;this.text=t;this.drag=r;this.viewport=i;this.images=s;this.#e=new gr(e),document.addEventListener(\"keydown\",o=>this.#t(o),{capture:!0,signal:e.signal})}ctx;text;drag;viewport;images;#e;#t(e){let{ctx:t,text:r}=this;this.viewport.cancelDeferred();let i=!!this.drag.sourceId||t.dragging;e.key===\"Escape\"&&this.drag.cancel();let s=Xl(e);if(s===\"save\"){e.preventDefault(),this.images.flushKeys(),t.readOnly||this.images.afterAnswer(()=>{!t.disposed&&!t.readOnly&&t.send(\"shortcut\",{command:\"save\"})});return}if(t.isControls(e)||r.contains(e.target))return;if(e.key===\"Escape\"&&!i&&this.images.dropKeys()){e.preventDefault();return}if(s!==\"shrinkImage\"&&s!==\"growImage\"&&![\"Shift\",\"Alt\",\"Control\",\"Meta\",\"AltGraph\"].includes(e.key)&&this.images.flushKeys(),e.key===\"Escape\"){!i&&!r.active&&t.select(t.parentOf(t.selectedId));return}let o=r.active;r.reclaim();let l=e.target instanceof Element?t.regionFrom(e.target)??t.selectedId:t.selectedId,a=u=>{e.preventDefault(),l!==t.selectedId&&t.select(l),t.send(\"action\",{nodeId:l,action:u})},c=l?t.marked.get(l):void 0,d=s===\"selectPrevious\"||s===\"selectNext\"||s===\"selectParent\"||s===\"selectChild\"?this.#e.origin(e.target instanceof Element?t.regionFrom(e.target):void 0):void 0;if(e.key===\"Tab\"&&!e.shiftKey&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!o&&l&&l===t.selectedId&&this.images.focusGrip(l))e.preventDefault();else if(d&&!o&&!i&&(s===\"selectPrevious\"||s===\"selectNext\"||s===\"selectParent\"||s===\"selectChild\"))e.preventDefault(),this.#e.go(d,s);else if(l&&c&&!o&&!i&&s===\"menu\"&&t.cfg.menu!==!1){e.preventDefault(),l!==t.selectedId&&t.select(l);let u=c.getBoundingClientRect();t.keyboardMenu=performance.now(),t.send(\"context-menu\",{nodeId:l,x:Math.max(0,Math.min(innerWidth,u.left+8)),y:Math.max(0,Math.min(innerHeight,u.top+Math.min(u.height,24))),keyboard:!0})}else if(!t.readOnly&&l&&c&&!o&&!i&&s===\"insert\"){e.preventDefault(),l!==t.selectedId&&t.select(l),this.#e.reveal(c);let u=c.getBoundingClientRect();t.send(\"insert-request\",{nodeId:l,bounds:{x:u.x,y:u.y,width:u.width,height:u.height},keyboard:!0})}else!t.readOnly&&l&&!o&&(s===\"shrinkImage\"||s===\"growImage\")?(e.preventDefault(),l===t.selectedId&&this.images.nudge(l,s===\"growImage\"?10:-10)):!t.readOnly&&l&&(s===\"moveUp\"||s===\"moveDown\")?a(s===\"moveUp\"?\"up\":\"down\"):!t.readOnly&&(s===\"undo\"||s===\"redo\")?(e.preventDefault(),r.history(s)):!t.readOnly&&l&&!o&&s===\"duplicate\"?a(\"duplicate\"):!t.readOnly&&l&&!o&&s===\"remove\"?a(\"remove\"):s===\"duplicate\"?e.preventDefault():e.key===\"F2\"||e.key===\"Enter\"?(e.preventDefault(),t.select(l),r.begin(l,\"end\")):e.key===\" \"?(e.preventDefault(),t.select(l)):(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement||e.target instanceof HTMLSelectElement)&&e.preventDefault()}};var sh=\"all:initial!important;position:fixed!important;inset:0!important;pointer-events:none!important;z-index:2147483647!important;display:block!important;visibility:visible!important;\",oh=[\":host{all:initial;--ve-accent:#0d9488;--ve-contrast:#fff;--ve-surface:#fff;--ve-text:#18181b;--ve-border:#d4d4d8;--ve-radius:4px}\",\"*{box-sizing:border-box}\",\"[hidden]{display:none!important}\",\".box{position:fixed;pointer-events:none;border:1px solid var(--ve-accent)}\",\".box.is-selected{border-color:transparent}\",\".tag{position:absolute;left:-1px;bottom:100%;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:1px 6px;background:var(--ve-accent);color:var(--ve-contrast);font:11px/1.5 system-ui,sans-serif;border-radius:var(--ve-radius) var(--ve-radius) 0 0}\",\".tag.is-inside{bottom:auto;top:0;border-radius:0 0 var(--ve-radius) 0}\",\"button{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent}\",\".plus{position:absolute;left:50%;top:100%;width:20px;height:20px;margin:0 0 0 -10px;border-radius:999px;background:var(--ve-accent);color:var(--ve-contrast);box-shadow:0 0 0 2px var(--ve-surface),0 1px 4px #0004}\",\".plus:focus-visible,.toolbar button:focus-visible,.grip:focus-visible{outline:2px solid var(--ve-accent);outline-offset:1px}\",\".toolbar{position:fixed;display:flex;flex-wrap:wrap;gap:1px;align-items:center;max-width:calc(100vw - 8px);padding:2px;background:var(--ve-surface);color:var(--ve-text);border:1px solid var(--ve-border);border-radius:var(--ve-radius);box-shadow:0 4px 14px #0003;pointer-events:auto;font:12px/1.3 system-ui,sans-serif}\",\".toolbar button{min-width:28px;min-height:28px;padding:5px;border-radius:calc(var(--ve-radius)*.75)}\",\".toolbar button:hover{background:color-mix(in srgb,var(--ve-accent) 16%,transparent)}\",\".toolbar button.is-danger:hover{background:#dc262622;color:#dc2626}\",\".toolbar .name{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 8px 0 6px;font-weight:600;color:var(--ve-accent)}\",\".toolbar .sep{width:1px;align-self:stretch;margin:4px 2px;background:var(--ve-border)}\",\".handle{touch-action:none;cursor:grab;user-select:none}\",\".drop{position:fixed;pointer-events:none;background:var(--ve-accent);border-radius:2px}\",\".drop.is-inside{background:color-mix(in srgb,var(--ve-accent) 12%,transparent);outline:2px solid var(--ve-accent);outline-offset:-2px}\",\".drop-label{position:absolute;bottom:100%;left:0;margin-bottom:2px;padding:1px 6px;background:var(--ve-accent);color:var(--ve-contrast);white-space:nowrap;font:11px/1.5 system-ui,sans-serif;border-radius:var(--ve-radius)}\",\".drop.is-low>.drop-label{bottom:auto;top:100%;margin:2px 0 0}\",\".embed{position:fixed;display:flex;align-items:center;justify-content:center;gap:6px;overflow:hidden;pointer-events:auto;cursor:pointer;color:var(--ve-text);background:color-mix(in srgb,var(--ve-surface) 88%,var(--ve-accent));border:1px dashed var(--ve-border);font:12px/1.4 system-ui,sans-serif}\",\".embed-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\",\".grip{position:fixed;width:12px;height:12px;margin:-6px 0 0 -6px;background:var(--ve-surface);border:2px solid var(--ve-accent);border-radius:2px;touch-action:none}\",\".grip.is-nw,.grip.is-se{cursor:nwse-resize}.grip.is-ne,.grip.is-sw{cursor:nesw-resize}\",\".variable{position:fixed;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:1px 6px;background:var(--ve-text);color:var(--ve-surface);font:11px/1.5 system-ui,sans-serif;border-radius:var(--ve-radius);pointer-events:none}\",\".size{position:fixed;padding:1px 6px;background:var(--ve-accent);color:var(--ve-contrast);font:11px/1.5 system-ui,sans-serif;border-radius:var(--ve-radius);pointer-events:none}\",\\'@media (pointer:coarse){.toolbar .name{display:none}.toolbar button{min-width:44px;min-height:44px}.plus{width:44px;height:44px;margin:0 0 0 -22px}.grip{width:20px;height:20px;margin:-10px 0 0 -10px}.grip::after{content:\"\";position:absolute;inset:-12px}}\\'].join(\"\"),br=class{constructor(e){this.cfg=e;this.element=document.createElement(\"visual-editor-controls\"),this.element.setAttribute(jl,\"true\"),this.element.setAttribute(\"role\",\"region\"),this.element.setAttribute(\"aria-label\",e.labels.edit),e.lang&&this.element.setAttribute(\"lang\",e.lang),this.element.style.cssText=sh,this.shadow=this.element.attachShadow({mode:\"open\"});let t=document.createElement(\"style\");t.textContent=oh,this.shadow.append(t),this.theme(e.theme),document.body.append(this.element)}cfg;element;shadow;#e;theme(e){if(!e||typeof e!=\"object\")return;let t=e,r=[\"accent\",\"contrast\",\"surface\",\"text\",\"border\"];for(let i of r){let s=t[i];ps(s)&&this.element.style.setProperty(`--ve-${i}`,s)}typeof t.radius==\"number\"&&t.radius>=0&&t.radius<=Wl&&this.element.style.setProperty(\"--ve-radius\",`${t.radius}px`),this.#t()}#t(){let e=this.element.style.getPropertyValue(\"--ve-accent\");if(ps(e))try{this.#e??=new CSSStyleSheet,this.#e.replaceSync(`:root{--visual-editor-accent:${e}}`),document.adoptedStyleSheets.includes(this.#e)||(document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.#e])}catch{}}node(e,t){let r=document.createElement(e);return r.className=t,r}icon(e,t=16){let r=this.cfg.icons?.[e];return r?`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"${t}\" height=\"${t}\" aria-hidden=\"true\">${r}</svg>`:void 0}button(e,t,r,i){let s=document.createElement(\"button\");s.type=\"button\";let o=this.icon(t);return o?s.innerHTML=o:s.textContent=e,s.title=e,s.setAttribute(\"aria-label\",e),s.addEventListener(\"click\",l=>{l.preventDefault(),i()},{signal:r}),s}};var xr=class{constructor(e,t,r){this.ctx=e;this.text=t;this.drag=r;let i={capture:!0,signal:e.signal};document.addEventListener(\"click\",s=>this.#e(s),i),document.addEventListener(\"dblclick\",s=>this.#t(s),i),document.addEventListener(\"contextmenu\",s=>this.#n(s),i),document.addEventListener(\"submit\",s=>s.preventDefault(),i),document.addEventListener(\"dragstart\",s=>{t.contains(s.target)||s.preventDefault()},i)}ctx;text;drag;#e(e){e.preventDefault();let t=this.text;if(t.active&&t.contains(e.target)&&!t.contains(document.activeElement)){t.focus(\"keep\");return}if(this.ctx.isControls(e)||t.contains(e.target)||this.drag.consumeClick()||!(e.target instanceof Element))return;let r=this.ctx.regionFrom(e.target),i={x:e.clientX,y:e.clientY};t.end(\"finish\",()=>{t.begin(r,i)||this.ctx.select(r)})}#t(e){if(this.ctx.readOnly||this.ctx.isControls(e)||!(e.target instanceof Element))return;let t=this.ctx.regionFrom(e.target);!t||this.ctx.regions.get(t)?.media!==\"image\"||(e.preventDefault(),t!==this.ctx.selectedId&&this.ctx.select(t),this.ctx.send(\"action\",{nodeId:t,action:\"image\"}))}#n(e){if(this.text.contains(e.target)||this.ctx.cfg.menu===!1||(e.preventDefault(),performance.now()-this.ctx.keyboardMenu<800)||this.ctx.isControls(e)||!(e.target instanceof Element))return;let t=this.ctx.regionFrom(e.target);if(!t)return;let r=Math.max(0,Math.min(e.clientX,innerWidth)),i=Math.max(0,Math.min(e.clientY,innerHeight));this.ctx.marked.get(t)?.focus({preventScroll:!0}),this.text.end(\"finish\",()=>{this.ctx.select(t),this.ctx.send(\"context-menu\",{nodeId:t,x:r,y:i})})}};var kr=class n{constructor(e,t,r){this.ctx=e;this.overlay=t;this.editingId=r;this.#e=this.#a(\"box is-hover\"),this.#t=t.button(e.cfg.labels.add,\"plus\",e.signal,()=>this.#d()),this.#t.className=\"plus\",this.#e.root.append(this.#t),t.shadow.append(this.#e.root),document.addEventListener(\"pointermove\",i=>this.#l(i),{capture:!0,passive:!0,signal:e.signal}),document.documentElement.addEventListener(\"pointerleave\",()=>this.hover(void 0),{signal:e.signal}),e.signal.addEventListener(\"abort\",()=>this.#f(),{once:!0}),e.onMeasure(()=>this.#g())}ctx;overlay;editingId;#e;#t;#n;#r=matchMedia(\"(pointer:coarse)\");#i;#s;#o;get hoverId(){return this.#n}#a(e){let t=this.overlay.node(\"div\",e),r=this.overlay.node(\"span\",\"tag\");return t.hidden=!0,t.append(r),{root:t,tag:r}}#l(e){if(e.pointerType===\"touch\")return;if(this.ctx.isControls(e)){this.#f();return}let t=this.#p(e),r=e.target instanceof Element?this.ctx.regionFrom(e.target):void 0;if(r!==this.#n&&t){this.#f(),this.#s=window.setTimeout(()=>this.hover(r),n.#u);return}this.hover(r)}static#u=400;#p(e){let t=this.#o;if(this.#o={x:e.clientX,y:e.clientY},this.#t.hidden||this.#e.root.hidden)return this.#i=void 0,!1;let r=this.#t.getBoundingClientRect(),i=Math.hypot(e.clientX-(r.left+r.width/2),e.clientY-(r.top+r.height/2)),s=this.#i;if(this.#i=i,s===void 0||!t)return!1;let o=Math.hypot(e.clientX-t.x,e.clientY-t.y);return o>0&&s-i>=o/2}#f(){this.#s!==void 0&&window.clearTimeout(this.#s),this.#s=void 0}hover(e){this.#f();let t=e&&this.ctx.marked.has(e)?e:void 0;t!==this.#n&&(this.#n=t,this.#i=void 0,this.ctx.schedule())}highlight(e){let t=this.ctx;t.selectedId&&t.marked.get(t.selectedId)?.removeAttribute($e),t.selectedId=e&&t.regions.has(e)?e:void 0,t.selectedId&&t.marked.get(t.selectedId)?.setAttribute($e,\"true\"),this.#m(),t.schedule()}#h(){return this.#n??(this.#r.matches?this.ctx.selectedId:void 0)}#d(){let e=this.#h(),t=e?this.ctx.marked.get(e):void 0;if(!e||!t||this.ctx.readOnly)return;let r=t.getBoundingClientRect();e!==this.ctx.selectedId&&this.ctx.select(e),document.hasFocus()||t.focus({preventScroll:!0}),this.ctx.send(\"insert-request\",{nodeId:e,bounds:{x:r.x,y:r.y,width:r.width,height:r.height}})}#c(e,t){let i=(t?this.ctx.marked.get(t):void 0)?.getBoundingClientRect();if(!t||!i||i.bottom<=0||i.top>=innerHeight||i.width<=0){e.root.hidden=!0;return}e.root.hidden=!1,e.root.style.left=`${i.left}px`,e.root.style.top=`${i.top}px`,e.root.style.width=`${i.width}px`,e.root.style.height=`${i.height}px`;let s=this.ctx.regions.get(t)?.label??\"\";return e.tag.hidden=!s,e.tag.textContent=s,e.tag.classList.toggle(\"is-inside\",i.top<22),i}#g(){let e=this.ctx;if(e.disposed)return;let t=e.selectedId,r=t?e.marked.get(t):void 0;if(t&&r){let a=r.getBoundingClientRect();e.channel.telemetry(\"geometry\",{nodeId:t,bounds:{x:a.x,y:a.y,width:a.width,height:a.height},viewport:{x:scrollX,y:scrollY}})}else t||e.channel.telemetry(\"viewport\",{viewport:{x:scrollX,y:scrollY}});let i=this.#h(),s=e.dragging?void 0:this.#n??i,o=this.#c(this.#e,s),l=s===t;this.#e.root.classList.toggle(\"is-selected\",l),l&&(this.#e.tag.hidden=!0),this.#t.hidden=!o||e.readOnly||s!==i||s===this.editingId()}#m(){let e=this.ctx.selectedId,t=e?this.ctx.marked.get(e):void 0;if(!e||!t)return;let r=getComputedStyle(t),i=/^rgba?\\\\(([\\\\d.]+),\\\\s*([\\\\d.]+),\\\\s*([\\\\d.]+)(?:,\\\\s*([\\\\d.]+))?\\\\)$/.exec(r.color);if(!i)return;let s=Math.max(1,Math.min(160,parseFloat(r.fontSize)||16)),o=r.fontFamily.split(\",\")[0]?.trim().replace(/^[\"\\']|[\"\\']$/g,\"\").toLowerCase(),l=this.ctx.cfg.fonts?.find(d=>d.toLowerCase()===o),a=r.textAlign,c=r.direction===\"rtl\";this.ctx.send(\"appearance\",{nodeId:e,style:{size:s,lineHeight:r.lineHeight===\"normal\"?\"normal\":Math.max(1,Math.min(500,parseFloat(r.lineHeight)||s)),weight:Math.max(100,Math.min(900,parseInt(r.fontWeight)||400)),color:[Math.min(255,Number(i[1])),Math.min(255,Number(i[2])),Math.min(255,Number(i[3])),i[4]===void 0?1:Math.min(1,Number(i[4]))],family:/mono/i.test(r.fontFamily)?\"monospace\":/(?:^|[, ])[\"\\']?(?:georgia|times|serif|-webkit-standard)/i.test(r.fontFamily)&&!/sans-serif/i.test(r.fontFamily)?\"serif\":\"sans-serif\",...l?{font:l}:{},align:[\"right\",\"center\",\"justify\"].includes(a)?a:a===\"end\"?c?\"left\":\"right\":a===\"start\"&&c?\"right\":\"left\",direction:c?\"rtl\":\"ltr\"}})}};var Gl=Object.defineProperty,Yl=(n,e)=>{let t={};for(var r in n)Gl(t,r,{get:n[r],enumerable:!0});return e||Gl(t,Symbol.toStringTag,{value:\"Module\"}),t};function ie(n){this.content=n}ie.prototype={constructor:ie,find:function(n){for(var e=0;e<this.content.length;e+=2)if(this.content[e]===n)return e;return-1},get:function(n){var e=this.find(n);return e==-1?void 0:this.content[e+1]},update:function(n,e,t){var r=t&&t!=n?this.remove(t):this,i=r.find(n),s=r.content.slice();return i==-1?s.push(t||n,e):(s[i+1]=e,t&&(s[i]=t)),new ie(s)},remove:function(n){var e=this.find(n);if(e==-1)return this;var t=this.content.slice();return t.splice(e,2),new ie(t)},addToStart:function(n,e){return new ie([n,e].concat(this.remove(n).content))},addToEnd:function(n,e){var t=this.remove(n).content.slice();return t.push(n,e),new ie(t)},addBefore:function(n,e,t){var r=this.remove(e),i=r.content.slice(),s=r.find(n);return i.splice(s==-1?i.length:s,0,e,t),new ie(i)},forEach:function(n){for(var e=0;e<this.content.length;e+=2)n(this.content[e],this.content[e+1])},prepend:function(n){return n=ie.from(n),n.size?new ie(n.content.concat(this.subtract(n).content)):this},append:function(n){return n=ie.from(n),n.size?new ie(this.subtract(n).content.concat(n.content)):this},subtract:function(n){var e=this;n=ie.from(n);for(var t=0;t<n.content.length;t+=2)e=e.remove(n.content[t]);return e},toObject:function(){var n={};return this.forEach(function(e,t){n[e]=t}),n},get size(){return this.content.length>>1}};ie.from=function(n){if(n instanceof ie)return n;var e=[];if(n)for(var t in n)e.push(t,n[t]);return new ie(e)};var ms=ie;function aa(n,e,t){for(let r=0;;r++){if(r==n.childCount||r==e.childCount)return n.childCount==e.childCount?null:t;let i=n.child(r),s=e.child(r);if(i==s){t+=i.nodeSize;continue}if(!i.sameMarkup(s))return t;if(i.isText&&i.text!=s.text){let o=i.text,l=s.text,a=0;for(;o[a]==l[a];a++)t++;return a&&a<o.length&&a<l.length&&ua(o.charCodeAt(a-1))&&da(o.charCodeAt(a))&&t--,t}if(i.content.size||s.content.size){let o=aa(i.content,s.content,t+1);if(o!=null)return o}t+=i.nodeSize}}function ca(n,e,t,r){for(let i=n.childCount,s=e.childCount;;){if(i==0||s==0)return i==s?null:{a:t,b:r};let o=n.child(--i),l=e.child(--s),a=o.nodeSize;if(o==l){t-=a,r-=a;continue}if(!o.sameMarkup(l))return{a:t,b:r};if(o.isText&&o.text!=l.text){let c=o.text,d=l.text,u=c.length,f=d.length;for(;u>0&&f>0&&c[u-1]==d[f-1];)u--,f--,t--,r--;return u&&f&&u<c.length&&ua(c.charCodeAt(u-1))&&da(c.charCodeAt(u))&&(t++,r++),{a:t,b:r}}if(o.content.size||l.content.size){let c=ca(o.content,l.content,t-1,r-1);if(c)return c}t-=a,r-=a}}function da(n){return n>=56320&&n<57344}function ua(n){return n>=55296&&n<56320}var x=class n{constructor(e,t){if(this.content=e,this.size=t||0,t==null)for(let r=0;r<e.length;r++)this.size+=e[r].nodeSize}nodesBetween(e,t,r,i=0,s){for(let o=0,l=0;l<t;o++){let a=this.content[o],c=l+a.nodeSize;if(c>e&&r(a,i+l,s||null,o)!==!1&&a.content.size){let d=l+1;a.nodesBetween(Math.max(0,e-d),Math.min(a.content.size,t-d),r,i+d)}l=c}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,r,i){let s=\"\",o=!0;return this.nodesBetween(e,t,(l,a)=>{let c=l.isText?l.text.slice(Math.max(e,a)-a,t-a):l.isLeaf?i?typeof i==\"function\"?i(l):i:l.type.spec.leafText?l.type.spec.leafText(l):\"\":\"\";l.isBlock&&(l.isLeaf&&c||l.isTextblock)&&r&&(o?o=!1:s+=r),s+=c},0),s}append(e){if(!e.size)return this;if(!this.size)return e;let t=this.lastChild,r=e.firstChild,i=this.content.slice(),s=0;for(t.isText&&t.sameMarkup(r)&&(i[i.length-1]=t.withText(t.text+r.text),s=1);s<e.content.length;s++)i.push(e.content[s]);return new n(i,this.size+e.size)}cut(e,t=this.size){if(e==0&&t==this.size)return this;let r=[],i=0;if(t>e)for(let s=0,o=0;o<t;s++){let l=this.content[s],a=o+l.nodeSize;a>e&&((o<e||a>t)&&(l.isText?l=l.cut(Math.max(0,e-o),Math.min(l.text.length,t-o)):l=l.cut(Math.max(0,e-o-1),Math.min(l.content.size,t-o-1))),r.push(l),i+=l.nodeSize),o=a}return new n(r,i)}cutByIndex(e,t){return e==t?n.empty:e==0&&t==this.content.length?this:new n(this.content.slice(e,t))}replaceChild(e,t){let r=this.content[e];if(r==t)return this;let i=this.content.slice(),s=this.size+t.nodeSize-r.nodeSize;return i[e]=t,new n(i,s)}addToStart(e){return new n([e].concat(this.content),this.size+e.nodeSize)}addToEnd(e){return new n(this.content.concat(e),this.size+e.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;t<this.content.length;t++)if(!this.content[t].eq(e.content[t]))return!1;return!0}get firstChild(){return this.content.length?this.content[0]:null}get lastChild(){return this.content.length?this.content[this.content.length-1]:null}get childCount(){return this.content.length}child(e){let t=this.content[e];if(!t)throw new RangeError(\"Index \"+e+\" out of range for \"+this);return t}maybeChild(e){return this.content[e]||null}forEach(e){for(let t=0,r=0;t<this.content.length;t++){let i=this.content[t];e(i,r,t),r+=i.nodeSize}}findDiffStart(e,t=0){return aa(this,e,t)}findDiffEnd(e,t=this.size,r=e.size){return ca(this,e,t,r)}findIndex(e){if(e==0)return Sr(0,e);if(e==this.size)return Sr(this.content.length,e);if(e>this.size||e<0)throw new RangeError(`Position ${e} outside of fragment (${this})`);for(let t=0,r=0;;t++){let i=this.child(t),s=r+i.nodeSize;if(s>=e)return s==e?Sr(t+1,s):Sr(t,r);r=s}}toString(){return\"<\"+this.toStringInner()+\">\"}toStringInner(){return this.content.join(\", \")}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(e,t){if(!t)return n.empty;if(!Array.isArray(t))throw new RangeError(\"Invalid input for Fragment.fromJSON\");return n.fromArray(t.map(e.nodeFromJSON))}static fromArray(e){if(!e.length)return n.empty;let t,r=0;for(let i=0;i<e.length;i++){let s=e[i];r+=s.nodeSize,i&&s.isText&&e[i-1].sameMarkup(s)?(t||(t=e.slice(0,i)),t[t.length-1]=s.withText(t[t.length-1].text+s.text)):t&&t.push(s)}return new n(t||e,r)}static from(e){if(!e)return n.empty;if(e instanceof n)return e;if(Array.isArray(e))return this.fromArray(e);if(e.attrs)return new n([e],e.nodeSize);throw new RangeError(\"Can not convert \"+e+\" to a Fragment\"+(e.nodesBetween?\" (looks like multiple versions of prosemirror-model were loaded)\":\"\"))}};x.empty=new x([],0);var gs={index:0,offset:0};function Sr(n,e){return gs.index=n,gs.offset=e,gs}function Tr(n,e){if(n===e)return!0;if(!(n&&typeof n==\"object\")||!(e&&typeof e==\"object\"))return!1;let t=Array.isArray(n);if(Array.isArray(e)!=t)return!1;if(t){if(n.length!=e.length)return!1;for(let r=0;r<n.length;r++)if(!Tr(n[r],e[r]))return!1}else{for(let r in n)if(!(r in e)||!Tr(n[r],e[r]))return!1;for(let r in e)if(!(r in n))return!1}return!0}var P=class n{constructor(e,t){this.type=e,this.attrs=t}addToSet(e){let t,r=!1;for(let i=0;i<e.length;i++){let s=e[i];if(this.eq(s))return e;if(this.type.excludes(s.type))t||(t=e.slice(0,i));else{if(s.type.excludes(this.type))return e;!r&&s.type.rank>this.type.rank&&(t||(t=e.slice(0,i)),t.push(this),r=!0),t&&t.push(s)}}return t||(t=e.slice()),r||t.push(this),t}removeFromSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return e.slice(0,t).concat(e.slice(t+1));return e}isInSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return!0;return!1}eq(e){return this==e||this.type==e.type&&Tr(this.attrs,e.attrs)}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return e}static fromJSON(e,t){if(!t)throw new RangeError(\"Invalid input for Mark.fromJSON\");let r=e.marks[t.type];if(!r)throw new RangeError(`There is no mark type ${t.type} in this schema`);return r.create(t.attrs)}static sameSet(e,t){if(e==t)return!0;if(e.length!=t.length)return!1;for(let r=0;r<e.length;r++)if(!e[r].eq(t[r]))return!1;return!0}static setFrom(e){if(!e||Array.isArray(e)&&e.length==0)return n.none;if(e instanceof n)return[e];let t=e.slice();return t.sort((r,i)=>r.type.rank-i.type.rank),t}};P.none=[];var nt=class extends Error{},v=class n{constructor(e,t,r){this.content=e,this.openStart=t,this.openEnd=r}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(e,t){let r=ha(this.content,e+this.openStart,t,this.openStart+1,this.openEnd+1);return r&&new n(r,this.openStart,this.openEnd)}removeBetween(e,t){return new n(fa(this.content,e+this.openStart,t+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+\"(\"+this.openStart+\",\"+this.openEnd+\")\"}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(e,t){if(!t)return n.empty;let r=t.openStart||0,i=t.openEnd||0;if(typeof r!=\"number\"||typeof i!=\"number\")throw new RangeError(\"Invalid input for Slice.fromJSON\");return new n(x.fromJSON(e,t.content),r,i)}static maxOpen(e,t=!0){let r=0,i=0;for(let s=e.firstChild;s&&!s.isLeaf&&(t||!s.type.spec.isolating);s=s.firstChild)r++;for(let s=e.lastChild;s&&!s.isLeaf&&(t||!s.type.spec.isolating);s=s.lastChild)i++;return new n(e,r,i)}};v.empty=new v(x.empty,0,0);function fa(n,e,t){let{index:r,offset:i}=n.findIndex(e),s=n.maybeChild(r),{index:o,offset:l}=n.findIndex(t);if(i==e||s.isText){if(l!=t&&!n.child(o).isText)throw new RangeError(\"Removing non-flat range\");return n.cut(0,e).append(n.cut(t))}if(r!=o)throw new RangeError(\"Removing non-flat range\");return n.replaceChild(r,s.copy(fa(s.content,e-i-1,t-i-1)))}function ha(n,e,t,r,i,s){let{index:o,offset:l}=n.findIndex(e),a=n.maybeChild(o);if(l==e||a.isText)return s&&r<=0&&i<=0&&!s.canReplace(o,o,t)?null:n.cut(0,e).append(t).append(n.cut(e));let c=ha(a.content,e-l-1,t,o==0?r-1:0,o==n.childCount-1?i-1:0,a);return c&&n.replaceChild(o,a.copy(c))}function lh(n,e,t){if(t.openStart>n.depth)throw new nt(\"Inserted content deeper than insertion position\");if(n.depth-t.openStart!=e.depth-t.openEnd)throw new nt(\"Inconsistent open depths\");return pa(n,e,t,0)}function pa(n,e,t,r){let i=n.index(r),s=n.node(r);if(i==e.index(r)&&r<n.depth-t.openStart){let o=pa(n,e,t,r+1);return s.copy(s.content.replaceChild(i,o))}else if(t.content.size)if(!t.openStart&&!t.openEnd&&n.depth==r&&e.depth==r){let o=n.parent,l=o.content;return gt(o,l.cut(0,n.parentOffset).append(t.content).append(l.cut(e.parentOffset)))}else{let{start:o,end:l}=ah(t,n);return gt(s,ga(n,o,l,e,r))}else return gt(s,Er(n,e,r))}function ma(n,e){if(!e.type.compatibleContent(n.type))throw new nt(\"Cannot join \"+e.type.name+\" onto \"+n.type.name)}function ys(n,e,t){let r=n.node(t);return ma(r,e.node(t)),r}function mt(n,e){let t=e.length-1;t>=0&&n.isText&&n.sameMarkup(e[t])?e[t]=n.withText(e[t].text+n.text):e.push(n)}function gn(n,e,t,r){let i=(e||n).node(t),s=0,o=e?e.index(t):i.childCount;n&&(s=n.index(t),n.depth>t?s++:n.textOffset&&(mt(n.nodeAfter,r),s++));for(let l=s;l<o;l++)mt(i.child(l),r);e&&e.depth==t&&e.textOffset&&mt(e.nodeBefore,r)}function gt(n,e){if(!n.type.validContent(e))throw new nt(\"Invalid content for node \"+n.type.name);return n.copy(e)}function ga(n,e,t,r,i){let s=n.depth>i&&ys(n,e,i+1),o=r.depth>i&&ys(t,r,i+1),l=[];return gn(null,n,i,l),s&&o&&e.index(i)==t.index(i)?(ma(s,o),mt(gt(s,ga(n,e,t,r,i+1)),l)):(s&&mt(gt(s,Er(n,e,i+1)),l),gn(e,t,i,l),o&&mt(gt(o,Er(t,r,i+1)),l)),gn(r,null,i,l),new x(l)}function Er(n,e,t){let r=[];if(gn(null,n,t,r),n.depth>t){let i=ys(n,e,t+1);mt(gt(i,Er(n,e,t+1)),r)}return gn(e,null,t,r),new x(r)}function ah(n,e){let t=e.depth-n.openStart,i=e.node(t).copy(n.content);for(let s=t-1;s>=0;s--)i=e.node(s).copy(x.from(i));return{start:i.resolveNoCache(n.openStart+t),end:i.resolveNoCache(i.content.size-n.openEnd-t)}}var Mr=class n{constructor(e,t,r){this.pos=e,this.path=t,this.parentOffset=r,this.depth=t.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw new RangeError(\"There is no position before the top-level node\");return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw new RangeError(\"There is no position after the top-level node\");return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let r=this.pos-this.path[this.path.length-1],i=e.child(t);return r?e.child(t).cut(r):i}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):e==0?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let r=this.path[t*3],i=t==0?0:this.path[t*3-1]+1;for(let s=0;s<e;s++)i+=r.child(s).nodeSize;return i}marks(){let e=this.parent,t=this.index();if(e.content.size==0)return P.none;if(this.textOffset)return e.child(t).marks;let r=e.maybeChild(t-1),i=e.maybeChild(t);if(!r){let l=r;r=i,i=l}let s=r.marks;for(var o=0;o<s.length;o++)s[o].type.spec.inclusive===!1&&(!i||!s[o].isInSet(i.marks))&&(s=s[o--].removeFromSet(s));return s}marksAcross(e){let t=this.parent.maybeChild(this.index());if(!t||!t.isInline)return null;let r=t.marks,i=e.parent.maybeChild(e.index());for(var s=0;s<r.length;s++)r[s].type.spec.inclusive===!1&&(!i||!r[s].isInSet(i.marks))&&(r=r[s--].removeFromSet(r));return r}sharedDepth(e){for(let t=this.depth;t>0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos<this.pos)return e.blockRange(this);for(let r=this.depth-(this.parent.inlineContent||this.pos==e.pos?1:0);r>=0;r--)if(e.pos<=this.end(r)&&(!t||t(this.node(r))))return new yt(this,e,r);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos<this.pos?e:this}toString(){let e=\"\";for(let t=1;t<=this.depth;t++)e+=(e?\"/\":\"\")+this.node(t).type.name+\"_\"+this.index(t-1);return e+\":\"+this.parentOffset}static resolve(e,t){if(!(t>=0&&t<=e.content.size))throw new RangeError(\"Position \"+t+\" out of range\");let r=[],i=0,s=t;for(let o=e;;){let{index:l,offset:a}=o.content.findIndex(s),c=s-a;if(r.push(o,l,i+a),!c||(o=o.child(l),o.isText))break;s=c-1,i+=a+1}return new n(t,r,s)}static resolveCached(e,t){let r=Ql.get(e);if(r)for(let s=0;s<r.elts.length;s++){let o=r.elts[s];if(o.pos==t)return o}else Ql.set(e,r=new bs);let i=r.elts[r.i]=n.resolve(e,t);return r.i=(r.i+1)%ch,i}},bs=class{constructor(){this.elts=[],this.i=0}},ch=12,Ql=new WeakMap,yt=class{constructor(e,t,r){this.$from=e,this.$to=t,this.depth=r}get start(){return this.$from.before(this.depth+1)}get end(){return this.$to.after(this.depth+1)}get parent(){return this.$from.node(this.depth)}get startIndex(){return this.$from.index(this.depth)}get endIndex(){return this.$to.indexAfter(this.depth)}},dh=Object.create(null),Ae=class n{constructor(e,t,r,i=P.none){this.type=e,this.attrs=t,this.marks=i,this.content=r||x.empty}get children(){return this.content.content}get nodeSize(){return this.isLeaf?1:2+this.content.size}get childCount(){return this.content.childCount}child(e){return this.content.child(e)}maybeChild(e){return this.content.maybeChild(e)}forEach(e){this.content.forEach(e)}nodesBetween(e,t,r,i=0){this.content.nodesBetween(e,t,r,i,this)}descendants(e){this.nodesBetween(0,this.content.size,e)}get textContent(){return this.isLeaf&&this.type.spec.leafText?this.type.spec.leafText(this):this.textBetween(0,this.content.size,\"\")}textBetween(e,t,r,i){return this.content.textBetween(e,t,r,i)}get firstChild(){return this.content.firstChild}get lastChild(){return this.content.lastChild}eq(e){return this==e||this.sameMarkup(e)&&this.content.eq(e.content)}sameMarkup(e){return this.hasMarkup(e.type,e.attrs,e.marks)}hasMarkup(e,t,r){return this.type==e&&Tr(this.attrs,t||e.defaultAttrs||dh)&&P.sameSet(this.marks,r||P.none)}copy(e=null){return e==this.content?this:new n(this.type,this.attrs,e,this.marks)}mark(e){return e==this.marks?this:new n(this.type,this.attrs,this.content,e)}cut(e,t=this.content.size){return e==0&&t==this.content.size?this:this.copy(this.content.cut(e,t))}slice(e,t=this.content.size,r=!1){if(e==t)return v.empty;let i=this.resolve(e),s=this.resolve(t),o=r?0:i.sharedDepth(t),l=i.start(o),c=i.node(o).content.cut(i.pos-l,s.pos-l);return new v(c,i.depth-o,s.depth-o)}replace(e,t,r){return lh(this.resolve(e),this.resolve(t),r)}nodeAt(e){for(let t=this;;){let{index:r,offset:i}=t.content.findIndex(e);if(t=t.maybeChild(r),!t)return null;if(i==e||t.isText)return t;e-=i+1}}childAfter(e){let{index:t,offset:r}=this.content.findIndex(e);return{node:this.content.maybeChild(t),index:t,offset:r}}childBefore(e){if(e==0)return{node:null,index:0,offset:0};let{index:t,offset:r}=this.content.findIndex(e);if(r<e)return{node:this.content.child(t),index:t,offset:r};let i=this.content.child(t-1);return{node:i,index:t-1,offset:r-i.nodeSize}}resolve(e){return Mr.resolveCached(this,e)}resolveNoCache(e){return Mr.resolve(this,e)}rangeHasMark(e,t,r){let i=!1;return t>e&&this.nodesBetween(e,t,s=>(r.isInSet(s.marks)&&(i=!0),!i)),i}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+=\"(\"+this.content.toStringInner()+\")\"),ya(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw new Error(\"Called contentMatchAt on a node with invalid content\");return t}canReplace(e,t,r=x.empty,i=0,s=r.childCount){let o=this.contentMatchAt(e).matchFragment(r,i,s),l=o&&o.matchFragment(this.content,t);if(!l||!l.validEnd)return!1;for(let a=i;a<s;a++)if(!this.type.allowsMarks(r.child(a).marks))return!1;return!0}canReplaceWith(e,t,r,i){if(i&&!this.type.allowsMarks(i))return!1;let s=this.contentMatchAt(e).matchType(r),o=s&&s.matchFragment(this.content,t);return o?o.validEnd:!1}canAppend(e){return e.content.size?this.canReplace(this.childCount,this.childCount,e.content):this.type.compatibleContent(e.type)}check(){this.type.checkContent(this.content),Zl(this.type.attrs,this.attrs,\"node\",this.type.name);let e=P.none;for(let t=0;t<this.marks.length;t++){let r=this.marks[t];Zl(r.type.attrs,r.attrs,\"mark\",r.type.name),e=r.addToSet(e)}if(!P.sameSet(e,this.marks))throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(t=>t.type.name)}`);this.content.forEach(t=>t.check())}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(t=>t.toJSON())),e}static fromJSON(e,t){if(!t)throw new RangeError(\"Invalid input for Node.fromJSON\");let r;if(t.marks){if(!Array.isArray(t.marks))throw new RangeError(\"Invalid mark data for Node.fromJSON\");r=t.marks.map(e.markFromJSON)}if(t.type==\"text\"){if(typeof t.text!=\"string\")throw new RangeError(\"Invalid text node in JSON\");return e.text(t.text,r)}let i=x.fromJSON(e,t.content);return e.nodeType(t.type).create(t.attrs,i,r)}};Ae.prototype.text=void 0;var xs=class n extends Ae{constructor(e,t,r,i){if(super(e,t,null,i),!r)throw new RangeError(\"Empty text nodes are not allowed\");this.text=r}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):ya(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,t){return this.text.slice(e,t)}get nodeSize(){return this.text.length}mark(e){return e==this.marks?this:new n(this.type,this.attrs,this.text,e)}withText(e){return e==this.text?this:new n(this.type,this.attrs,e,this.marks)}cut(e=0,t=this.text.length){return e==0&&t==this.text.length?this:this.withText(this.text.slice(e,t))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}};function ya(n,e){for(let t=n.length-1;t>=0;t--)e=n[t].type.name+\"(\"+e+\")\";return e}function Zl(n,e,t,r){for(let i in e)if(!(i in n))throw new RangeError(`Unsupported attribute ${i} for ${t} of type ${r}`);for(let i in n)n[i].validate&&n[i].validate(e[i])}var bt=class n{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(e,t){let r=new ks(e,t);if(r.next==null)return n.empty;let i=ba(r);r.next&&r.err(\"Unexpected trailing text\");let s=yh(gh(i));return bh(s,r),s}matchType(e){for(let t=0;t<this.next.length;t++)if(this.next[t].type==e)return this.next[t].next;return null}matchFragment(e,t=0,r=e.childCount){let i=this;for(let s=t;i&&s<r;s++)i=i.matchType(e.child(s).type);return i}get inlineContent(){return this.next.length!=0&&this.next[0].type.isInline}get defaultType(){for(let e=0;e<this.next.length;e++){let{type:t}=this.next[e];if(!(t.isText||t.hasRequiredAttrs()))return t}return null}compatible(e){for(let t=0;t<this.next.length;t++)for(let r=0;r<e.next.length;r++)if(this.next[t].type==e.next[r].type)return!0;return!1}fillBefore(e,t=!1,r=0){let i=[this];function s(o,l){let a=o.matchFragment(e,r);if(a&&(!t||a.validEnd))return x.from(l.map(c=>c.createAndFill()));for(let c=0;c<o.next.length;c++){let{type:d,next:u}=o.next[c];if(!(d.isText||d.hasRequiredAttrs())&&i.indexOf(u)==-1){i.push(u);let f=s(u,l.concat(d));if(f)return f}}return null}return s(this,[])}findWrapping(e){for(let r=0;r<this.wrapCache.length;r+=2)if(this.wrapCache[r]==e)return this.wrapCache[r+1];let t=this.computeWrapping(e);return this.wrapCache.push(e,t),t}computeWrapping(e){let t=Object.create(null),r=[{match:this,type:null,via:null}];for(;r.length;){let i=r.shift(),s=i.match;if(s.matchType(e)){let o=[];for(let l=i;l.type;l=l.via)o.push(l.type);return o.reverse()}for(let o=0;o<s.next.length;o++){let{type:l,next:a}=s.next[o];!l.isLeaf&&!l.hasRequiredAttrs()&&!(l.name in t)&&(!i.type||a.validEnd)&&(r.push({match:l.contentMatch,type:l,via:i}),t[l.name]=!0)}}return null}get edgeCount(){return this.next.length}edge(e){if(e>=this.next.length)throw new RangeError(`There\\'s no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function t(r){e.push(r);for(let i=0;i<r.next.length;i++)e.indexOf(r.next[i].next)==-1&&t(r.next[i].next)}return t(this),e.map((r,i)=>{let s=i+(r.validEnd?\"*\":\" \")+\" \";for(let o=0;o<r.next.length;o++)s+=(o?\", \":\"\")+r.next[o].type.name+\"->\"+e.indexOf(r.next[o].next);return s}).join(`\\n`)}};bt.empty=new bt(!0);var ks=class{constructor(e,t){this.string=e,this.nodeTypes=t,this.inline=null,this.pos=0,this.tokens=e.split(/\\\\s*(?=\\\\b|\\\\W|$)/),this.tokens[this.tokens.length-1]==\"\"&&this.tokens.pop(),this.tokens[0]==\"\"&&this.tokens.shift()}get next(){return this.tokens[this.pos]}eat(e){return this.next==e&&(this.pos++||!0)}err(e){throw new SyntaxError(e+\" (in content expression \\'\"+this.string+\"\\')\")}};function ba(n){let e=[];do e.push(uh(n));while(n.eat(\"|\"));return e.length==1?e[0]:{type:\"choice\",exprs:e}}function uh(n){let e=[];do e.push(fh(n));while(n.next&&n.next!=\")\"&&n.next!=\"|\");return e.length==1?e[0]:{type:\"seq\",exprs:e}}function fh(n){let e=mh(n);for(;;)if(n.eat(\"+\"))e={type:\"plus\",expr:e};else if(n.eat(\"*\"))e={type:\"star\",expr:e};else if(n.eat(\"?\"))e={type:\"opt\",expr:e};else if(n.eat(\"{\"))e=hh(n,e);else break;return e}function ea(n){/\\\\D/.test(n.next)&&n.err(\"Expected number, got \\'\"+n.next+\"\\'\");let e=Number(n.next);return n.pos++,e}function hh(n,e){let t=ea(n),r=t;return n.eat(\",\")&&(n.next!=\"}\"?r=ea(n):r=-1),n.eat(\"}\")||n.err(\"Unclosed braced range\"),{type:\"range\",min:t,max:r,expr:e}}function ph(n,e){let t=n.nodeTypes,r=t[e];if(r)return[r];let i=[];for(let s in t){let o=t[s];o.isInGroup(e)&&i.push(o)}return i.length==0&&n.err(\"No node type or group \\'\"+e+\"\\' found\"),i}function mh(n){if(n.eat(\"(\")){let e=ba(n);return n.eat(\")\")||n.err(\"Missing closing paren\"),e}else if(/\\\\W/.test(n.next))n.err(\"Unexpected token \\'\"+n.next+\"\\'\");else{let e=ph(n,n.next).map(t=>(n.inline==null?n.inline=t.isInline:n.inline!=t.isInline&&n.err(\"Mixing inline and block content\"),{type:\"name\",value:t}));return n.pos++,e.length==1?e[0]:{type:\"choice\",exprs:e}}}function gh(n){let e=[[]];return i(s(n,0),t()),e;function t(){return e.push([])-1}function r(o,l,a){let c={term:a,to:l};return e[o].push(c),c}function i(o,l){o.forEach(a=>a.to=l)}function s(o,l){if(o.type==\"choice\")return o.exprs.reduce((a,c)=>a.concat(s(c,l)),[]);if(o.type==\"seq\")for(let a=0;;a++){let c=s(o.exprs[a],l);if(a==o.exprs.length-1)return c;i(c,l=t())}else if(o.type==\"star\"){let a=t();return r(l,a),i(s(o.expr,a),a),[r(a)]}else if(o.type==\"plus\"){let a=t();return i(s(o.expr,l),a),i(s(o.expr,a),a),[r(a)]}else{if(o.type==\"opt\")return[r(l)].concat(s(o.expr,l));if(o.type==\"range\"){let a=l;for(let c=0;c<o.min;c++){let d=t();i(s(o.expr,a),d),a=d}if(o.max==-1)i(s(o.expr,a),a);else for(let c=o.min;c<o.max;c++){let d=t();r(a,d),i(s(o.expr,a),d),a=d}return[r(a)]}else{if(o.type==\"name\")return[r(l,void 0,o.value)];throw new Error(\"Unknown expr type\")}}}}function xa(n,e){return e-n}function ta(n,e){let t=[];return r(e),t.sort(xa);function r(i){let s=n[i];if(s.length==1&&!s[0].term)return r(s[0].to);t.push(i);for(let o=0;o<s.length;o++){let{term:l,to:a}=s[o];!l&&t.indexOf(a)==-1&&r(a)}}}function yh(n){let e=Object.create(null);return t(ta(n,0));function t(r){let i=[];r.forEach(o=>{n[o].forEach(({term:l,to:a})=>{if(!l)return;let c;for(let d=0;d<i.length;d++)i[d][0]==l&&(c=i[d][1]);ta(n,a).forEach(d=>{c||i.push([l,c=[]]),c.indexOf(d)==-1&&c.push(d)})})});let s=e[r.join(\",\")]=new bt(r.indexOf(n.length-1)>-1);for(let o=0;o<i.length;o++){let l=i[o][1].sort(xa);s.next.push({type:i[o][0],next:e[l.join(\",\")]||t(l)})}return s}}function bh(n,e){for(let t=0,r=[n];t<r.length;t++){let i=r[t],s=!i.validEnd,o=[];for(let l=0;l<i.next.length;l++){let{type:a,next:c}=i.next[l];o.push(a.name),s&&!(a.isText||a.hasRequiredAttrs())&&(s=!1),r.indexOf(c)==-1&&r.push(c)}s&&e.err(\"Only non-generatable nodes (\"+o.join(\", \")+\") in a required position (see https://prosemirror.net/docs/guide/#generatable)\")}}function ka(n){let e=Object.create(null);for(let t in n){let r=n[t];if(!r.hasDefault)return null;e[t]=r.default}return e}function Sa(n,e){let t=Object.create(null);for(let r in n){let i=n[r],s=e&&e[r];if(s===void 0)if(i.hasDefault)s=i.default;else throw new RangeError(\"No value supplied for attribute \"+r);else i.validate&&i.validate(s);t[r]=s}return t}function wa(n,e){let t=Object.create(null);if(e)for(let r in e)t[r]=new Ss(n,r,e[r]);return t}var Cr=class n{constructor(e,t,r){this.name=e,this.schema=t,this.spec=r,this.markSet=null,this.groups=r.group?r.group.split(\" \"):[],this.attrs=wa(e,r.attrs),this.defaultAttrs=ka(this.attrs),this.contentMatch=null,this.inlineContent=null,this.isBlock=!(r.inline||e==\"text\"),this.isText=e==\"text\"}get isInline(){return!this.isBlock}get isTextblock(){return this.isBlock&&this.inlineContent}get isLeaf(){return this.contentMatch==bt.empty}get isAtom(){return this.isLeaf||!!this.spec.atom}isInGroup(e){return this.groups.indexOf(e)>-1}get whitespace(){return this.spec.whitespace||(this.spec.code?\"pre\":\"normal\")}hasRequiredAttrs(){for(let e in this.attrs)if(this.attrs[e].isRequired)return!0;return!1}compatibleContent(e){return this==e||this.contentMatch.compatible(e.contentMatch)}computeAttrs(e){return!e&&this.defaultAttrs?this.defaultAttrs:Sa(this.attrs,e)}create(e=null,t,r){if(this.isText)throw new Error(\"NodeType.create can\\'t construct text nodes\");return new Ae(this,this.computeAttrs(e),x.from(t),P.setFrom(r))}createChecked(e=null,t,r){return t=x.from(t),this.checkContent(t),new Ae(this,this.computeAttrs(e),t,P.setFrom(r))}createAndFill(e=null,t,r){if(e=this.computeAttrs(e),t=x.from(t),t.size){let o=this.contentMatch.fillBefore(t);if(!o)return null;t=o.append(t)}let i=this.contentMatch.matchFragment(t),s=i&&i.fillBefore(x.empty,!0);return s?new Ae(this,e,t.append(s),P.setFrom(r)):null}validContent(e){let t=this.contentMatch.matchFragment(e);if(!t||!t.validEnd)return!1;for(let r=0;r<e.childCount;r++)if(!this.allowsMarks(e.child(r).marks))return!1;return!0}checkContent(e){if(!this.validContent(e))throw new RangeError(`Invalid content for node ${this.name}: ${e.toString().slice(0,50)}`)}checkAttrs(e){}allowsMarkType(e){return this.markSet==null||this.markSet.indexOf(e)>-1}allowsMarks(e){if(this.markSet==null)return!0;for(let t=0;t<e.length;t++)if(!this.allowsMarkType(e[t].type))return!1;return!0}allowedMarks(e){if(this.markSet==null)return e;let t;for(let r=0;r<e.length;r++)this.allowsMarkType(e[r].type)?t&&t.push(e[r]):t||(t=e.slice(0,r));return t?t.length?t:P.none:e}static compile(e,t){let r=Object.create(null);e.forEach((s,o)=>r[s]=new n(s,t,o));let i=t.spec.topNode||\"doc\";if(!r[i])throw new RangeError(\"Schema is missing its top node type (\\'\"+i+\"\\')\");if(!r.text)throw new RangeError(\"Every schema needs a \\'text\\' type\");for(let s in r.text.attrs)throw new RangeError(\"The text node type should not have attributes\");return r}};function xh(n,e,t){let r=t.split(\"|\");return i=>{let s=i===null?\"null\":typeof i;if(r.indexOf(s)<0)throw new RangeError(`Expected value of type ${r} for attribute ${e} on type ${n}, got ${s}`)}}var Ss=class{constructor(e,t,r){this.hasDefault=Object.prototype.hasOwnProperty.call(r,\"default\"),this.default=r.default,this.validate=typeof r.validate==\"string\"?xh(e,t,r.validate):r.validate}get isRequired(){return!this.hasDefault}},bn=class n{constructor(e,t,r,i){this.name=e,this.rank=t,this.schema=r,this.spec=i,this.attrs=wa(e,i.attrs),this.excluded=null;let s=ka(this.attrs);this.instance=s?new P(this,s):null}create(e=null){return!e&&this.instance?this.instance:new P(this,Sa(this.attrs,e))}static compile(e,t){let r=Object.create(null),i=0;return e.forEach((s,o)=>r[s]=new n(s,i++,t,o)),r}removeFromSet(e){for(var t=0;t<e.length;t++)e[t].type==this&&(e=e.slice(0,t).concat(e.slice(t+1)),t--);return e}isInSet(e){for(let t=0;t<e.length;t++)if(e[t].type==this)return e[t]}excludes(e){return this.excluded.indexOf(e)>-1}},xn=class{constructor(e){this.linebreakReplacement=null,this.cached=Object.create(null);let t=this.spec={};for(let i in e)t[i]=e[i];t.nodes=ms.from(e.nodes),t.marks=ms.from(e.marks||{}),this.nodes=Cr.compile(this.spec.nodes,this),this.marks=bn.compile(this.spec.marks,this);let r=Object.create(null);for(let i in this.nodes){if(i in this.marks)throw new RangeError(i+\" can not be both a node and a mark\");let s=this.nodes[i],o=s.spec.content||\"\",l=s.spec.marks;if(s.contentMatch=r[o]||(r[o]=bt.parse(o,this.nodes)),s.inlineContent=s.contentMatch.inlineContent,s.spec.linebreakReplacement){if(this.linebreakReplacement)throw new RangeError(\"Multiple linebreak nodes defined\");if(!s.isInline||!s.isLeaf)throw new RangeError(\"Linebreak replacement nodes must be inline leaf nodes\");this.linebreakReplacement=s}s.markSet=l==\"_\"?null:l?na(this,l.split(\" \")):l==\"\"||!s.inlineContent?[]:null}for(let i in this.marks){let s=this.marks[i],o=s.spec.excludes;s.excluded=o==null?[s]:o==\"\"?[]:na(this,o.split(\" \"))}this.nodeFromJSON=i=>Ae.fromJSON(this,i),this.markFromJSON=i=>P.fromJSON(this,i),this.topNodeType=this.nodes[this.spec.topNode||\"doc\"],this.cached.wrappings=Object.create(null)}node(e,t=null,r,i){if(typeof e==\"string\")e=this.nodeType(e);else if(e instanceof Cr){if(e.schema!=this)throw new RangeError(\"Node type from different schema used (\"+e.name+\")\")}else throw new RangeError(\"Invalid node type: \"+e);return e.createChecked(t,r,i)}text(e,t){let r=this.nodes.text;return new xs(r,r.defaultAttrs,e,P.setFrom(t))}mark(e,t){return typeof e==\"string\"&&(e=this.marks[e]),e.create(t)}nodeType(e){let t=this.nodes[e];if(!t)throw new RangeError(\"Unknown node type: \"+e);return t}};function na(n,e){let t=[];for(let r=0;r<e.length;r++){let i=e[r],s=n.marks[i],o=s;if(s)t.push(s);else for(let l in n.marks){let a=n.marks[l];(i==\"_\"||a.spec.group&&a.spec.group.split(\" \").indexOf(i)>-1)&&t.push(o=a)}if(!o)throw new SyntaxError(\"Unknown mark type: \\'\"+e[r]+\"\\'\")}return t}function kh(n){return n.tag!=null}function Sh(n){return n.style!=null}var xe=class n{constructor(e,t){this.schema=e,this.rules=t,this.tags=[],this.styles=[];let r=this.matchedStyles=[];t.forEach(i=>{if(kh(i))this.tags.push(i);else if(Sh(i)){let s=/[^=]*/.exec(i.style)[0];r.indexOf(s)<0&&r.push(s),this.styles.push(i)}}),this.normalizeLists=!this.tags.some(i=>{if(!/^(ul|ol)\\\\b/.test(i.tag)||!i.node)return!1;let s=e.nodes[i.node];return s.contentMatch.matchType(s)})}parse(e,t={}){let r=new Ar(this,t,!1);return r.addAll(e,P.none,t.from,t.to),r.finish()}parseSlice(e,t={}){let r=new Ar(this,t,!0);return r.addAll(e,P.none,t.from,t.to),v.maxOpen(r.finish())}matchTag(e,t,r){for(let i=r?this.tags.indexOf(r)+1:0;i<this.tags.length;i++){let s=this.tags[i];if(Th(e,s.tag)&&(s.namespace===void 0||e.namespaceURI==s.namespace)&&(!s.context||t.matchesContext(s.context))){if(s.getAttrs){let o=s.getAttrs(e);if(o===!1)continue;s.attrs=o||void 0}return s}}}matchStyle(e,t,r,i){for(let s=i?this.styles.indexOf(i)+1:0;s<this.styles.length;s++){let o=this.styles[s],l=o.style;if(!(l.indexOf(e)!=0||o.context&&!r.matchesContext(o.context)||l.length>e.length&&(l.charCodeAt(e.length)!=61||l.slice(e.length+1)!=t))){if(o.getAttrs){let a=o.getAttrs(t);if(a===!1)continue;o.attrs=a||void 0}return o}}}static schemaRules(e){let t=[];function r(i){let s=i.priority==null?50:i.priority,o=0;for(;o<t.length;o++){let l=t[o];if((l.priority==null?50:l.priority)<s)break}t.splice(o,0,i)}for(let i in e.marks){let s=e.marks[i].spec.parseDOM;s&&s.forEach(o=>{r(o=ia(o)),o.mark||o.ignore||o.clearMark||(o.mark=i)})}for(let i in e.nodes){let s=e.nodes[i].spec.parseDOM;s&&s.forEach(o=>{r(o=ia(o)),o.node||o.ignore||o.mark||(o.node=i)})}return t}static fromSchema(e){return e.cached.domParser||(e.cached.domParser=new n(e,n.schemaRules(e)))}},va={address:!0,article:!0,aside:!0,blockquote:!0,body:!0,canvas:!0,dd:!0,div:!0,dl:!0,fieldset:!0,figcaption:!0,figure:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,li:!0,noscript:!0,ol:!0,output:!0,p:!0,pre:!0,section:!0,table:!0,tfoot:!0,ul:!0},wh={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},Ta={ol:!0,ul:!0},kn=1,ws=2,yn=4;function ra(n,e,t){return e!=null?(e?kn:0)|(e===\"full\"?ws:0):n&&n.whitespace==\"pre\"?kn|ws:t&~yn}var $t=class{constructor(e,t,r,i,s,o){this.type=e,this.attrs=t,this.marks=r,this.solid=i,this.options=o,this.content=[],this.activeMarks=P.none,this.match=s||(o&yn?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let t=this.type.contentMatch.fillBefore(x.from(e));if(t)this.match=this.type.contentMatch.matchFragment(t);else{let r=this.type.contentMatch,i;return(i=r.findWrapping(e.type))?(this.match=r,i):null}}return this.match.findWrapping(e.type)}finish(e){if(!(this.options&kn)){let r=this.content[this.content.length-1],i;if(r&&r.isText&&(i=/[ \\\\t\\\\r\\\\n\\\\u000c]+$/.exec(r.text))){let s=r;r.text.length==i[0].length?this.content.pop():this.content[this.content.length-1]=s.withText(s.text.slice(0,s.text.length-i[0].length))}}let t=x.from(this.content);return!e&&this.match&&(t=t.append(this.match.fillBefore(x.empty,!0))),this.type?this.type.create(this.attrs,t,this.marks):t}inlineContext(e){return this.type?this.type.inlineContent:this.content.length?this.content[0].isInline:e.parentNode&&!va.hasOwnProperty(e.parentNode.nodeName.toLowerCase())}},Ar=class{constructor(e,t,r){this.parser=e,this.options=t,this.isOpen=r,this.open=0,this.localPreserveWS=!1;let i=t.topNode,s,o=ra(null,t.preserveWhitespace,0)|(r?yn:0);i?s=new $t(i.type,i.attrs,P.none,!0,t.topMatch||i.type.contentMatch,o):r?s=new $t(null,null,P.none,!0,null,o):s=new $t(e.schema.topNodeType,null,P.none,!0,null,o),this.nodes=[s],this.find=t.findPositions,this.needsBlock=!1}get top(){return this.nodes[this.open]}addDOM(e,t){e.nodeType==3?this.addTextNode(e,t):e.nodeType==1&&this.addElement(e,t)}addTextNode(e,t){let r=e.nodeValue,i=this.top,s=i.options&ws?\"full\":this.localPreserveWS||(i.options&kn)>0,{schema:o}=this.parser;if(s===\"full\"||i.inlineContext(e)||/[^ \\\\t\\\\r\\\\n\\\\u000c]/.test(r)){if(s)if(s===\"full\")r=r.replace(/\\\\r\\\\n?/g,`\\n`);else if(o.linebreakReplacement&&/[\\\\r\\\\n]/.test(r)&&this.top.findWrapping(o.linebreakReplacement.create())){let l=r.split(/\\\\r?\\\\n|\\\\r/);for(let a=0;a<l.length;a++)a&&this.insertNode(o.linebreakReplacement.create(),t,!0),l[a]&&this.insertNode(o.text(l[a]),t,!/\\\\S/.test(l[a]));r=\"\"}else r=r.replace(/\\\\r?\\\\n|\\\\r/g,\" \");else if(r=r.replace(/[ \\\\t\\\\r\\\\n\\\\u000c]+/g,\" \"),/^[ \\\\t\\\\r\\\\n\\\\u000c]/.test(r)&&this.open==this.nodes.length-1){let l=i.content[i.content.length-1],a=e.previousSibling;(!l||a&&a.nodeName==\"BR\"||l.isText&&/[ \\\\t\\\\r\\\\n\\\\u000c]$/.test(l.text))&&(r=r.slice(1))}r&&this.insertNode(o.text(r),t,!/\\\\S/.test(r)),this.findInText(e)}else this.findInside(e)}addElement(e,t,r){let i=this.localPreserveWS,s=this.top;(e.tagName==\"PRE\"||/pre/.test(e.style&&e.style.whiteSpace))&&(this.localPreserveWS=!0);let o=e.nodeName.toLowerCase(),l;Ta.hasOwnProperty(o)&&this.parser.normalizeLists&&vh(e);let a=this.options.ruleFromNode&&this.options.ruleFromNode(e)||(l=this.parser.matchTag(e,this,r));e:if(a?a.ignore:wh.hasOwnProperty(o))this.findInside(e),this.ignoreFallback(e,t);else if(!a||a.skip||a.closeParent){a&&a.closeParent?this.open=Math.max(0,this.open-1):a&&a.skip.nodeType&&(e=a.skip);let c,d=this.needsBlock;if(va.hasOwnProperty(o))s.content.length&&s.content[0].isInline&&this.open&&(this.open--,s=this.top),c=!0,s.type||(this.needsBlock=!0);else if(!e.firstChild){this.leafFallback(e,t);break e}let u=a&&a.skip?t:this.readStyles(e,t);u&&this.addAll(e,u),c&&this.sync(s),this.needsBlock=d}else{let c=this.readStyles(e,t);c&&this.addElementByRule(e,a,c,a.consuming===!1?l:void 0)}this.localPreserveWS=i}leafFallback(e,t){e.nodeName==\"BR\"&&this.top.type&&this.top.type.inlineContent&&this.addTextNode(e.ownerDocument.createTextNode(`\\n`),t)}ignoreFallback(e,t){e.nodeName==\"BR\"&&(!this.top.type||!this.top.type.inlineContent)&&this.findPlace(this.parser.schema.text(\"-\"),t,!0)}readStyles(e,t){let r=e.style;if(r&&r.length)for(let i=0;i<this.parser.matchedStyles.length;i++){let s=this.parser.matchedStyles[i],o=r.getPropertyValue(s);if(o)for(let l=void 0;;){let a=this.parser.matchStyle(s,o,this,l);if(!a)break;if(a.ignore)return null;if(a.clearMark?t=t.filter(c=>!a.clearMark(c)):t=t.concat(this.parser.schema.marks[a.mark].create(a.attrs)),a.consuming===!1)l=a;else break}}return t}addElementByRule(e,t,r,i){let s,o;if(t.node)if(o=this.parser.schema.nodes[t.node],o.isLeaf)this.insertNode(o.create(t.attrs),r,e.nodeName==\"BR\")||this.leafFallback(e,r);else{let a=this.enter(o,t.attrs||null,r,t.preserveWhitespace);a&&(s=!0,r=a)}else{let a=this.parser.schema.marks[t.mark];r=r.concat(a.create(t.attrs))}let l=this.top;if(o&&o.isLeaf)this.findInside(e);else if(i)this.addElement(e,r,i);else if(t.getContent)this.findInside(e),t.getContent(e,this.parser.schema).forEach(a=>this.insertNode(a,r,!1));else{let a=e;typeof t.contentElement==\"string\"?a=e.querySelector(t.contentElement):typeof t.contentElement==\"function\"?a=t.contentElement(e):t.contentElement&&(a=t.contentElement),this.findAround(e,a,!0),this.addAll(a,r),this.findAround(e,a,!1)}s&&this.sync(l)&&this.open--}addAll(e,t,r,i){let s=r||0;for(let o=r?e.childNodes[r]:e.firstChild,l=i==null?null:e.childNodes[i];o!=l;o=o.nextSibling,++s)this.findAtPoint(e,s),this.addDOM(o,t);this.findAtPoint(e,s)}findPlace(e,t,r){let i,s;for(let o=this.open,l=0;o>=0;o--){let a=this.nodes[o],c=a.findWrapping(e);if(c&&(!i||i.length>c.length+l)&&(i=c,s=a,!c.length))break;if(a.solid){if(r)break;l+=2}}if(!i)return null;this.sync(s);for(let o=0;o<i.length;o++)t=this.enterInner(i[o],null,t,!1);return t}insertNode(e,t,r){if(e.isInline&&this.needsBlock&&!this.top.type){let s=this.textblockFromContext();s&&(t=this.enterInner(s,null,t))}let i=this.findPlace(e,t,r);if(i){this.closeExtra();let s=this.top;s.match&&(s.match=s.match.matchType(e.type));let o=P.none;for(let l of i.concat(e.marks))(s.type?s.type.allowsMarkType(l.type):sa(l.type,e.type))&&(o=l.addToSet(o));return s.content.push(e.mark(o)),!0}return!1}enter(e,t,r,i){let s=this.findPlace(e.create(t),r,!1);return s&&(s=this.enterInner(e,t,r,!0,i)),s}enterInner(e,t,r,i=!1,s){this.closeExtra();let o=this.top;o.match=o.match&&o.match.matchType(e);let l=ra(e,s,o.options);o.options&yn&&o.content.length==0&&(l|=yn);let a=P.none;return r=r.filter(c=>(o.type?o.type.allowsMarkType(c.type):sa(c.type,e))?(a=c.addToSet(a),!1):!0),this.nodes.push(new $t(e,t,a,i,null,l)),this.open++,r}closeExtra(e=!1){let t=this.nodes.length-1;if(t>this.open){for(;t>this.open;t--)this.nodes[t-1].content.push(this.nodes[t].finish(e));this.nodes.length=this.open+1}}finish(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(!!(this.isOpen||this.options.topOpen))}sync(e){for(let t=this.open;t>=0;t--){if(this.nodes[t]==e)return this.open=t,!0;this.localPreserveWS&&(this.nodes[t].options|=kn)}return!1}get currentPos(){this.closeExtra();let e=0;for(let t=this.open;t>=0;t--){let r=this.nodes[t].content;for(let i=r.length-1;i>=0;i--)e+=r[i].nodeSize;t&&e++}return e}findAtPoint(e,t){if(this.find)for(let r=0;r<this.find.length;r++)this.find[r].node==e&&this.find[r].offset==t&&(this.find[r].pos=this.currentPos)}findInside(e){if(this.find)for(let t=0;t<this.find.length;t++)this.find[t].pos==null&&e.nodeType==1&&e.contains(this.find[t].node)&&(this.find[t].pos=this.currentPos)}findAround(e,t,r){if(e!=t&&this.find)for(let i=0;i<this.find.length;i++)this.find[i].pos==null&&e.nodeType==1&&e.contains(this.find[i].node)&&t.compareDocumentPosition(this.find[i].node)&(r?2:4)&&(this.find[i].pos=this.currentPos)}findInText(e){if(this.find)for(let t=0;t<this.find.length;t++)this.find[t].node==e&&(this.find[t].pos=this.currentPos-(e.nodeValue.length-this.find[t].offset))}matchesContext(e){if(e.indexOf(\"|\")>-1)return e.split(/\\\\s*\\\\|\\\\s*/).some(this.matchesContext,this);let t=e.split(\"/\"),r=this.options.context,i=!this.isOpen&&(!r||r.parent.type==this.nodes[0].type),s=-(r?r.depth+1:0)+(i?0:1),o=(l,a)=>{for(;l>=0;l--){let c=t[l];if(c==\"\"){if(l==t.length-1||l==0)continue;for(;a>=s;a--)if(o(l-1,a))return!0;return!1}else{let d=a>0||a==0&&i?this.nodes[a].type:r&&a>=s?r.node(a-s).type:null;if(!d||d.name!=c&&!d.isInGroup(c))return!1;a--}}return!0};return o(t.length-1,this.open)}textblockFromContext(){let e=this.options.context;if(e)for(let t=e.depth;t>=0;t--){let r=e.node(t).contentMatchAt(e.indexAfter(t)).defaultType;if(r&&r.isTextblock&&r.defaultAttrs)return r}for(let t in this.parser.schema.nodes){let r=this.parser.schema.nodes[t];if(r.isTextblock&&r.defaultAttrs)return r}}};function vh(n){for(let e=n.firstChild,t=null;e;e=e.nextSibling){let r=e.nodeType==1?e.nodeName.toLowerCase():null;r&&Ta.hasOwnProperty(r)&&t?(t.appendChild(e),e=t):r==\"li\"?t=e:r&&(t=null)}}function Th(n,e){return(n.matches||n.msMatchesSelector||n.webkitMatchesSelector||n.mozMatchesSelector).call(n,e)}function ia(n){let e={};for(let t in n)e[t]=n[t];return e}function sa(n,e){let t=e.schema.nodes;for(let r in t){let i=t[r];if(!i.allowsMarkType(n))continue;let s=[],o=l=>{s.push(l);for(let a=0;a<l.edgeCount;a++){let{type:c,next:d}=l.edge(a);if(c==e||s.indexOf(d)<0&&o(d))return!0}};if(o(i.contentMatch))return!0}}var Fe=class n{constructor(e,t){this.nodes=e,this.marks=t}serializeFragment(e,t={},r){r||(r=wr(t).createDocumentFragment());let i=r,s=[];return e.forEach(o=>{if(s.length||o.marks.length){let l=0,a=0;for(;l<s.length&&a<o.marks.length;){let c=o.marks[a];if(!this.marks[c.type.name]){a++;continue}if(!c.eq(s[l][0])||c.type.spec.spanning===!1)break;l++,a++}for(;l<s.length;)i=s.pop()[1];for(;a<o.marks.length;){let c=o.marks[a++],d=this.serializeMark(c,o.isInline,t);d&&(s.push([c,i]),i.appendChild(d.dom),i=d.contentDOM||d.dom)}}i.appendChild(this.serializeNodeInner(o,t))}),r}serializeNodeInner(e,t){if(e.isText)return wr(t).createTextNode(e.text);let{dom:r,contentDOM:i}=vr(wr(t),this.nodes[e.type.name](e),null,e.attrs);if(i){if(e.isLeaf)throw new RangeError(\"Content hole not allowed in a leaf node spec\");this.serializeFragment(e.content,t,i)}return r}serializeNode(e,t={}){let r=this.serializeNodeInner(e,t);for(let i=e.marks.length-1;i>=0;i--){let s=this.serializeMark(e.marks[i],e.isInline,t);s&&((s.contentDOM||s.dom).appendChild(r),r=s.dom)}return r}serializeMark(e,t,r={}){let i=this.marks[e.type.name];return i&&vr(wr(r),i(e,t),null,e.attrs)}static renderSpec(e,t,r=null,i){return typeof t==\"string\"?{dom:e.createTextNode(t)}:vr(e,t,r,i)}static fromSchema(e){return e.cached.domSerializer||(e.cached.domSerializer=new n(this.nodesFromSchema(e),this.marksFromSchema(e)))}static nodesFromSchema(e){let t=oa(e.nodes);return t.text||(t.text=r=>r.text),t}static marksFromSchema(e){return oa(e.marks)}};function oa(n){let e={};for(let t in n){let r=n[t].spec.toDOM;r&&(e[t]=r)}return e}function wr(n){return n.document||window.document}var la=new WeakMap;function Eh(n){let e=la.get(n);return e===void 0&&la.set(n,e=Mh(n)),e}function Mh(n){let e=null;function t(r){if(r&&typeof r==\"object\")if(Array.isArray(r))if(typeof r[0]==\"string\")e||(e=[]),e.push(r);else for(let i=0;i<r.length;i++)t(r[i]);else for(let i in r)t(r[i])}return t(n),e}function vr(n,e,t,r){if(e.nodeType==1)return{dom:e};if(e.dom&&e.dom.nodeType==1)return e;let i=e[0],s;if(typeof i!=\"string\")throw new RangeError(\"Invalid array passed to renderSpec\");if(r&&(s=Eh(r))&&s.indexOf(e)>-1)throw new RangeError(\"Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.\");let o=i.indexOf(\" \");o>0&&(t=i.slice(0,o),i=i.slice(o+1));let l,a=t?n.createElementNS(t,i):n.createElement(i),c=e[1],d=1;if(c&&typeof c==\"object\"&&c.nodeType==null&&!Array.isArray(c)){d=2;for(let u in c)if(c[u]!=null){let f=u.indexOf(\" \");f>0?a.setAttributeNS(u.slice(0,f),u.slice(f+1),c[u]):u==\"style\"&&a.style?a.style.cssText=c[u]:a.setAttribute(u,c[u])}}for(let u=d;u<e.length;u++){let f=e[u];if(f===0){if(u<e.length-1||u>d)throw new RangeError(\"Content hole must be the only child of its parent node\");return{dom:a,contentDOM:a}}else if(typeof f==\"string\")a.appendChild(n.createTextNode(f));else{let{dom:h,contentDOM:p}=vr(n,f,t,r);if(a.appendChild(h),p){if(l)throw new RangeError(\"Multiple content holes\");l=p}}}return{dom:a,contentDOM:l}}var Ra=65535,Na=Math.pow(2,16);function Ch(n,e){return n+e*Na}function Ea(n){return n&Ra}function Ah(n){return(n-(n&Ra))/Na}var Oa=1,Ia=2,Rr=4,Da=8,vn=class{constructor(e,t,r){this.pos=e,this.delInfo=t,this.recover=r}get deleted(){return(this.delInfo&Da)>0}get deletedBefore(){return(this.delInfo&(Oa|Rr))>0}get deletedAfter(){return(this.delInfo&(Ia|Rr))>0}get deletedAcross(){return(this.delInfo&Rr)>0}},_e=class n{constructor(e,t=!1){if(this.ranges=e,this.inverted=t,!e.length&&n.empty)return n.empty}recover(e){let t=0,r=Ea(e);if(!this.inverted)for(let i=0;i<r;i++)t+=this.ranges[i*3+2]-this.ranges[i*3+1];return this.ranges[r*3]+t+Ah(e)}mapResult(e,t=1){return this._map(e,t,!1)}map(e,t=1){return this._map(e,t,!0)}_map(e,t,r){let i=0,s=this.inverted?2:1,o=this.inverted?1:2;for(let l=0;l<this.ranges.length;l+=3){let a=this.ranges[l]-(this.inverted?i:0);if(a>e)break;let c=this.ranges[l+s],d=this.ranges[l+o],u=a+c;if(e<=u){let f=c?e==a?-1:e==u?1:t:t,h=a+i+(f<0?0:d);if(r)return h;let p=e==(t<0?a:u)?null:Ch(l/3,e-a),m=0;return c&&(m|=e==a?Ia:e==u?Oa:Rr,(t<0?e!=a:e!=u)&&(m|=Da)),new vn(h,m,p)}i+=d-c}return r?e+i:new vn(e+i,0,null)}touches(e,t){let r=0,i=Ea(t),s=this.inverted?2:1,o=this.inverted?1:2;for(let l=0;l<this.ranges.length;l+=3){let a=this.ranges[l]-(this.inverted?r:0);if(a>e)break;let c=this.ranges[l+s],d=a+c;if(e<=d&&l==i*3)return!0;r+=this.ranges[l+o]-c}return!1}forEach(e){let t=this.inverted?2:1,r=this.inverted?1:2;for(let i=0,s=0;i<this.ranges.length;i+=3){let o=this.ranges[i],l=o-(this.inverted?s:0),a=o+(this.inverted?0:s),c=this.ranges[i+t],d=this.ranges[i+r];e(l,l+c,a,a+d),s+=d-c}}invert(){return new n(this.ranges,!this.inverted)}toString(){return(this.inverted?\"-\":\"\")+JSON.stringify(this.ranges)}static offset(e){return e==0?n.empty:new n(e<0?[0,-e,0]:[0,0,e])}};_e.empty=new _e([]);var Tn=class n{constructor(e,t,r=0,i=e?e.length:0){this.mirror=t,this.from=r,this.to=i,this._maps=e||[],this.ownData=!(e||t)}get maps(){return this._maps}slice(e=0,t=this.maps.length){return new n(this._maps,this.mirror,e,t)}appendMap(e,t){this.ownData||(this._maps=this._maps.slice(),this.mirror=this.mirror&&this.mirror.slice(),this.ownData=!0),this.to=this._maps.push(e),t!=null&&this.setMirror(this._maps.length-1,t)}appendMapping(e){for(let t=0,r=this._maps.length;t<e._maps.length;t++){let i=e.getMirror(t);this.appendMap(e._maps[t],i!=null&&i<t?r+i:void 0)}}getMirror(e){if(this.mirror){for(let t=0;t<this.mirror.length;t++)if(this.mirror[t]==e)return this.mirror[t+(t%2?-1:1)]}}setMirror(e,t){this.mirror||(this.mirror=[]),this.mirror.push(e,t)}appendMappingInverted(e){for(let t=e.maps.length-1,r=this._maps.length+e._maps.length;t>=0;t--){let i=e.getMirror(t);this.appendMap(e._maps[t].invert(),i!=null&&i>t?r-i-1:void 0)}}invert(){let e=new n;return e.appendMappingInverted(this),e}map(e,t=1){if(this.mirror)return this._map(e,t,!0);for(let r=this.from;r<this.to;r++)e=this._maps[r].map(e,t);return e}mapResult(e,t=1){return this._map(e,t,!1)}_map(e,t,r){let i=0;for(let s=this.from;s<this.to;s++){let o=this._maps[s],l=o.mapResult(e,t);if(l.recover!=null){let a=this.getMirror(s);if(a!=null&&a>s&&a<this.to){s=a,e=this._maps[a].recover(l.recover);continue}}i|=l.delInfo,e=l.pos}return r?e:new vn(e,i,null)}},vs=Object.create(null),Y=class{getMap(){return _e.empty}merge(e){return null}static fromJSON(e,t){if(!t||!t.stepType)throw new RangeError(\"Invalid input for Step.fromJSON\");let r=vs[t.stepType];if(!r)throw new RangeError(`No step type ${t.stepType} defined`);return r.fromJSON(e,t)}static jsonID(e,t){if(e in vs)throw new RangeError(\"Duplicate use of step JSON ID \"+e);return vs[e]=t,t.prototype.jsonID=e,t}},Z=class n{constructor(e,t){this.doc=e,this.failed=t}static ok(e){return new n(e,null)}static fail(e){return new n(null,e)}static fromReplace(e,t,r,i){try{return n.ok(e.replace(t,r,i))}catch(s){if(s instanceof nt)return n.fail(s.message);throw s}}};function Cs(n,e,t){let r=[];for(let i=0;i<n.childCount;i++){let s=n.child(i);s.content.size&&(s=s.copy(Cs(s.content,e,s))),s.isInline&&(s=e(s,t,i)),r.push(s)}return x.fromArray(r)}var En=class n extends Y{constructor(e,t,r){super(),this.from=e,this.to=t,this.mark=r}apply(e){let t=e.slice(this.from,this.to),r=e.resolve(this.from),i=r.node(r.sharedDepth(this.to)),s=new v(Cs(t.content,(o,l)=>!o.isAtom||!l.type.allowsMarkType(this.mark.type)?o:o.mark(this.mark.addToSet(o.marks)),i),t.openStart,t.openEnd);return Z.fromReplace(e,this.from,this.to,s)}invert(){return new Ve(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),r=e.mapResult(this.to,-1);return t.deleted&&r.deleted||t.pos>=r.pos?null:new n(t.pos,r.pos,this.mark)}merge(e){return e instanceof n&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new n(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:\"addMark\",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if(typeof t.from!=\"number\"||typeof t.to!=\"number\")throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");return new n(t.from,t.to,e.markFromJSON(t.mark))}};Y.jsonID(\"addMark\",En);var Ve=class n extends Y{constructor(e,t,r){super(),this.from=e,this.to=t,this.mark=r}apply(e){let t=e.slice(this.from,this.to),r=new v(Cs(t.content,i=>i.mark(this.mark.removeFromSet(i.marks)),e),t.openStart,t.openEnd);return Z.fromReplace(e,this.from,this.to,r)}invert(){return new En(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),r=e.mapResult(this.to,-1);return t.deleted&&r.deleted||t.pos>=r.pos?null:new n(t.pos,r.pos,this.mark)}merge(e){return e instanceof n&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new n(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:\"removeMark\",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if(typeof t.from!=\"number\"||typeof t.to!=\"number\")throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");return new n(t.from,t.to,e.markFromJSON(t.mark))}};Y.jsonID(\"removeMark\",Ve);var Mn=class n extends Y{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return Z.fail(\"No node at mark step\\'s position\");let r=t.type.create(t.attrs,null,this.mark.addToSet(t.marks));return Z.fromReplace(e,this.pos,this.pos+1,new v(x.from(r),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);if(t){let r=this.mark.addToSet(t.marks);if(r.length==t.marks.length){for(let i=0;i<t.marks.length;i++)if(!t.marks[i].isInSet(r))return new n(this.pos,t.marks[i]);return new n(this.pos,this.mark)}}return new Ft(this.pos,this.mark)}map(e){let t=e.mapResult(this.pos,1);return t.deletedAfter?null:new n(t.pos,this.mark)}toJSON(){return{stepType:\"addNodeMark\",pos:this.pos,mark:this.mark.toJSON()}}static fromJSON(e,t){if(typeof t.pos!=\"number\")throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");return new n(t.pos,e.markFromJSON(t.mark))}};Y.jsonID(\"addNodeMark\",Mn);var Ft=class n extends Y{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return Z.fail(\"No node at mark step\\'s position\");let r=t.type.create(t.attrs,null,this.mark.removeFromSet(t.marks));return Z.fromReplace(e,this.pos,this.pos+1,new v(x.from(r),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);return!t||!this.mark.isInSet(t.marks)?this:new Mn(this.pos,this.mark)}map(e){let t=e.mapResult(this.pos,1);return t.deletedAfter?null:new n(t.pos,this.mark)}toJSON(){return{stepType:\"removeNodeMark\",pos:this.pos,mark:this.mark.toJSON()}}static fromJSON(e,t){if(typeof t.pos!=\"number\")throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");return new n(t.pos,e.markFromJSON(t.mark))}};Y.jsonID(\"removeNodeMark\",Ft);var K=class n extends Y{constructor(e,t,r,i=!1){super(),this.from=e,this.to=t,this.slice=r,this.structure=i}apply(e){return this.structure&&Es(e,this.from,this.to)?Z.fail(\"Structure replace would overwrite content\"):Z.fromReplace(e,this.from,this.to,this.slice)}getMap(){return new _e([this.from,this.to-this.from,this.slice.size])}invert(e){return new n(this.from,this.from+this.slice.size,e.slice(this.from,this.to))}map(e){let t=e.mapResult(this.to,-1),r=this.from==this.to&&n.MAP_BIAS<0?t:e.mapResult(this.from,1);return r.deletedAcross&&t.deletedAcross?null:new n(r.pos,Math.max(r.pos,t.pos),this.slice,this.structure)}merge(e){if(!(e instanceof n)||e.structure||this.structure)return null;if(this.from+this.slice.size==e.from&&!this.slice.openEnd&&!e.slice.openStart){let t=this.slice.size+e.slice.size==0?v.empty:new v(this.slice.content.append(e.slice.content),this.slice.openStart,e.slice.openEnd);return new n(this.from,this.to+(e.to-e.from),t,this.structure)}else if(e.to==this.from&&!this.slice.openStart&&!e.slice.openEnd){let t=this.slice.size+e.slice.size==0?v.empty:new v(e.slice.content.append(this.slice.content),e.slice.openStart,this.slice.openEnd);return new n(e.from,this.to,t,this.structure)}else return null}toJSON(){let e={stepType:\"replace\",from:this.from,to:this.to};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(e,t){if(typeof t.from!=\"number\"||typeof t.to!=\"number\")throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");return new n(t.from,t.to,v.fromJSON(e,t.slice),!!t.structure)}};K.MAP_BIAS=1;Y.jsonID(\"replace\",K);var q=class n extends Y{constructor(e,t,r,i,s,o,l=!1){super(),this.from=e,this.to=t,this.gapFrom=r,this.gapTo=i,this.slice=s,this.insert=o,this.structure=l}apply(e){if(this.structure&&(Es(e,this.from,this.gapFrom)||Es(e,this.gapTo,this.to)))return Z.fail(\"Structure gap-replace would overwrite content\");let t=e.slice(this.gapFrom,this.gapTo);if(t.openStart||t.openEnd)return Z.fail(\"Gap is not a flat range\");let r=this.slice.insertAt(this.insert,t.content);return r?Z.fromReplace(e,this.from,this.to,r):Z.fail(\"Content does not fit in gap\")}getMap(){return new _e([this.from,this.gapFrom-this.from,this.insert,this.gapTo,this.to-this.gapTo,this.slice.size-this.insert])}invert(e){let t=this.gapTo-this.gapFrom;return new n(this.from,this.from+this.slice.size+t,this.from+this.insert,this.from+this.insert+t,e.slice(this.from,this.to).removeBetween(this.gapFrom-this.from,this.gapTo-this.from),this.gapFrom-this.from,this.structure)}map(e){let t=e.mapResult(this.from,1),r=e.mapResult(this.to,-1),i=this.from==this.gapFrom?t.pos:e.map(this.gapFrom,-1),s=this.to==this.gapTo?r.pos:e.map(this.gapTo,1);return t.deletedAcross&&r.deletedAcross||i<t.pos||s>r.pos?null:new n(t.pos,r.pos,i,s,this.slice,this.insert,this.structure)}toJSON(){let e={stepType:\"replaceAround\",from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(e,t){if(typeof t.from!=\"number\"||typeof t.to!=\"number\"||typeof t.gapFrom!=\"number\"||typeof t.gapTo!=\"number\"||typeof t.insert!=\"number\")throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");return new n(t.from,t.to,t.gapFrom,t.gapTo,v.fromJSON(e,t.slice),t.insert,!!t.structure)}};Y.jsonID(\"replaceAround\",q);function Es(n,e,t){let r=n.resolve(e),i=t-e,s=r.depth;for(;i>0&&s>0&&r.indexAfter(s)==r.node(s).childCount;)s--,i--;if(i>0){let o=r.node(s).maybeChild(r.indexAfter(s));for(;i>0;){if(!o||o.isLeaf)return!0;o=o.firstChild,i--}}return!1}function Rh(n,e,t,r){let i=[],s=[],o,l;n.doc.nodesBetween(e,t,(a,c,d)=>{if(!a.isInline)return;let u=a.marks;if(!r.isInSet(u)&&d.type.allowsMarkType(r.type)){let f=Math.max(c,e),h=Math.min(c+a.nodeSize,t),p=r.addToSet(u);for(let m=0;m<u.length;m++)u[m].isInSet(p)||(o&&o.to==f&&o.mark.eq(u[m])?o.to=h:i.push(o=new Ve(f,h,u[m])));l&&l.to==f?l.to=h:s.push(l=new En(f,h,r))}}),i.forEach(a=>n.step(a)),s.forEach(a=>n.step(a))}function Nh(n,e,t,r){let i=[],s=0;n.doc.nodesBetween(e,t,(o,l)=>{if(!o.isInline)return;s++;let a=null;if(r instanceof bn){let c=o.marks,d;for(;d=r.isInSet(c);)(a||(a=[])).push(d),c=d.removeFromSet(c)}else r?r.isInSet(o.marks)&&(a=[r]):a=o.marks;if(a&&a.length){let c=Math.min(l+o.nodeSize,t);for(let d=0;d<a.length;d++){let u=a[d],f;for(let h=0;h<i.length;h++){let p=i[h];p.step==s-1&&u.eq(i[h].style)&&(f=p)}f?(f.to=c,f.step=s):i.push({style:u,from:Math.max(l,e),to:c,step:s})}}}),i.forEach(o=>n.step(new Ve(o.from,o.to,o.style)))}function As(n,e,t,r=t.contentMatch,i=!0){let s=n.doc.nodeAt(e),o=[],l=e+1;for(let a=0;a<s.childCount;a++){let c=s.child(a),d=l+c.nodeSize,u=r.matchType(c.type);if(!u)o.push(new K(l,d,v.empty));else{r=u;for(let f=0;f<c.marks.length;f++)t.allowsMarkType(c.marks[f].type)||n.step(new Ve(l,d,c.marks[f]));if(i&&c.isText&&t.whitespace!=\"pre\"){let f,h=/\\\\r?\\\\n|\\\\r/g,p;for(;f=h.exec(c.text);)p||(p=new v(x.from(t.schema.text(\" \",t.allowedMarks(c.marks))),0,0)),o.push(new K(l+f.index,l+f.index+f[0].length,p))}}l=d}if(!r.validEnd){let a=r.fillBefore(x.empty,!0);n.replace(l,l,new v(a,0,0))}for(let a=o.length-1;a>=0;a--)n.step(o[a])}function Oh(n,e,t){return(e==0||n.canReplace(e,n.childCount))&&(t==n.childCount||n.canReplace(0,t))}function je(n){let t=n.parent.content.cutByIndex(n.startIndex,n.endIndex);for(let r=n.depth,i=0,s=0;;--r){let o=n.$from.node(r),l=n.$from.index(r)+i,a=n.$to.indexAfter(r)-s;if(r<n.depth&&o.canReplace(l,a,t))return r;if(r==0||o.type.spec.isolating||!Oh(o,l,a))break;l&&(i=1),a<o.childCount&&(s=1)}return null}function Ih(n,e,t){let{$from:r,$to:i,depth:s}=e,o=r.before(s+1),l=i.after(s+1),a=o,c=l,d=x.empty,u=0;for(let p=s,m=!1;p>t;p--)m||r.index(p)>0?(m=!0,d=x.from(r.node(p).copy(d)),u++):a--;let f=x.empty,h=0;for(let p=s,m=!1;p>t;p--)m||i.after(p+1)<i.end(p)?(m=!0,f=x.from(i.node(p).copy(f)),h++):c++;n.step(new q(a,c,o,l,new v(d.append(f),u,h),d.size-u,!0))}function jt(n,e,t=null,r=n){let i=Dh(n,e),s=i&&Lh(r,e);return s?i.map(Ma).concat({type:e,attrs:t}).concat(s.map(Ma)):null}function Ma(n){return{type:n,attrs:null}}function Dh(n,e){let{parent:t,startIndex:r,endIndex:i}=n,s=t.contentMatchAt(r).findWrapping(e);if(!s)return null;let o=s.length?s[0]:e;return t.canReplaceWith(r,i,o)?s:null}function Lh(n,e){let{parent:t,startIndex:r,endIndex:i}=n,s=t.child(r),o=e.contentMatch.findWrapping(s.type);if(!o)return null;let a=(o.length?o[o.length-1]:e).contentMatch;for(let c=r;a&&c<i;c++)a=a.matchType(t.child(c).type);return!a||!a.validEnd?null:o}function Ph(n,e,t){let r=x.empty;for(let o=t.length-1;o>=0;o--){if(r.size){let l=t[o].type.contentMatch.matchFragment(r);if(!l||!l.validEnd)throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\")}r=x.from(t[o].type.create(t[o].attrs,r))}let i=e.start,s=e.end;n.step(new q(i,s,i,s,new v(r,0,0),t.length,!0))}function Bh(n,e,t,r,i){if(!r.isTextblock)throw new RangeError(\"Type given to setBlockType should be a textblock\");let s=n.steps.length;n.doc.nodesBetween(e,t,(o,l)=>{let a=typeof i==\"function\"?i(o):i;if(o.isTextblock&&!o.hasMarkup(r,a)&&zh(n.doc,n.mapping.slice(s).map(l),r)){let c=null;if(r.schema.linebreakReplacement){let h=r.whitespace==\"pre\",p=!!r.contentMatch.matchType(r.schema.linebreakReplacement);h&&!p?c=!1:!h&&p&&(c=!0)}c===!1&&Pa(n,o,l,s),As(n,n.mapping.slice(s).map(l,1),r,void 0,c===null);let d=n.mapping.slice(s),u=d.map(l,1),f=d.map(l+o.nodeSize,1);return n.step(new q(u,f,u+1,f-1,new v(x.from(r.create(a,null,o.marks)),0,0),1,!0)),c===!0&&La(n,o,l,s),!1}})}function La(n,e,t,r){e.forEach((i,s)=>{if(i.isText){let o,l=/\\\\r?\\\\n|\\\\r/g;for(;o=l.exec(i.text);){let a=n.mapping.slice(r).map(t+1+s+o.index);n.replaceWith(a,a+1,e.type.schema.linebreakReplacement.create())}}})}function Pa(n,e,t,r){e.forEach((i,s)=>{if(i.type==i.type.schema.linebreakReplacement){let o=n.mapping.slice(r).map(t+1+s);n.replaceWith(o,o+1,e.type.schema.text(`\\n`))}})}function zh(n,e,t){let r=n.resolve(e),i=r.index();return r.parent.canReplaceWith(i,i+1,t)}function Hh(n,e,t,r,i){let s=n.doc.nodeAt(e);if(!s)throw new RangeError(\"No node at given position\");t||(t=s.type);let o=t.create(r,null,i||s.marks);if(s.isLeaf)return n.replaceWith(e,e+s.nodeSize,o);if(!t.validContent(s.content))throw new RangeError(\"Invalid content for node type \"+t.name);n.step(new q(e,e+s.nodeSize,e+1,e+s.nodeSize-1,new v(x.from(o),0,0),1,!0))}function ke(n,e,t=1,r){let i=n.resolve(e),s=i.depth-t,o=r&&r[r.length-1]||i.parent;if(s<0||i.parent.type.spec.isolating||!i.parent.canReplace(i.index(),i.parent.childCount)||!o.type.validContent(i.parent.content.cutByIndex(i.index(),i.parent.childCount)))return!1;for(let c=i.depth-1,d=t-2;c>s;c--,d--){let u=i.node(c),f=i.index(c);if(u.type.spec.isolating)return!1;let h=u.content.cutByIndex(f,u.childCount),p=r&&r[d+1];p&&(h=h.replaceChild(0,p.type.create(p.attrs)));let m=r&&r[d]||u;if(!u.canReplace(f+1,u.childCount)||!m.type.validContent(h))return!1}let l=i.indexAfter(s),a=r&&r[0];return i.node(s).canReplaceWith(l,l,a?a.type:i.node(s+1).type)}function $h(n,e,t=1,r){let i=n.doc.resolve(e),s=x.empty,o=x.empty;for(let l=i.depth,a=i.depth-t,c=t-1;l>a;l--,c--){s=x.from(i.node(l).copy(s));let d=r&&r[c];o=x.from(d?d.type.create(d.attrs,o):i.node(l).copy(o))}n.step(new K(e,e,new v(s.append(o),t,t),!0))}function Re(n,e){let t=n.resolve(e),r=t.index();return Ba(t.nodeBefore,t.nodeAfter)&&t.parent.canReplace(r,r+1)}function Fh(n,e){e.content.size||n.type.compatibleContent(e.type);let t=n.contentMatchAt(n.childCount),{linebreakReplacement:r}=n.type.schema;for(let i=0;i<e.childCount;i++){let s=e.child(i),o=s.type==r?n.type.schema.nodes.text:s.type;if(t=t.matchType(o),!t||!n.type.allowsMarks(s.marks))return!1}return t.validEnd}function Ba(n,e){return!!(n&&e&&!n.isLeaf&&Fh(n,e))}function Wt(n,e,t=-1){let r=n.resolve(e);for(let i=r.depth;;i--){let s,o,l=r.index(i);if(i==r.depth?(s=r.nodeBefore,o=r.nodeAfter):t>0?(s=r.node(i+1),l++,o=r.node(i).maybeChild(l)):(s=r.node(i).maybeChild(l-1),o=r.node(i+1)),s&&!s.isTextblock&&Ba(s,o)&&r.node(i).canReplace(l,l+1))return e;if(i==0)break;e=t<0?r.before(i):r.after(i)}}function _h(n,e,t){let r=null,{linebreakReplacement:i}=n.doc.type.schema,s=n.doc.resolve(e-t),o=s.node().type;if(i&&o.inlineContent){let d=o.whitespace==\"pre\",u=!!o.contentMatch.matchType(i);d&&!u?r=!1:!d&&u&&(r=!0)}let l=n.steps.length;if(r===!1){let d=n.doc.resolve(e+t);Pa(n,d.node(),d.before(),l)}o.inlineContent&&As(n,e+t-1,o,s.node().contentMatchAt(s.index()),r==null);let a=n.mapping.slice(l),c=a.map(e-t);if(n.step(new K(c,a.map(e+t,-1),v.empty,!0)),r===!0){let d=n.doc.resolve(c);La(n,d.node(),d.before(),n.steps.length)}return n}function Vh(n,e,t){let r=n.resolve(e);if(r.parent.canReplaceWith(r.index(),r.index(),t))return e;if(r.parentOffset==0)for(let i=r.depth-1;i>=0;i--){let s=r.index(i);if(r.node(i).canReplaceWith(s,s,t))return r.before(i+1);if(s>0)return null}if(r.parentOffset==r.parent.content.size)for(let i=r.depth-1;i>=0;i--){let s=r.indexAfter(i);if(r.node(i).canReplaceWith(s,s,t))return r.after(i+1);if(s<r.node(i).childCount)return null}return null}function Ir(n,e,t){let r=n.resolve(e);if(!t.content.size)return e;let i=t.content;for(let s=0;s<t.openStart;s++)i=i.firstChild.content;for(let s=1;s<=(t.openStart==0&&t.size?2:1);s++)for(let o=r.depth;o>=0;o--){let l=o==r.depth?0:r.pos<=(r.start(o+1)+r.end(o+1))/2?-1:1,a=r.index(o)+(l>0?1:0),c=r.node(o),d=!1;if(s==1)d=c.canReplace(a,a,i);else{let u=c.contentMatchAt(a).findWrapping(i.firstChild.type);d=u&&c.canReplaceWith(a,a,u[0])}if(d)return l==0?r.pos:l<0?r.before(o+1):r.after(o+1)}return null}function Cn(n,e,t=e,r=v.empty){if(e==t&&!r.size)return null;let i=n.resolve(e),s=n.resolve(t);return za(i,s,r)?new K(e,t,r):new Ms(i,s,r).fit()}function za(n,e,t){return!t.openStart&&!t.openEnd&&n.start()==e.start()&&n.parent.canReplace(n.index(),e.index(),t.content)}var Ms=class{constructor(e,t,r){this.$from=e,this.$to=t,this.unplaced=r,this.frontier=[],this.placed=x.empty;for(let i=0;i<=e.depth;i++){let s=e.node(i);this.frontier.push({type:s.type,match:s.contentMatchAt(e.indexAfter(i))})}for(let i=e.depth;i>0;i--)this.placed=x.from(e.node(i).copy(this.placed))}get depth(){return this.frontier.length-1}fit(){for(;this.unplaced.size;){let c=this.findFittable();c?this.placeNodes(c):this.openMore()||this.dropNode()}let e=this.mustMoveInline(),t=this.placed.size-this.depth-this.$from.depth,r=this.$from,i=this.close(e<0?this.$to:r.doc.resolve(e));if(!i)return null;let s=this.placed,o=r.depth,l=i.depth;for(;o&&l&&s.childCount==1;)s=s.firstChild.content,o--,l--;let a=new v(s,o,l);return e>-1?new q(r.pos,e,this.$to.pos,this.$to.end(),a,t):a.size||r.pos!=this.$to.pos?new K(r.pos,i.pos,a):null}findFittable(){let e=this.unplaced.openStart;for(let t=this.unplaced.content,r=0,i=this.unplaced.openEnd;r<e;r++){let s=t.firstChild;if(t.childCount>1&&(i=0),s.type.spec.isolating&&i<=r){e=r;break}t=s.content}for(let t=1;t<=2;t++)for(let r=t==1?e:this.unplaced.openStart;r>=0;r--){let i,s=null;r?(s=Ca(this.unplaced.content,r-1).firstChild,i=s.content):i=this.unplaced.content;let o=i.firstChild;for(let l=this.depth;l>=0;l--){let{type:a,match:c}=this.frontier[l],d,u=null;if(t==1&&(o?c.matchType(o.type)||(u=c.fillBefore(x.from(o),!1)):s&&a.compatibleContent(s.type)))return{sliceDepth:r,frontierDepth:l,parent:s,inject:u};if(t==2&&o&&(d=c.findWrapping(o.type)))return{sliceDepth:r,frontierDepth:l,parent:s,wrap:d};if(s&&c.matchType(s.type))break}}}openMore(){let{content:e,openStart:t,openEnd:r}=this.unplaced;return Aa(e,-1)<=t?!1:(this.unplaced.size>1&&Aa(e,1)>r&&r++,this.unplaced=new v(e,t+1,r),!0)}dropNode(){let{content:e,openStart:t,openEnd:r}=this.unplaced,i=Ca(e,t);if(i.childCount<=1&&t>0){let s=e.size-t<=t+i.size;this.unplaced=new v(Sn(e,t-1,1),t-1,s?t-1:r)}else this.unplaced=new v(Sn(e,t,1),t,r)}placeNodes({sliceDepth:e,frontierDepth:t,parent:r,inject:i,wrap:s}){for(;this.depth>t;)this.closeFrontierNode();if(s)for(let m=0;m<s.length;m++)this.openFrontierNode(s[m]);let o=this.unplaced,l=r?r.content:o.content,a=o.openStart-e,c=0,d=[],{match:u,type:f}=this.frontier[t];if(i){for(let m=0;m<i.childCount;m++)d.push(i.child(m));u=u.matchFragment(i)}let h=l.size+e-(o.content.size-o.openEnd);for(;c<l.childCount;){let m=l.child(c),g=u.matchType(m.type);if(!g)break;c++,(c>1||a==0||m.content.size)&&(u=g,d.push(Ha(m.mark(f.allowedMarks(m.marks)),c==1?a:0,c==l.childCount?h:-1)))}let p=c==l.childCount;p||(h=-1),this.placed=wn(this.placed,t,x.from(d)),this.frontier[t].match=u,p&&h<0&&r&&r.type==this.frontier[this.depth].type&&this.frontier.length>1&&this.closeFrontierNode();for(let m=0,g=l;m<h;m++){let y=g.lastChild;this.frontier.push({type:y.type,match:y.contentMatchAt(y.childCount)}),g=y.content}this.unplaced=p?e==0?v.empty:new v(Sn(o.content,e-1,1),e-1,h<0?o.openEnd:e-1):new v(Sn(o.content,e,c),o.openStart,o.openEnd)}mustMoveInline(){if(!this.$to.parent.isTextblock)return-1;let e=this.frontier[this.depth],t;if(!e.type.isTextblock||!Ts(this.$to,this.$to.depth,e.type,e.match,!1)||this.$to.depth==this.depth&&(t=this.findCloseLevel(this.$to))&&t.depth==this.depth)return-1;let{depth:r}=this.$to,i=this.$to.after(r);for(;r>1&&i==this.$to.end(--r);)++i;return i}findCloseLevel(e){e:for(let t=Math.min(this.depth,e.depth);t>=0;t--){let{match:r,type:i}=this.frontier[t],s=t<e.depth&&e.end(t+1)==e.pos+(e.depth-(t+1)),o=Ts(e,t,i,r,s);if(o){for(let l=t-1;l>=0;l--){let{match:a,type:c}=this.frontier[l],d=Ts(e,l,c,a,!0);if(!d||d.childCount)continue e}return{depth:t,fit:o,move:s?e.doc.resolve(e.after(t+1)):e}}}}close(e){let t=this.findCloseLevel(e);if(!t)return null;for(;this.depth>t.depth;)this.closeFrontierNode();t.fit.childCount&&(this.placed=wn(this.placed,t.depth,t.fit)),e=t.move;for(let r=t.depth+1;r<=e.depth;r++){let i=e.node(r),s=i.type.contentMatch.fillBefore(i.content,!0,e.index(r));this.openFrontierNode(i.type,i.attrs,s)}return e}openFrontierNode(e,t=null,r){let i=this.frontier[this.depth];i.match=i.match.matchType(e),this.placed=wn(this.placed,this.depth,x.from(e.create(t,r))),this.frontier.push({type:e,match:e.contentMatch})}closeFrontierNode(){let t=this.frontier.pop().match.fillBefore(x.empty,!0);t.childCount&&(this.placed=wn(this.placed,this.frontier.length,t))}};function Sn(n,e,t){return e==0?n.cutByIndex(t,n.childCount):n.replaceChild(0,n.firstChild.copy(Sn(n.firstChild.content,e-1,t)))}function wn(n,e,t){return e==0?n.append(t):n.replaceChild(n.childCount-1,n.lastChild.copy(wn(n.lastChild.content,e-1,t)))}function Ca(n,e){for(let t=0;t<e;t++)n=n.firstChild.content;return n}function Ha(n,e,t){if(e<=0)return n;let r=n.content;return e>1&&(r=r.replaceChild(0,Ha(r.firstChild,e-1,r.childCount==1?t-1:0))),e>0&&(r=n.type.contentMatch.fillBefore(r).append(r),t<=0&&(r=r.append(n.type.contentMatch.matchFragment(r).fillBefore(x.empty,!0)))),n.copy(r)}function Ts(n,e,t,r,i){let s=n.node(e),o=i?n.indexAfter(e):n.index(e);if(o==s.childCount&&!t.compatibleContent(s.type))return null;let l=r.fillBefore(s.content,!0,o);return l&&!jh(t,s.content,o)?l:null}function jh(n,e,t){for(let r=t;r<e.childCount;r++)if(!n.allowsMarks(e.child(r).marks))return!0;return!1}function Wh(n){return n.spec.defining||n.spec.definingForContent}function Aa(n,e){for(let t=0;;t++){let r=e<0?n.firstChild:n.lastChild;if(!r||r.isAtom)return t;n=r.content}}function Uh(n,e,t,r){if(!r.size)return n.deleteRange(e,t);let i=n.doc.resolve(e),s=n.doc.resolve(t);if(za(i,s,r))return n.step(new K(e,t,r));let o=Fa(i,s);o[o.length-1]==0&&o.pop();let l=-(i.depth+1);o.unshift(l);for(let f=i.depth,h=i.pos-1;f>0;f--,h--){let p=i.node(f).type.spec;if(p.defining||p.definingAsContext||p.isolating)break;o.indexOf(f)>-1?l=f:i.before(f)==h&&o.splice(1,0,-f)}let a=o.indexOf(l),c=[],d=r.openStart;for(let f=r.content,h=0;;h++){let p=f.firstChild;if(c.push(p),h==r.openStart)break;f=p.content}for(let f=d-1;f>=0;f--){let h=c[f],p=Wh(h.type);if(p&&!h.sameMarkup(i.node(Math.abs(l)-1)))d=f;else if(p||!h.type.isTextblock)break}for(let f=r.openStart;f>=0;f--){let h=(f+d+1)%(r.openStart+1),p=c[h];if(p)for(let m=0;m<o.length;m++){let g=o[(m+a)%o.length],y=!0;g<0&&(y=!1,g=-g);let b=i.node(g-1),w=i.index(g-1);if(b.canReplaceWith(w,w,p.type,p.marks))return n.replace(i.before(g),y?s.after(g):t,new v($a(r.content,0,r.openStart,h),h,r.openEnd))}}let u=n.steps.length;for(let f=o.length-1;f>=0&&(n.replace(e,t,r),!(n.steps.length>u));f--){let h=o[f];h<0||(e=i.before(h),t=s.after(h))}}function $a(n,e,t,r,i){if(e<t){let s=n.firstChild;n=n.replaceChild(0,s.copy($a(s.content,e+1,t,r,s)))}if(e>r){let s=i.contentMatchAt(0),o=s.fillBefore(n).append(n);n=o.append(s.matchFragment(o).fillBefore(x.empty,!0))}return n}function Kh(n,e,t,r){if(!r.isInline&&e==t&&n.doc.resolve(e).parent.content.size){let i=Vh(n.doc,e,r.type);i!=null&&(e=t=i)}n.replaceRange(e,t,new v(x.from(r),0,0))}function qh(n,e,t){let r=n.doc.resolve(e),i=n.doc.resolve(t);if(r.parent.isTextblock&&i.parent.isTextblock&&r.start()!=i.start()&&r.parentOffset==0&&i.parentOffset==0){let o=r.sharedDepth(t),l=!1;for(let a=r.depth;a>o;a--)r.node(a).type.spec.isolating&&(l=!0);for(let a=i.depth;a>o;a--)i.node(a).type.spec.isolating&&(l=!0);if(!l){for(let a=r.depth;a>0&&e==r.start(a);a--)e=r.before(a);for(let a=i.depth;a>0&&t==i.start(a);a--)t=i.before(a);r=n.doc.resolve(e),i=n.doc.resolve(t)}}let s=Fa(r,i);for(let o=0;o<s.length;o++){let l=s[o],a=o==s.length-1;if(a&&l==0||r.node(l).type.contentMatch.validEnd)return n.delete(r.start(l),i.end(l));if(l>0&&(a||r.node(l-1).canReplace(r.index(l-1),i.indexAfter(l-1))))return n.delete(r.before(l),i.after(l))}for(let o=1;o<=r.depth&&o<=i.depth;o++)if(e-r.start(o)==r.depth-o&&t>r.end(o)&&i.end(o)-t!=i.depth-o&&r.start(o-1)==i.start(o-1)&&r.node(o-1).canReplace(r.index(o-1),i.index(o-1)))return n.delete(r.before(o),t);n.delete(e,t)}function Fa(n,e){let t=[],r=Math.min(n.depth,e.depth);for(let i=r;i>=0;i--){let s=n.start(i);if(s<n.pos-(n.depth-i)||e.end(i)>e.pos+(e.depth-i)||n.node(i).type.spec.isolating||e.node(i).type.spec.isolating)break;(s==e.start(i)||i==n.depth&&i==e.depth&&n.parent.inlineContent&&e.parent.inlineContent&&i&&e.start(i-1)==s-1)&&t.push(i)}return t}var Nr=class n extends Y{constructor(e,t,r){super(),this.pos=e,this.attr=t,this.value=r}apply(e){let t=e.nodeAt(this.pos);if(!t)return Z.fail(\"No node at attribute step\\'s position\");let r=Object.create(null);for(let s in t.attrs)r[s]=t.attrs[s];r[this.attr]=this.value;let i=t.type.create(r,null,t.marks);return Z.fromReplace(e,this.pos,this.pos+1,new v(x.from(i),0,t.isLeaf?0:1))}getMap(){return _e.empty}invert(e){return new n(this.pos,this.attr,e.nodeAt(this.pos).attrs[this.attr])}map(e){let t=e.mapResult(this.pos,1);return t.deletedAfter?null:new n(t.pos,this.attr,this.value)}toJSON(){return{stepType:\"attr\",pos:this.pos,attr:this.attr,value:this.value}}static fromJSON(e,t){if(typeof t.pos!=\"number\"||typeof t.attr!=\"string\")throw new RangeError(\"Invalid input for AttrStep.fromJSON\");return new n(t.pos,t.attr,t.value)}};Y.jsonID(\"attr\",Nr);var Or=class n extends Y{constructor(e,t){super(),this.attr=e,this.value=t}apply(e){let t=Object.create(null);for(let i in e.attrs)t[i]=e.attrs[i];t[this.attr]=this.value;let r=e.type.create(t,e.content,e.marks);return Z.ok(r)}getMap(){return _e.empty}invert(e){return new n(this.attr,e.attrs[this.attr])}map(e){return this}toJSON(){return{stepType:\"docAttr\",attr:this.attr,value:this.value}}static fromJSON(e,t){if(typeof t.attr!=\"string\")throw new RangeError(\"Invalid input for DocAttrStep.fromJSON\");return new n(t.attr,t.value)}};Y.jsonID(\"docAttr\",Or);var _t=class extends Error{};_t=function n(e){let t=Error.call(this,e);return t.__proto__=n.prototype,t};_t.prototype=Object.create(Error.prototype);_t.prototype.constructor=_t;_t.prototype.name=\"TransformError\";var Vt=class{constructor(e){this.doc=e,this.steps=[],this.docs=[],this.mapping=new Tn}get before(){return this.docs.length?this.docs[0]:this.doc}step(e){let t=this.maybeStep(e);if(t.failed)throw new _t(t.failed);return this}maybeStep(e){let t=e.apply(this.doc);return t.failed||this.addStep(e,t.doc),t}get docChanged(){return this.steps.length>0}changedRange(){let e=1e9,t=-1e9;for(let r=0;r<this.mapping.maps.length;r++){let i=this.mapping.maps[r];r&&(e=i.map(e,1),t=i.map(t,-1)),i.forEach((s,o,l,a)=>{e=Math.min(e,l),t=Math.max(t,a)})}return e==1e9?null:{from:e,to:t}}addStep(e,t){this.docs.push(this.doc),this.steps.push(e),this.mapping.appendMap(e.getMap()),this.doc=t}replace(e,t=e,r=v.empty){let i=Cn(this.doc,e,t,r);return i&&this.step(i),this}replaceWith(e,t,r){return this.replace(e,t,new v(x.from(r),0,0))}delete(e,t){return this.replace(e,t,v.empty)}insert(e,t){return this.replaceWith(e,e,t)}replaceRange(e,t,r){return Uh(this,e,t,r),this}replaceRangeWith(e,t,r){return Kh(this,e,t,r),this}deleteRange(e,t){return qh(this,e,t),this}lift(e,t){return Ih(this,e,t),this}join(e,t=1){return _h(this,e,t),this}wrap(e,t){return Ph(this,e,t),this}setBlockType(e,t=e,r,i=null){return Bh(this,e,t,r,i),this}setNodeMarkup(e,t,r=null,i){return Hh(this,e,t,r,i),this}setNodeAttribute(e,t,r){return this.step(new Nr(e,t,r)),this}setDocAttribute(e,t){return this.step(new Or(e,t)),this}addNodeMark(e,t){return this.step(new Mn(e,t)),this}removeNodeMark(e,t){let r=this.doc.nodeAt(e);if(!r)throw new RangeError(\"No node at position \"+e);if(t instanceof P)t.isInSet(r.marks)&&this.step(new Ft(e,t));else{let i=r.marks,s,o=[];for(;s=t.isInSet(i);)o.push(new Ft(e,s)),i=s.removeFromSet(i);for(let l=o.length-1;l>=0;l--)this.step(o[l])}return this}split(e,t=1,r){return $h(this,e,t,r),this}addMark(e,t,r){return Rh(this,e,t,r),this}removeMark(e,t,r){return Nh(this,e,t,r),this}clearIncompatible(e,t,r){return As(this,e,t,r),this}};var Rs=Object.create(null),R=class{constructor(e,t,r){this.$anchor=e,this.$head=t,this.ranges=r||[new Lr(e.min(t),e.max(t))]}get anchor(){return this.$anchor.pos}get head(){return this.$head.pos}get from(){return this.$from.pos}get to(){return this.$to.pos}get $from(){return this.ranges[0].$from}get $to(){return this.ranges[0].$to}get empty(){let e=this.ranges;for(let t=0;t<e.length;t++)if(e[t].$from.pos!=e[t].$to.pos)return!1;return!0}content(){return this.$from.doc.slice(this.from,this.to,!0)}replace(e,t=v.empty){let r=t.content.lastChild,i=null;for(let l=0;l<t.openEnd;l++)i=r,r=r.lastChild;let s=e.steps.length,o=this.ranges;for(let l=0;l<o.length;l++){let{$from:a,$to:c}=o[l],d=e.mapping.slice(s);e.replaceRange(d.map(a.pos),d.map(c.pos),l?v.empty:t),l==0&&ja(e,s,(r?r.isInline:i&&i.isTextblock)?-1:1)}}replaceWith(e,t){let r=e.steps.length,i=this.ranges;for(let s=0;s<i.length;s++){let{$from:o,$to:l}=i[s],a=e.mapping.slice(r),c=a.map(o.pos),d=a.map(l.pos);s?e.deleteRange(c,d):(e.replaceRangeWith(c,d,t),ja(e,r,t.isInline?-1:1))}}static findFrom(e,t,r=!1){let i=e.parent.inlineContent?new T(e):Ut(e.node(0),e.parent,e.pos,e.index(),t,r);if(i)return i;for(let s=e.depth-1;s>=0;s--){let o=t<0?Ut(e.node(0),e.node(s),e.before(s+1),e.index(s),t,r):Ut(e.node(0),e.node(s),e.after(s+1),e.index(s)+1,t,r);if(o)return o}return null}static near(e,t=1){return this.findFrom(e,t)||this.findFrom(e,-t)||new ce(e.node(0))}static atStart(e){return Ut(e,e,0,0,1)||new ce(e)}static atEnd(e){return Ut(e,e,e.content.size,e.childCount,-1)||new ce(e)}static fromJSON(e,t){if(!t||!t.type)throw new RangeError(\"Invalid input for Selection.fromJSON\");let r=Rs[t.type];if(!r)throw new RangeError(`No selection type ${t.type} defined`);return r.fromJSON(e,t)}static jsonID(e,t){if(e in Rs)throw new RangeError(\"Duplicate use of selection JSON ID \"+e);return Rs[e]=t,t.prototype.jsonID=e,t}getBookmark(){return T.between(this.$anchor,this.$head).getBookmark()}};R.prototype.visible=!0;var Lr=class{constructor(e,t){this.$from=e,this.$to=t}},_a=!1;function Va(n){!_a&&!n.parent.inlineContent&&(_a=!0,console.warn(\"TextSelection endpoint not pointing into a node with inline content (\"+n.parent.type.name+\")\"))}var T=class n extends R{constructor(e,t=e){Va(e),Va(t),super(e,t)}get $cursor(){return this.$anchor.pos==this.$head.pos?this.$head:null}map(e,t){let r=e.resolve(t.map(this.head));if(!r.parent.inlineContent)return R.near(r);let i=e.resolve(t.map(this.anchor));return new n(i.parent.inlineContent?i:r,r)}replace(e,t=v.empty){if(super.replace(e,t),t==v.empty){let r=this.$from.marksAcross(this.$to);r&&e.ensureMarks(r)}}eq(e){return e instanceof n&&e.anchor==this.anchor&&e.head==this.head}getBookmark(){return new Pr(this.anchor,this.head)}toJSON(){return{type:\"text\",anchor:this.anchor,head:this.head}}static fromJSON(e,t){if(typeof t.anchor!=\"number\"||typeof t.head!=\"number\")throw new RangeError(\"Invalid input for TextSelection.fromJSON\");return new n(e.resolve(t.anchor),e.resolve(t.head))}static create(e,t,r=t){let i=e.resolve(t);return new this(i,r==t?i:e.resolve(r))}static between(e,t,r){let i=e.pos-t.pos;if((!r||i)&&(r=i>=0?1:-1),!t.parent.inlineContent){let s=R.findFrom(t,r,!0)||R.findFrom(t,-r,!0);if(s)t=s.$head;else return R.near(t,r)}return e.parent.inlineContent||(i==0?e=t:(e=(R.findFrom(e,-r,!0)||R.findFrom(e,r,!0)).$anchor,e.pos<t.pos!=i<0&&(e=t))),new n(e,t)}};R.jsonID(\"text\",T);var Pr=class n{constructor(e,t){this.anchor=e,this.head=t}map(e){return new n(e.map(this.anchor),e.map(this.head))}resolve(e){return T.between(e.resolve(this.anchor),e.resolve(this.head))}},M=class n extends R{constructor(e){let t=e.nodeAfter,r=e.node(0).resolve(e.pos+t.nodeSize);super(e,r),this.node=t}map(e,t){let{deleted:r,pos:i}=t.mapResult(this.anchor),s=e.resolve(i);return r?R.near(s):new n(s)}content(){return new v(x.from(this.node),0,0)}eq(e){return e instanceof n&&e.anchor==this.anchor}toJSON(){return{type:\"node\",anchor:this.anchor}}getBookmark(){return new Os(this.anchor)}static fromJSON(e,t){if(typeof t.anchor!=\"number\")throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");return new n(e.resolve(t.anchor))}static create(e,t){return new n(e.resolve(t))}static isSelectable(e){return!e.isText&&e.type.spec.selectable!==!1}};M.prototype.visible=!1;R.jsonID(\"node\",M);var Os=class n{constructor(e){this.anchor=e}map(e){let{deleted:t,pos:r}=e.mapResult(this.anchor);return t?new Pr(r,r):new n(r)}resolve(e){let t=e.resolve(this.anchor),r=t.nodeAfter;return r&&M.isSelectable(r)?new M(t):R.near(t)}},ce=class n extends R{constructor(e){super(e.resolve(0),e.resolve(e.content.size))}replace(e,t=v.empty){if(t==v.empty){e.delete(0,e.doc.content.size);let r=R.atStart(e.doc);r.eq(e.selection)||e.setSelection(r)}else super.replace(e,t)}toJSON(){return{type:\"all\"}}static fromJSON(e){return new n(e)}map(e){return new n(e)}eq(e){return e instanceof n}getBookmark(){return Jh}};R.jsonID(\"all\",ce);var Jh={map(){return this},resolve(n){return new ce(n)}};function Ut(n,e,t,r,i,s=!1){if(e.inlineContent)return T.create(n,t);for(let o=r-(i>0?0:1);i>0?o<e.childCount:o>=0;o+=i){let l=e.child(o);if(l.isAtom){if(!s&&M.isSelectable(l))return M.create(n,t-(i<0?l.nodeSize:0))}else{let a=Ut(n,l,t+i,i<0?l.childCount:0,i,s);if(a)return a}t+=l.nodeSize*i}return null}function ja(n,e,t){let r=n.steps.length-1;if(r<e)return;let i=n.steps[r];if(!(i instanceof K||i instanceof q))return;let s=n.mapping.maps[r],o;s.forEach((l,a,c,d)=>{o==null&&(o=d)}),n.setSelection(R.near(n.doc.resolve(o),t))}var Wa=1,Dr=2,Ua=4,Is=class extends Vt{constructor(e){super(e.doc),this.curSelectionFor=0,this.updated=0,this.meta=Object.create(null),this.time=Date.now(),this.curSelection=e.selection,this.storedMarks=e.storedMarks}get selection(){return this.curSelectionFor<this.steps.length&&(this.curSelection=this.curSelection.map(this.doc,this.mapping.slice(this.curSelectionFor)),this.curSelectionFor=this.steps.length),this.curSelection}setSelection(e){if(e.$from.doc!=this.doc)throw new RangeError(\"Selection passed to setSelection must point at the current document\");return this.curSelection=e,this.curSelectionFor=this.steps.length,this.updated=(this.updated|Wa)&~Dr,this.storedMarks=null,this}get selectionSet(){return(this.updated&Wa)>0}setStoredMarks(e){return this.storedMarks=e,this.updated|=Dr,this}ensureMarks(e){return P.sameSet(this.storedMarks||this.selection.$from.marks(),e)||this.setStoredMarks(e),this}addStoredMark(e){return this.ensureMarks(e.addToSet(this.storedMarks||this.selection.$head.marks()))}removeStoredMark(e){return this.ensureMarks(e.removeFromSet(this.storedMarks||this.selection.$head.marks()))}get storedMarksSet(){return(this.updated&Dr)>0}addStep(e,t){super.addStep(e,t),this.updated=this.updated&~Dr,this.storedMarks=null}setTime(e){return this.time=e,this}replaceSelection(e){return this.selection.replace(this,e),this}replaceSelectionWith(e,t=!0){let r=this.selection;return t&&(e=e.mark(this.storedMarks||(r.empty?r.$from.marks():r.$from.marksAcross(r.$to)||P.none))),r.replaceWith(this,e),this}deleteSelection(){return this.selection.replace(this),this}insertText(e,t,r){let i=this.doc.type.schema;if(t==null)return e?this.replaceSelectionWith(i.text(e),!0):this.deleteSelection();{if(r==null&&(r=t),!e)return this.deleteRange(t,r);let s=this.storedMarks;if(!s){let o=this.doc.resolve(t);s=r==t?o.marks():o.marksAcross(this.doc.resolve(r))}return this.replaceRangeWith(t,r,i.text(e,s)),!this.selection.empty&&this.selection.to==t+e.length&&this.setSelection(R.near(this.selection.$to)),this}}setMeta(e,t){return this.meta[typeof e==\"string\"?e:e.key]=t,this}getMeta(e){return this.meta[typeof e==\"string\"?e:e.key]}get isGeneric(){for(let e in this.meta)return!1;return!0}scrollIntoView(){return this.updated|=Ua,this}get scrolledIntoView(){return(this.updated&Ua)>0}};function Ka(n,e){return!e||!n?n:n.bind(e)}var xt=class{constructor(e,t,r){this.name=e,this.init=Ka(t.init,r),this.apply=Ka(t.apply,r)}},Xh=[new xt(\"doc\",{init(n){return n.doc||n.schema.topNodeType.createAndFill()},apply(n){return n.doc}}),new xt(\"selection\",{init(n,e){return n.selection||R.atStart(e.doc)},apply(n){return n.selection}}),new xt(\"storedMarks\",{init(n){return n.storedMarks||null},apply(n,e,t,r){return r.selection.$cursor?n.storedMarks:null}}),new xt(\"scrollToSelection\",{init(){return 0},apply(n,e){return n.scrolledIntoView?e+1:e}})],An=class{constructor(e,t){this.schema=e,this.plugins=[],this.pluginsByKey=Object.create(null),this.fields=Xh.slice(),t&&t.forEach(r=>{if(this.pluginsByKey[r.key])throw new RangeError(\"Adding different instances of a keyed plugin (\"+r.key+\")\");this.plugins.push(r),this.pluginsByKey[r.key]=r,r.spec.state&&this.fields.push(new xt(r.key,r.spec.state,r))})}},kt=class n{constructor(e){this.config=e}get schema(){return this.config.schema}get plugins(){return this.config.plugins}apply(e){return this.applyTransaction(e).state}filterTransaction(e,t=-1){for(let r=0;r<this.config.plugins.length;r++)if(r!=t){let i=this.config.plugins[r];if(i.spec.filterTransaction&&!i.spec.filterTransaction.call(i,e,this))return!1}return!0}applyTransaction(e){if(!this.filterTransaction(e))return{state:this,transactions:[]};let t=[e],r=this.applyInner(e),i=null;for(;;){let s=!1;for(let o=0;o<this.config.plugins.length;o++){let l=this.config.plugins[o];if(l.spec.appendTransaction){let a=i?i[o].n:0,c=i?i[o].state:this,d=a<t.length&&l.spec.appendTransaction.call(l,a?t.slice(a):t,c,r);if(d&&r.filterTransaction(d,o)){if(d.setMeta(\"appendedTransaction\",e),!i){i=[];for(let u=0;u<this.config.plugins.length;u++)i.push(u<o?{state:r,n:t.length}:{state:this,n:0})}t.push(d),r=r.applyInner(d),s=!0}i&&(i[o]={state:r,n:t.length})}}if(!s)return{state:r,transactions:t}}}applyInner(e){if(!e.before.eq(this.doc))throw new RangeError(\"Applying a mismatched transaction\");let t=new n(this.config),r=this.config.fields;for(let i=0;i<r.length;i++){let s=r[i];t[s.name]=s.apply(e,this[s.name],this,t)}return t}get tr(){return new Is(this)}static create(e){let t=new An(e.doc?e.doc.type.schema:e.schema,e.plugins),r=new n(t);for(let i=0;i<t.fields.length;i++)r[t.fields[i].name]=t.fields[i].init(e,r);return r}reconfigure(e){let t=new An(this.schema,e.plugins),r=t.fields,i=new n(t);for(let s=0;s<r.length;s++){let o=r[s].name;i[o]=this.hasOwnProperty(o)?this[o]:r[s].init(e,i)}return i}toJSON(e){let t={doc:this.doc.toJSON(),selection:this.selection.toJSON()};if(this.storedMarks&&(t.storedMarks=this.storedMarks.map(r=>r.toJSON())),e&&typeof e==\"object\")for(let r in e){if(r==\"doc\"||r==\"selection\")throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\");let i=e[r],s=i.spec.state;s&&s.toJSON&&(t[r]=s.toJSON.call(i,this[i.key]))}return t}static fromJSON(e,t,r){if(!t)throw new RangeError(\"Invalid input for EditorState.fromJSON\");if(!e.schema)throw new RangeError(\"Required config field \\'schema\\' missing\");let i=new An(e.schema,e.plugins),s=new n(i);return i.fields.forEach(o=>{if(o.name==\"doc\")s.doc=Ae.fromJSON(e.schema,t.doc);else if(o.name==\"selection\")s.selection=R.fromJSON(s.doc,t.selection);else if(o.name==\"storedMarks\")t.storedMarks&&(s.storedMarks=t.storedMarks.map(e.schema.markFromJSON));else{if(r)for(let l in r){let a=r[l],c=a.spec.state;if(a.key==o.name&&c&&c.fromJSON&&Object.prototype.hasOwnProperty.call(t,l)){s[o.name]=c.fromJSON.call(a,e,t[l],s);return}}s[o.name]=o.init(e,s)}}),s}};function qa(n,e,t){for(let r in n){let i=n[r];i instanceof Function?i=i.bind(e):r==\"handleDOMEvents\"&&(i=qa(i,e,{})),t[r]=i}return t}var O=class{constructor(e){this.spec=e,this.props={},e.props&&qa(e.props,this,this.props),this.key=e.key?e.key.key:Ja(\"plugin\")}getState(e){return e[this.key]}},Ns=Object.create(null);function Ja(n){return n in Ns?n+\"$\"+ ++Ns[n]:(Ns[n]=0,n+\"$\")}var H=class{constructor(e=\"key\"){this.key=Ja(e)}get(e){return e.config.pluginsByKey[this.key]}getState(e){return e[this.key]}};var Ga=(n,e)=>n.selection.empty?!1:(e&&e(n.tr.deleteSelection().scrollIntoView()),!0);function Ya(n,e){let{$cursor:t}=n.selection;return!t||(e?!e.endOfTextblock(\"backward\",n):t.parentOffset>0)?null:t}var Ls=(n,e,t)=>{let r=Ya(n,t);if(!r)return!1;let i=Bs(r);if(!i){let o=r.blockRange(),l=o&&je(o);return l==null?!1:(e&&e(n.tr.lift(o,l).scrollIntoView()),!0)}let s=i.nodeBefore;if(oc(n,i,e,-1))return!0;if(r.parent.content.size==0&&(Kt(s,\"end\")||M.isSelectable(s)))for(let o=r.depth;;o--){let l=Cn(n.doc,r.before(o),r.after(o),v.empty);if(l&&l.slice.size<l.to-l.from){if(e){let a=n.tr.step(l);a.setSelection(Kt(s,\"end\")?R.findFrom(a.doc.resolve(a.mapping.map(i.pos,-1)),-1):M.create(a.doc,i.pos-s.nodeSize)),e(a.scrollIntoView())}return!0}if(o==1||r.node(o-1).childCount>1)break}return s.isAtom&&i.depth==r.depth-1?(e&&e(n.tr.delete(i.pos-s.nodeSize,i.pos).scrollIntoView()),!0):!1},Qa=(n,e,t)=>{let r=Ya(n,t);if(!r)return!1;let i=Bs(r);return i?ec(n,i,e):!1},Za=(n,e,t)=>{let r=tc(n,t);if(!r)return!1;let i=$s(r);return i?ec(n,i,e):!1};function ec(n,e,t){let r=e.nodeBefore,i=r,s=e.pos-1;for(;!i.isTextblock;s--){if(i.type.spec.isolating)return!1;let d=i.lastChild;if(!d)return!1;i=d}let o=e.nodeAfter,l=o,a=e.pos+1;for(;!l.isTextblock;a++){if(l.type.spec.isolating)return!1;let d=l.firstChild;if(!d)return!1;l=d}let c=Cn(n.doc,s,a,v.empty);if(!c||c.from!=s||c instanceof K&&c.slice.size>=a-s)return!1;if(t){let d=n.tr.step(c);d.setSelection(T.create(d.doc,s)),t(d.scrollIntoView())}return!0}function Kt(n,e,t=!1){for(let r=n;r;r=e==\"start\"?r.firstChild:r.lastChild){if(r.isTextblock)return!0;if(t&&r.childCount!=1)return!1}return!1}var Ps=(n,e,t)=>{let{$head:r,empty:i}=n.selection,s=r;if(!i)return!1;if(r.parent.isTextblock){if(t?!t.endOfTextblock(\"backward\",n):r.parentOffset>0)return!1;s=Bs(r)}let o=s&&s.nodeBefore;return!o||!M.isSelectable(o)?!1:(e&&e(n.tr.setSelection(M.create(n.doc,s.pos-o.nodeSize)).scrollIntoView()),!0)};function Bs(n){if(!n.parent.type.spec.isolating)for(let e=n.depth-1;e>=0;e--){if(n.index(e)>0)return n.doc.resolve(n.before(e+1));if(n.node(e).type.spec.isolating)break}return null}function tc(n,e){let{$cursor:t}=n.selection;return!t||(e?!e.endOfTextblock(\"forward\",n):t.parentOffset<t.parent.content.size)?null:t}var zs=(n,e,t)=>{let r=tc(n,t);if(!r)return!1;let i=$s(r);if(!i)return!1;let s=i.nodeAfter;if(oc(n,i,e,1))return!0;if(r.parent.content.size==0&&(Kt(s,\"start\")||M.isSelectable(s))){let o=Cn(n.doc,r.before(),r.after(),v.empty);if(o&&o.slice.size<o.to-o.from){if(e){let l=n.tr.step(o);l.setSelection(Kt(s,\"start\")?R.findFrom(l.doc.resolve(l.mapping.map(i.pos)),1):M.create(l.doc,l.mapping.map(i.pos))),e(l.scrollIntoView())}return!0}}return s.isAtom&&i.depth==r.depth-1?(e&&e(n.tr.delete(i.pos,i.pos+s.nodeSize).scrollIntoView()),!0):!1},Hs=(n,e,t)=>{let{$head:r,empty:i}=n.selection,s=r;if(!i)return!1;if(r.parent.isTextblock){if(t?!t.endOfTextblock(\"forward\",n):r.parentOffset<r.parent.content.size)return!1;s=$s(r)}let o=s&&s.nodeAfter;return!o||!M.isSelectable(o)?!1:(e&&e(n.tr.setSelection(M.create(n.doc,s.pos)).scrollIntoView()),!0)};function $s(n){if(!n.parent.type.spec.isolating)for(let e=n.depth-1;e>=0;e--){let t=n.node(e);if(n.index(e)+1<t.childCount)return n.doc.resolve(n.after(e+1));if(t.type.spec.isolating)break}return null}var nc=(n,e)=>{let t=n.selection,r=t instanceof M,i;if(r){if(t.node.isTextblock||!Re(n.doc,t.from))return!1;i=t.from}else if(i=Wt(n.doc,t.from,-1),i==null)return!1;if(e){let s=n.tr.join(i);r&&s.setSelection(M.create(s.doc,i-n.doc.resolve(i).nodeBefore.nodeSize)),e(s.scrollIntoView())}return!0},rc=(n,e)=>{let t=n.selection,r;if(t instanceof M){if(t.node.isTextblock||!Re(n.doc,t.to))return!1;r=t.to}else if(r=Wt(n.doc,t.to,1),r==null)return!1;return e&&e(n.tr.join(r).scrollIntoView()),!0},ic=(n,e)=>{let{$from:t,$to:r}=n.selection,i=t.blockRange(r),s=i&&je(i);return s==null?!1:(e&&e(n.tr.lift(i,s).scrollIntoView()),!0)},Fs=(n,e)=>{let{$head:t,$anchor:r}=n.selection;return!t.parent.type.spec.code||!t.sameParent(r)?!1:(e&&e(n.tr.insertText(`\\n`).scrollIntoView()),!0)};function _s(n){for(let e=0;e<n.edgeCount;e++){let{type:t}=n.edge(e);if(t.isTextblock&&!t.hasRequiredAttrs())return t}return null}var Vs=(n,e)=>{let{$head:t,$anchor:r}=n.selection;if(!t.parent.type.spec.code||!t.sameParent(r))return!1;let i=t.node(-1),s=t.indexAfter(-1),o=_s(i.contentMatchAt(s));if(!o||!i.canReplaceWith(s,s,o))return!1;if(e){let l=t.after(),a=n.tr.replaceWith(l,l,o.createAndFill());a.setSelection(R.near(a.doc.resolve(l),1)),e(a.scrollIntoView())}return!0},js=(n,e)=>{let t=n.selection,{$from:r,$to:i}=t;if(t instanceof ce||r.parent.inlineContent||i.parent.inlineContent)return!1;let s=_s(i.parent.contentMatchAt(i.indexAfter()));if(!s||!s.isTextblock)return!1;if(e){let o=(!r.parentOffset&&i.index()<i.parent.childCount?r:i).pos,l=n.tr.insert(o,s.createAndFill());l.setSelection(T.create(l.doc,o+1)),e(l.scrollIntoView())}return!0},Ws=(n,e)=>{let{$cursor:t}=n.selection;if(!t||t.parent.content.size)return!1;if(t.depth>1&&t.after()!=t.end(-1)){let s=t.before();if(ke(n.doc,s))return e&&e(n.tr.split(s).scrollIntoView()),!0}let r=t.blockRange(),i=r&&je(r);return i==null?!1:(e&&e(n.tr.lift(r,i).scrollIntoView()),!0)};function Gh(n){return(e,t)=>{if(e.selection instanceof M&&e.selection.node.isBlock){let{$from:h}=e.selection;return!h.parentOffset||!ke(e.doc,h.pos)?!1:(t&&t(e.tr.split(h.pos).scrollIntoView()),!0)}if(!e.selection.$from.depth)return!1;let r=e.tr;!e.selection.empty&&(e.selection instanceof T||e.selection instanceof ce)&&r.deleteSelection();let{$from:i}=r.selection,s=r.steps.length,o=[],l,a,c=!1,d=!1;for(let h=i.depth;;h--)if(i.node(h).isBlock){c=i.end(h)==i.pos+(i.depth-h),d=i.start(h)==i.pos-(i.depth-h),a=_s(i.node(h-1).contentMatchAt(i.indexAfter(h-1)));let m=n&&n(i.parent,c,i);o.unshift(m||(c&&a?{type:a}:null)),l=h;break}else{if(h==1)return!1;o.unshift(null)}let u=i.pos,f=ke(r.doc,u,o.length,o);if(f||(o[0]=a?{type:a}:null,f=ke(r.doc,u,o.length,o)),!f)return!1;if(r.split(u,o.length,o),!c&&d&&i.node(l).type!=a){let h=r.mapping.slice(s),p=h.map(i.before(l)),m=r.doc.resolve(p);a&&i.node(l-1).canReplaceWith(m.index(),m.index()+1,a)&&r.setNodeMarkup(h.map(i.before(l)),a)}return t&&t(r.scrollIntoView()),!0}}var Yh=Gh();var sc=(n,e)=>{let{$from:t,to:r}=n.selection,i,s=t.sharedDepth(r);return s==0?!1:(i=t.before(s),e&&e(n.tr.setSelection(M.create(n.doc,i))),!0)},Qh=(n,e)=>(e&&e(n.tr.setSelection(new ce(n.doc))),!0);function Zh(n,e,t){let r=e.nodeBefore,i=e.nodeAfter,s=e.index();return!r||!i||!r.type.compatibleContent(i.type)?!1:!r.content.size&&e.parent.canReplace(s-1,s)?(t&&t(n.tr.delete(e.pos-r.nodeSize,e.pos).scrollIntoView()),!0):!e.parent.canReplace(s,s+1)||!(i.isTextblock||Re(n.doc,e.pos))?!1:(t&&t(n.tr.join(e.pos).scrollIntoView()),!0)}function oc(n,e,t,r){let i=e.nodeBefore,s=e.nodeAfter,o,l,a=i.type.spec.isolating||s.type.spec.isolating;if(!a&&Zh(n,e,t))return!0;let c=!a&&e.parent.canReplace(e.index(),e.index()+1);if(c&&(o=(l=i.contentMatchAt(i.childCount)).findWrapping(s.type))&&l.matchType(o[0]||s.type).validEnd){if(t){let h=e.pos+s.nodeSize,p=x.empty;for(let y=o.length-1;y>=0;y--)p=x.from(o[y].create(null,p));p=x.from(i.copy(p));let m=n.tr.step(new q(e.pos-1,h,e.pos,h,new v(p,1,0),o.length,!0)),g=m.doc.resolve(h+2*o.length);g.nodeAfter&&g.nodeAfter.type==i.type&&Re(m.doc,g.pos)&&m.join(g.pos),t(m.scrollIntoView())}return!0}let d=s.type.spec.isolating||r>0&&a?null:R.findFrom(e,1),u=d&&d.$from.blockRange(d.$to),f=u&&je(u);if(f!=null&&f>=e.depth)return t&&t(n.tr.lift(u,f).scrollIntoView()),!0;if(c&&Kt(s,\"start\",!0)&&Kt(i,\"end\")){let h=i,p=[];for(;p.push(h),!h.isTextblock;)h=h.lastChild;let m=s,g=1;for(;!m.isTextblock;m=m.firstChild)g++;if(h.canReplace(h.childCount,h.childCount,m.content)){if(t){let y=x.empty;for(let w=p.length-1;w>=0;w--)y=x.from(p[w].copy(y));let b=n.tr.step(new q(e.pos-p.length,e.pos+s.nodeSize,e.pos+g,e.pos+s.nodeSize-g,new v(y,p.length,0),0,!0));t(b.scrollIntoView())}return!0}}return!1}function lc(n){return function(e,t){let r=e.selection,i=n<0?r.$from:r.$to,s=i.depth;for(;i.node(s).isInline;){if(!s)return!1;s--}return i.node(s).isTextblock?(t&&t(e.tr.setSelection(T.create(e.doc,n<0?i.start(s):i.end(s)))),!0):!1}}var Us=lc(-1),Ks=lc(1);function ac(n,e=null){return function(t,r){let{$from:i,$to:s}=t.selection,o=i.blockRange(s),l=o&&jt(o,n,e);return l?(r&&r(t.tr.wrap(o,l).scrollIntoView()),!0):!1}}function qs(n,e=null){return function(t,r){let i=!1;for(let s=0;s<t.selection.ranges.length&&!i;s++){let{$from:{pos:o},$to:{pos:l}}=t.selection.ranges[s];t.doc.nodesBetween(o,l,(a,c)=>{if(i)return!1;if(!(!a.isTextblock||a.hasMarkup(n,e)))if(a.type==n)i=!0;else{let d=t.doc.resolve(c),u=d.index();i=d.parent.canReplaceWith(u,u+1,n)}})}if(!i)return!1;if(r){let s=t.tr;for(let o=0;o<t.selection.ranges.length;o++){let{$from:{pos:l},$to:{pos:a}}=t.selection.ranges[o];s.setBlockType(l,a,n,e)}r(s.scrollIntoView())}return!0}}function Js(...n){return function(e,t,r){for(let i=0;i<n.length;i++)if(n[i](e,t,r))return!0;return!1}}var Ds=Js(Ga,Ls,Ps),Xa=Js(Ga,zs,Hs),rt={Enter:Js(Fs,js,Ws,Yh),\"Mod-Enter\":Vs,Backspace:Ds,\"Mod-Backspace\":Ds,\"Shift-Backspace\":Ds,Delete:Xa,\"Mod-Delete\":Xa,\"Mod-a\":Qh},ep={\"Ctrl-h\":rt.Backspace,\"Alt-Backspace\":rt[\"Mod-Backspace\"],\"Ctrl-d\":rt.Delete,\"Ctrl-Alt-Backspace\":rt[\"Mod-Delete\"],\"Alt-Delete\":rt[\"Mod-Delete\"],\"Alt-d\":rt[\"Mod-Delete\"],\"Ctrl-a\":Us,\"Ctrl-e\":Ks};for(let n in rt)ep[n]=rt[n];var xk=typeof navigator<\"u\"?/Mac|iP(hone|[oa]d)/.test(navigator.platform):typeof os<\"u\"&&os.platform?os.platform()==\"darwin\":!1;function cc(n,e=null){return function(t,r){let{$from:i,$to:s}=t.selection,o=i.blockRange(s);if(!o)return!1;let l=r?t.tr:null;return tp(l,o,n,e)?(r&&r(l.scrollIntoView()),!0):!1}}function tp(n,e,t,r=null){let i=!1,s=e,o=e.$from.doc;if(e.depth>=2&&e.$from.node(e.depth-1).type.compatibleContent(t)&&e.startIndex==0){if(e.$from.index(e.depth-1)==0)return!1;let a=o.resolve(e.start-2);s=new yt(a,a,e.depth),e.endIndex<e.parent.childCount&&(e=new yt(e.$from,o.resolve(e.$to.end(e.depth)),e.depth)),i=!0}let l=jt(s,t,r,e);return l?(n&&np(n,e,l,i,t),!0):!1}function np(n,e,t,r,i){let s=x.empty;for(let d=t.length-1;d>=0;d--)s=x.from(t[d].type.create(t[d].attrs,s));n.step(new q(e.start-(r?2:0),e.end,e.start,e.end,new v(s,0,0),t.length,!0));let o=0;for(let d=0;d<t.length;d++)t[d].type==i&&(o=d+1);let l=t.length-o,a=e.start+t.length-(r?2:0),c=e.parent;for(let d=e.startIndex,u=e.endIndex,f=!0;d<u;d++,f=!1)!f&&ke(n.doc,a,l)&&(n.split(a,l),a+=2*l),a+=c.child(d).nodeSize;return n}function dc(n){return function(e,t){let{$from:r,$to:i}=e.selection,s=r.blockRange(i,o=>o.childCount>0&&o.firstChild.type==n);return s?t?r.node(s.depth-1).type==n?rp(e,t,n,s):ip(e,t,s):!0:!1}}function rp(n,e,t,r){let i=n.tr,s=r.end,o=r.$to.end(r.depth);s<o&&(i.step(new q(s-1,o,s,o,new v(x.from(t.create(null,r.parent.copy())),1,0),1,!0)),r=new yt(i.doc.resolve(r.$from.pos),i.doc.resolve(o),r.depth));let l=je(r);if(l==null)return!1;i.lift(r,l);let a=i.doc.resolve(i.mapping.map(s,-1)-1);return Re(i.doc,a.pos)&&a.nodeBefore.type==a.nodeAfter.type&&i.join(a.pos),e(i.scrollIntoView()),!0}function ip(n,e,t){let r=n.tr,i=t.parent;for(let h=t.end,p=t.endIndex-1,m=t.startIndex;p>m;p--)h-=i.child(p).nodeSize,r.delete(h-1,h+1);let s=r.doc.resolve(t.start),o=s.nodeAfter;if(r.mapping.map(t.end)!=t.start+s.nodeAfter.nodeSize)return!1;let l=t.startIndex==0,a=t.endIndex==i.childCount,c=s.node(-1),d=s.index(-1);if(!c.canReplace(d+(l?0:1),d+1,o.content.append(a?x.empty:x.from(i))))return!1;let u=s.pos,f=u+o.nodeSize;return r.step(new q(u-(l?1:0),f+(a?1:0),u+1,f-1,new v((l?x.empty:x.from(i.copy(x.empty))).append(a?x.empty:x.from(i.copy(x.empty))),l?0:1,a?0:1),l?0:1)),e(r.scrollIntoView()),!0}function uc(n){return function(e,t){let{$from:r,$to:i}=e.selection,s=r.blockRange(i,c=>c.childCount>0&&c.firstChild.type==n);if(!s)return!1;let o=s.startIndex;if(o==0)return!1;let l=s.parent,a=l.child(o-1);if(a.type!=n)return!1;if(t){let c=a.lastChild&&a.lastChild.type==l.type,d=x.from(c?n.create():null),u=new v(x.from(n.create(null,x.from(l.type.create(null,d)))),c?3:1,0),f=s.start,h=s.end;t(e.tr.step(new q(f-(c?3:1),h,f,h,u,1,!0)).scrollIntoView())}return!0}}var ee=function(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e},Gt=function(n){let e=n.assignedSlot||n.parentNode;return e&&e.nodeType==11?e.host:e},Zs=null,Ue=function(n,e,t){let r=Zs||(Zs=document.createRange());return r.setEnd(n,t??n.nodeValue.length),r.setStart(n,e||0),r},sp=function(){Zs=null},At=function(n,e,t,r){return t&&(fc(n,e,t,r,-1)||fc(n,e,t,r,1))},op=/^(img|br|input|textarea|hr)$/i;function fc(n,e,t,r,i){for(var s;;){if(n==t&&e==r)return!0;if(e==(i<0?0:oe(n))){let o=n.parentNode;if(!o||!C(o)||zn(n)||op.test(n.nodeName)||n.contentEditable==\"false\")return!1;e=ee(n)+(i<0?0:1),n=o}else if(C(n)){let o=n.childNodes[e+(i<0?-1:0)];if(C(o)&&o.contentEditable==\"false\")if(!((s=o.pmViewDesc)===null||s===void 0)&&s.ignoreForSelection)e+=i;else return!1;else n=o,e=i<0?oe(n):0}else return!1}}function oe(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function C(n){return n.nodeType==1}function G(n){return n.nodeType==3}function Rt(n,e){return e?n.contains(C(e)?e:e.parentNode):!1}function lp(n,e){for(;;){if(G(n)&&e)return n;if(C(n)&&e>0){if(n.contentEditable==\"false\")return null;n=n.childNodes[e-1],e=oe(n)}else if(n.parentNode&&!zn(n))e=ee(n),n=n.parentNode;else return null}}function ap(n,e){for(;;){if(G(n)&&e<n.nodeValue.length)return n;if(C(n)&&e<n.childNodes.length){if(n.contentEditable==\"false\")return null;n=n.childNodes[e],e=0}else if(n.parentNode&&!zn(n))e=ee(n)+1,n=n.parentNode;else return null}}function cp(n,e,t){for(let r=e==0,i=e==oe(n);r||i;){if(n==t)return!0;let s=ee(n);if(n=n.parentNode,!n)return!1;r=r&&s==0,i=i&&s==oe(n)}}function zn(n){let e;for(let t=n;t&&!(e=t.pmViewDesc);t=t.parentNode);return e&&e.node&&e.node.isBlock&&(e.dom==n||e.contentDOM==n)}var Kr=function(n){return n.focusNode&&At(n.focusNode,n.focusOffset,n.anchorNode,n.anchorOffset)};function St(n,e){let t=document.createEvent(\"Event\");return t.initEvent(\"keydown\",!0,!0),t.keyCode=n,t.key=t.code=e,t}function dp(n){let e=n.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function up(n,e,t){if(n.caretPositionFromPoint)try{let r=n.caretPositionFromPoint(e,t);if(r)return{node:r.offsetNode,offset:Math.min(oe(r.offsetNode),r.offset)}}catch{}if(n.caretRangeFromPoint){let r=n.caretRangeFromPoint(e,t);if(r)return{node:r.startContainer,offset:Math.min(oe(r.startContainer),r.startOffset)}}}var Oe=typeof navigator<\"u\"?navigator:null,hc=typeof document<\"u\"?document:null,at=Oe&&Oe.userAgent||\"\",eo=/Edge\\\\/(\\\\d+)/.exec(at),Vc=/MSIE \\\\d/.exec(at),to=/Trident\\\\/(?:[7-9]|\\\\d{2,})\\\\..*rv:(\\\\d+)/.exec(at),he=!!(Vc||to||eo),ot=Vc?document.documentMode:to?+to[1]:eo?+eo[1]:0,ge=!he&&/gecko\\\\/(\\\\d+)/i.test(at);ge&&+(/Firefox\\\\/(\\\\d+)/.exec(at)||[0,0])[1];var no=!he&&/Chrome\\\\/(\\\\d+)/.exec(at),te=!!no,jc=no?+no[1]:0,le=!he&&!!Oe&&/Apple Computer/.test(Oe.vendor),Yt=le&&(/Mobile\\\\/\\\\w+/.test(at)||!!Oe&&Oe.maxTouchPoints>2),Se=Yt||(Oe?/Mac/.test(Oe.platform):!1),Wc=Oe?/Win/.test(Oe.platform):!1,Ke=/Android \\\\d/.test(at),qr=!!hc&&\"webkitFontSmoothing\"in hc.documentElement.style,fp=qr?+(/\\\\bAppleWebKit\\\\/(\\\\d+)/.exec(navigator.userAgent)||[0,0])[1]:0;function hp(n){let e=n.defaultView&&n.defaultView.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:n.documentElement.clientWidth,top:0,bottom:n.documentElement.clientHeight}}function We(n,e){return typeof n==\"number\"?n:n[e]}function pp(n){let e=n.getBoundingClientRect(),t=e.width/n.offsetWidth||1,r=e.height/n.offsetHeight||1;return{left:e.left,right:e.left+n.clientWidth*t,top:e.top,bottom:e.top+n.clientHeight*r}}function pc(n,e,t){if(!ro(e)&&e.left==0)return;let r=n.someProp(\"scrollThreshold\")||0,i=n.someProp(\"scrollMargin\")||5,s=n.dom.ownerDocument;for(let o=t||n.dom;o;){if(!C(o)){o=Gt(o);continue}let l=o==s.body,a=l?hp(s):pp(o),c=0,d=0;if(e.top<a.top+We(r,\"top\")?d=-(a.top-e.top+We(i,\"top\")):e.bottom>a.bottom-We(r,\"bottom\")&&(d=e.bottom-e.top>a.bottom-a.top?e.top+We(i,\"top\")-a.top:e.bottom-a.bottom+We(i,\"bottom\")),e.left<a.left+We(r,\"left\")?c=-(a.left-e.left+We(i,\"left\")):e.right>a.right-We(r,\"right\")&&(c=e.right-a.right+We(i,\"right\")),c||d)if(l)s.defaultView.scrollBy(c,d);else{let f=o.scrollLeft,h=o.scrollTop;d&&(o.scrollTop+=d),c&&(o.scrollLeft+=c);let p=o.scrollLeft-f,m=o.scrollTop-h;e={left:e.left-p,top:e.top-m,right:e.right-p,bottom:e.bottom-m}}let u=l?\"fixed\":getComputedStyle(o).position;if(/^(fixed|sticky)$/.test(u))break;o=u==\"absolute\"?o.offsetParent:Gt(o)}}function mp(n){let e=n.dom.getBoundingClientRect(),t=Math.max(0,e.top),r,i;for(let s=(e.left+e.right)/2,o=t+1;o<Math.min(innerHeight,e.bottom);o+=5){let l=n.root.elementFromPoint(s,o);if(!l||l==n.dom||!n.dom.contains(l))continue;let a=l.getBoundingClientRect();if(a.top>=t-20){r=l,i=a.top;break}}return{refDOM:r,refTop:i,stack:Uc(n.dom)}}function Uc(n){let e=[],t=n.ownerDocument;for(let r=n;r&&(e.push({dom:r,top:r.scrollTop,left:r.scrollLeft}),n!=t);r=Gt(r));return e}function gp({refDOM:n,refTop:e,stack:t}){let r=n?n.getBoundingClientRect().top:0;Kc(t,r==0?0:r-e)}function Kc(n,e){for(let t=0;t<n.length;t++){let{dom:r,top:i,left:s}=n[t];r.scrollTop!=i+e&&(r.scrollTop=i+e),r.scrollLeft!=s&&(r.scrollLeft=s)}}var qt=null;function yp(n){if(n.setActive)return n.setActive();if(qt)return n.focus(qt);let e=Uc(n);n.focus(qt==null?{get preventScroll(){return qt={preventScroll:!0},!0}}:void 0),qt||(qt=!1,Kc(e,0))}function qc(n,e){let t,r=2e8,i,s=0,o=e.top,l=e.top,a,c;for(let d=n.firstChild,u=0;d;d=d.nextSibling,u++){let f;if(C(d))f=d.getClientRects();else if(G(d))f=Ue(d).getClientRects();else continue;for(let h=0;h<f.length;h++){let p=f[h];if(p.top<=o&&p.bottom>=l){o=Math.max(p.bottom,o),l=Math.min(p.top,l);let m=p.left>e.left?p.left-e.left:p.right<e.left?e.left-p.right:0;if(m<r){t=d,r=m,i=m&&G(t)?{left:p.right<e.left?p.right:p.left,top:e.top}:e,C(d)&&m&&(s=u+(e.left>=(p.left+p.right)/2?1:0));continue}}else p.top>e.top&&!a&&p.left<=e.left&&p.right>=e.left&&(a=d,c={left:Math.max(p.left,Math.min(p.right,e.left)),top:p.top});!t&&(e.left>=p.right&&e.top>=p.top||e.left>=p.left&&e.top>=p.bottom)&&(s=u+1)}}return!t&&a&&(t=a,i=c,r=0),t&&G(t)?bp(t,i):!t||r?{node:n,offset:s}:qc(t,i)}function bp(n,e){let t=n.nodeValue.length,r=document.createRange(),i;for(let s=0;s<t;s++){r.setEnd(n,s+1),r.setStart(n,s);let o=it(r,1);if(o.top!=o.bottom&&ko(e,o)){i={node:n,offset:s+(e.left>=(o.left+o.right)/2?1:0)};break}}return r.detach(),i||{node:n,offset:0}}function ko(n,e){return n.left>=e.left-1&&n.left<=e.right+1&&n.top>=e.top-1&&n.top<=e.bottom+1}function xp(n,e){let t=n.parentNode;return t&&/^li$/i.test(t.nodeName)&&e.left<n.getBoundingClientRect().left?t:n}function kp(n,e,t){let{node:r,offset:i}=qc(e,t),s=-1;if(C(r)&&!r.firstChild){let o=r.getBoundingClientRect();s=o.left!=o.right&&t.left>(o.left+o.right)/2?1:-1}return n.docView.posFromDOM(r,i,s)}function Sp(n,e,t,r){let i=-1;for(let s=e,o=!1;s!=n.dom;){let l=n.docView.nearestDesc(s,!0),a;if(!l)return null;if(C(l.dom)&&(l.node.isBlock&&l.parent||!l.contentDOM)&&((a=l.dom.getBoundingClientRect()).width||a.height)&&(l.node.isBlock&&l.parent&&!/^T(R|BODY|HEAD|FOOT)$/.test(l.dom.nodeName)&&(!o&&a.left>r.left||a.top>r.top?i=l.posBefore:(!o&&a.right<r.left||a.bottom<r.top)&&(i=l.posAfter),o=!0),!l.contentDOM&&i<0&&!l.node.isText))return(l.node.isBlock?r.top<(a.top+a.bottom)/2:r.left<(a.left+a.right)/2)?l.posBefore:l.posAfter;s=l.dom.parentNode}return i>-1?i:n.docView.posFromDOM(e,t,-1)}function Jc(n,e,t){let r=n.childNodes.length;if(r&&t.top<t.bottom)for(let i=Math.max(0,Math.min(r-1,Math.floor(r*(e.top-t.top)/(t.bottom-t.top))-2)),s=i;;){let o=n.childNodes[s];if(C(o)){let l=o.getClientRects();for(let a=0;a<l.length;a++){let c=l[a];if(ko(e,c))return Jc(o,e,c)}}if((s=(s+1)%r)==i)break}return n}function wp(n,e){let t=n.dom.ownerDocument,r,i=0,s=up(t,e.left,e.top);s&&({node:r,offset:i}=s);let o=(n.root.elementFromPoint?n.root:t).elementFromPoint(e.left,e.top),l;if(!o||!n.dom.contains(o)){let c=n.dom.getBoundingClientRect();if(!ko(e,c)||(o=Jc(n.dom,e,c),!o))return null}if(le)for(let c=o;r&&c;c=Gt(c))c.draggable&&(r=void 0);if(o=xp(o,e),r){if(ge&&C(r)&&(i=Math.min(i,r.childNodes.length),i<r.childNodes.length)){let d=r.childNodes[i],u;d.nodeName==\"IMG\"&&(u=d.getBoundingClientRect()).right<=e.left&&u.bottom>e.top&&i++}let c;qr&&i&&C(r)&&C(c=r.childNodes[i-1])&&c.contentEditable==\"false\"&&c.getBoundingClientRect().top>=e.top&&i--,r==n.dom&&i==r.childNodes.length-1&&C(r.lastChild)&&e.top>r.lastChild.getBoundingClientRect().bottom?l=n.state.doc.content.size:(i==0||!C(r)||r.childNodes[i-1].nodeName!=\"BR\")&&(l=Sp(n,r,i,e))}l==null&&(l=kp(n,o,e));let a=n.docView.nearestDesc(o,!0);return{pos:l,inside:a?a.posAtStart-a.border:-1}}function ro(n){return n.top<n.bottom||n.left<n.right}function it(n,e){let t=n.getClientRects();if(t.length){let r=t[e<0?0:t.length-1];if(ro(r))return r}return Array.prototype.find.call(t,ro)||n.getBoundingClientRect()}var vp=/[\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u0700-\\\\u08ac]/;function Xc(n,e,t){let{node:r,offset:i,atom:s}=n.docView.domFromPos(e,t<0?-1:1),o=qr||ge;if(G(r))if(o&&(vp.test(r.nodeValue)||(t<0?!i:i==r.nodeValue.length))){let a=it(Ue(r,i,i),t);if(ge&&i&&/\\\\s/.test(r.nodeValue[i-1])&&i<r.nodeValue.length){let c=it(Ue(r,i-1,i-1),-1);if(c.top==a.top){let d=it(Ue(r,i,i+1),-1);if(d.top!=a.top)return Rn(d,d.left<c.left)}}return a}else{let a=i,c=i,d=t<0?1:-1;return t<0&&!i?(c++,d=-1):t>=0&&i==r.nodeValue.length?(a--,d=1):t<0?a--:c++,Rn(it(Ue(r,a,c),d),d<0)}if(!n.state.doc.resolve(e-(s||0)).parent.inlineContent){if(s==null&&i&&(t<0||i==oe(r))){let a=r.childNodes[i-1];if(C(a))return Xs(a.getBoundingClientRect(),!1)}if(s==null&&i<oe(r)){let a=r.childNodes[i];if(C(a))return Xs(a.getBoundingClientRect(),!0)}return Xs(r.getBoundingClientRect(),t>=0)}if(s==null&&i&&(t<0||i==oe(r))){let a=r.childNodes[i-1],c=G(a)?Ue(a,oe(a)-(o?0:1)):C(a)&&(a.nodeName!=\"BR\"||!a.nextSibling)?a:null;if(c)return Rn(it(c,1),!1)}if(s==null&&i<oe(r)){let a=r.childNodes[i];for(;a.pmViewDesc&&a.pmViewDesc.ignoreForCoords;)a=a.nextSibling;let c=a?G(a)?Ue(a,0,o?0:1):C(a)?a:null:null;if(c)return Rn(it(c,-1),!0)}return Rn(it(G(r)?Ue(r):r,-t),t>=0)}function Rn(n,e){if(n.width==0)return n;let t=e?n.left:n.right;return{top:n.top,bottom:n.bottom,left:t,right:t}}function Xs(n,e){if(n.height==0)return n;let t=e?n.top:n.bottom;return{top:t,bottom:t,left:n.left,right:n.right}}function Gc(n,e,t){let r=n.state,i=n.root.activeElement;r!=e&&n.updateState(e),i!=n.dom&&n.focus();try{return t()}finally{r!=e&&n.updateState(r),i!=n.dom&&i&&i.focus()}}function Tp(n,e,t){let r=e.selection,i=t==\"up\"?r.$from:r.$to;return Gc(n,e,()=>{let{node:s}=n.docView.domFromPos(i.pos,t==\"up\"?-1:1);for(;;){let l=n.docView.nearestDesc(s,!0);if(!l)break;if(l.node.isBlock){s=l.contentDOM||l.dom;break}s=l.dom.parentNode}let o=Xc(n,i.pos,1);for(let l=s.firstChild;l;l=l.nextSibling){let a;if(C(l))a=l.getClientRects();else if(G(l))a=Ue(l,0,l.nodeValue.length).getClientRects();else continue;for(let c=0;c<a.length;c++){let d=a[c];if(d.bottom>d.top+1&&(t==\"up\"?o.top-d.top>(d.bottom-o.top)*2:d.bottom-o.bottom>(o.bottom-d.top)*2))return!1}}return!0})}var Ep=/[\\\\u0590-\\\\u08ac]/;function Mp(n,e,t){let{$head:r}=e.selection;if(!r.parent.isTextblock)return!1;let i=r.parentOffset,s=!i,o=i==r.parent.content.size,l=n.domSelection();return l?!Ep.test(r.parent.textContent)||!l.modify?t==\"left\"||t==\"backward\"?s:o:Gc(n,e,()=>{let{focusNode:a,focusOffset:c,anchorNode:d,anchorOffset:u}=n.domSelectionRange(),f=l.caretBidiLevel;l.modify(\"move\",t,\"character\");let h=r.depth?n.docView.domAfterPos(r.before()):n.dom,{focusNode:p,focusOffset:m}=n.domSelectionRange(),g=p&&!Rt(h,p)||a==p&&c==m;try{l.collapse(d,u),a&&(a!=d||c!=u)&&l.extend&&l.extend(a,c)}catch{}return f!=null&&(l.caretBidiLevel=f),g}):r.pos==r.start()||r.pos==r.end()}var mc=null,gc=null,yc=!1;function Cp(n,e,t){return mc==e&&gc==t?yc:(mc=e,gc=t,yc=t==\"up\"||t==\"down\"?Tp(n,e,t):Mp(n,e,t))}var we=0,bc=1,wt=2,Ne=3,Nt=class{constructor(e,t,r,i){this.parent=e,this.children=t,this.dom=r,this.contentDOM=i,this.dirty=we,r.pmViewDesc=this}matchesWidget(e){return!1}matchesMark(e){return!1}matchesNode(e,t,r){return!1}matchesHack(e){return!1}parseRule(e){return null}stopEvent(e){return!1}get size(){let e=0;for(let t=0;t<this.children.length;t++)e+=this.children[t].size;return e}get border(){return 0}destroy(){this.parent=void 0,this.dom.pmViewDesc==this&&(this.dom.pmViewDesc=void 0);for(let e=0;e<this.children.length;e++)this.children[e].destroy()}posBeforeChild(e){for(let t=0,r=this.posAtStart;;t++){let i=this.children[t];if(i==e)return r;r+=i.size}}get posBefore(){return this.parent.posBeforeChild(this)}get posAtStart(){return this.parent?this.parent.posBeforeChild(this)+this.border:0}get posAfter(){return this.posBefore+this.size}get posAtEnd(){return this.posAtStart+this.size-2*this.border}localPosFromDOM(e,t,r){if(this.contentDOM&&Rt(this.contentDOM,e))if(r<0){let s,o;if(e==this.contentDOM)s=e.childNodes[t-1];else{for(;e.parentNode!=this.contentDOM;)e=e.parentNode;s=e.previousSibling}for(;s&&!((o=s.pmViewDesc)&&o.parent==this);)s=s.previousSibling;return s?this.posBeforeChild(o)+o.size:this.posAtStart}else{let s,o;if(e==this.contentDOM)s=e.childNodes[t];else{for(;e.parentNode!=this.contentDOM;)e=e.parentNode;s=e.nextSibling}for(;s&&!((o=s.pmViewDesc)&&o.parent==this);)s=s.nextSibling;return s?this.posBeforeChild(o):this.posAtEnd}let i;if(e==this.dom&&this.contentDOM)i=t>ee(this.contentDOM);else if(this.contentDOM&&this.contentDOM!=this.dom&&this.dom.contains(this.contentDOM))i=!!(e.compareDocumentPosition(this.contentDOM)&4);else if(this.dom.firstChild){if(t==0)for(let s=e;;s=s.parentNode){if(s==this.dom){i=!1;break}if(s.previousSibling)break}if(i==null&&t==e.childNodes.length)for(let s=e;;s=s.parentNode){if(s==this.dom){i=!0;break}if(s.nextSibling)break}}return i??r>0?this.posAtEnd:this.posAtStart}nearestDesc(e,t=!1){for(let r=!0,i=e;i;i=i.parentNode){let s=this.getDesc(i),o;if(s&&(!t||s.node))if(r&&(o=s.nodeDOM)&&!(C(o)?Rt(o,e):o==e))r=!1;else return s}}getDesc(e){let t=e.pmViewDesc;for(let r=t;r;r=r.parent)if(r==this)return t}posFromDOM(e,t,r){for(let i=e;i;i=i.parentNode){let s=this.getDesc(i);if(s)return s.localPosFromDOM(e,t,r)}return-1}descAt(e){for(let t=0,r=0;t<this.children.length;t++){let i=this.children[t],s=r+i.size;if(r==e&&s!=r){for(;!i.border&&i.children.length;)for(let o=0;o<i.children.length;o++){let l=i.children[o];if(l.size){i=l;break}}return i}if(e<s)return i.descAt(e-r-i.border);r=s}}domFromPos(e,t){if(!this.contentDOM)return{node:this.dom,offset:0,atom:e+1};let r=0,i=0;for(let s=0;r<this.children.length;r++){let o=this.children[r],l=s+o.size;if(l>e){i=e-s;break}s=l}if(i)return this.children[r].domFromPos(i-this.children[r].border,t);for(;r>0;r--){let s=this.children[r-1];if(s.size||!(s instanceof Hr||s instanceof Br&&s.side>=0))break}if(t<=0){let s,o=!0;for(;s=r?this.children[r-1]:null,!(!s||s.dom.parentNode==this.contentDOM);r--,o=!1);return s&&t&&o&&!s.border&&!s.domAtom?s.domFromPos(s.size,t):{node:this.contentDOM,offset:s?ee(s.dom)+1:0}}else{let s,o=!0;for(;s=r<this.children.length?this.children[r]:null,!(!s||s.dom.parentNode==this.contentDOM);r++,o=!1);return s&&o&&!s.border&&!s.domAtom?s.domFromPos(0,t):{node:this.contentDOM,offset:s?ee(s.dom):this.contentDOM.childNodes.length}}}parseRange(e,t,r=0){if(this.children.length==0)return{node:this.contentDOM,from:e,to:t,fromOffset:0,toOffset:this.contentDOM.childNodes.length};let i=-1,s=-1;for(let o=r,l=0;;l++){let a=this.children[l],c=o+a.size;if(i==-1&&e<=c){let d=o+a.border;if(e>=d&&t<=c-a.border&&a.node&&a.contentDOM&&this.contentDOM.contains(a.contentDOM))return a.parseRange(e,t,d);e=o;for(let u=l;u>0;u--){let f=this.children[u-1];if(f.size&&f.dom.parentNode==this.contentDOM&&!f.emptyChildAt(1)){i=ee(f.dom)+1;break}e-=f.size}i==-1&&(i=0)}if(i>-1&&(c>t||l==this.children.length-1)){t=c;for(let d=l+1;d<this.children.length;d++){let u=this.children[d];if(u.size&&u.dom.parentNode==this.contentDOM&&!u.emptyChildAt(-1)){s=ee(u.dom);break}t+=u.size}s==-1&&(s=this.contentDOM.childNodes.length);break}o=c}return{node:this.contentDOM,from:e,to:t,fromOffset:i,toOffset:s}}emptyChildAt(e){if(this.border||!this.contentDOM||!this.children.length)return!1;let t=this.children[e<0?0:this.children.length-1];return t.size==0||t.emptyChildAt(e)}domAfterPos(e){let{node:t,offset:r}=this.domFromPos(e,0);if(!C(t)||r==t.childNodes.length)throw new RangeError(\"No node after pos \"+e);return t.childNodes[r]}setSelection(e,t,r,i=!1){let s=Math.min(e,t),o=Math.max(e,t);for(let h=0,p=0;h<this.children.length;h++){let m=this.children[h],g=p+m.size;if(s>p&&o<g)return m.setSelection(e-p-m.border,t-p-m.border,r,i);p=g}let l=this.domFromPos(e,e?-1:1),a=t==e?l:this.domFromPos(t,t?-1:1),c=r.root.getSelection(),d=r.domSelectionRange(),u=!1;if((ge||le)&&e==t){let{node:h,offset:p}=l;if(G(h)){if(u=!!(p&&h.nodeValue[p-1]==`\\n`),u&&p==h.nodeValue.length)for(let m=h,g;m;m=m.parentNode){if(g=m.nextSibling){g.nodeName==\"BR\"&&(l=a={node:g.parentNode,offset:ee(g)+1});break}let y=m.pmViewDesc;if(y&&y.node&&y.node.isBlock)break}}else{let m=h.childNodes[p-1];u=m&&(m.nodeName==\"BR\"||m.contentEditable==\"false\")}}if(ge&&d.focusNode&&d.focusNode!=a.node&&C(d.focusNode)){let h=d.focusNode.childNodes[d.focusOffset];h&&h.contentEditable==\"false\"&&(i=!0)}if(!(i||u&&le)&&At(l.node,l.offset,d.anchorNode,d.anchorOffset)&&At(a.node,a.offset,d.focusNode,d.focusOffset))return;let f=!1;if((c.extend||e==t)&&!(u&&ge)){c.collapse(l.node,l.offset);try{e!=t&&c.extend(a.node,a.offset),f=!0}catch{}}if(!f){if(e>t){let p=l;l=a,a=p}let h=document.createRange();h.setEnd(a.node,a.offset),h.setStart(l.node,l.offset),c.removeAllRanges(),c.addRange(h)}}ignoreMutation(e){return!this.contentDOM&&e.type!=\"selection\"}get contentLost(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)}markDirty(e,t){for(let r=0,i=0;i<this.children.length;i++){let s=this.children[i],o=r+s.size;if(r==o?e<=o&&t>=r:e<o&&t>r){let l=r+s.border,a=o-s.border;if(e>=l&&t<=a){this.dirty=e==r||t==o?wt:bc,e==l&&t==a&&(s.contentLost||s.dom.parentNode!=this.contentDOM)?s.dirty=Ne:s.markDirty(e-l,t-l);return}else s.dirty=s.dom==s.contentDOM&&s.dom.parentNode==this.contentDOM&&!s.children.length?wt:Ne}r=o}this.dirty=wt}markParentsDirty(){let e=1;for(let t=this.parent;t;t=t.parent,e++){let r=e==1?wt:bc;t.dirty<r&&(t.dirty=r)}}get domAtom(){return!1}get ignoreForCoords(){return!1}get ignoreForSelection(){return!1}isText(e){return!1}},Br=class extends Nt{constructor(e,t,r,i){let s,o=t.type.toDOM;if(typeof o==\"function\"&&(o=o(r,()=>{if(!s)return i;if(s.parent)return s.parent.posBeforeChild(s)})),!t.type.spec.raw){let l=C(o)?o:document.createElement(\"span\");l!=o&&l.appendChild(o),l.hasAttribute(\"contenteditable\")||(l.contentEditable=\"false\"),l.classList.add(\"ProseMirror-widget\")}super(e,[],o,null),this.widget=t,this.widget=t,s=this}matchesWidget(e){return this.dirty==we&&e.type.eq(this.widget.type)}parseRule(){return{ignore:!0}}stopEvent(e){let t=this.widget.spec.stopEvent;return t?t(e):!1}ignoreMutation(e){return e.type!=\"selection\"||this.widget.spec.ignoreSelection}destroy(){this.widget.type.destroy(this.dom),super.destroy()}get domAtom(){return!0}get ignoreForSelection(){return!!this.widget.type.spec.relaxedSide}get side(){return this.widget.type.side}},io=class extends Nt{constructor(e,t,r,i){super(e,[],t,null),this.textDOM=r,this.text=i}get size(){return this.text.length}localPosFromDOM(e,t){return e!=this.textDOM?this.posAtStart+(t?this.size:0):this.posAtStart+t}domFromPos(e){return{node:this.textDOM,offset:e}}ignoreMutation(e){return e.type===\"characterData\"&&e.target.nodeValue==e.oldValue}},Tt=class n extends Nt{constructor(e,t,r,i,s){super(e,[],r,i),this.mark=t,this.spec=s}static create(e,t,r,i){let s=i.nodeViews[t.type.name],o=s&&s(t,i,r);return(!o||!o.dom)&&(o=Fe.renderSpec(document,t.type.spec.toDOM(t,r),null,t.attrs)),new n(e,t,o.dom,o.contentDOM||o.dom,o)}parseRule(){return this.dirty&Ne||this.mark.type.spec.reparseInView?null:{mark:this.mark.type.name,attrs:this.mark.attrs,contentElement:this.contentDOM}}matchesMark(e){return this.dirty!=Ne&&this.mark.eq(e)}markDirty(e,t){if(super.markDirty(e,t),this.dirty!=we){let r=this.parent;for(;!r.node;)r=r.parent;r.dirty<this.dirty&&(r.dirty=this.dirty),this.dirty=we}}slice(e,t,r){let i=n.create(this.parent,this.mark,!0,r),s=this.children,o=this.size;t<o&&(s=ao(s,t,o,r)),e>0&&(s=ao(s,0,e,r));for(let l=0;l<s.length;l++)s[l].parent=i;return i.children=s,i}ignoreMutation(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):super.ignoreMutation(e)}destroy(){this.spec.destroy&&this.spec.destroy(),super.destroy()}},lt=class n extends Nt{constructor(e,t,r,i,s,o,l){super(e,[],s,o),this.node=t,this.outerDeco=r,this.innerDeco=i,this.nodeDOM=l}static create(e,t,r,i,s,o){let l=s.nodeViews[t.type.name],a,c=l&&l(t,s,()=>{if(!a)return o;if(a.parent)return a.parent.posBeforeChild(a)},r,i),d=c&&c.dom,u=c&&c.contentDOM;if(t.isText){if(!d)d=document.createTextNode(t.text);else if(!G(d))throw new RangeError(\"Text must be rendered as a DOM text node\")}else d||({dom:d,contentDOM:u}=Fe.renderSpec(document,t.type.spec.toDOM(t),null,t.attrs));!u&&!t.isText&&d.nodeName!=\"BR\"&&(d.hasAttribute(\"contenteditable\")||(d.contentEditable=\"false\"),t.type.spec.draggable&&(d.draggable=!0));let f=d;return d=Zc(d,r,t),c?a=new so(e,t,r,i,d,u||null,f,c):t.isText?new zr(e,t,r,i,d,f):new n(e,t,r,i,d,u||null,f)}parseRule(e){if(this.node.type.spec.reparseInView)return null;let t={node:this.node.type.name,attrs:this.node.attrs};if(this.node.type.whitespace==\"pre\"&&(t.preserveWhitespace=\"full\"),!this.contentDOM)t.getContent=()=>this.node.content;else if(!this.contentLost)t.contentElement=this.contentDOM;else{for(let r=this.children.length-1;r>=0;r--){let i=this.children[r];if(this.dom.contains(i.dom.parentNode)){t.contentElement=i.dom.parentNode;break}}if(!t.contentElement){let r=e&&e.find(i=>C(i)&&e.indexOf(i.parentNode)<0&&this.dom.contains(i));r?t.contentElement=r:t.getContent=()=>x.empty}}return t}matchesNode(e,t,r){return this.dirty==we&&e.eq(this.node)&&$r(t,this.outerDeco)&&r.eq(this.innerDeco)}get size(){return this.node.nodeSize}get border(){return this.node.isLeaf?0:1}updateChildren(e,t){let r=this.node.inlineContent,i=t,s=e.composing?this.localCompositionInfo(e,t):null,o=s&&s.pos>-1?s:null,l=s&&s.pos<0,a=new lo(this,o&&o.node,e),c=this.node.inlineContent,d=c&&this.node.isBlock;Op(this.node,this.innerDeco,(u,f,h)=>{u.spec.marks?a.syncToMarks(u.spec.marks,r,e,f):u.type.side>=0&&!h&&a.syncToMarks(f==this.node.childCount?P.none:this.node.child(f).marks,r,e,f),a.placeWidget(u,e,i)},(u,f,h,p)=>{a.syncToMarks(u.marks,r,e,p),d&&u.isAtom&&!u.isText&&a.addHackNode(\"IMG\",a.top);let m;a.findNodeMatch(u,f,h,p)||l&&e.state.selection.from>i&&e.state.selection.to<i+u.nodeSize&&(m=a.findIndexWithChild(s.node))>-1&&a.updateNodeAt(u,f,h,m,e)||a.updateNextNode(u,f,h,e,p,i)||a.addNode(u,f,h,e,i),i+=u.nodeSize,c&&(d=u.isAtom&&!u.isText)}),a.syncToMarks([],r,e,0),this.node.isTextblock&&a.addTextblockHacks(),a.destroyRest(),(a.changed||this.dirty==wt)&&(o&&this.protectLocalComposition(e,o),Yc(this.contentDOM,this.children,e),Yt&&Ip(this.dom))}localCompositionInfo(e,t){let{from:r,to:i}=e.state.selection;if(!(e.state.selection instanceof T)||r<t||i>t+this.node.content.size)return null;let s=e.input.compositionNode;if(!s||!this.dom.contains(s.parentNode))return null;if(this.node.inlineContent){let o=s.nodeValue,l=Dp(this.node.content,o,r-t,i-t);return l<0?null:{node:s,pos:l,text:o}}else return{node:s,pos:-1,text:\"\"}}protectLocalComposition(e,{node:t,pos:r,text:i}){if(this.getDesc(t))return;let s=t;for(;s.parentNode!=this.contentDOM;s=s.parentNode){for(;s.previousSibling;)s.parentNode.removeChild(s.previousSibling);for(;s.nextSibling;)s.parentNode.removeChild(s.nextSibling);s.pmViewDesc&&(s.pmViewDesc=void 0)}let o=new io(this,s,t,i);e.input.compositionNodes.push(o),this.children=ao(this.children,r,r+i.length,e,o)}update(e,t,r,i){return this.dirty==Ne||!e.sameMarkup(this.node)?!1:(this.updateInner(e,t,r,i),!0)}updateInner(e,t,r,i){this.updateOuterDeco(t),this.node=e,this.innerDeco=r,this.contentDOM&&this.updateChildren(i,this.posAtStart),this.dirty=we}updateOuterDeco(e){if($r(e,this.outerDeco))return;let t=!C(this.nodeDOM),r=this.dom;this.dom=Qc(this.dom,this.nodeDOM,oo(this.outerDeco,this.node,t),oo(e,this.node,t)),this.dom!=r&&(r.pmViewDesc=void 0,this.dom.pmViewDesc=this),this.outerDeco=e}selectNode(){C(this.nodeDOM)&&(this.nodeDOM.classList.add(\"ProseMirror-selectednode\"),(this.contentDOM||!this.node.type.spec.draggable)&&(this.nodeDOM.draggable=!0))}deselectNode(){C(this.nodeDOM)&&(this.nodeDOM.classList.remove(\"ProseMirror-selectednode\"),(this.contentDOM||!this.node.type.spec.draggable)&&this.nodeDOM.removeAttribute(\"draggable\"))}get domAtom(){return this.node.isAtom}};function xc(n,e,t,r,i){Zc(r,e,n);let s=new lt(void 0,n,e,t,r,r,r);return s.contentDOM&&s.updateChildren(i,0),s}var zr=class n extends lt{constructor(e,t,r,i,s,o){super(e,t,r,i,s,null,o)}parseRule(){let e=this.nodeDOM.parentNode;for(;e&&e!=this.dom&&!e.pmIsDeco;)e=e.parentNode;return{skip:e||!0}}update(e,t,r,i){return this.dirty==Ne||this.dirty!=we&&!this.inParent()||!e.sameMarkup(this.node)?!1:(this.updateOuterDeco(t),(this.dirty!=we||e.text!=this.node.text)&&e.text!=this.nodeDOM.nodeValue&&(this.nodeDOM.nodeValue=e.text,i.trackWrites==this.nodeDOM&&(i.trackWrites=null)),this.node=e,this.dirty=we,!0)}inParent(){let e=this.parent.contentDOM;for(let t=this.nodeDOM;t;t=t.parentNode)if(t==e)return!0;return!1}domFromPos(e){return{node:this.nodeDOM,offset:e}}localPosFromDOM(e,t,r){return e==this.nodeDOM?this.posAtStart+Math.min(t,this.node.text.length):super.localPosFromDOM(e,t,r)}ignoreMutation(e){return e.type!=\"characterData\"&&e.type!=\"selection\"}slice(e,t,r){let i=this.node.cut(e,t),s=document.createTextNode(i.text);return new n(this.parent,i,this.outerDeco,this.innerDeco,s,s)}markDirty(e,t){super.markDirty(e,t),this.dom!=this.nodeDOM&&(e==0||t==this.nodeDOM.nodeValue.length)&&(this.dirty=Ne)}get domAtom(){return!1}isText(e){return this.node.text==e}},Hr=class extends Nt{parseRule(){return{ignore:!0}}matchesHack(e){return this.dirty==we&&this.dom.nodeName==e}get domAtom(){return!0}get ignoreForCoords(){return this.dom.nodeName==\"IMG\"}},so=class extends lt{constructor(e,t,r,i,s,o,l,a){super(e,t,r,i,s,o,l),this.spec=a}update(e,t,r,i){if(this.dirty==Ne)return!1;if(this.spec.update&&(this.node.type==e.type||this.spec.multiType)){let s=this.spec.update(e,t,r);return s&&this.updateInner(e,t,r,i),s}else return!this.contentDOM&&!e.isLeaf?!1:super.update(e,t,r,i)}selectNode(){this.spec.selectNode?this.spec.selectNode():super.selectNode()}deselectNode(){this.spec.deselectNode?this.spec.deselectNode():super.deselectNode()}setSelection(e,t,r,i){this.spec.setSelection?this.spec.setSelection(e,t,r.root):super.setSelection(e,t,r,i)}destroy(){this.spec.destroy&&this.spec.destroy(),super.destroy()}stopEvent(e){return this.spec.stopEvent?this.spec.stopEvent(e):!1}ignoreMutation(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):super.ignoreMutation(e)}};function Yc(n,e,t){let r=n.firstChild,i=!1;for(let s=0;s<e.length;s++){let o=e[s],l=o.dom;if(l.parentNode==n){for(;l!=r;)r=kc(r),i=!0;r=r.nextSibling}else i=!0,n.insertBefore(l,r);if(o instanceof Tt){let a=r?r.previousSibling:n.lastChild;Yc(o.contentDOM,o.children,t),r=a?a.nextSibling:n.firstChild}}for(;r;)r=kc(r),i=!0;i&&t.trackWrites==n&&(t.trackWrites=null)}var On=function(n){n&&(this.nodeName=n)};On.prototype=Object.create(null);var vt=[new On];function oo(n,e,t){if(n.length==0)return vt;let r=t?vt[0]:new On,i=[r];for(let s=0;s<n.length;s++){let o=n[s].type.attrs;if(o){o.nodeName&&i.push(r=new On(o.nodeName));for(let l in o){let a=o[l];a!=null&&(t&&i.length==1&&i.push(r=new On(e.isInline?\"span\":\"div\")),l==\"class\"?r.class=(r.class?r.class+\" \":\"\")+a:l==\"style\"?r.style=(r.style?r.style+\";\":\"\")+a:l!=\"nodeName\"&&(r[l]=a))}}}return i}function Qc(n,e,t,r){if(t==vt&&r==vt)return e;let i=e;for(let s=0;s<r.length;s++){let o=r[s],l=t[s];if(s){let a;l&&l.nodeName==o.nodeName&&i!=n&&(a=i.parentNode)&&a.nodeName.toLowerCase()==o.nodeName||(a=document.createElement(o.nodeName),a.pmIsDeco=!0,a.appendChild(i),l=vt[0]),i=a}Ap(i,l||vt[0],o)}return i}function Ap(n,e,t){for(let r in e)r!=\"class\"&&r!=\"style\"&&r!=\"nodeName\"&&!(r in t)&&n.removeAttribute(r);for(let r in t)r!=\"class\"&&r!=\"style\"&&r!=\"nodeName\"&&t[r]!=e[r]&&n.setAttribute(r,t[r]);if(e.class!=t.class){let r=e.class?e.class.split(\" \").filter(Boolean):[],i=t.class?t.class.split(\" \").filter(Boolean):[];for(let s=0;s<r.length;s++)i.indexOf(r[s])==-1&&n.classList.remove(r[s]);for(let s=0;s<i.length;s++)r.indexOf(i[s])==-1&&n.classList.add(i[s]);n.classList.length==0&&n.removeAttribute(\"class\")}if(e.style!=t.style){if(e.style){let r=/\\\\s*([\\\\w\\\\-\\\\xa1-\\\\uffff]+)\\\\s*:(?:\"(?:\\\\\\\\.|[^\"])*\"|\\'(?:\\\\\\\\.|[^\\'])*\\'|\\\\(.*?\\\\)|[^;])*/g,i;for(;i=r.exec(e.style);)n.style.removeProperty(i[1])}t.style&&(n.style.cssText+=t.style)}}function Zc(n,e,t){return Qc(n,n,vt,oo(e,t,!C(n)))}function $r(n,e){if(n.length!=e.length)return!1;for(let t=0;t<n.length;t++)if(!n[t].type.eq(e[t].type))return!1;return!0}function kc(n){let e=n.nextSibling;return n.parentNode.removeChild(n),e}var lo=class{constructor(e,t,r){this.lock=t,this.view=r,this.index=0,this.stack=[],this.changed=!1,this.top=e,this.preMatch=Rp(e.node.content,e)}destroyBetween(e,t){if(e!=t){for(let r=e;r<t;r++)this.top.children[r].destroy();this.top.children.splice(e,t-e),this.changed=!0}}destroyRest(){this.destroyBetween(this.index,this.top.children.length)}syncToMarks(e,t,r,i){let s=0,o=this.stack.length>>1,l=Math.min(o,e.length);for(;s<l&&(s==o-1?this.top:this.stack[s+1<<1]).matchesMark(e[s])&&e[s].type.spec.spanning!==!1;)s++;for(;s<o;)this.destroyRest(),this.top.dirty=we,this.index=this.stack.pop(),this.top=this.stack.pop(),o--;for(;o<e.length;){this.stack.push(this.top,this.index+1);let a=-1,c=this.top.children.length;i<this.preMatch.index&&(c=Math.min(this.index+3,c));for(let d=this.index;d<c;d++){let u=this.top.children[d];if(u.matchesMark(e[o])&&!this.isLocked(u.dom)){a=d;break}}if(a<0&&this.index<this.top.children.length){let d=this.top.children[this.index];d instanceof Tt&&d.dirty!=Ne&&d.mark.type==e[o].type&&d.spec.update&&!this.isLocked(d.dom)&&d.spec.update(e[o])&&(d.mark=e[o],a=this.index,this.changed=!0)}if(a>-1)a>this.index&&(this.changed=!0,this.destroyBetween(this.index,a)),this.top=this.top.children[this.index];else{let d=Tt.create(this.top,e[o],t,r);this.top.children.splice(this.index,0,d),this.top=d,this.changed=!0}this.index=0,o++}}findNodeMatch(e,t,r,i){let s=-1,o;if(i>=this.preMatch.index&&(o=this.preMatch.matches[i-this.preMatch.index]).parent==this.top&&o.matchesNode(e,t,r))s=this.top.children.indexOf(o,this.index);else for(let l=this.index,a=Math.min(this.top.children.length,l+5);l<a;l++){let c=this.top.children[l];if(c.matchesNode(e,t,r)&&!this.preMatch.matched.has(c)){s=l;break}}return s<0?!1:(this.destroyBetween(this.index,s),this.index++,!0)}updateNodeAt(e,t,r,i,s){let o=this.top.children[i];return o.dirty==Ne&&o.dom==o.contentDOM&&(o.dirty=wt),o.update(e,t,r,s)?(this.destroyBetween(this.index,i),this.index++,!0):!1}findIndexWithChild(e){for(;;){let t=e.parentNode;if(!t)return-1;if(t==this.top.contentDOM){let r=e.pmViewDesc;if(r){for(let i=this.index;i<this.top.children.length;i++)if(this.top.children[i]==r)return i}return-1}e=t}}updateNextNode(e,t,r,i,s,o){for(let l=this.index;l<this.top.children.length;l++){let a=this.top.children[l];if(a instanceof lt){let c=this.preMatch.matched.get(a);if(c!=null&&c!=s)return!1;let d=a.dom,u,f=this.isLocked(d)&&!(e.isText&&a.node&&a.node.isText&&a.nodeDOM.nodeValue==e.text&&a.dirty!=Ne&&$r(t,a.outerDeco));if(!f&&a.update(e,t,r,i))return this.destroyBetween(this.index,l),a.dom!=d&&(this.changed=!0),this.index++,!0;if(!f&&(u=this.recreateWrapper(a,e,t,r,i,o)))return this.destroyBetween(this.index,l),this.top.children[this.index]=u,u.contentDOM&&(u.dirty=wt,u.updateChildren(i,o+1),u.dirty=we),this.changed=!0,this.index++,!0;break}}return!1}recreateWrapper(e,t,r,i,s,o){if(e.dirty||t.isAtom||!e.children.length||!e.node.content.eq(t.content)||!$r(r,e.outerDeco)||!i.eq(e.innerDeco))return null;let l=lt.create(this.top,t,r,i,s,o);if(l.contentDOM){l.children=e.children,e.children=[];for(let a of l.children)a.parent=l}return e.destroy(),l}addNode(e,t,r,i,s){let o=lt.create(this.top,e,t,r,i,s);o.contentDOM&&o.updateChildren(i,s+1),this.top.children.splice(this.index++,0,o),this.changed=!0}placeWidget(e,t,r){let i=this.index<this.top.children.length?this.top.children[this.index]:null;if(i&&i.matchesWidget(e)&&(e==i.widget||!i.widget.type.toDOM.parentNode))this.index++;else{let s=new Br(this.top,e,t,r);this.top.children.splice(this.index++,0,s),this.changed=!0}}addTextblockHacks(){let e=this.top.children[this.index-1],t=this.top;for(;e instanceof Tt;)t=e,e=t.children[t.children.length-1];(!e||!(e instanceof zr)||/\\\\n$/.test(e.node.text)||this.view.requiresGeckoHackNode&&/\\\\s$/.test(e.node.text))&&((le||te)&&e&&e.dom.contentEditable==\"false\"&&this.addHackNode(\"IMG\",t),this.addHackNode(\"BR\",this.top))}addHackNode(e,t){if(t==this.top&&this.index<t.children.length&&t.children[this.index].matchesHack(e))this.index++;else{let r=document.createElement(e);e==\"IMG\"&&(r.className=\"ProseMirror-separator\",r.alt=\"\"),e==\"BR\"&&(r.className=\"ProseMirror-trailingBreak\");let i=new Hr(this.top,[],r,null);t!=this.top?t.children.push(i):t.children.splice(this.index++,0,i),this.changed=!0}}isLocked(e){return this.lock&&(e==this.lock||C(e)&&e.contains(this.lock.parentNode))}};function Rp(n,e){let t=e,r=t.children.length,i=n.childCount,s=new Map,o=[];e:for(;i>0;){let l;for(;;)if(r){let c=t.children[r-1];if(c instanceof Tt)t=c,r=c.children.length;else{l=c,r--;break}}else{if(t==e)break e;r=t.parent.children.indexOf(t),t=t.parent}let a=l.node;if(a){if(a!=n.child(i-1))break;--i,s.set(l,i),o.push(l)}}return{index:i,matched:s,matches:o.reverse()}}function Np(n,e){return n.type.side-e.type.side}function Op(n,e,t,r){let i=e.locals(n),s=0;if(i.length==0){for(let c=0;c<n.childCount;c++){let d=n.child(c);r(d,i,e.forChild(s,d),c),s+=d.nodeSize}return}let o=0,l=[],a=null;for(let c=0;;){let d,u;for(;o<i.length&&i[o].to==s;){let g=i[o++];g.widget&&(d?(u||(u=[d])).push(g):d=g)}if(d)if(u){u.sort(Np);for(let g=0;g<u.length;g++)t(u[g],c,!!a)}else t(d,c,!!a);let f,h;if(a)h=-1,f=a,a=null;else if(c<n.childCount)h=c,f=n.child(c++);else break;for(let g=0;g<l.length;g++)l[g].to<=s&&l.splice(g--,1);for(;o<i.length&&i[o].from<=s&&i[o].to>s;)l.push(i[o++]);let p=s+f.nodeSize;if(f.isText){let g=p;o<i.length&&i[o].from<g&&(g=i[o].from);for(let y=0;y<l.length;y++)l[y].to<g&&(g=l[y].to);g<p&&(a=f.cut(g-s),f=f.cut(0,g-s),p=g,h=-1)}else for(;o<i.length&&i[o].to<p;)o++;let m=f.isInline&&!f.isLeaf?l.filter(g=>!g.inline):l.slice();r(f,m,e.forChild(s,f),h),s=p}}function Ip(n){if(n.nodeName==\"UL\"||n.nodeName==\"OL\"){let e=n.style.cssText;n.style.cssText=e+\"; list-style: square !important\",window.getComputedStyle(n).listStyle,n.style.cssText=e}}function Dp(n,e,t,r){for(let i=0,s=0;i<n.childCount&&s<=r;){let o=n.child(i++),l=s;if(s+=o.nodeSize,!o.isText)continue;let a=o.text;for(;i<n.childCount;){let c=n.child(i++);if(s+=c.nodeSize,!c.isText)break;a+=c.text}if(s>=t){if(s>=r&&a.slice(r-e.length-l,r-l)==e)return r-e.length;let c=l<r?a.lastIndexOf(e,r-l-1):-1;if(c>=0&&c+e.length+l>=t)return l+c;if(t==r&&a.length>=r+e.length-l&&a.slice(r-l,r-l+e.length)==e)return r}}return-1}function ao(n,e,t,r,i){let s=[];for(let o=0,l=0;o<n.length;o++){let a=n[o],c=l,d=l+=a.size;c>=t||d<=e?s.push(a):(c<e&&s.push(a.slice(0,e-c,r)),i&&(s.push(i),i=void 0),d>t&&s.push(a.slice(t-c,a.size,r)))}return s}function So(n,e=null){let t=n.domSelectionRange(),r=n.state.doc;if(!t.focusNode)return null;let i=n.docView.nearestDesc(t.focusNode),s=i&&i.size==0,o=n.docView.posFromDOM(t.focusNode,t.focusOffset,1);if(o<0)return null;let l=r.resolve(o),a,c;if(Kr(t)){for(a=o;i&&!i.node;)i=i.parent;if(i&&i.node.isAtom&&M.isSelectable(i.node)&&i.parent&&!(i.node.isInline&&cp(t.focusNode,t.focusOffset,i.dom))){let u=i.posBefore;c=new M(o==u?l:r.resolve(u))}else if(ge&&e==\"key\"&&o>n.state.selection.to&&C(t.focusNode)&&t.focusOffset==t.focusNode.childNodes.length&&i&&i.posAtStart>n.state.selection.to)for(let u=t.focusNode;;u=u.parentNode){if(getComputedStyle(u).overflow!=\"visible\"){c=R.findFrom(r.resolve(i.posAtStart),1);break}if(u==i.dom||u.nextSibling||!u.parentNode||!C(u.parentNode))break}}else{if(t instanceof n.dom.ownerDocument.defaultView.Selection&&t.rangeCount>1){let u=o,f=o;for(let h=0;h<t.rangeCount;h++){let p=t.getRangeAt(h);u=Math.min(u,n.docView.posFromDOM(p.startContainer,p.startOffset,1)),f=Math.max(f,n.docView.posFromDOM(p.endContainer,p.endOffset,-1))}if(u<0)return null;[a,o]=f==n.state.selection.anchor?[f,u]:[u,f],l=r.resolve(o)}else a=n.docView.posFromDOM(t.anchorNode,t.anchorOffset,1);if(a<0)return null}let d=r.resolve(a);if(!c){let u=e==\"pointer\"||n.state.selection.head<l.pos&&!s?1:-1;c=wo(n,d,l,u)}return c}function ed(n){return n.editable?n.hasFocus():nd(n)&&document.activeElement&&document.activeElement.contains(n.dom)}function Je(n,e=!1){let t=n.state.selection;if(td(n,t),!ed(n))return;let r=n.input.mouseDown;if(!e&&te&&r){let i=n.domSelectionRange(),s=n.domObserver.currentSelection;if(i.anchorNode&&s.anchorNode&&At(i.anchorNode,i.anchorOffset,s.anchorNode,s.anchorOffset)&&r.delaySelUpdate()){n.domObserver.setCurSelection();return}}if(n.domObserver.disconnectSelection(),n.cursorWrapper)Pp(n);else{let{anchor:i,head:s}=t,o,l;Sc&&!(t instanceof T)&&(t.$from.parent.inlineContent||(o=wc(n,t.from)),!t.empty&&!t.$from.parent.inlineContent&&(l=wc(n,t.to))),n.docView.setSelection(i,s,n,e),Sc&&(o&&vc(o),l&&vc(l)),t.visible?n.dom.classList.remove(\"ProseMirror-hideselection\"):(n.dom.classList.add(\"ProseMirror-hideselection\"),\"onselectionchange\"in document&&Lp(n))}n.domObserver.setCurSelection(),n.domObserver.connectSelection()}var Sc=le||te&&jc<63;function wc(n,e){let{node:t,offset:r}=n.docView.domFromPos(e,0),i=r<t.childNodes.length?t.childNodes[r]:null,s=r?t.childNodes[r-1]:null;if(le&&i&&i.contentEditable==\"false\")return Gs(i);if((!i||i.contentEditable==\"false\")&&(!s||s.contentEditable==\"false\")){if(i)return Gs(i);if(s)return Gs(s)}}function Gs(n){return n.contentEditable=\"true\",le&&n.draggable&&(n.draggable=!1,n.wasDraggable=!0),n}function vc(n){n.contentEditable=\"false\",n.wasDraggable&&(n.draggable=!0,n.wasDraggable=null)}function Lp(n){let e=n.dom.ownerDocument;e.removeEventListener(\"selectionchange\",n.input.hideSelectionGuard);let t=n.domSelectionRange(),r=t.anchorNode,i=t.anchorOffset;e.addEventListener(\"selectionchange\",n.input.hideSelectionGuard=()=>{(t.anchorNode!=r||t.anchorOffset!=i)&&(e.removeEventListener(\"selectionchange\",n.input.hideSelectionGuard),setTimeout(()=>{(!ed(n)||n.state.selection.visible)&&n.dom.classList.remove(\"ProseMirror-hideselection\")},20))})}function Pp(n){let e=n.domSelection();if(!e)return;let t=n.cursorWrapper.dom,r=t.nodeName==\"IMG\";r?e.collapse(t.parentNode,ee(t)+1):e.collapse(t,0),!r&&!n.state.selection.visible&&he&&ot<=11&&(t.disabled=!0,t.disabled=!1)}function td(n,e){if(e instanceof M){let t=n.docView.descAt(e.from);t!=n.lastSelectedViewDesc&&(Tc(n),t&&t.selectNode(),n.lastSelectedViewDesc=t)}else Tc(n)}function Tc(n){n.lastSelectedViewDesc&&(n.lastSelectedViewDesc.parent&&n.lastSelectedViewDesc.deselectNode(),n.lastSelectedViewDesc=void 0)}function wo(n,e,t,r){return n.someProp(\"createSelectionBetween\",i=>i(n,e,t))||T.between(e,t,r)}function Ec(n){return n.editable&&!n.hasFocus()?!1:nd(n)}function nd(n){let e=n.domSelectionRange();if(!e.anchorNode)return!1;try{return Rt(n.dom,e.anchorNode)&&(n.editable||Rt(n.dom,e.focusNode))}catch{return!1}}function Bp(n){let e=n.docView.domFromPos(n.state.selection.anchor,0),t=n.domSelectionRange();return At(e.node,e.offset,t.anchorNode,t.anchorOffset)}function co(n,e){let{$anchor:t,$head:r}=n.selection,i=e>0?t.max(r):t.min(r),s=i.parent.inlineContent?i.depth?n.doc.resolve(e>0?i.after():i.before()):null:i;return s&&R.findFrom(s,e)}function st(n,e){return n.dispatch(n.state.tr.setSelection(e).scrollIntoView()),!0}function Mc(n,e,t){let r=n.state.selection;if(r instanceof T)if(t.indexOf(\"s\")>-1){let{$head:i}=r,s=i.textOffset?null:e<0?i.nodeBefore:i.nodeAfter;if(!s||s.isText||!s.isLeaf)return!1;let o=n.state.doc.resolve(i.pos+s.nodeSize*(e<0?-1:1));return st(n,new T(r.$anchor,o))}else if(r.empty){if(n.endOfTextblock(e>0?\"forward\":\"backward\")){let i=co(n.state,e);return i&&i instanceof M?st(n,i):!1}else if(!(Se&&t.indexOf(\"m\")>-1)){let i=r.$head,s=i.textOffset?null:e<0?i.nodeBefore:i.nodeAfter,o;if(!s||s.isText)return!1;let l=e<0?i.pos-s.nodeSize:i.pos;return s.isAtom||(o=n.docView.descAt(l))&&!o.contentDOM?M.isSelectable(s)?st(n,new M(e<0?n.state.doc.resolve(i.pos-s.nodeSize):i)):st(n,new T(n.state.doc.resolve(e<0?l:l+s.nodeSize))):!1}}else return!1;else{if(r instanceof M&&r.node.isInline)return st(n,new T(e>0?r.$to:r.$from));{let i=co(n.state,e);return i?st(n,i):!1}}}function In(n,e){let t=n.pmViewDesc;return t?t.size==0&&(e<0||n.nextSibling||n.nodeName!=\"BR\"):C(n)&&n.contentEditable==\"false\"}function Jt(n,e){return e<0?zp(n):Hp(n)}function zp(n){let e=n.domSelectionRange(),t=e.focusNode,r=e.focusOffset;if(!t)return;let i,s,o=!1;for(ge&&C(t)&&r<oe(t)&&In(t.childNodes[r],-1)&&(o=!0);;)if(r>0){if(!C(t))break;let l=t.childNodes[r-1];if(In(l,-1))i=t,s=--r;else if(G(l))t=l,r=t.nodeValue.length;else break}else{if(rd(t))break;{let l=t.previousSibling;for(;l&&In(l,-1);)i=t.parentNode,s=ee(l),l=l.previousSibling;if(l)t=l,r=oe(t);else{if(t=t.parentNode,t==n.dom)break;r=0}}}o?uo(n,t,r):i&&uo(n,i,s)}function Hp(n){let e=n.domSelectionRange(),t=e.focusNode,r=e.focusOffset;if(!t)return;let i=oe(t),s,o;for(;;)if(r<i){if(!C(t))break;let l=t.childNodes[r];if(In(l,1))s=t,o=++r;else break}else{if(rd(t))break;{let l=t.nextSibling;for(;l&&In(l,1);)s=l.parentNode,o=ee(l)+1,l=l.nextSibling;if(l)t=l,r=0,i=oe(t);else{if(t=t.parentNode,t==n.dom)break;r=i=0}}}s&&uo(n,s,o)}function rd(n){let e=n.pmViewDesc;return e&&e.node&&e.node.isBlock}function $p(n,e){for(;n&&e==n.childNodes.length&&!zn(n);)e=ee(n)+1,n=n.parentNode;for(;n&&e<n.childNodes.length;){let t=n.childNodes[e];if(G(t))return t;if(C(t)&&t.contentEditable==\"false\")break;n=t,e=0}}function Fp(n,e){for(;n&&!e&&!zn(n);)e=ee(n),n=n.parentNode;for(;n&&e;){let t=n.childNodes[e-1];if(G(t))return t;if(C(t)&&t.contentEditable==\"false\")break;n=t,e=n.childNodes.length}}function uo(n,e,t){if(!G(e)){let s,o;(o=$p(e,t))?(e=o,t=0):(s=Fp(e,t))&&(e=s,t=s.nodeValue.length)}let r=n.domSelection();if(!r)return;if(Kr(r)){let s=document.createRange();s.setEnd(e,t),s.setStart(e,t),r.removeAllRanges(),r.addRange(s)}else r.extend&&r.extend(e,t);n.domObserver.setCurSelection();let{state:i}=n;setTimeout(()=>{n.state==i&&Je(n)},50)}function Cc(n,e){let t=n.state.doc.resolve(e);if(!(te||Wc)&&t.parent.inlineContent){let i=n.coordsAtPos(e);if(e>t.start()){let s=n.coordsAtPos(e-1),o=(s.top+s.bottom)/2;if(o>i.top&&o<i.bottom&&Math.abs(s.left-i.left)>1)return s.left<i.left?\"ltr\":\"rtl\"}if(e<t.end()){let s=n.coordsAtPos(e+1),o=(s.top+s.bottom)/2;if(o>i.top&&o<i.bottom&&Math.abs(s.left-i.left)>1)return s.left>i.left?\"ltr\":\"rtl\"}}return getComputedStyle(n.dom).direction==\"rtl\"?\"rtl\":\"ltr\"}function Ac(n,e,t){let r=n.state.selection;if(r instanceof T&&!r.empty||t.indexOf(\"s\")>-1||Se&&t.indexOf(\"m\")>-1)return!1;let{$from:i,$to:s}=r;if(!i.parent.inlineContent||n.endOfTextblock(e<0?\"up\":\"down\")){let o=co(n.state,e);if(o&&o instanceof M)return st(n,o)}if(!i.parent.inlineContent){let o=e<0?i:s,l=r instanceof ce?R.near(o,e):R.findFrom(o,e);return l?st(n,l):!1}return!1}function Rc(n,e){if(!(n.state.selection instanceof T))return!0;let{$head:t,$anchor:r,empty:i}=n.state.selection;if(!t.sameParent(r))return!0;if(!i)return!1;if(n.endOfTextblock(e>0?\"forward\":\"backward\"))return!0;let s=!t.textOffset&&(e<0?t.nodeBefore:t.nodeAfter);if(s&&!s.isText){let o=n.state.tr;return e<0?o.delete(t.pos-s.nodeSize,t.pos):o.delete(t.pos,t.pos+s.nodeSize),n.dispatch(o),!0}return!1}function Nc(n,e,t){n.domObserver.stop(),e.contentEditable=t,n.domObserver.start()}function _p(n){if(!le||n.state.selection.$head.parentOffset>0)return!1;let{focusNode:e,focusOffset:t}=n.domSelectionRange();if(e&&C(e)&&t==0&&e.firstChild&&C(e.firstChild)&&e.firstChild.contentEditable==\"false\"){let r=e.firstChild;Nc(n,r,\"true\"),setTimeout(()=>Nc(n,r,\"false\"),20)}return!1}function Vp(n){let e=\"\";return n.ctrlKey&&(e+=\"c\"),n.metaKey&&(e+=\"m\"),n.altKey&&(e+=\"a\"),n.shiftKey&&(e+=\"s\"),e}function jp(n,e){let t=e.keyCode,r=Vp(e);if(t==8||Se&&t==72&&r==\"c\")return Rc(n,-1)||Jt(n,-1);if(t==46&&!e.shiftKey||Se&&t==68&&r==\"c\")return Rc(n,1)||Jt(n,1);if(t==13||t==27)return!0;if(t==37||Se&&t==66&&r==\"c\"){let i=t==37?Cc(n,n.state.selection.from)==\"ltr\"?-1:1:-1;return Mc(n,i,r)||Jt(n,i)}else if(t==39||Se&&t==70&&r==\"c\"){let i=t==39?Cc(n,n.state.selection.from)==\"ltr\"?1:-1:1;return Mc(n,i,r)||Jt(n,i)}else{if(t==38||Se&&t==80&&r==\"c\")return Ac(n,-1,r)||Jt(n,-1);if(t==40||Se&&t==78&&r==\"c\")return _p(n)||Ac(n,1,r)||Jt(n,1);if(r==(Se?\"m\":\"c\")&&(t==66||t==73||t==89||t==90))return!0}return!1}function vo(n,e){n.someProp(\"transformCopied\",h=>{e=h(e,n)});let t=[],{content:r,openStart:i,openEnd:s}=e;for(;i>1&&s>1&&r.childCount==1&&r.firstChild.childCount==1;){i--,s--;let h=r.firstChild;t.push(h.type.name,h.attrs!=h.type.defaultAttrs?h.attrs:null),r=h.content}let o=n.someProp(\"clipboardSerializer\")||Fe.fromSchema(n.state.schema),l=cd(),a=l.createElement(\"div\");a.appendChild(o.serializeFragment(r,{document:l}));let c=a.firstChild,d,u=0;for(;c&&C(c)&&(d=ad[c.nodeName.toLowerCase()]);){for(let h=d.length-1;h>=0;h--){let p=l.createElement(d[h]);for(;a.firstChild;)p.appendChild(a.firstChild);a.appendChild(p),u++}c=a.firstChild}c&&C(c)&&c.setAttribute(\"data-pm-slice\",`${i} ${s}${u?` -${u}`:\"\"} ${JSON.stringify(t)}`);let f=n.someProp(\"clipboardTextSerializer\",h=>h(e,n))||e.content.textBetween(0,e.content.size,`\\n\\n`);return{dom:a,text:f,slice:e}}function id(n,e,t,r,i){let s=i.parent.type.spec.code,o,l;if(!t&&!e)return null;let a=!!e&&(r||s||!t);if(a){if(n.someProp(\"transformPastedText\",f=>{e=f(e,s||r,n)}),s)return l=new v(x.from(n.state.schema.text(e.replace(/\\\\r\\\\n?/g,`\\n`))),0,0),n.someProp(\"transformPasted\",f=>{l=f(l,n,!0)}),l;let u=n.someProp(\"clipboardTextParser\",f=>f(e,i,r,n));if(u)l=u;else{let f=i.marks(),{schema:h}=n.state,p=Fe.fromSchema(h);o=document.createElement(\"div\"),e.split(/(?:\\\\r\\\\n?|\\\\n)+/).forEach(m=>{let g=o.appendChild(document.createElement(\"p\"));m&&g.appendChild(p.serializeNode(h.text(m,f)))})}}else n.someProp(\"transformPastedHTML\",u=>{t=u(t,n)}),o=qp(t),qr&&Jp(o);let c=o&&o.querySelector(\"[data-pm-slice]\"),d=c&&/^(\\\\d+) (\\\\d+)(?: -(\\\\d+))? (.*)/.exec(c.getAttribute(\"data-pm-slice\")||\"\");if(d&&d[3])for(let u=+d[3];u>0;u--){let f=o.firstChild;for(;f&&!C(f);)f=f.nextSibling;if(!f)break;o=f}if(l||(l=(n.someProp(\"clipboardParser\")||n.someProp(\"domParser\")||xe.fromSchema(n.state.schema)).parseSlice(o,{preserveWhitespace:!!(a||d),context:i,ruleFromNode(f){return f.nodeName==\"BR\"&&!f.nextSibling&&f.parentNode&&!Wp.test(f.parentNode.nodeName)?{ignore:!0}:null}})),d)l=Xp(Oc(l,+d[1],+d[2]),d[4]);else if(l=v.maxOpen(Up(l.content,i),!0),l.openStart||l.openEnd){let u=0,f=0;for(let h=l.content.firstChild;u<l.openStart&&!h.type.spec.isolating;u++,h=h.firstChild);for(let h=l.content.lastChild;f<l.openEnd&&!h.type.spec.isolating;f++,h=h.lastChild);l=Oc(l,u,f)}return n.someProp(\"transformPasted\",u=>{l=u(l,n,a)}),l}var Wp=/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;function Up(n,e){if(n.childCount<2)return n;for(let t=e.depth;t>=0;t--){let i=e.node(t).contentMatchAt(e.index(t)),s,o=[];if(n.forEach(l=>{if(!o)return;let a=i.findWrapping(l.type),c;if(!a)return o=null;if(c=o.length&&s.length&&od(a,s,l,o[o.length-1],0))o[o.length-1]=c;else{o.length&&(o[o.length-1]=ld(o[o.length-1],s.length));let d=sd(l,a);o.push(d),i=i.matchType(d.type),s=a}}),o)return x.from(o)}return n}function sd(n,e,t=0){for(let r=e.length-1;r>=t;r--)n=e[r].create(null,x.from(n));return n}function od(n,e,t,r,i){if(i<n.length&&i<e.length&&n[i]==e[i]){let s=od(n,e,t,r.lastChild,i+1);if(s)return r.copy(r.content.replaceChild(r.childCount-1,s));if(r.contentMatchAt(r.childCount).matchType(i==n.length-1?t.type:n[i+1]))return r.copy(r.content.append(x.from(sd(t,n,i+1))))}}function ld(n,e){if(e==0)return n;let t=n.content.replaceChild(n.childCount-1,ld(n.lastChild,e-1)),r=n.contentMatchAt(n.childCount).fillBefore(x.empty,!0);return n.copy(t.append(r))}function fo(n,e,t,r,i,s){let o=e<0?n.firstChild:n.lastChild,l=o.content;return n.childCount>1&&(s=0),i<r-1&&(l=fo(l,e,t,r,i+1,s)),i>=t&&(l=e<0?o.contentMatchAt(0).fillBefore(l,s<=i).append(l):l.append(o.contentMatchAt(o.childCount).fillBefore(x.empty,!0))),n.replaceChild(e<0?0:n.childCount-1,o.copy(l))}function Oc(n,e,t){return e<n.openStart&&(n=new v(fo(n.content,-1,e,n.openStart,0,n.openEnd),e,n.openEnd)),t<n.openEnd&&(n=new v(fo(n.content,1,t,n.openEnd,0,0),n.openStart,t)),n}var ad={thead:[\"table\"],tbody:[\"table\"],tfoot:[\"table\"],caption:[\"table\"],colgroup:[\"table\"],col:[\"table\",\"colgroup\"],tr:[\"table\",\"tbody\"],td:[\"table\",\"tbody\",\"tr\"],th:[\"table\",\"tbody\",\"tr\"]};function cd(){return document.implementation.createHTMLDocument(\"title\")}var Nn=null;function Kp(n){let e=window.trustedTypes;if(!e)return n;if(!Nn){if(Nn=e.defaultPolicy)try{return Nn.createHTML(n)}catch{}Nn=e.createPolicy(\"ProseMirrorClipboard\",{createHTML:t=>t})}return Nn.createHTML(n)}function qp(n){let e=/^(\\\\s*<meta [^>]*>)*/.exec(n);e&&(n=n.slice(e[0].length));let t=cd(),r=t.body,i=/<([a-z][^>\\\\s]+)/i.exec(n),s;if((s=i&&ad[i[1].toLowerCase()])&&(n=s.map(o=>\"<\"+o+\">\").join(\"\")+n+s.map(o=>\"</\"+o+\">\").reverse().join(\"\")),r.innerHTML=Kp(n),s)for(let o=0;o<s.length;o++)r=r.querySelector(s[o])||r;for(let o=0;o<t.styleSheets.length;o++){let l=t.styleSheets[o];for(let a=0;a<l.rules.length;a++){let c=l.rules[a];if(c instanceof CSSStyleRule){let d=r.querySelectorAll(c.selectorText);for(let u=0;u<d.length;u++)d[u].style.cssText+=c.style.cssText}}}return r}function Jp(n){let e=n.querySelectorAll(te?\"span:not([class]):not([style])\":\"span.Apple-converted-space\");for(let t=0;t<e.length;t++){let r=e[t];r.childNodes.length==1&&r.textContent==\"\\\\xA0\"&&r.parentNode&&r.parentNode.replaceChild(n.ownerDocument.createTextNode(\" \"),r)}}function Xp(n,e){if(!n.size)return n;let t=n.content.firstChild.type.schema,r;try{r=JSON.parse(e)}catch{return n}let{content:i,openStart:s,openEnd:o}=n;for(let l=r.length-2;l>=0;l-=2){let a=t.nodes[r[l]];if(!a||a.hasRequiredAttrs())break;try{i=x.from(a.create(r[l+1],i))}catch{break}s++,o++}return new v(i,s,o)}var de={},ue={},Gp={touchstart:!0,touchmove:!0},ho=class{constructor(){this.shiftKey=!1,this.mouseDown=null,this.lastKeyCode=null,this.lastKeyCodeTime=0,this.lastClick={time:0,x:0,y:0,type:\"\",button:0},this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastIOSEnter=0,this.lastIOSEnterFallbackTimeout=-1,this.lastFocus=0,this.lastTouch=0,this.lastChromeDelete=0,this.composing=!1,this.compositionNode=null,this.composingTimeout=-1,this.compositionNodes=[],this.compositionEndedAt=-2e8,this.compositionID=1,this.badSafariComposition=!1,this.compositionPendingChanges=0,this.domChangeCount=0,this.eventHandlers=Object.create(null),this.hideSelectionGuard=null}};function Yp(n){for(let e in de){let t=de[e];n.dom.addEventListener(e,n.input.eventHandlers[e]=r=>{Zp(n,r)&&!To(n,r)&&(n.editable||!(r.type in ue))&&t(n,r)},Gp[e]?{passive:!0}:void 0)}le&&n.dom.addEventListener(\"input\",()=>null),po(n)}function qe(n,e){n.input.lastSelectionOrigin=e,n.input.lastSelectionTime=Date.now()}function Qp(n){n.input.mouseDown&&n.input.mouseDown.done(),n.domObserver.stop();for(let e in n.input.eventHandlers)n.dom.removeEventListener(e,n.input.eventHandlers[e]);clearTimeout(n.input.composingTimeout),clearTimeout(n.input.lastIOSEnterFallbackTimeout)}function po(n){n.someProp(\"handleDOMEvents\",e=>{for(let t in e)n.input.eventHandlers[t]||n.dom.addEventListener(t,n.input.eventHandlers[t]=r=>To(n,r))})}function To(n,e){return n.someProp(\"handleDOMEvents\",t=>{let r=t[e.type];return r?r(n,e)||e.defaultPrevented:!1})}function Zp(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target;t!=n.dom;t=t.parentNode)if(!t||t.nodeType==11||t.pmViewDesc&&t.pmViewDesc.stopEvent(e))return!1;return!0}function em(n,e){!To(n,e)&&de[e.type]&&(n.editable||!(e.type in ue))&&de[e.type](n,e)}ue.keydown=(n,e)=>{let t=e;if(n.input.shiftKey=t.keyCode==16||t.shiftKey,!fd(n)&&(n.input.lastKeyCode=t.keyCode,n.input.lastKeyCodeTime=Date.now(),!(Ke&&te&&t.keyCode==13)))if(t.keyCode!=229&&n.domObserver.forceFlush(),Yt&&t.keyCode==13&&!t.ctrlKey&&!t.altKey&&!t.metaKey){let r=Date.now();n.input.lastIOSEnter=r,n.input.lastIOSEnterFallbackTimeout=setTimeout(()=>{n.input.lastIOSEnter==r&&(n.someProp(\"handleKeyDown\",i=>i(n,St(13,\"Enter\"))),n.input.lastIOSEnter=0)},200)}else n.someProp(\"handleKeyDown\",r=>r(n,t))||jp(n,t)?t.preventDefault():qe(n,\"key\")};ue.keyup=(n,e)=>{e.keyCode==16&&(n.input.shiftKey=!1)};ue.keypress=(n,e)=>{let t=e;if(fd(n)||!t.charCode||t.ctrlKey&&!t.altKey||Se&&t.metaKey)return;if(n.someProp(\"handleKeyPress\",i=>i(n,t))){t.preventDefault();return}let r=n.state.selection;if(!(r instanceof T)||!r.$from.sameParent(r.$to)){let i=String.fromCharCode(t.charCode),s=()=>n.state.tr.insertText(i).scrollIntoView();!/[\\\\r\\\\n]/.test(i)&&!n.someProp(\"handleTextInput\",o=>o(n,r.$from.pos,r.$to.pos,i,s))&&n.dispatch(s()),t.preventDefault()}};function Hn(n){return{left:n.clientX,top:n.clientY}}function tm(n,e){let t=e.x-n.clientX,r=e.y-n.clientY;return t*t+r*r<100}function Eo(n,e,t,r,i){if(r==-1)return!1;let s=n.state.doc.resolve(r);for(let o=s.depth+1;o>0;o--)if(n.someProp(e,l=>o>s.depth?l(n,t,s.nodeAfter,s.before(o),i,!0):l(n,t,s.node(o),s.before(o),i,!1)))return!0;return!1}function $n(n,e,t){if(n.focused||n.focus(),n.state.selection.eq(e))return;let r=n.state.tr.setSelection(e);r.setMeta(\"pointer\",!0),n.dispatch(r)}function nm(n,e){if(e==-1)return!1;let t=n.state.doc.resolve(e),r=t.nodeAfter;return r&&r.isAtom&&M.isSelectable(r)?($n(n,new M(t)),!0):!1}function rm(n,e){if(e==-1)return!1;let t=n.state.selection,r,i;t instanceof M&&(r=t.node);let s=n.state.doc.resolve(e);for(let o=s.depth+1;o>0;o--){let l=o>s.depth?s.nodeAfter:s.node(o);if(M.isSelectable(l)){r&&t.$from.depth>0&&o>=t.$from.depth&&s.before(t.$from.depth+1)==t.$from.pos?i=s.before(t.$from.depth):i=s.before(o);break}}return i!=null?($n(n,M.create(n.state.doc,i)),!0):!1}function im(n,e,t,r,i){return Eo(n,\"handleClickOn\",e,t,r)||n.someProp(\"handleClick\",s=>s(n,e,r))||(i?rm(n,t):nm(n,t))}function sm(n,e,t,r){return Eo(n,\"handleDoubleClickOn\",e,t,r)||n.someProp(\"handleDoubleClick\",i=>i(n,e,r))}function om(n,e,t,r){return Eo(n,\"handleTripleClickOn\",e,t,r)||n.someProp(\"handleTripleClick\",i=>i(n,e,r))||lm(n,t,r)}function lm(n,e,t){if(t.button!=0)return!1;let r=dd(n,e,!0),i=n.state.doc;return r?($n(n,r),r instanceof T&&i.eq(n.state.doc)&&(n.input.mouseDown=new go(n,r)),!0):!1}function dd(n,e,t){let r=n.state.doc;if(e==-1)return r.inlineContent?T.create(r,0,r.content.size):null;let i=r.resolve(e);for(let s=i.depth+1;s>0;s--){let o=s>i.depth?i.nodeAfter:i.node(s),l=i.before(s);if(o.inlineContent)return T.create(r,l+1,l+1+o.content.size);if(t&&M.isSelectable(o))return M.create(r,l)}return null}function Mo(n){return _r(n)}var ud=Se?\"metaKey\":\"ctrlKey\";de.mousedown=(n,e)=>{let t=e;n.input.shiftKey=t.shiftKey;let r=Mo(n),i=Date.now(),s=\"singleClick\";i-n.input.lastClick.time<500&&tm(t,n.input.lastClick)&&!t[ud]&&n.input.lastClick.button==t.button&&(n.input.lastClick.type==\"singleClick\"?s=\"doubleClick\":n.input.lastClick.type==\"doubleClick\"&&(s=\"tripleClick\")),n.input.lastClick={time:i,x:t.clientX,y:t.clientY,type:s,button:t.button},n.input.mouseDown&&n.input.mouseDown.done();let o=n.posAtCoords(Hn(t));o&&(s==\"singleClick\"?n.input.mouseDown=new mo(n,o,t,!!r):(s==\"doubleClick\"?sm:om)(n,o.pos,o.inside,t)?t.preventDefault():qe(n,\"pointer\"))};var Fr=class{constructor(e){this.view=e,this.mightDrag=null,e.root.addEventListener(\"mouseup\",this.up=this.up.bind(this)),e.root.addEventListener(\"mousemove\",this.move=this.move.bind(this))}up(e){this.done()}move(e){e.buttons==0&&this.done()}done(){this.view.root.removeEventListener(\"mouseup\",this.up),this.view.root.removeEventListener(\"mousemove\",this.move),this.view.input.mouseDown==this&&(this.view.input.mouseDown=null)}delaySelUpdate(){return!1}},mo=class extends Fr{constructor(e,t,r,i){super(e),this.pos=t,this.event=r,this.flushed=i,this.delayedSelectionSync=!1,this.startDoc=e.state.doc,this.selectNode=!!r[ud],this.allowDefault=r.shiftKey;let s,o;if(t.inside>-1)s=e.state.doc.nodeAt(t.inside),o=t.inside;else{let d=e.state.doc.resolve(t.pos);s=d.parent,o=d.depth?d.before():0}let l=i?null:r.target,a=l?e.docView.nearestDesc(l,!0):null;this.target=a&&C(a.nodeDOM)?a.nodeDOM:null;let{selection:c}=e.state;r.button==0&&(s.type.spec.draggable&&s.type.spec.selectable!==!1||c instanceof M&&c.from<=o&&c.to>o)&&(this.mightDrag={node:s,pos:o,addAttr:!!(this.target&&!this.target.draggable),setUneditable:!!(this.target&&ge&&!this.target.hasAttribute(\"contentEditable\"))}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout(()=>{this.view.input.mouseDown==this&&this.target.setAttribute(\"contentEditable\",\"false\")},20),this.view.domObserver.start()),qe(e,\"pointer\")}done(){super.done(),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute(\"draggable\"),this.mightDrag.setUneditable&&this.target.removeAttribute(\"contentEditable\"),this.view.domObserver.start()),this.delayedSelectionSync&&setTimeout(()=>{this.view.isDestroyed||Je(this.view)})}up(e){if(this.done(),!this.view.dom.contains(e.target))return;let t=this.pos;this.view.state.doc!=this.startDoc&&(t=this.view.posAtCoords(Hn(e))),this.updateAllowDefault(e),this.allowDefault||!t?qe(this.view,\"pointer\"):im(this.view,t.pos,t.inside,e,this.selectNode)?e.preventDefault():e.button==0&&(this.flushed||le&&this.mightDrag&&!this.mightDrag.node.isAtom||te&&!this.view.state.selection.visible&&Math.min(Math.abs(t.pos-this.view.state.selection.from),Math.abs(t.pos-this.view.state.selection.to))<=2)?($n(this.view,R.near(this.view.state.doc.resolve(t.pos))),e.preventDefault()):qe(this.view,\"pointer\")}move(e){this.updateAllowDefault(e),qe(this.view,\"pointer\"),super.move(e)}updateAllowDefault(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0)}delaySelUpdate(){return this.allowDefault?(this.delayedSelectionSync=!0,!0):!1}},go=class extends Fr{constructor(e,t){super(e),this.startSelection=t,this.startDoc=e.state.doc}move(e){if(e.buttons==0||this.view.isDestroyed||!this.view.state.doc.eq(this.startDoc)){this.done();return}e.preventDefault(),qe(this.view,\"pointer\");let t=this.view.posAtCoords(Hn(e)),r=t&&dd(this.view,t.inside,!1);if(!r)return;let{doc:i}=this.view.state,s=this.startSelection,[o,l]=r.from<s.from?[s.to,r.from]:[s.from,r.to];$n(this.view,T.create(i,o,l))}};de.touchstart=n=>{n.input.lastTouch=Date.now(),Mo(n),qe(n,\"pointer\")};de.touchmove=n=>{n.input.lastTouch=Date.now(),qe(n,\"pointer\")};de.contextmenu=n=>Mo(n);function fd(n,e){return n.composing?!0:le&&Math.abs(Date.now()-n.input.compositionEndedAt)<500?(n.input.compositionEndedAt=-2e8,!0):!1}var am=Ke?5e3:-1;ue.compositionstart=ue.compositionupdate=n=>{if(!n.composing){n.domObserver.flush();let{state:e}=n,t=e.selection.$to;if(e.selection instanceof T&&e.selection.empty&&(e.storedMarks||!t.textOffset&&t.parentOffset&&t.nodeBefore.marks.some(r=>r.type.spec.inclusive===!1)||te&&Wc&&cm(n)))n.markCursor=n.state.storedMarks||t.marks(),_r(n,!0),n.markCursor=null;else if(_r(n,!e.selection.empty),ge&&e.selection.empty&&t.parentOffset&&!t.textOffset&&t.nodeBefore.marks.length){let r=n.domSelectionRange();for(let i=r.focusNode,s=r.focusOffset;i&&C(i)&&s!=0;){let o=s<0?i.lastChild:i.childNodes[s-1];if(!o)break;if(G(o)){let l=n.domSelection();l&&l.collapse(o,o.nodeValue.length);break}else i=o,s=-1}}n.input.composing=!0}hd(n,am)};function cm(n){let{focusNode:e,focusOffset:t}=n.domSelectionRange();if(!e||!C(e)||t>=e.childNodes.length)return!1;let r=e.childNodes[t];return C(r)&&r.contentEditable==\"false\"}ue.compositionend=(n,e)=>{n.composing&&(n.input.composing=!1,n.input.compositionEndedAt=Date.now(),n.input.compositionPendingChanges=n.domObserver.pendingRecords().length?n.input.compositionID:0,n.input.compositionNode=null,n.input.badSafariComposition?n.domObserver.forceFlush():n.input.compositionPendingChanges&&Promise.resolve().then(()=>n.domObserver.flush()),n.input.compositionID++,hd(n,20))};function hd(n,e){clearTimeout(n.input.composingTimeout),e>-1&&(n.input.composingTimeout=setTimeout(()=>_r(n),e))}function pd(n){for(n.composing&&(n.input.composing=!1,n.input.compositionEndedAt=Date.now());n.input.compositionNodes.length>0;)n.input.compositionNodes.pop().markParentsDirty()}function dm(n){let e=n.domSelectionRange();if(!e.focusNode)return null;let t=lp(e.focusNode,e.focusOffset),r=ap(e.focusNode,e.focusOffset);if(t&&r&&t!=r){let i=r.pmViewDesc,s=n.domObserver.lastChangedTextNode;if(t==s||r==s)return s;if(!i||!i.isText(r.nodeValue))return r;if(n.input.compositionNode==r){let o=t.pmViewDesc;if(!(!o||!o.isText(t.nodeValue)))return r}}return t||r}function _r(n,e=!1){if(!(Ke&&n.domObserver.flushingSoon>=0)){if(n.domObserver.forceFlush(),pd(n),e||n.docView&&n.docView.dirty){let t=So(n),r=n.state.selection;return t&&!t.eq(r)?n.dispatch(n.state.tr.setSelection(t)):(n.markCursor||e)&&!r.$from.node(r.$from.sharedDepth(r.to)).inlineContent?n.dispatch(n.state.tr.deleteSelection()):n.updateState(n.state),!0}return!1}}function um(n,e){if(!n.dom.parentNode)return;let t=n.dom.parentNode.appendChild(document.createElement(\"div\"));t.appendChild(e),t.style.cssText=\"position: fixed; left: -10000px; top: 10px\";let r=getSelection(),i=document.createRange();i.selectNodeContents(e),n.dom.blur(),r.removeAllRanges(),r.addRange(i),setTimeout(()=>{t.parentNode&&t.parentNode.removeChild(t),n.focus()},50)}var Dn=he&&ot<15||Yt&&fp<604;de.copy=ue.cut=(n,e)=>{let t=e,r=n.state.selection,i=t.type==\"cut\";if(r.empty)return;let s=Dn?null:t.clipboardData,o=r.content(),{dom:l,text:a}=vo(n,o);s?(t.preventDefault(),s.clearData(),s.setData(\"text/html\",l.innerHTML),s.setData(\"text/plain\",a)):um(n,l),i&&n.dispatch(n.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\",\"cut\"))};function fm(n){return n.openStart==0&&n.openEnd==0&&n.content.childCount==1?n.content.firstChild:null}function hm(n,e){if(!n.dom.parentNode)return;let t=n.input.shiftKey||n.state.selection.$from.parent.type.spec.code,r=n.dom.parentNode.appendChild(document.createElement(t?\"textarea\":\"div\"));t||(r.contentEditable=\"true\"),r.style.cssText=\"position: fixed; left: -10000px; top: 10px\",r.focus();let i=n.input.shiftKey&&n.input.lastKeyCode!=45;setTimeout(()=>{n.focus(),r.parentNode&&r.parentNode.removeChild(r),t?Ln(n,r.value,null,i,e):Ln(n,r.textContent,r.innerHTML,i,e)},50)}function Ln(n,e,t,r,i){let s=id(n,e,t,r,n.state.selection.$from);if(n.someProp(\"handlePaste\",a=>a(n,i,s||v.empty)))return!0;if(!s)return!1;let o=fm(s),l=o?n.state.tr.replaceSelectionWith(o,r):n.state.tr.replaceSelection(s);return n.dispatch(l.scrollIntoView().setMeta(\"paste\",!0).setMeta(\"uiEvent\",\"paste\")),!0}function md(n){let e=n.getData(\"text/plain\")||n.getData(\"Text\");if(e)return e;let t=n.getData(\"text/uri-list\");return t?t.replace(/\\\\r?\\\\n/g,\" \"):\"\"}ue.paste=(n,e)=>{let t=e;if(n.composing&&!Ke)return;let r=Dn?null:t.clipboardData,i=n.input.shiftKey&&n.input.lastKeyCode!=45;r&&Ln(n,md(r),r.getData(\"text/html\"),i,t)?t.preventDefault():hm(n,t)};var Vr=class{constructor(e,t,r){this.slice=e,this.move=t,this.node=r}},pm=Se?\"altKey\":\"ctrlKey\";function gd(n,e){let t;return n.someProp(\"dragCopies\",r=>{t=t||r(e)}),t!=null?!t:!e[pm]}de.dragstart=(n,e)=>{let t=e,r=n.input.mouseDown;if(r&&r.done(),!t.dataTransfer)return;let i=n.state.selection,s=i.empty?null:n.posAtCoords(Hn(t)),o;if(!(s&&s.pos>=i.from&&s.pos<=(i instanceof M?i.to-1:i.to))){if(r&&r.mightDrag)o=M.create(n.state.doc,r.mightDrag.pos);else if(t.target&&C(t.target)){let u=n.docView.nearestDesc(t.target,!0);u&&u.node.type.spec.draggable&&u!=n.docView&&(o=M.create(n.state.doc,u.posBefore))}}let l=(o||n.state.selection).content(),{dom:a,text:c,slice:d}=vo(n,l);(!t.dataTransfer.files.length||!te||jc>120)&&t.dataTransfer.clearData(),t.dataTransfer.setData(Dn?\"Text\":\"text/html\",a.innerHTML),t.dataTransfer.effectAllowed=\"copyMove\",Dn||t.dataTransfer.setData(\"text/plain\",c),n.dragging=new Vr(d,gd(n,t),o)};de.dragend=n=>{let e=n.dragging;window.setTimeout(()=>{n.dragging==e&&(n.dragging=null)},50)};ue.dragover=ue.dragenter=(n,e)=>e.preventDefault();ue.drop=(n,e)=>{try{mm(n,e,n.dragging)}finally{n.dragging=null}};function mm(n,e,t){if(!e.dataTransfer)return;let r=n.posAtCoords(Hn(e));if(!r)return;let i=n.state.doc.resolve(r.pos),s=t&&t.slice;s?n.someProp(\"transformPasted\",h=>{s=h(s,n,!1)}):s=id(n,md(e.dataTransfer),Dn?null:e.dataTransfer.getData(\"text/html\"),!1,i);let o=!!(t&&gd(n,e));if(n.someProp(\"handleDrop\",h=>h(n,e,s||v.empty,o))){e.preventDefault();return}if(!s)return;e.preventDefault();let l=s?Ir(n.state.doc,i.pos,s):i.pos;l==null&&(l=i.pos);let a=n.state.tr;if(o){let{node:h}=t;h?h.replace(a):a.deleteSelection()}let c=a.mapping.map(l),d=s.openStart==0&&s.openEnd==0&&s.content.childCount==1,u=a.doc;if(d?a.replaceRangeWith(c,c,s.content.firstChild):a.replaceRange(c,c,s),a.doc.eq(u))return;let f=a.doc.resolve(c);if(d&&M.isSelectable(s.content.firstChild)&&f.nodeAfter&&f.nodeAfter.sameMarkup(s.content.firstChild))a.setSelection(new M(f));else{let h=a.mapping.map(l);a.mapping.maps[a.mapping.maps.length-1].forEach((p,m,g,y)=>h=y),a.setSelection(wo(n,f,a.doc.resolve(h)))}n.focus(),n.dispatch(a.setMeta(\"uiEvent\",\"drop\"))}de.focus=n=>{n.input.lastFocus=Date.now(),n.focused||(n.domObserver.stop(),n.dom.classList.add(\"ProseMirror-focused\"),n.domObserver.start(),n.focused=!0,setTimeout(()=>{n.docView&&n.hasFocus()&&!n.domObserver.currentSelection.eq(n.domSelectionRange())&&Je(n)},20))};de.blur=(n,e)=>{let t=e;n.focused&&(n.domObserver.stop(),n.dom.classList.remove(\"ProseMirror-focused\"),n.domObserver.start(),t.relatedTarget&&n.dom.contains(t.relatedTarget)&&n.domObserver.currentSelection.clear(),n.focused=!1)};de.beforeinput=(n,e)=>{if(Ke&&e.inputType==\"deleteContentBackward\"){n.domObserver.flushSoon();let{domChangeCount:r}=n.input;setTimeout(()=>{if(n.input.domChangeCount!=r||(n.dom.blur(),n.focus(),n.someProp(\"handleKeyDown\",s=>s(n,St(8,\"Backspace\")))))return;let{$cursor:i}=n.state.selection;i&&i.pos>0&&n.dispatch(n.state.tr.delete(i.pos-1,i.pos).scrollIntoView())},50)}};for(let n in ue)de[n]=ue[n];function Pn(n,e){if(n==e)return!0;for(let t in n)if(n[t]!==e[t])return!1;for(let t in e)if(!(t in n))return!1;return!0}var jr=class n{constructor(e,t){this.toDOM=e,this.spec=t||Mt,this.side=this.spec.side||0}map(e,t,r,i){let{pos:s,deleted:o}=e.mapResult(t.from+i,this.side<0?-1:1);return o?null:new fe(s-r,s-r,this)}valid(){return!0}eq(e){return this==e||e instanceof n&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&Pn(this.spec,e.spec))}destroy(e){this.spec.destroy&&this.spec.destroy(e)}},Et=class n{constructor(e,t){this.attrs=e,this.spec=t||Mt}map(e,t,r,i){let s=e.map(t.from+i,this.spec.inclusiveStart?-1:1)-r,o=e.map(t.to+i,this.spec.inclusiveEnd?1:-1)-r;return s>=o?null:new fe(s,o,this)}valid(e,t){return t.from<t.to}eq(e){return this==e||e instanceof n&&Pn(this.attrs,e.attrs)&&Pn(this.spec,e.spec)}static is(e){return e.type instanceof n}destroy(){}},yo=class n{constructor(e,t){this.attrs=e,this.spec=t||Mt}map(e,t,r,i){let s=e.mapResult(t.from+i,1);if(s.deleted)return null;let o=e.mapResult(t.to+i,-1);return o.deleted||o.pos<=s.pos?null:new fe(s.pos-r,o.pos-r,this)}valid(e,t){let{index:r,offset:i}=e.content.findIndex(t.from),s;return i==t.from&&!(s=e.child(r)).isText&&i+s.nodeSize==t.to}eq(e){return this==e||e instanceof n&&Pn(this.attrs,e.attrs)&&Pn(this.spec,e.spec)}destroy(){}},fe=class n{constructor(e,t,r){this.from=e,this.to=t,this.type=r}copy(e,t){return new n(e,t,this.type)}eq(e,t=0){return this.type.eq(e.type)&&this.from+t==e.from&&this.to+t==e.to}map(e,t,r){return this.type.map(e,this,t,r)}static widget(e,t,r){return new n(e,e,new jr(t,r))}static inline(e,t,r,i){return new n(e,t,new Et(r,i))}static node(e,t,r,i){return new n(e,t,new yo(r,i))}get spec(){return this.type.spec}get inline(){return this.type instanceof Et}get widget(){return this.type instanceof jr}},Xt=[],Mt={},_=class n{constructor(e,t){this.local=e.length?e:Xt,this.children=t.length?t:Xt}static create(e,t){return t.length?Ur(t,e,0,Mt):se}find(e,t,r){let i=[];return this.findInner(e??0,t??1e9,i,0,r),i}findInner(e,t,r,i,s){for(let o=0;o<this.local.length;o++){let l=this.local[o];l.from<=t&&l.to>=e&&(!s||s(l.spec))&&r.push(l.copy(l.from+i,l.to+i))}for(let o=0;o<this.children.length;o+=3)if(this.children[o]<t&&this.children[o+1]>e){let l=this.children[o]+1;this.children[o+2].findInner(e-l,t-l,r,i+l,s)}}map(e,t,r){return this==se||e.maps.length==0?this:this.mapInner(e,t,0,0,r||Mt)}mapInner(e,t,r,i,s){let o;for(let l=0;l<this.local.length;l++){let a=this.local[l].map(e,r,i);a&&a.type.valid(t,a)?(o||(o=[])).push(a):s.onRemove&&s.onRemove(this.local[l].spec)}return this.children.length?gm(this.children,o||[],e,t,r,i,s):o?new n(o.sort(Ct),Xt):se}add(e,t){return t.length?this==se?n.create(e,t):this.addInner(e,t,0):this}addInner(e,t,r){let i,s=0;e.forEach((l,a)=>{let c=a+r,d;if(d=bd(t,l,c)){for(i||(i=this.children.slice());s<i.length&&i[s]<a;)s+=3;i[s]==a?i[s+2]=i[s+2].addInner(l,d,c+1):i.splice(s,0,a,a+l.nodeSize,Ur(d,l,c+1,Mt)),s+=3}});let o=yd(s?xd(t):t,-r);for(let l=0;l<o.length;l++)o[l].type.valid(e,o[l])||o.splice(l--,1);return new n(o.length?this.local.concat(o).sort(Ct):this.local,i||this.children)}remove(e){return e.length==0||this==se?this:this.removeInner(e,0)}removeInner(e,t){let r=this.children,i=this.local;for(let s=0;s<r.length;s+=3){let o,l=r[s]+t,a=r[s+1]+t;for(let d=0,u;d<e.length;d++)(u=e[d])&&u.from>l&&u.to<a&&(e[d]=null,(o||(o=[])).push(u));if(!o)continue;r==this.children&&(r=this.children.slice());let c=r[s+2].removeInner(o,l+1);c!=se?r[s+2]=c:(r.splice(s,3),s-=3)}if(i.length){for(let s=0,o;s<e.length;s++)if(o=e[s])for(let l=0;l<i.length;l++)i[l].eq(o,t)&&(i==this.local&&(i=this.local.slice()),i.splice(l--,1))}return r==this.children&&i==this.local?this:i.length||r.length?new n(i,r):se}forChild(e,t){if(this==se)return this;if(t.isLeaf)return n.empty;let r,i;for(let l=0;l<this.children.length;l+=3)if(this.children[l]>=e){this.children[l]==e&&(r=this.children[l+2]);break}let s=e+1,o=s+t.content.size;for(let l=0;l<this.local.length;l++){let a=this.local[l];if(a.from<o&&a.to>s&&a.type instanceof Et){let c=Math.max(s,a.from)-s,d=Math.min(o,a.to)-s;c<d&&(i||(i=[])).push(a.copy(c,d))}}if(i){let l=new n(i.sort(Ct),Xt);return r?new Wr([l,r]):l}return r||se}eq(e){if(this==e)return!0;if(!(e instanceof n)||this.local.length!=e.local.length||this.children.length!=e.children.length)return!1;for(let t=0;t<this.local.length;t++)if(!this.local[t].eq(e.local[t]))return!1;for(let t=0;t<this.children.length;t+=3)if(this.children[t]!=e.children[t]||this.children[t+1]!=e.children[t+1]||!this.children[t+2].eq(e.children[t+2]))return!1;return!0}locals(e){return Co(this.localsInner(e))}localsInner(e){if(this==se)return Xt;if(e.inlineContent||!this.local.some(Et.is))return this.local;let t=[];for(let r=0;r<this.local.length;r++)this.local[r].type instanceof Et||t.push(this.local[r]);return t}forEachSet(e){e(this)}};_.empty=new _([],[]);_.removeOverlap=Co;var se=_.empty,Wr=class n{constructor(e){this.members=e}map(e,t){let r=this.members.map(i=>i.map(e,t,Mt));return n.from(r)}forChild(e,t){if(t.isLeaf)return _.empty;let r=[];for(let i=0;i<this.members.length;i++){let s=this.members[i].forChild(e,t);s!=se&&(s instanceof n?r=r.concat(s.members):r.push(s))}return n.from(r)}eq(e){if(!(e instanceof n)||e.members.length!=this.members.length)return!1;for(let t=0;t<this.members.length;t++)if(!this.members[t].eq(e.members[t]))return!1;return!0}locals(e){let t,r=!0;for(let i=0;i<this.members.length;i++){let s=this.members[i].localsInner(e);if(s.length)if(!t)t=s;else{r&&(t=t.slice(),r=!1);for(let o=0;o<s.length;o++)t.push(s[o])}}return t?Co(r?t:t.sort(Ct)):Xt}static from(e){switch(e.length){case 0:return se;case 1:return e[0];default:return new n(e.every(t=>t instanceof _)?e:e.reduce((t,r)=>t.concat(r instanceof _?r:r.members),[]))}}forEachSet(e){for(let t=0;t<this.members.length;t++)this.members[t].forEachSet(e)}};function gm(n,e,t,r,i,s,o){let l=n.slice();for(let c=0,d=s;c<t.maps.length;c++){let u=0;t.maps[c].forEach((f,h,p,m)=>{let g=m-p-(h-f);for(let y=0;y<l.length;y+=3){let b=l[y+1];if(b<0||f>b+d-u)continue;let w=l[y]+d-u;h>=w?l[y+1]=f<=w?-2:-1:f>=d&&g&&(l[y]+=g,l[y+1]+=g)}u+=g}),d=t.maps[c].map(d,-1)}let a=!1;for(let c=0;c<l.length;c+=3)if(l[c+1]<0){if(l[c+1]==-2){a=!0,l[c+1]=-1;continue}let d=t.map(n[c]+s),u=d-i;if(u<0||u>=r.content.size){a=!0;continue}let f=t.map(n[c+1]+s,-1),h=f-i,{index:p,offset:m}=r.content.findIndex(u),g=r.maybeChild(p);if(g&&m==u&&m+g.nodeSize==h){let y=l[c+2].mapInner(t,g,d+1,n[c]+s+1,o);y!=se?(l[c]=u,l[c+1]=h,l[c+2]=y):(l[c+1]=-2,a=!0)}else a=!0}if(a){let c=ym(l,n,e,t,i,s,o),d=Ur(c,r,0,o);e=d.local;for(let u=0;u<l.length;u+=3)l[u+1]<0&&(l.splice(u,3),u-=3);for(let u=0,f=0;u<d.children.length;u+=3){let h=d.children[u];for(;f<l.length&&l[f]<h;)f+=3;l.splice(f,0,d.children[u],d.children[u+1],d.children[u+2])}}return new _(e.sort(Ct),l)}function yd(n,e){if(!e||!n.length)return n;let t=[];for(let r=0;r<n.length;r++){let i=n[r];t.push(new fe(i.from+e,i.to+e,i.type))}return t}function ym(n,e,t,r,i,s,o){function l(a,c){for(let d=0;d<a.local.length;d++){let u=a.local[d].map(r,i,c);u?t.push(u):o.onRemove&&o.onRemove(a.local[d].spec)}for(let d=0;d<a.children.length;d+=3)l(a.children[d+2],a.children[d]+c+1)}for(let a=0;a<n.length;a+=3)n[a+1]==-1&&l(n[a+2],e[a]+s+1);return t}function bd(n,e,t){if(e.isLeaf)return null;let r=t+e.nodeSize,i=null;for(let s=0,o;s<n.length;s++)(o=n[s])&&o.from>t&&o.to<r&&((i||(i=[])).push(o),n[s]=null);return i}function xd(n){let e=[];for(let t=0;t<n.length;t++)n[t]!=null&&e.push(n[t]);return e}function Ur(n,e,t,r){let i=[],s=!1;e.forEach((l,a)=>{let c=bd(n,l,a+t);if(c){s=!0;let d=Ur(c,l,t+a+1,r);d!=se&&i.push(a,a+l.nodeSize,d)}});let o=yd(s?xd(n):n,-t).sort(Ct);for(let l=0;l<o.length;l++)o[l].type.valid(e,o[l])||(r.onRemove&&r.onRemove(o[l].spec),o.splice(l--,1));return o.length||i.length?new _(o,i):se}function Ct(n,e){return n.from-e.from||n.to-e.to}function Co(n){let e=n;for(let t=0;t<e.length-1;t++){let r=e[t];if(r.from!=r.to)for(let i=t+1;i<e.length;i++){let s=e[i];if(s.from==r.from){s.to!=r.to&&(e==n&&(e=n.slice()),e[i]=s.copy(s.from,r.to),Ic(e,i+1,s.copy(r.to,s.to)));continue}else{s.from<r.to&&(e==n&&(e=n.slice()),e[t]=r.copy(r.from,s.from),Ic(e,i,r.copy(s.from,r.to)));break}}}return e}function Ic(n,e,t){for(;e<n.length&&Ct(t,n[e])>0;)e++;n.splice(e,0,t)}function Ys(n){let e=[];return n.someProp(\"decorations\",t=>{let r=t(n.state);r&&r!=se&&e.push(r)}),n.cursorWrapper&&e.push(_.create(n.state.doc,[n.cursorWrapper.deco])),Wr.from(e)}var bm={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},xm=he&&ot<=11,bo=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}set(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset}clear(){this.anchorNode=this.focusNode=null}eq(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset}},xo=class{constructor(e,t){this.view=e,this.handleDOMChange=t,this.queue=[],this.flushingSoon=-1,this.observer=null,this.currentSelection=new bo,this.onCharData=null,this.suppressingSelectionUpdates=!1,this.lastChangedTextNode=null,this.observer=window.MutationObserver&&new window.MutationObserver(r=>{for(let i=0;i<r.length;i++)this.queue.push(r[i]);he&&ot<=11&&r.some(i=>i.type==\"childList\"&&i.removedNodes.length||i.type==\"characterData\"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():le&&e.composing&&r.some(i=>i.type==\"childList\"&&i.target.nodeName==\"TR\")?(e.input.badSafariComposition=!0,this.flushSoon()):this.flush()}),xm&&(this.onCharData=r=>{this.queue.push({target:r.target,type:\"characterData\",oldValue:r.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this)}flushSoon(){this.flushingSoon<0&&(this.flushingSoon=window.setTimeout(()=>{this.flushingSoon=-1,this.flush()},20))}forceFlush(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())}start(){this.observer&&(this.observer.takeRecords(),this.observer.observe(this.view.dom,bm)),this.onCharData&&this.view.dom.addEventListener(\"DOMCharacterDataModified\",this.onCharData),this.connectSelection()}stop(){if(this.observer){let e=this.observer.takeRecords();if(e.length){for(let t=0;t<e.length;t++)this.queue.push(e[t]);window.setTimeout(()=>this.flush(),20)}this.observer.disconnect()}this.onCharData&&this.view.dom.removeEventListener(\"DOMCharacterDataModified\",this.onCharData),this.disconnectSelection()}connectSelection(){this.view.dom.ownerDocument.addEventListener(\"selectionchange\",this.onSelectionChange)}disconnectSelection(){this.view.dom.ownerDocument.removeEventListener(\"selectionchange\",this.onSelectionChange)}suppressSelectionUpdates(){this.suppressingSelectionUpdates=!0,setTimeout(()=>this.suppressingSelectionUpdates=!1,50)}onSelectionChange(){if(Ec(this.view)){if(this.suppressingSelectionUpdates)return Je(this.view);if(he&&ot<=11&&!this.view.state.selection.empty){let e=this.view.domSelectionRange();if(e.focusNode&&At(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset))return this.flushSoon()}this.flush()}}setCurSelection(){this.currentSelection.set(this.view.domSelectionRange())}ignoreSelectionChange(e){if(!e.focusNode)return!0;let t=new Set,r;for(let s=e.focusNode;s;s=Gt(s))t.add(s);for(let s=e.anchorNode;s;s=Gt(s))if(t.has(s)){r=s;break}let i=r&&this.view.docView.nearestDesc(r);if(i&&i.ignoreMutation({type:\"selection\",target:G(r)?r.parentNode:r}))return this.setCurSelection(),!0}pendingRecords(){if(this.observer)for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}flush(){let{view:e}=this;if(!e.docView||this.flushingSoon>-1)return;let t=this.pendingRecords();t.length&&(this.queue=[]);let r=e.domSelectionRange(),i=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(r)&&Ec(e)&&!this.ignoreSelectionChange(r),s=-1,o=-1,l=!1,a=[];if(e.editable)for(let d=0;d<t.length;d++){let u=this.registerMutation(t[d],a);u&&(s=s<0?u.from:Math.min(u.from,s),o=o<0?u.to:Math.max(u.to,o),u.typeOver&&(l=!0))}if(a.some(d=>d.nodeName==\"BR\")&&(e.input.lastKeyCode==8||e.input.lastKeyCode==46||te&&(e.composing||e.input.compositionEndedAt>Date.now()-50)&&t.some(d=>d.type==\"childList\"&&d.removedNodes.length))){for(let d of a)if(d.nodeName==\"BR\"&&d.parentNode){let u=d.nextSibling;for(;u&&C(u);){if(u.contentEditable==\"false\"){d.parentNode.removeChild(d);break}u=u.firstChild}}}else if(ge&&a.length){let d=a.filter(u=>u.nodeName==\"BR\");if(d.length==2){let[u,f]=d;u.parentNode&&u.parentNode.parentNode==f.parentNode?f.remove():u.remove()}else{let{focusNode:u}=this.currentSelection;for(let f of d){let h=f.parentNode;h&&h.nodeName==\"LI\"&&(!u||wm(e,u)!=h)&&f.remove()}}}let c=null;s<0&&i&&e.input.lastFocus>Date.now()-200&&Math.max(e.input.lastTouch,e.input.lastClick.time)<Date.now()-300&&Kr(r)&&(c=So(e))&&c.eq(R.near(e.state.doc.resolve(0),1))?(e.input.lastFocus=0,Je(e),this.currentSelection.set(r),e.scrollToSelection()):(s>-1||i)&&(s>-1&&(e.docView.markDirty(s,o),km(e)),e.input.badSafariComposition&&(e.input.badSafariComposition=!1,vm(e,a)),this.handleDOMChange(s,o,l,a),e.docView&&e.docView.dirty?e.updateState(e.state):this.currentSelection.eq(r)||Je(e),this.currentSelection.set(r))}registerMutation(e,t){if(t.indexOf(e.target)>-1)return null;let r=this.view.docView.nearestDesc(e.target);if(e.type==\"attributes\"&&(r==this.view.docView||e.attributeName==\"contenteditable\"||e.attributeName==\"style\"&&!e.oldValue&&!e.target.getAttribute(\"style\"))||!r||r.ignoreMutation(e))return null;if(e.type==\"childList\"){for(let d=0;d<e.addedNodes.length;d++){let u=e.addedNodes[d];t.push(u),G(u)&&(this.lastChangedTextNode=u)}if(r.contentDOM&&r.contentDOM!=r.dom&&!r.contentDOM.contains(e.target))return{from:r.posBefore,to:r.posAfter};let i=e.previousSibling,s=e.nextSibling;if(he&&ot<=11&&e.addedNodes.length)for(let d=0;d<e.addedNodes.length;d++){let{previousSibling:u,nextSibling:f}=e.addedNodes[d];(!u||Array.prototype.indexOf.call(e.addedNodes,u)<0)&&(i=u),(!f||Array.prototype.indexOf.call(e.addedNodes,f)<0)&&(s=f)}let o=i&&i.parentNode==e.target?ee(i)+1:0,l=r.localPosFromDOM(e.target,o,-1),a=s&&s.parentNode==e.target?ee(s):e.target.childNodes.length,c=r.localPosFromDOM(e.target,a,1);return{from:l,to:c}}else return e.type==\"attributes\"?{from:r.posAtStart-r.border,to:r.posAtEnd+r.border}:(this.lastChangedTextNode=e.target,{from:r.posAtStart,to:r.posAtEnd,typeOver:e.target.nodeValue==e.oldValue})}},Dc=new WeakMap,Lc=!1;function km(n){if(!Dc.has(n)&&(Dc.set(n,null),[\"normal\",\"nowrap\",\"pre-line\"].indexOf(getComputedStyle(n.dom).whiteSpace)!==-1)){if(n.requiresGeckoHackNode=ge,Lc)return;console.warn(\"ProseMirror expects the CSS white-space property to be set, preferably to \\'pre-wrap\\'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\"),Lc=!0}}function Pc(n,e){let t=e.startContainer,r=e.startOffset,i=e.endContainer,s=e.endOffset,o=n.domAtPos(n.state.selection.anchor);return At(o.node,o.offset,i,s)&&([t,r,i,s]=[i,s,t,r]),{anchorNode:t,anchorOffset:r,focusNode:i,focusOffset:s}}function Sm(n,e){if(e.getComposedRanges){let i=e.getComposedRanges(n.root)[0];if(i)return Pc(n,i)}let t;function r(i){i.preventDefault(),i.stopImmediatePropagation(),t=i.getTargetRanges()[0]}return n.dom.addEventListener(\"beforeinput\",r,!0),document.execCommand(\"indent\"),n.dom.removeEventListener(\"beforeinput\",r,!0),t?Pc(n,t):null}function wm(n,e){for(let t=e.parentNode;t&&t!=n.dom;t=t.parentNode){let r=n.docView.nearestDesc(t,!0);if(r&&r.node.isBlock)return t}return null}function vm(n,e){var t;let{focusNode:r,focusOffset:i}=n.domSelectionRange();for(let s of e)if(((t=s.parentNode)===null||t===void 0?void 0:t.nodeName)==\"TR\"){let o=s.nextSibling;for(;o&&o.nodeName!=\"TD\"&&o.nodeName!=\"TH\";)o=o.nextSibling;if(o){let l=o;for(;;){let a=l.firstChild;if(!a||!C(a)||a.contentEditable==\"false\"||/^(BR|IMG)$/.test(a.nodeName))break;l=a}l.insertBefore(s,l.firstChild),r==s&&n.domSelection().collapse(s,i)}else s.parentNode.removeChild(s)}}function Tm(n,e,t,r){let{node:i,fromOffset:s,toOffset:o,from:l,to:a}=n.docView.parseRange(e,t),c=n.domSelectionRange(),d,u=c.anchorNode;if(u&&Rt(n.dom,u)&&(d=[{node:u,offset:c.anchorOffset}],Kr(c)||d.push({node:c.focusNode,offset:c.focusOffset})),te&&n.input.lastKeyCode===8)for(let y=o;y>s;y--){let b=i.childNodes[y-1],w=b.pmViewDesc;if(b.nodeName==\"BR\"&&!w){o=y;break}if(!w||w.size)break}let f=n.state.doc,h=n.someProp(\"domParser\")||xe.fromSchema(n.state.schema),p=f.resolve(l),m=null,g=h.parse(i,{topNode:p.parent,topMatch:p.parent.contentMatchAt(p.index()),topOpen:!0,from:s,to:o,preserveWhitespace:p.parent.type.whitespace==\"pre\"?\"full\":!0,findPositions:d,ruleFromNode:Em(r),context:p});if(d&&d[0].pos!=null){let y=d[0].pos,b=d[1]&&d[1].pos;b==null&&(b=y),m={anchor:y+l,head:b+l}}return{doc:g,sel:m,from:l,to:a}}var Em=n=>e=>{let t=e.pmViewDesc;if(t)return t.parseRule(n);if(e.nodeName==\"BR\"&&e.parentNode){if(le&&/^(ul|ol)$/i.test(e.parentNode.nodeName)){let r=document.createElement(\"div\");return r.appendChild(document.createElement(\"li\")),{skip:r}}else if(e.parentNode.lastChild==e||le&&/^(tr|table)$/i.test(e.parentNode.nodeName))return{ignore:!0}}else if(e.nodeName==\"IMG\"&&e.getAttribute(\"mark-placeholder\"))return{ignore:!0};return null},Mm=/^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;function Cm(n,e,t,r,i){let s=n.input.compositionPendingChanges||(n.composing?n.input.compositionID:0);if(n.input.compositionPendingChanges=0,e<0){let A=n.input.lastSelectionTime>Date.now()-50?n.input.lastSelectionOrigin:null,z=So(n,A);if(z&&!n.state.selection.eq(z)){if(te&&Ke&&n.input.lastKeyCode===13&&Date.now()-100<n.input.lastKeyCodeTime&&n.someProp(\"handleKeyDown\",Q=>Q(n,St(13,\"Enter\"))))return;let F=n.state.tr.setSelection(z);A==\"pointer\"?F.setMeta(\"pointer\",!0):A==\"key\"&&F.scrollIntoView(),s&&F.setMeta(\"composition\",s),n.dispatch(F)}return}let o=n.state.doc.resolve(e),l=o.sharedDepth(t);e=o.before(l+1),t=n.state.doc.resolve(t).after(l+1);let a=n.state.selection,c=Tm(n,e,t,i),d=n.state.doc,u=d.slice(c.from,c.to),f,h;n.input.lastKeyCode===8&&Date.now()-100<n.input.lastKeyCodeTime?(f=n.state.selection.to,h=\"end\"):(f=n.state.selection.from,h=\"start\"),n.input.lastKeyCode=null;let p=Om(u.content,c.doc.content,c.from,f,h);if(p&&n.input.domChangeCount++,(Yt&&n.input.lastIOSEnter>Date.now()-225||Ke)&&i.some(A=>C(A)&&!Mm.test(A.nodeName))&&(!p||p.endA>=p.endB)&&n.someProp(\"handleKeyDown\",A=>A(n,St(13,\"Enter\")))){n.input.lastIOSEnter=0;return}if(!p)if(r&&a instanceof T&&!a.empty&&a.$head.sameParent(a.$anchor)&&!n.composing&&!(c.sel&&c.sel.anchor!=c.sel.head))p={start:a.from,endA:a.to,endB:a.to};else{if(c.sel){let A=Bc(n,n.state.doc,c.sel);if(A&&!A.eq(n.state.selection)){let z=n.state.tr.setSelection(A);s&&z.setMeta(\"composition\",s),n.dispatch(z)}}return}n.state.selection.from<n.state.selection.to&&p.start==p.endB&&n.state.selection instanceof T&&(p.start>n.state.selection.from&&p.start<=n.state.selection.from+2&&n.state.selection.from>=c.from?p.start=n.state.selection.from:p.endA<n.state.selection.to&&p.endA>=n.state.selection.to-2&&n.state.selection.to<=c.to&&(p.endB+=n.state.selection.to-p.endA,p.endA=n.state.selection.to)),he&&ot<=11&&p.endB==p.start+1&&p.endA==p.start&&p.start>c.from&&c.doc.textBetween(p.start-c.from-1,p.start-c.from+1)==\" \\\\xA0\"&&(p.start--,p.endA--,p.endB--);let m=c.doc.resolveNoCache(p.start-c.from),g=c.doc.resolveNoCache(p.endB-c.from),y=d.resolve(p.start),b=m.sameParent(g)&&m.parent.inlineContent&&y.end()>=p.endA;if((Yt&&n.input.lastIOSEnter>Date.now()-225&&(!b||i.some(A=>A.nodeName==\"DIV\"||A.nodeName==\"P\"))||!b&&Nm(c.doc,m.pos,g.pos))&&n.someProp(\"handleKeyDown\",A=>A(n,St(13,\"Enter\")))){n.input.lastIOSEnter=0;return}if(n.state.selection.anchor>p.start&&Rm(d,p.start,p.endA,m,g)&&n.someProp(\"handleKeyDown\",A=>A(n,St(8,\"Backspace\")))){Ke&&te&&n.domObserver.suppressSelectionUpdates();return}te&&p.endB==p.start&&(n.input.lastChromeDelete=Date.now()),Ke&&!b&&m.start()!=g.start()&&g.parentOffset==0&&m.depth==g.depth&&c.sel&&c.sel.anchor==c.sel.head&&c.sel.head==p.endA&&(p.endB-=2,g=c.doc.resolveNoCache(p.endB-c.from),setTimeout(()=>{n.someProp(\"handleKeyDown\",function(A){return A(n,St(13,\"Enter\"))})},20));let w=p.start,k=p.endA,N=A=>{let z=A||n.state.tr.replace(w,k,c.doc.slice(p.start-c.from,p.endB-c.from));if(c.sel){let F=Bc(n,z.doc,c.sel);F&&!(te&&n.composing&&F.empty&&(p.start!=p.endB||n.input.lastChromeDelete<Date.now()-100)&&(F.head==w||F.head==z.mapping.map(k)-1)||he&&F.empty&&F.head==w)&&z.setSelection(F)}return s&&z.setMeta(\"composition\",s),z.scrollIntoView()},$;if(b)if(m.pos==g.pos){he&&ot<=11&&m.parentOffset==0&&(n.domObserver.suppressSelectionUpdates(),setTimeout(()=>Je(n),20));let A=N(n.state.tr.delete(w,k)),z=d.resolve(p.start).marksAcross(d.resolve(p.endA));z&&A.ensureMarks(z),n.dispatch(A)}else if(p.endA==p.endB&&($=Am(m.parent.content.cut(m.parentOffset,g.parentOffset),y.parent.content.cut(y.parentOffset,p.endA-y.start())))){let A=N(n.state.tr);$.type==\"add\"?A.addMark(w,k,$.mark):A.removeMark(w,k,$.mark),n.dispatch(A)}else if(m.parent.child(m.index()).isText&&m.index()==g.index()-(g.textOffset?0:1)){let A=m.parent.textBetween(m.parentOffset,g.parentOffset),z=()=>N(n.state.tr.insertText(A,w,k));n.someProp(\"handleTextInput\",F=>F(n,w,k,A,z))||n.dispatch(z())}else n.dispatch(N());else n.dispatch(N())}function Bc(n,e,t){return Math.max(t.anchor,t.head)>e.content.size?null:wo(n,e.resolve(t.anchor),e.resolve(t.head))}function Am(n,e){let t=n.firstChild.marks,r=e.firstChild.marks,i=t,s=r,o,l,a;for(let d=0;d<r.length;d++)i=r[d].removeFromSet(i);for(let d=0;d<t.length;d++)s=t[d].removeFromSet(s);if(i.length==1&&s.length==0)l=i[0],o=\"add\",a=d=>d.mark(l.addToSet(d.marks));else if(i.length==0&&s.length==1)l=s[0],o=\"remove\",a=d=>d.mark(l.removeFromSet(d.marks));else return null;let c=[];for(let d=0;d<e.childCount;d++)c.push(a(e.child(d)));if(x.from(c).eq(n))return{mark:l,type:o}}function Rm(n,e,t,r,i){if(t-e<=i.pos-r.pos||Qs(r,!0,!1)<i.pos)return!1;let s=n.resolve(e);if(!r.parent.isTextblock){let l=s.nodeAfter;return l!=null&&t==e+l.nodeSize}if(s.parentOffset<s.parent.content.size||!s.parent.isTextblock)return!1;let o=n.resolve(Qs(s,!0,!0));return!o.parent.isTextblock||o.pos>t||Qs(o,!0,!1)<t?!1:r.parent.content.cut(r.parentOffset).eq(o.parent.content)}function Nm(n,e,t){let r=0,i=0;return n.nodesBetween(e,t,(s,o)=>{s.isTextblock&&o>=e&&o<t?r++:(s.isText?/\\\\S/.test(s.text.slice(Math.max(0,e-o),Math.min(s.nodeSize,t-o))):s.isLeaf)&&i++}),i==0&&r==1}function Qs(n,e,t){let r=n.depth,i=e?n.end():n.pos;for(;r>0&&(e||n.indexAfter(r)==n.node(r).childCount);)r--,i++,e=!1;if(t){let s=n.node(r).maybeChild(n.indexAfter(r));for(;s&&!s.isLeaf;)s=s.firstChild,i++}return i}function Om(n,e,t,r,i){let s=n.findDiffStart(e,t),o=t+n.size,l=t+e.size;if(s==null)return null;let{a,b:c}=n.findDiffEnd(e,o,l);if(i==\"end\"){let d=Math.max(0,s-Math.min(a,c));r-=a+d-s}if(a<s&&o<l){let d=r<=s&&r>=a?s-r:0;s-=d,c=s+(c-a),a=s}else if(c<s){let d=r<=s&&r>=c?s-r:0;s-=d,a=s+(a-c),c=s}return{start:s,endA:a,endB:c}}var Bn=class{constructor(e,t){this._root=null,this.focused=!1,this.trackWrites=null,this.mounted=!1,this.markCursor=null,this.cursorWrapper=null,this.lastSelectedViewDesc=void 0,this.input=new ho,this.prevDirectPlugins=[],this.pluginViews=[],this.requiresGeckoHackNode=!1,this.dragging=null,this._props=t,this.state=t.state,this.directPlugins=t.plugins||[],this.directPlugins.forEach(_c),this.dispatch=this.dispatch.bind(this),this.dom=e&&e.mount||document.createElement(\"div\"),e&&(e.appendChild?e.appendChild(this.dom):typeof e==\"function\"?e(this.dom):e.mount&&(this.mounted=!0)),this.editable=$c(this),Hc(this),this.nodeViews=Fc(this),this.docView=xc(this.state.doc,zc(this),Ys(this),this.dom,this),this.domObserver=new xo(this,(r,i,s,o)=>Cm(this,r,i,s,o)),this.domObserver.start(),Yp(this),this.updatePluginViews()}get composing(){return this.input.composing}get props(){if(this._props.state!=this.state){let e=this._props;this._props={};for(let t in e)this._props[t]=e[t];this._props.state=this.state}return this._props}update(e){e.handleDOMEvents!=this._props.handleDOMEvents&&po(this);let t=this._props;this._props=e,e.plugins&&(e.plugins.forEach(_c),this.directPlugins=e.plugins),this.updateStateInner(e.state,t)}setProps(e){let t={};for(let r in this._props)t[r]=this._props[r];t.state=this.state;for(let r in e)t[r]=e[r];this.update(t)}updateState(e){this.updateStateInner(e,this._props)}updateStateInner(e,t){var r;let i=this.state,s=!1,o=!1;e.storedMarks&&this.composing&&(pd(this),o=!0),this.state=e;let l=i.plugins!=e.plugins||this._props.plugins!=t.plugins;if(l||this._props.plugins!=t.plugins||this._props.nodeViews!=t.nodeViews){let h=Fc(this);Dm(h,this.nodeViews)&&(this.nodeViews=h,s=!0)}(l||t.handleDOMEvents!=this._props.handleDOMEvents)&&po(this),this.editable=$c(this),Hc(this);let a=Ys(this),c=zc(this),d=i.plugins!=e.plugins&&!i.doc.eq(e.doc)?\"reset\":e.scrollToSelection>i.scrollToSelection?\"to selection\":\"preserve\",u=s||!this.docView.matchesNode(e.doc,c,a);(u||!e.selection.eq(i.selection))&&(o=!0);let f=d==\"preserve\"&&o&&this.dom.style.overflowAnchor==null&&mp(this);if(o){this.domObserver.stop();let h=u&&(he||te)&&!this.composing&&!i.selection.empty&&!e.selection.empty&&Im(i.selection,e.selection);if(u){let m=te?this.trackWrites=this.domSelectionRange().focusNode:null;this.composing&&(this.input.compositionNode=dm(this)),(s||!this.docView.update(e.doc,c,a,this))&&(this.docView.updateOuterDeco(c),this.docView.destroy(),this.docView=xc(e.doc,c,a,this.dom,this)),m&&(!this.trackWrites||!this.dom.contains(this.trackWrites))&&(h=!0)}let p=this.input.mouseDown;h||!(p&&this.domObserver.currentSelection.eq(this.domSelectionRange())&&Bp(this)&&p.delaySelUpdate())?Je(this,h):(td(this,e.selection),this.domObserver.setCurSelection()),this.domObserver.start()}this.updatePluginViews(i),!((r=this.dragging)===null||r===void 0)&&r.node&&!i.doc.eq(e.doc)&&this.updateDraggedNode(this.dragging,i),d==\"reset\"?this.dom.scrollTop=0:d==\"to selection\"?this.scrollToSelection():f&&gp(f)}scrollToSelection(){let e=this.domSelectionRange().focusNode;if(!(!e||!Rt(this.dom,e))){if(!this.someProp(\"handleScrollToSelection\",t=>t(this)))if(this.state.selection instanceof M){let t=this.docView.domAfterPos(this.state.selection.from);C(t)&&pc(this,t.getBoundingClientRect(),e)}else pc(this,this.coordsAtPos(this.state.selection.head,1),e)}}destroyPluginViews(){let e;for(;e=this.pluginViews.pop();)e.destroy&&e.destroy()}updatePluginViews(e){if(!e||e.plugins!=this.state.plugins||this.directPlugins!=this.prevDirectPlugins){this.prevDirectPlugins=this.directPlugins,this.destroyPluginViews();for(let t=0;t<this.directPlugins.length;t++){let r=this.directPlugins[t];r.spec.view&&this.pluginViews.push(r.spec.view(this))}for(let t=0;t<this.state.plugins.length;t++){let r=this.state.plugins[t];r.spec.view&&this.pluginViews.push(r.spec.view(this))}}else for(let t=0;t<this.pluginViews.length;t++){let r=this.pluginViews[t];r.update&&r.update(this,e)}}updateDraggedNode(e,t){let r=e.node,i=-1;if(r.from<this.state.doc.content.size&&this.state.doc.nodeAt(r.from)==r.node)i=r.from;else{let s=r.from+(this.state.doc.content.size-t.doc.content.size);(s>0&&s<this.state.doc.content.size&&this.state.doc.nodeAt(s))==r.node&&(i=s)}this.dragging=new Vr(e.slice,e.move,i<0?void 0:M.create(this.state.doc,i))}someProp(e,t){let r=this._props&&this._props[e],i;if(r!=null&&(i=t?t(r):r))return i;for(let o=0;o<this.directPlugins.length;o++){let l=this.directPlugins[o].props[e];if(l!=null&&(i=t?t(l):l))return i}let s=this.state.plugins;if(s)for(let o=0;o<s.length;o++){let l=s[o].props[e];if(l!=null&&(i=t?t(l):l))return i}}hasFocus(){if(he){let e=this.root.activeElement;if(e==this.dom)return!0;if(!e||!this.dom.contains(e))return!1;for(;e&&this.dom!=e&&this.dom.contains(e);){if(e.contentEditable==\"false\")return!1;e=e.parentElement}return!0}return this.root.activeElement==this.dom}focus(){this.domObserver.stop(),this.editable&&yp(this.dom),Je(this),this.domObserver.start()}get root(){let e=this._root;if(e==null){for(let t=this.dom.parentNode;t;t=t.parentNode)if(t.nodeType==9||t.nodeType==11&&t.host)return t.getSelection||(Object.getPrototypeOf(t).getSelection=()=>t.ownerDocument.getSelection()),this._root=t}return e||document}updateRoot(){this._root=null}posAtCoords(e){return wp(this,e)}coordsAtPos(e,t=1){return Xc(this,e,t)}domAtPos(e,t=0){return this.docView.domFromPos(e,t)}nodeDOM(e){let t=this.docView.descAt(e);return t?t.nodeDOM:null}posAtDOM(e,t,r=-1){let i=this.docView.posFromDOM(e,t,r);if(i==null)throw new RangeError(\"DOM position not inside the editor\");return i}endOfTextblock(e,t){return Cp(this,t||this.state,e)}pasteHTML(e,t){return Ln(this,\"\",e,!1,t||new ClipboardEvent(\"paste\"))}pasteText(e,t){return Ln(this,e,null,!0,t||new ClipboardEvent(\"paste\"))}serializeForClipboard(e){return vo(this,e)}destroy(){this.docView&&(Qp(this),this.destroyPluginViews(),this.mounted?(this.docView.update(this.state.doc,[],Ys(this),this),this.dom.textContent=\"\"):this.dom.parentNode&&this.dom.parentNode.removeChild(this.dom),this.docView.destroy(),this.docView=null,sp())}get isDestroyed(){return this.docView==null}dispatchEvent(e){return em(this,e)}domSelectionRange(){let e=this.dom.isConnected!==!1&&this.domSelection();return e?le&&this.root.nodeType===11&&dp(this.dom.ownerDocument)==this.dom&&Sm(this,e)||e:{focusNode:null,focusOffset:0,anchorNode:null,anchorOffset:0}}domSelection(){return this.root.getSelection()}};Bn.prototype.dispatch=function(n){let e=this._props.dispatchTransaction;e?e.call(this,n):this.updateState(this.state.apply(n))};function zc(n){let e=Object.create(null);return e.class=\"ProseMirror\",e.contenteditable=String(n.editable),n.someProp(\"attributes\",t=>{if(typeof t==\"function\"&&(t=t(n.state)),t)for(let r in t)r==\"class\"?e.class+=\" \"+t[r]:r==\"style\"?e.style=(e.style?e.style+\";\":\"\")+t[r]:!e[r]&&r!=\"contenteditable\"&&r!=\"nodeName\"&&(e[r]=String(t[r]))}),e.translate||(e.translate=\"no\"),[fe.node(0,n.state.doc.content.size,e)]}function Hc(n){if(n.markCursor){let e=document.createElement(\"img\");e.className=\"ProseMirror-separator\",e.setAttribute(\"mark-placeholder\",\"true\"),e.setAttribute(\"alt\",\"\"),n.cursorWrapper={dom:e,deco:fe.widget(n.state.selection.from,e,{raw:!0,marks:n.markCursor})}}else n.cursorWrapper=null}function $c(n){return!n.someProp(\"editable\",e=>e(n.state)===!1)}function Im(n,e){let t=Math.min(n.$anchor.sharedDepth(n.head),e.$anchor.sharedDepth(e.head));return n.$anchor.start(t)!=e.$anchor.start(t)}function Fc(n){let e=Object.create(null);function t(r){for(let i in r)Object.prototype.hasOwnProperty.call(e,i)||(e[i]=r[i])}return n.someProp(\"nodeViews\",t),n.someProp(\"markViews\",t),e}function Dm(n,e){let t=0,r=0;for(let i in n){if(n[i]!=e[i])return!0;t++}for(let i in e)r++;return t!=r}function _c(n){if(n.spec.state||n.spec.filterTransaction||n.spec.appendTransaction)throw new RangeError(\"Plugins passed directly to the view must not have a state component\")}var Xe={8:\"Backspace\",9:\"Tab\",10:\"Enter\",12:\"NumLock\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",44:\"PrintScreen\",45:\"Insert\",46:\"Delete\",59:\";\",61:\"=\",91:\"Meta\",92:\"Meta\",106:\"*\",107:\"+\",108:\",\",109:\"-\",110:\".\",111:\"/\",144:\"NumLock\",145:\"ScrollLock\",160:\"Shift\",161:\"Shift\",162:\"Control\",163:\"Control\",164:\"Alt\",165:\"Alt\",173:\"-\",186:\";\",187:\"=\",188:\",\",189:\"-\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\\\\\",221:\"]\",222:\"\\'\"},Xr={48:\")\",49:\"!\",50:\"@\",51:\"#\",52:\"$\",53:\"%\",54:\"^\",55:\"&\",56:\"*\",57:\"(\",59:\":\",61:\"+\",173:\"_\",186:\":\",187:\"+\",188:\"<\",189:\"_\",190:\">\",191:\"?\",192:\"~\",219:\"{\",220:\"|\",221:\"}\",222:\\'\"\\'},Lm=typeof navigator<\"u\"&&/Mac/.test(navigator.platform),Pm=typeof navigator<\"u\"&&/MSIE \\\\d|Trident\\\\/(?:[7-9]|\\\\d{2,})\\\\..*rv:(\\\\d+)/.exec(navigator.userAgent);for(J=0;J<10;J++)Xe[48+J]=Xe[96+J]=String(J);var J;for(J=1;J<=24;J++)Xe[J+111]=\"F\"+J;var J;for(J=65;J<=90;J++)Xe[J]=String.fromCharCode(J+32),Xr[J]=String.fromCharCode(J);var J;for(Jr in Xe)Xr.hasOwnProperty(Jr)||(Xr[Jr]=Xe[Jr]);var Jr;function kd(n){var e=Lm&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||Pm&&n.shiftKey&&n.key&&n.key.length==1||n.key==\"Unidentified\",t=!e&&n.key||(n.shiftKey?Xr:Xe)[n.keyCode]||n.key||\"Unidentified\";return t==\"Esc\"&&(t=\"Escape\"),t==\"Del\"&&(t=\"Delete\"),t==\"Left\"&&(t=\"ArrowLeft\"),t==\"Up\"&&(t=\"ArrowUp\"),t==\"Right\"&&(t=\"ArrowRight\"),t==\"Down\"&&(t=\"ArrowDown\"),t}var Bm=typeof navigator<\"u\"&&/Mac|iP(hone|[oa]d)/.test(navigator.platform),zm=typeof navigator<\"u\"&&/Win/.test(navigator.platform);function Hm(n){let e=n.split(/-(?!$)/),t=e[e.length-1];t==\"Space\"&&(t=\" \");let r,i,s,o;for(let l=0;l<e.length-1;l++){let a=e[l];if(/^(cmd|meta|m)$/i.test(a))o=!0;else if(/^a(lt)?$/i.test(a))r=!0;else if(/^(c|ctrl|control)$/i.test(a))i=!0;else if(/^s(hift)?$/i.test(a))s=!0;else if(/^mod$/i.test(a))Bm?o=!0:i=!0;else throw new Error(\"Unrecognized modifier name: \"+a)}return r&&(t=\"Alt-\"+t),i&&(t=\"Ctrl-\"+t),o&&(t=\"Meta-\"+t),s&&(t=\"Shift-\"+t),t}function $m(n){let e=Object.create(null);for(let t in n)e[Hm(t)]=n[t];return e}function Ao(n,e,t=!0){return e.altKey&&(n=\"Alt-\"+n),e.ctrlKey&&(n=\"Ctrl-\"+n),e.metaKey&&(n=\"Meta-\"+n),t&&e.shiftKey&&(n=\"Shift-\"+n),n}function Sd(n){return new O({props:{handleKeyDown:Ro(n)}})}function Ro(n){let e=$m(n);return function(t,r){let i=kd(r),s,o=e[Ao(i,r)];if(o&&o(t.state,t.dispatch,t))return!0;if(i.length==1&&i!=\" \"){if(r.shiftKey){let l=e[Ao(i,r,!1)];if(l&&l(t.state,t.dispatch,t))return!0}if((r.altKey||r.metaKey||r.ctrlKey)&&!(zm&&r.ctrlKey&&r.altKey)&&(s=Xe[r.keyCode])&&s!=i){let l=e[Ao(s,r)];if(l&&l(t.state,t.dispatch,t))return!0}}return!1}}var Gr=200,ne=function(){};ne.prototype.append=function(e){return e.length?(e=ne.from(e),!this.length&&e||e.length<Gr&&this.leafAppend(e)||this.length<Gr&&e.leafPrepend(this)||this.appendInner(e)):this};ne.prototype.prepend=function(e){return e.length?ne.from(e).append(this):this};ne.prototype.appendInner=function(e){return new Fm(this,e)};ne.prototype.slice=function(e,t){return e===void 0&&(e=0),t===void 0&&(t=this.length),e>=t?ne.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,t))};ne.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)};ne.prototype.forEach=function(e,t,r){t===void 0&&(t=0),r===void 0&&(r=this.length),t<=r?this.forEachInner(e,t,r,0):this.forEachInvertedInner(e,t,r,0)};ne.prototype.map=function(e,t,r){t===void 0&&(t=0),r===void 0&&(r=this.length);var i=[];return this.forEach(function(s,o){return i.push(e(s,o))},t,r),i};ne.from=function(e){return e instanceof ne?e:e&&e.length?new wd(e):ne.empty};var wd=(function(n){function e(r){n.call(this),this.values=r}n&&(e.__proto__=n),e.prototype=Object.create(n&&n.prototype),e.prototype.constructor=e;var t={length:{configurable:!0},depth:{configurable:!0}};return e.prototype.flatten=function(){return this.values},e.prototype.sliceInner=function(i,s){return i==0&&s==this.length?this:new e(this.values.slice(i,s))},e.prototype.getInner=function(i){return this.values[i]},e.prototype.forEachInner=function(i,s,o,l){for(var a=s;a<o;a++)if(i(this.values[a],l+a)===!1)return!1},e.prototype.forEachInvertedInner=function(i,s,o,l){for(var a=s-1;a>=o;a--)if(i(this.values[a],l+a)===!1)return!1},e.prototype.leafAppend=function(i){if(this.length+i.length<=Gr)return new e(this.values.concat(i.flatten()))},e.prototype.leafPrepend=function(i){if(this.length+i.length<=Gr)return new e(i.flatten().concat(this.values))},t.length.get=function(){return this.values.length},t.depth.get=function(){return 0},Object.defineProperties(e.prototype,t),e})(ne);ne.empty=new wd([]);var Fm=(function(n){function e(t,r){n.call(this),this.left=t,this.right=r,this.length=t.length+r.length,this.depth=Math.max(t.depth,r.depth)+1}return n&&(e.__proto__=n),e.prototype=Object.create(n&&n.prototype),e.prototype.constructor=e,e.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},e.prototype.getInner=function(r){return r<this.left.length?this.left.get(r):this.right.get(r-this.left.length)},e.prototype.forEachInner=function(r,i,s,o){var l=this.left.length;if(i<l&&this.left.forEachInner(r,i,Math.min(s,l),o)===!1||s>l&&this.right.forEachInner(r,Math.max(i-l,0),Math.min(this.length,s)-l,o+l)===!1)return!1},e.prototype.forEachInvertedInner=function(r,i,s,o){var l=this.left.length;if(i>l&&this.right.forEachInvertedInner(r,i-l,Math.max(s,l)-l,o+l)===!1||s<l&&this.left.forEachInvertedInner(r,Math.min(i,l),s,o)===!1)return!1},e.prototype.sliceInner=function(r,i){if(r==0&&i==this.length)return this;var s=this.left.length;return i<=s?this.left.slice(r,i):r>=s?this.right.slice(r-s,i-s):this.left.slice(r,s).append(this.right.slice(0,i-s))},e.prototype.leafAppend=function(r){var i=this.right.leafAppend(r);if(i)return new e(this.left,i)},e.prototype.leafPrepend=function(r){var i=this.left.leafPrepend(r);if(i)return new e(i,this.right)},e.prototype.appendInner=function(r){return this.left.depth>=Math.max(this.right.depth,r.depth)+1?new e(this.left,new e(this.right,r)):new e(this,r)},e})(ne),No=ne;var _m=500,Ot=class n{constructor(e,t){this.items=e,this.eventCount=t}popEvent(e,t){if(this.eventCount==0)return null;let r=this.items.length;for(;;r--)if(this.items.get(r-1).selection){--r;break}let i,s;t&&(i=this.remapping(r,this.items.length),s=i.maps.length);let o=e.tr,l,a,c=[],d=[];return this.items.forEach((u,f)=>{if(!u.step){i||(i=this.remapping(r,f+1),s=i.maps.length),s--,d.push(u);return}if(i){d.push(new Ie(u.map));let h=u.step.map(i.slice(s)),p;h&&o.maybeStep(h).doc&&(p=o.mapping.maps[o.mapping.maps.length-1],c.push(new Ie(p,void 0,void 0,c.length+d.length))),s--,p&&i.appendMap(p,s)}else o.maybeStep(u.step);if(u.selection)return l=i?u.selection.map(i.slice(s)):u.selection,a=new n(this.items.slice(0,r).append(d.reverse().concat(c)),this.eventCount-1),!1},this.items.length,0),{remaining:a,transform:o,selection:l}}addTransform(e,t,r,i){let s=[],o=this.eventCount,l=this.items,a=!i&&l.length?l.get(l.length-1):null;for(let d=0;d<e.steps.length;d++){let u=e.steps[d].invert(e.docs[d]),f=new Ie(e.mapping.maps[d],u,t),h;(h=a&&a.merge(f))&&(f=h,d?s.pop():l=l.slice(0,l.length-1)),s.push(f),t&&(o++,t=void 0),i||(a=f)}let c=o-r.depth;return c>jm&&(l=Vm(l,c),o-=c),new n(l.append(s),o)}remapping(e,t){let r=new Tn;return this.items.forEach((i,s)=>{let o=i.mirrorOffset!=null&&s-i.mirrorOffset>=e?r.maps.length-i.mirrorOffset:void 0;r.appendMap(i.map,o)},e,t),r}addMaps(e){return this.eventCount==0?this:new n(this.items.append(e.map(t=>new Ie(t))),this.eventCount)}rebased(e,t){if(!this.eventCount)return this;t=Math.min(this.items.length,t);let r=[],i=this.items.length-t,s=e.mapping,o=e.steps.length,l=this.eventCount;this.items.forEach(f=>{f.selection&&l--},i);let a=t;this.items.forEach(f=>{let h=s.getMirror(--a);if(h==null)return;o=Math.min(o,h);let p=s.maps[h];if(f.step){let m=e.steps[h].invert(e.docs[h]),g=f.selection&&f.selection.map(s.slice(a+1,h));g&&l++,r.push(new Ie(p,m,g))}else r.push(new Ie(p))},i);let c=[];for(let f=t;f<o;f++)c.push(new Ie(s.maps[f]));let d=this.items.slice(0,i).append(c).append(r),u=new n(d,l);return u.emptyItemCount()>_m&&(u=u.compress(this.items.length-r.length)),u}emptyItemCount(){let e=0;return this.items.forEach(t=>{t.step||e++}),e}compress(e=this.items.length){let t=this.remapping(0,e),r=t.maps.length,i=[],s=0;return this.items.forEach((o,l)=>{if(l>=e)i.push(o),o.selection&&s++;else if(o.step){let a=o.step.map(t.slice(r)),c=a&&a.getMap();if(r--,c&&t.appendMap(c,r),a){let d=o.selection&&o.selection.map(t.slice(r));d&&s++;let u=new Ie(c.invert(),a,d),f,h=i.length-1;(f=i.length&&i[h].merge(u))?i[h]=f:i.push(u)}}else o.map&&r--},this.items.length,0),new n(No.from(i.reverse()),s)}};Ot.empty=new Ot(No.empty,0);function Vm(n,e){let t;return n.forEach((r,i)=>{if(r.selection&&e--==0)return t=i,!1}),n.slice(t)}var Ie=class n{constructor(e,t,r,i){this.map=e,this.step=t,this.selection=r,this.mirrorOffset=i}merge(e){if(this.step&&e.step&&!e.selection){let t=e.step.merge(this.step);if(t)return new n(t.getMap().invert(),t,this.selection)}}},De=class{constructor(e,t,r,i,s){this.done=e,this.undone=t,this.prevRanges=r,this.prevTime=i,this.prevComposition=s}},jm=20;function Wm(n,e,t,r){let i=t.getMeta(ct),s;if(i)return i.historyState;t.getMeta(Md)&&(n=new De(n.done,n.undone,null,0,-1));let o=t.getMeta(\"appendedTransaction\");if(t.steps.length==0)return n;if(o&&o.getMeta(ct))return o.getMeta(ct).redo?new De(n.done.addTransform(t,void 0,r,Yr(e)),n.undone,vd(t.mapping.maps),n.prevTime,n.prevComposition):new De(n.done,n.undone.addTransform(t,void 0,r,Yr(e)),null,n.prevTime,n.prevComposition);if(t.getMeta(\"addToHistory\")!==!1&&!(o&&o.getMeta(\"addToHistory\")===!1)){let l=t.getMeta(\"composition\"),a=n.prevTime==0||!o&&n.prevComposition!=l&&(n.prevTime<(t.time||0)-r.newGroupDelay||!Um(t,n.prevRanges)),c=o?Oo(n.prevRanges,t.mapping):vd(t.mapping.maps);return new De(n.done.addTransform(t,a?e.selection.getBookmark():void 0,r,Yr(e)),Ot.empty,c,t.time,l??n.prevComposition)}else return(s=t.getMeta(\"rebased\"))?new De(n.done.rebased(t,s),n.undone.rebased(t,s),Oo(n.prevRanges,t.mapping),n.prevTime,n.prevComposition):new De(n.done.addMaps(t.mapping.maps),n.undone.addMaps(t.mapping.maps),Oo(n.prevRanges,t.mapping),n.prevTime,n.prevComposition)}function Um(n,e){if(!e)return!1;if(!n.docChanged)return!0;let t=!1;return n.mapping.maps[0].forEach((r,i)=>{for(let s=0;s<e.length;s+=2)r<=e[s+1]&&i>=e[s]&&(t=!0)}),t}function vd(n){let e=[];for(let t=n.length-1;t>=0&&e.length==0;t--)n[t].forEach((r,i,s,o)=>e.push(s,o));return e}function Oo(n,e){if(!n)return null;let t=[];for(let r=0;r<n.length;r+=2){let i=e.map(n[r],1),s=e.map(n[r+1],-1);i<=s&&t.push(i,s)}return t}function Km(n,e,t){let r=Yr(e),i=ct.get(e).spec.config,s=(t?n.undone:n.done).popEvent(e,r);if(!s)return null;let o=s.selection.resolve(s.transform.doc),l=(t?n.done:n.undone).addTransform(s.transform,e.selection.getBookmark(),i,r),a=new De(t?l:s.remaining,t?s.remaining:l,null,0,-1);return s.transform.setSelection(o).setMeta(ct,{redo:t,historyState:a})}var Io=!1,Td=null;function Yr(n){let e=n.plugins;if(Td!=e){Io=!1,Td=e;for(let t=0;t<e.length;t++)if(e[t].spec.historyPreserveItems){Io=!0;break}}return Io}function Ed(n){return n.setMeta(Md,!0)}var ct=new H(\"history\"),Md=new H(\"closeHistory\");function Cd(n={}){return n={depth:n.depth||100,newGroupDelay:n.newGroupDelay||500},new O({key:ct,state:{init(){return new De(Ot.empty,Ot.empty,null,0,-1)},apply(e,t,r){return Wm(t,r,e,n)}},config:n,props:{handleDOMEvents:{beforeinput(e,t){let r=t.inputType,i=r==\"historyUndo\"?Do:r==\"historyRedo\"?Lo:null;return!i||!e.editable?!1:(t.preventDefault(),i(e.state,e.dispatch))}}}})}function Qr(n,e){return(t,r)=>{let i=ct.getState(t);if(!i||(n?i.undone:i.done).eventCount==0)return!1;if(r){let s=Km(i,t,n);s&&r(e?s.scrollIntoView():s)}return!0}}var Do=Qr(!1,!0),Lo=Qr(!0,!0),Jk=Qr(!1,!1),Xk=Qr(!0,!1);function Ad(n){return n.getMeta(ct)!=null}function si(n){let{state:e,transaction:t}=n,{selection:r}=t,{doc:i}=t,{storedMarks:s}=t;return{...e,apply:e.apply.bind(e),applyTransaction:e.applyTransaction.bind(e),plugins:e.plugins,schema:e.schema,reconfigure:e.reconfigure.bind(e),toJSON:e.toJSON.bind(e),get storedMarks(){return s},get selection(){return r},get doc(){return i},get tr(){return r=t.selection,i=t.doc,s=t.storedMarks,t}}}var nn=class Ud{constructor(e){this.editor=e.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=e.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){let{rawCommands:e,editor:t,state:r}=this,{view:i}=t,{tr:s}=r,o=this.buildProps(s);return Object.fromEntries(Object.entries(e).map(([l,a])=>[l,(...d)=>{let u=a(...d)(o);return!s.getMeta(\"preventDispatch\")&&!this.hasCustomState&&i.dispatch(s),u}]))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(e,t=!0){let{rawCommands:r,editor:i,state:s}=this,{view:o}=i,l=[],a=!!e,c=e||s.tr,d=()=>(!a&&t&&!c.getMeta(\"preventDispatch\")&&!this.hasCustomState&&o.dispatch(c),l.every(f=>f===!0)),u={...Object.fromEntries(Object.entries(r).map(([f,h])=>[f,(...m)=>{let g=this.buildProps(c,t),y=h(...m)(g);return l.push(y),u}])),run:d};return u}static createFakeChain(){let e=new Proxy({},{get:(t,r)=>{if(r!==\"then\")return r===\"run\"?()=>!1:()=>e}});return e}createCan(e){let{rawCommands:t,state:r}=this,i=!1,s=e||r.tr,o=this.buildProps(s,i);return{...Object.fromEntries(Object.entries(t).map(([l,a])=>[l,(...c)=>a(...c)({...o,dispatch:void 0})])),chain:()=>this.createChain(s,i)}}static createFallbackCan(){let e=Ud.createFakeChain();return new Proxy({chain:()=>e},{get:(t,r)=>{if(r!==\"then\")return r===\"chain\"?t.chain:()=>!1}})}buildProps(e,t=!0){let{rawCommands:r,editor:i,state:s}=this,{view:o}=i,l={tr:e,editor:i,view:o,state:si({state:s,transaction:e}),dispatch:t?()=>{}:void 0,chain:()=>this.createChain(e,t),can:()=>this.createCan(e),get commands(){return Object.fromEntries(Object.entries(r).map(([a,c])=>[a,(...d)=>c(...d)(l)]))}};return l}},qm=()=>({editor:n,view:e})=>(requestAnimationFrame(()=>{if(!n.isDestroyed){var t;e.dom.blur(),(t=window)===null||t===void 0||(t=t.getSelection())===null||t===void 0||t.removeAllRanges()}}),!0),Jm=(n=!0)=>({commands:e})=>e.setContent(\"\",{emitUpdate:n}),Xm=()=>({state:n,tr:e,dispatch:t})=>{let{selection:r}=e,{ranges:i}=r;return t&&i.forEach(({$from:s,$to:o})=>{n.doc.nodesBetween(s.pos,o.pos,(l,a)=>{if(l.type.isText)return;let{doc:c,mapping:d}=e,u=c.resolve(d.map(a)),f=c.resolve(d.map(a+l.nodeSize)),h=u.blockRange(f);if(!h)return;let p=je(h);if(l.type.isTextblock){let{defaultType:m}=u.parent.contentMatchAt(u.index());e.setNodeMarkup(h.start,m)}(p||p===0)&&e.lift(h,p)})}),!0},Gm=n=>e=>n(e),Ym=()=>({state:n,dispatch:e})=>js(n,e),Qm=(n,e)=>({editor:t,tr:r})=>{let{state:i}=t,s=i.doc.slice(n.from,n.to);r.deleteRange(n.from,n.to);let o=r.mapping.map(e);return r.insert(o,s.content),r.setSelection(new T(r.doc.resolve(Math.max(o-1,0)))),!0},Zm=()=>({tr:n,dispatch:e})=>{let{selection:t}=n,r=t.$anchor.node();if(r.content.size>0)return!1;let i=n.selection.$anchor;for(let s=i.depth;s>0;s-=1)if(i.node(s).type===r.type){if(e){let o=i.before(s),l=i.after(s);n.delete(o,l).scrollIntoView()}return!0}return!1};function X(n,e){if(typeof n==\"string\"){if(!e.nodes[n])throw Error(`There is no node type named \\'${n}\\'. Maybe you forgot to add the extension?`);return e.nodes[n]}return n}var eg=n=>({tr:e,state:t,dispatch:r})=>{let i=X(n,t.schema),s=e.selection.$anchor;for(let o=s.depth;o>0;o-=1)if(s.node(o).type===i){if(r){let l=s.before(o),a=s.after(o);e.delete(l,a).scrollIntoView()}return!0}return!1},tg=n=>({tr:e,dispatch:t})=>{let{from:r,to:i}=n;return t&&e.delete(r,i),!0},ng=n=>n.content?/^text(\\\\*|\\\\+)/.test(n.content):!1,Rd=(n,e,t)=>{if(!n.parent.isInline||t===\"left\"&&n.pos>n.start()||t===\"right\"&&n.pos<n.end())return n.pos;let r=e.nodes[n.parent.type.name].spec;return ng(r)?t===\"left\"?n.start()-1:n.end()+1:n.pos},rg=(n,e,t)=>({from:Rd(n,t,\"left\"),to:Rd(e,t,\"right\")}),ig=()=>({state:n,dispatch:e})=>{if(n.selection.empty)return!1;if(e){let t=n.tr,{ranges:r}=n.selection,i=t.steps.length;r.forEach(s=>{let o=t.mapping.slice(i),l=t.doc.resolve(o.map(s.$from.pos)),a=t.doc.resolve(o.map(s.$to.pos)),{from:c,to:d}=rg(l,a,n.schema);t.deleteRange(c,d)}),t.selection.empty||t.setSelection(T.near(t.doc.resolve(t.selection.from))),t.scrollIntoView(),e(t)}return!0},sg=()=>({commands:n})=>n.keyboardShortcut(\"Enter\"),og=()=>({state:n,dispatch:e})=>Vs(n,e);function Vo(n){return Object.prototype.toString.call(n)===\"[object RegExp]\"}function ri(n,e,t={strict:!0}){let r=Object.keys(e);return r.length?r.every(i=>t.strict?e[i]===n[i]:Vo(e[i])?e[i].test(n[i]):e[i]===n[i]):!0}function Kd(n,e,t={}){return n.find(r=>r.type===e&&ri(Object.fromEntries(Object.keys(t).map(i=>[i,r.attrs[i]])),t))}function Nd(n,e,t={}){return!!Kd(n,e,t)}function jo(n,e,t){if(!n||!e)return;let r=n.parent.childAfter(n.parentOffset);if((!r.node||!r.node.marks.some(a=>a.type===e))&&(r=n.parent.childBefore(n.parentOffset)),!r.node||!r.node.marks.some(a=>a.type===e))return;if(!t){let a=r.node.marks.find(c=>c.type===e);a&&(t=a.attrs)}if(!Kd([...r.node.marks],e,t))return;let i=r.index,s=n.start()+r.offset,o=i+1,l=s+r.node.nodeSize;for(;i>0&&Nd([...n.parent.child(i-1).marks],e,t);)i-=1,s-=n.parent.child(i).nodeSize;for(;o<n.parent.childCount&&Nd([...n.parent.child(o).marks],e,t);)l+=n.parent.child(o).nodeSize,o+=1;return{from:s,to:l}}function Ge(n,e){if(typeof n==\"string\"){if(!e.marks[n])throw Error(`There is no mark type named \\'${n}\\'. Maybe you forgot to add the extension?`);return e.marks[n]}return n}var lg=(n,e)=>({tr:t,state:r,dispatch:i})=>{let s=Ge(n,r.schema),{doc:o,selection:l}=t,{$from:a,from:c,to:d}=l;if(i){let u=jo(a,s,e);if(u&&u.from<=c&&u.to>=d){let f=T.create(o,u.from,u.to);t.setSelection(f)}}return!0},ag=n=>e=>{let t=typeof n==\"function\"?n(e):n;for(let r=0;r<t.length;r+=1)if(t[r](e))return!0;return!1};function qd(n){return n instanceof T}function It(n=0,e=0,t=0){return Math.min(Math.max(n,e),t)}function Ho(n,e=null){if(!e)return null;let t=R.atStart(n),r=R.atEnd(n);if(e===\"start\"||e===!0)return t;if(e===\"end\")return r;let i=t.from,s=r.to;return e===\"all\"?T.create(n,It(0,i,s),It(n.content.size,i,s)):T.create(n,It(e,i,s),It(e,i,s))}function Od(){return[\"Android\"].includes(navigator.platform)||/android/i.test(navigator.userAgent)}function ii(){return[\"iPad Simulator\",\"iPhone Simulator\",\"iPod Simulator\",\"iPad\",\"iPhone\",\"iPod\"].includes(navigator.platform)||navigator.userAgent.includes(\"Mac\")&&\"ontouchend\"in document}function cg(){return typeof navigator<\"u\"?/^((?!chrome|android).)*safari/i.test(navigator.userAgent):!1}var dg=(n=null,e={})=>({editor:t,view:r,tr:i,dispatch:s})=>{e={scrollIntoView:!0,...e};let o=()=>{(ii()||Od())&&r.dom.focus(),cg()&&!ii()&&!Od()&&r.dom.focus({preventScroll:!0}),requestAnimationFrame(()=>{t.isDestroyed||(r.focus(),e?.scrollIntoView&&t.commands.scrollIntoView())})};try{if(r.hasFocus()&&n===null||n===!1)return!0}catch{return!1}if(s&&n===null&&!qd(t.state.selection))return o(),!0;let l=Ho(i.doc,n)||t.state.selection,a=t.state.selection.eq(l);return s&&(a||i.setSelection(l),a&&i.storedMarks&&i.setStoredMarks(i.storedMarks),o()),!0},ug=(n,e)=>t=>n.every((r,i)=>e(r,{...t,index:i})),fg=(n,e)=>({tr:t,commands:r})=>r.insertContentAt({from:t.selection.from,to:t.selection.to},n,e),Jd=n=>{let e=n.childNodes;for(let t=e.length-1;t>=0;t-=1){let r=e[t];r.nodeType===3&&r.nodeValue&&/^(\\\\n\\\\s\\\\s|\\\\n)$/.test(r.nodeValue)?n.removeChild(r):r.nodeType===1&&Jd(r)}return n};function Zr(n){if(typeof window>\"u\")throw new Error(\"[tiptap error]: there is no window object available, so this function cannot be used\");let e=`<body>${n}</body>`,t=new window.DOMParser().parseFromString(e,\"text/html\").body;return Jd(t)}function Xd(n){return typeof n?.nodesBetween==\"function\"}function rn(n,e,t){if(Xd(n))return n;let r=typeof n==\"object\"&&n!==null;t={slice:!0,parseOptions:{},...t};let i=typeof n==\"string\";if(r)try{if(Array.isArray(n)&&n.length>0)return x.fromArray(n.map(o=>e.nodeFromJSON(o)));let s=e.nodeFromJSON(n);return t.errorOnInvalidContent&&s.check(),s}catch(s){if(t.errorOnInvalidContent)throw new Error(\"[tiptap error]: Invalid JSON content\",{cause:s});return console.warn(\"[tiptap warn]: Invalid content.\",\"Passed value:\",n,\"Error:\",s),rn(\"\",e,t)}if(i){if(t.errorOnInvalidContent){let o=!1,l=\"\",a=new xn({topNode:e.spec.topNode,marks:e.spec.marks,nodes:e.spec.nodes.append({__tiptap__private__unknown__catch__all__node:{content:\"inline*\",group:\"block\",parseDOM:[{tag:\"*\",getAttrs:c=>(o=!0,l=typeof c==\"string\"?c:c.outerHTML,null)}]}})});if(t.slice?xe.fromSchema(a).parseSlice(Zr(n),t.parseOptions):xe.fromSchema(a).parse(Zr(n),t.parseOptions),t.errorOnInvalidContent&&o)throw new Error(\"[tiptap error]: Invalid HTML content\",{cause:new Error(`Invalid element found: ${l}`)})}let s=xe.fromSchema(e);return t.slice?s.parseSlice(Zr(n),t.parseOptions).content:s.parse(Zr(n),t.parseOptions)}return rn(\"\",e,t)}function Gd(n){return!(\"type\"in n)}function Yd(n,e,t){let r=n.steps.length-1;if(r<e)return;let i=n.steps[r];if(!(i instanceof K||i instanceof q))return;let s=n.mapping.maps[r],o=0;s.forEach((l,a,c,d)=>{o===0&&(o=d)}),n.setSelection(R.near(n.doc.resolve(o),t))}var hg=(n,e,t)=>({tr:r,dispatch:i,editor:s})=>{if(i){t={parseOptions:s.options.parseOptions,updateSelection:!0,applyInputRules:!1,applyPasteRules:!1,...t};let l,a=g=>{s.emit(\"contentError\",{editor:s,error:g,disableCollaboration:()=>{\"collaboration\"in s.storage&&typeof s.storage.collaboration==\"object\"&&s.storage.collaboration&&(s.storage.collaboration.isDisabled=!0)}})},c={preserveWhitespace:\"full\",...t.parseOptions};if(!t.errorOnInvalidContent&&!s.options.enableContentCheck&&s.options.emitContentError)try{rn(e,s.schema,{parseOptions:c,errorOnInvalidContent:!0})}catch(g){a(g)}try{var o;l=rn(e,s.schema,{parseOptions:c,errorOnInvalidContent:(o=t.errorOnInvalidContent)!==null&&o!==void 0?o:s.options.enableContentCheck})}catch(g){return a(g),!1}let{from:d,to:u}=typeof n==\"number\"?{from:n,to:n}:{from:n.from,to:n.to},f=!0,h=!0,p=Gd(l)?l.content:[l];if(p.forEach(g=>{g.check(),f=f?g.isText&&g.marks.length===0:!1,h=h?g.isBlock:!1}),d===u&&h){let{parent:g}=r.doc.resolve(d);g.isTextblock&&!g.type.spec.code&&!g.childCount&&(d-=1,u+=1)}let m;if(f)Array.isArray(e)?m=e.map(g=>g.text||\"\").join(\"\"):Xd(e)?m=p.map(g=>{var y;return(y=g.text)!==null&&y!==void 0?y:\"\"}).join(\"\"):typeof e==\"object\"&&e&&e.text?m=e.text:m=e,r.insertText(m,d,u);else{m=x.from(p);let g=r.doc.resolve(d),y=g.node(),b=g.parentOffset===0,w=y.isText||y.isTextblock,k=y.content.size>0;b&&w&&k&&h&&(d=Math.max(0,d-1)),r.replaceWith(d,u,p)}t.updateSelection&&Yd(r,r.steps.length-1,-1),t.applyInputRules&&r.setMeta(\"applyInputRules\",{from:d,text:m}),t.applyPasteRules&&r.setMeta(\"applyPasteRules\",{from:d,text:m})}return!0};function Qd(n){for(let e=0;e<n.edgeCount;e+=1){let{type:t}=n.edge(e);if(t.isTextblock&&!t.hasRequiredAttrs())return t}return null}var pg=(n={})=>({tr:e,dispatch:t,editor:r})=>{let{pos:i,attrs:s,content:o,updateSelection:l=!0}=n,a;typeof i==\"number\"?a=e.doc.resolve(i):i?a=i:a=e.selection.$from;let c=Qd(a.parent.contentMatchAt(a.index()));if(!c)return!1;let d=Object.keys(c.spec.attrs||{}),u=s?Object.fromEntries(Object.entries(s).filter(([h])=>d.includes(h))):{},f;if(o){let h=rn(o,r.schema);f=c.createAndFill(u,h)}else f=c.createAndFill(u);return f?(t&&(e.insert(a.pos,f),l&&Yd(e,e.steps.length-1,-1)),!0):!1},mg=()=>({state:n,dispatch:e})=>nc(n,e),gg=()=>({state:n,dispatch:e})=>rc(n,e),yg=()=>({state:n,dispatch:e})=>Ls(n,e),bg=()=>({state:n,dispatch:e})=>zs(n,e),Zd=(n,e)=>{let t=n.resolve(e),r=t.nodeBefore,i=t.nodeAfter;return!r||!i?!1:!r.type.spec.isolating&&!i.type.spec.isolating},xg=()=>({state:n,dispatch:e,tr:t})=>{try{let r=Wt(n.doc,n.selection.$from.pos,-1);return r==null||!Zd(n.doc,r)?!1:(t.join(r,2),e&&e(t),!0)}catch{return!1}},kg=()=>({state:n,dispatch:e,tr:t})=>{try{let r=Wt(n.doc,n.selection.$from.pos,1);return r==null||!Zd(n.doc,r)?!1:(t.join(r,2),e&&e(t),!0)}catch{return!1}},Sg=()=>({state:n,dispatch:e})=>Qa(n,e),wg=()=>({state:n,dispatch:e})=>Za(n,e);function eu(){return typeof navigator<\"u\"?/Mac/.test(navigator.platform):!1}function vg(n){let e=n.split(/-(?!$)/),t=e[e.length-1];t===\"Space\"&&(t=\" \");let r,i,s,o;for(let l=0;l<e.length-1;l+=1){let a=e[l];if(/^(cmd|meta|m)$/i.test(a))o=!0;else if(/^a(lt)?$/i.test(a))r=!0;else if(/^(c|ctrl|control)$/i.test(a))i=!0;else if(/^s(hift)?$/i.test(a))s=!0;else if(/^mod$/i.test(a))ii()||eu()?o=!0:i=!0;else throw new Error(`Unrecognized modifier name: ${a}`)}return r&&(t=`Alt-${t}`),i&&(t=`Ctrl-${t}`),o&&(t=`Meta-${t}`),s&&(t=`Shift-${t}`),t}var Tg=n=>({editor:e,view:t,tr:r,dispatch:i})=>{let s=vg(n).split(/-(?!$)/),o=s.find(c=>![\"Alt\",\"Ctrl\",\"Meta\",\"Shift\"].includes(c)),l=new KeyboardEvent(\"keydown\",{key:o===\"Space\"?\" \":o,altKey:s.includes(\"Alt\"),ctrlKey:s.includes(\"Ctrl\"),metaKey:s.includes(\"Meta\"),shiftKey:s.includes(\"Shift\"),bubbles:!0,cancelable:!0}),a=e.captureTransaction(()=>{t.someProp(\"handleKeyDown\",c=>c(t,l))});return a?.steps.forEach(c=>{let d=c.map(r.mapping);d&&i&&r.maybeStep(d)}),!0};function Le(n,e,t={}){let{from:r,to:i,empty:s}=n.selection,o=e?X(e,n.schema):null,l=[];n.doc.nodesBetween(r,i,(d,u)=>{if(d.isText)return;let f=Math.max(r,u),h=Math.min(i,u+d.nodeSize);l.push({node:d,from:f,to:h})});let a=i-r,c=l.filter(d=>o?o.name===d.node.type.name:!0).filter(d=>ri(d.node.attrs,t,{strict:!1}));return s?!!c.length:c.reduce((d,u)=>d+u.to-u.from,0)>=a}var Eg=(n,e={})=>({state:t,dispatch:r})=>Le(t,X(n,t.schema),e)?ic(t,r):!1,Mg=()=>({state:n,dispatch:e})=>Ws(n,e),Cg=n=>({state:e,dispatch:t})=>{let r=X(n,e.schema);return dc(r)(e,t)},Ag=()=>({state:n,dispatch:e})=>Fs(n,e);function oi(n,e){return e.nodes[n]?\"node\":e.marks[n]?\"mark\":null}function Id(n,e){let t=typeof e==\"string\"?[e]:e;return Object.keys(n).reduce((r,i)=>(t.includes(i)||(r[i]=n[i]),r),{})}var Rg=(n,e)=>({tr:t,state:r,dispatch:i})=>{let s=null,o=null,l=oi(typeof n==\"string\"?n:n.name,r.schema);if(!l)return!1;l===\"node\"&&(s=X(n,r.schema)),l===\"mark\"&&(o=Ge(n,r.schema));let a=!1;return t.selection.ranges.forEach(c=>{r.doc.nodesBetween(c.$from.pos,c.$to.pos,(d,u)=>{s&&s===d.type&&(a=!0,i&&t.setNodeMarkup(u,void 0,Id(d.attrs,e))),o&&d.marks.length&&d.marks.forEach(f=>{o===f.type&&(a=!0,i&&t.addMark(u,u+d.nodeSize,o.create(Id(f.attrs,e))))})})}),a},Ng=()=>({tr:n,dispatch:e})=>(e&&n.scrollIntoView(),!0),Og=()=>({tr:n,dispatch:e})=>{if(e){let t=new ce(n.doc);n.setSelection(t)}return!0},Ig=()=>({state:n,dispatch:e})=>Ps(n,e),Dg=()=>({state:n,dispatch:e})=>Hs(n,e),Lg=()=>({state:n,dispatch:e})=>sc(n,e),Pg=()=>({state:n,dispatch:e})=>Ks(n,e),Bg=()=>({state:n,dispatch:e})=>Us(n,e);function $o(n,e,t={},r={}){return rn(n,e,{slice:!1,parseOptions:t,errorOnInvalidContent:r.errorOnInvalidContent})}var zg=(n,{errorOnInvalidContent:e,emitUpdate:t=!0,parseOptions:r={}}={})=>({editor:i,tr:s,dispatch:o,commands:l})=>{let{doc:a}=s;if(r.preserveWhitespace!==\"full\"){let c=$o(n,i.schema,r,{errorOnInvalidContent:e??i.options.enableContentCheck});if(o){let d=Gd(c)?c.content:[c];s.replaceWith(0,a.content.size,d).setMeta(\"preventUpdate\",!t)}return!0}return o&&s.setMeta(\"preventUpdate\",!t),l.insertContentAt({from:0,to:a.content.size},n,{parseOptions:r,errorOnInvalidContent:e??i.options.enableContentCheck})};function tu(n,e){let t=Ge(e,n.schema),{from:r,to:i,empty:s}=n.selection,o=[];s?(n.storedMarks&&o.push(...n.storedMarks),o.push(...n.selection.$head.marks())):n.doc.nodesBetween(r,i,a=>{o.push(...a.marks)});let l=o.find(a=>a.type.name===t.name);return l?{...l.attrs}:{}}function Wo(n,e){let t=new Vt(n);return e.forEach(r=>{r.steps.forEach(i=>{t.step(i)})}),t}function nu(n,e,t){let r=[];return n.nodesBetween(e.from,e.to,(i,s)=>{t(i)&&r.push({node:i,pos:s})}),r}function Hg(n,e){for(let t=n.depth;t>0;t-=1){let r=n.node(t);if(e(r))return{pos:t>0?n.before(t):0,start:n.start(t),depth:t,node:r}}}function li(n){return e=>Hg(e.$from,n)}function E(n,e,t){return n.config[e]===void 0&&n.parent?E(n.parent,e,t):typeof n.config[e]==\"function\"?n.config[e].bind({...t,parent:n.parent?E(n.parent,e,t):null}):n.config[e]}function Uo(n){return n.map(e=>{let t=E(e,\"addExtensions\",{name:e.name,options:e.options,storage:e.storage});return t?[e,...Uo(t())]:e}).flat(10)}function Ko(n,e){let t=Fe.fromSchema(e).serializeFragment(n),r=document.implementation.createHTMLDocument().createElement(\"div\");return r.appendChild(t),r.innerHTML}function Fo(n){return typeof n==\"function\"}function B(n,e=void 0,...t){return Fo(n)?e?n.bind(e)(...t):n(...t):n}function $g(n={}){return Object.keys(n).length===0&&n.constructor===Object}function sn(n){return{baseExtensions:n.filter(e=>e.type===\"extension\"),nodeExtensions:n.filter(e=>e.type===\"node\"),markExtensions:n.filter(e=>e.type===\"mark\")}}function ru(n){let e=[],{nodeExtensions:t,markExtensions:r}=sn(n),i=[...t,...r],s={default:null,validate:void 0,rendered:!0,renderHTML:null,parseHTML:null,keepOnSplit:!0,isRequired:!1},o=t.filter(c=>c.name!==\"text\").map(c=>c.name),l=r.map(c=>c.name),a=[...o,...l];return n.forEach(c=>{let d=E(c,\"addGlobalAttributes\",{name:c.name,options:c.options,storage:c.storage,extensions:i});d&&d().forEach(u=>{let f;Array.isArray(u.types)?f=u.types:u.types===\"*\"?f=a:u.types===\"nodes\"?f=o:u.types===\"marks\"?f=l:f=[],f.forEach(h=>{Object.entries(u.attributes).forEach(([p,m])=>{e.push({type:h,name:p,attribute:{...s,...m}})})})})}),i.forEach(c=>{let d=E(c,\"addAttributes\",{name:c.name,options:c.options,storage:c.storage});if(!d)return;let u=d();Object.entries(u).forEach(([f,h])=>{let p={...s,...h};typeof p?.default==\"function\"&&(p.default=p.default()),p?.isRequired&&p?.default===void 0&&delete p.default,e.push({type:c.name,name:f,attribute:p})})}),e}function Fg(n){let e=[],t=\"\",r=!1,i=!1,s=0,o=n.length;for(let l=0;l<o;l+=1){let a=n[l];if(a===\"\\'\"&&!i){r=!r,t+=a;continue}if(a===\\'\"\\'&&!r){i=!i,t+=a;continue}if(!r&&!i){if(a===\"(\"){s+=1,t+=a;continue}if(a===\")\"&&s>0){s-=1,t+=a;continue}if(a===\";\"&&s===0){e.push(t),t=\"\";continue}}t+=a}return t&&e.push(t),e}function Dd(n){let e=[],t=Fg(n||\"\"),r=t.length;for(let i=0;i<r;i+=1){let s=t[i],o=s.indexOf(\":\");if(o===-1)continue;let l=s.slice(0,o).trim(),a=s.slice(o+1).trim();l&&a&&e.push([l,a])}return e}function L(...n){return n.filter(e=>!!e).reduce((e,t)=>{let r={...e};return Object.entries(t).forEach(([i,s])=>{if(i===\"__proto__\"){Object.defineProperty(r,i,{configurable:!0,enumerable:!0,value:s,writable:!0});return}if(!r[i]){r[i]=s;return}if(i===\"class\"){let o=s?String(s).split(\" \"):[],l=r[i]?r[i].split(\" \"):[],a=o.filter(c=>!l.includes(c));r[i]=[...l,...a].join(\" \")}else if(i===\"style\"){let o=new Map([...Dd(r[i]),...Dd(s)]);r[i]=Array.from(o.entries()).map(([l,a])=>`${l}: ${a}`).join(\"; \")}else r[i]=s}),r},{})}function on(n,e){return e.filter(t=>t.type===n.type.name).filter(t=>t.attribute.rendered).map(t=>t.attribute.renderHTML?t.attribute.renderHTML(n.attrs)||{}:{[t.name]:n.attrs[t.name]}).reduce((t,r)=>L(t,r),{})}function _g(n){return typeof n!=\"string\"?n:n.match(/^[+-]?(?:\\\\d*\\\\.)?\\\\d+$/)?Number(n):n===\"true\"?!0:n===\"false\"?!1:n}function Ld(n,e){return\"style\"in n?n:{...n,getAttrs:t=>{let r=n.getAttrs?n.getAttrs(t):n.attrs;if(r===!1)return!1;let i=e.reduce((s,o)=>{let l=o.attribute.parseHTML?o.attribute.parseHTML(t):_g(t.getAttribute(o.name));return l==null?s:{...s,[o.name]:l}},{});return{...r,...i}}}}function Pd(n){return Object.fromEntries(Object.entries(n).filter(([e,t])=>e===\"attrs\"&&$g(t)?!1:t!=null))}function Bd(n){var e,t;let r={};return!(!(n==null||(e=n.attribute)===null||e===void 0)&&e.isRequired)&&\"default\"in(n?.attribute||{})&&(r.default=n.attribute.default),(n==null||(t=n.attribute)===null||t===void 0?void 0:t.validate)!==void 0&&(r.validate=n.attribute.validate),[n.name,r]}function iu(n,e){var t;let r=ru(n),{nodeExtensions:i,markExtensions:s}=sn(n),o=(t=i.find(c=>E(c,\"topNode\")))===null||t===void 0?void 0:t.name,l=Object.fromEntries(i.map(c=>{let d=r.filter(g=>g.type===c.name),u={name:c.name,options:c.options,storage:c.storage,editor:e},f=Pd({...n.reduce((g,y)=>{let b=E(y,\"extendNodeSchema\",u);return{...g,...b?b(c):{}}},{}),content:B(E(c,\"content\",u)),marks:B(E(c,\"marks\",u)),group:B(E(c,\"group\",u)),inline:B(E(c,\"inline\",u)),atom:B(E(c,\"atom\",u)),selectable:B(E(c,\"selectable\",u)),draggable:B(E(c,\"draggable\",u)),code:B(E(c,\"code\",u)),whitespace:B(E(c,\"whitespace\",u)),linebreakReplacement:B(E(c,\"linebreakReplacement\",u)),defining:B(E(c,\"defining\",u)),isolating:B(E(c,\"isolating\",u)),attrs:Object.fromEntries(d.map(Bd))}),h=B(E(c,\"parseHTML\",u));h&&(f.parseDOM=h.map(g=>Ld(g,d)));let p=E(c,\"renderHTML\",u);p&&(f.toDOM=g=>p({node:g,HTMLAttributes:on(g,d)}));let m=E(c,\"renderText\",u);return m&&(f.toText=m),[c.name,f]})),a=Object.fromEntries(s.map(c=>{let d=r.filter(m=>m.type===c.name),u={name:c.name,options:c.options,storage:c.storage,editor:e},f=Pd({...n.reduce((m,g)=>{let y=E(g,\"extendMarkSchema\",u);return{...m,...y?y(c):{}}},{}),inclusive:B(E(c,\"inclusive\",u)),excludes:B(E(c,\"excludes\",u)),group:B(E(c,\"group\",u)),spanning:B(E(c,\"spanning\",u)),code:B(E(c,\"code\",u)),attrs:Object.fromEntries(d.map(Bd))}),h=B(E(c,\"parseHTML\",u));h&&(f.parseDOM=h.map(m=>Ld(m,d)));let p=E(c,\"renderHTML\",u);return p&&(f.toDOM=m=>p({mark:m,HTMLAttributes:on(m,d)})),[c.name,f]}));return new xn({topNode:o,nodes:l,marks:a})}function Vg(n){let e=n.filter((t,r)=>n.indexOf(t)!==r);return Array.from(new Set(e))}function _n(n){return n.sort((t,r)=>{let i=E(t,\"priority\")||100,s=E(r,\"priority\")||100;return i>s?-1:i<s?1:0})}function qo(n){let e=_n(Uo(n)),t=Vg(e.map(r=>r.name));return t.length&&console.warn(`[tiptap warn]: Duplicate extension names found: [${t.map(r=>`\\'${r}\\'`).join(\", \")}]. This can lead to issues.`),e}function su(n,e){return iu(qo(n),e)}function ou(n,e,t){let{from:r,to:i}=e,{blockSeparator:s=`\\n\\n`,textSerializers:o={}}=t||{},l=\"\";return n.nodesBetween(r,i,(a,c,d,u)=>{a.isBlock&&c>r&&(l+=s);let f=o?.[a.type.name];if(f)return d&&(l+=f({node:a,pos:c,parent:d,index:u,range:e})),!1;if(a.isText){var h;l+=a==null||(h=a.text)===null||h===void 0?void 0:h.slice(Math.max(r,c)-c,i-c)}}),l}function jg(n,e){return ou(n,{from:0,to:n.content.size},e)}function lu(n){return Object.fromEntries(Object.entries(n.nodes).filter(([,e])=>e.spec.toText).map(([e,t])=>[e,t.spec.toText]))}function Wg(n,e){let t=X(e,n.schema),{from:r,to:i}=n.selection,s=[];n.doc.nodesBetween(r,i,l=>{s.push(l)});let o=s.reverse().find(l=>l.type.name===t.name);return o?{...o.attrs}:{}}function Jo(n,e){let t=oi(typeof e==\"string\"?e:e.name,n.schema);return t===\"node\"?Wg(n,e):t===\"mark\"?tu(n,e):{}}function Ug(n,e=JSON.stringify){let t={};return n.filter(r=>{let i=e(r);return Object.prototype.hasOwnProperty.call(t,i)?!1:t[i]=!0})}function Kg(n){let e=Ug(n);return e.length===1?e:e.filter((t,r)=>!e.filter((i,s)=>s!==r).some(i=>t.oldRange.from>=i.oldRange.from&&t.oldRange.to<=i.oldRange.to&&t.newRange.from>=i.newRange.from&&t.newRange.to<=i.newRange.to))}function ln(n){let{mapping:e,steps:t}=n,r=[];return e.maps.forEach((i,s)=>{let o=[];if(i.ranges.length)i.forEach((l,a)=>{o.push({from:l,to:a})});else{let{from:l,to:a}=t[s];if(l===void 0||a===void 0)return;o.push({from:l,to:a})}o.forEach(({from:l,to:a})=>{let c=e.slice(s).map(l,-1),d=e.slice(s).map(a),u=e.invert().map(c,-1),f=e.invert().map(d);r.push({oldRange:{from:u,to:f},newRange:{from:c,to:d}})})}),Kg(r)}function Vn(n,e,t){let r=[];return n===e?t.resolve(n).marks().forEach(i=>{let s=jo(t.resolve(n),i.type);s&&r.push({mark:i,...s})}):t.nodesBetween(n,e,(i,s)=>{!i||i?.nodeSize===void 0||r.push(...i.marks.map(o=>({from:s,to:s+i.nodeSize,mark:o})))}),r}var au=(n,e,t,r=20)=>{let i=n.doc.resolve(t),s=r,o=null;for(;s>0&&o===null;){let l=i.node(s);l?.type.name===e?o=l:s-=1}return[o,s]},cu=n=>{let e=n.depth-1;if(e<0)return null;let t=n.index(e);return t===0?null:n.node(e).child(t-1)};function Qt(n,e){return e.nodes[n]||e.marks[n]||null}function ni(n,e,t){return Object.fromEntries(Object.entries(t).filter(([r])=>{let i=n.find(s=>s.type===e&&s.name===r);return i?i.attribute.keepOnSplit:!1}))}var qg=(n,e=500)=>{let t=\"\",r=n.parentOffset;return n.parent.nodesBetween(Math.max(0,r-e),r,(i,s,o,l)=>{var a,c;let d=((a=(c=i.type.spec).toText)===null||a===void 0?void 0:a.call(c,{node:i,pos:s,parent:o,index:l}))||i.textContent||\"%leaf%\";t+=i.isAtom&&!i.isText?d:d.slice(0,Math.max(0,r-s))}),t};function _o(n,e,t={}){let{empty:r,ranges:i}=n.selection,s=e?Ge(e,n.schema):null;if(r)return!!(n.storedMarks||n.selection.$from.marks()).filter(d=>s?s.name===d.type.name:!0).find(d=>ri(d.attrs,t,{strict:!1}));let o=0,l=[];if(i.forEach(({$from:d,$to:u})=>{let f=d.pos,h=u.pos;n.doc.nodesBetween(f,h,(p,m)=>{if(s&&p.inlineContent&&!p.type.allowsMarkType(s))return!1;if(!p.isText&&!p.marks.length)return;let g=Math.max(f,m),y=Math.min(h,m+p.nodeSize),b=y-g;o+=b,l.push(...p.marks.map(w=>({mark:w,from:g,to:y})))})}),o===0)return!1;let a=l.filter(d=>s?s.name===d.mark.type.name:!0).filter(d=>ri(d.mark.attrs,t,{strict:!1})).reduce((d,u)=>d+u.to-u.from,0),c=l.filter(d=>s?d.mark.type!==s&&d.mark.type.excludes(s):!0).reduce((d,u)=>d+u.to-u.from,0);return(a>0?a+c:a)>=o}function Jg(n,e,t={}){if(!e)return Le(n,null,t)||_o(n,null,t);let r=oi(e,n.schema);return r===\"node\"?Le(n,e,t):r===\"mark\"?_o(n,e,t):!1}var du=(n,e)=>{let{$from:t,$to:r,$anchor:i}=n.selection;if(e){let s=li(l=>l.type.name===e)(n.selection);if(!s)return!1;let o=n.doc.resolve(s.pos+1);return i.pos+1===o.end()}return!(r.parentOffset<r.parent.nodeSize-2||t.pos!==r.pos)},uu=n=>{let{$from:e,$to:t}=n.selection;return!(e.parentOffset>0||e.pos!==t.pos)};function zd(n,e){return Array.isArray(e)?e.some(t=>(typeof t==\"string\"?t:t.name)===n.name):e}function Po(n,e){let{nodeExtensions:t}=sn(e),r=t.find(s=>s.name===n);if(!r)return!1;let i=B(E(r,\"group\",{name:r.name,options:r.options,storage:r.storage}));return typeof i!=\"string\"?!1:i.split(\" \").includes(\"list\")}function an(n,{checkChildren:e=!0,ignoreWhitespace:t=!1}={}){if(t){if(n.type.name===\"hardBreak\")return!0;if(n.isText){var r;return!/\\\\S/.test((r=n.text)!==null&&r!==void 0?r:\"\")}}if(n.isText)return!n.text;if(n.isAtom||n.isLeaf)return!1;if(n.content.childCount===0)return!0;if(e){let i=!0;return n.content.forEach(s=>{i!==!1&&(an(s,{ignoreWhitespace:t,checkChildren:e})||(i=!1))}),i}return!1}function ai(n){return n instanceof M}var fu=class hu{constructor(e){this.position=e}static fromJSON(e){return new hu(e.position)}toJSON(){return{position:this.position}}};function Xg(n,e){let t=e.mapping.mapResult(n.position);return{position:new fu(t.pos),mapResult:t}}function Gg(n){return new fu(n)}function Yg(n,e,t){let{selection:r}=e,i=null;if(qd(r)&&(i=r.$cursor),i){var s;let l=(s=n.storedMarks)!==null&&s!==void 0?s:i.marks();return i.parent.type.allowsMarkType(t)&&(!!t.isInSet(l)||!l.some(a=>a.type.excludes(t)))}let{ranges:o}=r;return o.some(({$from:l,$to:a})=>{let c=l.depth===0?n.doc.inlineContent&&n.doc.type.allowsMarkType(t):!1;return n.doc.nodesBetween(l.pos,a.pos,(d,u,f)=>{if(c)return!1;if(d.isInline){let h=!f||f.type.allowsMarkType(t),p=!!t.isInSet(d.marks)||!d.marks.some(m=>m.type.excludes(t));c=h&&p}return!c}),c})}var Qg=(n,e={})=>({tr:t,state:r,dispatch:i})=>{let{selection:s}=t,{empty:o,ranges:l}=s,a=Ge(n,r.schema);if(i)if(o){let c=tu(r,a);t.addStoredMark(a.create({...c,...e}))}else l.forEach(c=>{let d=c.$from.pos,u=c.$to.pos;r.doc.nodesBetween(d,u,(f,h)=>{let p=Math.max(h,d),m=Math.min(h+f.nodeSize,u);f.marks.find(g=>g.type===a)?f.marks.forEach(g=>{a===g.type&&t.addMark(p,m,a.create({...g.attrs,...e}))}):t.addMark(p,m,a.create(e))})});return Yg(r,t,a)},Zg=(n,e)=>({tr:t})=>(t.setMeta(n,e),!0),ey=(n,e={})=>({state:t,dispatch:r,chain:i})=>{let s=X(n,t.schema),o;return t.selection.$anchor.sameParent(t.selection.$head)&&(o=t.selection.$anchor.parent.attrs),s.isTextblock?i().command(({commands:l})=>qs(s,{...o,...e})(t)?!0:l.clearNodes()).command(({state:l})=>qs(s,{...o,...e})(l,r)).run():(console.warn(\\'[tiptap warn]: Currently \"setNode()\" only supports text block nodes.\\'),!1)},ty=n=>({tr:e,dispatch:t})=>{if(t){let{doc:r}=e,i=It(n,0,r.content.size),s=M.create(r,i);e.setSelection(s)}return!0},ny=(n,e)=>({tr:t,state:r,dispatch:i})=>{let{selection:s}=r,o,l;return typeof e==\"number\"?(o=e,l=e):e&&\"from\"in e&&\"to\"in e?(o=e.from,l=e.to):(o=s.from,l=s.to),i&&t.doc.nodesBetween(o,l,(a,c)=>{a.isText||t.setNodeMarkup(c,void 0,{...a.attrs,dir:n})}),!0},ry=n=>({tr:e,dispatch:t})=>{if(t){let{doc:r}=e,{from:i,to:s}=typeof n==\"number\"?{from:n,to:n}:n,o=T.atStart(r).from,l=T.atEnd(r).to,a=It(i,o,l),c=It(s,o,l),d=T.create(r,a,c);e.setSelection(d)}return!0},iy=n=>({state:e,dispatch:t})=>{let r=X(n,e.schema);return uc(r)(e,t)};function Hd(n,e){let t=n.storedMarks||n.selection.$to.parentOffset&&n.selection.$from.marks();if(t){let r=t.filter(i=>e?.includes(i.type.name));n.tr.ensureMarks(r)}}var sy=({keepMarks:n=!0}={})=>({tr:e,state:t,dispatch:r,editor:i})=>{let{selection:s,doc:o}=e,{$from:l,$to:a}=s,c=i.extensionManager.attributes,d=ni(c,l.node().type.name,l.node().attrs);if(s instanceof M&&s.node.isBlock)return!l.parentOffset||!ke(o,l.pos)?!1:(r&&(n&&Hd(t,i.extensionManager.splittableMarks),e.split(l.pos).scrollIntoView()),!0);if(!l.parent.isBlock)return!1;let u=a.parentOffset===a.parent.content.size,f=l.depth===0?void 0:Qd(l.node(-1).contentMatchAt(l.indexAfter(-1))),h=u&&f?[{type:f,attrs:d}]:void 0,p=s instanceof T&&!s.empty?kt.create({doc:e.doc,selection:s}).tr.deleteSelection():null,m=p?p.doc:e.doc,g=p?p.mapping.map(l.pos):l.pos,y=ke(m,g,1,h);if(!h&&!y&&ke(m,g,1,f?[{type:f}]:void 0)&&(y=!0,h=f?[{type:f,attrs:d}]:void 0),r){if(y){let b=e.steps.length;if(s instanceof T&&e.deleteSelection(),e.split(e.mapping.slice(b).map(l.pos),1,h),f&&!u&&!l.parentOffset&&l.parent.type!==f){let w=e.mapping.slice(b).map(l.before()),k=e.doc.resolve(w);l.node(-1).canReplaceWith(k.index(),k.index()+1,f)&&e.setNodeMarkup(e.mapping.slice(b).map(l.before()),f)}}n&&Hd(t,i.extensionManager.splittableMarks),e.scrollIntoView()}return y},oy=(n,e={})=>({tr:t,state:r,dispatch:i,editor:s})=>{let o=X(n,r.schema),{$from:l,$to:a}=r.selection,c=r.selection.node;if(c&&c.isBlock||l.depth<2||!l.sameParent(a))return!1;let d=l.node(-1);if(d.type!==o)return!1;let u=s.extensionManager.attributes;if(l.parent.content.size===0&&l.node(-1).childCount===l.indexAfter(-1)){if(l.depth===2||l.node(-3).type!==o||l.index(-2)!==l.node(-2).childCount-1)return!1;if(i){var f;let k=x.empty,N=l.index(-1)?1:l.index(-2)?2:3;for(let be=l.depth-N;be>=l.depth-3;be-=1)k=x.from(l.node(be).copy(k));let $=l.indexAfter(-1)<l.node(-2).childCount?1:l.indexAfter(-2)<l.node(-3).childCount?2:3,A={...ni(u,l.node().type.name,l.node().attrs),...e},z=((f=o.contentMatch.defaultType)===null||f===void 0?void 0:f.createAndFill(A))||void 0;k=k.append(x.from(o.createAndFill(null,z)||void 0));let F=l.before(l.depth-(N-1));t.replace(F,l.after(-$),new v(k,4-N,0));let Q=-1;t.doc.nodesBetween(F,t.doc.content.size,(be,pt)=>{if(Q>-1)return!1;be.isTextblock&&be.content.size===0&&(Q=pt+1)}),Q>-1&&t.setSelection(T.near(t.doc.resolve(Q))),t.scrollIntoView()}return!0}let h=a.pos===l.end()?d.contentMatchAt(0).defaultType:null,p={...ni(u,d.type.name,d.attrs),...e},m={...ni(u,l.node().type.name,l.node().attrs),...e},g=l.parentOffset===0&&l.index(-1)===0,y=l.before(-1);t.delete(l.pos,a.pos);let b=g?d.attrs:p,w=h?[{type:o,attrs:b},{type:h,attrs:m}]:[{type:o,attrs:b}];if(!ke(t.doc,l.pos,2))return!1;if(i){let{selection:k,storedMarks:N}=r,{splittableMarks:$}=s.extensionManager,A=N||k.$to.parentOffset&&k.$from.marks();if(t.split(l.pos,2,w).scrollIntoView(),g&&t.setNodeMarkup(y,void 0,p),!A||!i)return!0;let z=A.filter(F=>$.includes(F.type.name));t.ensureMarks(z)}return!0};function $d(n){return!n||n===\"1\"?null:n}function pu(n,e){return $d(n)===$d(e)}var Bo=(n,e)=>{let t=li(s=>s.type===e)(n.selection);if(!t)return!0;let r=n.doc.resolve(Math.max(0,t.pos-1)).before(t.depth);if(r===void 0)return!0;let i=n.doc.nodeAt(r);return!(t.node.type===i?.type&&Re(n.doc,t.pos))||!pu(t.node.attrs.type,i?.attrs.type)||n.join(t.pos),!0},zo=(n,e)=>{let t=li(s=>s.type===e)(n.selection);if(!t)return!0;let r=n.doc.resolve(t.start).after(t.depth);if(r===void 0)return!0;let i=n.doc.nodeAt(r);return!(t.node.type===i?.type&&Re(n.doc,r))||!pu(t.node.attrs.type,i?.attrs.type)||n.join(r),!0};function ly(n){let e=n.doc,t=e.firstChild;if(!t)return null;let r=e.resolve(1),i=e.resolve(t.nodeSize-1);return T.between(r,i)}var ay=(n,e,t,r={})=>({editor:i,tr:s,state:o,dispatch:l,chain:a,commands:c,can:d})=>{let{extensions:u,splittableMarks:f}=i.extensionManager,h=X(n,o.schema),p=X(e,o.schema),{selection:m,storedMarks:g}=o,{$from:y,$to:b}=m,w=y.blockRange(b),k=g||m.$to.parentOffset&&m.$from.marks();if(!w)return!1;let N=li(Me=>Po(Me.type.name,u))(m),$=m.from===0&&m.to===o.doc.content.size,A=o.doc.content.content,z=A.length===1?A[0]:null,F=$&&z&&Po(z.type.name,u)?{node:z,pos:0,depth:0}:null,Q=N??F,be=!!N&&w.depth>=1&&w.depth-N.depth<=1,pt=!!F;if((be||pt)&&Q){if(Q.node.type===h)return $&&pt?a().command(({tr:Me,dispatch:He})=>{let Ce=ly(Me);return Ce?(Me.setSelection(Ce),He&&He(Me),!0):!1}).liftListItem(p).run():c.liftListItem(p);if(Po(Q.node.type.name,u)&&h.validContent(Q.node.content))return a().command(()=>(s.setNodeMarkup(Q.pos,h),!0)).command(()=>Bo(s,h)).command(()=>zo(s,h)).run()}return!t||!k||!l?a().command(()=>d().wrapInList(h,r)?!0:c.clearNodes()).wrapInList(h,r).command(()=>Bo(s,h)).command(()=>zo(s,h)).run():a().command(()=>{let Me=d().wrapInList(h,r),He=k.filter(Ce=>f.includes(Ce.type.name));return s.ensureMarks(He),Me?!0:c.clearNodes()}).wrapInList(h,r).command(()=>Bo(s,h)).command(()=>zo(s,h)).run()},cy=(n,e={},t={})=>({state:r,commands:i})=>{let{extendEmptyMarkRange:s=!1}=t,o=Ge(n,r.schema);return _o(r,o,e)?i.unsetMark(o,{extendEmptyMarkRange:s}):i.setMark(o,e)},dy=(n,e,t={})=>({state:r,commands:i})=>{let s=X(n,r.schema),o=X(e,r.schema),l=Le(r,s,t),a;return r.selection.$anchor.sameParent(r.selection.$head)&&(a=r.selection.$anchor.parent.attrs),l?i.setNode(o,a):i.setNode(s,{...a,...t})},uy=(n,e={})=>({state:t,commands:r})=>{let i=X(n,t.schema);return Le(t,i,e)?r.lift(i):r.wrapIn(i,e)},fy=()=>({state:n,dispatch:e})=>{let t=n.plugins;for(let r=0;r<t.length;r+=1){let i=t[r],s;if(i.spec.isInputRules&&(s=i.getState(n))){if(e){let o=n.tr,l=s.transform;for(let a=l.steps.length-1;a>=0;a-=1)o.step(l.steps[a].invert(l.docs[a]));if(s.text){let a=o.doc.resolve(s.from).marks();o.replaceWith(s.from,s.to,n.schema.text(s.text,a))}else o.delete(s.from,s.to)}return!0}}return!1},hy=(n={})=>({tr:e,dispatch:t,editor:r})=>{let{ignoreClearable:i=!1}=n,{selection:s}=e,{empty:o,ranges:l}=s;if(o)return!0;let{nonClearableMarks:a}=r.extensionManager;if(t){let c=Object.values(r.schema.marks).filter(d=>i||!a.includes(d.name));l.forEach(d=>{for(let u of c)e.removeMark(d.$from.pos,d.$to.pos,u)})}return!0},py=(n,e={})=>({tr:t,state:r,dispatch:i})=>{let{extendEmptyMarkRange:s=!1}=e,{selection:o}=t,l=Ge(n,r.schema),{$from:a,empty:c,ranges:d}=o;if(!i)return!0;if(c&&s){var u;let{from:f,to:h}=o,p=jo(a,l,(u=a.marks().find(m=>m.type===l))===null||u===void 0?void 0:u.attrs);p&&(f=p.from,h=p.to),t.removeMark(f,h,l)}else d.forEach(f=>{t.removeMark(f.$from.pos,f.$to.pos,l)});return t.removeStoredMark(l),!0},my=n=>({tr:e,state:t,dispatch:r})=>{let{selection:i}=t,s,o;return typeof n==\"number\"?(s=n,o=n):n&&\"from\"in n&&\"to\"in n?(s=n.from,o=n.to):(s=i.from,o=i.to),r&&e.doc.nodesBetween(s,o,(l,a)=>{if(l.isText)return;let c={...l.attrs};delete c.dir,e.setNodeMarkup(a,void 0,c)}),!0},gy=(n,e={})=>({tr:t,state:r,dispatch:i})=>{let s=null,o=null,l=oi(typeof n==\"string\"?n:n.name,r.schema);if(!l)return!1;l===\"node\"&&(s=X(n,r.schema)),l===\"mark\"&&(o=Ge(n,r.schema));let a=!1;return t.selection.ranges.forEach(c=>{let d=c.$from.pos,u=c.$to.pos,f,h,p,m;t.selection.empty?r.doc.nodesBetween(d,u,(g,y)=>{s&&s===g.type&&(a=!0,p=Math.max(y,d),m=Math.min(y+g.nodeSize,u),f=y,h=g)}):r.doc.nodesBetween(d,u,(g,y)=>{y<d&&s&&s===g.type&&(a=!0,p=Math.max(y,d),m=Math.min(y+g.nodeSize,u),f=y,h=g),y>=d&&y<=u&&(s&&s===g.type&&(a=!0,i&&t.setNodeMarkup(y,void 0,{...g.attrs,...e})),o&&g.marks.length&&g.marks.forEach(b=>{if(o===b.type&&(a=!0,i)){let w=Math.max(y,d),k=Math.min(y+g.nodeSize,u);t.addMark(w,k,o.create({...b.attrs,...e}))}}))}),h&&(f!==void 0&&i&&t.setNodeMarkup(f,void 0,{...h.attrs,...e}),o&&h.marks.length&&h.marks.forEach(g=>{o===g.type&&i&&t.addMark(p,m,o.create({...g.attrs,...e}))}))}),a},en=new H(\"__tiptap_decorations__\"),yy=n=>({tr:e,dispatch:t})=>(t&&e.setMeta(en,{type:\"force\",name:n}),!0),by=(n,e={})=>({state:t,dispatch:r})=>{let i=X(n,t.schema);return ac(i,e)(t,r)},xy=(n,e={})=>({state:t,dispatch:r})=>{let i=X(n,t.schema);return cc(i,e)(t,r)},ky=Yl({blur:()=>qm,clearContent:()=>Jm,clearNodes:()=>Xm,command:()=>Gm,createParagraphNear:()=>Ym,cut:()=>Qm,deleteCurrentNode:()=>Zm,deleteNode:()=>eg,deleteRange:()=>tg,deleteSelection:()=>ig,enter:()=>sg,exitCode:()=>og,extendMarkRange:()=>lg,first:()=>ag,focus:()=>dg,forEach:()=>ug,insertContent:()=>fg,insertContentAt:()=>hg,insertDefaultBlock:()=>pg,joinBackward:()=>yg,joinDown:()=>gg,joinForward:()=>bg,joinItemBackward:()=>xg,joinItemForward:()=>kg,joinTextblockBackward:()=>Sg,joinTextblockForward:()=>wg,joinUp:()=>mg,keyboardShortcut:()=>Tg,lift:()=>Eg,liftEmptyBlock:()=>Mg,liftListItem:()=>Cg,newlineInCode:()=>Ag,resetAttributes:()=>Rg,scrollIntoView:()=>Ng,selectAll:()=>Og,selectNodeBackward:()=>Ig,selectNodeForward:()=>Dg,selectParentNode:()=>Lg,selectTextblockEnd:()=>Pg,selectTextblockStart:()=>Bg,setContent:()=>zg,setMark:()=>Qg,setMeta:()=>Zg,setNode:()=>ey,setNodeSelection:()=>ty,setTextDirection:()=>ny,setTextSelection:()=>ry,sinkListItem:()=>iy,splitBlock:()=>sy,splitListItem:()=>oy,toggleList:()=>ay,toggleMark:()=>cy,toggleNode:()=>dy,toggleWrap:()=>uy,undoInputRule:()=>fy,unsetAllMarks:()=>hy,unsetMark:()=>py,unsetTextDirection:()=>my,updateAttributes:()=>gy,updateDecorations:()=>yy,wrapIn:()=>by,wrapInList:()=>xy}),tn=new WeakMap;function Sy(n,e){var t;tn.set(n,((t=tn.get(n))!==null&&t!==void 0?t:0)+1);try{return e()}finally{var r;let i=((r=tn.get(n))!==null&&r!==void 0?r:1)-1;i>0?tn.set(n,i):tn.delete(n)}}function wy(n){return tn.has(n)}var vy=class{constructor(){this.callbacks={}}on(n,e){return this.callbacks[n]||(this.callbacks[n]=[]),this.callbacks[n].push(e),this}emit(n,...e){let t=this.callbacks[n];return t&&t.forEach(r=>r.apply(this,e)),this}off(n,e){let t=this.callbacks[n];return t&&(e?this.callbacks[n]=t.filter(r=>r!==e):delete this.callbacks[n]),this}once(n,e){let t=(...r)=>{this.off(n,t),e.apply(this,r)};return this.on(n,t)}removeAllListeners(){this.callbacks={}}},mu=typeof process<\"u\"&&!1;function Ty(n){return n.kind===\"widget\"}function gu(n,e){let t=[],r=new Set;for(let i of n)i.kind===\"widget\"&&Ty(i)&&r.add(i.key),t.push(i.toPMDecoration(e));return{decorations:t,widgetKeys:r}}function Ey(n,e,t){let{decorations:r,widgetKeys:i}=gu(e,t);return{set:_.create(n,r),widgetKeys:i}}function yu({position:n,from:e,to:t,docSize:r}){return n<e?!1:n<t?!0:n===t&&t===r}function My({decorations:n,from:e,to:t,docSize:r,extensionName:i,warnedExtensions:s}){return n.filter(o=>yu({position:o.anchor,from:e,to:t,docSize:r})?!0:(o.anchor===t||s.has(i)||(s.add(i),console.warn(`[tiptap warn]: Extension \"${i}\" returned a decoration outside the requested range [${e}, ${t}). It was ignored.`)),!1))}function bu(n){var e;let t=(e=n.spec)===null||e===void 0?void 0:e.key;return typeof t==\"string\"?t:void 0}function Cy(n){let e=new Map,t=new Map;for(let o of n.find()){var r,i,s;let l=bu(o);if(!l)continue;let a=(r=o.spec.extensionName)!==null&&r!==void 0?r:\"unknown\",c=(i=e.get(l))!==null&&i!==void 0?i:new Set;c.add(a),e.set(l,c),t.set(l,((s=t.get(l))!==null&&s!==void 0?s:0)+1)}return Array.from(e,([o,l])=>({key:o,extensions:l})).filter(({key:o})=>{var l;return((l=t.get(o))!==null&&l!==void 0?l:0)>1})}function xu(n){return n.jsonID===\"attr\"}function Ay(n){let e=!1;if(n.getMap().forEach(()=>{e=!0}),e||xu(n))return!0;let t=n;return typeof t.from==\"number\"&&typeof t.to==\"number\"}function Ry(n,e){let t=null,r=0,i=0;for(let s=0;s<n.childCount&&!(i>e.to);s+=1){let o=i+n.child(s).nodeSize;o>=e.from&&(t===null&&(t=i),r=o),i=o}return t===null?null:{from:t,to:r}}function Ny(n,e){if(n.steps.some(s=>!Ay(s)))return{type:\"full\"};let t=ln(n).map(({newRange:s})=>s);n.steps.forEach((s,o)=>{if(!xu(s))return;let l=n.mapping.slice(o);t.push({from:l.map(s.pos,-1),to:l.map(s.pos+1)})});let r=[];for(let s of t){let o=Ry(e,s);o&&r.push(o)}r.sort((s,o)=>s.from-o.from);let i=[];for(let s of r){let o=i[i.length-1];o&&s.from<=o.to?o.to=Math.max(o.to,s.to):i.push({...s})}return{type:\"ranges\",ranges:i}}function ku(n,e,t,r){return n.map(e,t,{onRemove:i=>{let s=i?.key;typeof s==\"string\"&&r.delete(s)}})}function Oy(n,e,t){var r,i;let s=(r=e.decorationSetsByExtension[n])!==null&&r!==void 0?r:_.empty,o=new Set((i=e.widgetKeysByExtension[n])!==null&&i!==void 0?i:[]);return{set:ku(s,t.mapping,t.doc,o),widgetKeys:o}}function Fd(n,e){let t=Object.values(e).flatMap(r=>r.find());return _.create(n,t)}function _d(n){let e=new Set;for(let t of Object.values(n))for(let r of t)e.add(r);return e}function Iy(n,e){var t;switch((t=e.update)!==null&&t!==void 0?t:\"document\"){case\"document\":if(e.createInRange)throw new Error(`[tiptap error]: Extension \"${n}\" provides createInRange() but does not use the \"changedRanges\" decoration update strategy.`);return;case\"changedRanges\":if(!e.createInRange)throw new Error(`[tiptap error]: Extension \"${n}\" uses the \"changedRanges\" decoration update strategy but does not provide createInRange().`);return;case\"manual\":if(e.createInRange)throw new Error(`[tiptap error]: Extension \"${n}\" uses the \"manual\" decoration update strategy, which is not compatible with createInRange(). createInRange() requires the \"changedRanges\" strategy.`);if(e.shouldUpdate)throw new Error(`[tiptap error]: Extension \"${n}\" cannot combine the \"manual\" decoration update strategy with shouldUpdate().`);return;default:throw new Error(`[tiptap error]: Extension \"${n}\" uses an unknown decoration update strategy. Expected \"document\", \"changedRanges\", or \"manual\".`)}}function Dy(n,e,t){return t?!0:n.update===\"manual\"?!1:n.shouldUpdate?n.shouldUpdate(e):e.tr.docChanged}var Ly=new Set;var Py=class{constructor(n){this.warnedWidgetKeys=new Set,this.warnedOutOfRangeExtensions=new Set,this.handleBeforeTransaction=({nextState:e})=>{let t=en.getState(e);t&&this.warnDuplicateWidgetKeys(t)},this.editor=n.editor,this.entries=this.resolveEntries(n.entries),this.entries.forEach(({name:e,spec:t})=>Iy(e,t)),this.plugin=this.entries.length>0?this.createPlugin():null,this.editor.on(\"beforeTransaction\",this.handleBeforeTransaction)}destroy(){this.editor.off(\"beforeTransaction\",this.handleBeforeTransaction)}liveWidgetKeys(){var n,e;return(n=(e=en.getState(this.editor.state))===null||e===void 0?void 0:e.widgetKeys)!==null&&n!==void 0?n:Ly}get mountedView(){return this.editor.isDestroyed?null:this.editor.view}resolveEntries(n){let e=[];for(let{name:t,addDecorations:r}of n){let i=r();i&&e.push({name:t,spec:i})}return e}createPlugin(){let{editor:n,entries:e}=this;return new O({key:en,state:{init:(t,r)=>{let i={},s={};for(let{name:l,spec:a}of e){let{set:c,widgetKeys:d}=this.buildFullSet(l,a,r);i[l]=c,s[l]=d}let o={decorationSetsByExtension:i,widgetKeysByExtension:s,mergedDecorationSet:this.buildMergedSet(r.doc,i),widgetKeys:_d(s)};return this.warnDuplicateWidgetKeys(o),o},apply:(t,r,i,s)=>{let o=t.getMeta(en),l=o?.type===\"force\"&&!o.name,a=o?.type===\"force\"?o.name:void 0,c={},d={},u=new Set;return Sy(n,()=>{for(let{name:f,spec:h}of e){let p=l||a===f;if(Dy(h,{editor:n,tr:t,oldState:i,newState:s},p))if(h.update===\"changedRanges\"&&t.docChanged&&!p){let m=this.applyChangedRangesRecompute(f,h,r,t,s);c[f]=m.set,d[f]=m.widgetKeys,u.add(f)}else{let{set:m,widgetKeys:g}=this.buildFullSet(f,h,s);c[f]=m,d[f]=g,u.add(f)}else{let m=Oy(f,r,t);c[f]=m.set,d[f]=m.widgetKeys}}}),u.size===0&&!t.docChanged?r:{decorationSetsByExtension:c,widgetKeysByExtension:d,mergedDecorationSet:this.mergeAfterApply({entries:e,previous:r,tr:t,decorationSetsByExtension:c,recomputedNames:u}),widgetKeys:_d(d)}}},props:{decorations(t){var r,i;return(r=(i=en.getState(t))===null||i===void 0?void 0:i.mergedDecorationSet)!==null&&r!==void 0?r:_.empty}}})}applyChangedRangesRecompute(n,e,t,r,i){let s=Ny(r,i.doc);return s.type===\"full\"?this.buildFullSet(n,e,i):this.rebuildRanges(n,e,t,r,i,s.ranges)}rebuildRanges(n,e,t,r,i,s){var o,l;let a=(o=t.decorationSetsByExtension[n])!==null&&o!==void 0?o:_.empty,c=new Set((l=t.widgetKeysByExtension[n])!==null&&l!==void 0?l:[]),d=ku(a,r.mapping,r.doc,c),u=i.doc.content.size;for(let{from:f,to:h}of s){let p=d.find(f,h).filter(y=>yu({position:y.from,from:f,to:h,docSize:u}));for(let y of p){let b=bu(y);b&&c.delete(b)}d=d.remove(p);let{decorations:m,widgetKeys:g}=gu(My({decorations:this.runCreate(n,\"createInRange\",()=>e.createInRange({editor:this.editor,state:i,view:this.mountedView,from:f,to:h})),from:f,to:h,docSize:u,extensionName:n,warnedExtensions:this.warnedOutOfRangeExtensions}),n);d=d.add(i.doc,m);for(let y of g)c.add(y)}return{set:d,widgetKeys:c}}buildFullSet(n,e,t){let r=this.runCreate(n,\"create\",()=>e.create({editor:this.editor,state:t,view:this.mountedView}));return Ey(t.doc,r,n)}runCreate(n,e,t){try{return t()}catch(r){return console.error(`[tiptap error]: Extension \"${n}\" threw in \\\\`addDecorations().${e}()\\\\`. Its decorations were dropped for this update.`,r),[]}}warnDuplicateWidgetKeys(n){if(!mu)return;if(n.widgetKeys.size===0){this.warnedWidgetKeys.clear();return}let e=Cy(n.mergedDecorationSet),t=new Set(e.map(({key:r})=>r));for(let{key:r,extensions:i}of e){if(this.warnedWidgetKeys.has(r))continue;let s=Array.from(i).map(o=>`\"${o}\"`).join(\", \");console.warn(`[tiptap warn]: Duplicate widget decoration key \"${r}\" in extension${i.size===1?\"\":\"s\"} ${s}. Widget decoration keys must be globally unique, otherwise ProseMirror misplaces the widget DOM. Use a stable, unique key (e.g. \\\\`comment-\\\\${id}\\\\`).`)}this.warnedWidgetKeys=t}buildMergedSet(n,e){let t=Object.keys(e);return t.length===1?e[t[0]]:Fd(n,e)}mergeAfterApply({entries:n,previous:e,tr:t,decorationSetsByExtension:r,recomputedNames:i}){return n.length===1?r[n[0].name]:i.size===0?e.mergedDecorationSet.map(t.mapping,t.doc):Fd(t.doc,r)}};function Su(n,e){let{selection:t}=n,{$from:r}=t;if(t instanceof M){let s=r.index();return r.parent.canReplaceWith(s,s+1,e)}let i=r.depth;for(;i>=0;){let s=r.index(i);if(r.node(i).contentMatchAt(s).matchType(e))return!0;i-=1}return!1}function By(n,e,t){let r=document.querySelector(`style[data-tiptap-style${t?`-${t}`:\"\"}]`);if(r!==null)return r;let i=document.createElement(\"style\");return e&&i.setAttribute(\"nonce\",e),i.setAttribute(`data-tiptap-style${t?`-${t}`:\"\"}`,\"\"),i.innerHTML=n,document.getElementsByTagName(\"head\")[0].appendChild(i),i}function cn(n,e){let t=n.getAttribute(\"style\");if(!t)return null;let r=t.split(\";\").map(s=>s.trim()).filter(Boolean),i=e.toLowerCase();for(let s=r.length-1;s>=0;s-=1){let o=r[s],l=o.indexOf(\":\");if(l!==-1&&o.slice(0,l).trim().toLowerCase()===i)return o.slice(l+1).trim()}return null}function zy(n){return typeof n==\"number\"}function Hy(n){return Object.prototype.toString.call(n).slice(8,-1)}function ei(n){return Hy(n)!==\"Object\"?!1:n.constructor===Object&&Object.getPrototypeOf(n)===Object.prototype}function dn(n){return typeof n==\"string\"&&n.trim().length>0&&!/[;{}]/.test(n)}function Xo(n,e,t){let r=n.split(`\\n`),i=[],s=\"\",o=0,l=e.baseIndentSize||2;for(;o<r.length;){let d=r[o],u=d.match(e.itemPattern);if(!u){if(i.length>0)break;if(d.trim()===\"\"){o+=1,s=`${s}${d}\\n`;continue}else return}let f=e.extractItemData(u),{indentLevel:h,mainContent:p}=f;s=`${s}${d}\\n`;let m=[p];for(o+=1;o<r.length;){var a;let w=r[o];if(w.trim()===\"\"){var c;let k=r.slice(o+1).findIndex(N=>N.trim()!==\"\");if(k===-1)break;if((((c=r[o+1+k].match(/^(\\\\s*)/))===null||c===void 0||(c=c[1])===null||c===void 0?void 0:c.length)||0)>h){m.push(w),s=`${s}${w}\\n`,o+=1;continue}else break}if((((a=w.match(/^(\\\\s*)/))===null||a===void 0||(a=a[1])===null||a===void 0?void 0:a.length)||0)>h)m.push(w),s=`${s}${w}\\n`,o+=1;else break}let g,y=m.slice(1);if(y.length>0){let w=y.map(k=>k.slice(h+l)).join(`\\n`);w.trim()&&(e.customNestedParser?g=e.customNestedParser(w):g=t.blockTokens(w))}let b=e.createToken(f,g);i.push(b)}if(i.length!==0)return{items:i,raw:s}}var Vd=4;function jd(n){let e=0;for(let t of n)e=t===\"\\t\"?e+Vd-e%Vd:e+1;return e}function Go(n,e,t,r,i){if(!n||!Array.isArray(n.content))return\"\";let s=typeof t==\"function\"?t(r):t,[o,...l]=n.content,a=`${s}${e.renderChildren([o])}`;return l&&l.length>0&&l.forEach((c,d)=>{var u,f;let h=(u=(f=e.renderChild)===null||f===void 0?void 0:f.call(e,c,d+1))!==null&&u!==void 0?u:e.renderChildren([c]);if(h!=null){let p=g=>{if(!i?.alignNestedToPrefix)return e.indent(g);let y=e.indent(\"\"),b=jd(s);return(jd(y)>=b?y:\" \".repeat(b))+g},m=h.split(`\\n`).map(g=>p(g||\"\")).join(`\\n`);a+=c.type===\"paragraph\"?`\\n\\n${m}`:`\\n${m}`}}),a}function wu(n,e){let t={...n};return ei(n)&&ei(e)&&Object.keys(e).forEach(r=>{ei(e[r])&&ei(n[r])?t[r]=wu(n[r],e[r]):t[r]=e[r]}),t}function $y(n,e,t={}){let{state:r}=e,{doc:i,tr:s}=r,o=n;i.descendants((l,a)=>{let c=s.mapping.map(a),d=s.mapping.map(a)+l.nodeSize,u=null;if(l.marks.forEach(h=>{if(h!==o)return!1;u=h}),!u)return;let f=!1;if(Object.keys(t).forEach(h=>{t[h]!==u.attrs[h]&&(f=!0)}),f){let h=n.type.create({...n.attrs,...t});s.removeMark(c,d,n.type),s.addMark(c,d,h)}}),s.docChanged&&e.view.dispatch(s)}var un=class{constructor(n){var e;this.find=n.find,this.handler=n.handler,this.undoable=(e=n.undoable)!==null&&e!==void 0?e:!0}},Fy=(n,e)=>{if(Vo(e))return e.exec(n);let t=e(n);if(!t)return null;let r=[t.text];return r.index=t.index,r.input=n,r.data=t.data,t.replaceWith&&(t.text.includes(t.replaceWith)||console.warn(\\'[tiptap warn]: \"inputRuleMatch.replaceWith\" must be part of \"inputRuleMatch.text\".\\'),r.push(t.replaceWith)),r};function _y(n){let{editor:e,from:t,to:r,text:i,insertText:s}=n;if(!s)return{inputTransaction:null,tr:e.view.state.tr};let o=e.view.state.tr.insertText(i,t,r);return{inputTransaction:o,tr:kt.create({doc:o.doc,selection:o.selection,storedMarks:o.storedMarks}).tr}}function Vy(n){let{editor:e,from:t,to:r,text:i,rule:s,match:o,plugin:l,insertText:a}=n,{view:c}=e,{inputTransaction:d,tr:u}=_y({editor:e,from:t,to:r,text:i,insertText:a}),f=d?t+i.length:r,h=si({state:c.state,transaction:u}),p={from:t-(o[0].length-i.length),to:f},{commands:m,chain:g,can:y}=new nn({editor:e,state:h});return s.handler({state:h,range:p,match:o,commands:m,chain:g,can:y})===null||!u.steps.length?!1:(d&&(c.dispatch(d),!c.state.doc.eq(d.doc))||(Ed(u),u.setMeta(\"inputRule\",!0),s.undoable&&u.setMeta(l,{transform:u,from:t,to:f,text:i}),c.dispatch(u)),!0)}function jy(n,e,t){let r=e[0].length-t.length;if(r<=0)return!0;let i=n.parentOffset-r;return i>=0&&n.parent.textBetween(i,n.parentOffset)===e[0].slice(0,r)}function ti(n){var e;let{editor:t,from:r,to:i,text:s,rules:o,plugin:l,insertText:a}=n,{view:c}=t;if(c.composing)return!1;let d=c.state.doc.resolve(r);if(d.parent.type.spec.code||!((e=d.nodeBefore||d.nodeAfter)===null||e===void 0)&&e.marks.find(f=>f.type.spec.code))return!1;let u=qg(d)+s;for(let f of o){let h=Fy(u,f.find);if(!(!h||!jy(d,h,s))&&Vy({editor:t,from:r,to:i,text:s,rule:f,match:h,plugin:l,insertText:a}))return!0}return!1}function Wy(n){let{editor:e,rules:t}=n,r=new O({state:{init(){return null},apply(i,s,o){let l=i.getMeta(r);if(l)return l;let a=i.getMeta(\"applyInputRules\");return a&&setTimeout(()=>{let{text:c}=a;typeof c==\"string\"?c=c:c=Ko(x.from(c),o.schema);let{from:d}=a,u=d+c.length;ti({editor:e,from:d,to:u,text:c,rules:t,plugin:r})}),i.selectionSet||i.docChanged?null:s}},props:{handleTextInput(i,s,o,l){return ti({editor:e,from:s,to:o,text:l,rules:t,plugin:r,insertText:!0})},handleDOMEvents:{compositionend:i=>(setTimeout(()=>{let{$cursor:s}=i.state.selection;s&&ti({editor:e,from:s.pos,to:s.pos,text:\"\",rules:t,plugin:r})}),!1)},handleKeyDown(i,s){if(s.key!==\"Enter\")return!1;let{$cursor:o}=i.state.selection;return o?ti({editor:e,from:o.pos,to:o.pos,text:`\\n`,rules:t,plugin:r}):!1}},isInputRules:!0});return r}var Yo=class{constructor(n={}){this.type=\"extendable\",this.parent=null,this.child=null,this.name=\"\",this.config={name:this.name},this.config={...this.config,...n},this.name=this.config.name}get options(){return{...B(E(this,\"addOptions\",{name:this.name}))}}get storage(){return{...B(E(this,\"addStorage\",{name:this.name,options:this.options}))}}configure(n={}){let e=this.extend({...this.config,addOptions:()=>wu(this.options,n)});return e.name=this.name,e.parent=this.parent,this.child=null,e}extend(n={}){let e=new this.constructor({...this.config,...n});return e.parent=this,this.child=e,e.name=\"name\"in n?n.name:e.parent.name,e}},W=class vu extends Yo{constructor(...e){super(...e),this.type=\"mark\"}static create(e={}){let t=typeof e==\"function\"?e():e;return new vu(t)}static handleExit({editor:e,mark:t}){let{tr:r}=e.state,i=e.state.selection.$from;if(i.pos===i.end()){let s=i.marks();if(!s.find(l=>l?.type.name===t.name))return!1;let o=s.find(l=>l?.type.name===t.name);return o&&r.removeStoredMark(o),r.insertText(\" \",i.pos),e.view.dispatch(r),!0}return!1}configure(e){return super.configure(e)}extend(e){let t=typeof e==\"function\"?e():e;return super.extend(t)}},Qo=class{constructor(n){this.find=n.find,this.handler=n.handler}},Uy=(n,e,t)=>{if(Vo(e))return[...n.matchAll(e)];let r=e(n,t);return r?r.map(i=>{let s=[i.text];return s.index=i.index,s.input=n,s.data=i.data,i.replaceWith&&(i.text.includes(i.replaceWith)||console.warn(\\'[tiptap warn]: \"pasteRuleMatch.replaceWith\" must be part of \"pasteRuleMatch.text\".\\'),s.push(i.replaceWith)),s}):[]};function Ky(n){let{editor:e,state:t,from:r,to:i,rule:s,pasteEvent:o,dropEvent:l}=n,{commands:a,chain:c,can:d}=new nn({editor:e,state:t}),u=[];return t.doc.nodesBetween(r,i,(f,h)=>{var p,m,g,y;if(!((p=f.type)===null||p===void 0||(p=p.spec)===null||p===void 0)&&p.code||!(f.isText||f.isTextblock||f.isInline))return;let b=(m=(g=(y=f.content)===null||y===void 0?void 0:y.size)!==null&&g!==void 0?g:f.nodeSize)!==null&&m!==void 0?m:0,w=Math.max(r,h),k=Math.min(i,h+b);if(w>=k)return;let N=f.isText?f.text||\"\":f.textBetween(w-h,k-h,void 0,\"\\\\uFFFC\");Uy(N,s.find,o).forEach($=>{if($.index===void 0)return;let A=w+$.index+1,z=A+$[0].length,F={from:t.tr.mapping.map(A),to:t.tr.mapping.map(z)},Q=s.handler({state:t,range:F,match:$,commands:a,chain:c,can:d,pasteEvent:o,dropEvent:l});u.push(Q)})}),u.every(f=>f!==null)}var Zt=null,qy=n=>{var e;let t=new ClipboardEvent(\"paste\",{clipboardData:new DataTransfer});return(e=t.clipboardData)===null||e===void 0||e.setData(\"text/html\",n),t};function Jy(n){let{editor:e,rules:t}=n,r=null,i=!1,s=!1,o=typeof ClipboardEvent<\"u\"?new ClipboardEvent(\"paste\"):null,l;try{l=typeof DragEvent<\"u\"?new DragEvent(\"drop\"):null}catch{l=null}let a=({state:c,from:d,to:u,rule:f,pasteEvt:h})=>{let p=c.tr,m=si({state:c,transaction:p});if(!(!Ky({editor:e,state:m,from:Math.max(d-1,0),to:u.b-1,rule:f,pasteEvent:h,dropEvent:l})||!p.steps.length)){try{l=typeof DragEvent<\"u\"?new DragEvent(\"drop\"):null}catch{l=null}return o=typeof ClipboardEvent<\"u\"?new ClipboardEvent(\"paste\"):null,p}};return e.on(\"destroy\",()=>{Zt===e&&(Zt=null)}),t.map(c=>new O({view(d){let u=h=>{var p;r=!((p=d.dom.parentElement)===null||p===void 0)&&p.contains(h.target)?d.dom.parentElement:null,r&&(Zt=e)},f=()=>{Zt&&(Zt=null)};return window.addEventListener(\"dragstart\",u),window.addEventListener(\"dragend\",f),{destroy(){window.removeEventListener(\"dragstart\",u),window.removeEventListener(\"dragend\",f)}}},props:{handleDOMEvents:{drop:(d,u)=>{if(s=r===d.dom.parentElement,l=u,!s){let f=Zt;f?.isEditable&&setTimeout(()=>{if(f.isDestroyed)return;let h=f.state.selection;h&&f.commands.deleteRange({from:h.from,to:h.to})},10)}return!1},paste:(d,u)=>{var f;let h=(f=u.clipboardData)===null||f===void 0?void 0:f.getData(\"text/html\");return o=u,i=!!h?.includes(\"data-pm-slice\"),!1}}},appendTransaction:(d,u,f)=>{let h=d[0],p=h.getMeta(\"uiEvent\")===\"paste\"&&!i,m=h.getMeta(\"uiEvent\")===\"drop\"&&!s,g=h.getMeta(\"applyPasteRules\"),y=!!g;if(!p&&!m&&!y)return;if(y){let{text:k}=g;typeof k==\"string\"?k=k:k=Ko(x.from(k),f.schema);let{from:N}=g,$=N+k.length,A=qy(k);return a({rule:c,state:f,from:N,to:{b:$},pasteEvt:A})}let b=u.doc.content.findDiffStart(f.doc.content),w=u.doc.content.findDiffEnd(f.doc.content);if(!(!zy(b)||!w||b===w.b))return a({rule:c,state:f,from:b,to:w,pasteEvt:o})}}))}var ci=class{constructor(n,e){this.splittableMarks=[],this.nonClearableMarks=[],this.decorationManager=null,this.editor=e,this.baseExtensions=n,this.extensions=qo(n),this.schema=iu(this.extensions,e),this.setupExtensions()}get commands(){return this.extensions.reduce((n,e)=>{let t=E(e,\"addCommands\",{name:e.name,options:e.options,storage:this.editor.extensionStorage[e.name],editor:this.editor,type:Qt(e.name,this.schema)});return t?{...n,...t()}:n},{})}get plugins(){let{editor:n}=this,e=_n([...this.extensions].reverse()).flatMap(r=>{let i={name:r.name,options:r.options,storage:this.editor.extensionStorage[r.name],editor:n,type:Qt(r.name,this.schema)},s=[],o=E(r,\"addKeyboardShortcuts\",i),l={};if(r.type===\"mark\"&&E(r,\"exitable\",i)&&(l.ArrowRight=()=>W.handleExit({editor:n,mark:r})),o){let f=Object.fromEntries(Object.entries(o()).map(([h,p])=>[h,()=>p({editor:n})]));l={...l,...f}}let a=Sd(l);s.push(a);let c=E(r,\"addInputRules\",i);if(zd(r,n.options.enableInputRules)&&c){let f=c();if(f&&f.length){let h=Wy({editor:n,rules:f}),p=Array.isArray(h)?h:[h];s.push(...p)}}let d=E(r,\"addPasteRules\",i);if(zd(r,n.options.enablePasteRules)&&d){let f=d();if(f&&f.length){let h=Jy({editor:n,rules:f});s.push(...h)}}let u=E(r,\"addProseMirrorPlugins\",i);if(u){let f=u();s.push(...f)}return s}),t=this.createDecorationPlugin();return t&&e.push(t),e}createDecorationPlugin(){var n;let{editor:e}=this;(n=this.decorationManager)===null||n===void 0||n.destroy();let t=[];return this.extensions.forEach(r=>{let i=E(r,\"addDecorations\",{name:r.name,options:r.options,storage:this.editor.extensionStorage[r.name],editor:e,type:Qt(r.name,this.schema)});i&&t.push({name:r.name,addDecorations:i})}),this.decorationManager=new Py({editor:e,entries:t}),this.decorationManager.plugin}get attributes(){return ru(this.extensions)}get nodeViews(){let{editor:n}=this,{nodeExtensions:e}=sn(this.extensions);return Object.fromEntries(e.filter(t=>!!E(t,\"addNodeView\")).map(t=>{let r=this.attributes.filter(l=>l.type===t.name),i=E(t,\"addNodeView\",{name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:n,type:X(t.name,this.schema)});if(!i)return[];let s=i();if(!s)return[];let o=(l,a,c,d,u)=>{let f=on(l,r);return s({node:l,view:a,getPos:c,decorations:d,innerDecorations:u,editor:n,extension:t,HTMLAttributes:f})};return[t.name,o]}))}dispatchTransaction(n){let{editor:e}=this;return _n([...this.extensions].reverse()).reduceRight((t,r)=>{let i={name:r.name,options:r.options,storage:this.editor.extensionStorage[r.name],editor:e,type:Qt(r.name,this.schema)},s=E(r,\"dispatchTransaction\",i);return s?o=>{s.call(i,{transaction:o,next:t})}:t},n)}transformPastedHTML(n){let{editor:e}=this;return _n([...this.extensions]).reduce((t,r)=>{let i={name:r.name,options:r.options,storage:this.editor.extensionStorage[r.name],editor:e,type:Qt(r.name,this.schema)},s=E(r,\"transformPastedHTML\",i);return s?(o,l)=>{let a=t(o,l);return s.call(i,a)}:t},n||(t=>t))}get markViews(){let{editor:n}=this,{markExtensions:e}=sn(this.extensions);return Object.fromEntries(e.filter(t=>!!E(t,\"addMarkView\")).map(t=>{let r=this.attributes.filter(o=>o.type===t.name),i=E(t,\"addMarkView\",{name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:n,type:Ge(t.name,this.schema)});if(!i)return[];let s=(o,l,a)=>{let c=on(o,r);return i()({mark:o,view:l,inline:a,editor:n,extension:t,HTMLAttributes:c,updateAttributes:d=>{$y(o,n,d)}})};return[t.name,s]}))}destroy(){var n;(n=this.decorationManager)===null||n===void 0||n.destroy(),this.extensions.forEach(e=>{let t=e;for(;t.parent;){let r=t.parent;r.child===t&&(r.child=null),t=r}}),this.extensions=[],this.baseExtensions=[],this.decorationManager=null,this.schema=null,this.editor=null}setupExtensions(){let n=this.extensions;this.editor.extensionStorage=Object.fromEntries(n.map(e=>[e.name,e.storage])),n.forEach(e=>{let t={name:e.name,options:e.options,storage:this.editor.extensionStorage[e.name],editor:this.editor,type:Qt(e.name,this.schema)};if(e.type===\"mark\"){var r,i;(!((r=B(E(e,\"keepOnSplit\",t)))!==null&&r!==void 0)||r)&&this.splittableMarks.push(e.name),!((i=B(E(e,\"clearable\",t)))!==null&&i!==void 0)||i||this.nonClearableMarks.push(e.name)}let s=E(e,\"onBeforeCreate\",t),o=E(e,\"onCreate\",t),l=E(e,\"onUpdate\",t),a=E(e,\"onSelectionUpdate\",t),c=E(e,\"onTransaction\",t),d=E(e,\"onFocus\",t),u=E(e,\"onBlur\",t),f=E(e,\"onDestroy\",t);s&&this.editor.on(\"beforeCreate\",s),o&&this.editor.on(\"create\",o),l&&this.editor.on(\"update\",l),a&&this.editor.on(\"selectionUpdate\",a),c&&this.editor.on(\"transaction\",c),d&&this.editor.on(\"focus\",d),u&&this.editor.on(\"blur\",u),f&&this.editor.on(\"destroy\",f)})}};ci.resolve=qo;ci.sort=_n;ci.flatten=Uo;var D=class Tu extends Yo{constructor(...e){super(...e),this.type=\"extension\"}static create(e={}){let t=typeof e==\"function\"?e():e;return new Tu(t)}configure(e){return super.configure(e)}extend(e){let t=typeof e==\"function\"?e():e;return super.extend(t)}},Xy=D.create({name:\"clipboardTextSerializer\",addOptions(){return{blockSeparator:void 0}},addProseMirrorPlugins(){return[new O({key:new H(\"clipboardTextSerializer\"),props:{clipboardTextSerializer:()=>{let{editor:n}=this,{state:e,schema:t}=n,{doc:r,selection:i}=e,s=lu(t),{blockSeparator:o}=this.options,l={...o!==void 0?{blockSeparator:o}:{},textSerializers:s};return[...i.ranges].sort((a,c)=>a.$from.pos-c.$from.pos).map(({$from:a,$to:c})=>ou(r,{from:a.pos,to:c.pos},l)).join(o??`\\n\\n`)}}})]}}),Gy=D.create({name:\"commands\",addCommands(){return{...ky}}}),Yy=D.create({name:\"delete\",onUpdate({transaction:n,appendedTransactions:e}){var t,r;let i=()=>{var s,o,l;if((s=(o=this.editor.options.coreExtensionOptions)===null||o===void 0||(o=o.delete)===null||o===void 0||(l=o.filterTransaction)===null||l===void 0?void 0:l.call(o,n))!==null&&s!==void 0?s:n.getMeta(\"y-sync$\"))return;let a=Wo(n.before,[n,...e]);ln(a).forEach(d=>{a.mapping.mapResult(d.oldRange.from).deletedAfter&&a.mapping.mapResult(d.oldRange.to).deletedBefore&&a.before.nodesBetween(d.oldRange.from,d.oldRange.to,(u,f)=>{let h=f+u.nodeSize-2,p=d.oldRange.from<=f&&h<=d.oldRange.to;this.editor.emit(\"delete\",{type:\"node\",node:u,from:f,to:h,newFrom:a.mapping.map(f),newTo:a.mapping.map(h),deletedRange:d.oldRange,newRange:d.newRange,partial:!p,editor:this.editor,transaction:n,combinedTransform:a})})});let c=a.mapping;a.steps.forEach((d,u)=>{if(d instanceof Ve){var f,h;let p=c.slice(u).map(d.from,-1),m=c.slice(u).map(d.to),g=c.invert().map(p,-1),y=c.invert().map(m),b=p>0?(f=a.doc.nodeAt(p-1))===null||f===void 0?void 0:f.marks.some(k=>k.eq(d.mark)):!1,w=(h=a.doc.nodeAt(m))===null||h===void 0?void 0:h.marks.some(k=>k.eq(d.mark));this.editor.emit(\"delete\",{type:\"mark\",mark:d.mark,from:d.from,to:d.to,deletedRange:{from:g,to:y},newRange:{from:p,to:m},partial:!!(w||b),editor:this.editor,transaction:n,combinedTransform:a})}})};!((t=(r=this.editor.options.coreExtensionOptions)===null||r===void 0||(r=r.delete)===null||r===void 0?void 0:r.async)!==null&&t!==void 0)||t?setTimeout(i,0):i()}}),Qy=D.create({name:\"drop\",addProseMirrorPlugins(){return[new O({key:new H(\"tiptapDrop\"),props:{handleDrop:(n,e,t,r)=>{this.editor.emit(\"drop\",{editor:this.editor,event:e,slice:t,moved:r})}}})]}}),Zy=D.create({name:\"editable\",addProseMirrorPlugins(){return[new O({key:new H(\"editable\"),props:{editable:()=>this.editor.options.editable}})]}}),eb=new H(\"focusEvents\"),tb=D.create({name:\"focusEvents\",addProseMirrorPlugins(){let{editor:n}=this;return[new O({key:eb,props:{handleDOMEvents:{focus:(e,t)=>{n.isFocused=!0;let r=n.state.tr.setMeta(\"focus\",{event:t}).setMeta(\"addToHistory\",!1);return e.dispatch(r),!1},blur:(e,t)=>{n.isFocused=!1;let r=n.state.tr.setMeta(\"blur\",{event:t}).setMeta(\"addToHistory\",!1);return e.dispatch(r),!1}}}})]}}),nb=D.create({name:\"keymap\",addKeyboardShortcuts(){let n=()=>this.editor.commands.first(({commands:o})=>[()=>o.undoInputRule(),()=>o.command(({tr:l})=>{let{selection:a,doc:c}=l,{empty:d,$anchor:u}=a,{pos:f,parent:h}=u,p=u.parent.isTextblock&&f>0?l.doc.resolve(f-1):u,m=p.parent.type.spec.isolating,g=u.pos-u.parentOffset,y=m&&p.parent.childCount===1?g===u.pos:R.atStart(c).from===f;return!d||!h.type.isTextblock||h.textContent.length||!y||y&&u.parent.type.name===\"paragraph\"?!1:o.clearNodes()}),()=>o.deleteSelection(),()=>o.joinBackward(),()=>o.selectNodeBackward()]),e=()=>this.editor.commands.first(({commands:o})=>[()=>o.deleteSelection(),()=>o.deleteCurrentNode(),()=>o.joinForward(),()=>o.selectNodeForward()]),r={Enter:()=>this.editor.commands.first(({commands:o})=>[()=>o.newlineInCode(),()=>o.createParagraphNear(),()=>o.liftEmptyBlock(),()=>o.splitBlock()]),\"Mod-Enter\":()=>this.editor.commands.exitCode(),Backspace:n,\"Mod-Backspace\":n,\"Shift-Backspace\":n,Delete:e,\"Mod-Delete\":e,\"Mod-a\":()=>this.editor.commands.selectAll()},i={...r},s={...r,\"Ctrl-h\":n,\"Alt-Backspace\":n,\"Ctrl-d\":e,\"Ctrl-Alt-Backspace\":e,\"Alt-Delete\":e,\"Alt-d\":e,\"Ctrl-a\":()=>this.editor.commands.selectTextblockStart(),\"Ctrl-e\":()=>this.editor.commands.selectTextblockEnd()};return ii()||eu()?s:i},addProseMirrorPlugins(){return[new O({key:new H(\"clearDocument\"),appendTransaction:(n,e,t)=>{if(n.some(h=>h.getMeta(\"composition\")))return;let r=n.some(h=>h.docChanged)&&!e.doc.eq(t.doc),i=n.some(h=>h.getMeta(\"preventClearDocument\"));if(!r||i)return;let{empty:s,from:o,to:l}=e.selection,a=R.atStart(e.doc).from,c=R.atEnd(e.doc).to;if(s||!(o===a&&l===c)||!an(t.doc))return;let d=t.tr,u=si({state:t,transaction:d}),{commands:f}=new nn({editor:this.editor,state:u});if(f.clearNodes(),!!d.steps.length)return d}})]}}),rb=D.create({name:\"paste\",addProseMirrorPlugins(){return[new O({key:new H(\"tiptapPaste\"),props:{handlePaste:(n,e,t)=>{this.editor.emit(\"paste\",{editor:this.editor,event:e,slice:t})}}})]}}),ib=D.create({name:\"tabindex\",addOptions(){return{value:void 0}},addProseMirrorPlugins(){return[new O({key:new H(\"tabindex\"),props:{attributes:()=>{var n;return!this.editor.isEditable&&this.options.value===void 0?{}:{tabindex:(n=this.options.value)!==null&&n!==void 0?n:\"0\"}}}})]}}),sb=D.create({name:\"textDirection\",addOptions(){return{direction:void 0}},addGlobalAttributes(){if(!this.options.direction)return[];let{nodeExtensions:n}=sn(this.extensions);return[{types:n.filter(e=>e.name!==\"text\").map(e=>e.name),attributes:{dir:{default:this.options.direction,parseHTML:e=>{let t=e.getAttribute(\"dir\");return t&&(t===\"ltr\"||t===\"rtl\"||t===\"auto\")?t:this.options.direction},renderHTML:e=>e.dir?{dir:e.dir}:{}}}}]},addProseMirrorPlugins(){return[new O({key:new H(\"textDirection\"),props:{attributes:()=>{let n=this.options.direction;return n?{dir:n}:{}}}})]}});var Wd=!1;function ob(n){if(Wd)return;Wd=!0;let e;try{e=K.fromJSON(n,{from:0,to:0}).slice.content}catch{return}e instanceof x||console.warn(\"[tiptap warn]: prosemirror-model is loaded more than once. Wrapping and splitting nodes will fail. Deduplicate it in your lock file, or alias it to a single copy in your bundler.\")}var lb=class Fn{get name(){return this.node.type.name}constructor(e,t,r=!1,i=null){this.currentNode=null,this.actualDepth=null,this.isBlock=r,this.resolvedPos=e,this.editor=t,this.currentNode=i}get node(){return this.currentNode||this.resolvedPos.node()}get element(){return this.editor.view.domAtPos(this.pos).node}get depth(){var e;return(e=this.actualDepth)!==null&&e!==void 0?e:this.resolvedPos.depth}get pos(){return this.resolvedPos.pos}get content(){return this.node.content}set content(e){let t=this.from,r=this.to;if(this.isBlock){if(this.content.size===0){console.error(`You can\\\\u2019t set content on a block node. Tried to set content on ${this.name} at ${this.pos}`);return}t=this.from+1,r=this.to-1}this.editor.commands.insertContentAt({from:t,to:r},e)}get attributes(){return this.node.attrs}get textContent(){return this.node.textContent}get size(){return this.node.nodeSize}get from(){return this.isBlock?this.pos:this.resolvedPos.start(this.resolvedPos.depth)}get range(){return{from:this.from,to:this.to}}get to(){return this.isBlock?this.pos+this.size:this.resolvedPos.end(this.resolvedPos.depth)+(this.node.isText?0:1)}get parent(){if(this.depth===0)return null;let e=this.resolvedPos.start(this.resolvedPos.depth-1),t=this.resolvedPos.doc.resolve(e);return new Fn(t,this.editor)}get before(){let e=this.resolvedPos.doc.resolve(this.from-(this.isBlock?1:2));return e.depth!==this.depth&&(e=this.resolvedPos.doc.resolve(this.from-3)),new Fn(e,this.editor)}get after(){let e=this.resolvedPos.doc.resolve(this.to+(this.isBlock?2:1));return e.depth!==this.depth&&(e=this.resolvedPos.doc.resolve(this.to+3)),new Fn(e,this.editor)}get children(){let e=[];return this.node.content.forEach((t,r)=>{let i=t.isBlock&&!t.isTextblock,s=t.isAtom&&!t.isText,o=t.isInline,l=this.pos+r+(s?0:1);if(l<0||l>this.resolvedPos.doc.nodeSize-2)return;let a=this.resolvedPos.doc.resolve(l);if(!i&&!o&&a.depth<=this.depth)return;let c=new Fn(a,this.editor,i,i||o?t:null);i&&(c.actualDepth=this.depth+1),e.push(c)}),e}get firstChild(){return this.children[0]||null}get lastChild(){let e=this.children;return e[e.length-1]||null}closest(e,t={}){let r=null,i=this.parent;for(;i&&!r;){if(i.node.type.name===e)if(Object.keys(t).length>0){let s=i.node.attrs,o=Object.keys(t);for(let l=0;l<o.length;l+=1){let a=o[l];if(s[a]!==t[a])break}}else r=i;i=i.parent}return r}querySelector(e,t={}){return this.querySelectorAll(e,t,!0)[0]||null}querySelectorAll(e,t={},r=!1){let i=[];if(!this.children||this.children.length===0)return i;let s=Object.keys(t);return this.children.forEach(o=>{r&&i.length>0||(o.node.type.name===e&&s.every(l=>t[l]===o.node.attrs[l])&&i.push(o),!(r&&i.length>0)&&(i=i.concat(o.querySelectorAll(e,t,r))))}),i}setAttribute(e){let{tr:t}=this.editor.state;t.setNodeMarkup(this.from,void 0,{...this.node.attrs,...e}),this.editor.view.dispatch(t)}},ab=`.ProseMirror {\\n position: relative;\\n}\\n\\n.ProseMirror {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n white-space: break-spaces;\\n -webkit-font-variant-ligatures: none;\\n font-variant-ligatures: none;\\n font-feature-settings: \"liga\" 0; /* the above doesn\\'t seem to work in Edge */\\n}\\n\\n.ProseMirror [contenteditable=\"false\"] {\\n white-space: normal;\\n}\\n\\n.ProseMirror [contenteditable=\"false\"] [contenteditable=\"true\"] {\\n white-space: pre-wrap;\\n}\\n\\n.ProseMirror pre {\\n white-space: pre-wrap;\\n}\\n\\nimg.ProseMirror-separator {\\n display: inline !important;\\n border: none !important;\\n margin: 0 !important;\\n width: 0 !important;\\n height: 0 !important;\\n}\\n\\n.ProseMirror-gapcursor {\\n display: none;\\n pointer-events: none;\\n position: absolute;\\n margin: 0;\\n}\\n\\n.ProseMirror-gapcursor:after {\\n content: \"\";\\n display: block;\\n position: absolute;\\n top: -2px;\\n width: 20px;\\n border-top: 1px solid black;\\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\\n}\\n\\n@keyframes ProseMirror-cursor-blink {\\n to {\\n visibility: hidden;\\n }\\n}\\n\\n.ProseMirror-hideselection *::selection {\\n background: transparent;\\n}\\n\\n.ProseMirror-hideselection *::-moz-selection {\\n background: transparent;\\n}\\n\\n.ProseMirror-hideselection * {\\n caret-color: transparent;\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n display: block;\\n}`,Eu=class extends vy{constructor(n={}){super(),this.css=null,this.className=\"tiptap\",this.editorView=null,this.isFocused=!1,this.destroyed=!1,this.isInitialized=!1,this.extensionStorage={},this.instanceId=Math.random().toString(36).slice(2,9),this.hasWarnedStaleDecorationRead=!1,this.options={element:typeof document<\"u\"?document.createElement(\"div\"):null,content:\"\",injectCSS:!0,injectNonce:void 0,extensions:[],autofocus:!1,editable:!0,textDirection:void 0,editorProps:{},parseOptions:{},coreExtensionOptions:{},enableInputRules:!0,enablePasteRules:!0,enableCoreExtensions:!0,enableContentCheck:!1,emitContentError:!1,onBeforeCreate:()=>null,onCreate:()=>null,onMount:()=>null,onUnmount:()=>null,onUpdate:()=>null,onSelectionUpdate:()=>null,onTransaction:()=>null,onFocus:()=>null,onBlur:()=>null,onDestroy:()=>null,onContentError:({error:t})=>{throw t},onPaste:()=>null,onDrop:()=>null,onDelete:()=>null,enableExtensionDispatchTransaction:!0},this.isCapturingTransaction=!1,this.capturedTransaction=null,this.utils={getUpdatedPosition:Xg,createMappablePosition:Gg},this.setOptions(n),this.createExtensionManager(),this.createCommandManager(),this.createSchema(),this.on(\"beforeCreate\",this.options.onBeforeCreate),this.emit(\"beforeCreate\",{editor:this}),this.on(\"mount\",this.options.onMount),this.on(\"unmount\",this.options.onUnmount),this.on(\"contentError\",this.options.onContentError),this.on(\"create\",this.options.onCreate),this.on(\"update\",this.options.onUpdate),this.on(\"selectionUpdate\",this.options.onSelectionUpdate),this.on(\"transaction\",this.options.onTransaction),this.on(\"focus\",this.options.onFocus),this.on(\"blur\",this.options.onBlur),this.on(\"destroy\",this.options.onDestroy),this.on(\"drop\",({event:t,slice:r,moved:i})=>this.options.onDrop(t,r,i)),this.on(\"paste\",({event:t,slice:r})=>this.options.onPaste(t,r)),this.on(\"delete\",this.options.onDelete);let e=this.createDoc();if(!this.editorState){let t=Ho(e,this.options.autofocus);this.editorState=kt.create({doc:e,schema:this.schema,selection:t||void 0})}ob(this.schema),this.options.element&&this.mount(this.options.element)}mount(n){if(typeof document>\"u\")throw new Error(\"[tiptap error]: The editor cannot be mounted because there is no \\'document\\' defined in this environment.\");this.createView(n),this.emit(\"mount\",{editor:this}),this.css&&!document.head.contains(this.css)&&document.head.appendChild(this.css),window.setTimeout(()=>{this.isDestroyed||(this.options.autofocus!==!1&&this.options.autofocus!==null&&this.commands.focus(this.options.autofocus),this.emit(\"create\",{editor:this}),this.isInitialized=!0)},0)}unmount(){if(this.editorView){this.editorState=this.editorView.state;let n=this.editorView.dom;n?.editor&&delete n.editor,this.editorView.destroy()}if(this.editorView=null,this.isInitialized=!1,this.css&&!document.querySelectorAll(`.${this.className}`).length)try{typeof this.css.remove==\"function\"?this.css.remove():this.css.parentNode&&this.css.parentNode.removeChild(this.css)}catch(n){console.warn(\"Failed to remove CSS element:\",n)}this.css=null,this.emit(\"unmount\",{editor:this})}get storage(){return this.extensionStorage}get commands(){return this.commandManager.commands}chain(){return this.commandManager?this.commandManager.chain():nn.createFakeChain()}can(){return this.commandManager?this.commandManager.can():nn.createFallbackCan()}injectCSS(){this.options.injectCSS&&typeof document<\"u\"&&(this.css=By(ab,this.options.injectNonce))}setOptions(n={}){this.options={...this.options,...n},!(!this.editorView||!this.state||this.isDestroyed)&&(this.options.editorProps&&this.view.setProps({...this.options.editorProps,attributes:this.getEditorViewAttributes()}),this.view.updateState(this.state))}setEditable(n,e=!0){this.setOptions({editable:n}),e&&this.emit(\"update\",{editor:this,transaction:this.state.tr,appendedTransactions:[]})}get isEditable(){return this.options.editable&&this.view&&this.view.editable}get view(){return this.editorView?this.editorView:new Proxy({state:this.editorState,updateState:n=>{this.editorState=n},dispatch:n=>{this.dispatchTransaction(n)},composing:!1,dragging:null,editable:!0,isDestroyed:!1},{get:(n,e)=>{if(this.editorView)return this.editorView[e];if(e===\"state\")return this.editorState;if(e in n)return Reflect.get(n,e);throw new Error(`[tiptap error]: The editor view is not available. Cannot access view[\\'${e}\\']. The editor may not be mounted yet.`)}})}get state(){return mu&&!this.hasWarnedStaleDecorationRead&&wy(this)&&(this.hasWarnedStaleDecorationRead=!0,console.warn(\"[tiptap warn]: `editor.state` was read while decoration `create()` was running. It returns the pre-transaction document. Use the `state` argument passed to `create()` instead. Helpers like `editor.isActive()` read `editor.state` too, so pass `state` to their standalone versions instead of calling them on the editor.\")),this.editorView&&(this.editorState=this.view.state),this.editorState}registerPlugin(n,e){let t=Fo(e)?e(n,[...this.state.plugins]):[...this.state.plugins,n],r=this.state.reconfigure({plugins:t});return this.view.updateState(r),r}unregisterPlugin(n){if(this.isDestroyed)return;let e=this.state.plugins,t=e;if([].concat(n).forEach(i=>{let s=typeof i==\"string\"?`${i}$`:i.key;t=t.filter(o=>!o.key.startsWith(s))}),e.length===t.length)return;let r=this.state.reconfigure({plugins:t});return this.view.updateState(r),r}createExtensionManager(){var n,e;let t=[...this.options.enableCoreExtensions?[Zy,Xy.configure({blockSeparator:(n=this.options.coreExtensionOptions)===null||n===void 0||(n=n.clipboardTextSerializer)===null||n===void 0?void 0:n.blockSeparator}),Gy,tb,nb,ib.configure({value:(e=this.options.coreExtensionOptions)===null||e===void 0||(e=e.tabindex)===null||e===void 0?void 0:e.value}),Qy,rb,Yy,sb.configure({direction:this.options.textDirection})].filter(r=>typeof this.options.enableCoreExtensions==\"object\"?this.options.enableCoreExtensions[r.name]!==!1:!0):[],...this.options.extensions].filter(r=>[\"extension\",\"node\",\"mark\"].includes(r?.type));this.extensionManager=new ci(t,this)}createCommandManager(){this.commandManager=new nn({editor:this})}createSchema(){this.schema=this.extensionManager.schema}createDoc(){let n;try{n=$o(this.options.content,this.schema,this.options.parseOptions,{errorOnInvalidContent:this.options.enableContentCheck})}catch(e){if(!(e instanceof Error)||![\"[tiptap error]: Invalid JSON content\",\"[tiptap error]: Invalid HTML content\"].includes(e.message))throw e;let t=$o(this.options.content,this.schema,this.options.parseOptions,{errorOnInvalidContent:!1});return this.editorState=kt.create({doc:t,schema:this.schema,selection:Ho(t,this.options.autofocus)||void 0}),this.emit(\"contentError\",{editor:this,error:e,disableCollaboration:()=>{\"collaboration\"in this.storage&&typeof this.storage.collaboration==\"object\"&&this.storage.collaboration&&(this.storage.collaboration.isDisabled=!0),this.options.extensions=this.options.extensions.filter(r=>r.name!==\"collaboration\"),this.createExtensionManager()}}),this.editorState.doc}return n}getEditorViewAttributes(){var n;let e=(n=this.options.editorProps)===null||n===void 0?void 0:n.attributes;return Fo(e)?t=>({role:\"textbox\",...e(t)}):{role:\"textbox\",...e}}createView(n){let{editorProps:e,enableExtensionDispatchTransaction:t}=this.options,r=e.dispatchTransaction||this.dispatchTransaction.bind(this),i=t?this.extensionManager.dispatchTransaction(r):r,s=e.transformPastedHTML,o=this.extensionManager.transformPastedHTML(s);this.editorView=new Bn(n,{...e,attributes:this.getEditorViewAttributes(),dispatchTransaction:i,transformPastedHTML:o,state:this.editorState,markViews:this.extensionManager.markViews,nodeViews:this.extensionManager.nodeViews});let l=this.state.reconfigure({plugins:this.extensionManager.plugins});this.view.updateState(l),this.prependClass(),this.injectCSS();let a=this.view.dom;a.editor=this}createNodeViews(){this.view.isDestroyed||this.view.setProps({markViews:this.extensionManager.markViews,nodeViews:this.extensionManager.nodeViews})}prependClass(){this.view.dom.className=`${this.className} ${this.view.dom.className}`}captureTransaction(n){this.isCapturingTransaction=!0,n(),this.isCapturingTransaction=!1;let e=this.capturedTransaction;return this.capturedTransaction=null,e}dispatchTransaction(n){if(this.view.isDestroyed)return;if(this.isCapturingTransaction){if(!this.capturedTransaction){this.capturedTransaction=n;return}n.steps.forEach(c=>{var d;return(d=this.capturedTransaction)===null||d===void 0?void 0:d.step(c)});return}let{state:e,transactions:t}=this.state.applyTransaction(n),r=!this.state.selection.eq(e.selection),i=t.includes(n),s=this.state;if(this.emit(\"beforeTransaction\",{editor:this,transaction:n,nextState:e}),!i)return;this.view.updateState(e),this.emit(\"transaction\",{editor:this,transaction:n,appendedTransactions:t.slice(1)}),r&&this.emit(\"selectionUpdate\",{editor:this,transaction:n});let o=t.findLast(c=>c.getMeta(\"focus\")||c.getMeta(\"blur\")),l=o?.getMeta(\"focus\"),a=o?.getMeta(\"blur\");l&&this.emit(\"focus\",{editor:this,event:l.event,transaction:o}),a&&this.emit(\"blur\",{editor:this,event:a.event,transaction:o}),!(n.getMeta(\"preventUpdate\")||!t.some(c=>c.docChanged)||s.doc.eq(e.doc))&&this.emit(\"update\",{editor:this,transaction:n,appendedTransactions:t.slice(1)})}getAttributes(n){return Jo(this.state,n)}isActive(n,e){let t=typeof n==\"string\"?n:null,r=typeof n==\"string\"?e:n;return Jg(this.state,t,r)}getJSON(){return this.state.doc.toJSON()}getHTML(){return Ko(this.state.doc.content,this.schema)}getText(n){let{blockSeparator:e=`\\n\\n`,textSerializers:t={}}=n||{};return jg(this.state.doc,{blockSeparator:e,textSerializers:{...lu(this.schema),...t}})}get isEmpty(){return an(this.state.doc)}destroy(){this.destroyed||(this.destroyed=!0,this.emit(\"destroy\"),this.unmount(),this.removeAllListeners(),this.extensionManager.destroy(),this.extensionManager=null,this.schema=null,this.commandManager=null,this.extensionStorage={})}get isDestroyed(){var n,e;return(n=(e=this.editorView)===null||e===void 0?void 0:e.isDestroyed)!==null&&n!==void 0?n:!0}$node(n,e){var t;return((t=this.$doc)===null||t===void 0?void 0:t.querySelector(n,e))||null}$nodes(n,e){var t;return((t=this.$doc)===null||t===void 0?void 0:t.querySelectorAll(n,e))||null}$pos(n){let e=this.state.doc.resolve(n),t=n>0&&e.nodeAfter&&!e.nodeAfter.isText&&e.nodeAfter.isAtom?e.nodeAfter:null;return new lb(e,this,!1,t)}get $doc(){return this.$pos(0)}};function ve(n){return new un({find:n.find,handler:({state:e,range:t,match:r})=>{let i=B(n.getAttributes,void 0,r);if(i===!1||i===null)return null;let{tr:s}=e,o=r[r.length-1],l=r[0];if(o){let a=l.search(/\\\\S/),c=t.from+l.indexOf(o),d=c+o.length;if(Vn(t.from,t.to,e.doc).filter(f=>f.mark.type.excluded.find(h=>h===n.type&&h!==f.mark.type)).filter(f=>f.to>c).length)return null;d<t.to&&s.delete(d,t.to),c>t.from&&s.delete(t.from+a,c);let u=t.from+a+o.length;s.addMark(t.from+a,u,n.type.create(i||{})),s.removeStoredMark(n.type)}},undoable:n.undoable})}function Mu(n){return new un({find:n.find,handler:({state:e,range:t,match:r})=>{let i=B(n.getAttributes,void 0,r)||{},{tr:s}=e,o=t.from,l=t.to,a=n.type.create(i);if(r[1]){let c=o+r[0].lastIndexOf(r[1]);c>l?c=l:l=c+r[1].length;let d=r[0][r[0].length-1];s.insertText(d,o+r[0].length-1),s.replaceWith(c,l,a)}else if(r[0]){let c=n.type.isInline?o:o-1;s.insert(c,n.type.create(i)).delete(s.mapping.map(o),s.mapping.map(l))}s.scrollIntoView()},undoable:n.undoable})}function jn(n){return new un({find:n.find,handler:({state:e,range:t,match:r})=>{let i=e.doc.resolve(t.from),s=B(n.getAttributes,void 0,r)||{};if(!i.node(-1).canReplaceWith(i.index(-1),i.indexAfter(-1),n.type))return null;e.tr.delete(t.from,t.to).setBlockType(t.from,t.from,n.type,s)},undoable:n.undoable})}function dt(n){return new un({find:n.find,handler:({state:e,range:t,match:r,chain:i})=>{let s=B(n.getAttributes,void 0,r)||{},o=e.tr.delete(t.from,t.to),l=o.doc.resolve(t.from).blockRange(),a=l&&jt(l,n.type,s);if(!a)return null;if(o.wrap(l,a),n.keepMarks&&n.editor){let{selection:d,storedMarks:u}=e,{splittableMarks:f}=n.editor.extensionManager,h=u||d.$to.parentOffset&&d.$from.marks();if(h){let p=h.filter(m=>f.includes(m.type.name));o.ensureMarks(p)}}if(n.keepAttributes){let d=n.type.name===\"bulletList\"||n.type.name===\"orderedList\"?\"listItem\":\"taskList\";i().updateAttributes(d,s).run()}let c=o.doc.resolve(t.from-1).nodeBefore;c&&c.type===n.type&&Re(o.doc,t.from-1)&&(!n.joinPredicate||n.joinPredicate(r,c))&&o.join(t.from-1)},undoable:n.undoable})}var j=class Cu extends Yo{constructor(...e){super(...e),this.type=\"node\"}static create(e={}){let t=typeof e==\"function\"?e():e;return new Cu(t)}configure(e){return super.configure(e)}extend(e){let t=typeof e==\"function\"?e():e;return super.extend(t)}};function ye(n){return new Qo({find:n.find,handler:({state:e,range:t,match:r,pasteEvent:i})=>{let s=B(n.getAttributes,void 0,r,i);if(s===!1||s===null)return null;let{tr:o}=e,l=r[r.length-1],a=r[0],c=t.to;if(l){let d=a.search(/\\\\S/),u=t.from+a.indexOf(l),f=u+l.length;if(Vn(t.from,t.to,e.doc).filter(h=>h.mark.type.excluded.find(p=>p===n.type&&p!==h.mark.type)).filter(h=>h.to>u).length)return null;f<t.to&&o.delete(f,t.to),u>t.from&&o.delete(t.from+d,u),c=t.from+d+l.length,o.addMark(t.from+d,c,n.type.create(s||{})),r.index!==void 0&&r.input!==void 0&&r.index+r[0].length>=r.input.length||o.removeStoredMark(n.type)}}})}function Dt(n){return n.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\")}var cb=20,Au=(n,e=0)=>{let t=[];return!n.children.length||e>cb||Array.from(n.children).forEach(r=>{r.tagName===\"SPAN\"?t.push(r):r.children.length&&t.push(...Au(r,e+1))}),t},db=n=>{if(!n.children.length)return;let e=Au(n);e&&e.forEach(t=>{var r;let i=t.getAttribute(\"style\"),s=(r=t.parentElement)===null||r===void 0||(r=r.closest(\"span\"))===null||r===void 0?void 0:r.getAttribute(\"style\");t.setAttribute(\"style\",`${s};${i}`)})},Zo=W.create({name:\"textStyle\",priority:101,addOptions(){return{HTMLAttributes:{},mergeNestedSpanStyles:!0}},parseHTML(){return[{tag:\"span\",consuming:!1,getAttrs:n=>n.hasAttribute(\"style\")?(this.options.mergeNestedSpanStyles&&db(n),{}):!1}]},renderHTML({HTMLAttributes:n}){return[\"span\",L(this.options.HTMLAttributes,n),0]},addCommands(){return{toggleTextStyle:n=>({commands:e})=>e.toggleMark(this.name,n),removeEmptyTextStyle:()=>({tr:n})=>{let{selection:e}=n;return n.doc.nodesBetween(e.from,e.to,(t,r)=>{if(!t.isInline)return!0;t.marks.filter(i=>i.type===this.type).some(i=>Object.values(i.attrs).some(s=>!!s))||n.removeMark(r,r+t.nodeSize,this.type)}),!0}}}}),ub=D.create({name:\"backgroundColor\",addOptions(){return{types:[\"textStyle\"]}},addGlobalAttributes(){return[{types:this.options.types,attributes:{backgroundColor:{default:null,parseHTML:n=>{var e;let t=(e=cn(n,\"background-color\"))!==null&&e!==void 0?e:n.style.backgroundColor;return t?.replace(/[\\'\"]+/g,\"\")},renderHTML:n=>dn(n.backgroundColor)?{style:`background-color: ${n.backgroundColor}`}:{}}}}]},addCommands(){return{setBackgroundColor:n=>({chain:e})=>e().setMark(\"textStyle\",{backgroundColor:n}).run(),unsetBackgroundColor:()=>({chain:n})=>n().setMark(\"textStyle\",{backgroundColor:null}).removeEmptyTextStyle().run()}}}),fb=D.create({name:\"color\",addOptions(){return{types:[\"textStyle\"]}},addGlobalAttributes(){return[{types:this.options.types,attributes:{color:{default:null,parseHTML:n=>{var e;let t=(e=cn(n,\"color\"))!==null&&e!==void 0?e:n.style.color;return t?.replace(/[\\'\"]+/g,\"\")},renderHTML:n=>dn(n.color)?{style:`color: ${n.color}`}:{}}}}]},addCommands(){return{setColor:n=>({chain:e})=>e().setMark(\"textStyle\",{color:n}).run(),unsetColor:()=>({chain:n})=>n().setMark(\"textStyle\",{color:null}).removeEmptyTextStyle().run()}}}),hb=D.create({name:\"fontFamily\",addOptions(){return{types:[\"textStyle\"]}},addGlobalAttributes(){return[{types:this.options.types,attributes:{fontFamily:{default:null,parseHTML:n=>{var e;return(e=cn(n,\"font-family\"))!==null&&e!==void 0?e:n.style.fontFamily},renderHTML:n=>dn(n.fontFamily)?{style:`font-family: ${n.fontFamily}`}:{}}}}]},addCommands(){return{setFontFamily:n=>({chain:e})=>e().setMark(\"textStyle\",{fontFamily:n}).run(),unsetFontFamily:()=>({chain:n})=>n().setMark(\"textStyle\",{fontFamily:null}).removeEmptyTextStyle().run()}}}),pb=D.create({name:\"fontSize\",addOptions(){return{types:[\"textStyle\"]}},addGlobalAttributes(){return[{types:this.options.types,attributes:{fontSize:{default:null,parseHTML:n=>{var e;return(e=cn(n,\"font-size\"))!==null&&e!==void 0?e:n.style.fontSize},renderHTML:n=>dn(n.fontSize)?{style:`font-size: ${n.fontSize}`}:{}}}}]},addCommands(){return{setFontSize:n=>({chain:e})=>e().setMark(\"textStyle\",{fontSize:n}).run(),unsetFontSize:()=>({chain:n})=>n().setMark(\"textStyle\",{fontSize:null}).removeEmptyTextStyle().run()}}}),mb=D.create({name:\"lineHeight\",addOptions(){return{types:[\"textStyle\"]}},addGlobalAttributes(){return[{types:this.options.types,attributes:{lineHeight:{default:null,parseHTML:n=>{var e;return(e=cn(n,\"line-height\"))!==null&&e!==void 0?e:n.style.lineHeight},renderHTML:n=>dn(n.lineHeight)?{style:`line-height: ${n.lineHeight}`}:{}}}}]},addCommands(){return{setLineHeight:n=>({chain:e})=>e().setMark(\"textStyle\",{lineHeight:n}).run(),unsetLineHeight:()=>({chain:n})=>n().setMark(\"textStyle\",{lineHeight:null}).removeEmptyTextStyle().run()}}}),Ru=D.create({name:\"textStyleKit\",addExtensions(){let n=[];return this.options.backgroundColor!==!1&&n.push(ub.configure(this.options.backgroundColor)),this.options.color!==!1&&n.push(fb.configure(this.options.color)),this.options.fontFamily!==!1&&n.push(hb.configure(this.options.fontFamily)),this.options.fontSize!==!1&&n.push(pb.configure(this.options.fontSize)),this.options.lineHeight!==!1&&n.push(mb.configure(this.options.lineHeight)),this.options.textStyle!==!1&&n.push(Zo.configure(this.options.textStyle)),n}});var ui=[\"bold\",\"italic\",\"underline\",\"strike\",\"link\"],re=\"data-editor-rich-origin\",ut=\"data-editor-rich-removed\",Nu={strong:\"bold\",b:\"bold\",em:\"italic\",i:\"italic\",u:\"underline\",s:\"strike\",a:\"link\"},gb={bold:{\"font-weight\":\"normal\"},italic:{\"font-style\":\"normal\"},underline:{},strike:{},link:{}},yb=[\"href\",\"target\",\"rel\",\"ping\",\"download\",\"hreflang\",\"referrerpolicy\",\"type\"],di=class{formatForTag(e){return e&&Object.hasOwn(Nu,e)?Nu[e]:void 0}isFormat(e){return typeof e==\"string\"&&ui.includes(e)}canRemove(e,t,r){return this.isFormat(r)&&t===\"span\"&&this.formatForTag(e)===r}resets(e){return{...gb[e]}}decorationFor(e){return e===\"underline\"?\"underline\":e===\"strike\"?\"line-through\":void 0}removedAttributes(e){return e===\"link\"?[...yb]:[]}};var fn=class{styleExtensions(){return[Ru.configure({textStyle:!1}),Zo.extend({priority:90,parseHTML(){return(this.parent?.()??[]).map(e=>({...e,priority:60}))}}).configure({mergeNestedSpanStyles:!1})]}markName(e){return`preserved${e.charAt(0).toUpperCase()}${e.slice(1)}Style`}markNames(){return ui.map(e=>this.markName(e))}extensions(){return ui.map(e=>W.create({name:this.markName(e),excludes:\"\",addAttributes:()=>({[ut]:{default:e,parseHTML:()=>e,renderHTML:()=>({[ut]:e})}}),parseHTML:()=>[{tag:`span[${re}][${ut}=\"${e}\"]`}],renderHTML:({HTMLAttributes:t})=>[\"span\",{...t,[ut]:e},0]}))}toggle(e,t,r=!0){if(!e.isEditable||e.isDestroyed)return!1;let i=e.isActive(t),s=r?e.chain().focus(void 0,{scrollIntoView:!1}):e.chain();return i&&(s=s.command(({tr:o})=>this.preserve(o,t))),s=s.toggleMark(t),i||(s=s.command(({tr:o})=>this.restore(o,t))),s.run()}removeLink(e,t=!0){return!e.isEditable||e.isDestroyed?!1:(t?e.chain().focus(void 0,{scrollIntoView:!1}):e.chain()).extendMarkRange(\"link\").command(({tr:r})=>this.preserve(r,\"link\")).unsetLink().run()}carried(e,t){let r=e.attrs.raw,i=t.spec.attrs;return r&&i&&\"raw\"in i?{raw:r}:{}}preserve(e,t){let r=e.doc.type.schema.marks[t],i=e.doc.type.schema.marks[this.markName(t)];if(!r||!i)return!1;let s=a=>{let c=a.find(u=>u.type===r),d=c?.attrs[re];return c&&typeof d==\"string\"&&d.length>0&&d.length<=200?i.create({[re]:d,...this.carried(c,i)}):void 0};if(e.selection.empty){let a=s(e.storedMarks??e.selection.$from.marks());return a&&e.addStoredMark(a),!0}let{from:o,to:l}=e.selection;return e.doc.nodesBetween(o,l,(a,c)=>{if(!a.isInline)return;let d=s(a.marks);d&&e.addMark(Math.max(o,c),Math.min(l,c+a.nodeSize),d)}),!0}restore(e,t){let r=e.doc.type.schema.marks[t],i=e.doc.type.schema.marks[this.markName(t)];if(!r||!i)return!1;let s=a=>{let c=a.find(f=>f.type===i),d=c?.attrs[re],u=a.find(f=>f.type===r);return u&&c&&typeof d==\"string\"&&d.length>0&&d.length<=200?r.create({...u.attrs,[re]:d,...this.carried(c,r)}):void 0};if(e.selection.empty){let a=s(e.storedMarks??e.selection.$from.marks());return a&&(e.addStoredMark(a),e.removeStoredMark(i)),!0}let{from:o,to:l}=e.selection;return e.doc.nodesBetween(o,l,(a,c)=>{if(!a.isInline)return;let d=s(a.marks);if(!d)return;let u=Math.max(o,c),f=Math.min(l,c+a.nodeSize);e.addMark(u,f,d),e.removeMark(u,f,i)}),!0}};var fi=class{constructor(e=new fn,t=!0){this.formatting=e;this.focus=t}formatting;focus;run(e,t,r=null,i){if(e.isDestroyed||!e.isEditable)return!1;let s=()=>{let l=e.chain();return i?l.setTextSelection(this.clamp(e,i)):l},o=()=>this.focus?e.chain().focus(void 0,{scrollIntoView:!1}):e.chain();switch(t){case\"bold\":case\"italic\":case\"underline\":case\"strike\":return this.formatting.toggle(e,t,this.focus);case\"superscript\":case\"subscript\":return o().toggleMark(t).run();case\"bulletList\":return!!e.schema.nodes.bulletList&&o().toggleBulletList().run();case\"orderedList\":return!!e.schema.nodes.orderedList&&o().toggleOrderedList().run();case\"color\":return r===null?s().unsetColor().run():s().setColor(r).run();case\"backgroundColor\":return r===null?s().unsetBackgroundColor().run():s().setBackgroundColor(r).run();case\"fontFamily\":return r===null?s().unsetFontFamily().run():s().setFontFamily(r).run();case\"fontSize\":return r===null?s().unsetFontSize().run():s().setFontSize(r).run();case\"lineHeight\":return r===null?s().unsetLineHeight().run():s().setLineHeight(r).run();case\"clearFormatting\":{for(let l of[\"bold\",\"italic\",\"underline\",\"strike\"])e.isActive(l)&&this.formatting.toggle(e,l,this.focus);return o().unsetMark(\"textStyle\").unsetMark(\"superscript\").unsetMark(\"subscript\").run()}case\"setLink\":return!!e.schema.marks.link&&r!==null&&o().extendMarkRange(\"link\").setLink({href:r}).command(({tr:l})=>this.formatting.restore(l,\"link\")).run();case\"unsetLink\":return!!e.schema.marks.link&&this.formatting.removeLink(e,this.focus);case\"insertText\":{if(!r||r.length>tt.insertedText)return!1;let l=this.clamp(e,i??e.state.selection);return o().insertContentAt(l,{type:\"text\",text:r}).run()}case\"undo\":return e.commands.undo();case\"redo\":return e.commands.redo();case\"finish\":case\"cancel\":return!1}}clamp(e,t){let r=e.state.doc.type.inlineContent?0:1,i=Math.max(r,e.state.doc.content.size-r),s=Math.min(Math.max(r,t.from),i);return{from:s,to:Math.min(Math.max(s,t.to),i)}}},hi=class{read(e,t,r=(s,o)=>o,i=()=>({})){if(e.isDestroyed)return fs();let{from:s,to:o,empty:l}=e.state.selection,a=[];l?a.push({marks:e.state.storedMarks??e.state.selection.$from.marks(),position:s}):e.state.doc.nodesBetween(s,o,(h,p)=>{h.isText&&a.length<200&&a.push({marks:h.marks,position:Math.max(s,p)})});let c=fs().styles;for(let h of us){let p=a.map(g=>{let y=g.marks.find(w=>w.type.name===\"textStyle\")?.attrs[h];if(typeof y==\"string\"&&y)return{value:r(h,y),own:!0};let b=i(g.marks,g.position)[h];return{value:b?r(h,b):\"\",own:!1}}),m=new Set(p.map(g=>g.value)).size>1;c[h]={value:m?\"\":(p[0]?.value??\"\").slice(0,tt.styleValue),own:p.some(g=>g.own),mixed:m}}let d=Fl.filter(h=>(!!e.schema.marks[h]||!!e.schema.nodes[h])&&e.isActive(h)),u=!!e.schema.marks.link&&e.isActive(\"link\"),f=u?e.getAttributes(\"link\").href:\"\";return{ready:t,marks:d,styles:c,link:u,href:typeof f==\"string\"?f.slice(0,tt.commandValue):\"\",empty:e.isEmpty,canUndo:e.can().undo(),canRedo:e.can().redo()}}};var Ou=new Set([\"span\",\"strong\",\"b\",\"em\",\"i\",\"u\",\"s\",\"a\",\"br\",\"small\",\"sup\",\"sub\",\"code\"]),Iu=new Set([\"p\",\"ul\",\"ol\",\"li\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"blockquote\",\"pre\",\"hr\"]),bb={b:\"strong\",i:\"em\",small:\"span\"},pi=class{isInline(e){return Ou.has(e)}isBlock(e){return Iu.has(e)}supports(e){return Ou.has(e)||Iu.has(e)}canonicalTag(e){return bb[e]??e}semanticAttributes(e){let t=this.canonicalTag(e);return t===\"a\"?[\"href\",\"target\",\"rel\",\"title\"]:t===\"ol\"?[\"start\"]:[]}needsOrigin(e,t){let r=this.semanticAttributes(e);return[\"span\",\"small\",\"a\"].includes(e)||t.some(i=>!r.includes(i))||this.canonicalTag(e)!==e}};var Du=new WeakSet,Lu=new WeakSet;function Lt(n){let e=n;return Du.add(e),e}function el(n){return Array.isArray(n)&&Du.has(n)}function Pu(n){return n.flatMap(e=>e==null?[]:Array.isArray(e)&&Lu.has(e)&&!el(e)?Pu(e):[e])}function xb(n,e){if(n===\"slot\")return 0;if(n instanceof Function){let i=n(e);return Array.isArray(i)&&!el(i)&&!Lu.has(i)?Lt(i):i}let{children:t,...r}=e??{};if(n===\"svg\")throw new Error(\"SVG elements are not supported in the JSX syntax, use the array syntax instead\");if(Array.isArray(t)){if(el(t))return Lt([n,r,t]);if(t.length===0)return Lt([n,r]);let i=Pu(t);return i.length===0?Lt([n,r]):Lt([n,r,...i])}return t!=null?Lt([n,r,t]):Lt([n,r])}var hn=(n,e)=>xb(n,e);var kb=(n,e)=>{var t;let{state:r}=n,{selection:i}=r;if(!i.empty)return!1;let{$from:s}=i;if(s.parentOffset!==0)return!1;let o=s.depth-1;if(o<0)return!1;let l=s.node(o),a=s.index(o);if(a===0)return!1;if(l.type===e)return n.commands.lift(e.name);let c=l.child(a-1);if(c.type!==e||!(!((t=c.lastChild)===null||t===void 0)&&t.isTextblock))return!1;let d=s.before()-1-1;return n.commands.command(({tr:u,dispatch:f})=>{if(!f)return!0;let h=s.parent.content,p=new v(h,0,0);return u.replace(d,s.after(),p),u.setSelection(T.create(u.doc,d+h.size)),u.scrollIntoView(),f(u),!0})},Sb=/^\\\\s*>\\\\s$/,Bu=j.create({name:\"blockquote\",addOptions(){return{HTMLAttributes:{}}},content:\"block+\",group:\"block\",defining:!0,parseHTML(){return[{tag:\"blockquote\"}]},renderHTML({HTMLAttributes:n}){return hn(\"blockquote\",{...L(this.options.HTMLAttributes,n),children:hn(\"slot\",{})})},parseMarkdown:(n,e)=>{var t;let r=(t=e.parseBlockChildren)!==null&&t!==void 0?t:e.parseChildren;return e.createNode(\"blockquote\",void 0,r(n.tokens||[]))},renderMarkdown:(n,e)=>{if(!n.content)return\"\";let t=\">\",r=[];return n.content.forEach((i,s)=>{var o,l;let a=((o=(l=e.renderChild)===null||l===void 0?void 0:l.call(e,i,s))!==null&&o!==void 0?o:e.renderChildren([i])).split(`\\n`).map(c=>c.trim()===\"\"?t:`${t} ${c}`);r.push(a.join(`\\n`))}),r.join(`\\n${t}\\n`)},addCommands(){return{setBlockquote:()=>({commands:n})=>n.wrapIn(this.name),toggleBlockquote:()=>({commands:n})=>n.toggleWrap(this.name),unsetBlockquote:()=>({commands:n})=>n.lift(this.name)}},addKeyboardShortcuts(){return{\"Mod-Shift-b\":()=>this.editor.commands.toggleBlockquote(),Backspace:()=>kb(this.editor,this.type)}},addInputRules(){return[dt({find:Sb,type:this.type})]}});var wb=/(?:^|\\\\s)(\\\\*\\\\*(?!\\\\s+\\\\*\\\\*)((?:[^*]+))\\\\*\\\\*(?!\\\\s+\\\\*\\\\*))$/,vb=/(?:^|\\\\s)(\\\\*\\\\*(?!\\\\s+\\\\*\\\\*)((?:[^*]+))\\\\*\\\\*(?!\\\\s+\\\\*\\\\*))/g,Tb=/(?:^|\\\\s)(__(?!\\\\s+__)((?:[^_]+))__(?!\\\\s+__))$/,Eb=/(?:^|\\\\s)(__(?!\\\\s+__)((?:[^_]+))__(?!\\\\s+__))/g,zu=W.create({name:\"bold\",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:\"strong\"},{tag:\"b\",getAttrs:n=>n.style.fontWeight!==\"normal\"&&null},{style:\"font-weight=400\",clearMark:n=>n.type.name===this.name},{style:\"font-weight\",getAttrs:n=>/^(bold(er)?|[5-9]\\\\d{2,})$/.test(n)&&null}]},renderHTML({HTMLAttributes:n}){return hn(\"strong\",{...L(this.options.HTMLAttributes,n),children:hn(\"slot\",{})})},markdownTokenName:\"strong\",parseMarkdown:(n,e)=>e.applyMark(\"bold\",e.parseInline(n.tokens||[])),markdownOptions:{htmlReopen:{open:\"<strong>\",close:\"</strong>\"}},renderMarkdown:(n,e)=>`**${e.renderChildren(n)}**`,addCommands(){return{setBold:()=>({commands:n})=>n.setMark(this.name),toggleBold:()=>({commands:n})=>n.toggleMark(this.name),unsetBold:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{\"Mod-b\":()=>this.editor.commands.toggleBold(),\"Mod-B\":()=>this.editor.commands.toggleBold()}},addInputRules(){return[ve({find:wb,type:this.type}),ve({find:Tb,type:this.type})]},addPasteRules(){return[ye({find:vb,type:this.type}),ye({find:Eb,type:this.type})]}});var Mb=n=>{let e=/`([^`]+)`(?!`)$/.exec(n);return!e||e.index>0&&n[e.index-1]===\"`\"?null:{index:e.index,text:e[0],replaceWith:e[1]}},Cb=n=>{let e=/`([^`]+)`(?!`)/g,t=[],r;for(;(r=e.exec(n))!==null;)r.index>0&&n[r.index-1]===\"`\"||t.push({index:r.index,text:r[0],replaceWith:r[1]});return t};function Ab(n){let e=new Set((n.match(/`+/g)||[]).map(r=>r.length)),t=1;for(;e.has(t);)t+=1;return t}var Hu=W.create({name:\"code\",addOptions(){return{HTMLAttributes:{}}},excludes:\"_\",code:!0,exitable:!0,parseHTML(){return[{tag:\"code\"}]},renderHTML({HTMLAttributes:n}){return[\"code\",L(this.options.HTMLAttributes,n),0]},markdownTokenName:\"codespan\",parseMarkdown:(n,e)=>e.applyMark(\"code\",[{type:\"text\",text:n.text||\"\"}]),renderMarkdown:(n,e,t)=>{var r;if(!n.content)return\"\";let i=typeof(t==null||(r=t.meta)===null||r===void 0?void 0:r.markText)==\"string\"?t.meta.markText:\"\",s=\"`\".repeat(Ab(i)),o=i.startsWith(\"`\")||i.endsWith(\"`\")?\" \":\"\";return`${s}${o}${e.renderChildren(n.content)}${o}${s}`},addCommands(){return{setCode:()=>({commands:n})=>n.setMark(this.name),toggleCode:()=>({commands:n})=>n.toggleMark(this.name),unsetCode:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{\"Mod-e\":()=>this.editor.commands.toggleCode()}},addInputRules(){return[ve({find:Mb,type:this.type})]},addPasteRules(){return[ye({find:Cb,type:this.type})]}});var tl=4,Rb=/^```([a-z]+)?[\\\\s\\\\n]$/,Nb=/^~~~([a-z]+)?[\\\\s\\\\n]$/,$u=j.create({name:\"codeBlock\",addOptions(){return{languageClassPrefix:\"language-\",exitOnTripleEnter:!0,exitOnArrowDown:!0,exitOnArrowUp:!0,defaultLanguage:null,enableTabIndentation:!1,tabSize:tl,HTMLAttributes:{}}},content:\"text*\",marks:\"\",group:\"block\",code:!0,defining:!0,addAttributes(){return{language:{default:this.options.defaultLanguage,parseHTML:n=>{var e;let{languageClassPrefix:t}=this.options;if(!t)return null;let r=[...((e=n.firstElementChild)===null||e===void 0?void 0:e.classList)||[]].filter(i=>i.startsWith(t)).map(i=>i.replace(t,\"\"))[0];return r||null},rendered:!1}}},parseHTML(){return[{tag:\"pre\",preserveWhitespace:\"full\"}]},renderHTML({node:n,HTMLAttributes:e}){return[\"pre\",L(this.options.HTMLAttributes,e),[\"code\",{class:n.attrs.language?this.options.languageClassPrefix+n.attrs.language:null},0]]},markdownTokenName:\"code\",parseMarkdown:(n,e)=>{var t,r;return((t=n.raw)===null||t===void 0?void 0:t.startsWith(\"```\"))===!1&&((r=n.raw)===null||r===void 0?void 0:r.startsWith(\"~~~\"))===!1&&n.codeBlockStyle!==\"indented\"?[]:e.createNode(\"codeBlock\",{language:n.lang||null},n.text?[e.createTextNode(n.text)]:[])},renderMarkdown:(n,e)=>{var t;let r=\"\",i=((t=n.attrs)===null||t===void 0?void 0:t.language)||\"\";return n.content?r=[`\\\\`\\\\`\\\\`${i}`,e.renderChildren(n.content),\"```\"].join(`\\n`):r=`\\\\`\\\\`\\\\`${i}\\n\\n\\\\`\\\\`\\\\``,r},addCommands(){return{setCodeBlock:n=>({commands:e})=>e.setNode(this.name,n),toggleCodeBlock:n=>({commands:e})=>e.toggleNode(this.name,\"paragraph\",n)}},addKeyboardShortcuts(){return{\"Mod-Alt-c\":()=>this.editor.commands.toggleCodeBlock(),Backspace:()=>{let{empty:n,$anchor:e}=this.editor.state.selection,t=e.pos===1;return!n||e.parent.type.name!==this.name?!1:t||!e.parent.textContent.length?this.editor.commands.clearNodes():!1},Tab:({editor:n})=>{var e;if(!this.options.enableTabIndentation)return!1;let t=(e=this.options.tabSize)!==null&&e!==void 0?e:tl,{state:r}=n,{selection:i}=r,{$from:s,empty:o}=i;if(s.parent.type!==this.type)return!1;let l=\" \".repeat(t);return o?n.commands.insertContent(l):n.commands.command(({tr:a})=>{let{from:c,to:d}=i,u=r.doc.textBetween(c,d,`\\n`,`\\n`).split(`\\n`).map(f=>l+f).join(`\\n`);return a.replaceWith(c,d,r.schema.text(u)),!0})},\"Shift-Tab\":({editor:n})=>{var e;if(!this.options.enableTabIndentation)return!1;let t=(e=this.options.tabSize)!==null&&e!==void 0?e:tl,{state:r}=n,{selection:i}=r,{$from:s,empty:o}=i;return s.parent.type!==this.type?!1:o?n.commands.command(({tr:l})=>{var a;let{pos:c}=s,d=s.start(),u=s.end(),f=r.doc.textBetween(d,u,`\\n`,`\\n`).split(`\\n`),h=0,p=0,m=c-d;for(let w=0;w<f.length;w+=1){if(p+f[w].length>=m){h=w;break}p+=f[w].length+1}let g=((a=f[h].match(/^ */))===null||a===void 0?void 0:a[0])||\"\",y=Math.min(g.length,t);if(y===0)return!0;let b=d;for(let w=0;w<h;w+=1)b+=f[w].length+1;return l.delete(b,b+y),c-b<=y&&l.setSelection(T.create(l.doc,b)),!0}):n.commands.command(({tr:l})=>{let{from:a,to:c}=i,d=r.doc.textBetween(a,c,`\\n`,`\\n`).split(`\\n`).map(u=>{var f;let h=((f=u.match(/^ */))===null||f===void 0?void 0:f[0])||\"\",p=Math.min(h.length,t);return u.slice(p)}).join(`\\n`);return l.replaceWith(a,c,r.schema.text(d)),!0})},Enter:({editor:n})=>{if(!this.options.exitOnTripleEnter)return!1;let{state:e}=n,{selection:t}=e,{$from:r,empty:i}=t;if(!i||r.parent.type!==this.type)return!1;let s=r.parentOffset===r.parent.nodeSize-2,o=r.parent.textContent.endsWith(`\\n\\n`);return!s||!o?!1:n.chain().command(({tr:l})=>(l.delete(r.pos-2,r.pos),!0)).exitCode().run()},ArrowUp:({editor:n})=>{if(!this.options.exitOnArrowUp)return!1;let{state:e}=n,{selection:t}=e,{$from:r,empty:i}=t;if(!i||r.parent.type!==this.type||r.parentOffset!==0)return!1;let s=r.before();return s>0?!1:n.commands.insertDefaultBlock({pos:s})},ArrowDown:({editor:n})=>{if(!this.options.exitOnArrowDown)return!1;let{state:e}=n,{selection:t,doc:r}=e,{$from:i,empty:s}=t;if(!s||i.parent.type!==this.type||i.parentOffset!==i.parent.nodeSize-2)return!1;let o=i.after();return o===void 0?!1:r.nodeAt(o)?n.commands.command(({tr:l})=>(l.setSelection(R.near(r.resolve(o))),!0)):n.commands.exitCode()}}},addInputRules(){return[jn({find:Rb,type:this.type,getAttributes:n=>({language:n[1]})}),jn({find:Nb,type:this.type,getAttributes:n=>({language:n[1]})})]},addProseMirrorPlugins(){return[new O({key:new H(\"codeBlockVSCodeHandler\"),props:{handlePaste:(n,e)=>{if(!e.clipboardData||this.editor.isActive(this.type.name))return!1;let t=e.clipboardData.getData(\"text/plain\"),r=e.clipboardData.getData(\"vscode-editor-data\"),i=r?JSON.parse(r):void 0,s=i?.mode;if(!t||!s)return!1;let{tr:o,schema:l}=n.state,a=l.text(t.replace(/\\\\r\\\\n?/g,`\\n`));return o.replaceSelectionWith(this.type.create({language:s},a)),o.selection.$from.parent.type!==this.type&&o.setSelection(T.near(o.doc.resolve(Math.max(0,o.selection.from-2)))),o.setMeta(\"paste\",!0),n.dispatch(o),!0}}})]}});var Fu=j.create({name:\"doc\",topNode:!0,content:\"block+\",renderMarkdown:(n,e)=>n.content?e.renderChildren(n.content,`\\n\\n`):\"\"});var _u=j.create({name:\"hardBreak\",markdownTokenName:\"br\",addOptions(){return{keepMarks:!0,HTMLAttributes:{}}},inline:!0,group:\"inline\",selectable:!1,linebreakReplacement:!0,parseHTML(){return[{tag:\"br\"}]},renderHTML({HTMLAttributes:n}){return[\"br\",L(this.options.HTMLAttributes,n)]},renderText(){return`\\n`},renderMarkdown:()=>` \\n`,parseMarkdown:()=>({type:\"hardBreak\"}),addCommands(){return{setHardBreak:()=>({commands:n,chain:e,state:t,editor:r})=>n.first([()=>n.exitCode(),()=>n.command(()=>{let{selection:i,storedMarks:s}=t;if(i.$from.parent.type.spec.isolating)return!1;let{keepMarks:o}=this.options,{splittableMarks:l}=r.extensionManager,a=s||i.$to.parentOffset&&i.$from.marks();return e().insertContent({type:this.name}).command(({tr:c,dispatch:d})=>{if(d&&a&&o){let u=a.filter(f=>l.includes(f.type.name));c.ensureMarks(u)}return!0}).scrollIntoView().run()})])}},addKeyboardShortcuts(){return{\"Mod-Enter\":()=>this.editor.commands.setHardBreak(),\"Shift-Enter\":()=>this.editor.commands.setHardBreak()}}});var Vu=j.create({name:\"heading\",addOptions(){return{levels:[1,2,3,4,5,6],HTMLAttributes:{}}},content:\"inline*\",group:\"block\",defining:!0,addAttributes(){return{level:{default:1,rendered:!1}}},parseHTML(){return this.options.levels.map(n=>({tag:`h${n}`,attrs:{level:n}}))},renderHTML({node:n,HTMLAttributes:e}){return[`h${this.options.levels.includes(n.attrs.level)?n.attrs.level:this.options.levels[0]}`,L(this.options.HTMLAttributes,e),0]},parseMarkdown:(n,e)=>e.createNode(\"heading\",{level:n.depth||1},e.parseInline(n.tokens||[])),renderMarkdown:(n,e)=>{var t;let r=!((t=n.attrs)===null||t===void 0)&&t.level?parseInt(n.attrs.level,10):1,i=\"#\".repeat(r);return n.content?`${i} ${e.renderChildren(n.content)}`:\"\"},addCommands(){return{setHeading:n=>({commands:e})=>this.options.levels.includes(n.level)?e.setNode(this.name,n):!1,toggleHeading:n=>({commands:e})=>this.options.levels.includes(n.level)?e.toggleNode(this.name,\"paragraph\",n):!1}},addKeyboardShortcuts(){return this.options.levels.reduce((n,e)=>({...n,[`Mod-Alt-${e}`]:()=>this.editor.commands.toggleHeading({level:e})}),{})},addInputRules(){return this.options.levels.map(n=>jn({find:new RegExp(`^(#{${Math.min(...this.options.levels)},${n}})\\\\\\\\s$`),type:this.type,getAttributes:{level:n}}))}});var ju=j.create({name:\"horizontalRule\",addOptions(){return{HTMLAttributes:{},nextNodeType:\"paragraph\"}},group:\"block\",parseHTML(){return[{tag:\"hr\"}]},renderHTML({HTMLAttributes:n}){return[\"hr\",L(this.options.HTMLAttributes,n)]},markdownTokenName:\"hr\",parseMarkdown:(n,e)=>e.createNode(\"horizontalRule\"),renderMarkdown:()=>\"---\",addCommands(){return{setHorizontalRule:()=>({chain:n,state:e})=>{if(!Su(e,e.schema.nodes[this.name]))return!1;let{selection:t}=e,{$to:r}=t,i=n();return ai(t)?i.insertContentAt(r.pos,{type:this.name}):i.insertContent({type:this.name}),i.command(({state:s,tr:o,dispatch:l})=>{if(l){let{$to:a}=o.selection,c=a.end();if(a.nodeAfter)a.nodeAfter.isTextblock?o.setSelection(T.create(o.doc,a.pos+1)):a.nodeAfter.isBlock?o.setSelection(M.create(o.doc,a.pos)):o.setSelection(T.create(o.doc,a.pos));else{let d=s.schema.nodes[this.options.nextNodeType]||a.parent.type.contentMatch.defaultType,u=d?.create();u&&(o.insert(c,u),o.setSelection(T.create(o.doc,c+1)))}o.scrollIntoView()}return!0}).run()}}},addInputRules(){return[Mu({find:/^(?:---|—-|___\\\\s|\\\\*\\\\*\\\\*\\\\s)$/,type:this.type})]}});var Ob=/(?:^|\\\\s)(\\\\*(?!\\\\s+\\\\*)((?:[^*]+))\\\\*(?!\\\\s+\\\\*))$/,Ib=/(?:^|\\\\s)(\\\\*(?!\\\\s+\\\\*)((?:[^*]+))\\\\*(?!\\\\s+\\\\*))/g,Db=/(?:^|\\\\s)(_(?!\\\\s+_)((?:[^_]+))_(?!\\\\s+_))$/,Lb=/(?:^|\\\\s)(_(?!\\\\s+_)((?:[^_]+))_(?!\\\\s+_))/g,Wu=W.create({name:\"italic\",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:\"em\"},{tag:\"i\",getAttrs:n=>n.style.fontStyle!==\"normal\"&&null},{style:\"font-style=normal\",clearMark:n=>n.type.name===this.name},{style:\"font-style=italic\"}]},renderHTML({HTMLAttributes:n}){return[\"em\",L(this.options.HTMLAttributes,n),0]},addCommands(){return{setItalic:()=>({commands:n})=>n.setMark(this.name),toggleItalic:()=>({commands:n})=>n.toggleMark(this.name),unsetItalic:()=>({commands:n})=>n.unsetMark(this.name)}},markdownTokenName:\"em\",parseMarkdown:(n,e)=>e.applyMark(\"italic\",e.parseInline(n.tokens||[])),markdownOptions:{htmlReopen:{open:\"<em>\",close:\"</em>\"}},renderMarkdown:(n,e)=>`*${e.renderChildren(n)}*`,addKeyboardShortcuts(){return{\"Mod-i\":()=>this.editor.commands.toggleItalic(),\"Mod-I\":()=>this.editor.commands.toggleItalic()}},addInputRules(){return[ve({find:Ob,type:this.type}),ve({find:Db,type:this.type})]},addPasteRules(){return[ye({find:Ib,type:this.type}),ye({find:Lb,type:this.type})]}});var Pb=\"aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5m\\\\xF6gensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2\",Bb=\"\\\\u03B5\\\\u03BB1\\\\u03C52\\\\u0431\\\\u04331\\\\u0435\\\\u043B3\\\\u0434\\\\u0435\\\\u0442\\\\u04384\\\\u0435\\\\u044E2\\\\u043A\\\\u0430\\\\u0442\\\\u043E\\\\u043B\\\\u0438\\\\u043A6\\\\u043E\\\\u043C3\\\\u043C\\\\u043A\\\\u04342\\\\u043E\\\\u043D1\\\\u0441\\\\u043A\\\\u0432\\\\u04306\\\\u043E\\\\u043D\\\\u043B\\\\u0430\\\\u0439\\\\u043D5\\\\u0440\\\\u04333\\\\u0440\\\\u0443\\\\u04412\\\\u04442\\\\u0441\\\\u0430\\\\u0439\\\\u04423\\\\u0440\\\\u04313\\\\u0443\\\\u043A\\\\u04403\\\\u049B\\\\u0430\\\\u04373\\\\u0570\\\\u0561\\\\u05753\\\\u05D9\\\\u05E9\\\\u05E8\\\\u05D0\\\\u05DC5\\\\u05E7\\\\u05D5\\\\u05DD3\\\\u0627\\\\u0628\\\\u0648\\\\u0638\\\\u0628\\\\u064A5\\\\u0631\\\\u0627\\\\u0645\\\\u0643\\\\u06485\\\\u0644\\\\u0627\\\\u0631\\\\u062F\\\\u06464\\\\u0628\\\\u062D\\\\u0631\\\\u064A\\\\u06465\\\\u062C\\\\u0632\\\\u0627\\\\u0626\\\\u06315\\\\u0633\\\\u0639\\\\u0648\\\\u062F\\\\u064A\\\\u06296\\\\u0639\\\\u0644\\\\u064A\\\\u0627\\\\u06465\\\\u0645\\\\u063A\\\\u0631\\\\u06285\\\\u0645\\\\u0627\\\\u0631\\\\u0627\\\\u062A5\\\\u06CC\\\\u0631\\\\u0627\\\\u06465\\\\u0628\\\\u0627\\\\u0631\\\\u062A2\\\\u0632\\\\u0627\\\\u06314\\\\u064A\\\\u062A\\\\u06433\\\\u06BE\\\\u0627\\\\u0631\\\\u062A5\\\\u062A\\\\u0648\\\\u0646\\\\u06334\\\\u0633\\\\u0648\\\\u062F\\\\u0627\\\\u06463\\\\u0631\\\\u064A\\\\u06295\\\\u0634\\\\u0628\\\\u0643\\\\u06294\\\\u0639\\\\u0631\\\\u0627\\\\u06422\\\\u06282\\\\u0645\\\\u0627\\\\u06464\\\\u0641\\\\u0644\\\\u0633\\\\u0637\\\\u064A\\\\u06466\\\\u0642\\\\u0637\\\\u06313\\\\u0643\\\\u0627\\\\u062B\\\\u0648\\\\u0644\\\\u064A\\\\u06436\\\\u0648\\\\u06453\\\\u0645\\\\u0635\\\\u06312\\\\u0644\\\\u064A\\\\u0633\\\\u064A\\\\u06275\\\\u0648\\\\u0631\\\\u064A\\\\u062A\\\\u0627\\\\u0646\\\\u064A\\\\u06277\\\\u0642\\\\u06394\\\\u0647\\\\u0645\\\\u0631\\\\u0627\\\\u06475\\\\u067E\\\\u0627\\\\u06A9\\\\u0633\\\\u062A\\\\u0627\\\\u06467\\\\u0680\\\\u0627\\\\u0631\\\\u062A4\\\\u0915\\\\u0949\\\\u092E3\\\\u0928\\\\u0947\\\\u091F3\\\\u092D\\\\u093E\\\\u0930\\\\u09240\\\\u092E\\\\u094D3\\\\u094B\\\\u09245\\\\u0938\\\\u0902\\\\u0917\\\\u0920\\\\u09285\\\\u09AC\\\\u09BE\\\\u0982\\\\u09B2\\\\u09BE5\\\\u09AD\\\\u09BE\\\\u09B0\\\\u09A42\\\\u09F0\\\\u09A44\\\\u0A2D\\\\u0A3E\\\\u0A30\\\\u0A244\\\\u0AAD\\\\u0ABE\\\\u0AB0\\\\u0AA44\\\\u0B2D\\\\u0B3E\\\\u0B30\\\\u0B244\\\\u0B87\\\\u0BA8\\\\u0BCD\\\\u0BA4\\\\u0BBF\\\\u0BAF\\\\u0BBE6\\\\u0BB2\\\\u0B99\\\\u0BCD\\\\u0B95\\\\u0BC86\\\\u0B9A\\\\u0BBF\\\\u0B99\\\\u0BCD\\\\u0B95\\\\u0BAA\\\\u0BCD\\\\u0BAA\\\\u0BC2\\\\u0BB0\\\\u0BCD11\\\\u0C2D\\\\u0C3E\\\\u0C30\\\\u0C24\\\\u0C4D5\\\\u0CAD\\\\u0CBE\\\\u0CB0\\\\u0CA44\\\\u0D2D\\\\u0D3E\\\\u0D30\\\\u0D24\\\\u0D025\\\\u0DBD\\\\u0D82\\\\u0D9A\\\\u0DCF4\\\\u0E04\\\\u0E2D\\\\u0E213\\\\u0E44\\\\u0E17\\\\u0E223\\\\u0EA5\\\\u0EB2\\\\u0EA73\\\\u10D2\\\\u10D42\\\\u307F\\\\u3093\\\\u306A3\\\\u30A2\\\\u30DE\\\\u30BE\\\\u30F34\\\\u30AF\\\\u30E9\\\\u30A6\\\\u30C94\\\\u30B0\\\\u30FC\\\\u30B0\\\\u30EB4\\\\u30B3\\\\u30E02\\\\u30B9\\\\u30C8\\\\u30A23\\\\u30BB\\\\u30FC\\\\u30EB3\\\\u30D5\\\\u30A1\\\\u30C3\\\\u30B7\\\\u30E7\\\\u30F36\\\\u30DD\\\\u30A4\\\\u30F3\\\\u30C84\\\\u4E16\\\\u754C2\\\\u4E2D\\\\u4FE11\\\\u56FD1\\\\u570B1\\\\u6587\\\\u7F513\\\\u4E9A\\\\u9A6C\\\\u900A3\\\\u4F01\\\\u4E1A2\\\\u4F5B\\\\u5C712\\\\u4FE1\\\\u606F2\\\\u5065\\\\u5EB72\\\\u516B\\\\u53662\\\\u516C\\\\u53F81\\\\u76CA2\\\\u53F0\\\\u6E7E1\\\\u70632\\\\u5546\\\\u57CE1\\\\u5E971\\\\u68072\\\\u5609\\\\u91CC0\\\\u5927\\\\u9152\\\\u5E975\\\\u5728\\\\u7EBF2\\\\u5927\\\\u62FF2\\\\u5929\\\\u4E3B\\\\u65593\\\\u5A31\\\\u4E502\\\\u5BB6\\\\u96FB2\\\\u5E7F\\\\u4E1C2\\\\u5FAE\\\\u535A2\\\\u6148\\\\u55842\\\\u6211\\\\u7231\\\\u4F603\\\\u624B\\\\u673A2\\\\u62DB\\\\u80582\\\\u653F\\\\u52A11\\\\u5E9C2\\\\u65B0\\\\u52A0\\\\u57612\\\\u95FB2\\\\u65F6\\\\u5C1A2\\\\u66F8\\\\u7C4D2\\\\u673A\\\\u67842\\\\u6DE1\\\\u9A6C\\\\u95213\\\\u6E38\\\\u620F2\\\\u6FB3\\\\u95802\\\\u70B9\\\\u770B2\\\\u79FB\\\\u52A82\\\\u7EC4\\\\u7EC7\\\\u673A\\\\u67844\\\\u7F51\\\\u57401\\\\u5E971\\\\u7AD91\\\\u7EDC2\\\\u8054\\\\u901A2\\\\u8C37\\\\u6B4C2\\\\u8D2D\\\\u72692\\\\u901A\\\\u8CA92\\\\u96C6\\\\u56E22\\\\u96FB\\\\u8A0A\\\\u76C8\\\\u79D14\\\\u98DE\\\\u5229\\\\u6D663\\\\u98DF\\\\u54C12\\\\u9910\\\\u53852\\\\u9999\\\\u683C\\\\u91CC\\\\u62C93\\\\u6E2F2\\\\uB2F7\\\\uB1371\\\\uCEF42\\\\uC0BC\\\\uC1312\\\\uD55C\\\\uAD6D2\",al=\"numeric\",cl=\"ascii\",dl=\"alpha\",Kn=\"asciinumeric\",Un=\"alphanumeric\",ul=\"domain\",Gu=\"emoji\",zb=\"scheme\",Hb=\"slashscheme\",nl=\"whitespace\";function $b(n,e){return n in e||(e[n]=[]),e[n]}function Pt(n,e,t){e[al]&&(e[Kn]=!0,e[Un]=!0),e[cl]&&(e[Kn]=!0,e[dl]=!0),e[Kn]&&(e[Un]=!0),e[dl]&&(e[Un]=!0),e[Un]&&(e[ul]=!0),e[Gu]&&(e[ul]=!0);for(let r in e){let i=$b(r,t);i.indexOf(n)<0&&i.push(n)}}function Fb(n,e){let t={};for(let r in e)e[r].indexOf(n)>=0&&(t[r]=!0);return t}function pe(n=null){this.j={},this.jr=[],this.jd=null,this.t=n}pe.groups={};pe.prototype={accepts(){return!!this.t},go(n){let e=this,t=e.j[n];if(t)return t;for(let r=0;r<e.jr.length;r++){let i=e.jr[r][0],s=e.jr[r][1];if(s&&i.test(n))return s}return e.jd},has(n,e=!1){return e?n in this.j:!!this.go(n)},ta(n,e,t,r){for(let i=0;i<n.length;i++)this.tt(n[i],e,t,r)},tr(n,e,t,r){r=r||pe.groups;let i;return e&&e.j?i=e:(i=new pe(e),t&&r&&Pt(e,t,r)),this.jr.push([n,i]),i},ts(n,e,t,r){let i=this,s=n.length;if(!s)return i;for(let o=0;o<s-1;o++)i=i.tt(n[o]);return i.tt(n[s-1],e,t,r)},tt(n,e,t,r){r=r||pe.groups;let i=this;if(e&&e.j)return i.j[n]=e,e;let s=e,o,l=i.go(n);if(l?(o=new pe,Object.assign(o.j,l.j),o.jr.push.apply(o.jr,l.jr),o.jd=l.jd,o.t=l.t):o=new pe,s){if(r)if(o.t&&typeof o.t==\"string\"){let a=Object.assign(Fb(o.t,r),t);Pt(s,a,r)}else t&&Pt(s,t,r);o.t=s}return i.j[n]=o,o}};var I=(n,e,t,r,i)=>n.ta(e,t,r,i),U=(n,e,t,r,i)=>n.tr(e,t,r,i),Uu=(n,e,t,r,i)=>n.ts(e,t,r,i),S=(n,e,t,r,i)=>n.tt(e,t,r,i),Ze=\"WORD\",fl=\"UWORD\",Yu=\"ASCIINUMERICAL\",Qu=\"ALPHANUMERICAL\",Qn=\"LOCALHOST\",hl=\"TLD\",pl=\"UTLD\",bi=\"SCHEME\",pn=\"SLASH_SCHEME\",gl=\"NUM\",ml=\"WS\",yl=\"NL\",qn=\"OPENBRACE\",Jn=\"CLOSEBRACE\",xi=\"OPENBRACKET\",ki=\"CLOSEBRACKET\",Si=\"OPENPAREN\",wi=\"CLOSEPAREN\",vi=\"OPENANGLEBRACKET\",Ti=\"CLOSEANGLEBRACKET\",Ei=\"FULLWIDTHLEFTPAREN\",Mi=\"FULLWIDTHRIGHTPAREN\",Ci=\"LEFTCORNERBRACKET\",Ai=\"RIGHTCORNERBRACKET\",Ri=\"LEFTWHITECORNERBRACKET\",Ni=\"RIGHTWHITECORNERBRACKET\",Oi=\"FULLWIDTHLESSTHAN\",Ii=\"FULLWIDTHGREATERTHAN\",Di=\"AMPERSAND\",Li=\"APOSTROPHE\",Pi=\"ASTERISK\",ht=\"AT\",Bi=\"BACKSLASH\",zi=\"BACKTICK\",Hi=\"CARET\",Bt=\"COLON\",bl=\"COMMA\",$i=\"DOLLAR\",Pe=\"DOT\",Fi=\"EQUALS\",xl=\"EXCLAMATION\",Ee=\"HYPHEN\",Xn=\"PERCENT\",_i=\"PIPE\",Vi=\"PLUS\",ji=\"POUND\",Gn=\"QUERY\",kl=\"QUOTE\",Zu=\"FULLWIDTHMIDDLEDOT\",Sl=\"SEMI\",Be=\"SLASH\",Yn=\"TILDE\",Wi=\"UNDERSCORE\",ef=\"EMOJI\",Ui=\"SYM\",tf=Object.freeze({__proto__:null,ALPHANUMERICAL:Qu,AMPERSAND:Di,APOSTROPHE:Li,ASCIINUMERICAL:Yu,ASTERISK:Pi,AT:ht,BACKSLASH:Bi,BACKTICK:zi,CARET:Hi,CLOSEANGLEBRACKET:Ti,CLOSEBRACE:Jn,CLOSEBRACKET:ki,CLOSEPAREN:wi,COLON:Bt,COMMA:bl,DOLLAR:$i,DOT:Pe,EMOJI:ef,EQUALS:Fi,EXCLAMATION:xl,FULLWIDTHGREATERTHAN:Ii,FULLWIDTHLEFTPAREN:Ei,FULLWIDTHLESSTHAN:Oi,FULLWIDTHMIDDLEDOT:Zu,FULLWIDTHRIGHTPAREN:Mi,HYPHEN:Ee,LEFTCORNERBRACKET:Ci,LEFTWHITECORNERBRACKET:Ri,LOCALHOST:Qn,NL:yl,NUM:gl,OPENANGLEBRACKET:vi,OPENBRACE:qn,OPENBRACKET:xi,OPENPAREN:Si,PERCENT:Xn,PIPE:_i,PLUS:Vi,POUND:ji,QUERY:Gn,QUOTE:kl,RIGHTCORNERBRACKET:Ai,RIGHTWHITECORNERBRACKET:Ni,SCHEME:bi,SEMI:Sl,SLASH:Be,SLASH_SCHEME:pn,SYM:Ui,TILDE:Yn,TLD:hl,UNDERSCORE:Wi,UTLD:pl,UWORD:fl,WORD:Ze,WS:ml}),Ye=/[a-z]/,Wn=/\\\\p{L}/u,rl=/\\\\p{Emoji}/u;var Qe=/\\\\d/,il=/\\\\s/;var Ku=\"\\\\r\",sl=`\\n`,_b=\"\\\\uFE0F\",Vb=\"\\\\u200D\",ol=\"\\\\uFFFC\",mi=null,gi=null;function jb(n=[]){let e={};pe.groups=e;let t=new pe;mi==null&&(mi=qu(Pb)),gi==null&&(gi=qu(Bb)),S(t,\"\\'\",Li),S(t,\"{\",qn),S(t,\"}\",Jn),S(t,\"[\",xi),S(t,\"]\",ki),S(t,\"(\",Si),S(t,\")\",wi),S(t,\"<\",vi),S(t,\">\",Ti),S(t,\"\\\\uFF08\",Ei),S(t,\"\\\\uFF09\",Mi),S(t,\"\\\\u300C\",Ci),S(t,\"\\\\u300D\",Ai),S(t,\"\\\\u300E\",Ri),S(t,\"\\\\u300F\",Ni),S(t,\"\\\\uFF1C\",Oi),S(t,\"\\\\uFF1E\",Ii),S(t,\"&\",Di),S(t,\"*\",Pi),S(t,\"@\",ht),S(t,\"`\",zi),S(t,\"^\",Hi),S(t,\":\",Bt),S(t,\",\",bl),S(t,\"$\",$i),S(t,\".\",Pe),S(t,\"=\",Fi),S(t,\"!\",xl),S(t,\"-\",Ee),S(t,\"%\",Xn),S(t,\"|\",_i),S(t,\"+\",Vi),S(t,\"#\",ji),S(t,\"?\",Gn),S(t,\\'\"\\',kl),S(t,\"/\",Be),S(t,\";\",Sl),S(t,\"~\",Yn),S(t,\"_\",Wi),S(t,\"\\\\\\\\\",Bi),S(t,\"\\\\u30FB\",Zu);let r=U(t,Qe,gl,{[al]:!0});U(r,Qe,r);let i=U(r,Ye,Yu,{[Kn]:!0}),s=U(r,Wn,Qu,{[Un]:!0}),o=U(t,Ye,Ze,{[cl]:!0});U(o,Qe,i),U(o,Ye,o),U(i,Qe,i),U(i,Ye,i);let l=U(t,Wn,fl,{[dl]:!0});U(l,Ye),U(l,Qe,s),U(l,Wn,l),U(s,Qe,s),U(s,Ye),U(s,Wn,s);let a=S(t,sl,yl,{[nl]:!0}),c=S(t,Ku,ml,{[nl]:!0}),d=U(t,il,ml,{[nl]:!0});S(t,ol,d),S(c,sl,a),S(c,ol,d),U(c,il,d),S(d,Ku),S(d,sl),U(d,il,d),S(d,ol,d);let u=U(t,rl,ef,{[Gu]:!0});S(u,\"#\"),U(u,rl,u),S(u,_b,u);let f=S(u,Vb);S(f,\"#\"),U(f,rl,u);let h=[[Ye,o],[Qe,i]],p=[[Ye,null],[Wn,l],[Qe,s]];for(let m=0;m<mi.length;m++)ft(t,mi[m],hl,Ze,h);for(let m=0;m<gi.length;m++)ft(t,gi[m],pl,fl,p);Pt(hl,{tld:!0,ascii:!0},e),Pt(pl,{utld:!0,alpha:!0},e),ft(t,\"file\",bi,Ze,h),ft(t,\"mailto\",bi,Ze,h),ft(t,\"http\",pn,Ze,h),ft(t,\"https\",pn,Ze,h),ft(t,\"ftp\",pn,Ze,h),ft(t,\"ftps\",pn,Ze,h),Pt(bi,{scheme:!0,ascii:!0},e),Pt(pn,{slashscheme:!0,ascii:!0},e),n=n.sort((m,g)=>m[0]>g[0]?1:-1);for(let m=0;m<n.length;m++){let g=n[m][0],b=n[m][1]?{[zb]:!0}:{[Hb]:!0};g.indexOf(\"-\")>=0?b[ul]=!0:Ye.test(g)?Qe.test(g)?b[Kn]=!0:b[cl]=!0:b[al]=!0,Uu(t,g,g,b)}return Uu(t,\"localhost\",Qn,{ascii:!0}),t.jd=new pe(Ui),{start:t,tokens:Object.assign({groups:e},tf)}}function nf(n,e){let t=Wb(e.replace(/[A-Z]/g,l=>l.toLowerCase())),r=t.length,i=[],s=0,o=0;for(;o<r;){let l=n,a=null,c=0,d=null,u=-1,f=-1;for(;o<r&&(a=l.go(t[o]));)l=a,l.accepts()?(u=0,f=0,d=l):u>=0&&(u+=t[o].length,f++),c+=t[o].length,s+=t[o].length,o++;s-=u,o-=f,c-=u,i.push({t:d.t,v:e.slice(s-c,s),s:s-c,e:s})}return i}function Wb(n){let e=[],t=n.length,r=0;for(;r<t;){let i=n.charCodeAt(r),s,o=i<55296||i>56319||r+1===t||(s=n.charCodeAt(r+1))<56320||s>57343?n[r]:n.slice(r,r+2);e.push(o),r+=o.length}return e}function ft(n,e,t,r,i){let s,o=e.length;for(let l=0;l<o-1;l++){let a=e[l];n.j[a]?s=n.j[a]:(s=new pe(r),s.jr=i.slice(),n.j[a]=s),n=s}return s=new pe(t),s.jr=i.slice(),n.j[e[o-1]]=s,s}function qu(n){let e=[],t=[],r=0,i=\"0123456789\";for(;r<n.length;){let s=0;for(;i.indexOf(n[r+s])>=0;)s++;if(s>0){e.push(t.join(\"\"));for(let o=parseInt(n.substring(r,r+s),10);o>0;o--)t.pop();r+=s}else t.push(n[r]),r++}return e}var Zn={defaultProtocol:\"http\",events:null,format:Ju,formatHref:Ju,nl2br:!1,tagName:\"a\",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function wl(n,e=null){let t=Object.assign({},Zn);n&&(t=Object.assign(t,n instanceof wl?n.o:n));let r=t.ignoreTags,i=[];for(let s=0;s<r.length;s++)i.push(r[s].toUpperCase());this.o=t,e&&(this.defaultRender=e),this.ignoreTags=i}wl.prototype={o:Zn,ignoreTags:[],defaultRender(n){return n},check(n){return this.get(\"validate\",n.toString(),n)},get(n,e,t){let r=e!=null,i=this.o[n];return i&&(typeof i==\"object\"?(i=t.t in i?i[t.t]:Zn[n],typeof i==\"function\"&&r&&(i=i(e,t))):typeof i==\"function\"&&r&&(i=i(e,t.t,t)),i)},getObj(n,e,t){let r=this.o[n];return typeof r==\"function\"&&e!=null&&(r=r(e,t.t,t)),r},render(n){let e=n.render(this);return(this.get(\"render\",null,n)||this.defaultRender)(e,n.t,n)}};function Ju(n){return n}function rf(n,e){this.t=\"token\",this.v=n,this.tk=e}rf.prototype={isLink:!1,toString(){return this.v},toHref(n){return this.toString()},toFormattedString(n){let e=this.toString(),t=n.get(\"truncate\",e,this),r=n.get(\"format\",e,this);return t&&r.length>t?r.substring(0,t)+\"\\\\u2026\":r},toFormattedHref(n){return n.get(\"formatHref\",this.toHref(n.get(\"defaultProtocol\")),this)},startIndex(){return this.tk[0].s},endIndex(){return this.tk[this.tk.length-1].e},toObject(n=Zn.defaultProtocol){return{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(n),start:this.startIndex(),end:this.endIndex()}},toFormattedObject(n){return{type:this.t,value:this.toFormattedString(n),isLink:this.isLink,href:this.toFormattedHref(n),start:this.startIndex(),end:this.endIndex()}},validate(n){return n.get(\"validate\",this.toString(),this)},render(n){let e=this,t=this.toHref(n.get(\"defaultProtocol\")),r=n.get(\"formatHref\",t,this),i=n.get(\"tagName\",t,e),s=this.toFormattedString(n),o={},l=n.get(\"className\",t,e),a=n.get(\"target\",t,e),c=n.get(\"rel\",t,e),d=n.getObj(\"attributes\",t,e),u=n.getObj(\"events\",t,e);return o.href=r,l&&(o.class=l),a&&(o.target=a),c&&(o.rel=c),d&&Object.assign(o,d),{tagName:i,attributes:o,content:s,eventListeners:u}}};function Ki(n,e){class t extends rf{constructor(i,s){super(i,s),this.t=n}}for(let r in e)t.prototype[r]=e[r];return t.t=n,t}var Ub=Ki(\"email\",{isLink:!0,toHref(){return\"mailto:\"+this.toString()}}),Xu=Ki(\"text\"),Kb=Ki(\"nl\"),yi=Ki(\"url\",{isLink:!0,toHref(n=Zn.defaultProtocol){return this.hasProtocol()?this.v:`${n}://${this.v}`},hasProtocol(){let n=this.tk;return n.length>=2&&n[0].t!==Qn&&n[1].t===Bt}});var Te=n=>new pe(n);function qb({groups:n}){let e=n.domain.concat([Di,Pi,ht,Bi,zi,Hi,$i,Fi,Ee,gl,Xn,_i,Vi,ji,Be,Ui,Yn,Wi]),t=[Li,Bt,bl,Pe,xl,Xn,Gn,kl,Sl,vi,Ti,qn,Jn,ki,xi,Si,wi,Ei,Mi,Ci,Ai,Ri,Ni,Oi,Ii],r=[Di,Li,Pi,Bi,zi,Hi,$i,Fi,Ee,qn,Jn,Xn,_i,Vi,ji,Gn,Be,Ui,Yn,Wi],i=Te(),s=S(i,Yn);I(s,r,s),I(s,n.domain,s);let o=Te(),l=Te(),a=Te();I(i,n.domain,o),I(i,n.scheme,l),I(i,n.slashscheme,a),I(o,r,s),I(o,n.domain,o);let c=S(o,ht);S(s,ht,c),S(l,ht,c),S(a,ht,c);let d=S(s,Pe);I(d,r,s),I(d,n.domain,s);let u=Te();I(c,n.domain,u),I(u,n.domain,u);let f=S(u,Pe);I(f,n.domain,u);let h=Te(Ub);I(f,n.tld,h),I(f,n.utld,h),S(c,Qn,h);let p=S(u,Ee);S(p,Ee,p),I(p,n.domain,u),I(h,n.domain,u),S(h,Pe,f),S(h,Ee,p);let m=S(o,Ee),g=S(o,Pe);S(m,Ee,m),I(m,n.domain,o),I(g,r,s),I(g,n.domain,o);let y=Te(yi);I(g,n.tld,y),I(g,n.utld,y),I(y,n.domain,o),I(y,r,s),S(y,Pe,g),S(y,Ee,m),S(y,ht,c);let b=S(y,Bt),w=Te(yi);I(b,n.numeric,w);let k=Te(yi),N=Te();I(k,e,k),I(k,t,N),I(N,e,k),I(N,t,N),S(y,Be,k),S(w,Be,k);let $=S(l,Bt),A=S(a,Bt),z=S(A,Be),F=S(z,Be);I(l,n.domain,o),S(l,Pe,g),S(l,Ee,m),I(a,n.domain,o),S(a,Pe,g),S(a,Ee,m),I($,n.domain,k),S($,Be,k),S($,Gn,k),I(F,n.domain,k),I(F,e,k),S(F,Be,k);let Q=[[qn,Jn],[xi,ki],[Si,wi],[vi,Ti],[Ei,Mi],[Ci,Ai],[Ri,Ni],[Oi,Ii]];for(let be=0;be<Q.length;be++){let[pt,Me]=Q[be],He=S(k,pt);S(N,pt,He);let Ce=Te(yi);I(He,e,Ce);let Ht=Te();I(He,t,Ht),S(He,Me,k),I(Ce,e,Ce),I(Ce,t,Ht),I(Ht,e,Ce),I(Ht,t,Ht),S(Ce,Me,k),S(Ht,Me,k)}return S(i,Qn,y),S(i,yl,Kb),{start:i,tokens:tf}}function Jb(n,e,t){let r=t.length,i=0,s=[],o=[];for(;i<r;){let l=n,a=null,c=null,d=0,u=null,f=-1;for(;i<r&&!(a=l.go(t[i].t));)o.push(t[i++]);for(;i<r&&(c=a||l.go(t[i].t));)a=null,l=c,l.accepts()?(f=0,u=l):f>=0&&f++,i++,d++;if(f<0)i-=d,i<r&&(o.push(t[i]),i++);else{o.length>0&&(s.push(ll(Xu,e,o)),o=[]),i-=f,d-=f;let h=u.t,p=t.slice(i-d,i);s.push(ll(h,e,p))}}return o.length>0&&s.push(ll(Xu,e,o)),s}function ll(n,e,t){let r=t[0].s,i=t[t.length-1].e,s=e.slice(r,i);return new n(s,t)}var Xb=typeof console<\"u\"&&console&&console.warn||(()=>{}),Gb=\"until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.\",V={scanner:null,parser:null,tokenQueue:[],pluginQueue:[],customSchemes:[],initialized:!1};function sf(){return pe.groups={},V.scanner=null,V.parser=null,V.tokenQueue=[],V.pluginQueue=[],V.customSchemes=[],V.initialized=!1,V}function vl(n,e=!1){if(V.initialized&&Xb(`linkifyjs: already initialized - will not register custom scheme \"${n}\" ${Gb}`),!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(n))throw new Error(`linkifyjs: incorrect scheme format.\\n1. Must only contain digits, lowercase ASCII letters or \"-\"\\n2. Cannot start or end with \"-\"\\n3. \"-\" cannot repeat`);V.customSchemes.push([n,e])}function Yb(){V.scanner=jb(V.customSchemes);for(let n=0;n<V.tokenQueue.length;n++)V.tokenQueue[n][1]({scanner:V.scanner});V.parser=qb(V.scanner.tokens);for(let n=0;n<V.pluginQueue.length;n++)V.pluginQueue[n][1]({scanner:V.scanner,parser:V.parser});return V.initialized=!0,V}function qi(n){return V.initialized||Yb(),Jb(V.parser.start,n,nf(V.scanner.start,n))}qi.scan=nf;function Tl(n,e=null,t=null){if(e&&typeof e==\"object\"){if(t)throw Error(`linkifyjs: Invalid link type ${e}; must be a string`);t=e,e=null}let r=new wl(t),i=qi(n),s=[];for(let o=0;o<i.length;o++){let l=i[o];l.isLink&&(!e||l.t===e)&&r.check(l)&&s.push(l.toFormattedObject(r))}return s}var Ji=\"[\\\\0- \\\\xA0\\\\u1680\\\\u180E\\\\u2000-\\\\u2029\\\\u205F\\\\u3000]\",Qb=new RegExp(Ji),Zb=new RegExp(`${Ji}$`),e0=new RegExp(`${Ji}+$`),t0=new RegExp(Ji,\"g\");function n0(n,e,t){var r,i;let s=n.doc.resolve(e.to);if(!(!((r=s.nodeBefore)===null||r===void 0)&&r.isText))return;let o=(i=n.doc.textBetween(e.from,e.to,\"\\\\uFFFC\",\"\\\\uFFFC\").match(e0))===null||i===void 0?void 0:i[0];if(!o)return;let l=e.to-o.length,a=Vn(l,e.to,n.doc).filter(u=>u.mark.type===t);if(!a.length)return;let{nodeAfter:c}=s;if(c&&a.some(u=>u.mark.isInSet(c.marks)))return;let d=n.storedMarks;n.removeMark(l,e.to,t),n.setStoredMarks(d),n.selection.empty&&n.selection.from===e.to&&n.removeStoredMark(t)}function r0(n){return n.length===1?n[0].isLink:n.length===3&&n[1].isLink?[\"()\",\"[]\"].includes(n[0].value+n[2].value):!1}function i0(n){return new O({key:new H(\"autolink\"),appendTransaction:(e,t,r)=>{let i=e.some(a=>a.docChanged)&&!t.doc.eq(r.doc),s=e.some(a=>a.getMeta(\"preventAutolink\"));if(!i||s)return;let{tr:o}=r,l=Wo(t.doc,[...e]);if(!e.some(Ad)){let a=[];l.steps.forEach((c,d)=>{if(!(c instanceof K)||!c.slice.size)return;let u=l.mapping.slice(d+1),f=u.map(c.from,1),h=u.map(c.from+c.slice.size,-1);f<h&&a.push({from:f,to:h})}),a.sort((c,d)=>d.to-c.to),a.forEach(c=>n0(o,c,n.type))}if(ln(l).forEach(({newRange:a})=>{let c=nu(r.doc,a,f=>f.isTextblock),d,u;if(c.length>1)d=c[0],u=r.doc.textBetween(d.pos,d.pos+d.node.nodeSize,void 0,\" \");else if(c.length){let f=r.doc.textBetween(a.from,a.to,\" \",\" \");if(!Zb.test(f))return;d=c[0],u=r.doc.textBetween(d.pos,a.to,void 0,\" \")}if(d&&u){let f=u.split(Qb).filter(Boolean);if(f.length<=0)return!1;let h=f[f.length-1],p=d.pos+u.lastIndexOf(h);if(!h)return!1;let m=qi(h).map(g=>g.toObject(n.defaultProtocol));if(!r0(m))return!1;m.filter(g=>g.isLink).map(g=>({...g,from:p+g.start+1,to:p+g.end+1})).filter(g=>r.schema.marks.code?!r.doc.rangeHasMark(g.from,g.to,r.schema.marks.code):!0).filter(g=>n.validate(g.value)).filter(g=>n.shouldAutoLink(g.value)).forEach(g=>{Vn(g.from,g.to,r.doc).some(y=>y.mark.type===n.type)||o.addMark(g.from,g.to,n.type.create({href:g.href}))})}}),!!o.steps.length)return o}})}function s0(n){return new O({key:new H(\"handleClickLink\"),props:{handleClick:(e,t,r)=>{if(r.button!==0||!e.editable)return!1;let i=null;if(r.target instanceof HTMLAnchorElement)i=r.target;else{let a=r.target;if(!a)return!1;let c=n.editor.view.dom;i=a.closest(\"a\"),i&&!c.contains(i)&&(i=null)}if(!i)return!1;let s=!1;if(n.enableClickSelection&&(s=n.editor.commands.extendMarkRange(n.type.name)),n.openOnClick){var o,l;let a=Jo(e.state,n.type.name),c=(o=i.href)!==null&&o!==void 0?o:a.href,d=(l=i.target)!==null&&l!==void 0?l:a.target;c&&(window.open(c,d),s=!0)}return s}}})}var o0=/\\\\[([^[\\\\]]+)\\\\]\\\\(((?:[^\\\\s()]|\\\\([^\\\\s()]*\\\\))+)(?:\\\\s+(?:([\"\\'])(.*?)\\\\3|“(.*?)”|‘(.*?)’))?\\\\)$/,l0=/\\\\[([^[\\\\]]+)\\\\]\\\\(((?:[^\\\\s()]|\\\\([^\\\\s()]*\\\\))+)(?:\\\\s+(?:([\"\\'])(.*?)\\\\3|“(.*?)”|‘(.*?)’))?\\\\)/g;function of(n,e){let t=0;for(let r=e-1;r>=0&&n[r]===\"\\\\\\\\\";r-=1)t+=1;return t%2===1}function a0(n,e){let t=0,r=0;for(;r<e;){if(n[r]!==\"`\"){r+=1;continue}if(t===0&&of(n,r)){r+=1;continue}let i=0;for(;r<e&&n[r]===\"`\";)i+=1,r+=1;t===0?t=i:i===t&&(t=0)}return t>0}function lf(n,e,t){var r,i;let[,s,o]=e;return(e.index?n[e.index-1]:void 0)===\"!\"||of(n,(r=e.index)!==null&&r!==void 0?r:0)||a0(n,(i=e.index)!==null&&i!==void 0?i:0)?!1:!!s.trim()&&t(o)}function af(n){var e,t;let[r,i,s,,o,l,a]=n,c=(e=o??l)!==null&&e!==void 0?e:a;return{index:(t=n.index)!==null&&t!==void 0?t:0,text:r,replaceWith:i,data:{href:s,title:c||null,markdown:!0}}}function c0(n,e){return n.index<e.index+e.text.length&&e.index<n.index+n.text.length}function cf(n){var e,t,r;return{href:(e=n.data)===null||e===void 0?void 0:e.href,title:(t=(r=n.data)===null||r===void 0?void 0:r.title)!==null&&t!==void 0?t:null}}function d0(n){let e=ve({find:t=>{let r=o0.exec(t);return!r||!lf(t,r,n.isAllowedHref)?null:af(r)},type:n.type,getAttributes:cf});return new un({find:e.find,handler:t=>{let r=e.handler(t);return r!==null&&t.state.tr.steps.length&&t.state.tr.setMeta(\"preventAutolink\",!0),r}})}function u0(n){let e=ye({find:t=>{var r,i;let s=[];for(let l of t.matchAll(l0))lf(t,l,n.isAllowedHref)&&s.push(af(l));let o=((r=(i=n.findPlainUrls)===null||i===void 0?void 0:i.call(n,t))!==null&&r!==void 0?r:[]).filter(l=>!s.some(a=>c0(a,l)));return[...s,...o]},type:n.type,getAttributes:cf});return new Qo({find:e.find,handler:t=>{var r;let i=e.handler(t);return i!==null&&t.state.tr.steps.length&&(!((r=t.match.data)===null||r===void 0)&&r.markdown)&&t.state.tr.setMeta(\"preventAutolink\",!0),i}})}function f0(n){return new O({key:new H(\"handlePasteLink\"),props:{handlePaste:(e,t,r)=>{let{shouldAutoLink:i}=n,{state:s}=e,{selection:o}=s,{empty:l}=o;if(l)return!1;let a=\"\";r.content.forEach(d=>{a+=d.textContent});let c=Tl(a,{defaultProtocol:n.defaultProtocol}).find(d=>d.isLink&&d.value===a);return!a||!c||i!==void 0&&!i(c.value)?!1:n.editor.commands.setMark(n.type,{href:c.href})}}})}function et(n,e){let t=[\"http\",\"https\",\"ftp\",\"ftps\",\"mailto\",\"tel\",\"callto\",\"sms\",\"cid\",\"xmpp\"];return e&&e.forEach(r=>{let i=typeof r==\"string\"?r:r.scheme;i&&t.push(i)}),!n||n.replace(t0,\"\").match(new RegExp(`^(?:(?:${t.map(r=>r.replace(/[-/\\\\\\\\^$*+?.()|[\\\\]{}]/g,\"\\\\\\\\$&\")).join(\"|\")}):|[^a-z]|[a-z0-9+.\\\\\\\\-]+(?:[^a-z+.\\\\\\\\-:]|$))`,\"i\"))}var df=W.create({name:\"link\",priority:1e3,keepOnSplit:!1,exitable:!0,onCreate(){this.options.validate&&!this.options.shouldAutoLink&&(this.options.shouldAutoLink=this.options.validate,console.warn(\"The `validate` option is deprecated. Rename to the `shouldAutoLink` option instead.\")),this.options.protocols.forEach(n=>{if(typeof n==\"string\"){vl(n);return}vl(n.scheme,n.optionalSlashes)})},onDestroy(){sf()},inclusive(){return this.options.autolink},addOptions(){return{openOnClick:!0,enableClickSelection:!1,linkOnPaste:!0,markdownLinks:!1,autolink:!0,protocols:[],defaultProtocol:\"http\",HTMLAttributes:{target:\"_blank\",rel:\"noopener noreferrer nofollow\",class:null},isAllowedUri:(n,e)=>!!et(n,e.protocols),validate:n=>!!n,shouldAutoLink:n=>{let e=/^[a-z][a-z0-9+.-]*:\\\\/\\\\//i.test(n),t=/^[a-z][a-z0-9+.-]*:/i.test(n);if(e||t&&!n.includes(\"@\"))return!0;let r=(n.includes(\"@\")?n.split(\"@\").pop():n).split(/[/?#:]/)[0];return!(/^\\\\d{1,3}(\\\\.\\\\d{1,3}){3}$/.test(r)||!/\\\\./.test(r))}}},addAttributes(){var n,e,t;return{href:{default:null,parseHTML(r){return r.getAttribute(\"href\")}},target:{default:(n=this.options.HTMLAttributes.target)!==null&&n!==void 0?n:null},rel:{default:(e=this.options.HTMLAttributes.rel)!==null&&e!==void 0?e:null},class:{default:(t=this.options.HTMLAttributes.class)!==null&&t!==void 0?t:null},title:{default:null}}},parseHTML(){return[{tag:\"a[href]\",getAttrs:n=>{let e=n.getAttribute(\"href\");return!e||!this.options.isAllowedUri(e,{defaultValidate:t=>!!et(t,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?!1:null}}]},renderHTML({HTMLAttributes:n}){return this.options.isAllowedUri(n.href,{defaultValidate:e=>!!et(e,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?[\"a\",L(this.options.HTMLAttributes,n),0]:[\"a\",L(this.options.HTMLAttributes,{...n,href:\"\"}),0]},markdownTokenName:\"link\",parseMarkdown:(n,e)=>e.applyMark(\"link\",e.parseInline(n.tokens||[]),{href:n.href,title:n.title||null}),renderMarkdown:(n,e)=>{var t,r,i,s;let o=(t=(r=n.attrs)===null||r===void 0?void 0:r.href)!==null&&t!==void 0?t:\"\",l=(i=(s=n.attrs)===null||s===void 0?void 0:s.title)!==null&&i!==void 0?i:\"\",a=e.renderChildren(n);return l?`[${a}](${o} \"${l}\")`:`[${a}](${o})`},addCommands(){return{setLink:n=>({chain:e})=>{let{href:t}=n;return this.options.isAllowedUri(t,{defaultValidate:r=>!!et(r,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?e().setMark(this.name,n).setMeta(\"preventAutolink\",!0).run():!1},toggleLink:n=>({chain:e})=>{let{href:t}=n||{};return t&&!this.options.isAllowedUri(t,{defaultValidate:r=>!!et(r,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?!1:e().toggleMark(this.name,n,{extendEmptyMarkRange:!0}).setMeta(\"preventAutolink\",!0).run()},unsetLink:()=>({chain:n})=>n().unsetMark(this.name,{extendEmptyMarkRange:!0}).setMeta(\"preventAutolink\",!0).run()}},addInputRules(){return this.options.markdownLinks?[d0({type:this.type,isAllowedHref:n=>this.options.isAllowedUri(n,{defaultValidate:e=>!!et(e,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})})]:[]},addPasteRules(){let n=e=>{let t=[];if(e){let{protocols:r,defaultProtocol:i}=this.options;Tl(e).filter(s=>s.isLink&&this.options.isAllowedUri(s.value,{defaultValidate:o=>!!et(o,r),protocols:r,defaultProtocol:i})).forEach(s=>{this.options.shouldAutoLink(s.value)&&t.push({text:s.value,data:{href:s.href},index:s.start})})}return t};return this.options.markdownLinks?[u0({type:this.type,isAllowedHref:e=>this.options.isAllowedUri(e,{defaultValidate:t=>!!et(t,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol}),findPlainUrls:n})]:[ye({find:n,type:this.type,getAttributes:e=>{var t;return{href:(t=e.data)===null||t===void 0?void 0:t.href}}})]},addProseMirrorPlugins(){let n=[],{protocols:e,defaultProtocol:t}=this.options;return this.options.autolink&&n.push(i0({type:this.type,defaultProtocol:this.options.defaultProtocol,validate:r=>this.options.isAllowedUri(r,{defaultValidate:i=>!!et(i,e),protocols:e,defaultProtocol:t}),shouldAutoLink:this.options.shouldAutoLink})),n.push(s0({type:this.type,editor:this.editor,openOnClick:this.options.openOnClick===\"whenNotEditable\"?!0:this.options.openOnClick,enableClickSelection:this.options.enableClickSelection})),this.options.linkOnPaste&&n.push(f0({editor:this.editor,defaultProtocol:this.options.defaultProtocol,type:this.type,shouldAutoLink:this.options.shouldAutoLink})),n}});var h0=\"listItem\",uf=\"textStyle\",ff=/^\\\\s*([-+*])\\\\s$/,El=j.create({name:\"bulletList\",addOptions(){return{itemTypeName:\"listItem\",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:\"block list\",content(){return`${this.options.itemTypeName}+`},parseHTML(){return[{tag:\"ul\"}]},renderHTML({HTMLAttributes:n}){return[\"ul\",L(this.options.HTMLAttributes,n),0]},markdownTokenName:\"list\",parseMarkdown:(n,e)=>n.type!==\"list\"||n.ordered?[]:{type:\"bulletList\",content:n.items?e.parseChildren(n.items):[]},renderMarkdown:(n,e)=>n.content?e.renderChildren(n.content,`\\n`):\"\",markdownOptions:{indentsContent:!0},addCommands(){return{toggleBulletList:()=>({commands:n,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(h0,this.editor.getAttributes(uf)).run():n.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{\"Mod-Shift-8\":()=>this.editor.commands.toggleBulletList()}},addInputRules(){let n=dt({find:ff,type:this.type});return(this.options.keepMarks||this.options.keepAttributes)&&(n=dt({find:ff,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:()=>this.editor.getAttributes(uf),editor:this.editor})),[n]}}),p0=(n,e,t)=>{let{selection:r}=n;if(!r.empty)return null;let{$from:i}=r;if(!i.parent.isTextblock||i.parentOffset!==i.parent.content.size)return null;let s=-1;for(let h=i.depth;h>0;h-=1)if(i.node(h).type.name===e){s=h;break}if(s<0)return null;let o=i.node(s),l=i.index(s);if(l+1>=o.childCount)return null;let a=o.child(l+1);if(!t.includes(a.type.name))return null;let c=n.schema.nodes[e],d=!1;if(a.forEach(h=>{h.type===c&&h.childCount>1&&(d=!0)}),!d)return null;let u=n.doc.resolve(i.after()).nodeAfter;if(!u||!t.includes(u.type.name))return null;let f=[];return u.forEach(h=>{f.push(h)}),f.length===0?null:{listItemDepth:s,nestedList:u,nestedListPos:i.after(),insertPos:i.after(s),items:f}},m0=(n,e,t,r)=>{let i=p0(n,t,r);if(!i)return!1;let{selection:s}=n,{nestedList:o,nestedListPos:l,insertPos:a,items:c}=i,d=n.tr;d.delete(l,l+o.nodeSize);let u=d.mapping.map(a);return d.insert(u,x.from(c)),d.setSelection(s.map(d.doc,d.mapping)),e&&e(d),!0},g0=(n,e,t)=>m0(n.state,n.view.dispatch,e,t),kf=(n,e)=>D.create({name:`${n}BranchingDeleteKeymap`,priority:101,addKeyboardShortcuts(){let t=()=>g0(this.editor,n,e);return{Delete:t,\"Mod-Delete\":t}}}),Sf=[[1e3,\"m\"],[900,\"cm\"],[500,\"d\"],[400,\"cd\"],[100,\"c\"],[90,\"xc\"],[50,\"l\"],[40,\"xl\"],[10,\"x\"],[9,\"ix\"],[5,\"v\"],[4,\"iv\"],[1,\"i\"]],Xi=\"abcdefghijklmnopqrstuvwxyz\",wf=String.raw`\\\\d+|[ivxlcdmIVXLCDM]+|${\"[a-zA-Z]{1,2}\"}`;function Qi(n){let e=n,t=\"\";for(let[r,i]of Sf)for(;e>=r;)t+=i,e-=r;return t}function Ml(n){return Qi(n).toUpperCase()}function vf(n){let e=n.toLowerCase(),t=0,r=0;for(;t<e.length;){let i=!1;for(let[s,o]of Sf)if(e.startsWith(o,t)){r+=s,t+=o.length,i=!0;break}if(!i)return 0}return r}function y0(n){if(!/^[ivxlcdmIVXLCDM]+$/.test(n))return!1;let e=vf(n);return e<=0?!1:(n===n.toLowerCase()?Qi(e):Ml(e))===n}function b0(n){let e=n.toLowerCase();if(e.length===1)return e.charCodeAt(0)-97+1;if(e.length===2){let t=e.charCodeAt(0)-97,r=e.charCodeAt(1)-97;return(t+1)*26+r+1}return 0}function Gi(n){if(n<=26)return Xi[n-1];let e=Math.floor((n-1)/26)-1,t=(n-1)%26;return e<0?Xi[t]:Xi[e]+Xi[t]}function Zi(n){if(!(!n||/^\\\\d+$/.test(n))){if(y0(n))return n===n.toLowerCase()?\"i\":\"I\";if(/^[a-z]{1,2}$/.test(n))return\"a\";if(/^[A-Z]{1,2}$/.test(n))return\"A\"}}function Cl(n){if(/^\\\\d+$/.test(n))return parseInt(n,10);let e=Zi(n);if(e===\"i\"||e===\"I\")return vf(n);if(e===\"a\"||e===\"A\"){let r=b0(n);return r>0?r:1}let t=parseInt(n,10);return Number.isNaN(t)?1:t}function x0(n,e){if(n===\"numeric\")return String(e);switch(n){case\"a\":return Gi(e);case\"A\":return Gi(e).toUpperCase();case\"i\":return Qi(e);case\"I\":return Ml(e);default:return String(e)}}function k0(n){var e;if(n.length===0)return!1;let t=(e=Zi(n[0]))!==null&&e!==void 0?e:\"numeric\",r=Cl(n[0]);if(r<1)return!1;for(let i=0;i<n.length;i++){let s=x0(t,r+i);if(n[i]!==s)return!1}return!0}function S0(n){return{type:Zi(n),start:Cl(n)}}function w0(n){let{type:e,start:t}=S0(n),r={};return e&&(r.type=e),t!==1&&(r.start=t),r}function v0(n,e,t=\". \"){let r=e+1;if(!n||n===\"1\")return`${r}${t}`;switch(n){case\"a\":return`${Gi(r)}${t}`;case\"A\":return`${Gi(r).toUpperCase()}${t}`;case\"i\":return`${Qi(r)}${t}`;case\"I\":return`${Ml(r)}${t}`;default:return`${r}${t}`}}function T0(n){var e,t;let r=(e=n.tokens)===null||e===void 0?void 0:e[0];return!!(n.text&&((t=n.tokens)===null||t===void 0?void 0:t.length)===1&&r?.type===\"list\"&&r.ordered&&r.raw===n.text)}function E0(n,e){return e.tokenizeInline?e.parseInline(e.tokenizeInline(n)):e.parseInline([{type:\"text\",raw:n,text:n}])}var Al=j.create({name:\"listItem\",addOptions(){return{HTMLAttributes:{},bulletListTypeName:\"bulletList\",orderedListTypeName:\"orderedList\"}},content:\"paragraph block*\",defining:!0,parseHTML(){return[{tag:\"li\"}]},renderHTML({HTMLAttributes:n}){return[\"li\",L(this.options.HTMLAttributes,n),0]},markdownTokenName:\"list_item\",parseMarkdown:(n,e)=>{var t;if(n.type!==\"list_item\")return[];let r=(t=e.parseBlockChildren)!==null&&t!==void 0?t:e.parseChildren,i=[];if(n.tokens&&n.tokens.length>0){if(T0(n))return{type:\"listItem\",content:[{type:\"paragraph\",content:E0(n.text||\"\",e)}]};if(n.tokens.some(s=>s.type===\"paragraph\"))i=r(n.tokens);else{let s=n.tokens[0];if(s&&s.type===\"text\"&&s.tokens&&s.tokens.length>0){if(i=[{type:\"paragraph\",content:e.parseInline(s.tokens)}],n.tokens.length>1){let o=r(n.tokens.slice(1));i.push(...o)}}else i=r(n.tokens)}}return i.length===0&&(i=[{type:\"paragraph\",content:[]}]),{type:\"listItem\",content:i}},renderMarkdown:(n,e,t)=>Go(n,e,r=>{if(r.parentType===\"bulletList\")return\"- \";if(r.parentType===\"orderedList\"){var i,s;let o=((i=r.meta)===null||i===void 0||(i=i.parentAttrs)===null||i===void 0?void 0:i.start)||1;return v0((s=r.meta)===null||s===void 0||(s=s.parentAttrs)===null||s===void 0?void 0:s.type,o-1+(r.index||0),\". \")}return\"- \"},t,{alignNestedToPrefix:t?.parentType===\"orderedList\"}),addExtensions(){return[kf(this.name,[this.options.bulletListTypeName,this.options.orderedListTypeName])]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),\"Shift-Tab\":()=>this.editor.commands.liftListItem(this.name)}}}),Rl=(n,e)=>{let{$from:t}=e.selection,r=X(n,e.schema),i=null,s=t.depth,o=t.pos,l=null;for(;s>0&&l===null;)i=t.node(s),i.type===r?l=s:(s-=1,o-=1);return l===null?null:{$pos:e.doc.resolve(o),depth:l}},Tf=(n,e)=>{let t=Rl(n,e);if(!t)return!1;let[,r]=au(e,n,t.$pos.pos+4);return r},M0=(n,e,t)=>{let{$anchor:r}=n.selection,i=Math.max(0,r.pos-2),s=n.doc.resolve(i).node();return!(!s||!t.includes(s.type.name))},hf=(n,e,t)=>{if(n.commands.undoInputRule())return!0;if(n.state.selection.from!==n.state.selection.to)return!1;if(!Le(n.state,e)&&M0(n.state,e,t)){let{$anchor:s}=n.state.selection,o=n.state.doc.resolve(s.before()-1),l=[];o.node().descendants((d,u)=>{d.type.name===e&&l.push({node:d,pos:u})});let a=l.at(-1);if(!a)return!1;let c=n.state.doc.resolve(o.start()+a.pos+1);return n.chain().cut({from:s.start()-1,to:s.end()+1},c.end()).joinForward().run()}if(!Le(n.state,e)||!uu(n.state))return!1;let{$from:r}=n.state.selection,i=r.depth-1;return r.node(i).type!==n.schema.nodes[e]||r.index(i)!==0?!1:n.chain().liftListItem(e).run()},C0=(n,e)=>{let t=Tf(n,e),r=Rl(n,e);return!r||!t?!1:t>r.depth},A0=(n,e)=>{let t=Tf(n,e),r=Rl(n,e);return!r||!t?!1:t<r.depth},pf=(n,e)=>{if(!Le(n.state,e)||!du(n.state,e))return!1;let{selection:t}=n.state,{$from:r,$to:i}=t;return!t.empty&&r.sameParent(i)?!1:C0(e,n.state)?n.chain().focus(n.state.selection.from+4).lift(e).joinBackward().run():A0(e,n.state)?n.chain().joinForward().joinBackward().run():n.commands.joinItemForward()},R0=(n,e,t)=>{let{state:r}=n,{selection:i}=r;if(!i.empty)return!1;let{$from:s}=i;if(s.parentOffset!==0||!s.parent.isTextblock||Le(r,e))return!1;let o=cu(s);if(!o||!t.includes(o.type.name))return!1;let l=o.lastChild;if(!l||l.type.name!==e)return!1;let a=s.parent;if(!l.canReplace(l.childCount,l.childCount,x.from(a)))return!1;let c=s.before(),d=s.after(),u=c-2;return n.commands.command(({tr:f,dispatch:h})=>(h&&(f.delete(c,d).insert(u,x.from(a)),f.setSelection(T.create(f.doc,u+1)),f.scrollIntoView()),!0))};var Nl=D.create({name:\"listKeymap\",addOptions(){return{listTypes:[{itemName:\"listItem\",wrapperNames:[\"bulletList\",\"orderedList\"]},{itemName:\"taskItem\",wrapperNames:[\"taskList\"]}]}},addKeyboardShortcuts(){return{Delete:({editor:n})=>{let e=!1;return this.options.listTypes.forEach(({itemName:t})=>{n.state.schema.nodes[t]!==void 0&&pf(n,t)&&(e=!0)}),e},\"Mod-Delete\":({editor:n})=>{let e=!1;return this.options.listTypes.forEach(({itemName:t})=>{n.state.schema.nodes[t]!==void 0&&pf(n,t)&&(e=!0)}),e},Backspace:({editor:n})=>{let e=!1;return this.options.listTypes.forEach(({itemName:t,wrapperNames:r})=>{n.state.schema.nodes[t]!==void 0&&hf(n,t,r)&&(e=!0)}),e},\"Mod-Backspace\":({editor:n})=>{let e=!1;return this.options.listTypes.forEach(({itemName:t,wrapperNames:r})=>{n.state.schema.nodes[t]!==void 0&&hf(n,t,r)&&(e=!0)}),e},Tab:({editor:n})=>{for(let{itemName:e,wrapperNames:t}of this.options.listTypes)if(n.state.schema.nodes[e]!==void 0&&R0(n,e,t))return!0;return!1}}}}),Yi=new RegExp(`^(\\\\\\\\s*)(${wf})([.)])\\\\\\\\s+(.*)$`),N0=/^\\\\s/,mn={heading:/^#{1,6}(?:\\\\s|$)/,bulletItem:/^[-+*]\\\\s+/,codeFence:/^(?:```|~~~)/,blockMath:/^\\\\$\\\\$/,thematicBreak:/^(?:(?:-[ \\\\t]*){3,}|(?:_[ \\\\t]*){3,}|(?:\\\\*[ \\\\t]*){3,})$/};function O0(n){return Yi.test(n.trimStart())}function I0(n){let e=n.trimStart();return mn.bulletItem.test(e)||O0(e)||mn.heading.test(e)||mn.thematicBreak.test(e)&&!e.startsWith(\"-\")||/^>\\\\s?/.test(e)||mn.codeFence.test(e)||mn.blockMath.test(e)}function D0(n){return Object.values(mn).some(e=>e.test(n))}function L0(n){let e=[],t=[],r=!1;return n.forEach(i=>{if(r){t.push(i);return}if(i.trim()===\"\"){r=!0,t.push(i);return}if(e.length>0&&I0(i)){r=!0,t.push(i);return}e.push(i)}),{paragraphLines:e,blockLines:t}}function mf(n){let e=[],t=0,r=0;for(;t<n.length;){let i=n[t],s=i.match(Yi);if(!s)break;let[,o,l,a,c]=s,d=o.length,u=parseInt(l,10),f=isNaN(u)?Zi(l):void 0,h=isNaN(u)?Cl(l):u,p=[c],m=t+1,g=[i],y=!1;for(;m<n.length;){let b=n[m];if(b.match(Yi))break;if(b.trim()===\"\")g.push(b),p.push(\"\"),y=!0,m+=1;else if(b.match(N0)){let w=b.length-b.trimStart().length,k=d+l.length+1;g.push(b),p.push(b.slice(Math.min(w,k))),m+=1}else{if(y||D0(b))break;g.push(b),p.push(b),m+=1}}e.push({indent:d,number:h,type:f,content:p.join(`\\n`).trim(),contentLines:p,raw:g.join(`\\n`)}),r=m,t=m}return[e,r]}var P0=new RegExp(`^(${wf})([.)])\\\\\\\\s+(.+)$`);function B0(n){let e=n.split(`\\n`).filter(r=>r.trim().length>0);if(e.length===0)return null;let t=[];for(let r of e){let i=r.trim().match(P0);if(!i)return null;t.push({marker:i[1],content:i[3]})}return k0(t.map(r=>r.marker))?{type:\"orderedList\",attrs:w0(t[0].marker),content:t.map(r=>({type:\"listItem\",content:[{type:\"paragraph\",content:[{type:\"text\",text:r.content}]}]}))}:null}function Ef(n,e,t){let r=[],i=0;for(;i<n.length;){let s=n[i];if(s.indent===e){let{paragraphLines:o,blockLines:l}=L0(s.contentLines),a=o.join(`\\n`).trim(),c=[];a&&c.push({type:\"paragraph\",raw:a,tokens:t.inlineTokens(a)});let d=l.join(`\\n`).trim();if(d){let h=t.blockTokens(d);c.push(...h)}let u=i+1,f=[];for(;u<n.length&&n[u].indent>e;)f.push(n[u]),u+=1;if(f.length>0){let h=Ef(f,Math.min(...f.map(p=>p.indent)),t);c.push({type:\"list\",ordered:!0,start:f[0].number,typeMarker:f[0].type,items:h,raw:f.map(p=>p.raw).join(`\\n`)})}r.push({type:\"list_item\",raw:s.raw,tokens:c}),i=u}else i+=1}return r}function z0(n,e){return n.map(t=>{if(t.type!==\"list_item\")return e.parseChildren([t])[0];let r=[];return t.tokens&&t.tokens.length>0&&t.tokens.forEach(i=>{if(i.type===\"paragraph\"||i.type===\"list\"||i.type===\"blockquote\"||i.type===\"code\")r.push(...e.parseChildren([i]));else if(i.type===\"text\"&&i.tokens){let s=e.parseChildren([i]);r.push({type:\"paragraph\",content:s})}else{let s=e.parseChildren([i]);s.length>0&&r.push(...s)}}),{type:\"listItem\",content:r}})}var H0=64;function gf(n,e){let t=[],r=0;for(;t.length<e;){let i=n.indexOf(`\\n`,r);if(i===-1)return t.push(n.slice(r)),t;t.push(n.slice(r,i)),r=i+1}return t}function $0(n){let e=n.indexOf(`\\n`),t=e===-1?n:n.slice(0,e);if(!Yi.test(t))return[[],0,[]];let r=H0,i=gf(n,r),s=mf(i);for(;s[1]===i.length&&i.length===r;)r*=2,i=gf(n,r),s=mf(i);return[s[0],s[1],i]}var F0=\"listItem\",yf=\"textStyle\",bf=/^(\\\\d+)\\\\.\\\\s$/;function xf(n){let e=n.match(/list-style-type\\\\s*:\\\\s*([^;]+)/i);if(!e)return null;switch(e[1].trim().toLowerCase()){case\"upper-roman\":return\"I\";case\"lower-roman\":return\"i\";case\"upper-alpha\":case\"upper-latin\":return\"A\";case\"lower-alpha\":case\"lower-latin\":return\"a\";default:return null}}var Ol=j.create({name:\"orderedList\",addOptions(){return{itemTypeName:\"listItem\",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:\"block list\",content(){return`${this.options.itemTypeName}+`},addAttributes(){return{start:{default:1,parseHTML:n=>n.hasAttribute(\"start\")?parseInt(n.getAttribute(\"start\")||\"\",10):1},type:{default:null,parseHTML:n=>{let e=n.getAttribute(\"type\");if(e)return e;let t=n.getAttribute(\"style\");if(t){let i=xf(t);if(i)return i}let r=n.querySelector(\"li\");if(r){let i=r.getAttribute(\"style\");if(i){let s=xf(i);if(s)return s}}return null}}}},parseHTML(){return[{tag:\"ol\"}]},renderHTML({HTMLAttributes:n}){let{start:e,type:t,...r}=n,i=L(this.options.HTMLAttributes,r);return e!==1&&(i.start=e),t&&t!==\"1\"&&(i.type=t),[\"ol\",i,0]},markdownTokenName:\"list\",parseMarkdown:(n,e)=>{if(n.type!==\"list\"||!n.ordered)return[];let t=n.start||1,r=n.typeMarker,i=n.items?z0(n.items,e):[],s={};return t!==1&&(s.start=t),r&&(s.type=r),Object.keys(s).length>0?{type:\"orderedList\",attrs:s,content:i}:{type:\"orderedList\",content:i}},renderMarkdown:(n,e)=>n.content?e.renderChildren(n.content,`\\n`):\"\",markdownTokenizer:{name:\"orderedList\",level:\"block\",start:()=>-1,tokenize:(n,e,t)=>{var r,i;let[s,o,l]=$0(n);if(s.length===0)return;let a=Ef(s,s[0].indent,t);if(a.length!==0)return{type:\"list\",ordered:!0,start:((r=s[0])===null||r===void 0?void 0:r.number)||1,typeMarker:(i=s[0])===null||i===void 0?void 0:i.type,items:a,raw:l.slice(0,o).join(`\\n`)}}},markdownOptions:{indentsContent:!0},addCommands(){return{toggleOrderedList:()=>({commands:n,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(F0,this.editor.getAttributes(yf)).run():n.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{\"Mod-Shift-7\":()=>this.editor.commands.toggleOrderedList()}},addProseMirrorPlugins(){return[new O({props:{handlePaste:(n,e)=>{var t,r;let i=(t=e.clipboardData)===null||t===void 0?void 0:t.getData(\"text/html\");if(i?.trim())return!1;let s=(r=e.clipboardData)===null||r===void 0?void 0:r.getData(\"text/plain\");if(!s)return!1;let o=B0(s);if(!o)return!1;try{let l=n.state.schema.nodeFromJSON(o),a=n.state.tr.replaceSelectionWith(l);return n.dispatch(a),!0}catch{return!1}}}})]},addInputRules(){let n=(t,r)=>(!r.attrs.type||r.attrs.type===\"1\")&&r.childCount+r.attrs.start===+t[1],e=dt({find:bf,type:this.type,getAttributes:t=>({start:+t[1]}),joinPredicate:n});return(this.options.keepMarks||this.options.keepAttributes)&&(e=dt({find:bf,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:t=>({start:+t[1],...this.editor.getAttributes(yf)}),joinPredicate:n,editor:this.editor})),[e]}}),_0=/^\\\\s*(\\\\[([( |x])?\\\\])\\\\s$/,V0=\"position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0\",j0=(n,e,t)=>{var r;return(t==null||(r=t.checkboxLabel)===null||r===void 0?void 0:r.call(t,n,e))||`Task item checkbox for ${n.textContent||\"empty task item\"}`},W0=j.create({name:\"taskItem\",addOptions(){return{nested:!1,HTMLAttributes:{},taskListTypeName:\"taskList\",a11y:void 0}},content(){return this.options.nested?\"paragraph block*\":\"paragraph+\"},defining:!0,addAttributes(){return{checked:{default:!1,keepOnSplit:!1,parseHTML:n=>{let e=n.getAttribute(\"data-checked\");return e===\"\"||e===\"true\"},renderHTML:n=>({\"data-checked\":n.checked})}}},parseHTML(){return[{tag:`li[data-type=\"${this.name}\"]`,priority:51,contentElement:n=>{var e;return(e=n.querySelector(\"div\"))!==null&&e!==void 0?e:n}}]},renderHTML({node:n,HTMLAttributes:e}){return[\"li\",L(this.options.HTMLAttributes,e,{\"data-type\":this.name}),[\"label\",[\"input\",{type:\"checkbox\",checked:n.attrs.checked?\"checked\":null}],[\"span\"]],[\"div\",0]]},parseMarkdown:(n,e)=>{let t=[];if(n.tokens&&n.tokens.length>0?t.push(e.createNode(\"paragraph\",{},e.parseInline(n.tokens))):n.text?t.push(e.createNode(\"paragraph\",{},[e.createNode(\"text\",{text:n.text})])):t.push(e.createNode(\"paragraph\",{},[])),n.nestedTokens&&n.nestedTokens.length>0){let r=e.parseChildren(n.nestedTokens);t.push(...r)}return e.createNode(\"taskItem\",{checked:n.checked||!1},t)},renderMarkdown:(n,e)=>{var t;let r=`- [${!((t=n.attrs)===null||t===void 0)&&t.checked?\"x\":\" \"}] `;return Go(n,e,r)},addExtensions(){return this.options.nested?[kf(this.name,[this.options.taskListTypeName])]:[]},addKeyboardShortcuts(){let n={Enter:()=>this.editor.commands.splitListItem(this.name),\"Shift-Tab\":()=>this.editor.commands.liftListItem(this.name)};return this.options.nested?{...n,Tab:()=>this.editor.commands.sinkListItem(this.name)}:n},addNodeView(){return({node:n,HTMLAttributes:e,getPos:t,editor:r})=>{let i=document.createElement(\"li\"),s=document.createElement(\"label\"),o=document.createElement(\"span\"),l=document.createElement(\"input\"),a=document.createElement(\"div\");o.style.cssText=V0;let c=u=>{let f=j0(u,u.attrs.checked,this.options.a11y);l.setAttribute(\"aria-label\",f),o.textContent=f};c(n),s.contentEditable=\"false\",l.type=\"checkbox\",l.addEventListener(\"mousedown\",u=>u.preventDefault()),l.addEventListener(\"change\",u=>{if(!r.isEditable&&!this.options.onReadOnlyChecked){l.checked=!l.checked;return}let{checked:f}=u.target;r.isEditable&&typeof t==\"function\"&&r.chain().focus(void 0,{scrollIntoView:!1}).command(({tr:h})=>{let p=t();if(typeof p!=\"number\")return!1;let m=h.doc.nodeAt(p);return h.setNodeMarkup(p,void 0,{...m?.attrs,checked:f}),!0}).run(),!r.isEditable&&this.options.onReadOnlyChecked&&(this.options.onReadOnlyChecked(n,f)||(l.checked=!l.checked))}),Object.entries(this.options.HTMLAttributes).forEach(([u,f])=>{i.setAttribute(u,f)}),i.dataset.checked=n.attrs.checked,l.checked=n.attrs.checked,s.append(l,o),i.append(s,a),Object.entries(e).forEach(([u,f])=>{i.setAttribute(u,f)});let d=new Set(Object.keys(e));return{dom:i,contentDOM:a,update:u=>{if(u.type!==this.type)return!1;i.dataset.checked=u.attrs.checked,l.checked=u.attrs.checked,c(u);let f=r.extensionManager.attributes,h=on(u,f),p=new Set(Object.keys(h)),m=this.options.HTMLAttributes;return d.forEach(g=>{p.has(g)||(g in m?i.setAttribute(g,m[g]):i.removeAttribute(g))}),Object.entries(h).forEach(([g,y])=>{y==null?g in m?i.setAttribute(g,m[g]):i.removeAttribute(g):i.setAttribute(g,y)}),d=p,!0}}}},addInputRules(){return[dt({find:_0,type:this.type,getAttributes:n=>({checked:n[n.length-1]===\"x\"})})]}}),U0=j.create({name:\"taskList\",addOptions(){return{itemTypeName:\"taskItem\",HTMLAttributes:{}}},group:\"block list\",content(){return`${this.options.itemTypeName}+`},parseHTML(){return[{tag:`ul[data-type=\"${this.name}\"]`,priority:51}]},renderHTML({HTMLAttributes:n}){return[\"ul\",L(this.options.HTMLAttributes,n,{\"data-type\":this.name}),0]},parseMarkdown:(n,e)=>e.createNode(\"taskList\",{},e.parseChildren(n.items||[])),renderMarkdown:(n,e)=>n.content?e.renderChildren(n.content,`\\n`):\"\",markdownTokenizer:{name:\"taskList\",level:\"block\",start(n){var e;let t=(e=n.match(/^\\\\s*[-+*]\\\\s+\\\\[([ xX])\\\\]\\\\s+/))===null||e===void 0?void 0:e.index;return t!==void 0?t:-1},tokenize(n,e,t){let r=s=>{let o=Xo(s,{itemPattern:/^(\\\\s*)([-+*])\\\\s+\\\\[([ xX])\\\\]\\\\s+(.*)$/,extractItemData:l=>({indentLevel:l[1].length,mainContent:l[4],checked:l[3].toLowerCase()===\"x\"}),createToken:(l,a)=>({type:\"taskItem\",raw:\"\",mainContent:l.mainContent,indentLevel:l.indentLevel,checked:l.checked,text:l.mainContent,tokens:t.inlineTokens(l.mainContent),nestedTokens:a}),customNestedParser:r},t);if(o){let l={type:\"taskList\",raw:o.raw,items:o.items},a=s.slice(o.raw.length);return a.trim()?[l,...t.blockTokens(a)]:[l]}return t.blockTokens(s)},i=Xo(n,{itemPattern:/^(\\\\s*)([-+*])\\\\s+\\\\[([ xX])\\\\]\\\\s+(.*)$/,extractItemData:s=>({indentLevel:s[1].length,mainContent:s[4],checked:s[3].toLowerCase()===\"x\"}),createToken:(s,o)=>({type:\"taskItem\",raw:\"\",mainContent:s.mainContent,indentLevel:s.indentLevel,checked:s.checked,text:s.mainContent,tokens:t.inlineTokens(s.mainContent),nestedTokens:o}),customNestedParser:r},t);if(i)return{type:\"taskList\",raw:i.raw,items:i.items}}},markdownOptions:{indentsContent:!0},addCommands(){return{toggleTaskList:()=>({commands:n})=>n.toggleList(this.name,this.options.itemTypeName)}},addKeyboardShortcuts(){return{\"Mod-Shift-9\":()=>this.editor.commands.toggleTaskList()}}}),fw=D.create({name:\"listKit\",addExtensions(){let n=[];return this.options.bulletList!==!1&&n.push(El.configure(this.options.bulletList)),this.options.listItem!==!1&&n.push(Al.configure(this.options.listItem)),this.options.listKeymap!==!1&&n.push(Nl.configure(this.options.listKeymap)),this.options.orderedList!==!1&&n.push(Ol.configure(this.options.orderedList)),this.options.taskItem!==!1&&n.push(W0.configure(this.options.taskItem)),this.options.taskList!==!1&&n.push(U0.configure(this.options.taskList)),n}});var es=\"&nbsp;\",Il=\"\\\\xA0\",Mf=j.create({name:\"paragraph\",priority:1e3,addOptions(){return{HTMLAttributes:{}}},group:\"block\",content:\"inline*\",parseHTML(){return[{tag:\"p\"}]},renderHTML({HTMLAttributes:n}){return[\"p\",L(this.options.HTMLAttributes,n),0]},parseMarkdown:(n,e)=>{let t=n.tokens||[];if(t.length===1&&t[0].type===\"image\")return e.parseChildren([t[0]]);let r=e.parseInline(t);return t.length===1&&t[0].type===\"text\"&&(t[0].raw===es||t[0].text===es||t[0].raw===Il||t[0].text===Il)&&r.length===1&&r[0].type===\"text\"&&(r[0].text===es||r[0].text===Il)?e.createNode(\"paragraph\",void 0,[]):e.createNode(\"paragraph\",void 0,r)},renderMarkdown:(n,e,t)=>{if(!n)return\"\";let r=Array.isArray(n.content)?n.content:[];if(r.length===0){var i,s;let o=Array.isArray(t==null||(i=t.previousNode)===null||i===void 0?void 0:i.content)?t.previousNode.content:[];return(t==null||(s=t.previousNode)===null||s===void 0?void 0:s.type)===\"paragraph\"&&o.length===0?es:\"\"}return e.renderChildren(r)},addCommands(){return{setParagraph:()=>({commands:n})=>n.setNode(this.name)}},addKeyboardShortcuts(){return{\"Mod-Alt-0\":()=>this.editor.commands.setParagraph()}}});var K0=/(?:^|\\\\s)(~~(?!\\\\s+~~)((?:[^~]+))~~(?!\\\\s+~~))$/,q0=/(?:^|\\\\s)(~~(?!\\\\s+~~)((?:[^~]+))~~(?!\\\\s+~~))/g,Cf=W.create({name:\"strike\",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:\"s\"},{tag:\"del\"},{tag:\"strike\"},{style:\"text-decoration\",consuming:!1,getAttrs:n=>n.includes(\"line-through\")?{}:!1}]},renderHTML({HTMLAttributes:n}){return[\"s\",L(this.options.HTMLAttributes,n),0]},markdownTokenName:\"del\",parseMarkdown:(n,e)=>e.applyMark(\"strike\",e.parseInline(n.tokens||[])),renderMarkdown:(n,e)=>`~~${e.renderChildren(n)}~~`,addCommands(){return{setStrike:()=>({commands:n})=>n.setMark(this.name),toggleStrike:()=>({commands:n})=>n.toggleMark(this.name),unsetStrike:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{\"Mod-Shift-s\":()=>this.editor.commands.toggleStrike()}},addInputRules(){return[ve({find:K0,type:this.type})]},addPasteRules(){return[ye({find:q0,type:this.type})]}});var Af=j.create({name:\"text\",group:\"inline\",parseMarkdown:n=>({type:\"text\",text:n.text||\"\"}),renderMarkdown:n=>n.text||\"\"});var Rf=W.create({name:\"underline\",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:\"u\"},{style:\"text-decoration\",consuming:!1,getAttrs:n=>n.includes(\"underline\")?{}:!1}]},renderHTML({HTMLAttributes:n}){return[\"u\",L(this.options.HTMLAttributes,n),0]},parseMarkdown(n,e){return e.applyMark(this.name||\"underline\",e.parseInline(n.tokens||[]))},renderMarkdown(n,e){return`++${e.renderChildren(n)}++`},markdownTokenizer:{name:\"underline\",level:\"inline\",start(n){return n.indexOf(\"++\")},tokenize(n,e,t){let r=/^(\\\\+\\\\+)([\\\\s\\\\S]+?)(\\\\+\\\\+)/.exec(n);if(!r)return;let i=r[2].trim();return{type:\"underline\",raw:r[0],text:i,tokens:t.inlineTokens(i)}}},addCommands(){return{setUnderline:()=>({commands:n})=>n.setMark(this.name),toggleUnderline:()=>({commands:n})=>n.toggleMark(this.name),unsetUnderline:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{\"Mod-u\":()=>this.editor.commands.toggleUnderline(),\"Mod-U\":()=>this.editor.commands.toggleUnderline()}}});function Nf(n={}){return new O({view(e){return new Dl(e,n)}})}var Dl=class{constructor(e,t){var r;this.editorView=e,this.cursorPos=null,this.element=null,this.timeout=-1,this.lastDragEvent=null,this.width=(r=t.width)!==null&&r!==void 0?r:1,this.color=t.color===!1?void 0:t.color||\"black\",this.class=t.class,this.handlers=[\"dragover\",\"dragend\",\"drop\",\"dragleave\"].map(i=>{let s=o=>{this[i](o)};return e.dom.addEventListener(i,s),{name:i,handler:s}})}destroy(){this.setCursor(null),this.handlers.forEach(({name:e,handler:t})=>this.editorView.dom.removeEventListener(e,t))}update(e,t){if(this.cursorPos!=null&&t.doc!=e.state.doc)if(this.lastDragEvent){let r=this.computeTarget(this.lastDragEvent);r==this.cursorPos?this.updateOverlay():this.setCursor(r)}else this.updateOverlay()}setCursor(e){e!=this.cursorPos&&(this.cursorPos=e,e==null?(this.element.parentNode.removeChild(this.element),this.element=null):this.updateOverlay())}updateOverlay(){let e=this.editorView.state.doc.resolve(this.cursorPos),t=!e.parent.inlineContent,r,i=this.editorView.dom,s=i.getBoundingClientRect(),o=s.width/i.offsetWidth,l=s.height/i.offsetHeight;if(t){let u=e.nodeBefore,f=e.nodeAfter;if(u||f){let h=this.editorView.nodeDOM(this.cursorPos-(u?u.nodeSize:0));if(h){let p=h.getBoundingClientRect(),m=u?p.bottom:p.top;u&&f&&(m=(m+this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top)/2);let g=this.width/2*l;r={left:p.left,right:p.right,top:m-g,bottom:m+g}}}}if(!r){let u=this.editorView.coordsAtPos(this.cursorPos),f=this.width/2*o;r={left:u.left-f,right:u.left+f,top:u.top,bottom:u.bottom}}let a=this.editorView.dom.offsetParent;this.element||(this.element=a.appendChild(document.createElement(\"div\")),this.class&&(this.element.className=this.class),this.element.style.cssText=\"position: absolute; z-index: 50; pointer-events: none;\",this.color&&(this.element.style.backgroundColor=this.color)),this.element.classList.toggle(\"prosemirror-dropcursor-block\",t),this.element.classList.toggle(\"prosemirror-dropcursor-inline\",!t);let c,d;if(!a||a==document.body&&getComputedStyle(a).position==\"static\")c=-pageXOffset,d=-pageYOffset;else{let u=a.getBoundingClientRect(),f=u.width/a.offsetWidth,h=u.height/a.offsetHeight;c=u.left-a.scrollLeft*f,d=u.top-a.scrollTop*h}this.element.style.left=(r.left-c)/o+\"px\",this.element.style.top=(r.top-d)/l+\"px\",this.element.style.width=(r.right-r.left)/o+\"px\",this.element.style.height=(r.bottom-r.top)/l+\"px\"}scheduleRemoval(e){clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.setCursor(null),e)}computeTarget(e){let t=this.editorView.posAtCoords({left:e.clientX,top:e.clientY}),r=t&&t.inside>=0&&this.editorView.state.doc.nodeAt(t.inside),i=r&&r.type.spec.disableDropCursor,s=typeof i==\"function\"?i(this.editorView,t,e):i;if(!t||s)return null;let o=t.pos;if(this.editorView.dragging&&this.editorView.dragging.slice){let l=Ir(this.editorView.state.doc,o,this.editorView.dragging.slice);l!=null&&(o=l)}return o}dragover(e){if(!this.editorView.editable)return;this.lastDragEvent=e;let t=this.computeTarget(e);t!=null&&(this.setCursor(t),this.scheduleRemoval(5e3))}dragend(){this.scheduleRemoval(20)}drop(){this.scheduleRemoval(20)}dragleave(e){this.editorView.dom.contains(e.relatedTarget)||this.setCursor(null)}};var ae=class n extends R{constructor(e){super(e,e)}map(e,t){let r=e.resolve(t.map(this.head));return n.valid(r)?new n(r):R.near(r)}content(){return v.empty}eq(e){return e instanceof n&&e.head==this.head}toJSON(){return{type:\"gapcursor\",pos:this.head}}static fromJSON(e,t){if(typeof t.pos!=\"number\")throw new RangeError(\"Invalid input for GapCursor.fromJSON\");return new n(e.resolve(t.pos))}getBookmark(){return new Ll(this.anchor)}static valid(e){let t=e.parent;if(t.inlineContent||!J0(e)||!X0(e))return!1;let r=t.type.spec.allowGapCursor;if(r!=null)return r;let i=t.contentMatchAt(e.index()).defaultType;return i&&i.isTextblock}static findGapCursorFrom(e,t,r=!1){e:for(;;){if(!r&&n.valid(e))return e;let i=e.pos,s=null;for(let o=e.depth;;o--){let l=e.node(o);if(t>0?e.indexAfter(o)<l.childCount:e.index(o)>0){s=l.child(t>0?e.indexAfter(o):e.index(o)-1);break}else if(o==0)return null;i+=t;let a=e.doc.resolve(i);if(n.valid(a))return a}for(;;){let o=t>0?s.firstChild:s.lastChild;if(!o){if(s.isAtom&&!s.isText&&!M.isSelectable(s)){e=e.doc.resolve(i+s.nodeSize*t),r=!1;continue e}break}s=o,i+=t;let l=e.doc.resolve(i);if(n.valid(l))return l}return null}}};ae.prototype.visible=!1;ae.findFrom=ae.findGapCursorFrom;R.jsonID(\"gapcursor\",ae);var Ll=class n{constructor(e){this.pos=e}map(e){return new n(e.map(this.pos))}resolve(e){let t=e.resolve(this.pos);return ae.valid(t)?new ae(t):R.near(t)}};function Of(n){return n.isAtom||n.spec.isolating||n.spec.createGapCursor}function J0(n){for(let e=n.depth;e>=0;e--){let t=n.index(e),r=n.node(e);if(t==0){if(r.type.spec.isolating)return!0;continue}for(let i=r.child(t-1);;i=i.lastChild){if(i.childCount==0&&!i.inlineContent||Of(i.type))return!0;if(i.inlineContent)return!1}}return!0}function X0(n){for(let e=n.depth;e>=0;e--){let t=n.indexAfter(e),r=n.node(e);if(t==r.childCount){if(r.type.spec.isolating)return!0;continue}for(let i=r.child(t);;i=i.firstChild){if(i.childCount==0&&!i.inlineContent||Of(i.type))return!0;if(i.inlineContent)return!1}}return!0}function If(){return new O({props:{decorations:Z0,createSelectionBetween(n,e,t){return e.pos==t.pos&&ae.valid(t)?new ae(t):null},handleClick:Y0,handleKeyDown:G0,handleDOMEvents:{beforeinput:Q0}}})}var G0=Ro({ArrowLeft:ts(\"horiz\",-1),ArrowRight:ts(\"horiz\",1),ArrowUp:ts(\"vert\",-1),ArrowDown:ts(\"vert\",1)});function ts(n,e){let t=n==\"vert\"?e>0?\"down\":\"up\":e>0?\"right\":\"left\";return function(r,i,s){let o=r.selection,l=e>0?o.$to:o.$from,a=o.empty;if(o instanceof T){if(!s.endOfTextblock(t)||l.depth==0)return!1;a=!1,l=r.doc.resolve(e>0?l.after():l.before())}let c=ae.findGapCursorFrom(l,e,a);return c?(i&&i(r.tr.setSelection(new ae(c))),!0):!1}}function Y0(n,e,t){if(!n||!n.editable)return!1;let r=n.state.doc.resolve(e);if(!ae.valid(r))return!1;let i=n.posAtCoords({left:t.clientX,top:t.clientY});return i&&i.inside>-1&&M.isSelectable(n.state.doc.nodeAt(i.inside))?!1:(n.dispatch(n.state.tr.setSelection(new ae(r))),!0)}function Q0(n,e){if(e.inputType!=\"insertCompositionText\"||!(n.state.selection instanceof ae))return!1;let{$from:t}=n.state.selection,r=t.parent.contentMatchAt(t.index()).findWrapping(n.state.schema.nodes.text);if(!r)return!1;let i=x.empty;for(let o=r.length-1;o>=0;o--)i=x.from(r[o].createAndFill(null,i));let s=n.state.tr.replace(t.pos,t.pos,new v(i,0,0));return s.setSelection(T.near(s.doc.resolve(t.pos+1))),n.dispatch(s),!1}function Z0(n){if(!(n.selection instanceof ae))return null;let e=document.createElement(\"div\");return e.className=\"ProseMirror-gapcursor\",_.create(n.doc,[fe.widget(n.selection.head,e,{key:\"gapcursor\"})])}var Fw=D.create({name:\"characterCount\",addOptions(){return{limit:null,autoTrim:!0,mode:\"textSize\",textCounter:n=>n.length,wordCounter:n=>n.split(\" \").filter(e=>e!==\"\").length}},addStorage(){return{characters:()=>0,words:()=>0}},onBeforeCreate(){this.storage.characters=n=>{let e=n?.node||this.editor.state.doc;if((n?.mode||this.options.mode)===\"textSize\"){let t=e.textBetween(0,e.content.size,void 0,\" \");return this.options.textCounter(t)}return e.nodeSize},this.storage.words=n=>{let e=n?.node||this.editor.state.doc,t=e.textBetween(0,e.content.size,\" \",\" \");return this.options.wordCounter(t)}},addProseMirrorPlugins(){let n=!1;return[new O({key:new H(\"characterCount\"),appendTransaction:(e,t,r)=>{if(n)return;let i=this.options.limit,s=this.options.autoTrim;if(i==null||i===0||s===!1){n=!0;return}let o=this.storage.characters({node:r.doc});if(o>i){let l=o-i,a=0,c=l;console.warn(`[CharacterCount] Initial content exceeded limit of ${i} characters. Content was automatically trimmed.`);let d=r.tr.deleteRange(a,c);return n=!0,d}n=!0},filterTransaction:(e,t)=>{let r=this.options.limit;if(!e.docChanged||r===0||r===null||r===void 0)return!0;let i=this.storage.characters({node:t.doc}),s=this.storage.characters({node:e.doc});if(s<=r||i>r&&s>r&&s<=i)return!0;if(i>r&&s>r&&s>i||!e.getMeta(\"paste\"))return!1;let o=e.selection.$head.pos,l=o-(s-r),a=o;return e.deleteRange(l,a),!(this.storage.characters({node:e.doc})>r)}})]}}),Pf=D.create({name:\"dropCursor\",addOptions(){return{color:\"currentColor\",width:1,class:void 0}},addProseMirrorPlugins(){return[Nf(this.options)]}}),_w=D.create({name:\"focus\",addOptions(){return{className:\"has-focus\",mode:\"all\"}},addProseMirrorPlugins(){return[new O({key:new H(\"focus\"),props:{decorations:({doc:n,selection:e})=>{let{isEditable:t,isFocused:r}=this.editor,{anchor:i}=e,s=[];if(!t||!r)return _.create(n,[]);let o=0;this.options.mode===\"deepest\"&&n.descendants((a,c)=>{if(!a.isText){if(!(i>=c&&i<=c+a.nodeSize-1))return!1;o+=1}});let l=0;return n.descendants((a,c)=>{if(a.isText||!(i>=c&&i<=c+a.nodeSize-1))return!1;if(l+=1,this.options.mode===\"deepest\"&&o-l>0||this.options.mode===\"shallowest\"&&l>1)return this.options.mode===\"deepest\";s.push(fe.node(c,c+a.nodeSize,{class:this.options.className}))}),_.create(n,s)}}})]}}),Bf=D.create({name:\"gapCursor\",addProseMirrorPlugins(){return[If()]},extendNodeSchema(n){var e;let t={name:n.name,options:n.options,storage:n.storage};return{allowGapCursor:(e=B(E(n,\"allowGapCursor\",t)))!==null&&e!==void 0?e:null}}}),zf=\"placeholder\",Df=new H(\"tiptap__placeholder\");function Hf(n){let{editor:e,placeholder:t,dataAttribute:r,pos:i,node:s,isEmptyDoc:o,hasAnchor:l,classes:{emptyNode:a,emptyEditor:c}}=n,d=[a];return o&&d.push(c),fe.node(i,i+s.nodeSize,{class:d.join(\" \"),[r]:typeof t==\"function\"?t({editor:e,node:s,pos:i,hasAnchor:l}):t})}function $f(n,e){return typeof n==\"function\"?n(e):n}function Ff({editor:n,options:e,dataAttribute:t,doc:r,selection:i,from:s,to:o}){let{anchor:l}=i,a=[],c=n.isEmpty;return r.nodesBetween(s,o,(d,u)=>{let f=l>=u&&l<=u+d.nodeSize,h=!d.isLeaf&&an(d);return d.type.isTextblock&&(f||!e.showOnlyCurrent)&&h&&a.push(Hf({editor:n,isEmptyDoc:c,dataAttribute:t,hasAnchor:f,placeholder:e.placeholder,classes:{emptyEditor:e.emptyEditorClass,emptyNode:$f(e.emptyNodeClass,{editor:n,node:d,pos:u,hasAnchor:f})},node:d,pos:u})),e.includeChildren}),a}function _f({editor:n,options:e,dataAttribute:t,doc:r,selection:i}){if(!(n.isEditable||!e.showOnlyWhenEditable))return null;let{anchor:s}=i,o=[],l=n.isEmpty;if(e.showOnlyCurrent&&!e.includeChildren){let a=r.resolve(s),c=a.depth>0?a.node(1):a.nodeAfter,d=a.depth>0?a.before(1):s;if(c&&c.type.isTextblock&&an(c)){let u=s>=d&&s<=d+c.nodeSize;o.push(Hf({editor:n,isEmptyDoc:l,dataAttribute:t,hasAnchor:u,placeholder:e.placeholder,classes:{emptyEditor:e.emptyEditorClass,emptyNode:$f(e.emptyNodeClass,{editor:n,node:c,pos:d,hasAnchor:u})},node:c,pos:d}))}}else o.push(...Ff({editor:n,options:e,dataAttribute:t,doc:r,selection:i,from:0,to:r.content.size}));return _.create(r,o)}function er(n,e){let t=n.resolve(e);if(t.depth===0){var r;let s=(r=t.nodeAfter)!==null&&r!==void 0?r:t.nodeBefore;if(!s)return{from:e,to:e};let o=t.nodeAfter?e:e-s.nodeSize;return{from:o,to:o+s.nodeSize}}let i=t.before(1);return{from:i,to:i+t.node(1).nodeSize}}function tr(n,e){return{from:Math.max(0,e.from-1),to:Math.min(n.content.size,e.to-1)}}function ex(n,e,t){let r=[];return n.forEach((i,s)=>{let o=s,l=o+i.nodeSize,a=o+1,c=l+1;a<t&&c>e&&r.push({from:o,to:l})}),r}function tx(n){if(n.length===0)return[];let e=[...n].sort((r,i)=>r.from-i.from),t=[{...e[0]}];for(let r=1;r<e.length;r+=1){let i=t[t.length-1],s=e[r];s.from<=i.to?i.to=Math.max(i.to,s.to):t.push({...s})}return t}function nx(n,e){let t=ex(n,e.from,e.to);return t.push(tr(n,er(n,e.from))),e.to>e.from?t.push(tr(n,er(n,Math.min(e.to,n.content.size+1)-1))):e.from<n.content.size+1&&t.push(tr(n,er(n,Math.min(e.from+1,n.content.size)))),t}function rx(n,e,t){let r=[];if(n.docChanged){let i=ln(n);for(let s of i)r.push(...nx(t.doc,s.newRange))}return n.selectionSet&&(r.push(tr(t.doc,er(t.doc,n.mapping.map(e.selection.anchor)))),r.push(tr(t.doc,er(t.doc,t.selection.anchor)))),tx(r)}function ix(n,e,t){let r=Math.max(0,Math.min(n,t.content.size));return{from:r,to:Math.max(r,Math.min(e,t.content.size))}}function sx({decorations:n,ranges:e,editor:t,options:r,dataAttribute:i,doc:s,selection:o}){let l=n;for(let a of e){let{from:c,to:d}=ix(a.from,a.to,s),u=l.find(c,d).filter(h=>h.from>=c&&h.to<=d);u.length&&(l=l.remove(u));let f=Ff({editor:t,options:r,dataAttribute:i,doc:s,selection:o,from:c,to:d});f.length&&(l=l.add(s,f))}return l}function ox({editor:n,options:e,dataAttribute:t}){return{init(r,i){let s=_f({editor:n,options:e,dataAttribute:t,doc:i.doc,selection:i.selection});return s??_.empty},apply(r,i,s,o){return!r.docChanged&&!r.selectionSet?i:sx({decorations:i.map(r.mapping,r.doc),ranges:rx(r,s,o),editor:n,options:e,dataAttribute:t,doc:o.doc,selection:o.selection})}}}function lx(n){return n.replace(/\\\\s+/g,\"-\").replace(/[^a-zA-Z0-9-]/g,\"\").replace(/^[0-9-]+/,\"\").replace(/^-+/,\"\").toLowerCase()}function ax({editor:n,options:e}){let t=e.dataAttribute?`data-${lx(e.dataAttribute)}`:`data-${zf}`,r=e.showOnlyCurrent&&!e.includeChildren;return new O({key:Df,...r?{}:{state:ox({editor:n,options:e,dataAttribute:t})},props:{decorations:r?({doc:i,selection:s})=>_f({editor:n,options:e,dataAttribute:t,doc:i,selection:s}):i=>{var s;return e.showOnlyWhenEditable&&!n.isEditable?_.empty:(s=Df.getState(i))!==null&&s!==void 0?s:_.empty}}})}var Vw=D.create({name:\"placeholder\",addOptions(){return{emptyEditorClass:\"is-editor-empty\",emptyNodeClass:\"is-empty\",dataAttribute:zf,placeholder:\"Write something \\\\u2026\",showOnlyWhenEditable:!0,showOnlyCurrent:!0,includeChildren:!1}},addProseMirrorPlugins(){return[ax({editor:this.editor,options:this.options})]}});function Pl(n,e){return!n.selection.empty&&!ai(n.selection)&&e.isEditable}function cx(n,e){return Pl(n,e)&&!e.isFocused&&!e.view.dragging}function dx(){var n;(n=window.getSelection())===null||n===void 0||n.removeAllRanges()}function ux(n){n.focus()}var jw=D.create({name:\"selection\",addOptions(){return{className:\"selection\"}},addProseMirrorPlugins(){let{editor:n,options:e}=this;return[new O({key:new H(\"selection\"),props:{decorations(t){return cx(t,n)?_.create(t.doc,[fe.inline(t.selection.from,t.selection.to,{class:e.className})]):null},handleDOMEvents:{blur(t){return Pl(t.state,n)&&dx(),!1},focus(t){return Pl(t.state,n)&&requestAnimationFrame(()=>{!n.isDestroyed&&t.hasFocus()&&ux(t)}),!1}}}})]}});function Lf({types:n,node:e}){return e&&Array.isArray(n)&&n.includes(e.type)||e?.type===n}var Vf=D.create({name:\"trailingNode\",addOptions(){return{node:void 0,notAfter:[]}},addProseMirrorPlugins(){var n;let e=new H(this.name),t=this.options.node||((n=this.editor.schema.topNodeType.contentMatch.defaultType)===null||n===void 0?void 0:n.name)||\"paragraph\",r=Object.entries(this.editor.schema.nodes).map(([,i])=>i).filter(i=>(this.options.notAfter||[]).concat(t).includes(i.name));return[new O({key:e,appendTransaction:(i,s,o)=>{let{doc:l,tr:a,schema:c}=o,d=e.getState(o),u=l.content.size,f=c.nodes[t];if(!i.some(h=>h.getMeta(\"skipTrailingNode\"))&&d)return a.insert(u,f.create())},state:{init:(i,s)=>{let o=s.tr.doc.lastChild;return!Lf({node:o,types:r})},apply:(i,s)=>{if(!i.docChanged||i.getMeta(\"__uniqueIDTransaction\"))return s;let o=i.doc.lastChild;return!Lf({node:o,types:r})}}})]}}),jf=D.create({name:\"undoRedo\",addOptions(){return{depth:100,newGroupDelay:500}},addCommands(){return{undo:()=>({state:n,dispatch:e})=>Do(n,e),redo:()=>({state:n,dispatch:e})=>Lo(n,e)}},addProseMirrorPlugins(){return[Cd(this.options)]},addKeyboardShortcuts(){return{\"Mod-z\":()=>this.editor.commands.undo(),\"Shift-Mod-z\":()=>this.editor.commands.redo(),\"Mod-y\":()=>this.editor.commands.redo(),\"Mod-\\\\u044F\":()=>this.editor.commands.undo(),\"Shift-Mod-\\\\u044F\":()=>this.editor.commands.redo()}}});var fx=D.create({name:\"starterKit\",addExtensions(){let n=[];if(this.options.bold!==!1&&n.push(zu.configure(this.options.bold)),this.options.blockquote!==!1&&n.push(Bu.configure(this.options.blockquote)),this.options.bulletList!==!1&&n.push(El.configure(this.options.bulletList)),this.options.code!==!1&&n.push(Hu.configure(this.options.code)),this.options.codeBlock!==!1&&n.push($u.configure(this.options.codeBlock)),this.options.document!==!1&&n.push(Fu.configure(this.options.document)),this.options.dropcursor!==!1&&n.push(Pf.configure(this.options.dropcursor)),this.options.gapcursor!==!1&&n.push(Bf.configure(this.options.gapcursor)),this.options.hardBreak!==!1&&n.push(_u.configure(this.options.hardBreak)),this.options.heading!==!1&&n.push(Vu.configure(this.options.heading)),this.options.undoRedo!==!1&&n.push(jf.configure(this.options.undoRedo)),this.options.horizontalRule!==!1&&n.push(ju.configure(this.options.horizontalRule)),this.options.italic!==!1&&n.push(Wu.configure(this.options.italic)),this.options.listItem!==!1&&n.push(Al.configure(this.options.listItem)),this.options.listKeymap!==!1){var e;n.push(Nl.configure((e=this.options)===null||e===void 0?void 0:e.listKeymap))}if(this.options.link!==!1){var t;n.push(df.configure((t=this.options)===null||t===void 0?void 0:t.link))}if(this.options.orderedList!==!1&&n.push(Ol.configure(this.options.orderedList)),this.options.paragraph!==!1&&n.push(Mf.configure(this.options.paragraph)),this.options.strike!==!1&&n.push(Cf.configure(this.options.strike)),this.options.text!==!1&&n.push(Af.configure(this.options.text)),this.options.underline!==!1){var r;n.push(Rf.configure((r=this.options)===null||r===void 0?void 0:r.underline))}if(this.options.trailingNode!==!1){var i;n.push(Vf.configure((i=this.options)===null||i===void 0?void 0:i.trailingNode))}return n}}),Wf=fx;var ns=class extends xe{constructor(e){super(e,xe.fromSchema(e).rules)}parseSlice(e,t={}){return super.parseSlice(e,{...t,preserveWhitespace:\"full\"})}};var rs=\"raw\",ze=\"implicit\",zt=\"edge\",nr=\"preservedOuterSpan\";function Kf(n){if(!n||typeof n!=\"object\")return!1;let e=n;return typeof e.lead==\"string\"&&typeof e.tail==\"string\"&&typeof e.br==\"boolean\"&&/^[ \\\\t\\\\n\\\\r\\\\f]*$/.test(e.lead+e.tail)}var Bl=Vl,hx=\"visual-editor-line\";function px(n){if(!n||typeof n!=\"object\")return!1;let e=n;return typeof e.tag==\"string\"&&!!e.attrs&&typeof e.attrs==\"object\"&&Object.values(e.attrs).every(t=>typeof t==\"string\")}var Uf=n=>[\"preservedSpan\",nr,...n.markNames(),\"link\",\"bold\",\"italic\",\"underline\",\"strike\",\"code\",\"superscript\",\"subscript\",\"paragraph\",\"heading\",\"bulletList\",\"orderedList\",\"listItem\",\"blockquote\",\"codeBlock\",\"hardBreak\",\"horizontalRule\"],is=class{formatting=new fn;formats=new di;extensions(e){let t=e.content===\"block+\",r=this.formatting,i=j.create({name:\"doc\",topNode:!0,content:e.content}),s=W.create({name:\"preservedSpan\",excludes:\"\",parseHTML:()=>[{tag:`span[${re}]:not([${ut}])`}],renderHTML:({HTMLAttributes:d})=>[\"span\",d,0]}),o=W.create({name:\"superscript\",parseHTML:()=>[{tag:\"sup\"}],renderHTML:({HTMLAttributes:d})=>[\"sup\",d,0]}),l=W.create({name:\"subscript\",parseHTML:()=>[{tag:\"sub\"}],renderHTML:({HTMLAttributes:d})=>[\"sub\",d,0]}),a=D.create({name:\"preservedOrigins\",addGlobalAttributes(){return[{types:Uf(r),attributes:{[re]:{default:null,parseHTML:d=>{let u=d.getAttribute(re);return u&&u.length<=200?u:null},renderHTML:d=>{let u=d[re];return typeof u==\"string\"&&u.length<=200?{[re]:u}:{}}}}}]}}),c=D.create({name:\"preserveRichTextWhitespace\",addProseMirrorPlugins(){return[new O({props:{clipboardParser:new ns(this.editor.schema)}})]}});return[i,Wf.configure({document:!1,undoRedo:{depth:100,newGroupDelay:500},trailingNode:!1,heading:t?{levels:[1,2,3,4,5,6]}:!1,link:e.links?{autolink:!1,linkOnPaste:!1,openOnClick:!1,defaultProtocol:\"https\",isAllowedUri:d=>e.isAllowedUri(d),HTMLAttributes:{target:null,rel:null,class:null}}:!1,codeBlock:t?{HTMLAttributes:{}}:!1,horizontalRule:t?{}:!1,blockquote:t?{}:!1,...t?{}:{bulletList:!1,orderedList:!1,listItem:!1,listKeymap:!1}}),...r.styleExtensions(),s,...r.extensions(),o,l,a,...e.fidelity?[this.outerSpan(),this.fidelityExtension()]:[],c]}applyFidelity(e){for(let t of Object.values(e.marks)){let r=t.spec.toDOM;if(!r)continue;let i=this.formatting.markNames().includes(t.name);t.spec.toDOM=(s,o)=>this.faithful(r(s,o),s.attrs,i,!0)}for(let t of Object.values(e.nodes)){let r=t.spec.toDOM;r&&(t.spec.toDOM=i=>t.name===\"paragraph\"&&i.attrs[ze]===!0?[hx,{style:\"display:block\"},0]:this.faithful(r(i),i.attrs,!1,!1))}}faithful(e,t,r,i){let s=t[rs],o=t[re];if(!px(s)||typeof o!=\"string\"||!Array.isArray(e))return e;let l=e,a=l[0];if(typeof a!=\"string\")return e;let c=l[1],d=!!c&&typeof c==\"object\"&&!Array.isArray(c),u=d?c:{},f={...s.attrs},h=t[ut];if(r&&this.formats.isFormat(h)){for(let g of this.formats.removedAttributes(h))delete f[g];let m=Object.entries(this.formats.resets(h)).map(([g,y])=>`${g}:${y}`).join(\";\");m&&(f.style=f.style?`${f.style};${m}`:m)}for(let[m,g]of Object.entries(u))m===re||g===null||g===void 0||(typeof g==\"string\"||typeof g==\"number\")&&(f[m]=String(g));return f[Bl]=o,[r?\"span\":i?s.tag:a,f,...l.slice(d?2:1)]}outerSpan(){return W.create({name:nr,priority:1100,excludes:\"\",renderHTML:({HTMLAttributes:e})=>[\"span\",e,0]})}fidelityExtension(){let e=this.formatting,t=new H(\"implicitRichTextParagraphs\");return D.create({name:\"richTextFidelity\",addGlobalAttributes(){return[{types:Uf(e),attributes:{[rs]:{default:null,rendered:!1,parseHTML:()=>null}}},{types:[\"doc\",\"paragraph\",\"heading\"],attributes:{[zt]:{default:null,rendered:!1,parseHTML:()=>null}}},{types:[\"paragraph\"],attributes:{[ze]:{default:!1,rendered:!1,parseHTML:()=>!1}}}]},addProseMirrorPlugins(){return[new O({key:t,appendTransaction:(r,i,s)=>{if(!r.some(c=>c.docChanged))return null;let o=[],l=c=>c?.type.name===\"paragraph\"&&c.attrs[ze]===!0;if(s.doc.descendants((c,d,u,f)=>{if(!u)return!0;if(c.type.name===\"paragraph\")return l(c)&&f>0&&l(u.child(f-1))&&o.push({position:d,node:c,implicit:!1}),!1;if(c.type.name===\"listItem\"&&f>0){let h=c.firstChild;h?.type.name===\"paragraph\"&&!l(h)&&h.attrs[re]===null&&l(u.child(f-1).firstChild)&&o.push({position:d+1,node:h,implicit:!0})}return!0}),!o.length)return null;let a=s.tr;for(let c of o)a.setNodeMarkup(c.position,void 0,{...c.node.attrs,[ze]:c.implicit});return a}})]}})}};var mx={strong:\"bold\",em:\"italic\",u:\"underline\",s:\"strike\",a:\"link\",code:\"code\",sup:\"superscript\",sub:\"subscript\",span:\"preservedSpan\"},qf=Object.freeze({nodes:2e4,depth:64}),gx=/[ \\\\t\\\\r\\\\f]*\\\\n[ \\\\t\\\\n\\\\r\\\\f]*/g,yx=/^[ \\\\t\\\\n\\\\r\\\\f]+/,bx=/[ \\\\t\\\\n\\\\r\\\\f]+$/,ss=class{constructor(e=new pi){this.rules=e}rules;#e=0;#t={markOrder:[],collapse:!1};build(e,t,r){this.#e=0,this.#t=r;try{if(t)return{type:\"doc\",content:this.blocks(e,0,!0)};let i=this.textblock(e,0);return{type:\"doc\",...i.edge?{attrs:{[zt]:i.edge}}:{},content:i.content}}catch{return}}visit(e){if(++this.#e>qf.nodes||e>qf.depth)throw new RangeError(\"RICH_TEXT_TOO_COMPLEX\")}origin(e){if(!e.origin)return{};let t={tag:e.tag??\"\",attrs:{...e.attributes}};return{[re]:e.origin,[rs]:t}}wraps(e){return(e.children??[]).some(t=>t.type===\"element\"&&t.tag!==\"br\"&&(this.rules.canonicalTag(t.tag??\"\")!==\"span\"||this.wraps(t)))}nest(e,t){let r=this.#t.markOrder,i=r.indexOf(t),s=e.at(-1);if(i<0)throw new Error(\"RICH_TEXT_UNSUPPORTED\");if(!s)return;let o=t===\"preservedSpan\"||t===nr,l=r.indexOf(s.type);if(t===\"code\"||e.some(a=>a.type===\"code\")||i<l||i===l&&!o)throw new Error(\"RICH_TEXT_UNFAITHFUL\")}inline(e,t,r){let i=[];for(let s of e){if(this.visit(r),s.type===\"text\"){let d=this.#t.collapse?(s.text??\"\").replace(gx,\" \"):s.text;d&&i.push({type:\"text\",text:d,...t.length?{marks:[...t]}:{}});continue}let o=s.tag??\"\";if(s.type!==\"element\"||!this.rules.isInline(o))throw new Error(\"RICH_TEXT_UNSUPPORTED\");if(o===\"br\"){i.push({type:\"hardBreak\",...s.origin?{attrs:this.origin(s)}:{},...t.length?{marks:[...t]}:{}});continue}let l=mx[this.rules.canonicalTag(o)];if(!l)throw new Error(\"RICH_TEXT_UNSUPPORTED\");let a=l===\"preservedSpan\"&&this.wraps(s)?nr:l;this.nest(t,a);let c=this.origin(s);if(a===\"link\"){let d=s.attributes?.href;if(!d)throw new Error(\"RICH_TEXT_UNSUPPORTED\");Object.assign(c,{href:d,target:s.attributes?.target??null,rel:s.attributes?.rel??null})}else if(l===\"preservedSpan\"&&!s.origin)throw new Error(\"RICH_TEXT_UNSUPPORTED\");i.push(...this.inline(s.children??[],[...t,{type:a,attrs:c}],r+1))}return i}textblock(e,t){let r=[...e],i=\"\",s=\"\",o=!1,l=r[0];if(this.#t.collapse&&l?.type===\"text\"){let u=l.text??\"\",f=u.replace(yx,\"\");i=u.slice(0,u.length-f.length),f?r[0]={type:\"text\",text:f}:r.shift()}let a=r.at(-1);if(this.#t.collapse&&a?.type===\"text\"){let u=a.text??\"\",f=u.replace(bx,\"\");s=u.slice(f.length),f?r[r.length-1]={type:\"text\",text:f}:r.pop()}let c=r.at(-1);return c?.type===\"element\"&&c.tag===\"br\"&&!c.origin&&r.length>1&&(r.pop(),o=!0),{content:this.inline(r,[],t),...i||s||o?{edge:{lead:i,tail:s,br:o}}:{}}}paragraph(e,t){let r=this.textblock(e,t);return{type:\"paragraph\",attrs:{[ze]:!0,...r.edge?{[zt]:r.edge}:{}},...r.content.length?{content:r.content}:{}}}blocks(e,t,r){let i=[],s=e.some(a=>a.type===\"element\"&&this.rules.isBlock(a.tag??\"\")),o=[],l=()=>{(o.some(c=>c.type!==\"text\"||!!c.text?.trim())||!s&&r)&&i.push(this.paragraph(o,t)),o=[]};for(let a of e)a.type===\"element\"&&this.rules.isBlock(a.tag??\"\")?(o.length&&l(),this.visit(t),i.push(this.block(a,t))):o.push(a);return(o.length||!i.length)&&l(),i}block(e,t){let r=e.tag??\"\",i=this.origin(e),s=e.children??[],o=(a,c,d)=>{let u={...i,...c};return{type:a,...Object.keys(u).length?{attrs:u}:{},...d?.length?{content:d}:{}}},l=/^h([1-6])$/.exec(r);if(r===\"p\"||l){let a=this.textblock(s,t+1);return o(l?\"heading\":\"paragraph\",{...l?{level:Number(l[1])}:{},...a.edge?{[zt]:a.edge}:{}},a.content)}if(r===\"hr\")return o(\"horizontalRule\",{});if(r===\"pre\"){if(s.some(c=>c.type!==\"text\"))throw new Error(\"RICH_TEXT_UNFAITHFUL\");let a=s.map(c=>c.text??\"\").join(\"\");return o(\"codeBlock\",{},a?[{type:\"text\",text:a}]:[])}if(r===\"blockquote\"){let a=this.blocks(s,t+1,!1);return o(\"blockquote\",{},a.length?a:[this.paragraph([],t)])}if(r===\"li\")return this.item(e,t);if(r===\"ul\"||r===\"ol\"){let a=[];for(let d of s)if(!(d.type===\"text\"&&!d.text?.trim())){if(d.type!==\"element\"||d.tag!==\"li\")throw new Error(\"RICH_TEXT_UNSUPPORTED\");this.visit(t+1),a.push(this.item(d,t+1))}if(!a.length)throw new Error(\"RICH_TEXT_UNSUPPORTED\");let c=Number(e.attributes?.start);return o(r===\"ul\"?\"bulletList\":\"orderedList\",r===\"ol\"&&Number.isInteger(c)?{start:c}:{},a)}throw new Error(\"RICH_TEXT_UNSUPPORTED\")}item(e,t){let r=this.blocks(e.children??[],t+1,!1);r[0]?.type!==\"paragraph\"&&r.unshift(this.paragraph([],t));let i=this.origin(e);return{type:\"listItem\",...Object.keys(i).length?{attrs:i}:{},content:r}}};var ls=class{#e=new Map;#t=new Map;constructor(e){for(let t of Object.values(e.nodes))t.spec.toDOM&&this.#e.set(t.name,t.spec.toDOM);for(let t of Object.values(e.marks))t.spec.toDOM&&this.#t.set(t.name,t.spec.toDOM)}export(e){return e.type.inlineContent?`<p>${this.text(e)}</p>`:this.blocks(e.content)}text(e){let t=e.attrs[zt],r=this.inline(e.content);return Kf(t)?`${t.lead}${r}${t.br?\"<br>\":\"\"}${t.tail}`:r}blocks(e){let t=\"\";return e.forEach(r=>{t+=this.node(r)}),t}node(e){let t=()=>e.type.inlineContent?this.text(e):this.blocks(e.content);if(e.type.name===\"paragraph\"&&e.attrs[ze]===!0)return t();let r=this.#e.get(e.type.name);if(!r)throw new Error(\"RICH_TEXT_EXPORT_UNSUPPORTED\");let i=this.compile(r(e));return i.open+(i.hole?t():\"\")+i.close}inline(e){let t=\"\",r=[];for(e.forEach(i=>{let s=0;for(;s<r.length&&s<i.marks.length&&i.marks[s].eq(r[s].mark);)s+=1;for(;r.length>s;)t+=r.pop().close;for(let o of i.marks.slice(s)){let l=this.#t.get(o.type.name);if(!l)throw new Error(\"RICH_TEXT_EXPORT_UNSUPPORTED\");let a=this.compile(l(o,!0));t+=a.open,r.push({mark:o,close:a.close})}t+=i.isText?Dt(i.text??\"\"):this.node(i)});r.length;)t+=r.pop().close;return t}compile(e){if(typeof e==\"string\")return{open:Dt(e),close:\"\",hole:!1};if(!Array.isArray(e))throw new Error(\"RICH_TEXT_EXPORT_UNSUPPORTED\");let t=e,r=t[0];if(typeof r!=\"string\"||!/^[a-z][a-z0-9]*$/.test(r))throw new Error(\"RICH_TEXT_EXPORT_UNSUPPORTED\");let i=t[1],s=!!i&&typeof i==\"object\"&&!Array.isArray(i),o=\"\";if(s){for(let[d,u]of Object.entries(i))if(!(u==null||u===!1)){if(!/^[a-zA-Z][a-zA-Z0-9-]*$/.test(d))throw new Error(\"RICH_TEXT_EXPORT_UNSUPPORTED\");o+=` ${d}=\"${Dt(String(u))}\"`}}let l=`<${r}${o}>`,a=\"\",c=!1;for(let d of t.slice(s?2:1)){if(d===0){c=!0;continue}let u=this.compile(d);c?a+=u.open+u.close:u.hole?(l+=u.open,a=u.close+a,c=!0):l+=u.open+u.close}return{open:l,close:r===\"br\"||r===\"hr\"?a:`${a}</${r}>`,hole:c}}};var Jf=\"\\\\xA0\",xx=[\"color\",\"font-family\",\"font-size\",\"font-weight\",\"font-style\",\"letter-spacing\",\"text-transform\"],kx=[\"background-color\",\"border-top-width\",\"border-right-width\",\"border-bottom-width\",\"border-left-width\",\"padding-top\",\"padding-right\",\"padding-bottom\",\"padding-left\"],Sx=[\"line-break\",\"overflow-wrap\",\"word-break\",\"-webkit-line-break\",\"-webkit-nbsp-mode\"];function Xf(n){if(n.nodeType===Node.TEXT_NODE)return{type:\"text\",text:n.nodeValue??\"\"};if(n.nodeType!==Node.ELEMENT_NODE)return{type:\"other\"};let e=n;if(e.namespaceURI!==\"http://www.w3.org/1999/xhtml\")return{type:\"other\"};let t={};for(let i of e.attributes)i.name.startsWith(_l)||(t[i.name]=i.value);let r=e.getAttribute(Bl);return{type:\"element\",tag:e.localName,...r?{origin:r}:{},attributes:t,children:[...e.childNodes].map(Xf)}}function wx(n,e,t){let r=new DOMParser().parseFromString(n,\"text/html\"),i=new Set([\"strong\",\"b\",\"em\",\"i\",\"u\",\"s\",\"sup\",\"sub\",\"code\"]),s=new Set([\"p\",\"ul\",\"ol\",\"li\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"]),o=new Set([...s,\"div\",\"tr\",\"blockquote\",\"pre\",\"table\"]),l=new Set([\"script\",\"style\",\"template\",\"title\",\"head\",\"meta\",\"link\"]),a=0,c=(u,f)=>{if(++a>2e4||f>64)return\"\";if(u.nodeType===Node.TEXT_NODE)return Dt(u.nodeValue??\"\");if(u.nodeType!==Node.ELEMENT_NODE)return\"\";let h=u,p=h.localName;if(h.namespaceURI!==\"http://www.w3.org/1999/xhtml\"||l.has(p))return\"\";let m=[...h.childNodes].map(g=>c(g,f+1)).join(\"\");if(p===\"br\")return\"<br>\";if(i.has(p))return m?`<${p}>${m}</${p}>`:\"\";if(p===\"a\"&&t){let g=h.getAttribute(\"href\")??\"\";return/^(?:https?:|mailto:|tel:)/i.test(g)&&g.length<=tt.commandValue?`<a href=\"${Dt(g)}\">${m}</a>`:m}return e&&s.has(p)?`<${p}>${m}</${p}>`:!e&&o.has(p)&&m?`${m}<br>`:m},d=[...r.body.childNodes].map(u=>c(u,0)).join(\"\");return e?d:d.replace(/(?:<br>)+$/,\"\")}var rr=class n{constructor(e,t,r,i,s,o){this.element=e;this.#e=t,this.#t=r,this.#n=i,this.#o=s,this.#a=o,this.#s=!t.state.doc.textContent.includes(Jf),this.#i=this.exportHtml()}element;#e;#t;#n;#r=new hi;#i;#s;#o;#a;#l=!1;static mount(e,t,r){let i=new is,s=new fi(i.formatting,!1),o=!1,l=(k,N)=>((N===\"undo\"?k.commands.undo():k.commands.redo())||r.history(N),!0),a=D.create({name:\"canvasTextKeys\",priority:1e3,addKeyboardShortcuts(){let k=$=>()=>(s.run(this.editor,$),!0),N=()=>(r.finish(),!0);return{\"Mod-b\":k(\"bold\"),\"Mod-i\":k(\"italic\"),\"Mod-u\":k(\"underline\"),\"Mod-Shift-x\":k(\"strike\"),\"Mod-z\":()=>l(this.editor,\"undo\"),\"Mod-Shift-z\":()=>l(this.editor,\"redo\"),\"Mod-y\":()=>l(this.editor,\"redo\"),\"Mod-Enter\":N,\"Alt-F10\":()=>(r.toolbar(),!0),Escape:N,Enter:()=>!t.blocks||this.editor.state.selection.$from.parent.attrs[ze]===!0?this.editor.commands.setHardBreak():!1}}}),c=[...i.extensions({content:t.blocks?\"block+\":\"inline*\",links:t.links,isAllowedUri:k=>!/^\\\\s*(?:javascript|data|vbscript):/i.test(k),fidelity:!0}),a],d=getComputedStyle(e),u=new ss().build([...e.childNodes].map(Xf),t.blocks,{markOrder:Object.keys(su(c).marks),collapse:!/pre|break-spaces/.test(d.whiteSpace)});if(!u)return{refused:0};let f;try{f=new Eu({element:null,injectCSS:!1,extensions:c,content:u,enableContentCheck:!0,onContentError:()=>{o=!0},editorProps:{transformPastedHTML:k=>wx(k,t.blocks,t.links),handleClick:(k,N,$)=>($.target instanceof Element&&$.target.closest(\"a\")&&$.preventDefault(),!1)}})}catch{return{refused:0}}if(o)return f.destroy(),{refused:0};let h=new ls(f.schema);i.applyFidelity(f.schema);let p=Sx.map(k=>[k,d.getPropertyValue(k)]).filter(([,k])=>k!==\"\"),m=n.appearance(e),g=[...e.childNodes].map(k=>k.cloneNode(!0)),y=[...e.attributes].map(k=>[k.name,k.value]);try{f.mount({mount:e})}catch{return f.destroy(),e.replaceChildren(...g),{refused:0}}for(let[k,N]of p)e.style.setProperty(k,N,\"important\");let b=new n(e,f,h,s,g,y),w=n.difference(m,n.appearance(e));return w?(b.destroy(\"restore\"),{refused:w}):(f.on(\"transaction\",({transaction:k})=>r.changed(k.docChanged)),b)}static appearance(e){let t=[],r=document.createRange(),i=c=>c===\"transparent\"||/^rgba\\\\(.*,\\\\s*0\\\\)$/.test(c),s=c=>{let d=getComputedStyle(c),u=[];for(let f=c;f;f=f.parentElement){let h=f===c?d:getComputedStyle(f);if(h.textDecorationLine!==\"none\"&&u.push(`${h.textDecorationLine}/${h.textDecorationColor}`),f!==e&&!i(h.backgroundColor)&&u.push(h.backgroundColor),f===e)break}return[...xx.map(f=>d.getPropertyValue(f)),d.display.startsWith(\"inline\")?d.verticalAlign:\"\",...u].join(\"|\")},o=(c,d,u)=>{let f=t.at(-1);u&&f?.signature===c&&Math.abs(f.rect[1]-d.top)<.5&&Math.abs(f.rect[3]-d.bottom)<.5&&Math.abs(f.rect[2]-d.left)<.5?f.rect[2]=d.right:t.push({signature:c,rect:[d.left,d.top,d.right,d.bottom]})},l=e.getBoundingClientRect();o(\"root\",l,!1);let a=document.createTreeWalker(e,NodeFilter.SHOW_TEXT|NodeFilter.SHOW_ELEMENT);for(let c=a.nextNode();c;c=a.nextNode()){if(c instanceof Element){let f=getComputedStyle(c),h=kx.map(m=>f.getPropertyValue(m));if(!i(h[0]??\"\")||h.slice(1).some(m=>parseFloat(m)>0))for(let m of c.getClientRects())o(`box|${h.join(\"|\")}`,m,!1);continue}let d=c.parentElement;if(!d||!c.nodeValue)continue;let u=s(d);r.selectNodeContents(c);for(let f of r.getClientRects())f.width>=.5&&o(u,f,!0)}return t}static difference(e,t){let r=Math.abs(e.length-t.length);for(let i=0;i<Math.min(e.length,t.length);i+=1){let s=e[i],o=t[i];(s.signature!==o.signature||s.rect.some((l,a)=>Math.abs(l-o.rect[a])>.5))&&(r+=1)}return r}get dirty(){return!this.#l&&this.exportHtml()!==this.#i}exportHtml(){let e=this.#t.export(this.#e.state.doc);return this.#s?e.replaceAll(Jf,\" \"):e}contains(e){return e instanceof Node&&this.element.contains(e)}setEditable(e){this.#l||this.#e.setEditable(e,!1)}focus(e){if(this.#l)return;let t=this.#e.view,r=t.state,i=r.selection;if(e===\"end\")i=T.atEnd(r.doc);else if(e!==\"keep\"){let s=t.posAtCoords({left:e.x,top:e.y});i=s?T.near(r.doc.resolve(s.pos)):T.atEnd(r.doc)}t.focus(),i.eq(t.state.selection)||t.dispatch(t.state.tr.setSelection(i))}run(e,t){return this.#l?!1:this.#n.run(this.#e,e,t)}history(e){return this.#l?!1:e===\"undo\"?this.#e.commands.undo():this.#e.commands.redo()}state(){let e=this.#e.view,t=(r,i)=>{let s;try{s=e.domAtPos(Math.min(i+1,e.state.doc.content.size)).node}catch{return{}}let o=s instanceof Element?s:s.parentElement;if(!o||!this.element.contains(o))return{};let l=getComputedStyle(o),a=l.fontFamily.split(\",\")[0]?.trim().replace(/^[\"\\']|[\"\\']$/g,\"\"),c=l.backgroundColor;return{color:l.color,.../^rgba\\\\(.*,\\\\s*0\\\\)$|^transparent$/.test(c)?{}:{backgroundColor:c},...a?{fontFamily:a}:{},fontSize:l.fontSize,lineHeight:l.lineHeight}};return this.#r.read(this.#e,!0,void 0,t)}selectionRect(){let e=this.#e.view;try{let{from:t,to:r}=e.state.selection,i=e.coordsAtPos(t),s=e.coordsAtPos(r),o=Math.min(i.left,s.left),l=Math.min(i.top,s.top);return{x:o,y:l,width:Math.max(i.right,s.right)-o,height:Math.max(i.bottom,s.bottom)-l}}catch{let t=this.element.getBoundingClientRect();return{x:t.x,y:t.y,width:t.width,height:t.height}}}destroy(e){if(this.#l)return;this.#l=!0;let t=e===\"keep\"?[...this.element.childNodes].map(i=>i.cloneNode(!0)):[],r=this.element.getAttribute($e);this.#e.destroy();for(let i of[...this.element.attributes])this.element.removeAttribute(i.name);for(let[i,s]of this.#a)this.element.setAttribute(i,s);r===null?this.element.removeAttribute($e):this.element.setAttribute($e,r),this.element.replaceChildren(...e===\"keep\"?t:this.#o)}};var vx=5e3,as=class{constructor(e,t){this.ctx=e;this.highlight=t}ctx;highlight;#e;#t=new Set;get id(){return this.#e?.id}get active(){return!!this.#e}get awaiting(){return!!this.#e?.awaiting}get dirty(){return!!this.#e?.editor.dirty}contains(e){return!!this.#e&&this.#e.editor.contains(e)}element(){return this.#e?this.ctx.marked.get(this.#e.id):void 0}editable(e){return!this.ctx.readOnly&&!!e&&this.ctx.regions.get(e)?.editable===!0&&this.ctx.marked.has(e)&&!this.#t.has(e)}focus(e){this.#e&&!this.#e.awaiting&&this.#e.editor.focus(e)}reclaim(){let e=this.#e;e&&!e.awaiting&&!this.ctx.readOnly&&!this.contains(document.activeElement)&&e.editor.focus(\"keep\")}setEditable(){this.#e?.editor.setEditable(!this.ctx.readOnly&&!this.#e.awaiting)}report(){let e=this.#e;if(!e||this.ctx.disposed)return;let t=e.editor.state();this.ctx.channel.telemetry(\"text-state\",{nodeId:e.id,marks:t.marks,styles:t.styles,link:t.link,href:t.href,empty:t.empty,canUndo:t.canUndo,canRedo:t.canRedo,rect:e.editor.selectionRect()})}#n(e){e.timer&&clearTimeout(e.timer),delete e.timer,e.awaiting=!1}resume(e){let t=this.#e;!t||t.id!==e||!t.awaiting||(this.#n(t),this.ctx.channel.defer(void 0),t.editor.setEditable(!0),this.report())}reject(e){let t=this.#e;!t||t.id!==e||(this.#n(t),this.ctx.channel.cancelDraft(),this.ctx.channel.defer(void 0),t.editor.destroy(\"restore\"),this.#e=void 0,this.ctx.schedule())}end(e,t){let r=this.#e;if(!r){t?.();return}if(!this.ctx.readOnly){if(r.awaiting){t&&this.ctx.channel.defer(t);return}if(this.ctx.channel.cancelDraft(),e===\"cancel\"||!r.editor.dirty){let i=this.ctx.textElement(r.id),s=document.hasFocus()&&document.activeElement===i;r.editor.destroy(\"restore\"),this.#e=void 0,this.ctx.send(\"text-cancel\",{nodeId:r.id}),s&&!t&&i?.focus({preventScroll:!0}),this.ctx.schedule(),t?.();return}r.awaiting=!0,r.editor.setEditable(!1),this.ctx.channel.defer(t),this.ctx.send(\"text-commit\",{nodeId:r.id,html:r.editor.exportHtml()}),r.timer=setTimeout(()=>this.resume(r.id),vx)}}documentHistory(e){e===\"redo\"&&this.#e?.editor.dirty||this.end(\"finish\",()=>this.ctx.send(\"history\",{direction:e}))}history(e){this.#e?.editor.history(e)||this.documentHistory(e)}run(e,t){let r=this.#e;!r||r.awaiting||(e===\"finish\"||e===\"cancel\"?this.end(e):e===\"undo\"||e===\"redo\"?this.history(e):r.editor.run(e,t),this.#e===r&&this.report())}begin(e,t){if(!this.editable(e))return!1;if(this.#e?.id===e)return this.focus(t),!0;if(this.#e)return this.end(\"finish\",()=>{this.begin(e,t)||this.ctx.select(e)}),!0;let r=this.ctx.textElement(e),i=this.ctx.regions.get(e);if(!r||!i)return!1;let s=rr.mount(r,{blocks:i.blocks===!0,links:i.links!==!1},{changed:o=>{let l=this.#e;!l||l.awaiting||(o&&this.ctx.channel.draft(()=>this.#e===l&&!l.awaiting?{nodeId:l.id,html:l.editor.exportHtml()}:void 0),this.report(),this.ctx.schedule())},finish:()=>this.end(\"finish\"),history:o=>this.documentHistory(o),toolbar:()=>this.ctx.send(\"text-toolbar\",{nodeId:e})});return s instanceof rr?(this.#e={id:e,editor:s,awaiting:!1},this.highlight(e),this.ctx.send(\"text-begin\",{nodeId:e}),this.ctx.cfg.diagnostics&&this.ctx.send(\"text-fidelity\",{changed:0}),s.focus(t),this.report(),!0):(this.#t.add(e),this.ctx.send(\"text-unsupported\",{nodeId:e}),this.ctx.cfg.diagnostics&&this.ctx.send(\"text-fidelity\",{changed:s.refused}),!1)}supersede(){let e=this.#e;if(!e)return;let t=!e.awaiting&&!e.editor.dirty?e.id:void 0;return this.#n(e),this.ctx.channel.cancelDraft(),e.editor.destroy(\"keep\"),this.#e=void 0,t}forgetRefusals(){this.#t.clear()}};var cs=class{constructor(e){this.ctx=e;let t=e.signal;window.addEventListener(\"scroll\",()=>{let r=this.#t;r&&(scrollX!==r.actualEarly.x||scrollY!==r.actualEarly.y)&&this.cancelDeferred(),e.schedule()},{passive:!0,capture:!0,signal:t});for(let r of[\"wheel\",\"touchstart\",\"pointerdown\"])window.addEventListener(r,()=>this.cancelDeferred(),{passive:!0,capture:!0,signal:t});window.addEventListener(\"resize\",()=>e.schedule(),{passive:!0,signal:t}),window.addEventListener(\"load\",()=>this.#i(),{signal:t});for(let r of[\"load\",\"error\"])document.addEventListener(r,()=>this.#i(),{capture:!0,signal:t})}ctx;#e;#t;cancelDeferred(){this.#t=void 0}request(e,t){typeof e!=\"number\"||typeof t!=\"number\"||!Number.isFinite(e)||!Number.isFinite(t)||e<0||t<0||e>1e6||t>1e6||(this.#e={x:e,y:t},this.#n())}#n(){let e=this.#e;if(!e)return;this.#e=void 0,this.cancelDeferred(),scrollTo(e.x,e.y);let t={x:scrollX,y:scrollY};this.#r()&&(e.x!==t.x||e.y!==t.y)&&(this.#t={desired:e,actualEarly:t}),this.ctx.send(\"viewport-restored\",{viewport:t}),this.ctx.schedule()}#r(){return document.readyState!==\"complete\"||[...document.images].some(e=>!e.complete)}#i(){let e=this.#t;!e||this.#r()||(this.cancelDeferred(),!(scrollX!==e.actualEarly.x||scrollY!==e.actualEarly.y)&&(scrollTo(e.desired.x,e.desired.y),this.ctx.send(\"viewport-restored\",{viewport:{x:scrollX,y:scrollY}}),this.ctx.schedule()))}};var Tx=/\\\\{\\\\{\\\\s*([a-zA-Z0-9._]{1,200})\\\\s*\\\\}\\\\}/g,zl=\"ve-variable\";var ds=class{constructor(e,t){this.ctx=e;this.#e=new Map(Object.entries(e.cfg.variables??{})),this.#t=t.node(\"div\",\"variable\"),this.#t.hidden=!0,t.shadow.append(this.#t);let r=this.registry();if(!r||!this.constructorOf())return;try{let s=new CSSStyleSheet;s.replaceSync(`::highlight(${zl}){background-color:rgba(13,148,136,.16);color:#0f766e;text-decoration:underline dotted 1px}`),document.adoptedStyleSheets=[...document.adoptedStyleSheets,s]}catch{return}let i=new MutationObserver(()=>this.schedule());i.observe(document.body,{subtree:!0,childList:!0,characterData:!0}),e.signal.addEventListener(\"abort\",()=>{i.disconnect(),cancelAnimationFrame(this.#r),cancelAnimationFrame(this.#s),r.delete(zl)}),document.addEventListener(\"pointermove\",s=>{this.#i={x:s.clientX,y:s.clientY},this.#s||(this.#s=requestAnimationFrame(()=>{this.#s=0,this.hover()}))},{signal:e.signal,passive:!0}),document.addEventListener(\"scroll\",()=>this.hide(),{signal:e.signal,capture:!0,passive:!0}),this.scan()}ctx;#e;#t;#n=[];#r=0;#i;#s=0;registry(){return globalThis.CSS?.highlights}constructorOf(){return globalThis.Highlight}schedule(){this.#r||(this.#r=requestAnimationFrame(()=>{this.#r=0,this.scan()}))}scan(){let e=this.registry(),t=this.constructorOf();if(!e||!t)return;let r=document.createTreeWalker(document.body,NodeFilter.SHOW_TEXT,{acceptNode:o=>o.parentElement?.closest(\"visual-editor-controls,script,style\")?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),i=[],s=0;for(let o=r.nextNode();o;o=r.nextNode()){if(++s>2e4)return;let l=o.nodeValue??\"\";if(l.includes(\"{{\"))for(let a of l.matchAll(Tx)){let c=document.createRange();c.setStart(o,a.index),c.setEnd(o,a.index+a[0].length),i.push({range:c,key:a[1]??\"\"})}}this.#n=i,e.set(zl,new t(...i.map(o=>o.range))),this.hover()}hover(){let e=this.#i;if(!e||!this.#n.length)return this.hide();for(let{range:t,key:r}of this.#n)for(let i of t.getClientRects())if(!(e.x<i.left||e.x>i.right||e.y<i.top||e.y>i.bottom)){this.#t.textContent=this.#e.get(r)??r,this.#t.style.left=`${Math.max(4,i.left)}px`,this.#t.style.top=`${Math.max(4,i.top-22)}px`,this.#t.hidden=!1;return}this.hide()}hide(){this.#t.hidden=!0}};var Ex=/^[A-Za-z0-9_-]{16,64}$/;function Hl(n){if(document.readyState===\"loading\"){document.addEventListener(\"DOMContentLoaded\",()=>Hl(n),{once:!0});return}let e=new br(n),t=new cr(n,e.element),r=t.signal,i=()=>o.id,s=new kr(t,e,i),o=new as(t,y=>s.highlight(y)),l=new fr(t,e),a=new ir(t,e,{edit:()=>o.begin(t.selectedId,\"end\"),grab:y=>c.grab(y),editingId:i}),c=new or(t,l,o,a.handle),d=new mr(t,e);new hr(t,e,c);let u=new cs(t);new xr(t,o,c),new pr(t),new ds(t,e),new yr(t,o,c,u,d);let f=new ur(t,{text:o,drag:c,targets:l,selection:s,images:d}),p={highlight:y=>{y.nodeId!==void 0&&typeof y.nodeId!=\"string\"||(c.sourceId&&y.nodeId!==c.sourceId&&c.cancel(),y.nodeId!==t.selectedId&&d.flushKeys(),s.highlight(y.nodeId))},targets:y=>l.setMovement(y.sourceId,y.targets),\"insertion-targets\":y=>l.setInsertion(y.targets),hover:y=>{(y.nodeId===void 0||typeof y.nodeId==\"string\")&&s.hover(y.nodeId)},measure:()=>t.schedule(),theme:y=>e.theme(y.theme),\"text-focus\":()=>o.focus(\"keep\"),\"text-open\":y=>{let b=y.nodeId;typeof b==\"string\"&&o.end(\"finish\",()=>o.begin(b,\"end\"))},\"text-command\":y=>{typeof y.command!=\"string\"||!$l.includes(y.command)||!(y.value===void 0||y.value===null||typeof y.value==\"string\"&&y.value.length<=tt.commandValue)||o.run(y.command,y.value??null)},\"text-rejected\":y=>{typeof y.nodeId!=\"string\"||o.id!==y.nodeId||(y.reason===\"begin\"?o.reject(y.nodeId):o.resume(y.nodeId))},focus:y=>{typeof y.nodeId==\"string\"&&t.marked.get(y.nodeId)?.focus({preventScroll:!0})},viewport:y=>u.request(y.x,y.y),insertion:y=>c.insertion(y.phase,y.x,y.y,y.file)};window.addEventListener(\"message\",y=>{if(y.source!==parent||!y.data||typeof y.data!=\"object\")return;let b=y.data;if(b.type===\"hello\"&&b.nonce===void 0){typeof b.challenge==\"string\"&&Ex.test(b.challenge)&&t.send(\"ready\",{challenge:b.challenge});return}if(!(b.nonce!==n.nonce||typeof b.type!=\"string\")){if(b.type===\"document\"){f.apply(b);return}b.revision===t.channel.revision&&Object.hasOwn(p,b.type)&&p[b.type]?.(b)}},{signal:r});let m=()=>{u.cancelDeferred(),c.interrupt(),t.channel.flushDraft()};window.addEventListener(\"blur\",m,{signal:r}),document.addEventListener(\"visibilitychange\",()=>{document.visibilityState===\"hidden\"&&m()},{signal:r}),window.addEventListener(\"focus\",()=>o.reclaim(),{signal:r});let g=new ResizeObserver(()=>t.schedule());g.observe(document.body),window.addEventListener(\"pagehide\",()=>{m(),g.disconnect(),t.dispose()},{once:!0}),t.send(\"ready\",{}),t.schedule()}Object.defineProperty(globalThis,\"__lyadsCanvas\",{value:Hl});})();';\n","import { CANVAS_ICONS } from './canvas-icons';\nimport { CANVAS_RUNTIME_BUNDLE } from './canvas-runtime.generated';\n\nexport interface CanvasBridgeRegion {\n readonly id: string;\n readonly parentId: string | null;\n readonly editable: boolean;\n readonly container: boolean;\n /** The editable text accepts paragraphs, headings and lists, not only one line of marks. */\n readonly blocks?: boolean;\n /** False where the region is itself a link, which cannot contain another. */\n readonly links?: boolean;\n /** Friendly name of the block, shown next to it: \"Título\", \"Imagem\", \"Coluna\". */\n readonly label?: string;\n /** The region is an image: it can be replaced and resized in the piece. */\n readonly media?: 'image';\n}\n\nexport interface CanvasBridgeLabels {\n readonly edit: string;\n readonly move: string;\n readonly up: string;\n readonly down: string;\n readonly duplicate: string;\n readonly remove: string;\n readonly before: string;\n readonly after: string;\n readonly inside: string;\n readonly parent: string;\n /** \"Edit as HTML\"; absent where the piece has no HTML of its own (a block piece). */\n readonly html?: string;\n readonly image: string;\n readonly add: string;\n readonly resize: string;\n /** Name of the grip which takes the keyboard, with the keys which change the size. */\n readonly resizeHint: string;\n /** Shown over an image while a dropped file would replace it. */\n readonly replace: string;\n /** Name shown over embedded content, which never loads inside the editor. */\n readonly embed: string;\n}\n\n/** Colors of the host shell for the controls drawn over the piece; plain CSS color values. */\nexport interface CanvasBridgeTheme {\n readonly accent?: string;\n readonly contrast?: string;\n readonly surface?: string;\n readonly text?: string;\n readonly border?: string;\n /** Corner radius in pixels. */\n readonly radius?: number;\n}\n\nexport interface CanvasBridgeConfiguration {\n readonly nonce: string;\n readonly revision: number;\n readonly regions: readonly CanvasBridgeRegion[];\n readonly readOnly: boolean;\n readonly labels: CanvasBridgeLabels;\n readonly theme?: CanvasBridgeTheme;\n readonly lang?: string;\n /** Allowlisted font names the runtime may report for the selected block. */\n readonly fonts?: readonly string[];\n readonly icons?: Readonly<Record<string, string>>;\n /** Test mode: the runtime reports whether mounting the text editor changed any appearance. */\n readonly diagnostics?: boolean;\n /**\n * False where the host has no block menu (a block piece): the secondary button and the menu\n * key keep what the browser does instead of asking for a menu nobody opens.\n */\n readonly menu?: false;\n /** Friendly names of the variables of the host by key, shown over each `{{key}}`. */\n readonly variables?: Readonly<Record<string, string>>;\n}\n\n/**\n * Produces the single script of the preview: the runtime bundle built from src/canvas-runtime\n * followed by its configuration. Imported content never contributes executable code.\n */\nexport class CanvasBridgeScript {\n source(configuration: CanvasBridgeConfiguration): string {\n const encoded = JSON.stringify({ ...configuration, icons: CANVAS_ICONS })\n .replaceAll('<', '\\\\u003c')\n .replaceAll('
', '\\\\u2028')\n .replaceAll('
', '\\\\u2029');\n return `${CANVAS_RUNTIME_BUNDLE};__lyadsCanvas(${encoded});`;\n }\n}\n","import { defaultTreeAdapter, html, parse, serialize } from 'parse5';\nimport type { DefaultTreeAdapterMap } from 'parse5';\nimport * as v from 'valibot';\nimport type { DocumentKind, SourceInput } from '../core/document';\nimport {\n EDIT_NODE_ATTRIBUTE,\n NODE_ATTRIBUTE,\n SELECTED_ATTRIBUTE,\n THEME_COLOR_LENGTH,\n THEME_RADIUS_LIMIT,\n isThemeColor,\n} from '../core/canvas-contract';\nimport { TEXT_FONT_FAMILIES } from '../security/text-presentation';\nimport { sha256Base64 } from '../security/sha256';\nimport { CanvasBridgeScript } from './canvas-bridge';\nimport type { CanvasBridgeLabels, CanvasBridgeRegion, CanvasBridgeTheme } from './canvas-bridge';\nimport { documentParts } from './markup-tree';\nimport type { MarkupElement } from './markup-tree';\nimport type { HtmlAssemblyPort } from './preview-document';\n\nexport interface SelectionPreview {\n readonly html: string;\n /**\n * The secret of the message protocol of this window. It only exists inside the text of the\n * runtime script, never in an attribute, and has no part in the CSP, which authorizes that\n * script by the digest of its text. The name is the one the protocol always used.\n */\n readonly nonce: string;\n readonly revision: number;\n readonly nodeIds: readonly string[];\n readonly regions: readonly CanvasBridgeRegion[];\n readonly readOnly: boolean;\n /** Test mode: only then does the host accept fidelity reports from the frame. */\n readonly diagnostics: boolean;\n}\n\n/** Options every preview of the editing frame takes, whatever document it shows. */\nexport interface PreviewFrameOptions {\n readonly readOnly?: boolean;\n readonly labels?: CanvasBridgeLabels;\n readonly title?: string;\n readonly lang?: string;\n /** Test mode of the frame runtime; never enabled by a document. */\n readonly diagnostics?: boolean;\n /** Colors of the host shell for the controls drawn over the piece. */\n readonly theme?: CanvasBridgeTheme;\n /** False: the host opens no block menu, so the frame never asks for one. */\n readonly menu?: false;\n /** Friendly names of the variables of the host by key (at most 500, names up to 200). */\n readonly variables?: Readonly<Record<string, string>>;\n}\n\nconst VARIABLE_KEY = /^[a-zA-Z0-9._]{1,200}$/;\n\n/** The variable names the frame may show: valid keys and plain names only. */\nfunction previewVariables(\n value: Readonly<Record<string, string>> | undefined,\n): Readonly<Record<string, string>> | undefined {\n if (!value) return undefined;\n const entries = Object.entries(value).filter(\n ([key, label]) => VARIABLE_KEY.test(key) && typeof label === 'string' && label.length <= 200,\n );\n return entries.length ? Object.fromEntries(entries.slice(0, 500)) : undefined;\n}\n\n/** What the editing frame asks of the renderer of its document: a new window or a revision. */\nexport interface SelectionPreviewSource<\n D extends { readonly id: string; readonly revision: number },\n> {\n build(document: D, selectionLabel: string, options?: PreviewFrameOptions): SelectionPreview;\n update(\n document: D,\n selectionLabel: string,\n current: Pick<SelectionPreview, 'nonce'>,\n options?: PreviewFrameOptions,\n ): SelectionPreview;\n}\n\n/**\n * One document bound to its renderer, as the editing frame takes it: the frame only knows the\n * identity of what it shows and asks for a new window or the next revision. A new renderer\n * means a new window.\n */\nexport interface FramePreviewSource {\n readonly id: string;\n readonly revision: number;\n readonly renderer: object;\n build(selectionLabel: string, options?: PreviewFrameOptions): SelectionPreview;\n update(\n selectionLabel: string,\n current: Pick<SelectionPreview, 'nonce'>,\n options?: PreviewFrameOptions,\n ): SelectionPreview;\n}\n\nexport function framePreview<D extends { readonly id: string; readonly revision: number }>(\n renderer: SelectionPreviewSource<D>,\n document: D,\n): FramePreviewSource {\n return Object.freeze({\n id: document.id,\n revision: document.revision,\n renderer,\n build: (selectionLabel: string, options?: PreviewFrameOptions) =>\n renderer.build(document, selectionLabel, options),\n update: (\n selectionLabel: string,\n current: Pick<SelectionPreview, 'nonce'>,\n options?: PreviewFrameOptions,\n ) => renderer.update(document, selectionLabel, current, options),\n });\n}\n\nconst themeColor = v.exactOptional(\n v.pipe(\n v.string(),\n v.maxLength(THEME_COLOR_LENGTH),\n v.check((value) => isThemeColor(value)),\n ),\n);\n/** Only plain color values and a bounded radius ever reach the style of the controls. */\nexport const previewThemeSchema = v.strictObject({\n accent: themeColor,\n contrast: themeColor,\n surface: themeColor,\n text: themeColor,\n border: themeColor,\n radius: v.exactOptional(\n v.pipe(v.number(), v.finite(), v.minValue(0), v.maxValue(THEME_RADIUS_LIMIT)),\n ),\n});\n\n/** The style of the selection outline; the runtime only supplies the accent color. */\nconst SELECTION_STYLE = `[${NODE_ATTRIBUTE}]:focus-visible,[${SELECTED_ATTRIBUTE}=\"true\"]{outline:2px solid var(--visual-editor-accent,#0d9488);outline-offset:3px}[${NODE_ATTRIBUTE}]{cursor:pointer}[${EDIT_NODE_ATTRIBUTE}]{cursor:text}`;\n\n/** The page is made of frames: it has no body to edit in the piece, only its source. */\nexport const PREVIEW_FRAMESET = 'PREVIEW_FRAMESET';\n\n/** Normalizes optional DOM metadata; strict public options are validated separately. */\nexport function normalizePreviewLanguage(value: string | undefined): string | undefined {\n const candidate = value?.trim();\n if (!candidate || candidate.length > 100) return undefined;\n try {\n return new Intl.Locale(candidate).toString();\n } catch {\n return undefined;\n }\n}\n\nconst previewMetadataSchema = v.strictObject({\n title: v.exactOptional(v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(200))),\n lang: v.exactOptional(\n v.pipe(\n v.string(),\n v.trim(),\n v.minLength(1),\n v.maxLength(100),\n v.check((value) => normalizePreviewLanguage(value) !== undefined),\n ),\n ),\n});\n\n/** An opened frame document: the parsed tree and the parts the renderers mark. */\nexport interface OpenedPreview {\n readonly parsed: DefaultTreeAdapterMap['document'];\n readonly head: MarkupElement;\n readonly body: MarkupElement;\n readonly hostLanguage: string;\n readonly labels: CanvasBridgeLabels;\n readonly theme: CanvasBridgeTheme | undefined;\n}\n\n/**\n * The parts of an editing-frame document every renderer shares: the assembled copy with its\n * CSP, the language and title, the selection style and the single runtime script authorized by\n * the digest of its text. What marks the blocks is the renderer's own.\n */\nexport class PreviewFrameDocument {\n readonly #bridge = new CanvasBridgeScript();\n\n constructor(private readonly assembler: HtmlAssemblyPort) {}\n\n open(\n source: SourceInput,\n kind: DocumentKind,\n selectionLabel: string,\n options: PreviewFrameOptions,\n ): OpenedPreview {\n if (selectionLabel.length > 200) throw new Error('PREVIEW_LABEL_LIMIT');\n const metadata = v.parse(previewMetadataSchema, {\n ...(options.title !== undefined ? { title: options.title } : {}),\n ...(options.lang !== undefined ? { lang: options.lang } : {}),\n });\n const hostLanguage = normalizePreviewLanguage(metadata.lang) ?? 'und';\n const labels = options.labels ?? this.uniformLabels(selectionLabel);\n const theme = options.theme ? v.parse(previewThemeSchema, options.theme) : undefined;\n if (Object.values(labels).some((label) => typeof label !== 'string' || label.length > 200))\n throw new Error('PREVIEW_LABEL_LIMIT');\n const parsed = parse(this.assembler.build(source, kind, true));\n const { root, head, body, frameset } = documentParts(parsed);\n if (root && head && !body && frameset) throw new Error(PREVIEW_FRAMESET);\n if (!root || !head || !body) throw new Error('INVALID_PREVIEW_DOCUMENT');\n const existingLanguage = normalizePreviewLanguage(\n root.attrs.find((attribute) => attribute.name === 'lang')?.value,\n );\n root.attrs = root.attrs.filter((attribute) => attribute.name !== 'lang');\n root.attrs.push({ name: 'lang', value: existingLanguage ?? hostLanguage });\n const existingTitle = head.childNodes.find(\n (node): node is MarkupElement => 'tagName' in node && node.tagName === 'title',\n );\n const titleText = existingTitle?.childNodes\n .flatMap((node) => ('value' in node && node.nodeName === '#text' ? [node.value] : []))\n .join('')\n .trim();\n if (!titleText) {\n const title = existingTitle ?? defaultTreeAdapter.createElement('title', html.NS.HTML, []);\n title.childNodes = [];\n const fallbackTitle = metadata.title ?? selectionLabel.trim();\n if (!fallbackTitle) throw new Error('PREVIEW_TITLE_REQUIRED');\n defaultTreeAdapter.insertText(title, fallbackTitle);\n if (!existingTitle) defaultTreeAdapter.appendChild(head, title);\n }\n return { parsed, head, body, hostLanguage, labels, theme };\n }\n\n /** Adds the selection style and, for a new window, the runtime; serializes the result. */\n close(\n opened: OpenedPreview,\n preview: {\n readonly revision: number;\n readonly regions: readonly CanvasBridgeRegion[];\n readonly nodeIds: readonly string[];\n readonly token: string;\n readonly executable: boolean;\n },\n options: PreviewFrameOptions,\n ): SelectionPreview {\n const { parsed, head, body } = opened;\n const directive = head.childNodes.find(\n (node): node is MarkupElement =>\n 'tagName' in node &&\n node.tagName === 'meta' &&\n node.attrs.some(\n (attribute) =>\n attribute.name === 'http-equiv' && attribute.value === 'Content-Security-Policy',\n ),\n );\n const csp = directive?.attrs.find((attribute) => attribute.name === 'content');\n if (!csp) throw new Error('MISSING_PREVIEW_CSP');\n const style = defaultTreeAdapter.createElement('style', html.NS.HTML, []);\n defaultTreeAdapter.insertText(style, SELECTION_STYLE);\n defaultTreeAdapter.appendChild(head, style);\n // The one script is authorized by the digest of its exact text. A nonce in the policy would\n // sit in an attribute, which a style sheet of the document can read out character by\n // character; the secret of the protocol exists only inside the text of the script.\n let scriptSource = \"'none'\";\n if (preview.executable) {\n const names = previewVariables(options.variables);\n const variables = names ? { variables: names } : {};\n const code = this.#bridge.source({\n nonce: preview.token,\n revision: preview.revision,\n regions: preview.regions,\n readOnly: options.readOnly ?? false,\n labels: opened.labels,\n ...(opened.theme ? { theme: opened.theme } : {}),\n lang: opened.hostLanguage,\n fonts: TEXT_FONT_FAMILIES,\n ...(options.diagnostics ? { diagnostics: true } : {}),\n ...(options.menu === false ? { menu: false as const } : {}),\n ...variables,\n });\n const bridge = defaultTreeAdapter.createElement('script', html.NS.HTML, []);\n defaultTreeAdapter.insertText(bridge, code);\n defaultTreeAdapter.appendChild(body, bridge);\n scriptSource = `'sha256-${sha256Base64(code)}'`;\n }\n csp.value += `; script-src ${scriptSource}`;\n const output = serialize(parsed);\n if (new TextEncoder().encode(output).length > 8_000_000)\n throw new Error('PREVIEW_OUTPUT_LIMIT');\n return Object.freeze({\n html: output,\n nonce: preview.token,\n revision: preview.revision,\n nodeIds: Object.freeze([...preview.nodeIds]),\n regions: Object.freeze([...preview.regions]),\n readOnly: options.readOnly ?? false,\n diagnostics: options.diagnostics ?? false,\n });\n }\n\n private uniformLabels(selectionLabel: string): CanvasBridgeLabels {\n return Object.freeze({\n edit: selectionLabel,\n move: selectionLabel,\n up: selectionLabel,\n down: selectionLabel,\n duplicate: selectionLabel,\n remove: selectionLabel,\n before: selectionLabel,\n after: selectionLabel,\n inside: selectionLabel,\n parent: selectionLabel,\n html: selectionLabel,\n image: selectionLabel,\n add: selectionLabel,\n resize: selectionLabel,\n resizeHint: selectionLabel,\n replace: selectionLabel,\n embed: selectionLabel,\n });\n }\n}\n","import type { DocumentKind, SourceInput } from '../core/document';\nimport { EDIT_NODE_ATTRIBUTE, NODE_ATTRIBUTE, isReservedAttribute } from '../core/canvas-contract';\nimport type { SecureIdentifier } from '../security/identity';\nimport type { CanvasBridgeRegion } from './canvas-bridge';\nimport type { MarkupElement, MarkupParent } from './markup-tree';\nimport { markupChildren, stripReservedAttributes } from './markup-tree';\nimport type {\n OpenedPreview,\n PreviewFrameDocument,\n PreviewFrameOptions,\n SelectionPreview,\n SelectionPreviewSource,\n} from './preview-frame';\n\n/**\n * The preview of a block piece (schema 2) for the editing frame: the output of the generators\n * in preview mode, already marked with `data-visual-editor-node` and\n * `data-visual-editor-edit-node`, and the regions of its blocks.\n */\nexport interface BlockPreviewInput {\n readonly id: string;\n readonly revision: number;\n readonly kind: DocumentKind;\n readonly source: SourceInput;\n readonly regions: readonly CanvasBridgeRegion[];\n}\n\n/**\n * Builds the frame document of a block piece and keeps the marks the generators wrote. A mark\n * is kept only for a block of the piece, once per block, and an edit mark only for an editable\n * block, inside its own selectable element; every other reserved attribute is removed. The\n * content rules of the blocks already refuse those attributes in free HTML: this is the second\n * barrier, so markup of the author can never pose as a block.\n */\nexport class MarkedPreviewRenderer implements SelectionPreviewSource<BlockPreviewInput> {\n constructor(\n private readonly frame: PreviewFrameDocument,\n private readonly identifiers: SecureIdentifier,\n ) {}\n\n build(\n input: BlockPreviewInput,\n selectionLabel: string,\n options: PreviewFrameOptions = {},\n ): SelectionPreview {\n return this.render(input, selectionLabel, options, this.identifiers.next(), true);\n }\n\n update(\n input: BlockPreviewInput,\n selectionLabel: string,\n current: Pick<SelectionPreview, 'nonce'>,\n options: PreviewFrameOptions = {},\n ): SelectionPreview {\n if (!/^[A-Za-z0-9_-]{16,100}$/.test(current.nonce)) throw new Error('INVALID_PREVIEW_NONCE');\n return this.render(input, selectionLabel, options, current.nonce, false);\n }\n\n private render(\n input: BlockPreviewInput,\n selectionLabel: string,\n options: PreviewFrameOptions,\n token: string,\n executable: boolean,\n ): SelectionPreview {\n const opened = this.frame.open(input.source, input.kind, selectionLabel, options);\n const known = new Map(input.regions.map((region) => [region.id, region]));\n if (known.size !== input.regions.length) throw new Error('PREVIEW_MAPPING_FAILED');\n const { nodes: found, edits } = this.keepMarks(opened, known, selectionLabel);\n // Regions whose block draws nothing (an image without address in the final output, say)\n // are left out; a region keeps the nearest drawn block above it as its parent.\n const drawn = (id: string | null): string | null => {\n let current = id;\n while (current !== null && !found.has(current))\n current = known.get(current)?.parentId ?? null;\n return current;\n };\n const regions = input.regions\n .filter((region) => found.has(region.id))\n .map((region) =>\n Object.freeze({\n ...region,\n parentId: drawn(region.parentId),\n // Without the element of its text, the block is selected but not edited in place.\n editable: region.editable && edits.has(region.id),\n }),\n );\n return this.frame.close(\n opened,\n {\n revision: input.revision,\n regions,\n nodeIds: regions.map((region) => region.id),\n token,\n executable,\n },\n options,\n );\n }\n\n /** Validates the marks in document order; returns the ids of the blocks and texts found. */\n private keepMarks(\n opened: OpenedPreview,\n known: ReadonlyMap<string, CanvasBridgeRegion>,\n selectionLabel: string,\n ): { readonly nodes: ReadonlySet<string>; readonly edits: ReadonlySet<string> } {\n stripReservedAttributes(opened.head);\n const nodes = new Set<string>();\n const edits = new Set<string>();\n const visit = (parent: MarkupParent, owners: readonly string[]): void => {\n for (const child of markupChildren(parent)) {\n if (!('tagName' in child)) continue;\n const element = child as MarkupElement;\n if (element.tagName === 'template') {\n stripReservedAttributes(element);\n continue;\n }\n const node = this.attribute(element, NODE_ATTRIBUTE);\n const edit = this.attribute(element, EDIT_NODE_ATTRIBUTE);\n element.attrs = element.attrs.filter((attribute) => !isReservedAttribute(attribute.name));\n let inside = owners;\n if (node !== undefined && known.has(node) && !nodes.has(node)) {\n nodes.add(node);\n inside = [...owners, node];\n element.attrs = element.attrs.filter((attribute) => attribute.name !== 'tabindex');\n element.attrs.push(\n { name: NODE_ATTRIBUTE, value: node },\n { name: 'tabindex', value: '0' },\n );\n if (!element.attrs.some((attribute) => attribute.name === 'title'))\n element.attrs.push({ name: 'title', value: selectionLabel });\n }\n if (\n edit !== undefined &&\n known.get(edit)?.editable &&\n !edits.has(edit) &&\n inside.at(-1) === edit\n ) {\n edits.add(edit);\n element.attrs.push({ name: EDIT_NODE_ATTRIBUTE, value: edit });\n }\n visit(element, inside);\n }\n };\n visit(opened.body, []);\n return { nodes, edits };\n }\n\n private attribute(element: MarkupElement, name: string): string | undefined {\n return element.attrs.find((attribute) => attribute.name === name)?.value;\n }\n}\n","import type { DefaultTreeAdapterMap } from 'parse5';\nimport type { DocumentNode, EditorDocumentData } from '../core/document';\nimport type { DocumentOutputCodec, DocumentOutputPolicy } from './page-renderer';\nimport type { HtmlAssemblyPort } from './preview-document';\nimport { SecureIdentifier } from '../security/identity';\nimport { CanvasLayout } from '../core/canvas-layout';\nimport { BlockCatalog } from '../core/catalog';\nimport { RichTextProjectionRules } from '../rich-text/projection-rules';\nimport type { CanvasRegion } from '../core/canvas-layout';\nimport type { SourceInput } from '../core/document';\nimport { ElementSourceMap } from './element-source';\nimport { alignElements, canonicalElements, stripReservedAttributes } from './markup-tree';\nimport {\n EDIT_NODE_ATTRIBUTE,\n NODE_ATTRIBUTE,\n TEXT_ORIGIN_ATTRIBUTE,\n isReservedAttribute,\n} from '../core/canvas-contract';\nimport { PreviewFrameDocument } from './preview-frame';\nimport type {\n PreviewFrameOptions,\n SelectionPreview,\n SelectionPreviewSource,\n} from './preview-frame';\nimport { MarkedPreviewRenderer } from './marked-preview';\nimport type { BlockPreviewInput } from './marked-preview';\n\nexport {\n framePreview,\n normalizePreviewLanguage,\n previewThemeSchema,\n PREVIEW_FRAMESET,\n} from './preview-frame';\nexport type {\n FramePreviewSource,\n PreviewFrameOptions,\n SelectionPreview,\n SelectionPreviewSource,\n} from './preview-frame';\nexport type { BlockPreviewInput } from './marked-preview';\n\nexport interface SelectionPreviewOptions extends PreviewFrameOptions {\n /** Friendly name of each selectable block, in the language of the host shell. */\n readonly describe?: (region: CanvasRegion) => string | undefined;\n}\n\n/** Instruments logical regions after validating the complete untrusted document. */\nexport class SelectionPreviewRenderer implements SelectionPreviewSource<EditorDocumentData> {\n readonly #identifiers = new SecureIdentifier();\n readonly #catalog: BlockCatalog;\n readonly #layout: CanvasLayout;\n readonly #frame: PreviewFrameDocument;\n readonly #rules = new RichTextProjectionRules();\n readonly #sources = new ElementSourceMap();\n /**\n * The previews of block pieces (schema 2). Their markup comes from the generators already\n * marked; this path keeps those marks, only for blocks of the piece and once each, instead\n * of deriving them from an HTML document.\n */\n readonly blocks: SelectionPreviewSource<BlockPreviewInput>;\n\n constructor(\n private readonly codec: DocumentOutputCodec,\n private readonly policy: DocumentOutputPolicy,\n private readonly assembler: HtmlAssemblyPort,\n /** The catalog and the layout of the editor it serves; its own when used alone. */\n structure: { readonly catalog?: BlockCatalog; readonly layout?: CanvasLayout } = {},\n ) {\n this.#catalog = structure.catalog ?? new BlockCatalog();\n this.#layout = structure.layout ?? new CanvasLayout(this.#catalog);\n this.#frame = new PreviewFrameDocument(assembler);\n this.blocks = new MarkedPreviewRenderer(this.#frame, this.#identifiers);\n }\n\n /** The markup one element has in the exported source, for editing it as HTML. */\n elementSource(document: EditorDocumentData, id: string): string | undefined {\n return this.#sources.read(document, this.codec.export(document), id);\n }\n\n /** The exported source with one element replaced; it still has to be imported and validated. */\n replaceElementSource(\n document: EditorDocumentData,\n id: string,\n html: string,\n ): SourceInput | undefined {\n return this.#sources.replace(document, this.codec.export(document), id, html);\n }\n\n /** A complete preview for a new window: a fresh protocol secret, CSP and the runtime script. */\n build(\n document: EditorDocumentData,\n selectionLabel: string,\n options: SelectionPreviewOptions = {},\n ): SelectionPreview {\n return this.render(document, selectionLabel, options, this.#identifiers.next(), true);\n }\n\n /**\n * The next revision for a window which is already running: same secret, no script. The frame\n * runtime reconciles this markup over what it shows instead of reloading.\n */\n update(\n document: EditorDocumentData,\n selectionLabel: string,\n current: Pick<SelectionPreview, 'nonce'>,\n options: SelectionPreviewOptions = {},\n ): SelectionPreview {\n if (!/^[A-Za-z0-9_-]{16,100}$/.test(current.nonce)) throw new Error('INVALID_PREVIEW_NONCE');\n return this.render(document, selectionLabel, options, current.nonce, false);\n }\n\n private render(\n document: EditorDocumentData,\n selectionLabel: string,\n options: SelectionPreviewOptions,\n token: string,\n executable: boolean,\n ): SelectionPreview {\n this.policy.assertSafe(document);\n const originIds = new Set<string>();\n const origins = (node: DocumentNode): void => {\n for (const child of node.children ?? []) {\n if (child.type !== 'element') continue;\n if (this.#rules.needsOrigin(child.tag ?? '', Object.keys(child.attrs ?? {})))\n originIds.add(child.id);\n origins(child);\n }\n };\n const regions = this.#layout.selectionRegions(document).map((region) => {\n if (region.editable) origins(region.node);\n const label = options.describe?.(region)?.trim().slice(0, 80);\n return Object.freeze({\n ...(label ? { label } : {}),\n ...(region.node.tag === 'img' ? { media: 'image' as const } : {}),\n id: region.id,\n parentId: region.parentId,\n editable: region.editable,\n container: region.container,\n ...(region.editable\n ? {\n blocks: this.#catalog.richTextAllowsBlocks(region.node),\n links: region.kind !== 'button',\n }\n : {}),\n });\n });\n const editIds = new Set(regions.flatMap((region) => (region.editable ? [region.id] : [])));\n const regionIds = new Set(regions.map((region) => region.id));\n const ids: string[] = [];\n const structure = canonicalElements(document.nodes);\n const source = this.codec.export(document);\n const opened = this.#frame.open(source, document.kind, selectionLabel, options);\n const parsed = opened.parsed;\n const paired = alignElements(parsed, structure, {\n // Nothing the document wrote may pass for a mark of the editor, wherever it is kept.\n element: (node) => {\n if (node.attrs.some((attribute) => isReservedAttribute(attribute.name)))\n node.attrs = node.attrs.filter((attribute) => !isReservedAttribute(attribute.name));\n if (node.tagName === 'template' && 'content' in node)\n stripReservedAttributes((node as DefaultTreeAdapterMap['template']).content);\n },\n match: (node, canonical, island) => {\n if (originIds.has(canonical.id))\n node.attrs.push({ name: TEXT_ORIGIN_ATTRIBUTE, value: canonical.id });\n if (editIds.has(canonical.id))\n node.attrs.push({ name: EDIT_NODE_ATTRIBUTE, value: canonical.id });\n // An inline SVG or MathML island is one node of the document, kept as source.\n if (island)\n for (const child of node.childNodes)\n if ('tagName' in child) stripReservedAttributes(child);\n if (!regionIds.has(canonical.id)) return;\n ids.push(canonical.id);\n node.attrs = node.attrs.filter((attribute) => attribute.name !== 'tabindex');\n node.attrs.push(\n { name: NODE_ATTRIBUTE, value: canonical.id },\n { name: 'tabindex', value: '0' },\n );\n if (!node.attrs.some((attribute) => attribute.name === 'title'))\n node.attrs.push({ name: 'title', value: selectionLabel });\n },\n });\n if (paired !== structure.length) throw new Error('PREVIEW_MAPPING_FAILED');\n return this.#frame.close(\n opened,\n { revision: document.revision, regions, nodeIds: ids, token, executable },\n options,\n );\n }\n}\n","/** Escapes a value for an HTML text node or a double-quoted attribute. */\nexport function escapeHtml(value: string): string {\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;');\n}\n","import type { DocumentNode, EditorDocumentData } from '../core/document';\nimport { BlockCatalog } from '../core/catalog';\nimport { CanvasLayout } from '../core/canvas-layout';\nimport { escapeHtml } from '../core/html-escape';\nimport { UrlPolicy } from '../security/url-policy';\nimport { RichTextProjectionRules } from '../rich-text/projection-rules';\n\nexport interface OutlineEntry {\n readonly id: string;\n readonly parentId: string | null;\n readonly index: number;\n readonly depth: number;\n readonly tag: string;\n readonly label: string;\n readonly labelKey?: string;\n readonly node: DocumentNode;\n}\n\n/** Projects editable text without bringing document styles/classes into the host DOM. */\nexport class DocumentOutline {\n private readonly capabilities: BlockCatalog;\n private readonly layout: CanvasLayout;\n private readonly rules = new RichTextProjectionRules();\n constructor(\n private readonly urls = new UrlPolicy(),\n capabilities?: BlockCatalog,\n layout?: CanvasLayout,\n ) {\n this.capabilities = capabilities ?? new BlockCatalog();\n this.layout = layout ?? new CanvasLayout(this.capabilities);\n }\n\n entries(document: EditorDocumentData): readonly OutlineEntry[] {\n return this.layout.selectionRegions(document).map((region) => {\n const content = this.text(region.node).trim();\n return {\n id: region.id,\n parentId: region.parentId,\n index: region.index,\n depth: region.depth,\n tag: region.node.tag ?? '',\n label: content.slice(0, 75) || region.node.attrs?.alt || region.node.tag || '',\n ...(!content && !region.node.attrs?.alt && region.labelKey\n ? { labelKey: region.labelKey }\n : {}),\n node: region.node,\n };\n });\n }\n\n text(node: DocumentNode): string {\n return node.type === 'text'\n ? (node.value ?? '')\n : (node.children ?? []).map((child) => this.text(child)).join('');\n }\n\n editableTextNode(node: DocumentNode): DocumentNode | undefined {\n if (node.type === 'text') return node;\n return (node.children ?? []).find((child) => child.type === 'text');\n }\n\n richText(node: DocumentNode): string | undefined {\n if (node.type !== 'element' || !this.capabilities.canEditRichText(node)) return undefined;\n const rules = this.rules;\n const blocks = { has: (tag: string): boolean => rules.isBlock(tag) };\n const serialize = (entry: DocumentNode): string | undefined => {\n if (entry.type === 'text') return escapeHtml(entry.value ?? '');\n if (entry.type !== 'element' || !rules.supports(entry.tag ?? '')) return undefined;\n const tag = rules.canonicalTag(entry.tag ?? '');\n const allowed = rules.semanticAttributes(tag);\n const attributes = Object.entries(entry.attrs ?? {}).filter(([name]) =>\n allowed.includes(name),\n );\n if (attributes.some(([name, value]) => name === 'href' && !this.urls.isSafe(value, 'link')))\n return undefined;\n if (rules.needsOrigin(entry.tag ?? '', Object.keys(entry.attrs ?? {})))\n attributes.push(['data-editor-rich-origin', entry.id]);\n const attrs = attributes.map(([name, value]) => ` ${name}=\"${escapeHtml(value)}\"`).join('');\n const children = (entry.children ?? []).map(serialize);\n if (children.includes(undefined)) return undefined;\n return tag === 'br' || tag === 'hr'\n ? `<${tag}${attrs}>`\n : `<${tag}${attrs}>${children.join('')}</${tag}>`;\n };\n const children = (node.children ?? []).map(serialize);\n if (children.includes(undefined)) return undefined;\n const content = children.join('');\n const hasBlocks = (node.children ?? []).some((child) => blocks.has(child.tag ?? ''));\n if (this.capabilities.richTextAllowsBlocks(node) && hasBlocks) {\n // Normalize mixed text/block content for the rich editor while preserving each block.\n const normalized: string[] = [];\n let inlineContent = '';\n (node.children ?? []).forEach((child, index) => {\n if (blocks.has(child.tag ?? '')) {\n if (inlineContent.trim()) normalized.push(`<p>${inlineContent}</p>`);\n inlineContent = '';\n normalized.push(children[index] ?? '');\n } else inlineContent += children[index] ?? '';\n });\n if (inlineContent.trim()) normalized.push(`<p>${inlineContent}</p>`);\n return normalized.join('');\n }\n return `<p>${content}</p>`;\n }\n}\n","import type { AssetReference } from '../../application/host';\nimport type { EditorSession } from '../../application/session';\nimport type {\n CanvasLayout,\n CanvasMotion,\n CanvasPlacement,\n CanvasRegion,\n CanvasTarget,\n} from '../../core/canvas-layout';\nimport type { EditorDocumentData, SourceInput } from '../../core/document';\nimport type { TemplateCatalog } from '../../templates/catalog';\nimport type { MutationGuard } from './guard';\n\n/** Commands which add, move, duplicate and remove blocks, each one validated by the session. */\nexport class BlockEditing {\n constructor(\n private readonly session: EditorSession,\n private readonly layout: CanvasLayout,\n private readonly templates: TemplateCatalog,\n private readonly guard: MutationGuard,\n ) {}\n\n /**\n * Where something new lands: next to `targetId`, at the selected block, or (`end`) after all\n * the content whatever is selected.\n */\n private destination(\n targetId: string | undefined,\n placement: CanvasPlacement,\n end = false,\n ): CanvasTarget | undefined {\n const state = this.session.getState();\n if (end) return this.layout.insertionTarget(state.document);\n return targetId\n ? this.layout.insertionAt(state.document, targetId, placement)\n : this.layout.insertionTarget(state.document, state.selectedNodeId);\n }\n\n /** A block of the catalog, compiled when it is of an e-mail, where `destination` says. */\n async add(\n type: string,\n targetId: string | undefined,\n placement: CanvasPlacement,\n end = false,\n ): Promise<boolean> {\n if (!this.guard.prepareMutation()) return false;\n const initial = this.session.getState();\n const destination = this.destination(targetId, placement, end);\n if (!destination) return false;\n const source = await this.templates.createBlock(type, initial.document.kind);\n return (\n this.guard.isCurrent(initial) &&\n this.session.insertSource(source, destination.parentId, destination.index)\n );\n }\n\n /** Markup next to a block, at the selection or at the end: the paste of a copied block. */\n insertSource(\n source: SourceInput,\n targetId: string | undefined,\n placement: CanvasPlacement,\n end = false,\n ): boolean {\n if (!this.guard.prepareMutation()) return false;\n const destination = this.destination(targetId, placement, end);\n return (\n !!destination && this.session.insertSource(source, destination.parentId, destination.index)\n );\n }\n\n /** Replaces the whole source through the ordinary import: one validated history step. */\n replaceSource(source: SourceInput): boolean {\n return this.guard.prepareMutation() && this.session.importSource(source);\n }\n\n async applyTemplate(id: string): Promise<boolean> {\n if (!this.guard.prepareMutation()) return false;\n const initial = this.session.getState();\n const source = await this.templates.create(id);\n return this.guard.isCurrent(initial) && this.session.importSource(source);\n }\n\n moveTo(sourceId: string, targetId: string, placement: CanvasPlacement): boolean {\n if (!this.guard.prepareMutation()) return false;\n const document = this.session.getState().document;\n const movement = this.layout.motion(document, sourceId, targetId, placement);\n return (\n !!movement && this.session.moveBlock(movement.sourceId, movement.parentId, movement.index)\n );\n }\n\n act(id: string, action: 'duplicate' | 'remove' | 'up' | 'down'): boolean {\n if (!this.guard.prepareMutation()) return false;\n const document = this.session.getState().document;\n const region = this.layout.actionUnit(document, id);\n if (!region) return false;\n if (action === 'duplicate') return this.session.duplicateBlock(region.id);\n if (action === 'remove') return this.session.removeBlock(region.id);\n if (action !== 'up' && action !== 'down') return false;\n const motion = this.step(document, id, region, action === 'up' ? -1 : 1);\n return !!motion && this.session.moveBlock(motion.sourceId, motion.parentId, motion.index);\n }\n\n /**\n * One step of a block up or down, by keyboard or by the buttons of the bar. Next to a sibling\n * it passes it, entering it first when the sibling is a container which takes the block; at\n * the edge of its container it leaves it, before or after the closest ancestor which takes it,\n * or, where that is refused, into the container beside that ancestor.\n * Every candidate goes through the same check as a drop, so the step lands only where a drag\n * could, and it is one move of the session: one step of undo.\n */\n private step(\n document: EditorDocumentData,\n id: string,\n region: CanvasRegion,\n direction: -1 | 1,\n ): CanvasMotion | undefined {\n const source = this.layout.resolveSelection(document, id);\n const regions =\n source?.id === region.id\n ? this.layout.selectionRegions(document)\n : this.layout.regions(document);\n const siblings = regions\n .filter((candidate) => candidate.parentId === region.parentId)\n .sort((left, right) => left.index - right.index);\n const position = siblings.findIndex((candidate) => candidate.id === region.id);\n const neighbour = siblings[position + direction];\n const parents = this.layout.selectionParents(document);\n const containers = new Set(\n this.layout\n .selectionRegions(document)\n .filter((candidate) => candidate.container)\n .map((candidate) => candidate.id),\n );\n const placement: CanvasPlacement = direction < 0 ? 'before' : 'after';\n const candidates: [string, CanvasPlacement][] = [];\n if (neighbour) {\n if (!region.container && neighbour.container)\n candidates.push(...this.entry(parents, containers, neighbour.id, direction));\n candidates.push([neighbour.id, placement]);\n } else {\n const seen = new Set<string>();\n let parent = region.parentId\n ? this.layout.resolveSelection(document, region.parentId)?.id\n : undefined;\n while (parent && !seen.has(parent)) {\n seen.add(parent);\n // Out of the container, next to it; where that is refused (the rows of an e-mail), into\n // the container beside it, as if the block had crossed the edge between the two.\n candidates.push([parent, placement]);\n const owner = parents.get(parent);\n const level = [...parents].filter(([, above]) => above === owner).map(([id]) => id);\n const beside = level[level.indexOf(parent) + direction];\n if (beside && !region.container && containers.has(beside))\n candidates.push(...this.entry(parents, containers, beside, direction));\n parent = owner;\n }\n }\n for (const [targetId, where] of candidates) {\n const motion = this.layout.motion(document, region.id, targetId, where);\n if (motion) return motion;\n }\n return undefined;\n }\n\n /**\n * Where a block enters a container it moves into: the near edge of its deepest container\n * first (the top going down, the end going up), then each shallower level.\n */\n private entry(\n parents: ReadonlyMap<string, string | undefined>,\n containers: ReadonlySet<string>,\n containerId: string,\n direction: -1 | 1,\n ): [string, CanvasPlacement][] {\n const children = (id: string): string[] =>\n [...parents].filter(([, parent]) => parent === id).map(([child]) => child);\n const result: [string, CanvasPlacement][] = [];\n const seen = new Set<string>();\n let current: string | undefined = containerId;\n while (current && containers.has(current) && !seen.has(current)) {\n seen.add(current);\n const list = children(current);\n const edge = direction > 0 ? list[0] : list.at(-1);\n if (!edge) {\n result.unshift([current, 'inside']);\n break;\n }\n result.unshift([edge, direction > 0 ? 'before' : 'after']);\n current = edge;\n }\n return result;\n }\n\n connectFormReference(reference: string, nodeId?: string): boolean {\n if (!this.guard.prepareMutation()) return false;\n const state = this.session.getState();\n if (nodeId) {\n const node = this.layout.resolveSelection(state.document, nodeId)?.node;\n return !!node && this.session.connectFormReference(reference, node.id);\n }\n const destination = this.layout.insertionTarget(state.document, state.selectedNodeId);\n return (\n !!destination &&\n this.session.connectFormReference(\n reference,\n undefined,\n destination.parentId,\n destination.index,\n )\n );\n }\n\n attachAsset(asset: AssetReference, nodeId?: string): boolean {\n if (!this.guard.prepareMutation()) return false;\n const state = this.session.getState();\n if (nodeId) {\n const node = this.layout.resolveSelection(state.document, nodeId)?.node;\n return !!node && this.session.attachAsset(asset, node.id);\n }\n const destination = this.layout.insertionTarget(state.document, state.selectedNodeId);\n return (\n !!destination &&\n this.session.attachAsset(asset, undefined, destination.parentId, destination.index)\n );\n }\n}\n","import type { EditorSession } from '../../application/session';\n\ntype ViewState = ReturnType<EditorSession['getState']>;\n\n/** What has to be settled before a command changes or exports the document. */\nexport class MutationGuard {\n constructor(private readonly session: EditorSession) {}\n\n /** Concludes the text being edited and the pending source; false when the document is locked. */\n prepareMutation(): boolean {\n if (!this.session.commitRichText()) return false;\n const state = this.session.getState();\n if (state.readOnly) return false;\n if (state.draftSource.html !== state.source.html || state.draftSource.css !== state.source.css)\n return this.session.commitDraft();\n return true;\n }\n\n prepareExport(): void {\n if (!this.session.commitRichText()) throw new Error('feedback.invalid');\n const state = this.session.getState();\n if (state.draftSource.html === state.source.html && state.draftSource.css === state.source.css)\n return;\n if (!this.session.commitDraft()) throw new Error('feedback.invalid');\n }\n\n /** Nothing changed since `initial`: the answer to something asynchronous still applies. */\n isCurrent(initial: ViewState): boolean {\n try {\n const current = this.session.getState();\n return (\n !current.readOnly &&\n current.editGeneration === initial.editGeneration &&\n current.document.revision === initial.document.revision &&\n current.mode === initial.mode &&\n current.selectedNodeId === initial.selectedNodeId &&\n current.draftSource.html === initial.draftSource.html &&\n current.draftSource.css === initial.draftSource.css\n );\n } catch {\n return false;\n }\n }\n}\n","import type { EditorSession } from '../../application/session';\nimport type { BlockCatalog, BlockType } from '../../core/catalog';\nimport type { CanvasLayout, CanvasMovementTarget } from '../../core/canvas-layout';\nimport type { DocumentOutline, OutlineEntry } from '../outline';\n\ninterface Revision {\n readonly documentId: string;\n readonly revision: number;\n}\n\nexport interface PropertyCapabilities {\n attributes: readonly string[];\n styles: readonly string[];\n richText: boolean;\n blocks: boolean;\n container: boolean;\n kind: BlockType | 'container' | 'native';\n}\n\n/**\n * What the shell asks about the structure of the document on screen: its blocks, the selected\n * one, where a block may go. Answers which cost a walk of the tree are kept for the revision\n * which produced them; a revision number never names two different documents.\n */\nexport class StructureQueries {\n #entries: (Revision & { readonly entries: readonly OutlineEntry[] }) | undefined;\n #selected:\n | (Revision & { readonly id: string | undefined; readonly entry: OutlineEntry | undefined })\n | undefined;\n #insertion: (Revision & { readonly targets: readonly CanvasMovementTarget[] }) | undefined;\n #movement:\n | (Revision & { readonly sourceId: string; readonly targets: readonly CanvasMovementTarget[] })\n | undefined;\n\n constructor(\n private readonly session: EditorSession,\n private readonly layout: CanvasLayout,\n private readonly catalog: BlockCatalog,\n private readonly outline: DocumentOutline,\n ) {}\n\n private same(cached: Revision | undefined, document: { id: string; revision: number }): boolean {\n return cached?.documentId === document.id && cached.revision === document.revision;\n }\n\n entries(): readonly OutlineEntry[] {\n const { document } = this.session.getState();\n const cached = this.#entries;\n if (cached && this.same(cached, document)) return cached.entries;\n const entries = this.outline.entries(document);\n this.#entries = { documentId: document.id, revision: document.revision, entries };\n return entries;\n }\n\n regions() {\n return this.layout.selectionRegions(this.session.getState().document);\n }\n\n resolve(id: string) {\n return this.layout.resolveSelection(this.session.getState().document, id);\n }\n\n selected(): OutlineEntry | undefined {\n const { document, selectedNodeId: id } = this.session.getState();\n const cached = this.#selected;\n if (cached && this.same(cached, document) && cached.id === id) return cached.entry;\n const entry = id ? this.entries().find((candidate) => candidate.id === id) : undefined;\n this.#selected = { documentId: document.id, revision: document.revision, id, entry };\n return entry;\n }\n\n /** The closest selectable block which contains `id`. */\n parentOf(id: string): string | undefined {\n const region = this.resolve(id);\n const parent = region?.parentId ? this.resolve(region.parentId) : undefined;\n return parent && parent.id !== region?.id ? parent.id : undefined;\n }\n\n movementTargets(sourceId: string): readonly CanvasMovementTarget[] {\n const state = this.session.getState();\n if (state.readOnly) return [];\n const cached = this.#movement;\n if (cached && this.same(cached, state.document) && cached.sourceId === sourceId)\n return structuredClone(cached.targets);\n const targets = this.layout.validMovementTargets(state.document, sourceId);\n this.#movement = {\n documentId: state.document.id,\n revision: state.document.revision,\n sourceId,\n targets,\n };\n return structuredClone(targets);\n }\n\n /** Where a new block may be dropped, by block and side; the command validates again. */\n insertionTargets(): readonly CanvasMovementTarget[] {\n const state = this.session.getState();\n if (state.readOnly) return [];\n const cached = this.#insertion;\n if (cached && this.same(cached, state.document)) return structuredClone(cached.targets);\n const targets: CanvasMovementTarget[] = [];\n for (const region of this.layout.selectionRegions(state.document)) {\n const placements = (['before', 'after', 'inside'] as const).filter(\n (placement) =>\n (placement !== 'inside' || region.container) &&\n !!this.layout.insertionAt(state.document, region.id, placement),\n );\n if (placements.length) targets.push({ targetId: region.id, placements });\n }\n this.#insertion = {\n documentId: state.document.id,\n revision: state.document.revision,\n targets,\n };\n return structuredClone(targets);\n }\n\n propertyCapabilities(): PropertyCapabilities | undefined {\n const selected = this.selected();\n const region = selected ? this.resolve(selected.id) : undefined;\n if (!selected || !region) return undefined;\n const properties = this.catalog.properties(selected.node);\n return {\n attributes: properties\n .filter((property) => property.kind === 'attribute')\n .map((property) => property.name),\n styles: properties\n .filter((property) => property.kind === 'style')\n .map((property) => property.name),\n richText: region.editable && this.outline.richText(selected.node) !== undefined,\n blocks: region.editable && this.catalog.richTextAllowsBlocks(selected.node),\n container: region.container,\n kind: region.kind,\n };\n }\n}\n","import type { EditorSession } from '../../application/session';\nimport type { BlockCatalog } from '../../core/catalog';\nimport type { CanvasLayout } from '../../core/canvas-layout';\nimport type { DocumentOutline } from '../outline';\nimport type { StructureQueries } from './structure';\n\n/** The text of a block: what the editors show and the transaction which changes it. */\nexport class TextEditing {\n constructor(\n private readonly session: EditorSession,\n private readonly layout: CanvasLayout,\n private readonly catalog: BlockCatalog,\n private readonly outline: DocumentOutline,\n private readonly structure: StructureQueries,\n ) {}\n\n private region(id: string) {\n return this.layout.resolveSelection(this.session.getState().document, id);\n }\n\n plain(): string {\n const selected = this.structure.selected();\n return selected ? this.outline.text(selected.node) : '';\n }\n\n /** The projection of the text of `id`: the valid pending draft, or what the document holds. */\n richTextFor(id: string): string | undefined {\n const state = this.session.getState();\n if (state.pendingRichText?.id === id && state.pendingRichText.valid)\n return state.pendingRichText.html;\n const region = this.region(id);\n return region?.editable ? this.outline.richText(region.node) : undefined;\n }\n\n allowsBlocksFor(id: string): boolean {\n const region = this.region(id);\n return !!region?.editable && this.catalog.richTextAllowsBlocks(region.node);\n }\n\n /** Opens the transaction of an already selected block. */\n begin(id: string): boolean {\n const region = this.region(id);\n const html = region?.editable ? this.outline.richText(region.node) : undefined;\n return !!region && html !== undefined && this.session.beginRichText(region.id, html);\n }\n\n updatePlain(value: string): boolean {\n const selected = this.structure.selected();\n if (!selected) return false;\n const textNode = this.outline.editableTextNode(selected.node);\n return textNode ? this.session.updateText(textNode.id, value) : false;\n }\n\n updateRichTextFor(id: string, value: string): boolean {\n const region = this.region(id);\n return (\n !!region?.editable &&\n this.outline.richText(region.node) !== undefined &&\n this.session.updateRichText(region.id, value)\n );\n }\n}\n","import * as v from 'valibot';\nimport { EditorDocument } from '../core/document';\nimport type { EditorDocumentData, SourceInput } from '../core/document';\nimport type { PendingRichTextDraft } from '../application/session';\nimport { DocumentBudget } from '../core/budget';\n\nconst boundedHtml = v.pipe(v.string(), v.maxLength(DocumentBudget.limits.sourceBytes));\nconst recoverySchema = v.strictObject({\n format: v.literal('visual-editor-recovery-v1'),\n document: v.unknown(),\n pendingSource: v.strictObject({\n html: boundedHtml,\n css: v.pipe(v.string(), v.maxLength(DocumentBudget.limits.cssBytes)),\n }),\n pendingRichText: v.exactOptional(\n v.strictObject({\n id: v.pipe(v.string(), v.minLength(1), v.maxLength(200)),\n html: boundedHtml,\n originalHtml: boundedHtml,\n changed: v.boolean(),\n valid: v.boolean(),\n blocked: v.exactOptional(v.literal('oversized')),\n documentId: v.pipe(v.string(), v.minLength(1), v.maxLength(200)),\n baseRevision: v.pipe(\n v.number(),\n v.integer(),\n v.minValue(0),\n v.maxValue(Number.MAX_SAFE_INTEGER),\n ),\n editGeneration: v.pipe(\n v.number(),\n v.integer(),\n v.minValue(0),\n v.maxValue(Number.MAX_SAFE_INTEGER),\n ),\n }),\n ),\n});\n\n/** Pending source and canvas text are inert JSON. Reopening validates before projection. */\nexport class DocumentRecovery {\n encode(\n document: EditorDocumentData,\n pendingSource: SourceInput,\n pendingRichText?: PendingRichTextDraft,\n ): string {\n const serialized = JSON.stringify({\n format: 'visual-editor-recovery-v1',\n document,\n pendingSource,\n ...(pendingRichText ? { pendingRichText } : {}),\n });\n if (new DocumentBudget().byteLength(serialized) > DocumentBudget.limits.jsonBytes)\n throw new RangeError('RECOVERY_TOO_LARGE');\n return serialized;\n }\n\n decode(value: unknown):\n | (Omit<v.InferOutput<typeof recoverySchema>, 'document'> & {\n readonly document: EditorDocumentData;\n })\n | undefined {\n const parsed = v.safeParse(recoverySchema, value);\n if (!parsed.success) return undefined;\n try {\n const budget = new DocumentBudget();\n EditorDocument.from(parsed.output.document);\n budget.assertSource(parsed.output.pendingSource.html, parsed.output.pendingSource.css);\n if (parsed.output.pendingRichText) {\n budget.assertSource(parsed.output.pendingRichText.html, '');\n budget.assertSource(parsed.output.pendingRichText.originalHtml, '');\n }\n } catch {\n return undefined;\n }\n return { ...parsed.output, document: EditorDocument.from(parsed.output.document).snapshot() };\n }\n}\n","import type { EditorSession } from '../../application/session';\nimport { DocumentBudget } from '../../core/budget';\nimport type { CanvasLayout } from '../../core/canvas-layout';\nimport { EditorDocument } from '../../core/document';\nimport type { SourceInput } from '../../core/document';\nimport type { HtmlAssemblyPort } from '../../renderers/preview-document';\nimport type { DocumentOutline } from '../outline';\nimport { DocumentRecovery } from '../recovery';\nimport type { MutationGuard } from './guard';\n\n/** What leaves and enters the editor as a file: source, document, preview and recovery copy. */\nexport class DocumentTransfer {\n constructor(\n private readonly session: EditorSession,\n private readonly assembler: HtmlAssemblyPort,\n private readonly layout: CanvasLayout,\n private readonly outline: DocumentOutline,\n private readonly guard: MutationGuard,\n ) {}\n\n exportSource(): SourceInput {\n this.guard.prepareExport();\n return this.session.exportSource();\n }\n\n exportHtml(): string {\n return this.assembler.build(this.exportSource(), this.session.getState().document.kind);\n }\n\n previewHtml(): string {\n const state = this.session.getState();\n return this.assembler.build(state.source, state.document.kind, true);\n }\n\n exportJson(): string {\n this.guard.prepareExport();\n return JSON.stringify(this.session.getState().document);\n }\n\n exportRecovery(): string {\n const state = this.session.getState();\n return new DocumentRecovery().encode(state.document, state.draftSource, state.pendingRichText);\n }\n\n async importFile(file: File): Promise<boolean> {\n if (!this.guard.prepareMutation()) return false;\n const initial = this.session.getState();\n const filename = file.name.toLowerCase();\n const limit = filename.endsWith('.json')\n ? DocumentBudget.limits.jsonBytes\n : filename.endsWith('.css')\n ? DocumentBudget.limits.cssBytes\n : DocumentBudget.limits.sourceBytes;\n if (file.size > limit) throw new Error('feedback.largeFile');\n const source = await file.text();\n if (!this.guard.isCurrent(initial)) return false;\n if (filename.endsWith('.json')) {\n const data: unknown = JSON.parse(source);\n const recovery = new DocumentRecovery().decode(data);\n return recovery ? this.restore(recovery) : this.session.importJson(data);\n }\n if (filename.endsWith('.css'))\n return this.session.importSource({ html: this.session.getState().source.html, css: source });\n return this.session.importSource({ html: source, css: '' });\n }\n\n importRecovery(value: unknown): boolean {\n if (!this.guard.prepareMutation()) return false;\n const recovery = new DocumentRecovery().decode(value);\n if (!recovery || !this.restore(recovery)) return false;\n const pending = this.session.getState().pendingRichText;\n return pending?.valid && !pending.blocked ? this.session.commitRichText() : true;\n }\n\n private restore(recovery: NonNullable<ReturnType<DocumentRecovery['decode']>>): boolean {\n const recovered = EditorDocument.from(recovery.document).snapshot();\n const pending = recovery.pendingRichText;\n if (\n pending &&\n (pending.documentId !== recovered.id ||\n pending.baseRevision !== recovered.revision ||\n !this.layout.resolveSelection(recovered, pending.id)?.editable ||\n this.layout.resolveSelection(recovered, pending.id)?.id !== pending.id)\n )\n return false;\n if (!this.session.importJson(recovered)) return false;\n if (pending) {\n this.session.setMode('visual');\n const node = this.layout.resolveSelection(this.session.getState().document, pending.id)?.node;\n const initialHtml = node ? this.outline.richText(node) : undefined;\n return initialHtml !== undefined && this.session.restoreRichTextDraft(pending, initialHtml);\n }\n this.session.setMode('html');\n this.session.setDraftSource(recovery.pendingSource);\n return true;\n }\n}\n","import type { EditorSession } from '../application/session';\nimport type {\n DocumentStyleProperty,\n ImageSizeSettings,\n} from '../application/document-presentation';\nimport type { AssetReference } from '../application/host';\nimport type { SectionLayoutContext, SectionLayoutPatch } from '../core/section-layout';\nimport type { ImageLinkContext, ImageLinkOptions } from '../application/image-link';\nimport type { DocumentKind, SourceInput } from '../core/document';\nimport { BlockCatalog } from '../core/catalog';\nimport { CanvasLayout } from '../core/canvas-layout';\nimport type { CanvasMovementTarget, CanvasPlacement } from '../core/canvas-layout';\nimport type { TemplateCatalog } from '../templates/catalog';\nimport type { HtmlAssemblyPort } from '../renderers/preview-document';\nimport { DocumentOutline } from './outline';\nimport { UrlPolicy } from '../security/url-policy';\nimport { BlockEditing } from './session/blocks';\nimport { MutationGuard } from './session/guard';\nimport { StructureQueries } from './session/structure';\nimport type { PropertyCapabilities } from './session/structure';\nimport { TextEditing } from './session/text';\nimport { DocumentTransfer } from './session/transfer';\n\nexport type EditorViewState = ReturnType<EditorSession['getState']>;\n\n/**\n * Translates presentation actions to application commands; owns no document state. It is the\n * facade the shell and the host know: each group of commands lives in a collaborator of its own\n * (`session/structure`, `text`, `blocks`, `transfer`, `guard`).\n */\nexport class EditorController {\n private readonly structure: StructureQueries;\n private readonly texts: TextEditing;\n private readonly blockCommands: BlockEditing;\n private readonly transfer: DocumentTransfer;\n private readonly guard: MutationGuard;\n\n constructor(\n readonly session: EditorSession,\n private readonly templates: TemplateCatalog,\n private readonly assembler: HtmlAssemblyPort,\n private readonly urls: UrlPolicy = new UrlPolicy(),\n /** The catalog and the layout of the editor it serves; its own when used alone. */\n shared: { readonly catalog?: BlockCatalog; readonly layout?: CanvasLayout } = {},\n ) {\n const catalog = shared.catalog ?? new BlockCatalog();\n const layout = shared.layout ?? new CanvasLayout(catalog);\n const outline = new DocumentOutline(urls, catalog, layout);\n this.guard = new MutationGuard(session);\n this.structure = new StructureQueries(session, layout, catalog, outline);\n this.texts = new TextEditing(session, layout, catalog, outline, this.structure);\n this.blockCommands = new BlockEditing(session, layout, templates, this.guard);\n this.transfer = new DocumentTransfer(session, assembler, layout, outline, this.guard);\n }\n\n state(): EditorViewState {\n return this.session.getState();\n }\n\n subscribe(listener: (state: EditorViewState) => void): () => void {\n return this.session.subscribe(listener);\n }\n\n entries() {\n return this.structure.entries();\n }\n\n canvasRegions() {\n return this.structure.regions();\n }\n\n resolveSelection(id: string) {\n return this.structure.resolve(id);\n }\n\n movementTargets(sourceId: string): readonly CanvasMovementTarget[] {\n return this.structure.movementTargets(sourceId);\n }\n\n /** Where a new block may be dropped, by block and side; the command validates again. */\n insertionTargets(): readonly CanvasMovementTarget[] {\n return this.structure.insertionTargets();\n }\n\n /** The closest selectable block which contains `id`. */\n parentOf(id: string): string | undefined {\n return this.structure.parentOf(id);\n }\n\n selected() {\n return this.structure.selected();\n }\n\n propertyCapabilities(): PropertyCapabilities | undefined {\n return this.structure.propertyCapabilities();\n }\n\n text() {\n return this.texts.plain();\n }\n\n richText(): string | undefined {\n const id = this.state().selectedNodeId;\n return id ? this.texts.richTextFor(id) : undefined;\n }\n\n richTextFor(id: string): string | undefined {\n return this.texts.richTextFor(id);\n }\n\n richTextAllowsBlocks(): boolean {\n const id = this.state().selectedNodeId;\n return !!id && this.texts.allowsBlocksFor(id);\n }\n\n richTextAllowsBlocksFor(id: string): boolean {\n return this.texts.allowsBlocksFor(id);\n }\n\n beginRichText(id: string): boolean {\n return this.select(id) && this.texts.begin(id);\n }\n\n updateRichTextDraft(html: string): boolean {\n return this.session.updateRichTextDraft(html);\n }\n\n commitRichText(): boolean {\n return this.session.commitRichText();\n }\n\n cancelRichText(): void {\n this.session.cancelRichText();\n }\n\n inlineStyles(id: string): Readonly<Record<string, string>> {\n return this.session.inlineStyles(id);\n }\n\n style(property: string, fallback = ''): string {\n const id = this.selected()?.id;\n const styles = id ? this.inlineStyles(id) : {};\n const name = property.toLowerCase();\n return Object.hasOwn(styles, name) ? styles[name]! : fallback;\n }\n\n linkPolicy(): UrlPolicy {\n return this.urls;\n }\n\n templateList() {\n return this.templates.list(this.state().document.kind);\n }\n\n async templatePreview(id: string): Promise<string> {\n const kind = this.state().document.kind;\n if (!this.templates.list(kind).some((template) => template.id === id))\n throw new Error('feedback.invalid');\n const source = await this.templates.create(id);\n return this.assembler.build(source, kind, true);\n }\n\n blocks(kind: DocumentKind): readonly string[] {\n return this.templates.blocks(kind);\n }\n\n applyTemplate(id: string): Promise<boolean> {\n return this.blockCommands.applyTemplate(id);\n }\n\n addBlock(\n type: string,\n targetId?: string,\n placement: CanvasPlacement = 'inside',\n ): Promise<boolean> {\n return this.blockCommands.add(type, targetId, placement);\n }\n\n /** Adds a block at the end of the content, whatever is selected. */\n appendBlock(type: string): Promise<boolean> {\n return this.blockCommands.add(type, undefined, 'inside', true);\n }\n\n /** Inserts markup next to a block: the paste of a copied block. */\n insertSource(\n source: SourceInput,\n targetId?: string,\n placement: CanvasPlacement = 'after',\n ): boolean {\n return this.blockCommands.insertSource(source, targetId, placement);\n }\n\n /** Inserts markup at the end of the content, whatever is selected. */\n appendSource(source: SourceInput): boolean {\n return this.blockCommands.insertSource(source, undefined, 'after', true);\n }\n\n /** Replaces the whole source through the ordinary import: one validated history step. */\n replaceSource(source: SourceInput): boolean {\n return this.blockCommands.replaceSource(source);\n }\n\n addBlockAt(\n type: string,\n targetId: string,\n placement: CanvasPlacement = 'inside',\n ): Promise<boolean> {\n return this.addBlock(type, targetId, placement);\n }\n\n setDraft(field: keyof SourceInput, value: string): void {\n const state = this.state();\n this.session.setDraftSource({ ...(state.draftSource ?? state.source), [field]: value });\n }\n\n applyDraft(): boolean {\n return this.session.commitDraft();\n }\n\n discardDraft(): void {\n this.session.setDraftSource(this.state().source);\n }\n\n setMode(mode: 'visual' | 'html'): boolean {\n return this.session.setMode(mode);\n }\n\n select(id: string): boolean {\n const region = this.resolveSelection(id);\n return !!region && this.session.select(region.id);\n }\n\n imageSize() {\n const id = this.state().selectedNodeId;\n return id ? this.session.imageSize(id) : undefined;\n }\n updateImageSize(settings: ImageSizeSettings): boolean {\n const id = this.state().selectedNodeId;\n return !!id && this.session.updateImageSize(id, settings);\n }\n /** A resize made on the piece: the stored proportion wins over the measured height. */\n resizeImage(id: string, width: number, height: number): boolean {\n if (!this.guard.prepareMutation()) return false;\n const context = this.session.imageSize(id);\n if (!context) return false;\n return this.session.updateImageSize(\n id,\n context.ratio ? { width, preserveRatio: true } : { width, height },\n );\n }\n documentStyles() {\n return this.session.documentStyles();\n }\n /** Title and, in an e-mail, the preview text shown next to the subject. */\n documentMetadata() {\n return this.session.documentMetadata();\n }\n updateTitle(value: string): boolean {\n return this.session.updateTitle(value);\n }\n updatePreheader(value: string): boolean {\n return this.session.updatePreheader(value);\n }\n updateDocumentStyle(property: DocumentStyleProperty, value: string): boolean {\n return this.session.updateDocumentStyle(property, value);\n }\n\n updateText(value: string): boolean {\n return this.texts.updatePlain(value);\n }\n\n updateRichText(value: string): boolean {\n const selected = this.selected();\n return selected ? this.texts.updateRichTextFor(selected.id, value) : false;\n }\n\n updateRichTextFor(id: string, value: string): boolean {\n return this.texts.updateRichTextFor(id, value);\n }\n\n updateAttribute(name: string, value: string): boolean {\n const selected = this.selected();\n return selected ? this.session.updateAttribute(selected.node.id, name, value) : false;\n }\n\n connectFormReference(reference: string, nodeId?: string): boolean {\n return this.blockCommands.connectFormReference(reference, nodeId);\n }\n\n attachAsset(asset: AssetReference, nodeId?: string): boolean {\n return this.blockCommands.attachAsset(asset, nodeId);\n }\n\n imageLink(): ImageLinkContext | undefined {\n const selected = this.selected();\n return selected?.node.tag === 'img' ? this.session.imageLink(selected.id) : undefined;\n }\n\n updateImageLink(href: string, options?: ImageLinkOptions): boolean {\n const selected = this.selected();\n return selected?.node.tag === 'img'\n ? this.session.updateImageLink(selected.id, href, options)\n : false;\n }\n\n layoutSettings(): SectionLayoutContext | undefined {\n const id = this.state().selectedNodeId;\n return id ? this.session.layoutSettings(id) : undefined;\n }\n async updateLayout(patch: SectionLayoutPatch): Promise<boolean> {\n if (!this.guard.prepareMutation()) return false;\n const id = this.state().selectedNodeId;\n return id ? this.session.updateLayout(id, patch) : false;\n }\n\n updateStyle(property: string, value: string): boolean {\n const selected = this.selected();\n return selected ? this.session.updateStyle(selected.node.id, property, value) : false;\n }\n\n duplicate(): boolean {\n const selected = this.selected();\n return selected ? this.applyCanvasAction(selected.id, 'duplicate') : false;\n }\n\n remove(): boolean {\n const selected = this.selected();\n return selected ? this.applyCanvasAction(selected.id, 'remove') : false;\n }\n\n move(direction: -1 | 1): boolean {\n const selected = this.selected();\n return !!selected && this.applyCanvasAction(selected.id, direction < 0 ? 'up' : 'down');\n }\n\n moveTo(sourceId: string, targetId: string, placement: CanvasPlacement): boolean {\n return this.blockCommands.moveTo(sourceId, targetId, placement);\n }\n\n applyCanvasAction(id: string, action: 'duplicate' | 'remove' | 'up' | 'down'): boolean {\n return this.blockCommands.act(id, action);\n }\n\n drop(sourceId: string, targetId: string): boolean {\n return this.moveTo(sourceId, targetId, 'before');\n }\n\n undo(): boolean {\n return this.session.undo();\n }\n redo(): boolean {\n return this.session.redo();\n }\n\n exportSource(): SourceInput {\n return this.transfer.exportSource();\n }\n\n exportHtml(): string {\n return this.transfer.exportHtml();\n }\n\n previewHtml(): string {\n return this.transfer.previewHtml();\n }\n\n exportJson(): string {\n return this.transfer.exportJson();\n }\n\n exportRecovery(): string {\n return this.transfer.exportRecovery();\n }\n\n importFile(file: File): Promise<boolean> {\n return this.transfer.importFile(file);\n }\n\n importRecovery(value: unknown): boolean {\n return this.transfer.importRecovery(value);\n }\n}\n","import type { DefaultTreeAdapterMap } from 'parse5';\nimport { DocumentBudget } from '../core/budget';\nimport { DocumentValidationError } from '../core/document';\nimport { BoundedHtmlParser } from './bounded-parser';\nimport { escapeHtml } from '../core/html-escape';\nimport { UrlPolicy } from './url-policy';\nimport { CssDocumentCodec } from '../codecs/css';\nimport {\n RichTextFormatPolicy,\n RICH_TEXT_ORIGIN_ATTRIBUTE,\n RICH_TEXT_REMOVED_ATTRIBUTE,\n} from '../core/rich-text-format';\n\nexport interface RichTextProjectionResult {\n readonly html: string;\n readonly adjusted: boolean;\n}\n\n/**\n * The ceilings of one editable text are lower than those of a whole document: a text region is\n * never a whole imported page.\n */\nconst RICH_TEXT_LIMITS = Object.freeze({ nodes: 10_000, depth: 80 });\n\n/** An inert parse5 projection is the only markup accepted by the authenticated rich-text DOM. */\nexport class RichTextProjection {\n private readonly budget = new DocumentBudget();\n private readonly formats = new RichTextFormatPolicy();\n private readonly inline = new Set([\n 'span',\n 'strong',\n 'b',\n 'em',\n 'i',\n 'u',\n 's',\n 'a',\n 'br',\n 'sup',\n 'sub',\n 'code',\n ]);\n private readonly blocks = new Set([\n 'p',\n 'ul',\n 'ol',\n 'li',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'pre',\n 'hr',\n ]);\n private readonly discarded = new Set([\n 'script',\n 'style',\n 'template',\n 'iframe',\n 'object',\n 'embed',\n 'noscript',\n 'xmp',\n 'plaintext',\n 'noembed',\n 'noframes',\n 'textarea',\n 'title',\n ]);\n\n /** A text nests far less than a document; the parse ends as soon as it goes beyond that. */\n private readonly parser = new BoundedHtmlParser(RICH_TEXT_LIMITS.depth);\n private readonly styles: CssDocumentCodec;\n constructor(private readonly urls = new UrlPolicy()) {\n this.styles = new CssDocumentCodec(urls);\n }\n\n project(source: string, allowBlocks = false): RichTextProjectionResult {\n this.budget.assertSource(source, '');\n let fragment: DefaultTreeAdapterMap['documentFragment'];\n try {\n fragment = this.parser.fragment(source, { scriptingEnabled: false });\n } catch (error: unknown) {\n if (error instanceof DocumentValidationError)\n throw new RangeError('RICH_TEXT_TOO_COMPLEX', { cause: error });\n throw error;\n }\n let count = 0;\n let adjusted = false;\n const render = (node: DefaultTreeAdapterMap['childNode'], depth: number): string => {\n if (++count > RICH_TEXT_LIMITS.nodes || depth > RICH_TEXT_LIMITS.depth)\n throw new RangeError('RICH_TEXT_TOO_COMPLEX');\n if (node.nodeName === '#text' && 'value' in node) return escapeHtml(node.value);\n if (!('tagName' in node)) return '';\n const tag = node.tagName;\n if (node.namespaceURI !== 'http://www.w3.org/1999/xhtml' || this.discarded.has(tag)) {\n adjusted = true;\n return '';\n }\n const children = (): string =>\n node.childNodes.map((child) => render(child, depth + 1)).join('');\n if (!this.inline.has(tag) && !(this.blocks.has(tag) && (allowBlocks || tag === 'p'))) {\n adjusted = true;\n return children();\n }\n const attrs: [string, string][] = [];\n for (const attribute of node.attrs) {\n const name = attribute.name;\n const value = attribute.value;\n if (attribute.namespace || attribute.prefix) {\n adjusted = true;\n continue;\n }\n if (\n name === RICH_TEXT_REMOVED_ATTRIBUTE &&\n tag === 'span' &&\n this.formats.isFormat(value) &&\n node.attrs.some(\n (attribute) =>\n attribute.name === RICH_TEXT_ORIGIN_ATTRIBUTE &&\n attribute.value.length > 0 &&\n attribute.value.length <= 200,\n )\n )\n attrs.push([name, value]);\n else if (name === RICH_TEXT_ORIGIN_ATTRIBUTE && value.length > 0 && value.length <= 200)\n attrs.push([name, value]);\n else if (\n tag === 'a' &&\n name === 'href' &&\n value.length <= DocumentBudget.limits.attributeLength &&\n this.urls.isSafe(value, 'link')\n )\n attrs.push([name, value]);\n else if (tag === 'a' && name === 'target' && ['_blank', '_self'].includes(value))\n attrs.push([name, value]);\n else if (\n tag === 'a' &&\n ['rel', 'title'].includes(name) &&\n value.length <= DocumentBudget.limits.attributeLength\n )\n attrs.push([name, value]);\n else if (name === 'style') {\n const styles = this.styles.richTextStyles(value);\n if (styles)\n attrs.push([\n name,\n Object.entries(styles)\n .map(([property, css]) => `${property}:${css}`)\n .join(';'),\n ]);\n else adjusted = true;\n } else if (tag === 'ol' && name === 'start' && /^-?\\d{1,8}$/.test(value))\n attrs.push([name, value]);\n else adjusted = true;\n }\n if (tag === 'a' && !attrs.some(([name]) => name === 'href')) {\n adjusted = true;\n return children();\n }\n const textStyle = attrs.find(([name]) => name === 'style');\n let content = children();\n if (textStyle && tag !== 'span') {\n attrs.splice(attrs.indexOf(textStyle), 1);\n if (this.inline.has(tag) || ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'pre'].includes(tag))\n content = `<span style=\"${escapeHtml(textStyle[1])}\">${content}</span>`;\n else adjusted = true;\n }\n const serialized = attrs.map(([name, value]) => ` ${name}=\"${escapeHtml(value)}\"`).join('');\n return tag === 'br' || tag === 'hr'\n ? `<${tag}${serialized}>`\n : `<${tag}${serialized}>${content}</${tag}>`;\n };\n const html = fragment.childNodes.map((node) => render(node, 0)).join('');\n return { html, adjusted };\n }\n}\n","import type { GeneratedMjml, GeneratedMjmlCompilerPort } from './generated-mjml';\n\n/** A preview compilation replaced by a newer one before it started. */\nexport const COMPILE_SUPERSEDED = 'COMPILE_SUPERSEDED';\n\ninterface PendingPreview {\n readonly mjml: GeneratedMjml;\n resolve(html: string): void;\n reject(error: unknown): void;\n}\n\nconst BUSY_RETRIES = 40;\nconst BUSY_DELAY_MS = 50;\n\n/**\n * Two lanes over one compiler, which runs at most two jobs at a time and refuses a third with\n * `COMPILER_BUSY`. The preview lane has at most one compilation in flight and keeps only the\n * newest one waiting: an older waiting preview is rejected with `COMPILE_SUPERSEDED`, because\n * the frame only shows the newest revision. The final lane (save, conversion) runs one at a time\n * in order, so the preview never takes its place; if a compiler shared with the host is busy with\n * other work, the final job waits and tries again instead of failing.\n */\nexport class CompileLanes {\n readonly preview: GeneratedMjmlCompilerPort;\n readonly final: GeneratedMjmlCompilerPort;\n #previewRunning = false;\n #previewPending: PendingPreview | undefined;\n #finalTail: Promise<unknown> = Promise.resolve();\n\n constructor(private readonly compiler: GeneratedMjmlCompilerPort) {\n this.preview = { compileGenerated: (mjml) => this.#queuePreview(mjml) };\n this.final = { compileGenerated: (mjml) => this.#queueFinal(mjml) };\n }\n\n #queuePreview(mjml: GeneratedMjml): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n this.#previewPending?.reject(new Error(COMPILE_SUPERSEDED));\n this.#previewPending = { mjml, resolve, reject };\n this.#drainPreview();\n });\n }\n\n #drainPreview(): void {\n const next = this.#previewPending;\n if (this.#previewRunning || !next) return;\n this.#previewPending = undefined;\n this.#previewRunning = true;\n this.#withRetry(\n () => this.compiler.compileGenerated(next.mjml),\n () => !this.#previewPending,\n )\n .then(next.resolve, next.reject)\n .finally(() => {\n this.#previewRunning = false;\n this.#drainPreview();\n });\n }\n\n #queueFinal(mjml: GeneratedMjml): Promise<string> {\n const job = this.#finalTail.then(() =>\n this.#withRetry(\n () => this.compiler.compileGenerated(mjml),\n () => true,\n ),\n );\n this.#finalTail = job.catch(() => undefined);\n return job;\n }\n\n /** Waits and tries again while the compiler is busy with work of another lane or owner. */\n async #withRetry(run: () => Promise<string>, keepTrying: () => boolean): Promise<string> {\n for (let attempt = 0; ; attempt++) {\n try {\n return await run();\n } catch (error: unknown) {\n const busy = error instanceof Error && error.message === 'COMPILER_BUSY';\n if (!busy || attempt >= BUSY_RETRIES) throw error;\n // A newer preview is waiting: this one gives up its turn instead of waiting more.\n if (!keepTrying()) throw new Error(COMPILE_SUPERSEDED, { cause: error });\n await new Promise((resolve) => setTimeout(resolve, BUSY_DELAY_MS));\n }\n }\n }\n}\n","import type { Block } from '../core/block-document';\nimport { DocumentBudget } from '../core/budget';\nimport type { BlockDocumentView } from './block-type';\n\n/** What the review before sending or publishing points out. */\nexport type BlockCheckCode =\n | 'PIECE_EMPTY'\n | 'LINK_EMPTY'\n | 'BUTTON_WITHOUT_LINK'\n | 'BUTTON_WITHOUT_TEXT'\n | 'IMAGE_WITHOUT_SOURCE'\n | 'IMAGE_WITHOUT_ALT'\n | 'HIDDEN_ON_EVERY_SCREEN'\n | 'EMAIL_NEAR_CLIP'\n | 'EMAIL_CLIPPED';\n\nexport interface BlockCheck {\n readonly code: BlockCheckCode;\n /** `error`: the reader meets something broken; `warning`: worth a look before sending. */\n readonly severity: 'error' | 'warning';\n /** The block to show; absent for a finding about the whole piece. */\n readonly blockId?: string;\n /** Size of the e-mail in kilobytes, for the size findings. */\n readonly kilobytes?: number;\n}\n\n/** Gmail shows only the first 102 KB of the HTML of a message and hides the rest behind a link. */\nexport const GMAIL_CLIP_BYTES = 102 * 1024;\n/**\n * Below the cut, but close: the host still adds its own markup (footer, tracking) to what the\n * editor generates.\n */\nexport const GMAIL_NEAR_CLIP_BYTES = 90 * 1024;\n\nconst ANCHOR = /<a\\b([^>]*)>/gi;\nconst HREF = /\\bhref\\s*=\\s*\"([^\"]*)\"/i;\n\n/**\n * The review of a block piece before it goes out: links that lead nowhere, images without an\n * address or a description, buttons without text or link, blocks hidden on every screen and,\n * for an e-mail whose final HTML is given, a size Gmail would cut. It reads the piece, never\n * changes it, and works the same in the editor and in the host.\n */\nexport class BlockChecker {\n check(document: BlockDocumentView, finalHtml?: string): readonly BlockCheck[] {\n const checks: BlockCheck[] = [];\n if (!document.blocks.length) checks.push({ code: 'PIECE_EMPTY', severity: 'warning' });\n const stack: Block[] = [...document.blocks].reverse();\n while (stack.length) {\n const block = stack.pop();\n if (!block) break;\n this.block(block, checks);\n stack.push(...[...(block.children ?? [])].reverse());\n }\n if (document.kind === 'email' && finalHtml !== undefined) {\n const bytes = new DocumentBudget().byteLength(finalHtml);\n const kilobytes = Math.ceil(bytes / 1024);\n if (bytes > GMAIL_CLIP_BYTES)\n checks.push({ code: 'EMAIL_CLIPPED', severity: 'error', kilobytes });\n else if (bytes > GMAIL_NEAR_CLIP_BYTES)\n checks.push({ code: 'EMAIL_NEAR_CLIP', severity: 'warning', kilobytes });\n }\n return checks;\n }\n\n private block(block: Block, checks: BlockCheck[]): void {\n const props = block.props;\n const blockId = block.id;\n if (props.hideOnDesktop === true && props.hideOnMobile === true)\n checks.push({ code: 'HIDDEN_ON_EVERY_SCREEN', severity: 'warning', blockId });\n if (block.type === 'button') {\n if (!this.filled(props.text))\n checks.push({ code: 'BUTTON_WITHOUT_TEXT', severity: 'error', blockId });\n if (!this.link(props.href))\n checks.push({ code: 'BUTTON_WITHOUT_LINK', severity: 'error', blockId });\n }\n if (block.type === 'image') {\n if (!this.filled(props.url))\n checks.push({ code: 'IMAGE_WITHOUT_SOURCE', severity: 'warning', blockId });\n else if (!this.filled(props.alt))\n checks.push({ code: 'IMAGE_WITHOUT_ALT', severity: 'warning', blockId });\n }\n for (const key of ['text', 'html'] as const) {\n const markup = props[key];\n if (typeof markup === 'string' && this.emptyAnchor(markup)) {\n checks.push({ code: 'LINK_EMPTY', severity: 'error', blockId });\n break;\n }\n }\n }\n\n private filled(value: unknown): boolean {\n return typeof value === 'string' && value.replace(/<[^>]*>|&nbsp;/g, '').trim() !== '';\n }\n\n /** An address that leads somewhere: not empty, not only `#`. */\n private link(value: unknown): boolean {\n return typeof value === 'string' && value.trim() !== '' && value.trim() !== '#';\n }\n\n /** A link of the text whose address is missing, empty or only `#`. */\n private emptyAnchor(markup: string): boolean {\n for (const match of markup.matchAll(ANCHOR)) {\n const href = HREF.exec(match[1] ?? '')?.[1];\n if (href === undefined || !this.link(href)) return true;\n }\n return false;\n }\n}\n","import type {\n Block,\n BlockDevice,\n BlockDocumentData,\n BlockNodeType,\n BlockPropValue,\n BlockProps,\n BlockTarget,\n} from '../core/block-document';\nimport type { DocumentKind } from '../core/document';\nimport type {\n BlockEditorSession,\n BlockEditorState,\n BlockImageChoice,\n} from '../application/block-session';\nimport type { BlockPlacement, BlockPlacementService } from '../application/block-placement';\nimport type { BlockPlacementTarget } from '../application/block-placement';\nimport type { BlockDefinitionRegistry } from '../blocks/definitions';\nimport type {\n BlockFieldModel,\n BlockInspector,\n GlobalStyleGroupModel,\n} from '../blocks/block-inspector';\nimport type { BlockOutputRenderer } from '../blocks/block-output';\nimport { BlockChecker } from '../blocks/block-checks';\nimport type { BlockCheck } from '../blocks/block-checks';\nimport type { BlockPreviewInput } from '../renderers/marked-preview';\nimport type { BlockTemplateCatalog, BlockTemplateDescriptor } from '../templates/blocks/catalog';\nimport type { UrlPolicy } from '../security/url-policy';\nimport type { InlineTextOwner } from './canvas/inline-text';\n\nexport interface BlockEditorControllerParts {\n readonly session: BlockEditorSession;\n readonly registry: BlockDefinitionRegistry;\n readonly inspector: BlockInspector;\n readonly placement: BlockPlacementService;\n readonly templates: BlockTemplateCatalog;\n readonly output: BlockOutputRenderer;\n readonly urls: UrlPolicy;\n}\n\nexport type BlockDestination = { readonly targetId: string; readonly placement: BlockPlacement };\n\n/** Types the palette never offers alone: a column only exists inside its section. */\nconst STRUCTURAL: readonly BlockNodeType[] = ['column'];\n\n/**\n * Facade of a block piece (schema 2) for the Vue shell: queries the panels are generated from,\n * and the commands of the session, each one a step of history. Components never reach the\n * session or the definitions directly.\n */\nexport class BlockEditorController {\n readonly session: BlockEditorSession;\n readonly #parts: BlockEditorControllerParts;\n #textOwner: InlineTextOwner | undefined;\n\n constructor(parts: BlockEditorControllerParts) {\n this.session = parts.session;\n this.#parts = parts;\n }\n\n state(): BlockEditorState {\n return this.session.getState();\n }\n\n subscribe(listener: (state: BlockEditorState) => void): () => void {\n return this.session.subscribe(listener);\n }\n\n kind(): DocumentKind {\n return this.session.document().kind;\n }\n\n /** The block types of the palette, in catalog order. */\n types(): readonly { readonly type: BlockNodeType; readonly labelKey: string }[] {\n return this.#parts.registry\n .list(this.kind())\n .filter((definition) => !STRUCTURAL.includes(definition.type))\n .map((definition) => ({ type: definition.type, labelKey: definition.labelKey }));\n }\n\n templates(): readonly BlockTemplateDescriptor[] {\n return this.#parts.templates.list(this.kind());\n }\n\n typeOf(id: string): BlockNodeType | undefined {\n return this.session.document().find(id)?.type;\n }\n\n labelKey(id: string): string | undefined {\n const block = this.session.document().find(id);\n return block ? this.#parts.registry.definition(block.type).labelKey : undefined;\n }\n\n /** The fields of a block as the given screen shows them. */\n fields(id: string, device: BlockDevice = 'desktop'): readonly BlockFieldModel[] {\n return this.#parts.inspector.fields(this.state().document, id, device);\n }\n\n globalStyles(): readonly GlobalStyleGroupModel[] {\n return this.#parts.inspector.styles(this.state().document);\n }\n\n parentOf(id: string): string | undefined {\n return this.session.document().parentOf(id);\n }\n\n /**\n * The review before sending: what the piece has that a reader would meet broken. For an\n * e-mail the final HTML is generated to measure it against the cut of Gmail.\n */\n async review(): Promise<readonly BlockCheck[]> {\n const document = this.session.document();\n const html =\n document.kind === 'email' ? (await this.#parts.output.render(document)).html : undefined;\n return new BlockChecker().check(document, html);\n }\n\n /** The marked preview of the current revision, for the editing frame. */\n preview(): Promise<BlockPreviewInput> {\n return this.#parts.output.preview(this.session.document());\n }\n\n movementTargets(id: string): readonly BlockPlacementTarget[] {\n return this.#parts.placement.movementTargets(this.session.document(), id);\n }\n\n insertionTargets(type: BlockNodeType): readonly BlockPlacementTarget[] {\n return this.#parts.placement.insertionTargets(this.session.document(), type);\n }\n\n select(id: string | undefined): boolean {\n return this.session.select(id);\n }\n\n /**\n * A new block where it fits best: at the destination given, else inside or after the\n * selection (or the first of its ancestors which accepts it), else at the end of the piece. A\n * content block in a piece without a place for it arrives in a new section.\n */\n insert(\n type: BlockNodeType,\n destination?: BlockDestination | 'end',\n props: BlockProps = {},\n ): boolean {\n const target =\n destination && destination !== 'end'\n ? this.#parts.placement.target(destination.targetId, destination.placement)\n : this.automaticTarget(type, destination === 'end');\n if (target) return this.session.insert(type, target, props) !== undefined;\n const section = this.#parts.registry.create('section', () => this.session.newId());\n const block = this.#parts.registry.create(type, () => this.session.newId(), props);\n const column = section.children?.[0];\n if (!column || !this.#parts.registry.childTypes('column').includes(type)) return false;\n const wrapped: Block = { ...section, children: [{ ...column, children: [block] }] };\n if (this.session.insertBlock(wrapped, { position: 'inside' }) === undefined) return false;\n return this.session.select(block.id);\n }\n\n /**\n * A block saved in the library of the host, with new ids, where it fits best (as `insert` places a new\n * block). It enters only if the piece accepts it: the document parses and checks it like any\n * block from outside. A content block in a piece without a place for it gets a new section.\n */\n insertSaved(saved: Block): boolean {\n if (!saved || typeof saved !== 'object' || STRUCTURAL.includes(saved.type)) return false;\n let block: Block;\n try {\n block = this.reidentify(saved);\n } catch {\n return false;\n }\n const target = this.automaticTarget(block.type, false);\n if (target) return this.session.insertBlock(block, target) !== undefined;\n if (!this.#parts.registry.childTypes('column').includes(block.type)) return false;\n const section = this.#parts.registry.create('section', () => this.session.newId());\n const column = section.children?.[0];\n if (!column) return false;\n const wrapped: Block = { ...section, children: [{ ...column, children: [block] }] };\n if (this.session.insertBlock(wrapped, { position: 'inside' }) === undefined) return false;\n return this.session.select(block.id);\n }\n\n /** A copy of a block to save for later use; a column only exists inside its section. */\n savable(id: string): Block | undefined {\n const block = this.session.document().find(id);\n return block && !STRUCTURAL.includes(block.type) ? structuredClone(block) : undefined;\n }\n\n move(sourceId: string, targetId: string, placement: BlockPlacement): boolean {\n return this.session.move(sourceId, this.#parts.placement.target(targetId, placement));\n }\n\n step(id: string, direction: 'up' | 'down'): boolean {\n const target = this.#parts.placement.step(this.session.document(), id, direction);\n return !!target && this.session.move(id, target);\n }\n\n duplicate(id: string): boolean {\n return this.session.duplicate(id);\n }\n\n remove(id: string): boolean {\n return this.session.remove(id);\n }\n\n /** A value of every screen, or of small screens only when the field is responsive. */\n setField(\n id: string,\n key: string,\n value: BlockPropValue,\n device: BlockDevice = 'desktop',\n ): boolean {\n return this.session.updateProps(id, { [key]: value }, this.deviceFor(id, key, device));\n }\n\n restoreField(id: string, key: string, device: BlockDevice = 'desktop'): boolean {\n return this.session.restoreDefault(id, [key], this.deviceFor(id, key, device));\n }\n\n replaceImage(id: string, choice: BlockImageChoice): boolean {\n return this.session.replaceImage(id, choice);\n }\n\n setStyle(group: string, key: string, value: string): boolean {\n return this.session.updateStyles({ [group]: { [key]: value } });\n }\n\n restoreStyle(group: string, key: string): boolean {\n return this.session.restoreStyleDefault(group, [key]);\n }\n\n setLanguage(lang: string): boolean {\n return this.session.setLanguage(lang);\n }\n\n /**\n * The piece starts again from a template: one step of history, same id, kind and language\n * (the texts of the template in that language when it has them).\n */\n applyTemplate(templateId: string): boolean {\n const current = this.session.document();\n try {\n return this.session.replace(\n this.#parts.templates.create(\n templateId,\n current.id,\n () => this.session.newId(),\n current.kind,\n current.meta.lang,\n ),\n );\n } catch {\n return false;\n }\n }\n\n undo(): boolean {\n return this.session.undo();\n }\n\n redo(): boolean {\n return this.session.redo();\n }\n\n save(): Promise<boolean> {\n return this.session.save();\n }\n\n /** Saves and returns the exact piece the store received, or undefined. */\n saveDocument(): Promise<BlockDocumentData | undefined> {\n return this.session.saveDocument();\n }\n\n /**\n * The text edited in place, in the terms of the coordinator the HTML document also uses: one\n * transaction per text, confirmed as one step of history.\n */\n textOwner(): InlineTextOwner {\n this.#textOwner ??= {\n linkPolicy: () => this.#parts.urls,\n state: () => {\n const state = this.state();\n return {\n pendingRichText: state.pendingText,\n document: state.document,\n readOnly: state.readOnly,\n };\n },\n select: (id) => this.session.select(id),\n beginRichText: (id) => this.session.beginText(id),\n updateRichTextDraft: (html) => this.session.updateTextDraft(html),\n commitRichText: () => this.session.commitText(),\n cancelRichText: () => this.session.cancelText(),\n };\n return this.#textOwner;\n }\n\n /** The same block with ids of this session, so two copies never share one. */\n private reidentify(block: Block): Block {\n if (!block || typeof block !== 'object') throw new Error('INVALID_SAVED_BLOCK');\n const children = Array.isArray(block.children) ? block.children : undefined;\n return {\n ...block,\n id: this.session.newId(),\n ...(children ? { children: children.map((child) => this.reidentify(child)) } : {}),\n };\n }\n\n /** A field without mobile values is edited for every screen, whatever screen is shown. */\n private deviceFor(id: string, key: string, device: BlockDevice): BlockDevice {\n const type = this.typeOf(id);\n return device === 'mobile' && type && this.session.document().responsive(type, key)\n ? 'mobile'\n : 'desktop';\n }\n\n private automaticTarget(type: BlockNodeType, end: boolean): BlockTarget | undefined {\n const document = this.session.document();\n const registry = this.#parts.registry;\n const selected = end ? undefined : this.state().selectedBlockId;\n for (let id = selected; id !== undefined; id = document.parentOf(id)) {\n const block = document.find(id);\n if (!block) break;\n if (registry.childTypes(block.type).includes(type))\n return { position: 'inside', parentId: block.id };\n const parent = document.parentOf(id);\n const parentType = parent ? document.find(parent)?.type : undefined;\n if (parentType ? registry.childTypes(parentType).includes(type) : registry.isRoot(type))\n return { position: 'after', id: block.id };\n }\n if (registry.isRoot(type)) return { position: 'inside' };\n const containers = this.insertionTargets(type).filter((entry) =>\n entry.placements.includes('inside'),\n );\n const last = containers.at(-1);\n return last ? { position: 'inside', parentId: last.targetId } : undefined;\n }\n}\n"],"mappings":"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"}