docxodus 12.6.4 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +8 -5
  2. package/dist/canonical.d.ts.map +1 -1
  3. package/dist/canonical.js +7 -3
  4. package/dist/canonical.js.map +1 -1
  5. package/dist/conversion-options.d.ts +16 -0
  6. package/dist/conversion-options.d.ts.map +1 -0
  7. package/dist/conversion-options.js +31 -0
  8. package/dist/conversion-options.js.map +1 -0
  9. package/dist/core.d.ts +17 -9
  10. package/dist/core.d.ts.map +1 -1
  11. package/dist/core.js +23 -24
  12. package/dist/core.js.map +1 -1
  13. package/dist/docxodus.worker.js +2 -1073
  14. package/dist/docxodus.worker.js.map +7 -1
  15. package/dist/editor.bundle.js +35 -14296
  16. package/dist/editor.bundle.js.map +7 -0
  17. package/dist/editor.d.ts +33 -2
  18. package/dist/editor.d.ts.map +1 -1
  19. package/dist/editor.js +6739 -4773
  20. package/dist/editor.js.map +7 -1
  21. package/dist/embed.bundle.js +159 -18703
  22. package/dist/embed.bundle.js.map +7 -0
  23. package/dist/embed.d.ts +1 -1
  24. package/dist/embed.iife.js +37 -18595
  25. package/dist/embed.iife.js.map +7 -0
  26. package/dist/embed.js +1 -1
  27. package/dist/export-assets.json +27 -27
  28. package/dist/export-browser.bundle.js +1388 -477
  29. package/dist/export-browser.d.ts +20 -0
  30. package/dist/export-browser.d.ts.map +1 -1
  31. package/dist/export-browser.js +132 -37
  32. package/dist/export-browser.js.map +1 -1
  33. package/dist/font-runtime.d.ts.map +1 -1
  34. package/dist/font-runtime.js +54 -0
  35. package/dist/font-runtime.js.map +1 -1
  36. package/dist/line-metrics.d.ts +60 -0
  37. package/dist/line-metrics.d.ts.map +1 -0
  38. package/dist/line-metrics.js +343 -0
  39. package/dist/line-metrics.js.map +1 -0
  40. package/dist/pagination.bundle.js +3 -3214
  41. package/dist/pagination.bundle.js.map +7 -0
  42. package/dist/pagination.d.ts +86 -9
  43. package/dist/pagination.d.ts.map +1 -1
  44. package/dist/pagination.js +358 -55
  45. package/dist/pagination.js.map +1 -1
  46. package/dist/react.d.ts.map +1 -1
  47. package/dist/react.js +63 -12
  48. package/dist/react.js.map +1 -1
  49. package/dist/render-report-v2.schema.json +29 -0
  50. package/dist/session.bundle.js +2 -2013
  51. package/dist/session.bundle.js.map +7 -0
  52. package/dist/session.d.ts +14 -5
  53. package/dist/session.d.ts.map +1 -1
  54. package/dist/session.js +62 -29
  55. package/dist/session.js.map +1 -1
  56. package/dist/types.d.ts +137 -21
  57. package/dist/types.d.ts.map +1 -1
  58. package/dist/types.js +14 -0
  59. package/dist/types.js.map +1 -1
  60. package/dist/wasm/_framework/Docxodus.wasm +0 -0
  61. package/dist/wasm/_framework/Docxodus.wasm.br +0 -0
  62. package/dist/wasm/_framework/DocxodusWasm.wasm +0 -0
  63. package/dist/wasm/_framework/DocxodusWasm.wasm.br +0 -0
  64. package/dist/wasm/_framework/System.Collections.wasm +0 -0
  65. package/dist/wasm/_framework/System.Collections.wasm.br +0 -0
  66. package/dist/wasm/_framework/System.IO.Compression.wasm +0 -0
  67. package/dist/wasm/_framework/System.IO.Compression.wasm.br +0 -0
  68. package/dist/wasm/_framework/System.Linq.wasm +0 -0
  69. package/dist/wasm/_framework/System.Linq.wasm.br +0 -0
  70. package/dist/wasm/_framework/System.Memory.wasm +0 -0
  71. package/dist/wasm/_framework/System.Memory.wasm.br +0 -0
  72. package/dist/wasm/_framework/System.Private.CoreLib.wasm +0 -0
  73. package/dist/wasm/_framework/System.Private.CoreLib.wasm.br +0 -0
  74. package/dist/wasm/_framework/System.Private.Xml.Linq.wasm +0 -0
  75. package/dist/wasm/_framework/System.Private.Xml.Linq.wasm.br +0 -0
  76. package/dist/wasm/_framework/System.Text.RegularExpressions.wasm +0 -0
  77. package/dist/wasm/_framework/System.Text.RegularExpressions.wasm.br +0 -0
  78. package/dist/wasm/_framework/dotnet.boot.js +11 -11
  79. package/dist/wasm/_framework/dotnet.boot.js.br +0 -0
  80. package/dist/wasm/_framework/dotnet.native.wasm +0 -0
  81. package/dist/wasm/_framework/dotnet.native.wasm.br +0 -0
  82. package/dist/word-text.d.ts +14 -0
  83. package/dist/word-text.d.ts.map +1 -0
  84. package/dist/word-text.js +377 -0
  85. package/dist/word-text.js.map +1 -0
  86. package/dist/worker-proxy.bundle.js +2 -536
  87. package/dist/worker-proxy.bundle.js.map +7 -0
  88. package/dist/worker-proxy.d.ts +14 -1
  89. package/dist/worker-proxy.d.ts.map +1 -1
  90. package/dist/worker-proxy.js +357 -339
  91. package/dist/worker-proxy.js.map +1 -1
  92. package/package.json +13 -12
@@ -1 +1,7 @@
1
- {"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/bind-event-listener/dist/bind.js", "../node_modules/bind-event-listener/dist/bind-all.js", "../node_modules/bind-event-listener/dist/index.js", "../src/editor.ts", "../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js", "../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js", "../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js", "../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js", "../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js", "../node_modules/@babel/runtime/helpers/esm/slicedToArray.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/adapter/element-adapter.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/honey-pot-data-attribute.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/is-honey-pot-element.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/get-element-from-point-without-honey-pot.js", "../node_modules/@babel/runtime/helpers/esm/typeof.js", "../node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/make-honey-pot-fix.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/max-z-index.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/popover-reset-styles.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/once.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/supports-popover.js", "../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js", "../node_modules/@babel/runtime/helpers/esm/iterableToArray.js", "../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js", "../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/ledger/lifecycle-manager.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/is-firefox.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/is-safari.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/count-events-for-safari.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/is-from-another-window.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/is-leaving-window.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/detect-broken-drag.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/get-input.js", "../node_modules/raf-schd/dist/raf-schd.esm.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/ledger/dispatch-consumer-event.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/ledger/usage-ledger.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/combine.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/add-attribute.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/make-adapter/make-drop-target.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/make-adapter/make-monitor.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/make-adapter/make-adapter.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/android.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/media-types/text-media-type.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/media-types/url-media-type.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/adapter/element-adapter-native-data-key.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/is-safari-on-ios.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/element/custom-native-drag-preview/center-under-pointer.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/element/custom-native-drag-preview/pointer-outside-of-preview.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/engagement-history.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/scheduler.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/over-element/data-attributes.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/configuration.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/can-scroll-on-edge.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/edges.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/axis.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/side.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/get-over-element-hitbox.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/get-percentage-in-range.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/get-scroll-change.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/is-axis-allowed.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/shared/is-within.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/over-element/get-scroll-by.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/over-element/try-scroll.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/over-element/make-api.js", "../node_modules/@atlaskit/pragmatic-drag-and-drop-auto-scroll/dist/esm/entry-point/element.js"],
4
+ "sourcesContent": ["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bind = void 0;\nfunction bind(target, _a) {\n var type = _a.type, listener = _a.listener, options = _a.options;\n target.addEventListener(type, listener, options);\n return function unbind() {\n target.removeEventListener(type, listener, options);\n };\n}\nexports.bind = bind;\n", "\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindAll = void 0;\nvar bind_1 = require(\"./bind\");\nfunction toOptions(value) {\n if (typeof value === 'undefined') {\n return undefined;\n }\n if (typeof value === 'boolean') {\n return {\n capture: value,\n };\n }\n return value;\n}\nfunction getBinding(original, sharedOptions) {\n if (sharedOptions == null) {\n return original;\n }\n var binding = __assign(__assign({}, original), { options: __assign(__assign({}, toOptions(sharedOptions)), toOptions(original.options)) });\n return binding;\n}\nfunction bindAll(target, bindings, sharedOptions) {\n var unbinds = bindings.map(function (original) {\n var binding = getBinding(original, sharedOptions);\n return (0, bind_1.bind)(target, binding);\n });\n return function unbindAll() {\n unbinds.forEach(function (unbind) { return unbind(); });\n };\n}\nexports.bindAll = bindAll;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindAll = exports.bind = void 0;\nvar bind_1 = require(\"./bind\");\nObject.defineProperty(exports, \"bind\", { enumerable: true, get: function () { return bind_1.bind; } });\nvar bind_all_1 = require(\"./bind-all\");\nObject.defineProperty(exports, \"bindAll\", { enumerable: true, get: function () { return bind_all_1.bindAll; } });\n", "/**\n * DocxEditor \u2014 a framework-agnostic, in-browser DOCX block editor.\n *\n * Architecture (see docs/architecture/ir_editor_feasibility.md, \"Option B\"):\n * - model-of-record: a live DocxSession in WASM (lossless save);\n * - rendering: WmlToHtmlConverter HTML (faithful) stamped with data-anchor;\n * - editing: each block is contenteditable; on commit, the edit goes through\n * DocxSession by anchor, then ONLY that block is re-rendered from the live\n * session (session-attached RenderBlockHtml) and patched into the DOM.\n *\n * The IR/anchor system is the addressing spine; the live OOXML is the truth.\n * This is the pure-TypeScript core; a React wrapper can sit on top.\n *\n * MVP scope: per-block, commit-on-blur editing of paragraphs/headings. An edited\n * block's content is replaced from its plain text (inline formatting within an\n * edited block is not preserved \u2014 a documented MVP limit); UNTOUCHED blocks keep\n * full fidelity, and save() is lossless for them.\n */\n\nimport { paginateHtml } from \"./pagination.js\";\nimport { DocumentViewport } from \"./viewport.js\";\nimport type { ColumnWidth } from \"./viewport.js\";\nimport { HeaderFooterRegion } from \"./editor-headerfooter.js\";\nimport type { BandWhich } from \"./editor-headerfooter.js\";\nimport { CommentGutter, COMMENT_GUTTER_CSS } from \"./editor-comments.js\";\nimport type { CommentTarget } from \"./editor-comments.js\";\nimport {\n draggable,\n dropTargetForElements,\n monitorForElements,\n} from \"@atlaskit/pragmatic-drag-and-drop/element/adapter\";\nimport { setCustomNativeDragPreview } from \"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview\";\nimport { pointerOutsideOfPreview } from \"@atlaskit/pragmatic-drag-and-drop/element/pointer-outside-of-preview\";\nimport {\n autoScrollForElements,\n autoScrollWindowForElements,\n} from \"@atlaskit/pragmatic-drag-and-drop-auto-scroll/element\";\nimport { TrackedChangeMode } from \"./types.js\";\nimport type {\n CommentListEntry,\n EditErrorCode,\n EditResult,\n FormattingInspection,\n HeaderFooterKind,\n HyperlinkInfo,\n ImageInsertOptions,\n ListFormat,\n NumberFormat,\n PageSetupOp,\n RevisionListEntry,\n SectionInfo,\n StyleInfo,\n TableBorderSpec,\n TableOfContentsOptions,\n} from \"./types.js\";\nimport { diffUnits, needsRemount, tokenOf, unidOf } from \"./editor-reconcile.js\";\nimport { imageOnlyDelta, patchImageAttributes } from \"./editor-image-patch.js\";\nimport type { RenderPlan, RenderUnit, UnitDiff } from \"./editor-reconcile.js\";\n\n/** The subset of WASM bridge exports the editor needs (as exposed on `window.Docxodus`). */\nexport interface DocxEditorExports {\n DocxSessionBridge: {\n GetVersion?: (handle: number) => string;\n OpenSession: (bytes: Uint8Array, settingsJson: string) => number;\n CloseSession: (handle: number) => void;\n CreateBlankDocx: () => Uint8Array;\n Project: (handle: number) => string;\n ReplaceText: (handle: number, anchor: string, md: string) => string;\n ReplaceTextAtSpan: (\n handle: number,\n anchor: string,\n spanStart: number,\n spanLength: number,\n replace: string,\n ) => string;\n SplitParagraph: (handle: number, anchor: string, offset: number) => string;\n MergeParagraphs: (handle: number, first: string, second: string) => string;\n DeleteBlock: (handle: number, anchor: string) => string;\n MoveBlock?: (handle: number, sourceAnchor: string, targetAnchor: string, pos: string) => string;\n /** JSON `{anchorId, before, after}[]`: where a block may legally move, per side. Optional \u2014\n * without it the drag UI offers every block and lets the engine refuse, as it did before. */\n ValidMoveTargets?: (handle: number, sourceAnchor: string) => string;\n InsertHorizontalRule: (handle: number, anchor: string, pos: string, ruleJson: string) => string;\n InsertTable: (\n handle: number,\n anchor: string,\n pos: string,\n rows: number,\n cols: number,\n optionsJson: string,\n ) => string;\n InsertTableRow: (handle: number, cellAnchor: string, pos: string) => string;\n InsertTableColumn: (handle: number, cellAnchor: string, pos: string) => string;\n DeleteTableRow: (handle: number, cellAnchor: string) => string;\n DeleteTableColumn: (handle: number, cellAnchor: string) => string;\n ApplyFormat: (handle: number, anchor: string, spanJson: string, opJson: string) => string;\n SetParagraphStyle: (handle: number, anchor: string, styleId: string) => string;\n SetParagraphFormat: (handle: number, anchor: string, opJson: string) => string;\n ApplyListFormat: (handle: number, anchor: string, kind: string) => string;\n SetListLevel: (handle: number, anchor: string, delta: number) => string;\n GetListMembership: (handle: number, anchor: string) => string;\n RenderBlockHtml: (\n handle: number,\n anchorId: string,\n cssPrefix: string,\n fabricateClasses: boolean,\n ) => string;\n RenderBlockHtmlForReview?: (\n handle: number,\n anchorId: string,\n cssPrefix: string,\n fabricateClasses: boolean,\n renderTrackedChanges: boolean,\n ) => string;\n /** Session-attached full-document render (optional: older WASM bundles lack it). */\n RenderHtml?: (\n handle: number,\n cssPrefix: string,\n fabricateClasses: boolean,\n paginated: boolean,\n scale: number,\n ) => string;\n RenderHtmlForReview?: (\n handle: number,\n cssPrefix: string,\n fabricateClasses: boolean,\n paginated: boolean,\n scale: number,\n renderTrackedChanges: boolean,\n ) => string;\n Save: (handle: number) => Uint8Array;\n /** Save keeping the projector's Unid bookkeeping \u2014 remount only, never a user download.\n * Optional so a bridge predating it still satisfies this type. */\n SaveWithAnchorIds?: (handle: number) => Uint8Array;\n Undo: (handle: number) => boolean;\n Redo: (handle: number) => boolean;\n /** Header/footer region: the section a body anchor belongs to (kind \u2192 part mapping). */\n GetSectionInfo: (handle: number, anchorId: string) => string;\n SetHeaderText: (handle: number, anchor: string, kind: string, markdown: string) => string;\n SetFooterText: (handle: number, anchor: string, kind: string, markdown: string) => string;\n InsertPageNumberField: (handle: number, anchor: string, field: string, format: string) => string;\n EnsureHeaderFooterVisible: (handle: number, anchor: string, kind: string) => string;\n SetPageNumbering: (handle: number, anchor: string, opJson: string) => string;\n ClearPageNumbering: (handle: number, anchor: string) => string;\n /** Note authoring (optional: older WASM bundles predate it). */\n InsertFootnote?: (\n handle: number,\n anchor: string,\n characterOffset: number,\n markdown: string,\n ) => string;\n InsertEndnote?: (\n handle: number,\n anchor: string,\n characterOffset: number,\n markdown: string,\n ) => string;\n /** Native comment authoring (optional: older WASM bundles predate it; issue #580). */\n AddComment?: (\n handle: number,\n anchor: string,\n spanJson: string,\n author: string,\n initials: string,\n date: string,\n markdown: string,\n ) => string;\n SetCommentResolved?: (handle: number, commentAnchor: string, resolved: boolean) => string;\n ListComments?: (handle: number) => string;\n AddCommentReply?: (\n handle: number,\n parentCommentAnchor: string,\n author: string,\n initials: string,\n date: string,\n markdown: string,\n ) => string;\n UpdateComment?: (handle: number, commentAnchor: string, markdown: string) => string;\n RemoveComment?: (handle: number, commentAnchor: string) => string;\n /** The editor's own render profile as one JSON object \u2014 the comment-aware twin of\n * RenderHtml / RenderBlockHtml / RenderBlocksHtml (optional: older bundles lack it). */\n RenderEditorHtml?: (handle: number, optionsJson: string) => string;\n RenderEditorBlockHtml?: (handle: number, anchorId: string, optionsJson: string) => string;\n RenderEditorBlocksHtml?: (handle: number, anchorIdsJson: string, optionsJson: string) => string;\n RenderEditorChromeHtml?: (handle: number, optionsJson: string) => string;\n RenderEditorRangeHtml?: (handle: number, anchorIdsJson: string, optionsJson: string) => string;\n /** Review-mode controls (optional). */\n SetTrackedChanges?: (handle: number, mode: number) => void;\n SetRevisionAuthor?: (handle: number, author: string) => void;\n ListRevisions?: (handle: number) => string;\n AcceptRevision?: (handle: number, revisionId: string) => string;\n RejectRevision?: (handle: number, revisionId: string) => string;\n AcceptAllRevisions?: (handle: number) => string;\n RejectAllRevisions?: (handle: number) => string;\n /** Links, images, references (optional). */\n ListHyperlinks?: (handle: number, scopes: number) => string;\n AddHyperlink?: (\n handle: number,\n anchor: string,\n start: number,\n length: number,\n kind: string,\n target: string,\n ) => string;\n RemoveHyperlink?: (handle: number, hyperlinkId: string) => string;\n InsertImage?: (\n handle: number,\n anchor: string,\n characterOffset: number,\n imageBase64: string,\n optionsJson: string,\n ) => string;\n InsertTableOfContents?: (handle: number, anchor: string, pos: string, optionsJson: string) => string;\n /** Table cell structure and appearance (optional). */\n MergeCells?: (handle: number, cellAnchor: string, rowSpan: number, colSpan: number, content: string) => string;\n UnmergeCells?: (handle: number, cellAnchor: string) => string;\n SetTableBorders?: (handle: number, cellAnchor: string, specJson: string) => string;\n SetCellShading?: (handle: number, cellAnchor: string, fill: string, scope: string) => string;\n SetRepeatHeaderRow?: (handle: number, cellAnchor: string, repeat: boolean) => string;\n /** Section page setup and header/footer flags (optional). */\n SetPageSetup?: (handle: number, anchor: string, opJson: string) => string;\n SetHeaderFooterKindEnabled?: (handle: number, anchor: string, kind: string, enabled: boolean) => string;\n /** Introspection (optional). */\n ListStyles?: (handle: number) => string;\n GetFormatting?: (handle: number, anchorId: string) => string;\n ReplaceTextRange?: (handle: number, anchor: string, find: string, replace: string, optionsJson: string) => string;\n /** Incremental-reconcile endpoints (optional: older WASM bundles predate them;\n * the editor falls back to full remounts / full projections without them). */\n ListBlocks?: (handle: number) => string;\n ListRenderedBlocks?: (handle: number, renderTrackedChanges: boolean) => string;\n ListNotes?: (handle: number, endnotes: boolean) => string;\n ListAnchors?: (handle: number) => string;\n RenderBlocksHtml?: (\n handle: number,\n anchorIdsJson: string,\n cssPrefix: string,\n fabricateClasses: boolean,\n ) => string;\n RenderBlocksHtmlForReview?: (\n handle: number,\n anchorIdsJson: string,\n cssPrefix: string,\n fabricateClasses: boolean,\n renderTrackedChanges: boolean,\n ) => string;\n };\n DocumentConverter: {\n ConvertDocxToHtmlComplete: (...args: any[]) => string;\n };\n}\n\nexport interface DocxEditorOptions {\n /** CSS class prefix for rendered HTML. Default \"docx-\". */\n cssPrefix?: string;\n /**\n * Fabricate CSS classes (vs inline styles). Default FALSE for the editor: a per-block\n * re-render must be self-contained, but fabricated class names are per-conversion and\n * have no matching stylesheet on the page, so re-rendered blocks would lose styling.\n * Inline styles keep every block's formatting intact on incremental re-render.\n */\n fabricateClasses?: boolean;\n /** Make paragraph/heading blocks editable. Default true. */\n editable?: boolean;\n /** Render block-flow pages (page boxes via pagination.ts) vs a continuous view. Default false. */\n paginated?: boolean;\n /** Author-pinned page render scale (1.0 = 100%). Default 1. */\n scale?: number;\n /**\n * How the continuous view sizes its text column. `\"section\"` (default) uses the width the\n * document's `w:sectPr` defines, so line breaking matches Word on every screen; `\"fluid\"`\n * lets the column follow the host, the pre-geometry behavior.\n */\n columnWidth?: ColumnWidth;\n /**\n * Zoom the page down to fit a host narrower than it, the way a word processor's\n * fit-to-width does, instead of letting it overflow. Default true.\n */\n fitToWidth?: boolean;\n /**\n * Render docked Header/Footer editing bands around the body flow. Default FALSE \u2014 with it off\n * the editor's DOM is unchanged, so existing consumers are unaffected. When on, the body flow\n * is wrapped in a `.docx-body-flow` element that becomes the edit root, keeping band blocks out\n * of the body's block list (which indexes remount focus).\n */\n headerFooter?: boolean;\n /** Enable the editor-owned block drag handle. Default false (the ribbon defaults it to true). */\n blockDrag?: boolean;\n /** How editor mutations are recorded. RenderInline enables native Word revisions. */\n trackedChanges?: TrackedChangeMode;\n /** Author stamped on native Word revisions. Default \"docxodus\". */\n revisionAuthor?: string;\n /**\n * Render comments Word-style: the commented range highlighted inline and each thread as a\n * bubble in a gutter beside the page. Default true. With it off the document renders without\n * comment markup at all (the pre-gutter behaviour).\n */\n comments?: boolean;\n /** Author stamped on comments posted from the gutter. Defaults to `revisionAuthor`. */\n commentAuthor?: string;\n /** Called after a block edit commits (with the affected anchor). */\n onEdit?: (info: { anchorId: string; unid: string }) => void;\n /**\n * Called when the engine rejects an edit. The editor has already put the affected block back\n * to the session's content, so the screen never shows text the document does not hold. When no\n * handler is set, the editor logs the rejection with `console.warn` instead.\n */\n onEditFailed?: (info: EditFailure) => void;\n /** Called after a successful block move. */\n onMove?: (info: { sourceAnchorId: string; destinationAnchorId: string }) => void;\n /** Called when the caret enters or leaves a header/footer story (`null` = back in the body). */\n onStoryChange?: (which: BandWhich | null) => void;\n /** Called after every comment-gutter layout with thread counts and the active thread. */\n onCommentsChange?: (info: { threads: number; open: number; active: string | null }) => void;\n}\n\n/** Options for {@link DocxEditor.openAsync}: the mount's window size and a progress callback. */\nexport interface DocxEditorOpenAsyncOptions extends DocxEditorOptions {\n /**\n * Body units (top-level paragraphs and tables) mounted per task before yielding to the event\n * loop. Default 24 \u2014 on the reference 17-page document that is a ~50 ms task. A window is\n * extended past the size so it never ends inside a border box the renderer groups adjacent\n * paragraphs into.\n */\n windowSize?: number;\n /** Called after each window lands with the count of body units mounted so far. */\n onProgress?: (mounted: number, total: number) => void;\n}\n\n/**\n * Word's Page Setup, as {@link DocxEditor.setPageSetup} takes it \u2014 the session's own\n * {@link PageSetupOp} (all twips; omit = unchanged), so the two cannot drift.\n */\nexport type EditorPageSetup = PageSetupOp;\n\n/** One hit from {@link DocxEditor.find}: a content-offset span inside an editable block. */\nexport interface EditorMatch {\n block: HTMLElement;\n start: number;\n length: number;\n}\n\ninterface AnchorTargetLite {\n unid: string;\n kind: string;\n scope: string;\n textPreview?: string;\n}\n\nconst EDITABLE_TAGS = new Set([\"P\", \"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\"]);\n\nconst BLOCK_DRAG_TYPE = \"docxodus-block\";\nconst blockDragStyledDocuments = new WeakSet<Document>();\n\n/** One-line description of a block, for the handle's label and the drag preview chip. */\nfunction blockPreviewText(unit: HTMLElement): string {\n if (unit.tagName === \"TABLE\") return \"Table\";\n const text = (unit.textContent ?? \"\").trim().replace(/\\s+/g, \" \");\n return text.length > 48 ? `${text.slice(0, 48)}\u2026` : text;\n}\n\n/**\n * A capture-time snapshot of one movable block's box, in viewport coordinates.\n *\n * Taken once per drag: nothing reflows while a drag is in flight, so re-measuring every block on\n * every `dragover` would buy nothing. Scrolling (including drag autoscroll) moves the whole flow\n * rigidly, which `dropZoneShift` corrects for with one subtraction.\n */\ninterface BlockDropZone {\n unit: HTMLElement;\n anchorId: string;\n /** Position in `dropZones`, so a neighbour is one index away \u2014 see `dropEdgeY`. */\n index: number;\n top: number;\n bottom: number;\n left: number;\n width: number;\n /** Own outer margin, read only for the first/last zone \u2014 see `dropEdgeY`. */\n marginBefore: number;\n marginAfter: number;\n}\n\n/** The floating handle's own box and its gap to the block, as `ensureBlockDragStyles` sizes it. */\nconst BLOCK_HANDLE_WIDTH = 26;\nconst BLOCK_HANDLE_HEIGHT = 28;\nconst BLOCK_HANDLE_GAP = 6;\n\n/** `value` pulled into [`low`, `high`]; `low` wins when the range is narrower than the box. */\nfunction clampToRange(value: number, low: number, high: number): number {\n return Math.max(low, Math.min(value, high));\n}\n\nfunction ensureBlockDragStyles(doc: Document): void {\n if (blockDragStyledDocuments.has(doc)) return;\n blockDragStyledDocuments.add(doc);\n const style = doc.createElement(\"style\");\n style.dataset.docxodusBlockDrag = \"true\";\n style.textContent = `\n.docx-block-handle {\n position: fixed; z-index: 2147483000; display: none; width: 26px; height: 28px;\n align-items: center; justify-content: center; padding: 0; border: 1px solid #d0d5dd;\n border-radius: 6px; background: #fff; color: #667085; box-shadow: 0 1px 3px rgba(16,24,40,.12);\n cursor: grab; font: 700 17px/1 system-ui, sans-serif; user-select: none; touch-action: none;\n}\n.docx-block-handle:hover, .docx-block-handle:focus-visible { color: #344054; border-color: #98a2b3; outline: none; }\n.docx-block-handle[aria-pressed=\"true\"] { color: #175cd3; border-color: #84adff; background: #eff8ff; }\n.docx-block-handle.docx-block-dragging { cursor: grabbing; opacity: .35; }\n/* The block being carried. Dimming it is the \"a drag is happening\" signal that survives the\n pointer being anywhere on screen \u2014 the drop line only says where, not what. */\n.docx-block-drag-source { opacity: .38; transition: opacity 120ms ease-out; }\n/* Positioned by transform so tracking the pointer costs no layout. Flipping display none\u2192block\n restarts the fade \u2014 one cheap entry animation per appearance, none while it tracks. */\n.docx-block-drop-indicator {\n position: fixed; top: 0; left: 0; z-index: 2147482999; display: none; height: 0;\n pointer-events: none; border-top: 2px solid #2e90fa;\n filter: drop-shadow(0 1px 2px rgba(46,144,250,.5));\n animation: docx-block-drop-in 110ms ease-out;\n}\n.docx-block-drop-indicator::before {\n content: \"\"; position: absolute; top: -5px; left: -2px; width: 8px; height: 8px;\n border-radius: 50%; background: #2e90fa;\n}\n@keyframes docx-block-drop-in { from { opacity: 0; } to { opacity: 1; } }\n.docx-block-drag-preview {\n max-width: 320px; padding: 6px 10px; border: 1px solid #b2ddff; border-radius: 6px;\n background: #eff8ff; color: #175cd3; box-shadow: 0 6px 16px rgba(16,24,40,.18);\n font: 500 13px/1.35 system-ui, sans-serif; white-space: nowrap; overflow: hidden;\n text-overflow: ellipsis;\n}\n.docx-block-move-menu {\n position: fixed; z-index: 2147483001; display: none; min-width: 150px; padding: 5px;\n border: 1px solid #d0d5dd; border-radius: 8px; background: #fff;\n box-shadow: 0 8px 24px rgba(16,24,40,.18); font: 13px/1.35 system-ui, sans-serif;\n}\n.docx-block-move-menu button { display: block; width: 100%; padding: 7px 9px; border: 0; border-radius: 5px; background: transparent; color: #344054; text-align: left; }\n.docx-block-move-menu button:hover, .docx-block-move-menu button:focus-visible { background: #f2f4f7; outline: none; }\n.docx-block-move-menu button:disabled { color: #98a2b3; background: transparent; }\n.docx-block-move-flash { animation: docx-block-move-flash 800ms ease-out; }\n@keyframes docx-block-move-flash { from { box-shadow: 0 0 0 3px rgba(46,144,250,.55); } to { box-shadow: none; } }\n.docx-block-live-region { position: fixed; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }\n`;\n (doc.head ?? doc.documentElement).appendChild(style);\n}\n\n/**\n * Let the event loop run \u2014 input, rendering, and any other task \u2014 before the next window\n * of a mount. `scheduler.yield` where the browser has it (it keeps the continuation ahead of\n * other tasks), otherwise a frame followed by a macrotask.\n */\n/**\n * Give the page a turn between mount windows: a frame, so a paint and any input handling\n * happen, then a macrotask, so the host's own timers run too. `scheduler.yield()` is not used\n * on purpose \u2014 its continuation is scheduled ahead of timer tasks, so a progress spinner or a\n * poll the host drives with `setInterval` would not tick until the whole mount was done.\n */\n/** The anchor of the empty paragraphs a chrome render leaves where body content was\n * (`HtmlConversionOps.ChromeCarrierAnchor`); a windowed mount removes them before it fills\n * the sections. */\nconst CHROME_CARRIER_ANCHOR = \"chrome-carrier\";\n\nfunction yieldToEventLoop(): Promise<void> {\n return new Promise((resolve) => {\n const settle = (): void => { setTimeout(resolve, 0); };\n if (typeof requestAnimationFrame === \"function\") requestAnimationFrame(settle);\n else settle();\n });\n}\n\nfunction trackedChangeWireName(mode: TrackedChangeMode): \"accept\" | \"render_inline\" | \"strip_deletions\" {\n if (mode === TrackedChangeMode.RenderInline) return \"render_inline\";\n if (mode === TrackedChangeMode.StripDeletions) return \"strip_deletions\";\n return \"accept\";\n}\n\n// \u2500\u2500\u2500 M1: inline HTML \u2192 markdown (preserve formatting on edit) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ninterface InlineSeg {\n text: string;\n bold: boolean;\n italic: boolean;\n href: string | null;\n}\n\nfunction fontWeightIsBold(w: string): boolean {\n if (w === \"bold\" || w === \"bolder\") return true;\n const n = parseInt(w, 10);\n return !Number.isNaN(n) && n >= 600;\n}\n\nfunction escapeInlineMarkdown(text: string): string {\n // Escape the markdown the projector subset is sensitive to; keep it minimal.\n return text.replace(/([\\\\`*_[\\]])/g, \"\\\\$1\");\n}\n\n/**\n * Escape block-construct markers at the start of every line of the assembled\n * payload (#571). The projector escapes literal markers on the way out\n * (`\\#\\# x`) and the parser unescapes `\\X` generically, so this is the\n * serializer's half of that contract: a typed leading `## `, `> `, `- `,\n * `+ `, `1. `, or `|` must commit as literal text, not be consumed as a\n * heading/quote/list marker \u2014 and a list marker after a soft break must not\n * be split into a second block the session then discards. Line starts only:\n * the parser detects block constructs at line start, and `*` needs no rule\n * here because a literal `*` is already inline-escaped, so an unescaped\n * leading `*` can only be our own emphasis emission.\n */\nfunction escapeLeadingBlockMarkers(md: string): string {\n return md\n .split(\"\\n\")\n .map((line) => {\n if (/^[#>|]/.test(line) || /^[-+] /.test(line)) return \"\\\\\" + line;\n if (/^\\d+\\. /.test(line)) return line.replace(\".\", \"\\\\.\");\n return line;\n })\n .join(\"\\n\");\n}\n\nfunction collectInlineSegments(node: Node, out: InlineSeg[]): void {\n node.childNodes.forEach((child) => {\n // Skip converter-generated chrome (list markers, note citation markers, note backrefs) \u2014\n // it isn't part of the paragraph's content and must never be committed as text.\n if (isGeneratedChrome(child)) return;\n if (isField(child)) {\n // A field serializes as its cached result (the session's own text for it).\n const text = fieldText(child);\n if (text) out.push({ text, bold: false, italic: false, href: null });\n return;\n }\n if (child.nodeType === 3 /* TEXT_NODE */) {\n const text = child.textContent ?? \"\";\n if (!text) return;\n const parent = child.parentElement;\n let bold = false;\n let italic = false;\n let href: string | null = null;\n if (parent && typeof getComputedStyle === \"function\") {\n const cs = getComputedStyle(parent);\n bold = fontWeightIsBold(cs.fontWeight);\n italic = cs.fontStyle === \"italic\" || cs.fontStyle === \"oblique\";\n const a = parent.closest(\"a\");\n href = a ? a.getAttribute(\"href\") : null;\n }\n out.push({ text, bold, italic, href });\n } else if (child.nodeType === 1 /* ELEMENT_NODE */) {\n const el = child as HTMLElement;\n if (el.tagName === \"BR\") {\n out.push({ text: \"\\n\", bold: false, italic: false, href: null });\n return;\n }\n collectInlineSegments(el, out);\n }\n });\n}\n\nfunction segToMarkdown(seg: InlineSeg): string {\n // A <br> segment is a hard line break \u2192 the canonical GFM \" \\n\", which the\n // DocxSession markdown parser turns into a real w:br (Word's intra-paragraph\n // line break) instead of a literal newline in w:t.\n if (seg.text === \"\\n\") return \" \\n\";\n let md = escapeInlineMarkdown(seg.text).replace(/[ \\t]*\\n/g, \" \\n\");\n if (/\\S/.test(seg.text)) {\n // Don't wrap pure whitespace \u2014 `** **` is not valid emphasis.\n if (seg.bold && seg.italic) md = `***${md}***`;\n else if (seg.bold) md = `**${md}**`;\n else if (seg.italic) md = `*${md}*`;\n }\n if (seg.href) md = `[${md}](${seg.href})`;\n return md;\n}\n\n/**\n * Serialize a block's inline content to the projector's markdown subset, preserving\n * bold / italic / links (emphasis detected via computed style). Used so an edit keeps\n * the block's formatting instead of flattening it to plain text. Formatting the markdown\n * subset cannot express (font size/color) is still dropped on an edited block.\n */\nexport function serializeInlineMarkdown(block: HTMLElement): string {\n const segs: InlineSeg[] = [];\n collectInlineSegments(block, segs);\n // Merge adjacent segments with identical formatting to avoid `**a****b**`.\n const merged: InlineSeg[] = [];\n for (const s of segs) {\n const prev = merged[merged.length - 1];\n if (\n prev &&\n prev.text !== \"\\n\" &&\n s.text !== \"\\n\" &&\n prev.bold === s.bold &&\n prev.italic === s.italic &&\n prev.href === s.href\n ) {\n prev.text += s.text;\n } else {\n merged.push({ ...s });\n }\n }\n // Leading whitespace is never content (a rendered empty paragraph carries a placeholder\n // space, and typing lands after it). Trailing whitespace usually is not either \u2014 the\n // browser's bogus trailing <br> serializes as a hard break \u2014 EXCEPT the single space a user\n // types before a page-number field goes in: \"Page \" + PAGE must not commit as \"Page\". The\n // engine writes it with xml:space=\"preserve\"; `trimBounds` counts it the same way.\n const md = merged.map(segToMarkdown).join(\"\").replace(/^\\s+/, \"\").replace(/\\s+$/, \"\");\n return escapeLeadingBlockMarkers(md + (keepsTrailingSpace(block) ? \" \" : \"\"));\n}\n\n/**\n * Whether a block's content text ends in a space the commit should keep: a plain or no-break\n * space (contenteditable turns a typed trailing space into U+00A0) after some non-whitespace\n * text. A whitespace-only block (the placeholder an empty paragraph renders as) keeps nothing.\n */\nfunction keepsTrailingSpace(block: HTMLElement): boolean {\n const text = blockContentText(block);\n if (text.trim().length === 0) return false;\n // An ordinary trailing space can only have come from the document (the converter renders\n // it from a preserved w:t), so it is content. A trailing NBSP is ambiguous: the browser\n // writes one for a typed space, but the placeholder an empty paragraph renders as is one\n // too, and typing at the start of such a paragraph leaves it dangling at the end. Only the\n // typed one counts, which `wireBlock` records from the input event.\n if (/ $/.test(text)) return true;\n return /\\u00a0$/.test(text) && block.dataset.typedTrailingSpace === \"1\";\n}\n\n/** Record whether the last input left a typed space at the end of the block \\u2014 see\n * {@link keepsTrailingSpace}. */\nfunction noteTypedSpace(block: HTMLElement, event: Event): void {\n const input = event as InputEvent;\n const typedSpace =\n input.inputType === \"insertText\" && typeof input.data === \"string\" && /[ \\u00a0]$/.test(input.data);\n const atEnd = typedSpace && caretOffsetIn(block) === blockContentText(block).length;\n if (atEnd) block.dataset.typedTrailingSpace = \"1\";\n else delete block.dataset.typedTrailingSpace;\n}\n\n// \u2500\u2500\u2500 M2: structural editing (split / merge) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ninterface AnchorRef {\n id: string;\n kind: string;\n scope: string;\n unid: string;\n}\n\n/**\n * An `EditResult` as the editor reads it straight off the bridge. It is derived from the public\n * type the typed session wrapper (`session.ts`) returns, so a change to the wire shape surfaces\n * in both at compile time; the lists are optional because a malformed reply may omit them.\n */\ntype EditResultLite = Pick<EditResult, \"success\">\n & Partial<Pick<EditResult, \"created\" | \"removed\" | \"modified\" | \"error\">>;\n\n/** What {@link DocxEditorOptions.onEditFailed} receives when the engine rejects an edit. */\nexport interface EditFailure {\n /** The engine's error code, when it sent one. */\n code?: EditErrorCode;\n /** The engine's error message. */\n message: string;\n /** The anchor the engine named in its error, else the block being edited, when there is one. */\n anchorId: string | null;\n}\n\ninterface DomSelectionPoint {\n node: Node;\n offset: number;\n}\n\ninterface CrossBlockSelectionBookmark {\n startUnid: string;\n startOffset: number;\n endUnid: string;\n endOffset: number;\n}\n\ninterface CrossBlockDragSelection {\n anchor: DomSelectionPoint;\n origin: HTMLElement;\n crossedBlockBoundary: boolean;\n focus: DomSelectionPoint | null;\n frame: number | null;\n}\n\n/** True if `block` renders as a list item (has a generated marker as its first child). */\nfunction isListBlock(block: HTMLElement): boolean {\n return !!block.querySelector(\":scope > [data-list-marker]\");\n}\n\n/**\n * The converter's tab box must stay text-empty because any child changes its inline baseline.\n * Editable list items still need a textContent separator between generated marker chrome and an\n * empty body so typing produces \"2. BB\", not \"2.BB\". Keep that editor-only separator hidden and\n * generated, outside the converter-owned marker wrapper.\n */\nfunction ensureListMarkerSeparator(block: HTMLElement): void {\n const marker = block.querySelector<HTMLElement>(\":scope > [data-list-marker]\");\n if (!marker) return;\n const next = marker.nextElementSibling as HTMLElement | null;\n if (next?.hasAttribute(\"data-editor-list-separator\")) return;\n\n const separator = block.ownerDocument.createElement(\"span\");\n separator.setAttribute(\"data-editor-list-separator\", \"\");\n separator.setAttribute(\"data-list-marker\", \"true\");\n separator.setAttribute(\"aria-hidden\", \"true\");\n separator.style.display = \"none\";\n separator.textContent = \" \";\n marker.after(separator);\n}\n\n/**\n * Inline chrome the CONVERTER generates that is not part of a paragraph's run text: list\n * number/bullet markers, footnote/endnote citation markers\n * (`<a class=\"footnote-ref\"><sup>1</sup></a>`), and the note backrefs (`\u21A9`).\n *\n * The session's run text contains none of it. A citation is a zero-width\n * `w:footnoteReference` \u2014 the displayed number is computed by the renderer from document order \u2014\n * so every character of chrome the editor fails to exclude shifts its content-offset space away\n * from the session's. Each omission has its own failure mode: excluded from offsets but not from\n * serialization and the display number gets COMMITTED as literal text (destroying the citation\n * run); left editable and the user can delete a marker outright, orphaning the note.\n */\nconst GENERATED_CHROME_SELECTOR =\n '[data-list-marker], a.footnote-ref, a.endnote-ref, a[class$=\"-backref\"], a.comment-marker';\n\nfunction isGeneratedChrome(node: Node | null | undefined): boolean {\n return node?.nodeType === 1 && !!(node as Element).matches?.(GENERATED_CHROME_SELECTOR);\n}\n\n/**\n * A rendered field \u2014 PAGE / NUMPAGES in a running story, stamped `[data-field]` by the editor\n * render profile. Fields are ATOMIC for editing (`contenteditable=false`, the caret lands on\n * either side), and their content length is the field's CACHED result \u2014 the text the session\n * holds in the result run \u2014 even after the page view substituted the per-page number into the\n * DOM. Counting the substituted text instead would shift every offset after the field and make\n * the commit diff rewrite the field runs.\n */\nfunction fieldOf(node: Node | null): HTMLElement | null {\n const el = node && node.nodeType === 1 ? (node as Element) : node?.parentElement ?? null;\n return (el?.closest?.(\"[data-field]\") as HTMLElement | null) ?? null;\n}\n\nfunction isField(node: Node): node is HTMLElement {\n return node.nodeType === 1 && (node as HTMLElement).hasAttribute(\"data-field\");\n}\n\n/** The text a field counts for: the cached result the session holds, else what it shows. */\nfunction fieldText(field: HTMLElement): string {\n return field.dataset.fieldCached ?? field.textContent ?? \"\";\n}\n\n/** Freeze a field's rendered result as its cached text (once) and keep the caret out of it. */\nfunction adoptFields(block: HTMLElement): void {\n for (const field of Array.from(block.querySelectorAll<HTMLElement>(\"[data-field]\"))) {\n if (field.dataset.fieldCached === undefined) field.dataset.fieldCached = field.textContent ?? \"\";\n field.setAttribute(\"contenteditable\", \"false\");\n }\n}\n\n/** True if `node` is, or is inside, generated chrome (not editable content). */\nfunction isInMarker(node: Node | null): boolean {\n let el: Element | null = node && node.nodeType === 1 ? (node as Element) : node?.parentElement ?? null;\n while (el) {\n if (isGeneratedChrome(el)) return true;\n el = el.parentElement;\n }\n return false;\n}\n\n/**\n * Unicode bidi formatting marks the HTML converter injects to preserve visual order: LRM/RLM/ALM,\n * the embedding/override controls, and the isolates (see WmlToHtmlConverter \u2014 a paragraph/run gets\n * a leading U+200E or U+200F). They are presentation-only \u2014 NOT part of the paragraph's run text the\n * session holds \u2014 so the editor must exclude them from its content-offset space, the same way it\n * excludes generated list markers. Otherwise every caret offset is shifted by the leading mark and a\n * caret at end-of-line overshoots the session's text length, so SplitParagraph/ApplyFormat reject the\n * offset (symptom: Enter at the end of a Google-Docs-exported paragraph is silently dropped).\n */\n// LRM, RLM, ALM; the embedding/override controls (LRE RLE PDF LRO RLO); the isolates (LRI RLI FSI PDI).\nconst BIDI_MARK_CLASS = \"\\u200E\\u200F\\u061C\\u202A-\\u202E\\u2066-\\u2069\";\nconst BIDI_MARKS_RE_G = new RegExp(`[${BIDI_MARK_CLASS}]`, \"g\");\nconst BIDI_MARK_RE = new RegExp(`[${BIDI_MARK_CLASS}]`);\nfunction stripBidi(s: string): string {\n return s.replace(BIDI_MARKS_RE_G, \"\");\n}\n\n/** Raw string index in `s` for content offset `n` (content = chars excluding bidi marks). */\nfunction domOffsetForContentOffset(s: string, n: number): number {\n let content = 0;\n for (let i = 0; i < s.length; i++) {\n if (content >= n) return i;\n if (!BIDI_MARK_RE.test(s[i])) content++;\n }\n return s.length;\n}\n\n/**\n * Content-text offset of (container, offset) within `block`, EXCLUDING generated list-marker\n * text and injected bidi marks. This is the offset DocxSession ops expect (the paragraph's run\n * text, not the rendered number/bullet or bidi marks the converter injects).\n */\nfunction contentOffsetOf(block: HTMLElement, container: Node, offset: number): number {\n let count = 0;\n let done = false;\n const walk = (node: Node): void => {\n if (done) return;\n if (isField(node)) {\n // Atomic: a point inside a field resolves to the field's end; the field counts its\n // cached text either way.\n const inside = node === container || node.contains(container);\n if (!inside || offset > 0 || node !== container) count += stripBidi(fieldText(node)).length;\n if (inside) done = true;\n return;\n }\n if (node.nodeType === 3 /* TEXT_NODE */) {\n if (node === container) {\n if (!isInMarker(node)) count += stripBidi((node.textContent ?? \"\").slice(0, offset)).length;\n done = true; return;\n }\n if (!isInMarker(node)) count += stripBidi(node.textContent ?? \"\").length;\n } else {\n if (node === container) {\n // Element container: `offset` is a child index \u2014 count content up to that child.\n const kids = Array.from(node.childNodes);\n for (let i = 0; i < offset && i < kids.length; i++) walk(kids[i]);\n done = true;\n return;\n }\n node.childNodes.forEach(walk);\n }\n };\n walk(block);\n return count;\n}\n\n/** Content-text offset of the collapsed caret within `block` (excludes markers), or null. */\nfunction caretOffsetIn(block: HTMLElement): number | null {\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n if (!sel || sel.rangeCount === 0) return null;\n const range = sel.getRangeAt(0);\n if (!block.contains(range.startContainer)) return null;\n return contentOffsetOf(block, range.startContainer, range.startOffset);\n}\n\n/** Visible content text of `block`, excluding generated list-marker text (the same content\n * caretOffsetIn/contentOffsetOf count). */\nfunction blockContentText(block: HTMLElement): string {\n let out = \"\";\n const walk = (node: Node): void => {\n if (isField(node)) {\n out += stripBidi(fieldText(node));\n } else if (node.nodeType === 3 /* TEXT_NODE */) {\n if (!isInMarker(node)) out += stripBidi(node.textContent ?? \"\");\n } else {\n node.childNodes.forEach(walk);\n }\n };\n walk(block);\n return out;\n}\n\n/**\n * Map a DOM caret offset (from caretOffsetIn) into the run-text offset the session holds after a\n * commit. commitBlock/syncBlock commit `serializeInlineMarkdown(el)`, which `.trim()`s leading and\n * trailing whitespace, so the session's paragraph text is shorter than the DOM text whenever the\n * block has edge whitespace \u2014 e.g. a blank document renders its empty paragraph with a placeholder\n * space, and typing lands after it. Without this adjustment the caret offset overshoots the\n * committed length, SplitParagraph returns OffsetOutOfRange, and splitAtCaret silently drops the\n * Enter (no new paragraph). Subtracting the leading whitespace before the caret and clamping to the\n * trimmed length keeps the split offset consistent with what was committed.\n */\nfunction trimmedSplitOffset(block: HTMLElement, domOffset: number): number {\n const { leading, trimmedLen } = trimBounds(block);\n return Math.max(0, Math.min(domOffset - Math.min(domOffset, leading), trimmedLen));\n}\n\n/** How far `block`'s DOM content text is offset from, and longer than, its committed form. */\nfunction trimBounds(block: HTMLElement): { leading: number; trimmedLen: number } {\n const content = blockContentText(block);\n return {\n leading: content.length - content.replace(/^\\s+/, \"\").length,\n // Mirrors serializeInlineMarkdown: leading and trailing whitespace dropped, plus the one\n // trailing space a commit keeps.\n trimmedLen: content.trim().length + (keepsTrailingSpace(block) ? 1 : 0),\n };\n}\n\n/**\n * Map a DOM content SPAN into the run-text space the session holds after a commit \u2014 the span\n * analogue of {@link trimmedSplitOffset}, and for the same reason.\n *\n * A block rendered with edge whitespace produces a span longer than the text the commit stores:\n * an empty header/footer story renders as a lone NBSP placeholder, so typing into it leaves a\n * trailing NBSP that `serializeInlineMarkdown(...).trim()` removes (JS `trim()` treats U+00A0 as\n * whitespace). \"Select all, then Bold\" then asks `ApplyFormat` for [0, len+1) \u2014 one past the\n * committed end \u2014 and the op is REJECTED with OffsetOutOfRange, so the format silently does\n * nothing. The demo's format buttons preventDefault on mousedown to keep the selection alive,\n * which is exactly the path that computes the span before `syncBlock` commits, so this is the\n * ordinary case rather than an edge one.\n */\nfunction trimmedSpan(\n block: HTMLElement,\n span: { start: number; length: number },\n): { start: number; length: number } {\n const { leading, trimmedLen } = trimBounds(block);\n const start = Math.max(0, Math.min(span.start - Math.min(span.start, leading), trimmedLen));\n const end = Math.max(start, Math.min(span.start + span.length - leading, trimmedLen));\n return { start, length: end - start };\n}\n\n/**\n * DOM (node, offset) for content offset `offset` within `el` \u2014 the same content-offset\n * space as contentOffsetOf (marker text and injected bidi marks excluded). Clamps past-end\n * offsets to the end of the last text node (or the element itself when it has none), so a\n * caller can always build a Range from the result.\n */\nfunction contentPositionIn(el: HTMLElement, offset: number): { node: Node; offset: number } {\n let remaining = offset;\n let result: { node: Node; offset: number } | null = null;\n let lastText: Node | null = null;\n const walk = (node: Node): void => {\n if (result) return;\n if (isField(node)) {\n // Never land inside a field: an offset at its start sits before it, anything up to its\n // cached length sits after it.\n const len = stripBidi(fieldText(node)).length;\n const parent = node.parentNode;\n if (parent && remaining <= len) {\n const index = Array.prototype.indexOf.call(parent.childNodes, node);\n result = { node: parent, offset: index + (remaining > 0 ? 1 : 0) };\n return;\n }\n remaining -= len;\n return;\n }\n if (node.nodeType === 3 /* TEXT_NODE */) {\n if (isInMarker(node)) return;\n const raw = node.textContent ?? \"\";\n const len = stripBidi(raw).length;\n lastText = node;\n if (remaining <= len) {\n result = { node, offset: domOffsetForContentOffset(raw, remaining) };\n return;\n }\n remaining -= len;\n } else {\n node.childNodes.forEach(walk);\n }\n };\n walk(el);\n if (result) return result;\n if (lastText) return { node: lastText, offset: ((lastText as Node).textContent ?? \"\").length };\n return { node: el, offset: el.childNodes.length };\n}\n\n/**\n * Resolve a viewport coordinate to a DOM caret. Firefox exposes the standards-track\n * caretPositionFromPoint; Chromium/WebKit expose caretRangeFromPoint. Keeping the compatibility\n * shim here lets the editor bridge native mouse selection across its intentionally-independent\n * per-paragraph editing hosts without changing their commit boundaries.\n */\nfunction caretPointFromClient(\n doc: Document,\n clientX: number,\n clientY: number,\n): DomSelectionPoint | null {\n const caretDoc = doc as Document & {\n caretPositionFromPoint?: (x: number, y: number) => { offsetNode: Node; offset: number } | null;\n caretRangeFromPoint?: (x: number, y: number) => Range | null;\n };\n const position = caretDoc.caretPositionFromPoint?.(clientX, clientY);\n if (position) return { node: position.offsetNode, offset: position.offset };\n const range = caretDoc.caretRangeFromPoint?.(clientX, clientY);\n return range ? { node: range.startContainer, offset: range.startOffset } : null;\n}\n\n/**\n * Set a possibly-backward pair of points as one normalized DOM Range. Chromium's\n * Selection.setBaseAndExtent() exposes cross-contenteditable endpoints but clips toString() and\n * the effective contents to the originating host; addRange() carries the complete cross-block\n * contents. Direction is immaterial to editor commands, which consume normalized start/end.\n */\nfunction setSelectionBetween(anchor: DomSelectionPoint, focus: DomSelectionPoint): boolean {\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n if (!sel || !anchor.node.isConnected || !focus.node.isConnected) return false;\n try {\n const probe = document.createRange();\n probe.setStart(anchor.node, anchor.offset);\n probe.collapse(true);\n const focusIsBefore = probe.comparePoint(focus.node, focus.offset) < 0;\n const range = document.createRange();\n const start = focusIsBefore ? focus : anchor;\n const end = focusIsBefore ? anchor : focus;\n range.setStart(start.node, start.offset);\n range.setEnd(end.node, end.offset);\n sel.removeAllRanges();\n sel.addRange(range);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Place the caret at content offset `offset` within `el`, skipping marker text. */\nfunction placeCaretAtOffset(el: HTMLElement, offset: number): void {\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n // A remount can detach the block between a caller's lookup and this call; addRange on a\n // detached node throws \"the given range isn't in document\".\n if (!sel || !el.isConnected) return;\n el.focus();\n const range = document.createRange();\n // contentPositionIn clamps a past-end offset to the end of the last text node, and never\n // lands inside marker chrome or a field \u2014 the same rules every other offset helper uses.\n const pos = contentPositionIn(el, offset);\n try {\n range.setStart(pos.node, pos.offset);\n } catch {\n range.selectNodeContents(el);\n range.collapse(false);\n }\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n}\n\n// \u2500\u2500\u2500 M5: formatting controls \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type FormatKey = \"bold\" | \"italic\" | \"underline\" | \"strike\" | \"code\" | \"superscript\" | \"subscript\";\n\n/** Paragraph alignment passed to DocxEditor.setAlignment. */\nexport type EditorAlignment = \"left\" | \"center\" | \"right\" | \"justify\";\n\n/** The selection's content-text {start,length} within `block` (excludes markers), or null. */\nfunction selectionSpanIn(block: HTMLElement): { start: number; length: number } | null {\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n if (!sel || sel.rangeCount === 0) return null;\n const range = sel.getRangeAt(0);\n if (range.collapsed) return null;\n if (!block.contains(range.startContainer) || !block.contains(range.endContainer)) return null;\n const start = contentOffsetOf(block, range.startContainer, range.startOffset);\n const end = contentOffsetOf(block, range.endContainer, range.endOffset);\n // Normalized into the committed run-text space: every consumer feeds this straight to a\n // DocxSession op, which rejects a span that overshoots the committed length.\n const span = trimmedSpan(block, { start: Math.min(start, end), length: Math.abs(end - start) });\n return span.length > 0 ? span : null;\n}\n\n/**\n * A DOM Range over the content text spanning [start, start+length) within `el` (skips markers),\n * or null when the block is detached or the offsets do not resolve. Building the range is kept\n * separate from selecting it so a caller that only wants to PAINT a span (find preview) does not\n * have to touch the selection \u2014 and therefore focus \u2014 at all.\n */\nfunction contentRangeIn(el: HTMLElement, start: number, length: number): Range | null {\n // The block may have been swapped out of the document by a re-render before this runs\n // (e.g. a focus-stealing toolbar control firing twice). addRange on a detached range\n // throws \"the given range isn't in document\" \u2014 skip rather than warn.\n if (!el.isConnected) return null;\n const doc = el.ownerDocument;\n const range = doc.createRange();\n const from = contentPositionIn(el, start);\n const to = contentPositionIn(el, start + length);\n try {\n range.setStart(from.node, from.offset);\n range.setEnd(to.node, to.offset);\n } catch {\n return null;\n }\n return range;\n}\n\n/** Restore a content-text selection spanning [start, start+length) within `el` (skips markers). */\nfunction selectRange(el: HTMLElement, start: number, length: number): void {\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n if (!sel || !el.isConnected) return;\n el.focus();\n const range = contentRangeIn(el, start, length);\n if (!range) return;\n sel.removeAllRanges();\n sel.addRange(range);\n}\n\n// \u2500\u2500\u2500 Find painting \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n//\n// A find box has to show WHERE the hits are while the user is still typing into it, so it cannot\n// express \"the current match\" as a selection: putting a caret in a contenteditable block focuses\n// that block, and the next keystroke lands in the document instead of the search field. These\n// highlights paint the same information with no focus and no DOM mutation \u2014 the CSS Custom\n// Highlight API takes plain Ranges over the live text and styles them from the stylesheet.\n\n/** Every match currently on screen. */\nconst FIND_HIGHLIGHT = \"docxodus-find\";\n/** The one the find bar's counter is pointing at. */\nconst FIND_HIGHLIGHT_ACTIVE = \"docxodus-find-active\";\n/** Ranges are cheap, but a pathological query (\"e\" in a book) is not worth painting in full. */\nconst FIND_PAINT_LIMIT = 500;\n\nconst findHighlightStyledDocuments = new WeakSet<Document>();\n/**\n * Which editor last painted into the shared registry. Only that instance may clear it, so a\n * second surface on the page cannot wipe the first one's find painting when its own find bar\n * closes. Two live searches still share one painting \u2014 the newer one wins, which is what a\n * single visible \"current match\" should mean.\n */\nlet findPaintOwner: object | null = null;\n\nfunction ensureFindHighlightStyles(doc: Document): void {\n if (findHighlightStyledDocuments.has(doc)) return;\n findHighlightStyledDocuments.add(doc);\n const style = doc.createElement(\"style\");\n style.dataset.docxodusFindHighlight = \"true\";\n style.textContent = `\n::highlight(${FIND_HIGHLIGHT}) { background-color: rgba(15, 118, 110, .16); }\n::highlight(${FIND_HIGHLIGHT_ACTIVE}) { background-color: rgba(15, 118, 110, .38); }\n`;\n (doc.head ?? doc.documentElement).appendChild(style);\n}\n\n/** The highlight registry is global to the document, so two editors on one page share it. */\ninterface HighlightRegistry {\n set(name: string, highlight: unknown): void;\n delete(name: string): void;\n}\n\nfunction highlightRegistry(): HighlightRegistry | null {\n if (typeof CSS === \"undefined\") return null;\n const registry = (CSS as unknown as { highlights?: HighlightRegistry }).highlights;\n const ctor = (globalThis as unknown as { Highlight?: unknown }).Highlight;\n return registry && typeof ctor === \"function\" ? registry : null;\n}\n\nfunction makeHighlight(ranges: Range[]): unknown {\n const ctor = (globalThis as unknown as {\n Highlight: new (...ranges: Range[]) => unknown;\n }).Highlight;\n return new ctor(...ranges);\n}\n\n/**\n * True when `el`'s immediate parent is a paragraph-border `<div>` the full render wrapped it in\n * (CreateBorderDivs groups visibly-bordered paragraphs into a div). The body wrapper div has no\n * border. Splitting/merging such a block must re-render the whole document so the converter can\n * re-group the border boxes \u2014 an in-place node swap would leave the new (often borderless)\n * paragraph stranded inside the stale border div, drawing the rule's line under its text.\n */\nfunction inBorderWrapper(el: HTMLElement): boolean {\n const style = el.parentElement?.getAttribute(\"style\") ?? \"\";\n return /border-(top|bottom|left|right):\\s*(?!none)[^;]+/i.test(style);\n}\n\n/** Whether the current selection's start already carries `key`, read from computed style. */\nfunction selectionHasFormat(key: FormatKey, fallback: HTMLElement): boolean {\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n let el: HTMLElement | null = fallback;\n if (sel && sel.rangeCount > 0) {\n const n = sel.getRangeAt(0).startContainer;\n el = n.nodeType === 3 ? n.parentElement : (n as HTMLElement);\n }\n if (!el || typeof getComputedStyle !== \"function\") return false;\n const cs = getComputedStyle(el);\n switch (key) {\n case \"bold\": return fontWeightIsBold(cs.fontWeight);\n case \"italic\": return cs.fontStyle === \"italic\" || cs.fontStyle === \"oblique\";\n case \"underline\": return cs.textDecorationLine.includes(\"underline\");\n case \"strike\": return cs.textDecorationLine.includes(\"line-through\");\n case \"code\": return /mono|courier|consolas/i.test(cs.fontFamily);\n case \"superscript\": return cs.verticalAlign === \"super\" || !!el.closest(\"sup\");\n case \"subscript\": return cs.verticalAlign === \"sub\" || !!el.closest(\"sub\");\n default: return false;\n }\n}\n\n/** Build the full ConvertDocxToHtmlComplete arg list (revisionPresentation = last arg). */\nfunction completeArgs(\n bytes: Uint8Array,\n cssPrefix: string,\n fabricate: boolean,\n paginated: boolean,\n scale: number,\n renderTrackedChanges: boolean,\n comments: boolean,\n): any[] {\n return [\n // Comment mode 1 = Inline: the commented runs are wrapped in highlight spans and the\n // reference becomes an (editor-hidden) marker, which is what the comment gutter positions\n // its bubbles against. -1 renders no comment markup at all.\n bytes, \"Document\", cssPrefix, fabricate, \"\", comments ? 1 : -1, \"comment-\",\n /* paginationMode */ paginated ? 1 : 0, /* paginationScale */ scale, \"page-\",\n false, 0, \"annot-\",\n // Footnotes/endnotes ON: they are document content, and the editor makes the rendered note\n // paragraphs editable. Must stay in step with DocxSessionOps.RenderHtml (the remount path),\n // whose output has to match this first paint byte-for-byte.\n /* renderFootnotesAndEndnotes */ true, /* renderHeadersAndFooters */ paginated,\n renderTrackedChanges, true, true, false, null, /* stampAnchors */ true,\n /* revisionPresentation: Docxodus (block renders keep it) */ 0,\n ];\n}\n\nexport class DocxEditor {\n private readonly exports: DocxEditorExports;\n private container: HTMLElement;\n private readonly handle: number;\n private readonly options: Required<\n Omit<DocxEditorOptions, \"onEdit\" | \"onEditFailed\" | \"onMove\" | \"onStoryChange\" | \"onCommentsChange\">\n > &\n Pick<DocxEditorOptions, \"onEdit\" | \"onEditFailed\" | \"onMove\" | \"onStoryChange\" | \"onCommentsChange\">;\n /** Map a block's current bare unid \u2192 its full kind:scope:unid (DocxSession anchor). */\n private readonly unidToFullId = new Map<string, string>();\n /** The element whose [data-anchor] descendants are the editable blocks (container or page container). */\n private editRoot: HTMLElement;\n /** The most recently focused editable block \u2014 the target for ribbon/format commands. */\n private activeBlock: HTMLElement | null = null;\n private closed = false;\n /**\n * Re-entrancy guard for node replacement. Replacing a contenteditable block that still holds\n * focus removes the focused node, which fires a SYNCHRONOUS `blur` \u2192 re-enters commitBlock; the\n * interleaved second replaceWith then throws NotFoundError (\"node ... no longer a child\") and the\n * structural edit (split/merge/format) is lost. While this flag is set, commitBlock no-ops.\n */\n private replacing = false;\n\n /** Editor-owned block-move chrome. It is deliberately outside the rendered unit tree. */\n private blockDragHandle: HTMLElement | null = null;\n private blockDropIndicator: HTMLElement | null = null;\n private blockMoveMenu: HTMLElement | null = null;\n private blockMoveLive: HTMLElement | null = null;\n private blockDragSource: HTMLElement | null = null;\n /** Whether hover or focus currently wants a handle for `blockDragSource`.\n * Tracked apart from the handle's `display`, which the viewport clip also drives: a handle\n * withdrawn because its block scrolled out of view has to come back when it scrolls in. */\n private blockHandleWanted = false;\n private blockDragCleanup: Array<() => void> = [];\n /** Block boxes measured at drag start \u2014 see `BlockDropZone`. Empty when no drag is in flight. */\n private dropZones: BlockDropZone[] = [];\n /** Combined scroll offset when `dropZones` was measured, and the scroller measured against. */\n private dropZoneOrigin = 0;\n private dropZoneScroller: HTMLElement | null = null;\n private blockDragging = false;\n private blockDragPointerDown = false;\n /** Anchors the current drag source may legally move next to, per the engine's own rules.\n * Null when the bridge predates ValidMoveTargets \u2014 then every block is offered, as before. */\n private blockMoveTargets: Map<string, { before: boolean; after: boolean }> | null = null;\n /** Memoized `ValidMoveTargets` answers, keyed by source anchor and dropped whenever an edit\n * lands. The legal-target set is a property of the document, so hovering back and forth over\n * the same blocks between edits must not re-ask the engine. */\n private blockMoveTargetCache = new Map<string, Map<string, { before: boolean; after: boolean }> | null>();\n /** Cancels the pending idle prefetch of the hovered block's targets \u2014 see `showBlockHandle`. */\n private blockMoveTargetPrefetch: (() => void) | null = null;\n /** Why the last move was refused, verbatim from the engine \u2014 diagnostics, not announcement copy. */\n lastMoveError: string | null = null;\n\n /**\n * The last real (non-collapsed) text selection inside an editable block. A toolbar control that\n * must take focus to be used \u2014 the font-size combobox \u2014 blurs the block and collapses the live\n * selection, so without this an operation triggered from such a control could only target the\n * whole paragraph (S-1 smoke-test finding 3). Refreshed whenever a non-empty selection sits in a\n * block, and cleared when a caret is collapsed inside a block (so it never goes stale).\n */\n private lastSelection: { unid: string; span: { start: number; length: number } } | null = null;\n\n /**\n * Stable bookmark for a selection spanning independent editable blocks. Native controls such as\n * a font-size combobox can take focus and collapse the live DOM selection; block ids + content\n * offsets let the command restore that same range before applying. This is the multi-block\n * counterpart to lastSelection above.\n */\n private lastCrossBlockSelection: CrossBlockSelectionBookmark | null = null;\n\n /** State for the mouse-selection bridge between independent contenteditable block hosts. */\n private dragSelection: CrossBlockDragSelection | null = null;\n\n /** The docked header/footer bands, when `options.headerFooter` is on. */\n private region: HeaderFooterRegion | null = null;\n\n /** The comment gutter, when `options.comments` is on. */\n private gutter: CommentGutter | null = null;\n\n /** Story host the caret is in (page view / band), published for chrome via `onStoryChange`. */\n private activeStory: BandWhich | null = null;\n\n /** Page geometry + fit-to-width zoom for the mounted document. Re-attached on every mount. */\n private readonly viewport: DocumentViewport;\n\n /** Why the last reconcile() fell back to a full remount (null = it patched). For\n * diagnostics/specs; not part of the public API. */\n private lastReconcileFallback: string | null = null;\n\n private constructor(\n container: HTMLElement,\n exports: DocxEditorExports,\n handle: number,\n options: DocxEditor[\"options\"],\n ) {\n this.container = container;\n this.exports = exports;\n this.handle = handle;\n this.options = options;\n this.editRoot = container;\n this.viewport = new DocumentViewport(container, {\n columnWidth: options.columnWidth,\n fitToWidth: options.fitToWidth,\n scale: options.scale,\n });\n if (typeof document !== \"undefined\") {\n document.addEventListener(\"selectionchange\", this.onSelectionChange);\n document.addEventListener(\"mousedown\", this.onMouseDown, true);\n document.addEventListener(\"mousemove\", this.onMouseMove, true);\n document.addEventListener(\"mouseup\", this.onMouseUp, true);\n }\n }\n\n /** Track the last meaningful selection so focus-stealing toolbar controls can still target it. */\n private readonly onSelectionChange = (): void => {\n if (this.closed) return;\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n if (!sel || sel.rangeCount === 0) return; // no selection info \u2014 keep the cache as-is\n const range = sel.getRangeAt(0);\n const startBlock = this.editableBlockOf(range.startContainer);\n const endBlock = this.editableBlockOf(range.endContainer);\n const block = startBlock ?? endBlock;\n if (!block) return; // selection is outside the editor (e.g. a toolbar field) \u2014 keep the cache\n if (range.collapsed) {\n this.lastSelection = null; // an explicit caret in a block \u2014 drop any stale selection\n this.lastCrossBlockSelection = null;\n return;\n }\n if (\n startBlock && endBlock && startBlock !== endBlock &&\n this.ownerRoot(startBlock) === this.ownerRoot(endBlock)\n ) {\n const startUnid = startBlock.getAttribute(\"data-anchor\");\n const endUnid = endBlock.getAttribute(\"data-anchor\");\n if (startUnid && endUnid) {\n this.lastSelection = null;\n this.lastCrossBlockSelection = {\n startUnid,\n startOffset: contentOffsetOf(startBlock, range.startContainer, range.startOffset),\n endUnid,\n endOffset: contentOffsetOf(endBlock, range.endContainer, range.endOffset),\n };\n }\n return;\n }\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n this.lastCrossBlockSelection = null;\n const span = selectionSpanIn(block);\n if (span) this.lastSelection = { unid, span };\n };\n\n /** Start tracking a normal primary-button text drag inside one editable block. */\n private readonly onMouseDown = (event: MouseEvent): void => {\n if (this.closed || !this.options.editable || event.button !== 0) return;\n const target = event.target instanceof Node ? event.target : null;\n const origin = this.editableBlockOf(target);\n if (!origin || isInMarker(target)) return;\n const anchor = caretPointFromClient(document, event.clientX, event.clientY);\n if (!anchor || this.editableBlockOf(anchor.node) !== origin) return;\n this.clearDragSelection();\n this.dragSelection = {\n anchor,\n origin,\n crossedBlockBoundary: false,\n focus: null,\n frame: null,\n };\n };\n\n /**\n * Apply the latest cross-block endpoint after the browser finishes its native mousemove\n * selection update. Firefox rewrites Selection back into the originating contenteditable after\n * event dispatch even when mousemove is cancelled; writing in requestAnimationFrame wins that\n * race and happens before paint. Coalescing also avoids rebuilding a Range for every raw pointer\n * event when the mouse is moving faster than the display can refresh.\n */\n private queueDragSelection(drag: CrossBlockDragSelection, focus: DomSelectionPoint): void {\n drag.focus = focus;\n if (drag.frame !== null) return;\n const view = this.container.ownerDocument.defaultView;\n if (!view) {\n setSelectionBetween(drag.anchor, focus);\n return;\n }\n drag.frame = view.requestAnimationFrame(() => {\n drag.frame = null;\n if (this.dragSelection !== drag || !drag.focus) return;\n setSelectionBetween(drag.anchor, drag.focus);\n });\n }\n\n /** Cancel a queued repaint and discard the current gesture. */\n private clearDragSelection(): void {\n const drag = this.dragSelection;\n if (drag && drag.frame !== null) {\n this.container.ownerDocument.defaultView?.cancelAnimationFrame(drag.frame);\n }\n this.dragSelection = null;\n }\n\n /**\n * Browsers fence native mouse selection at a contenteditable host boundary. Once a drag reaches\n * another block in the same OOXML story, take over just that gesture and create the cross-block\n * Selection the editor's existing multi-block command path consumes. Intra-block selection stays\n * entirely native, and separate hosts remain intact for safe per-anchor commits.\n */\n private readonly onMouseMove = (event: MouseEvent): void => {\n const drag = this.dragSelection;\n if (!drag) return;\n if ((event.buttons & 1) === 0) {\n this.clearDragSelection();\n return;\n }\n const focus = caretPointFromClient(document, event.clientX, event.clientY);\n if (!focus || isInMarker(focus.node)) return;\n const focusBlock = this.editableBlockOf(focus.node);\n if (!focusBlock || this.ownerRoot(focusBlock) !== this.ownerRoot(drag.origin)) return;\n if (focusBlock !== drag.origin) drag.crossedBlockBoundary = true;\n if (!drag.crossedBlockBoundary) return;\n event.preventDefault();\n this.queueDragSelection(drag, focus);\n };\n\n /** Commit the final cross-block endpoint before releasing the gesture state. */\n private readonly onMouseUp = (event: MouseEvent): void => {\n const drag = this.dragSelection;\n if (!drag) return;\n if (drag.crossedBlockBoundary) {\n const focus = caretPointFromClient(document, event.clientX, event.clientY);\n const focusBlock = focus ? this.editableBlockOf(focus.node) : null;\n if (focus && focusBlock && this.ownerRoot(focusBlock) === this.ownerRoot(drag.origin)) {\n event.preventDefault();\n setSelectionBetween(drag.anchor, focus);\n }\n }\n this.clearDragSelection();\n };\n\n /** The editable block (contenteditable [data-anchor]) containing `node`, if any, within this editor.\n * Fenced by `container`, not `editRoot`, so header/footer band blocks \u2014 which live outside the\n * body edit root by design \u2014 also register. The fence still rejects other editors on the page. */\n private editableBlockOf(node: Node | null): HTMLElement | null {\n if (!node) return null;\n const start = node.nodeType === 1 ? (node as HTMLElement) : node.parentElement;\n const block = start?.closest<HTMLElement>('[data-anchor][contenteditable=\"true\"]') ?? null;\n return block && this.container.contains(block) ? block : null;\n }\n\n /**\n * The root owning `el`'s sibling block list: its header/footer band's story container, else the\n * body edit root. Keeps a multi-block selection from spanning a band and the body, whose block\n * lists belong to different OOXML parts.\n */\n private ownerRoot(el: HTMLElement): HTMLElement {\n return this.region?.blockRootOf(el) ?? this.editRoot;\n }\n\n /** True when `el` is a header/footer band block rather than a body block. */\n private isBandBlock(el: HTMLElement): boolean {\n return !!this.region?.contains(el);\n }\n\n /**\n * Repaint after an edit to `block` that would otherwise remount the whole document: a band\n * repaints only itself (a story is one to three paragraphs), leaving the body DOM \u2014 and the\n * user's place in it \u2014 untouched; a body edit reconciles incrementally. `forceRemount` is\n * for ops whose repaint provably needs whole-document context the reconciler cannot see:\n * list membership/level changes (sibling numbering shifts without sibling XML changing)\n * and border-div regrouping (HR insert, clearBorders).\n */\n private refreshAfter(block: HTMLElement, focusIndex: number, caretAtEnd = false, forceRemount = false): void {\n const band = this.region?.bandOf(block);\n if (band) {\n this.region!.refresh(this.region!.whichOf(band));\n return;\n }\n if (forceRemount) this.remount(focusIndex, caretAtEnd);\n else this.reconcile(focusIndex, caretAtEnd);\n }\n\n /** Open a document, render it into `container`, and wire up editing. */\n static open(\n container: HTMLElement,\n bytes: Uint8Array,\n exports: DocxEditorExports,\n options: DocxEditorOptions = {},\n ): DocxEditor {\n const opts = DocxEditor.resolveOptions(options);\n const editor = DocxEditor.openSession(container, bytes, exports, opts);\n try {\n editor.refreshAnchorMap();\n if (opts.headerFooter) editor.createRegion();\n // First paint goes through the session-attached editor render when the bundle has it, so\n // the comment markup (and everything else in the profile) is exactly what a remount will\n // produce; older bundles take the bytes path with the same profile.\n const fullHtml = editor.renderFullHtml(bytes);\n if (opts.paginated) editor.mountPaginated(fullHtml);\n else editor.mountHtml(fullHtml);\n editor.finishMount();\n return editor;\n } catch (error) {\n editor.close();\n throw error;\n }\n }\n\n /**\n * Open a document without holding the main thread for the whole mount (issue #776).\n *\n * {@link open} renders and wires the entire document in one synchronous task, which on a\n * long document is the largest single block of a reading-and-editing session. This variant\n * pays only the session open up front, then mounts the document in windows of body units,\n * yielding to the event loop between them: the chrome \u2014 stylesheet, section wrappers with\n * their page geometry, footnote and endnote sections \u2014 comes from one cheap engine render\n * that sees no body content, and each window from the engine's block renderer, which lays\n * units out exactly as the full render does (the plan's border-box grouping is never split).\n * The DOM that results is the one {@link open} produces; blocks already mounted are editable\n * while later windows are still landing, and edits made meanwhile are honoured because every\n * window renders from the live session.\n *\n * Paginated mounts assemble the windows off-screen and paginate once at the end, since\n * pagination is a one-shot flow over the whole document; the main thread is still free\n * between windows, and `onProgress` lets a host show the fill.\n *\n * A bundle that predates the windowed renders mounts synchronously, exactly like {@link open}.\n */\n static async openAsync(\n container: HTMLElement,\n bytes: Uint8Array,\n exports: DocxEditorExports,\n options: DocxEditorOpenAsyncOptions = {},\n ): Promise<DocxEditor> {\n const bridge = exports.DocxSessionBridge;\n if (\n typeof bridge.RenderEditorChromeHtml !== \"function\"\n || typeof bridge.RenderEditorRangeHtml !== \"function\"\n || typeof bridge.ListRenderedBlocks !== \"function\"\n ) {\n return DocxEditor.open(container, bytes, exports, options);\n }\n const opts = DocxEditor.resolveOptions(options);\n const editor = DocxEditor.openSession(container, bytes, exports, opts);\n try {\n editor.refreshAnchorMap();\n if (opts.headerFooter) editor.createRegion();\n await editor.mountWindowed(\n Math.max(1, Math.floor(options.windowSize ?? 24)),\n options.onProgress,\n );\n editor.finishMount();\n return editor;\n } catch (error) {\n editor.close();\n throw error;\n }\n }\n\n private static resolveOptions(options: DocxEditorOptions): DocxEditor[\"options\"] {\n return {\n cssPrefix: options.cssPrefix ?? \"docx-\",\n fabricateClasses: options.fabricateClasses ?? false,\n editable: options.editable ?? true,\n paginated: options.paginated ?? false,\n scale: options.scale ?? 1,\n columnWidth: options.columnWidth ?? \"section\",\n fitToWidth: options.fitToWidth ?? true,\n headerFooter: options.headerFooter ?? false,\n blockDrag: options.blockDrag ?? false,\n trackedChanges: options.trackedChanges ?? TrackedChangeMode.Accept,\n revisionAuthor: options.revisionAuthor ?? \"docxodus\",\n comments: options.comments ?? true,\n commentAuthor: options.commentAuthor ?? options.revisionAuthor ?? \"Reviewer\",\n onEdit: options.onEdit,\n onEditFailed: options.onEditFailed,\n onMove: options.onMove,\n onStoryChange: options.onStoryChange,\n onCommentsChange: options.onCommentsChange,\n };\n }\n\n private static openSession(\n container: HTMLElement,\n bytes: Uint8Array,\n exports: DocxEditorExports,\n opts: DocxEditor[\"options\"],\n ): DocxEditor {\n // NOT persistAnchorIds: that setting applies to every Save on the session, so it put the\n // projector's Unid bookkeeping into the bytes the USER downloads \u2014 ~6x the file size for\n // attributes no renderer reads. Only the remount's re-render needs id stability across a\n // save/re-render hop, and it asks for that per call via SaveWithAnchorIds.\n // emitMarkdownPatch off: the editor re-renders from HTML, never from markdown patches,\n // so paying a whole-document re-projection per op would be dead weight.\n const handle = exports.DocxSessionBridge.OpenSession(bytes, JSON.stringify({\n emitMarkdownPatch: false,\n trackedChanges: trackedChangeWireName(opts.trackedChanges),\n revisionAuthor: opts.revisionAuthor,\n }));\n return new DocxEditor(container, exports, handle, opts);\n }\n\n /** The steps every mount ends with once the body is in the DOM. */\n private finishMount(): void {\n this.syncRegionToBody();\n this.setupBlockDrag();\n if (this.options.comments) this.createGutter();\n }\n\n /**\n * The windowed mount behind {@link openAsync}: chrome first, then body units in plan order,\n * a group-aligned window per task. See {@link openAsync} for the contract.\n */\n private async mountWindowed(\n windowSize: number,\n onProgress?: (mounted: number, total: number) => void,\n ): Promise<void> {\n const bridge = this.exports.DocxSessionBridge;\n // The full render stamps source anchor ids on every unit; the windows must too, or the DOM\n // would differ from open()'s by exactly that attribute.\n const profile = JSON.stringify({ ...JSON.parse(this.editorRenderProfile()), stampAnchors: true });\n const chrome = bridge.RenderEditorChromeHtml!(this.handle, profile);\n if (chrome.trimStart().startsWith(\"{\")) {\n throw new Error((JSON.parse(chrome) as { error?: string }).error ?? \"chrome render failed\");\n }\n const parsed = new DOMParser().parseFromString(chrome, \"text/html\");\n // The chrome renders an empty carrier paragraph where each section break and note reference\n // was; those are not units and go before anything lands. Everything else inside a section\n // wrapper is chrome that stays \u2014 page view puts the endnotes section in the last one.\n parsed.body.querySelectorAll<HTMLElement>(`[data-section-index] > [data-anchor=\"${CHROME_CARRIER_ANCHOR}\"]`)\n .forEach((el) => el.remove());\n const styles = Array.from(parsed.querySelectorAll(\"style\")).map((s) => s.outerHTML).join(\"\");\n const flow = document.createElement(\"div\");\n flow.className = \"docx-body-flow\";\n flow.innerHTML = parsed.body.innerHTML;\n const hosts = new Map<number, HTMLElement>();\n flow.querySelectorAll<HTMLElement>(\"[data-section-index]\").forEach((el) =>\n hosts.set(Number(el.getAttribute(\"data-section-index\")), el));\n const attachNow = !this.options.paginated;\n // A flow mount wires blocks as they land \u2014 the chrome's own (footnote and endnote\n // paragraphs) now, each window's as it arrives \u2014 the way open() wires everything under\n // the flow. A paginated mount hands the paginator unwired HTML and wires the page clones\n // afterwards, exactly as open() does; wiring first would leave the paginator's\n // contenteditable=\"false\" stamp on every band paragraph.\n const wireNow = attachNow && this.options.editable;\n if (wireNow) this.wireBlocks(flow);\n if (attachNow) {\n this.region?.detachPages();\n this.container.innerHTML = styles;\n this.readoptGutter();\n this.container.appendChild(flow);\n this.editRoot = flow;\n }\n\n const plan = JSON.parse(this.renderPlanJson()) as RenderPlan & { error?: string };\n if (plan.error) throw new Error(plan.error);\n const units = plan.body;\n const sectionOf = new Map(units.map((u) => [unidOf(u.id), u.section ?? 0]));\n const mounted = new Set<string>();\n const place = (el: HTMLElement, sameHostAs?: HTMLElement): HTMLElement => {\n // Per-block converter output carries the XHTML xmlns; a full render only has it on the\n // document root, and open()'s DOM is the contract.\n el.removeAttribute(\"xmlns\");\n const unit = el.hasAttribute(\"data-anchor\") ? el : el.querySelector<HTMLElement>(\"[data-anchor]\");\n const unid = unit?.getAttribute(\"data-anchor\") ?? \"\";\n const host = sameHostAs ?? hosts.get(sectionOf.get(unid) ?? 0) ?? hosts.values().next().value ?? flow;\n // Units precede the chrome a section wrapper already holds (page view's endnotes section).\n host.insertBefore(el, host.querySelector(\":scope > section.endnotes\"));\n if (wireNow) {\n // wireBlocks wires a root's descendants; the node itself may be the unit.\n if (el.hasAttribute(\"data-anchor\")) this.wireBlock(el);\n this.wireBlocks(el);\n }\n unit && mounted.add(unid);\n el.querySelectorAll(\"[data-anchor]\").forEach((n) => mounted.add(n.getAttribute(\"data-anchor\")!));\n return host;\n };\n for (let start = 0; start < units.length;) {\n let end = Math.min(start + windowSize, units.length);\n // Never cut through a border box: extend to the end of the group the window stopped in.\n while (end < units.length && units[end].group !== undefined && units[end].group === units[end - 1].group) end++;\n const window = units.slice(start, end);\n const rendered = JSON.parse(bridge.RenderEditorRangeHtml!(\n this.handle, JSON.stringify(window.map((u) => u.id)), profile,\n )) as string[] | { error?: string };\n if (!Array.isArray(rendered)) throw new Error(rendered.error ?? \"window render failed\");\n for (const html of rendered) {\n // One rendered node can parse into several elements: the HTML parser closes a paragraph\n // at a block-level child (page view's page-break marker div), exactly as it does for the\n // full render's string, so every element it produced lands in order in the unit's section.\n let host: HTMLElement | undefined;\n for (const el of Array.from(new DOMParser().parseFromString(html, \"text/html\").body.children)) {\n host = place(el as HTMLElement, host);\n }\n }\n // A unit the range render could not place (a box that would have straddled the window)\n // still lands, on its own, through the per-block renderer.\n for (const unit of window) {\n if (mounted.has(unidOf(unit.id))) continue;\n const el = this.renderInto(unit.id);\n if (el) place(el);\n }\n start = end;\n onProgress?.(start, units.length);\n if (start < units.length) await yieldToEventLoop();\n }\n\n if (attachNow) {\n this.stampPlanState();\n if (this.region) this.dockBands(flow);\n this.viewport.attach(flow, true);\n } else {\n // Pagination is a one-shot flow over the whole document: hand it the assembled document\n // the way open() hands it the full render \u2014 head content (the meta tags, the title and\n // the stylesheet, which the paginator keeps in the flow) followed by the body.\n this.mountPaginated(parsed.head.innerHTML + flow.innerHTML);\n }\n }\n\n /**\n * Open a fresh, blank document (a \"New document\" \u2014 single empty paragraph, Normal style,\n * US-Letter section) and wire up editing. The seed bytes come from the WASM bridge so the\n * result opens cleanly in Word too.\n */\n static openBlank(\n container: HTMLElement,\n exports: DocxEditorExports,\n options: DocxEditorOptions = {},\n ): DocxEditor {\n return DocxEditor.open(container, exports.DocxSessionBridge.CreateBlankDocx(), exports, options);\n }\n\n /** Lossless DOCX bytes reflecting all edits. */\n save(): Uint8Array {\n this.assertOpen();\n return this.exports.DocxSessionBridge.Save(this.handle);\n }\n\n /** Monotonic committed document version, when supported by the loaded engine. */\n get version(): number | null {\n this.assertOpen();\n const value = this.exports.DocxSessionBridge.GetVersion?.(this.handle);\n return value ? (JSON.parse(value) as { version: number }).version : null;\n }\n\n /** Release the underlying WASM session. The editor is unusable afterward. */\n close(): void {\n if (this.closed) return;\n this.closed = true;\n if (typeof document !== \"undefined\") {\n document.removeEventListener(\"selectionchange\", this.onSelectionChange);\n document.removeEventListener(\"mousedown\", this.onMouseDown, true);\n document.removeEventListener(\"mousemove\", this.onMouseMove, true);\n document.removeEventListener(\"mouseup\", this.onMouseUp, true);\n }\n this.clearDragSelection();\n this.clearFindMatches();\n this.teardownBlockDrag();\n this.gutter?.dispose();\n this.gutter = null;\n this.region?.detachPages();\n this.viewport.dispose();\n this.exports.DocxSessionBridge.CloseSession(this.handle);\n }\n\n /**\n * Switch between continuous and paginated rendering WITHOUT losing edits. Re-renders from the\n * LIVE session, so every committed edit (and the undo/redo history) survives the toggle \u2014 unlike\n * re-opening the original bytes, which silently discards session edits. No-op if already `value`.\n */\n setPaginated(value: boolean): void {\n this.assertOpen();\n if (this.options.paginated === value) return;\n this.options.paginated = value;\n this.remount();\n }\n\n /** The editor's current DOM (for inspection/tests). */\n get root(): HTMLElement {\n return this.container;\n }\n\n /**\n * Move a fully rendered candidate into the host's stable public surface.\n * Internal editor chrome that binds directly to the container is recreated there;\n * document blocks and their listeners move with the DOM nodes.\n */\n adoptContainer(container: HTMLElement): void {\n this.assertOpen();\n if (container === this.container) return;\n this.teardownBlockDrag();\n this.gutter?.dispose();\n this.gutter = null;\n const previous = this.container;\n container.replaceChildren(...Array.from(previous.childNodes));\n this.container = container;\n this.viewport.adoptHost(container);\n this.setupBlockDrag();\n if (this.options.comments) this.createGutter();\n }\n\n /**\n * The zoom the viewport is currently applying (1 = 100%). Below 1 the page is wider than the\n * host and has been scaled to fit rather than reflowed \u2014 the honest thing to show a user who\n * is wondering why a phone shows the whole page.\n */\n get zoom(): number {\n return this.viewport.scale;\n }\n\n /**\n * The live `DocxSession` handle backing this editor \u2014 the model of record.\n *\n * Surfaced because chrome around the editor (the anchor rail) reports it as engine\n * state, and reaching into the private field from a host page only worked because\n * the bundle erases TypeScript's visibility.\n */\n get sessionHandle(): number {\n return this.handle;\n }\n\n /**\n * Repaint from the live session after it was mutated OUTSIDE the editor's own\n * commands \u2014 a host driving {@link sessionHandle} directly (an agent pipeline,\n * `raw.replaceXml`, a batch import). Continuous mode patches incrementally from\n * the render plan (a Unid-preserving single-block mutation repaints just that\n * block); paginated mode \u2014 or anything the reconciler cannot prove \u2014 remounts.\n * The editor cannot observe external mutations, so the host owns calling this\n * once per mutation batch.\n */\n refresh(): void {\n this.assertOpen();\n this.reconcile();\n }\n\n /** Move one top-level body block relative to another and repaint from the live session. */\n moveBlock(\n sourceAnchorId: string,\n targetAnchorId: string,\n position: \"before\" | \"after\",\n ): boolean {\n this.assertOpen();\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.MoveBlock !== \"function\") return false;\n const res = this.parseEdit(\n bridge.MoveBlock(this.handle, sourceAnchorId, targetAnchorId, position),\n );\n if (!res.success) {\n // The engine's message names an OOXML construct (\"a section-break paragraph\"); the live\n // region is read aloud, so announce the outcome and keep the raw reason for debugging.\n this.lastMoveError = res.error?.message ?? null;\n this.announceBlockMove(\"This block cannot be moved there.\");\n return false;\n }\n if (\n (res.created?.length ?? 0) === 0 &&\n (res.modified?.length ?? 0) === 0 &&\n (res.removed?.length ?? 0) === 0\n ) {\n this.announceBlockMove(\"The block is already in that position.\");\n return true;\n }\n\n const destination = res.created?.[0] ?? res.modified?.[0];\n // Both modes reconcile. A direct move relocates the existing element, so the reconciler moves\n // the exact DOM node it already has. Review rendering additionally rewrites the SOURCE in\n // place \u2014 it becomes the move-from half \u2014 and that is visible to the diff because the plan\n // signs every unit with a content hash, so the source diffs as an in-place substitution.\n // This used to remount, which on a real charter is seconds for a one-block change.\n this.reconcile();\n\n const moved = destination\n ? this.bodyUnitNodes().find((el) => el.getAttribute(\"data-anchor\") === destination.unid)\n : null;\n if (moved) {\n moved.classList.add(\"docx-block-move-flash\");\n moved.addEventListener(\"animationend\", () => moved.classList.remove(\"docx-block-move-flash\"), {\n once: true,\n });\n const focusTarget = EDITABLE_TAGS.has(moved.tagName)\n ? moved\n : moved.querySelector<HTMLElement>('[data-anchor][contenteditable=\"true\"]');\n if (focusTarget) {\n this.activeBlock = focusTarget;\n focusTarget.focus({ preventScroll: true });\n }\n }\n this.options.onMove?.({\n sourceAnchorId,\n destinationAnchorId: destination?.id ?? sourceAnchorId,\n });\n this.announceBlockMove(\"Block moved.\");\n return true;\n }\n\n /** Resolve any rendered descendant to its top-level body move unit (tables stay whole). */\n private blockUnitOf(target: EventTarget | Node | null): HTMLElement | null {\n const node = target instanceof Node ? target : null;\n const el = node?.nodeType === Node.ELEMENT_NODE\n ? node as HTMLElement\n : node?.parentElement;\n if (!el || !this.editRoot.contains(el)) return null;\n // Climb rather than scan: this runs on every pointer move over the document, and listing\n // every anchored node to find the one containing the pointer is linear in the document.\n let unit: HTMLElement | null = null;\n for (\n let candidate = el.closest<HTMLElement>(\"[data-anchor]\");\n candidate && this.editRoot.contains(candidate);\n candidate = candidate.parentElement?.closest<HTMLElement>(\"[data-anchor]\") ?? null\n ) {\n unit = candidate;\n }\n if (!unit || unit.closest(\"section.footnotes, section.endnotes\")) return null;\n return unit;\n }\n\n private isMovableBlockUnit(unit: HTMLElement | null): unit is HTMLElement {\n if (!unit || !this.anchorIdOf(unit)) return false;\n // A source representation of an existing tracked move/deletion is evidence, not a new\n // editable block. Its accepted counterpart remains draggable.\n if (unit.matches(\"[class$='row-del'], [class*='row-del ']\") ||\n unit.querySelector(\"tr[class$='row-del'], tr[class*='row-del '], del[class$='move-from'], del[class*='move-from ']\")\n ) return false;\n return unit.tagName === \"TABLE\" || EDITABLE_TAGS.has(unit.tagName);\n }\n\n private currentBlockDragSource(): HTMLElement | null {\n if (this.isMovableBlockUnit(this.blockDragSource) && this.blockDragSource.isConnected)\n return this.blockDragSource;\n const fromActive = this.blockUnitOf(this.activeBlock);\n if (this.isMovableBlockUnit(fromActive)) {\n this.blockDragSource = fromActive;\n return fromActive;\n }\n return null;\n }\n\n /**\n * The rectangle the floating handle may occupy: the window, narrowed by every ancestor that\n * clips its overflow.\n *\n * The handle is `position: fixed`, so it is placed in viewport coordinates and no ancestor's\n * overflow clips it for us. But the editor is routinely mounted inside a bounded scroller \u2014\n * the ribbon puts its surface in one, inside a clipped card \u2014 and a block scrolled out of that\n * scroller has to take its handle with it rather than leave it parked over the host's chrome.\n *\n * Gated on the computed `overflow` rather than on whether an element scrolls right now, so the\n * answer does not depend on how much content happens to be loaded.\n */\n private blockHandleClipRect(): { top: number; right: number; bottom: number; left: number } {\n const view = this.container.ownerDocument.defaultView;\n const clip = {\n top: 0,\n left: 0,\n right: view?.innerWidth ?? Number.MAX_SAFE_INTEGER,\n bottom: view?.innerHeight ?? Number.MAX_SAFE_INTEGER,\n };\n for (let el: HTMLElement | null = this.editRoot; el; el = el.parentElement) {\n const style = view?.getComputedStyle(el);\n if (!style || (style.overflowX === \"visible\" && style.overflowY === \"visible\")) continue;\n const box = el.getBoundingClientRect();\n if (style.overflowY !== \"visible\") {\n clip.top = Math.max(clip.top, box.top);\n clip.bottom = Math.min(clip.bottom, box.bottom);\n }\n if (style.overflowX !== \"visible\") {\n clip.left = Math.max(clip.left, box.left);\n clip.right = Math.min(clip.right, box.right);\n }\n }\n return clip;\n }\n\n private showBlockHandle(unit: HTMLElement): void {\n const handle = this.blockDragHandle;\n if (!handle || !this.isMovableBlockUnit(unit)) return;\n const changed = unit !== this.blockDragSource;\n this.blockDragSource = unit;\n this.blockHandleWanted = true;\n // A block the engine will not move anywhere \u2014 one owning a section break, or already carrying\n // revision markup a tracked move would have to re-wrap \u2014 gets no handle rather than a handle\n // that always fails. Asking costs an engine round trip, so hovering only ever CONSUMES a\n // cached answer and schedules the ask for idle time; the drag start and the menu ask for\n // real. Merely moving the pointer across the document must not run document-scale work.\n const known = this.blockMoveTargetsFor(unit, { cachedOnly: true });\n if (known?.size === 0) {\n handle.style.display = \"none\";\n return;\n }\n if (changed && known === undefined) this.prefetchBlockMoveTargets(unit);\n const rect = unit.getBoundingClientRect();\n // The handle belongs to the editor's viewport, not the window's. A block scrolled out of that\n // viewport gets no handle at all: clamping one back into view would leave a grip sitting next\n // to a block that is not there \u2014 and clamping to the WINDOW, as this used to, parked it on\n // whatever chrome the host draws above the editor.\n const clip = this.blockHandleClipRect();\n if (\n rect.bottom <= clip.top || rect.top >= clip.bottom\n || rect.right <= clip.left || rect.left >= clip.right\n ) {\n // A gesture in flight owns the handle: it is the drag's own source element, and an open\n // move menu is anchored to it and hands focus back to it on Escape. Withdrawing it\n // mid-gesture is the same mistake as leaving it behind \u2014 mirror `hideBlockHandle`'s guard\n // and leave it where the gesture put it.\n if (!this.blockDragging && this.blockMoveMenu?.style.display !== \"block\")\n handle.style.display = \"none\";\n return;\n }\n handle.style.display = \"flex\";\n // A block only partly in view keeps its handle, pulled to the edge it is disappearing past.\n const top = rect.top\n + (unit.tagName === \"TABLE\" ? 6 : Math.max(0, (rect.height - BLOCK_HANDLE_HEIGHT) / 2));\n handle.style.left = `${clampToRange(\n rect.left - (BLOCK_HANDLE_WIDTH + BLOCK_HANDLE_GAP),\n clip.left,\n clip.right - BLOCK_HANDLE_WIDTH,\n )}px`;\n handle.style.top = `${clampToRange(top, clip.top, clip.bottom - BLOCK_HANDLE_HEIGHT)}px`;\n const preview = blockPreviewText(unit);\n handle.setAttribute(\"aria-label\", preview ? `Move block: ${preview}` : \"Move block\");\n }\n\n private hideBlockHandle(): void {\n if (this.blockDragging || this.blockMoveMenu?.style.display === \"block\") return;\n this.blockHandleWanted = false;\n if (this.blockDragHandle) this.blockDragHandle.style.display = \"none\";\n }\n\n private positionBlockHandle(): void {\n const source = this.currentBlockDragSource();\n if (source && this.blockHandleWanted) this.showBlockHandle(source);\n }\n\n /** Draw the drop line on `zone`'s requested edge, or take it away when there is no target. */\n private paintDropIndicator(data: Record<string | symbol, unknown>): void {\n const indicator = this.blockDropIndicator;\n const zone = data.zone as BlockDropZone | undefined;\n if (!indicator) return;\n if (!zone) {\n this.hideDropIndicator();\n return;\n }\n const y = Math.round(this.dropEdgeY(zone, data.position === \"after\" ? \"after\" : \"before\")\n + this.dropZoneShift()) - 1;\n // Position before revealing, so the entry fade never plays at a stale spot.\n indicator.style.transform = `translate3d(${Math.round(zone.left)}px, ${y}px, 0)`;\n indicator.style.width = `${Math.max(24, Math.round(zone.width))}px`;\n indicator.style.display = \"block\";\n }\n\n /**\n * Where to draw the line for an insertion on `position` of `zone` \u2014 the MIDDLE of the gap to\n * the neighbour on that side, not the zone's own border-box edge. A paragraph's `w:spacing`\n * becomes a CSS margin, which sits outside the box, so drawing on the edge underlines the\n * block's last line instead of reading as a gap between two blocks. Falls back to the raw edge\n * at the ends of the flow, and degrades to the same value when blocks are contiguous.\n */\n private dropEdgeY(zone: BlockDropZone, position: \"before\" | \"after\"): number {\n const neighbour = this.dropZones[zone.index + (position === \"after\" ? 1 : -1)];\n // At the ends of the flow there is nothing to bisect against, so half the block's own\n // margin stands in for half the gap \u2014 the same position, one contributor instead of two.\n if (!neighbour) {\n return position === \"after\"\n ? zone.bottom + zone.marginAfter / 2\n : zone.top - zone.marginBefore / 2;\n }\n return position === \"after\"\n ? (zone.bottom + neighbour.top) / 2\n : (neighbour.bottom + zone.top) / 2;\n }\n\n private hideDropIndicator(): void {\n if (this.blockDropIndicator) this.blockDropIndicator.style.display = \"none\";\n }\n\n private announceBlockMove(message: string): void {\n const live = this.blockMoveLive;\n if (!live) return;\n live.textContent = \"\";\n this.container.ownerDocument.defaultView?.setTimeout(() => { live.textContent = message; }, 0);\n }\n\n /**\n * Ask the engine which anchors the current source may move next to. One call per drag source,\n * so the UI offers only drops MoveBlock will accept \u2014 a document with section breaks is\n * partitioned into regions, and drawing an indicator across one only to fail the drop was the\n * behaviour this replaces. Null (no bridge support) keeps the previous offer-everything path.\n */\n private refreshBlockMoveTargets(source: HTMLElement | null): void {\n this.blockMoveTargets = source ? this.blockMoveTargetsFor(source) ?? null : null;\n }\n\n /**\n * This block's legal destinations, from the memo when it is there. Returns `undefined` \u2014 not\n * `null` \u2014 for \"not asked yet\", so a caller can tell an unknown answer from the engine's\n * \"no bridge support, offer everything\" one.\n */\n private blockMoveTargetsFor(\n source: HTMLElement,\n options: { cachedOnly?: boolean } = {},\n ): Map<string, { before: boolean; after: boolean }> | null | undefined {\n const bridge = this.exports.DocxSessionBridge;\n const sourceId = this.anchorIdOf(source);\n if (!sourceId || typeof bridge.ValidMoveTargets !== \"function\") return null;\n if (this.blockMoveTargetCache.has(sourceId)) return this.blockMoveTargetCache.get(sourceId);\n if (options.cachedOnly) return undefined;\n\n let targets: Map<string, { before: boolean; after: boolean }> | null;\n try {\n const parsed = JSON.parse(bridge.ValidMoveTargets(this.handle, sourceId)) as Array<\n { anchorId: string; before: boolean; after: boolean }\n >;\n targets = new Map(parsed.map((t) => [t.anchorId, { before: t.before, after: t.after }]));\n } catch {\n targets = null;\n }\n this.blockMoveTargetCache.set(sourceId, targets);\n return targets;\n }\n\n /**\n * Ask for the hovered block's destinations off the interaction path, and hide the handle if\n * the answer comes back empty and that block is still the one under the pointer. The handle\n * therefore appears immediately on hover and withdraws a beat later on the rare immovable\n * block, instead of every hover paying for the query up front.\n */\n private prefetchBlockMoveTargets(source: HTMLElement): void {\n const view = this.container.ownerDocument.defaultView;\n if (!view) return;\n this.blockMoveTargetPrefetch?.();\n const run = (): void => {\n this.blockMoveTargetPrefetch = null;\n // The pointer has moved on (or the DOM was repainted) \u2014 the answer is no longer wanted.\n if (this.closed || !source.isConnected || this.blockDragSource !== source) return;\n if (this.blockMoveTargetsFor(source)?.size === 0 && this.blockDragHandle)\n this.blockDragHandle.style.display = \"none\";\n };\n const idle = (view as unknown as {\n requestIdleCallback?: (cb: () => void, opts?: { timeout: number }) => number;\n cancelIdleCallback?: (id: number) => void;\n });\n if (idle.requestIdleCallback && idle.cancelIdleCallback) {\n const id = idle.requestIdleCallback(run, { timeout: 500 });\n this.blockMoveTargetPrefetch = () => idle.cancelIdleCallback!(id);\n } else {\n const id = view.setTimeout(run, 0);\n this.blockMoveTargetPrefetch = () => view.clearTimeout(id);\n }\n }\n\n /**\n * Whether `unit` is a legal destination for the current drag source \u2014 for a SPECIFIC side when\n * one is given. A cross-block range or a section break between the blocks can make one side\n * legal and the other not, so \"this target is reachable\" is not enough to pick a position.\n */\n private isValidMoveTarget(unit: HTMLElement, position?: \"before\" | \"after\"): boolean {\n if (!this.blockMoveTargets) return true; // no bridge support: engine stays the only gate\n const id = this.anchorIdOf(unit);\n const sides = id ? this.blockMoveTargets.get(id) : undefined;\n if (!sides) return false;\n return position ? sides[position] : sides.before || sides.after;\n }\n\n /** Measure every movable block once, at drag start. See `BlockDropZone`. */\n private captureDropZones(): void {\n const view = this.container.ownerDocument.defaultView;\n this.dropZoneScroller = this.scrollContainer();\n this.dropZoneOrigin = this.scrollOffsetSum();\n this.dropZones = [];\n const boxes: HTMLElement[] = [];\n for (const unit of this.bodyUnitNodes()) {\n const anchorId = this.isMovableBlockUnit(unit) ? this.anchorIdOf(unit) : null;\n if (!anchorId) continue;\n const box = this.unitWrapperOf(unit);\n const rect = box.getBoundingClientRect();\n boxes.push(box);\n this.dropZones.push({\n unit, anchorId, index: this.dropZones.length,\n top: rect.top, bottom: rect.bottom, left: rect.left, width: rect.width,\n marginBefore: 0, marginAfter: 0,\n });\n }\n // Only the flow's two ends ever consult a margin, so only they are worth a style read.\n const ends = new Set([0, this.dropZones.length - 1].filter((i) => i >= 0 && i < boxes.length));\n for (const i of ends) {\n const style = view?.getComputedStyle(boxes[i]);\n this.dropZones[i].marginBefore = parseFloat(style?.marginTop ?? \"0\") || 0;\n this.dropZones[i].marginAfter = parseFloat(style?.marginBottom ?? \"0\") || 0;\n }\n }\n\n private scrollOffsetSum(): number {\n const view = this.container.ownerDocument.defaultView;\n return (view?.scrollY ?? 0) + (this.dropZoneScroller?.scrollTop ?? 0);\n }\n\n /** How far the measured boxes have travelled since capture, from scrolling (drag autoscroll). */\n private dropZoneShift(): number {\n return this.dropZoneOrigin - this.scrollOffsetSum();\n }\n\n /**\n * Where a drop at `clientY` lands, or null when nothing there is legal.\n *\n * Resolution is by VERTICAL GEOMETRY over the measured blocks, not by which element the pointer\n * is over: the drag handle floats in the page margin, so a drag straight down the gutter \u2014 the\n * natural gesture \u2014 never crosses a paragraph box, and element hit testing gave those drags no\n * indicator and no drop at all. The nearest block by vertical distance is the target; the half\n * the pointer is in picks the side, snapped to the other side when only that one is legal\n * (a section break or a cross-block range usually makes exactly one side illegal). When neither\n * side is legal \u2014 the pointer is in a region this block cannot reach \u2014 there is no drop, and\n * nothing is drawn.\n */\n private resolveDropAt(clientY: number): { zone: BlockDropZone; position: \"before\" | \"after\" } | null {\n const y = clientY - this.dropZoneShift();\n let best: BlockDropZone | null = null;\n let bestGap = Infinity;\n for (const zone of this.dropZones) {\n const gap = y < zone.top ? zone.top - y : y > zone.bottom ? y - zone.bottom : 0;\n if (gap < bestGap) {\n best = zone;\n bestGap = gap;\n }\n if (gap === 0) break; // inside this block; zones are in document order and never overlap\n }\n if (!best || best.unit === this.blockDragSource) return null;\n const preferred = y < (best.top + best.bottom) / 2 ? \"before\" : \"after\";\n if (this.isValidMoveTarget(best.unit, preferred)) return { zone: best, position: preferred };\n const other = preferred === \"before\" ? \"after\" : \"before\";\n return this.isValidMoveTarget(best.unit, other) ? { zone: best, position: other } : null;\n }\n\n private closeBlockMoveMenu(restoreFocus = false): void {\n if (!this.blockMoveMenu || !this.blockDragHandle) return;\n this.blockMoveMenu.style.display = \"none\";\n this.blockDragHandle.setAttribute(\"aria-expanded\", \"false\");\n this.blockDragHandle.setAttribute(\"aria-pressed\", \"false\");\n if (restoreFocus) this.blockDragHandle.focus({ preventScroll: true });\n }\n\n private openBlockMoveMenu(): void {\n const menu = this.blockMoveMenu;\n const handle = this.blockDragHandle;\n const source = this.currentBlockDragSource();\n if (!menu || !handle || !source) return;\n this.refreshBlockMoveTargets(source);\n menu.querySelectorAll<HTMLButtonElement>(\"button[data-move]\").forEach((button) => {\n button.disabled = !this.blockMoveDestination(source, button.dataset.move ?? \"\");\n });\n const rect = handle.getBoundingClientRect();\n menu.style.display = \"block\";\n menu.style.left = `${Math.max(4, rect.right + 6)}px`;\n menu.style.top = `${Math.max(4, rect.top)}px`;\n handle.setAttribute(\"aria-expanded\", \"true\");\n handle.setAttribute(\"aria-pressed\", \"true\");\n menu.querySelector<HTMLButtonElement>(\"button:not(:disabled)\")?.focus({ preventScroll: true });\n }\n\n /**\n * Resolve a move-menu action to the block it should land against, considering only destinations\n * the engine accepts. \"Top\"/\"bottom\" therefore mean the ends of the source's own movable region\n * \u2014 on a document with section breaks that is the section, not the document, which is what makes\n * the commands work at all there instead of always failing.\n */\n private blockMoveDestination(\n source: HTMLElement,\n action: string,\n ): { target: HTMLElement; position: \"before\" | \"after\" } | null {\n const units = this.bodyUnitNodes().filter((el) => this.isMovableBlockUnit(el));\n const index = units.indexOf(source);\n if (index < 0) return null;\n\n // Only pairs the engine accepts: a target can be reachable on one side and refused on the\n // other, so the SIDE is part of what makes a candidate valid.\n const position: \"before\" | \"after\" = action === \"up\" || action === \"top\" ? \"before\" : \"after\";\n const side = position === \"before\" ? units.slice(0, index) : units.slice(index + 1);\n const candidates = side.filter((el) => this.isValidMoveTarget(el, position));\n if (candidates.length === 0) return null;\n\n if (action === \"up\") return { target: candidates[candidates.length - 1], position };\n if (action === \"down\") return { target: candidates[0], position };\n if (action === \"top\") return { target: candidates[0], position };\n if (action === \"bottom\") return { target: candidates[candidates.length - 1], position };\n return null;\n }\n\n private runBlockMoveMenuAction(action: string): void {\n const source = this.currentBlockDragSource();\n if (!source) return;\n const destination = this.blockMoveDestination(source, action);\n this.closeBlockMoveMenu();\n if (!destination) return;\n const sourceId = this.anchorIdOf(source);\n const targetId = this.anchorIdOf(destination.target);\n if (sourceId && targetId) this.moveBlock(sourceId, targetId, destination.position);\n }\n\n /** The nearest ancestor that actually scrolls the document flow, for drag autoscroll. */\n private scrollContainer(): HTMLElement | null {\n const view = this.container.ownerDocument.defaultView;\n for (let el: HTMLElement | null = this.editRoot; el; el = el.parentElement) {\n const overflowY = view?.getComputedStyle(el).overflowY ?? \"visible\";\n if ((overflowY === \"auto\" || overflowY === \"scroll\") && el.scrollHeight > el.clientHeight)\n return el;\n }\n return null;\n }\n\n /** Mount one floating handle; PDD owns pointer dragging while the menu owns keyboard moves. */\n private setupBlockDrag(): void {\n if (!this.options.blockDrag || this.options.paginated || this.closed || this.blockDragHandle)\n return;\n const doc = this.container.ownerDocument;\n ensureBlockDragStyles(doc);\n\n const handle = doc.createElement(\"div\");\n handle.className = \"docx-block-handle\";\n handle.textContent = \"\u283F\";\n handle.tabIndex = 0;\n handle.setAttribute(\"role\", \"button\");\n handle.setAttribute(\"contenteditable\", \"false\");\n handle.setAttribute(\"aria-haspopup\", \"menu\");\n handle.setAttribute(\"aria-expanded\", \"false\");\n handle.setAttribute(\"aria-pressed\", \"false\");\n\n const indicator = doc.createElement(\"div\");\n indicator.className = \"docx-block-drop-indicator\";\n const menu = doc.createElement(\"div\");\n menu.className = \"docx-block-move-menu\";\n menu.setAttribute(\"role\", \"menu\");\n menu.innerHTML = `\n <button type=\"button\" role=\"menuitem\" data-move=\"up\">Move up</button>\n <button type=\"button\" role=\"menuitem\" data-move=\"down\">Move down</button>\n <button type=\"button\" role=\"menuitem\" data-move=\"top\">Move to top</button>\n <button type=\"button\" role=\"menuitem\" data-move=\"bottom\">Move to bottom</button>`;\n const live = doc.createElement(\"div\");\n live.className = \"docx-block-live-region\";\n live.setAttribute(\"role\", \"status\");\n live.setAttribute(\"aria-live\", \"polite\");\n this.container.append(handle, indicator, menu, live);\n this.blockDragHandle = handle;\n this.blockDropIndicator = indicator;\n this.blockMoveMenu = menu;\n this.blockMoveLive = live;\n\n const onPointerMove = (event: PointerEvent): void => {\n // Keep the floating draggable stationary between pointerdown and native dragstart.\n // Repositioning it under the pointer during the browser's drag threshold cancels\n // drag initiation before PDD can receive dragstart.\n if (this.blockDragging || this.blockDragPointerDown) return;\n const unit = this.blockUnitOf(event.target);\n if (this.isMovableBlockUnit(unit)) this.showBlockHandle(unit);\n };\n const onFocusIn = (event: FocusEvent): void => {\n const unit = this.blockUnitOf(event.target);\n if (this.isMovableBlockUnit(unit)) this.showBlockHandle(unit);\n };\n const onPointerLeave = (event: PointerEvent): void => {\n const next = event.relatedTarget instanceof Node ? event.relatedTarget : null;\n if (next && (handle.contains(next) || menu.contains(next))) return;\n this.hideBlockHandle();\n };\n const onViewportChange = (): void => this.positionBlockHandle();\n this.container.addEventListener(\"pointermove\", onPointerMove);\n this.container.addEventListener(\"focusin\", onFocusIn);\n this.container.addEventListener(\"pointerleave\", onPointerLeave);\n doc.addEventListener(\"scroll\", onViewportChange, true);\n doc.defaultView?.addEventListener(\"resize\", onViewportChange);\n this.blockDragCleanup.push(\n () => this.container.removeEventListener(\"pointermove\", onPointerMove),\n () => this.container.removeEventListener(\"focusin\", onFocusIn),\n () => this.container.removeEventListener(\"pointerleave\", onPointerLeave),\n () => doc.removeEventListener(\"scroll\", onViewportChange, true),\n () => doc.defaultView?.removeEventListener(\"resize\", onViewportChange),\n );\n\n const onHandleClick = (): void => {\n if (menu.style.display === \"block\") this.closeBlockMoveMenu();\n else this.openBlockMoveMenu();\n };\n const onHandlePointerDown = (): void => { this.blockDragPointerDown = true; };\n const onPointerUp = (): void => { this.blockDragPointerDown = false; };\n const onHandleKeydown = (event: KeyboardEvent): void => {\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n onHandleClick();\n };\n const onMenuClick = (event: MouseEvent): void => {\n const button = (event.target as Element | null)?.closest<HTMLButtonElement>(\"button[data-move]\");\n if (button && !button.disabled) this.runBlockMoveMenuAction(button.dataset.move ?? \"\");\n };\n const onMenuKeydown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") { event.preventDefault(); this.closeBlockMoveMenu(true); }\n };\n handle.addEventListener(\"click\", onHandleClick);\n handle.addEventListener(\"pointerdown\", onHandlePointerDown);\n handle.addEventListener(\"keydown\", onHandleKeydown);\n menu.addEventListener(\"click\", onMenuClick);\n menu.addEventListener(\"keydown\", onMenuKeydown);\n doc.addEventListener(\"pointerup\", onPointerUp, true);\n doc.addEventListener(\"pointercancel\", onPointerUp, true);\n this.blockDragCleanup.push(\n () => handle.removeEventListener(\"click\", onHandleClick),\n () => handle.removeEventListener(\"pointerdown\", onHandlePointerDown),\n () => handle.removeEventListener(\"keydown\", onHandleKeydown),\n () => menu.removeEventListener(\"click\", onMenuClick),\n () => menu.removeEventListener(\"keydown\", onMenuKeydown),\n () => doc.removeEventListener(\"pointerup\", onPointerUp, true),\n () => doc.removeEventListener(\"pointercancel\", onPointerUp, true),\n );\n\n this.blockDragCleanup.push(draggable({\n element: handle,\n canDrag: () => !!this.currentBlockDragSource(),\n getInitialData: () => {\n const source = this.currentBlockDragSource();\n return { type: BLOCK_DRAG_TYPE, sourceAnchorId: source ? this.anchorIdOf(source) : undefined };\n },\n // The browser would otherwise ghost the 26px grip, which says nothing about what is moving.\n onGenerateDragPreview: ({ nativeSetDragImage }) => {\n const source = this.currentBlockDragSource();\n setCustomNativeDragPreview({\n nativeSetDragImage,\n getOffset: pointerOutsideOfPreview({ x: \"14px\", y: \"10px\" }),\n render: ({ container }) => {\n const chip = doc.createElement(\"div\");\n chip.className = \"docx-block-drag-preview\";\n chip.textContent = (source && blockPreviewText(source)) || \"Move block\";\n container.appendChild(chip);\n return () => chip.remove();\n },\n });\n },\n onDragStart: () => {\n const source = this.currentBlockDragSource();\n this.blockDragging = true;\n handle.classList.add(\"docx-block-dragging\");\n // After the preview snapshot, so the chip is not dimmed too.\n source?.classList.add(\"docx-block-drag-source\");\n this.closeBlockMoveMenu();\n this.refreshBlockMoveTargets(source);\n this.captureDropZones();\n },\n onDrop: () => {\n this.blockDragging = false;\n this.blockDragPointerDown = false;\n this.dropZones = [];\n handle.classList.remove(\"docx-block-dragging\");\n // Cleared by selector rather than from a captured reference: a completed move may have\n // re-rendered the block, and the node that carries the class outlives either handle on it.\n doc.querySelectorAll(\".docx-block-drag-source\")\n .forEach((el) => el.classList.remove(\"docx-block-drag-source\"));\n this.hideDropIndicator();\n },\n }));\n // ONE drop target for the whole flow. Which block a drop belongs to is decided by\n // `resolveDropAt` from the pointer's vertical position, so the gutter the handle is dragged\n // down counts as being over the document \u2014 see that method.\n this.blockDragCleanup.push(dropTargetForElements({\n element: this.editRoot,\n canDrop: ({ source }) => source.data.type === BLOCK_DRAG_TYPE,\n getData: ({ input }) => {\n const hit = this.resolveDropAt(input.clientY);\n return hit\n ? { type: BLOCK_DRAG_TYPE, targetAnchorId: hit.zone.anchorId, position: hit.position, zone: hit.zone }\n : { type: BLOCK_DRAG_TYPE };\n },\n onDragEnter: ({ self }) => this.paintDropIndicator(self.data),\n onDrag: ({ self }) => this.paintDropIndicator(self.data),\n onDragLeave: () => this.hideDropIndicator(),\n }));\n this.blockDragCleanup.push(monitorForElements({\n canMonitor: ({ source }) => source.data.type === BLOCK_DRAG_TYPE,\n onDrop: ({ source, location }) => {\n this.hideDropIndicator();\n const drop = location.current.dropTargets[0]?.data;\n const sourceId = source.data.sourceAnchorId;\n const targetId = drop?.targetAnchorId;\n const position = drop?.position === \"after\" ? \"after\" : \"before\";\n if (typeof sourceId === \"string\" && typeof targetId === \"string\")\n this.moveBlock(sourceId, targetId, position);\n else\n // Released outside any valid target. Say so \u2014 a silent no-op reads as a broken drag.\n this.announceBlockMove(\"Move cancelled \u2014 the block was not dropped on a valid position.\");\n },\n }));\n // Register on the element that actually scrolls. editRoot is the document flow \u2014 in the\n // ribbon surface the scroller is an ancestor of it, and registering the flow made Pragmatic\n // log \"attached to an element that appears not to be scrollable\" on every document open\n // while doing nothing.\n const scroller = this.scrollContainer();\n if (scroller) {\n this.blockDragCleanup.push(autoScrollForElements({\n element: scroller,\n canScroll: ({ source }) => source.data.type === BLOCK_DRAG_TYPE,\n getAllowedAxis: () => \"vertical\",\n }));\n }\n this.blockDragCleanup.push(autoScrollWindowForElements({\n canScroll: ({ source }) => source.data.type === BLOCK_DRAG_TYPE,\n getAllowedAxis: () => \"vertical\",\n }));\n }\n\n private teardownBlockDrag(): void {\n this.blockMoveTargetPrefetch?.();\n this.blockMoveTargetPrefetch = null;\n this.blockMoveTargetCache.clear();\n this.dropZones = [];\n this.dropZoneScroller = null;\n for (const cleanup of this.blockDragCleanup.splice(0)) cleanup();\n this.blockDragHandle?.remove();\n this.blockDropIndicator?.remove();\n this.blockMoveMenu?.remove();\n this.blockMoveLive?.remove();\n this.blockDragHandle = null;\n this.blockDropIndicator = null;\n this.blockMoveMenu = null;\n this.blockMoveLive = null;\n this.blockDragSource = null;\n this.blockHandleWanted = false;\n this.blockDragging = false;\n this.blockDragPointerDown = false;\n }\n\n // \u2500\u2500\u2500 internals \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n private assertOpen(): void {\n if (this.closed) throw new Error(\"DocxEditor is closed\");\n }\n\n /**\n * Rebuild unid \u2192 full-anchor-id from the live session projection.\n *\n * Unids are CONTENT-ADDRESSED, so blocks with identical content in DIFFERENT parts collide \u2014\n * e.g. a document with empty default/first/even header stories has one unid for several\n * header parts. A collision must resolve to the BODY entry: body blocks carry only\n * `data-anchor` (the bare unid) and have nothing else to resolve through, whereas a\n * header/footer band block carries its full anchor in `data-hf-anchor` and is resolved from\n * that (see `anchorIdOf`). Letting a non-body scope win here would silently redirect a body\n * edit into a header part.\n */\n private refreshAnchorMap(): void {\n const bridge = this.exports.DocxSessionBridge;\n // ListAnchors returns the same {anchorIndex} object WITHOUT the markdown payload \u2014\n // marshaling the full projection (a couple hundred KB on a real document) made\n // this refresh the single biggest term of every incremental repaint.\n const raw =\n typeof bridge.ListAnchors === \"function\"\n ? bridge.ListAnchors(this.handle)\n : bridge.Project(this.handle);\n const proj = JSON.parse(raw) as {\n anchorIndex: Record<string, AnchorTargetLite>;\n };\n this.unidToFullId.clear();\n const bodyOwned = new Set<string>();\n for (const [fullId, target] of Object.entries(proj.anchorIndex)) {\n const isBody = target.scope === \"body\";\n if (!isBody && bodyOwned.has(target.unid)) continue;\n this.unidToFullId.set(target.unid, fullId);\n if (isBody) bodyOwned.add(target.unid);\n }\n }\n\n /**\n * The full `kind:scope:unid` anchor for a rendered block. A header/footer band block carries\n * its own \u2014 the unid map cannot disambiguate one, since several parts' story paragraphs can\n * share a content-addressed unid (a real Word document with empty default/first/even stories\n * does exactly that, and a unid-keyed lookup would land the edit in the wrong header part).\n */\n private anchorIdOf(el: HTMLElement): string | undefined {\n const stamped = el.getAttribute(\"data-hf-anchor\");\n if (stamped) return stamped;\n const unid = el.getAttribute(\"data-anchor\");\n return unid ? this.unidToFullId.get(unid) : undefined;\n }\n\n /** Build the header/footer region (called once, before the first mount). */\n private createRegion(): void {\n this.region = new HeaderFooterRegion(\n this.exports.DocxSessionBridge,\n this.handle,\n {\n wireBlock: (el) => this.wireBlock(el),\n renderBlock: (anchorId) => this.renderInto(anchorId),\n refreshAnchorMap: () => this.refreshAnchorMap(),\n bodyAnchorIdOf: (unid) => this.unidToFullId.get(unid),\n remount: () => {\n if (!this.closed) this.remount();\n },\n onActiveChange: (_host, which) => {\n this.activeStory = which;\n this.options.onStoryChange?.(which);\n },\n },\n );\n }\n\n /** Build the comment gutter over the container (called once, after the first mount). */\n private createGutter(): void {\n ensureCommentGutterStyles(this.container.ownerDocument);\n this.gutter = new CommentGutter(\n {\n container: this.container,\n commentAuthor: this.options.commentAuthor,\n listComments: () => this.listComments(),\n addComment: (markdown, author, target) => this.addComment(markdown, author, target),\n addCommentReply: (parent, markdown, author) => this.addCommentReply(parent, markdown, author),\n updateComment: (anchorId, markdown) => this.updateComment(anchorId, markdown),\n removeComment: (anchorId) => this.removeComment(anchorId),\n setCommentResolved: (anchorId, resolved) => this.setCommentResolved(anchorId, resolved),\n commentTarget: () => this.commentTarget(),\n },\n { onChange: (info) => this.options.onCommentsChange?.(info) },\n );\n }\n\n /**\n * Point the bands at the section governing the current focus (or the first body block).\n * Called after every mount, and on focus of a body block, so a multi-section document shows\n * the stories that actually apply where the caret is.\n */\n private syncRegionToBody(fromBlock?: HTMLElement): void {\n if (!this.region) return;\n const block = fromBlock ?? this.editableList()[0];\n const unid = block?.getAttribute(\"data-anchor\");\n const id = unid ? this.unidToFullId.get(unid) : undefined;\n this.region.syncToBody(id ?? null);\n }\n\n /**\n * Insert the bands around `bodyRoot` and make `bodyRoot` the edit root. Band blocks must stay\n * OUT of the edit root: `editableList()`/`blockIndex()` enumerate it to compute remount focus\n * indices, and band blocks in that list would shift every index.\n */\n private dockBands(bodyRoot: HTMLElement): void {\n if (!this.region) return;\n bodyRoot.before(this.region.headerBand);\n bodyRoot.after(this.region.footerBand);\n this.region.refreshAll();\n }\n\n /**\n * Continuous (non-paginated) mount: inject the converter's styles + body, wire blocks.\n *\n * The body always gets its own `.docx-body-flow` wrapper \u2014 not only when bands are docked.\n * It is the sheet: the element the viewport gives page geometry to and zooms, and the one\n * the bands dock around. Without it the container would have to be both the scrolling host\n * and the scaled page, which are different boxes.\n */\n private mountHtml(fullHtml: string): void {\n this.region?.detachPages();\n const parsed = new DOMParser().parseFromString(fullHtml, \"text/html\");\n const styles = Array.from(parsed.querySelectorAll(\"style\"))\n .map((s) => s.outerHTML)\n .join(\"\");\n this.container.innerHTML = styles;\n this.readoptGutter();\n const flow = document.createElement(\"div\");\n flow.className = \"docx-body-flow\";\n flow.innerHTML = parsed.body.innerHTML;\n this.container.appendChild(flow);\n this.editRoot = flow;\n if (this.options.editable) this.wireBlocks(flow);\n this.stampPlanState();\n if (this.region) this.dockBands(flow);\n this.viewport.attach(flow, true);\n }\n\n /** Paginated mount: flow blocks into page boxes via pagination.ts, wire the page clones. */\n private mountPaginated(fullHtml: string): void {\n this.region?.detachPages();\n // Pagination writes into its own wrapper so the container can also hold the comment gutter\n // (and so pagination's innerHTML reset can never eat it).\n this.container.innerHTML = \"\";\n this.readoptGutter();\n const target = document.createElement(\"div\");\n target.className = \"docx-body-flow\";\n this.container.appendChild(target);\n // Fragmented paragraphs intentionally have only one addressable head and\n // are therefore unsuitable for the editor's one-block editing model.\n paginateHtml(fullHtml, target, {\n scale: this.options.scale,\n cssPrefix: \"page-\",\n fragmentParagraphs: false,\n });\n // pagination.ts measures the hidden #pagination-staging subtree ONCE, then flows CLONES of its\n // blocks into the visible page boxes. Leaving staging in the live DOM is a trap: every\n // data-anchor exists twice (staging + page-box copy), so document.querySelector('[data-anchor]')\n // is ambiguous (hits the hidden copy first), and the staging copy goes stale because edits land\n // only on the page-box copy \u2014 a future reflow-from-staging would silently revert them. Staging\n // is a transient measurement scaffold; drop it so the page-box copies are the single source of\n // truth. A remount (setPaginated, list/undo edits) rebuilds staging fresh from the live session.\n this.container.querySelector(\"#pagination-staging, .page-staging\")?.remove();\n const pageRoot = target.querySelector<HTMLElement>(\"#pagination-container\") ?? target;\n this.editRoot = pageRoot;\n if (this.options.editable) this.wireBlocks(pageRoot);\n // The page boxes render their own header/footer margins as inert clones; the region turns\n // the clicked one into the live story in place (Word's edit-in-the-margin), so there is\n // still exactly one addressable node per story paragraph at any time.\n if (this.region) this.region.attachPages(pageRoot);\n // Page boxes already carry the section's dimensions, so the viewport contributes only the\n // fit zoom \u2014 a full page is far wider than a phone, and clipping it is not an option.\n this.viewport.attach(pageRoot, false);\n }\n\n private wireBlocks(root: HTMLElement): void {\n root.querySelectorAll<HTMLElement>(\"[data-anchor]\").forEach((el) => this.wireBlock(el));\n }\n\n private wireBlock(el: HTMLElement): void {\n if (!EDITABLE_TAGS.has(el.tagName)) return;\n if (\n el.closest(\"tr[class$='row-del'], tr[class*='row-del ']\") ||\n el.querySelector(\":scope > del[class$='move-from'], :scope > del[class*='move-from ']\")\n ) {\n el.setAttribute(\"contenteditable\", \"false\");\n return;\n }\n const unid = el.getAttribute(\"data-anchor\");\n // Only blocks the markdown projection addresses are editable via the text path. This INCLUDES\n // table-cell paragraphs (the projection indexes them), so cell text IS editable. Table-aware\n // key handling keeps structural edits safe while still providing Word-style cell navigation\n // (see onKeydown). Anything the projection does not index (unstamped content) stays read-only.\n // A band block is authoritative via its stamped `data-hf-anchor` even when the unid map\n // resolves that unid to a different part (content-addressed unids collide across parts).\n if (!unid || !this.anchorIdOf(el)) return;\n el.setAttribute(\"contenteditable\", \"true\");\n ensureListMarkerSeparator(el);\n // Generated chrome (list number/bullet, footnote/endnote citation markers, note backrefs) is\n // not editable content \u2014 keep the caret out so offsets stay aligned with the run text, and so\n // a citation marker can't be deleted directly (which would orphan its note definition).\n el.querySelectorAll<HTMLElement>(GENERATED_CHROME_SELECTOR)\n .forEach((m) => m.setAttribute(\"contenteditable\", \"false\"));\n // Page-number fields are atomic, and remember their cached result so per-page substitution\n // in the page view never shifts the offset space (see `fieldText`).\n adoptFields(el);\n // Baseline for the commit diff: CONTENT text (list markers + injected bidi marks excluded),\n // matching the session's flat run-text offset space.\n el.dataset.committedText = blockContentText(el);\n el.addEventListener(\"focus\", () => {\n this.activeBlock = el;\n // Follow the caret's section so a cover-page-plus-body document shows the stories that\n // actually apply. Focusing a BAND block must not re-sync: it has no governing section of\n // its own, and re-resolving would clobber the user's kind selection.\n if (this.region && !this.isBandBlock(el)) this.syncRegionToBody(el);\n this.region?.noteFocus(el);\n });\n el.addEventListener(\"blur\", () => this.commitBlock(el));\n el.addEventListener(\"input\", (ev) => noteTypedSpace(el, ev));\n el.addEventListener(\"keydown\", (ev) => this.onKeydown(el, ev as KeyboardEvent));\n // A band block re-rendered by an incremental swap is a fresh DOM node; re-adopt it (with the\n // anchor its caller already stamped) so the band chrome can still address it.\n const stamped = el.getAttribute(\"data-hf-anchor\");\n if (stamped && this.region?.contains(el)) this.region.adoptBlock(el, stamped);\n }\n\n /**\n * Replace `oldEl` with `newNodes`, suppressing the re-entrant blur\u2192commit that removing a focused\n * block fires (see `replacing`), AND tolerating the case where a synchronous blur during focus\n * transfer detaches `oldEl` between the caller's checks and here. `replaceWith` then throws\n * NotFoundError (\"node \u2026 no longer a child \u2026 moved in a blur event handler\") \u2014 `isConnected`\n * alone doesn't catch this race. The session is already updated, so a skipped/failed visual swap\n * leaves correct content (the typed DOM); the next commit or remount reconciles it. This is why\n * the catch is silent rather than rethrowing \u2014 there's no lost data, only a deferred re-render.\n * Returns true if the swap happened.\n */\n private replaceNode(oldEl: HTMLElement, ...newNodes: Node[]): boolean {\n const prev = this.replacing;\n this.replacing = true;\n try {\n if (!oldEl.parentNode) return false;\n oldEl.replaceWith(...newNodes);\n return true;\n } catch {\n return false;\n } finally {\n this.replacing = prev;\n }\n }\n\n /** Commit a block edit on blur: diff \u2192 run-preserving session op \u2192 re-render only this block. */\n private commitBlock(el: HTMLElement): void {\n if (this.closed || this.replacing) return;\n const unid = el.getAttribute(\"data-anchor\");\n if (!unid) return;\n const fullId = this.anchorIdOf(el);\n if (!fullId) return;\n\n const result = this.commitTextChange(el, fullId);\n if (!result) return; // no change\n if (!result.success) {\n this.restoreBlock(el, fullId);\n return;\n }\n\n const newAnchor = result.modified?.[0]?.id ?? fullId;\n const newUnid = result.modified?.[0]?.unid ?? unid;\n\n // List items: do NOT re-render on a text commit. Re-rendering replaces the node *during* the\n // blur, cancelling the browser's in-flight focus transfer when the user clicks straight to\n // another bullet; numbering also needs whole-document context a single-block render lacks. The\n // DOM already shows what the user typed with the correct marker \u2014 sync the baseline only.\n if (el.querySelector(\":scope > [data-list-marker]\")) {\n el.dataset.committedText = blockContentText(el);\n this.options.onEdit?.({ anchorId: newAnchor, unid: newUnid });\n return;\n }\n\n // Plain block: re-render ONLY this block from the live session for canonical HTML. Swapping the\n // just-blurred node here is safe (verified \u2014 focus stays on the newly-clicked block).\n const html = this.renderBlockHtml(newAnchor);\n if (html.charCodeAt(0) !== 0x7b /* not an error object */) {\n const fresh = new DOMParser().parseFromString(html, \"text/html\").body.firstElementChild as HTMLElement | null;\n const inBand = this.isBandBlock(el);\n if (fresh && this.replaceNode(el, fresh)) {\n // Band blocks resolve through `data-hf-anchor`; their unid can collide with another\n // part's, so writing it into the map would corrupt that entry (see anchorIdOf).\n if (inBand) {\n this.region!.adoptBlock(fresh, newAnchor);\n } else {\n this.unidToFullId.delete(unid);\n this.unidToFullId.set(newUnid, newAnchor);\n }\n this.wireBlock(fresh);\n if (this.activeBlock === el) this.activeBlock = fresh; // keep ribbon target valid\n // The throwaway render numbers citation markers from 1 \u2014 repair in place.\n this.maybeRenumberNotes(fresh);\n if (inBand) this.region!.afterStoryEdit(fresh);\n }\n }\n\n this.options.onEdit?.({ anchorId: newAnchor, unid: newUnid });\n }\n\n // \u2500\u2500\u2500 M2: structural editing \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n private onKeydown(el: HTMLElement, ev: KeyboardEvent): void {\n if (this.closed) return;\n // Common formatting / history shortcuts.\n if ((ev.ctrlKey || ev.metaKey) && !ev.altKey) {\n const k = ev.key.toLowerCase();\n const fmt: Record<string, FormatKey> = { b: \"bold\", i: \"italic\", u: \"underline\" };\n if (fmt[k]) { ev.preventDefault(); this.format(fmt[k]); return; }\n if (k === \"z\") { ev.preventDefault(); ev.shiftKey ? this.redo() : this.undo(); return; }\n if (k === \"y\") { ev.preventDefault(); this.redo(); return; }\n }\n // Inside a table cell, Backspace at the cell's start does not merge across the cell\n // boundary (mid-text Backspace still deletes normally). Enter splits the cell paragraph\n // WITHIN the same cell \u2014 the engine keeps the new w:p in the w:tc, so the grid is unchanged.\n // Tab navigation is handled explicitly below; at the final cell it uses the existing safe\n // whole-table row insertion path to match Word's add-a-row behavior.\n const inTableCell = !!el.closest(\"table\");\n\n // Plain Tab / Shift+Tab moves between table cells. Outside tables it retains list\n // nest/un-nest behavior. Modified Tab chords remain available to the browser/platform.\n if (ev.key === \"Tab\" && !ev.ctrlKey && !ev.metaKey && !ev.altKey && !ev.isComposing) {\n if (inTableCell) {\n ev.preventDefault();\n this.navigateTableCell(el, ev.shiftKey);\n return;\n }\n if (isListBlock(el)) {\n ev.preventDefault();\n this.activeBlock = el;\n this.setListLevel(ev.shiftKey ? -1 : 1);\n return;\n }\n }\n // Shift+Enter inserts an intra-paragraph line break (a real w:br on commit),\n // not a paragraph split. Deterministic across browsers and allowed in cells\n // (a line break changes no table structure).\n if (ev.key === \"Enter\" && ev.shiftKey && !ev.isComposing) {\n ev.preventDefault();\n this.insertLineBreakAtCaret();\n return;\n }\n if (ev.key === \"Enter\" && !ev.shiftKey && !ev.isComposing) {\n ev.preventDefault();\n // Splits at the caret \u2014 in a cell this stacks a second paragraph within the same\n // w:tc (grid unchanged); in the body it splits the paragraph as before.\n this.splitAtCaret(el);\n } else if (ev.key === \"Backspace\") {\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n if (sel && sel.isCollapsed && caretOffsetIn(el) === 0 && !inTableCell) {\n const prev = this.previousEditable(el);\n if (prev) {\n ev.preventDefault();\n this.mergeWithPrevious(prev, el);\n }\n }\n }\n }\n\n /** Editable cells in visual document order, excluding cells from any nested table. */\n private tableCellsFor(el: HTMLElement): { cells: HTMLElement[]; index: number } | null {\n const cell = el.closest<HTMLElement>(\"td, th\");\n const table = cell?.closest<HTMLTableElement>(\"table\");\n if (!cell || !table) return null;\n const cells = Array.from(table.querySelectorAll<HTMLElement>(\"td, th\"))\n .filter((candidate) => candidate.closest(\"table\") === table);\n const index = cells.indexOf(cell);\n return index >= 0 ? { cells, index } : null;\n }\n\n /** First addressable paragraph in a cell, fenced against nested-table descendants. */\n private editableInCell(cell: HTMLElement): HTMLElement | null {\n return Array.from(\n cell.querySelectorAll<HTMLElement>('[data-anchor][contenteditable=\"true\"]'),\n ).find((block) => block.closest(\"td, th\") === cell) ?? null;\n }\n\n /** Word-style cell navigation: Shift+Tab goes back, Tab goes forward, and Tab at the\n * final cell appends a row before entering its first cell. The first cell is a hard\n * boundary for Shift+Tab so focus never leaks out of the editor table. */\n private navigateTableCell(el: HTMLElement, backwards: boolean): void {\n const state = this.tableCellsFor(el);\n if (!state) return;\n const adjacent = state.cells[state.index + (backwards ? -1 : 1)];\n if (adjacent) {\n const target = this.editableInCell(adjacent);\n if (target) placeCaretAtOffset(target, 0);\n return;\n }\n if (backwards) return;\n\n // The current block may contain uncommitted typing. insertTableRow flushes it before the\n // structural edit, then reconcile/remount restores focus by block index. Resolve the new\n // adjacent cell from that fresh DOM rather than retaining a node from the replaced table.\n this.activeBlock = el;\n this.insertTableRow(\"below\");\n const fresh = this.activeBlock ? this.tableCellsFor(this.activeBlock) : null;\n if (!fresh) return;\n const target = fresh.cells[fresh.index + 1];\n const block = target ? this.editableInCell(target) : null;\n if (block) placeCaretAtOffset(block, 0);\n }\n\n /** Shift+Enter: insert an intra-paragraph line break at the caret. Delegates to the\n * native `insertLineBreak` command, which inserts a <br> AND positions the caret\n * after it correctly (handling the browser's bogus trailing-<br> rule) so typing\n * continues on the new line. Commits (on blur) as a w:br via the \" \\n\" hard break\n * the serializer emits for a <br>. */\n private insertLineBreakAtCaret(): void {\n if (typeof document !== \"undefined\" && typeof document.execCommand === \"function\") {\n document.execCommand(\"insertLineBreak\");\n }\n }\n\n /** Enter: split the block at the caret into two paragraphs. */\n private splitAtCaret(el: HTMLElement): void {\n const rawOffset = caretOffsetIn(el);\n const unid = el.getAttribute(\"data-anchor\");\n if (rawOffset == null || !unid) return;\n let fullId = this.anchorIdOf(el);\n if (!fullId) return;\n // The session commits trimmed text, so map the DOM caret offset into the trimmed run-text\n // offset (else an overshoot \u2014 e.g. a placeholder leading space \u2014 is rejected and Enter is lost).\n const offset = trimmedSplitOffset(el, rawOffset);\n\n const idx = this.blockIndex(el); // capture before the op (for list remount focus)\n // Whether this paragraph is rendered inside a border <div> \u2014 captured before the DOM mutates.\n const wrappedInBorder = inBorderWrapper(el);\n fullId = this.syncBlock(el, fullId); // flush any uncommitted typing first\n if (!fullId) return;\n const res = this.parseEdit(this.exports.DocxSessionBridge.SplitParagraph(this.handle, fullId, offset));\n if (!res.success) return;\n const first = res.modified?.[0];\n const second = res.created?.[0];\n if (!first || !second) return;\n\n // Splitting a list item makes a continuing list item, and splitting a bordered paragraph (e.g.\n // a horizontal rule) yields a new paragraph whose border status differs \u2014 both need a whole-\n // document re-render so numbering continues / border <div>s regroup correctly. An in-place node\n // swap would leave the new paragraph inside the old border div (the rule's line under its text).\n if (this.affectsList(res) || wrappedInBorder) {\n this.refreshAfter(el, idx + 1, false);\n this.options.onEdit?.({ anchorId: second.id, unid: second.unid });\n return;\n }\n\n const [firstEl, secondEl] = this.renderTwo(first.id, second.id);\n if (!firstEl || !secondEl) return;\n\n // el is the focused block \u2014 replaceNode guards the re-entrant blur\u2192commit and tolerates a\n // node detached mid-focus-transfer; replacing with both new blocks at once keeps them adjacent.\n const inBand = this.isBandBlock(el);\n if (!this.replaceNode(el, firstEl, secondEl)) return;\n // Band blocks resolve through `data-hf-anchor` (their unids can collide across parts).\n if (inBand) {\n this.region!.adoptBlock(firstEl, first.id);\n this.region!.adoptBlock(secondEl, second.id);\n } else {\n this.unidToFullId.delete(unid);\n this.unidToFullId.set(first.unid, first.id);\n this.unidToFullId.set(second.unid, second.id);\n }\n this.wireBlock(firstEl);\n this.wireBlock(secondEl);\n if (inBand) this.region!.afterStoryEdit(secondEl);\n placeCaretAtOffset(secondEl, 0);\n this.options.onEdit?.({ anchorId: second.id, unid: second.unid });\n }\n\n /** Backspace at block start: merge this block into the previous one. */\n private mergeWithPrevious(prev: HTMLElement, el: HTMLElement): void {\n const prevUnid = prev.getAttribute(\"data-anchor\");\n const thisUnid = el.getAttribute(\"data-anchor\");\n if (!prevUnid || !thisUnid) return;\n let prevId = this.anchorIdOf(prev);\n let thisId = this.anchorIdOf(el);\n if (!prevId || !thisId) return;\n\n const prevIdx = this.blockIndex(prev); // capture before the op\n // Either side rendered inside a border <div> means the merge changes border grouping \u2014 captured\n // before the DOM mutates so the post-merge branch can force a full re-render.\n const wrappedInBorder = inBorderWrapper(prev) || inBorderWrapper(el);\n prevId = this.syncBlock(prev, prevId);\n thisId = this.syncBlock(el, thisId);\n if (!prevId || !thisId) return;\n const caret = (prev.textContent ?? \"\").length; // merge boundary\n\n const res = this.parseEdit(this.exports.DocxSessionBridge.MergeParagraphs(this.handle, prevId, thisId));\n if (!res.success) return;\n const merged = res.modified?.[0];\n if (!merged) return;\n\n // Merging list items renumbers the list, and merging across a border <div> boundary changes the\n // border grouping \u2014 both need a whole-document re-render (caret at the merge boundary).\n if (this.affectsList(res) || wrappedInBorder) {\n this.refreshAfter(el, prevIdx, true);\n this.options.onEdit?.({ anchorId: merged.id, unid: merged.unid });\n return;\n }\n\n const mergedEl = this.renderInto(merged.id);\n if (!mergedEl) return;\n\n // prev may be focused \u2014 replaceNode guards re-entrancy and tolerates a detached node.\n const inBand = this.isBandBlock(prev);\n if (!this.replaceNode(prev, mergedEl)) return;\n el.remove();\n // Band blocks resolve through `data-hf-anchor` (their unids can collide across parts).\n if (inBand) {\n this.region!.adoptBlock(mergedEl, merged.id);\n } else {\n this.unidToFullId.delete(prevUnid);\n this.unidToFullId.delete(thisUnid);\n this.unidToFullId.set(merged.unid, merged.id);\n }\n this.wireBlock(mergedEl);\n if (inBand) this.region!.afterStoryEdit(mergedEl);\n placeCaretAtOffset(mergedEl, caret);\n this.options.onEdit?.({ anchorId: merged.id, unid: merged.unid });\n }\n\n /**\n * Apply the block's pending text change to the session with full inline-formatting fidelity.\n * Diffs the committed content text (markers + bidi excluded) against the current content text\n * and rewrites only the changed span via ReplaceTextAtSpan \u2014 every untouched run keeps its exact\n * rPr, and typed text inherits the boundary run's formatting. Returns the parsed EditResult, or\n * null when there is no change. Empty/whitespace-only baselines (e.g. the placeholder space the\n * converter renders for an empty paragraph, whose DOM text doesn't line up with the session's\n * empty run text) are rebuilt via ReplaceText \u2014 there is no inline formatting to preserve there.\n */\n private commitTextChange(el: HTMLElement, fullId: string): EditResultLite | null {\n // `old` mirrors the session's flat run-text: strip bidi marks (blockContentText strips them,\n // but wireBlock may have stored textContent before this Task 2 change, and the bidi test\n // explicitly stores textContent). Using stripBidi keeps the baseline consistent with the\n // session's offset space regardless of how committedText was stored.\n // contenteditable keeps a typed trailing space as U+00A0 so it stays visible; the document\n // wants an ordinary space there (Word's own), and the two are the same length, so the\n // offset space is unchanged. Both sides are normalized the same way, so an untouched\n // placeholder (the NBSP an empty paragraph renders as) never reads as an edit \\u2014 a blur that\n // committed \"\" over a paragraph another op just filled would wipe that op's work.\n const old = stripBidi(el.dataset.committedText ?? \"\").replace(/\\u00a0$/, \" \");\n const next = blockContentText(el).replace(/\\u00a0$/, \" \");\n if (old === next) return null;\n\n // A whitespace-only baseline means the paragraph was (or rendered as) empty, so the typed\n // text replaces it wholesale \u2014 unless it holds a field whose cached result is empty (a PAGE\n // field in a tool-generated footer): that is content, and the span path below keeps it\n // while inserting the typed text beside it.\n if (old.trim().length === 0 && !el.querySelector(\"[data-field]\")) {\n return this.parseEdit(\n this.exports.DocxSessionBridge.ReplaceText(this.handle, fullId, serializeInlineMarkdown(el)),\n );\n }\n\n const minLen = Math.min(old.length, next.length);\n let p = 0;\n while (p < minLen && old[p] === next[p]) p++;\n let s = 0;\n while (s < minLen - p && old[old.length - 1 - s] === next[next.length - 1 - s]) s++;\n\n let start = p;\n let len = old.length - p - s;\n let middle = next.slice(p, next.length - s);\n\n if (len === 0) {\n // A pure insertion. The engine inserts a NEW run at a run boundary (and steps outside a\n // field's chrome, so typing after \"Page X of Y\" never lands inside the NUMPAGES result);\n // an offset inside a run's text is not a boundary and is refused, as is the op on an\n // older engine build. Then anchor a neighbour char so the span is non-empty and the\n // inserted text inherits an adjacent run's rPr (the LEFT run when there is one, matching\n // contenteditable; the first run at the very start).\n const inserted = this.parseEdit(\n this.exports.DocxSessionBridge.ReplaceTextAtSpan(this.handle, fullId, start, 0, middle),\n { expectRejection: true }, // a refusal here only selects the fallback below\n );\n if (inserted.success) return inserted;\n if (start > 0) { start -= 1; len = 1; middle = old[start] + middle; }\n else { len = 1; middle = middle + old[0]; }\n }\n\n return this.parseEdit(\n this.exports.DocxSessionBridge.ReplaceTextAtSpan(this.handle, fullId, start, len, middle),\n );\n }\n\n /**\n * Flush a block's current (uncommitted) text to the session; returns the live full id, or\n * undefined when the engine rejected the text. The block is then restored from the session, and the\n * caller must stop: the operation it was about to run would act on text the document does not\n * hold, at offsets measured in the rejected DOM.\n */\n private syncBlock(el: HTMLElement, fullId: string): string | undefined {\n const result = this.commitTextChange(el, fullId);\n if (!result) return fullId;\n if (!result.success) {\n this.restoreBlock(el, fullId);\n return undefined;\n }\n el.dataset.committedText = blockContentText(el);\n return result.modified?.[0]?.id ?? fullId;\n }\n\n /**\n * The session refused an edit to `el`, so re-render the block from the session to discard the\n * DOM the user typed but the document never accepted.\n */\n private restoreBlock(el: HTMLElement, fullId: string): void {\n const fresh = this.renderInto(fullId);\n if (fresh && this.replaceNode(el, fresh)) {\n this.wireBlock(fresh);\n if (this.activeBlock === el) this.activeBlock = fresh;\n }\n }\n\n /** Render a block by anchor and parse it into a detached element (null on error). */\n private renderInto(anchorId: string): HTMLElement | null {\n const html = this.renderBlockHtml(anchorId);\n if (html.charCodeAt(0) === 0x7b /* error object */) return null;\n return new DOMParser().parseFromString(html, \"text/html\").body.firstElementChild as HTMLElement | null;\n }\n\n private get renderTrackedChanges(): boolean {\n return this.options.trackedChanges === TrackedChangeMode.RenderInline;\n }\n\n private renderBlockHtml(anchorId: string): string {\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.RenderEditorBlockHtml === \"function\") {\n return bridge.RenderEditorBlockHtml(this.handle, anchorId, this.editorRenderProfile());\n }\n if (typeof bridge.RenderBlockHtmlForReview === \"function\") {\n return bridge.RenderBlockHtmlForReview(\n this.handle, anchorId, this.options.cssPrefix, this.options.fabricateClasses,\n this.renderTrackedChanges,\n );\n }\n return bridge.RenderBlockHtml(\n this.handle, anchorId, this.options.cssPrefix, this.options.fabricateClasses,\n );\n }\n\n private renderPlanJson(): string {\n const bridge = this.exports.DocxSessionBridge;\n return typeof bridge.ListRenderedBlocks === \"function\"\n ? bridge.ListRenderedBlocks(this.handle, this.renderTrackedChanges)\n : bridge.ListBlocks!(this.handle);\n }\n\n /** Batch-render `idsJson` anchors through the richest endpoint the bundle carries; the JSON\n * maps each anchor to its HTML (null when it failed to resolve), or carries `error`. */\n private renderBlocksJson(idsJson: string): string {\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.RenderEditorBlocksHtml === \"function\") {\n return bridge.RenderEditorBlocksHtml(this.handle, idsJson, this.editorRenderProfile());\n }\n if (typeof bridge.RenderBlocksHtmlForReview === \"function\") {\n return bridge.RenderBlocksHtmlForReview(\n this.handle, idsJson, this.options.cssPrefix, this.options.fabricateClasses,\n this.renderTrackedChanges,\n );\n }\n return bridge.RenderBlocksHtml!(\n this.handle, idsJson, this.options.cssPrefix, this.options.fabricateClasses,\n );\n }\n\n /** Render two blocks in ONE batched bridge call when the bundle carries RenderBlocksHtml \u2014\n * the per-render shell/converter setup is paid once instead of twice, which matters on the\n * Enter path (split renders both halves synchronously under the keystroke). Falls back to\n * two per-block renders on older bundles. Output is renderInto-identical per block (both\n * routes share the same extraction). */\n private renderTwo(a: string, b: string): [HTMLElement | null, HTMLElement | null] {\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.RenderBlocksHtml === \"function\") {\n try {\n const idsJson = JSON.stringify([a, b]);\n const json = this.renderBlocksJson(idsJson);\n const map = JSON.parse(json) as Record<string, string | null> & { error?: string };\n if (!map.error) {\n const parse = (h: string | null | undefined): HTMLElement | null =>\n h\n ? (new DOMParser().parseFromString(h, \"text/html\").body\n .firstElementChild as HTMLElement | null)\n : null;\n const fa = parse(map[a]);\n const fb = parse(map[b]);\n if (fa && fb) return [fa, fb];\n }\n } catch {\n /* fall through to per-block renders */\n }\n }\n return [this.renderInto(a), this.renderInto(b)];\n }\n\n /** The editable block immediately before `el` within its own root, or null. */\n private previousEditable(el: HTMLElement): HTMLElement | null {\n const all = Array.from(\n this.ownerRoot(el).querySelectorAll<HTMLElement>('[data-anchor][contenteditable=\"true\"]'),\n );\n const i = all.indexOf(el);\n return i > 0 ? all[i - 1] : null;\n }\n\n /**\n * Read the result of a session mutation. Every editor mutation's result passes through here, so\n * this is where a rejection is reported (see {@link DocxEditorOptions.onEditFailed}), once, for\n * all of them. A caller probing an op it expects may be refused passes `expectRejection`.\n */\n private parseEdit(json: string, opts?: { expectRejection?: boolean }): EditResultLite {\n let result: EditResultLite;\n try {\n result = JSON.parse(json) as EditResultLite;\n } catch {\n result = { success: false };\n }\n if (result.success) {\n this.invalidateBlockMoveTargets();\n this.gutter?.schedule();\n } else if (!opts?.expectRejection) {\n this.reportEditFailure(result.error);\n }\n return result;\n }\n\n private reportEditFailure(error: EditResultLite[\"error\"]): void {\n const active = this.activeBlock;\n const failure: EditFailure = {\n code: error?.code,\n message: error?.message ?? \"The engine rejected the edit, or returned an unreadable result\",\n anchorId: error?.anchorId ?? (active ? this.anchorIdOf(active) ?? null : null),\n };\n if (this.options.onEditFailed) this.options.onEditFailed(failure);\n else console.warn(`[DocxEditor] the engine rejected an edit${failure.code ? ` (${failure.code})` : \"\"}: ${failure.message}`);\n }\n\n /**\n * Drop the memoized `ValidMoveTargets` answers. Which blocks a block may move next to is a\n * fact about the DOCUMENT, so it survives hovering but not editing \u2014 and the two places a\n * document changes are `parseEdit` (every mutation that returns an `EditResult`) and\n * undo/redo, which return a bare boolean and so cannot go through it.\n */\n private invalidateBlockMoveTargets(): void {\n this.blockMoveTargetCache.clear();\n }\n\n // \u2500\u2500\u2500 M5: formatting commands (ribbon) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n // \u2500\u2500\u2500 Multi-block selection helpers (format a whole stack of paragraphs at once) \u2500\u2500\u2500\u2500\u2500\u2500\n\n /**\n * Restore a cross-block selection after a native toolbar control took focus. The bookmark uses\n * stable anchor ids and content offsets, so it also survives incremental block swaps.\n */\n private restoreCrossBlockSelection(): boolean {\n const bookmark = this.lastCrossBlockSelection;\n const active = this.activeBlock;\n if (!bookmark || !active) return false;\n const all = Array.from(\n this.ownerRoot(active).querySelectorAll<HTMLElement>('[data-anchor][contenteditable=\"true\"]'),\n );\n const first = all.find((block) => block.getAttribute(\"data-anchor\") === bookmark.startUnid);\n const last = all.find((block) => block.getAttribute(\"data-anchor\") === bookmark.endUnid);\n if (!first || !last || first === last || all.indexOf(first) > all.indexOf(last)) return false;\n const start = contentPositionIn(first, bookmark.startOffset);\n const end = contentPositionIn(last, bookmark.endOffset);\n return setSelectionBetween(start, end);\n }\n\n /** Editable blocks the current selection covers, in document order. Uses Range.comparePoint\n * (robust to a selection boundary that normalized onto a wrapper element rather than a block\n * or text node \u2014 Range.intersectsNode misses the end block at a `(block, childCount)` boundary).\n * A collapsed or single-block selection yields just the active block. */\n private selectedBlocks(): HTMLElement[] {\n let sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n if ((!sel || sel.rangeCount === 0 || sel.isCollapsed) && this.lastCrossBlockSelection) {\n this.restoreCrossBlockSelection();\n sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n }\n // Enumerate the ACTIVE block's own root \u2014 a band's story container, else the body edit root \u2014\n // so a selection can never span a band and the body (different OOXML parts).\n const root = this.activeBlock ? this.ownerRoot(this.activeBlock) : this.editRoot;\n const all = Array.from(\n root.querySelectorAll<HTMLElement>('[data-anchor][contenteditable=\"true\"]'),\n );\n if (sel && sel.rangeCount > 0 && !sel.isCollapsed) {\n const range = sel.getRangeAt(0);\n const hit = all.filter((b) => {\n try {\n const startsAfterEnd = range.comparePoint(b, 0) > 0; // block begins after the selection ends\n const endsBeforeStart = range.comparePoint(b, b.childNodes.length) < 0; // block ends before it starts\n return !startsAfterEnd && !endsBeforeStart;\n } catch {\n return false;\n }\n });\n if (hit.length > 1) return hit;\n }\n return this.activeBlock ? [this.activeBlock] : [];\n }\n\n /** The selection's span within `block`, clipped to the block (for inline ops across blocks):\n * the first block runs selection-start\u2192end-of-block, middle blocks are whole, the last block\n * runs start-of-block\u2192selection-end. Returns null for a whole-block apply. */\n private blockSpanForSelection(block: HTMLElement): { start: number; length: number } | null {\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n if (!sel || sel.rangeCount === 0 || sel.isCollapsed) return null;\n const range = sel.getRangeAt(0);\n const hasStart = block.contains(range.startContainer);\n const hasEnd = block.contains(range.endContainer);\n if (hasStart && hasEnd) return selectionSpanIn(block);\n // Partial/whole slices are normalized into the committed run-text space for the same reason\n // selectionSpanIn is (see trimmedSpan): a session op rejects a span past the committed end.\n const contentLen = blockContentText(block).length;\n if (hasStart) {\n const start = contentOffsetOf(block, range.startContainer, range.startOffset);\n return trimmedSpan(block, { start, length: Math.max(0, contentLen - start) });\n }\n if (hasEnd) {\n const end = contentOffsetOf(block, range.endContainer, range.endOffset);\n return trimmedSpan(block, { start: 0, length: end });\n }\n return trimmedSpan(block, { start: 0, length: contentLen }); // fully-spanned middle block\n }\n\n /** Apply an inline ApplyFormat op to each block's slice of the selection, then reconcile\n * the DOM incrementally (see {@link finishMultiBlockOp} \u2014 a full remount costs a whole-\n * document convert, seconds on a large doc, where per-block swaps are ~10 ms each).\n * Returns false (caller falls back to the single-block path) for a 1-block selection. */\n private applyInlineOpAcrossBlocks(blocks: HTMLElement[], op: object): boolean {\n if (blocks.length <= 1) return false;\n const targets = this.multiBlockTargets(blocks);\n for (const t of targets) {\n if (!t.fullId || (t.span && t.span.length === 0)) continue;\n const synced = this.syncBlock(t.block, t.fullId);\n if (!synced) continue;\n const res = this.parseEdit(this.exports.DocxSessionBridge.ApplyFormat(\n this.handle, synced, t.span ? JSON.stringify(t.span) : \"\", JSON.stringify(op),\n ));\n if (res.success) t.res = res;\n }\n this.finishMultiBlockOp(targets, false);\n return true;\n }\n\n /** Apply a whole-block (paragraph-level) op to each selected block, then reconcile the DOM\n * incrementally ({@link finishMultiBlockOp}). `forceRemount` is for ops whose rendering\n * needs whole-document context (e.g. border-div regrouping after clearBorders). Returns\n * false for a 1-block selection (caller uses the single-block path). */\n private applyParagraphOpAcrossBlocks(\n blocks: HTMLElement[],\n run: (fullId: string) => string,\n forceRemount = false,\n ): boolean {\n if (blocks.length <= 1) return false;\n const targets = this.multiBlockTargets(blocks);\n for (const t of targets) {\n if (!t.fullId) continue;\n const synced = this.syncBlock(t.block, t.fullId);\n if (!synced) continue;\n const res = this.parseEdit(run(synced));\n if (res.success) t.res = res;\n }\n this.finishMultiBlockOp(targets, forceRemount);\n return true;\n }\n\n /** Snapshot each selected block's identity + selection slice BEFORE any session op runs\n * (ops never mutate the DOM, so spans captured here stay valid until the swap phase). */\n private multiBlockTargets(blocks: HTMLElement[]): Array<{\n block: HTMLElement;\n unid: string | null;\n fullId: string | undefined;\n span: { start: number; length: number } | null;\n res: EditResultLite | null;\n }> {\n return blocks.map((b) => {\n const unid = b.getAttribute(\"data-anchor\");\n return {\n block: b,\n unid,\n fullId: this.anchorIdOf(b),\n span: this.blockSpanForSelection(b),\n res: null,\n };\n });\n }\n\n /**\n * Reconcile the DOM after a multi-block op. Fidelity-identical to the single-block path by\n * construction: each edited block is swapped for its own session-attached single-block\n * render \u2014 exactly what format()/setFontSize()/applyParagraphFormat() do for one block \u2014\n * so a multi-block apply is N single-block applies, not one whole-document re-render\n * (which froze the UI for the full-document convert time on every ribbon action). Falls\n * back to ONE full remount when the op touched a list item (numbering continuation needs\n * whole-document context) or the caller forced it. Restores the cross-block selection so\n * consecutive ribbon actions (center, then bold) keep targeting the same range.\n */\n private finishMultiBlockOp(\n targets: Array<{\n block: HTMLElement;\n unid: string | null;\n span: { start: number; length: number } | null;\n res: EditResultLite | null;\n }>,\n forceRemount: boolean,\n ): void {\n const edited = targets.filter((t) => t.res && t.unid);\n if (edited.length === 0) return;\n // Paginated mode: a multi-block format change can alter block heights, and page boxes\n // need a reflow \u2014 keep the (pre-existing) full remount there until M4 lands a scoped\n // re-paginate. Continuous mode reconciles incrementally.\n if (forceRemount || this.options.paginated || edited.some((t) => this.affectsList(t.res!))) {\n this.refreshAfter(edited[0].block, -1, false);\n return;\n }\n const swapped: Array<{ el: HTMLElement; span: { start: number; length: number } | null }> = [];\n for (const t of edited) {\n const fresh = this.swapBlock(t.block, t.unid!, t.res!.modified?.[0]);\n swapped.push({ el: fresh ?? t.block, span: t.span });\n }\n const first = swapped[0];\n const last = swapped[swapped.length - 1];\n if (!first.el.isConnected || !last.el.isConnected) return;\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n if (!sel) return;\n const startOff = first.span?.start ?? 0;\n const endOff = last.span ? last.span.start + last.span.length : blockContentText(last.el).length;\n const startPos = contentPositionIn(first.el, startOff);\n const endPos = contentPositionIn(last.el, endOff);\n try {\n const range = document.createRange();\n range.setStart(startPos.node, startPos.offset);\n range.setEnd(endPos.node, endPos.offset);\n sel.removeAllRanges();\n sel.addRange(range);\n } catch {\n /* selection restore is best-effort \u2014 the edits themselves are already committed */\n }\n }\n\n /**\n * Toggle (or set) an inline format on the current selection in the active block.\n * A selection spanning multiple blocks applies to each. With no selection, applies to\n * the whole paragraph. Routes through DocxSession (`ApplyFormat`) so it is lossless and\n * supports underline/strike, not just markdown.\n */\n format(key: FormatKey, value?: boolean): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n const blocks = this.selectedBlocks();\n if (blocks.length > 1) {\n const on0 = value ?? !selectionHasFormat(key, blocks[0]);\n const multiOp =\n key === \"superscript\" || key === \"subscript\"\n ? { vertAlign: on0 ? key : \"\" }\n : { [key]: on0 };\n if (this.applyInlineOpAcrossBlocks(blocks, multiOp)) return;\n }\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n\n const span = selectionSpanIn(block);\n const on = value ?? !selectionHasFormat(key, block);\n // Super/subscript map to the single-valued w:vertAlign; the rest are boolean toggles.\n const op =\n key === \"superscript\" || key === \"subscript\"\n ? { vertAlign: on ? key : \"\" }\n : { [key]: on };\n fullId = this.syncBlock(block, fullId); // don't clobber uncommitted typing\n if (!fullId) return;\n const res = this.parseEdit(\n this.exports.DocxSessionBridge.ApplyFormat(\n this.handle,\n fullId,\n span ? JSON.stringify(span) : \"\",\n JSON.stringify(op),\n ),\n );\n if (!res.success) return;\n if (this.affectsList(res)) { this.refreshAfter(block, this.blockIndex(block), false); return; }\n const fresh = this.swapBlock(block, unid, res.modified?.[0]);\n if (fresh && span) selectRange(fresh, span.start, span.length);\n else fresh?.focus();\n }\n\n /**\n * Set the font size (in points) of the current selection in the active block; with no\n * selection, applies to the whole paragraph. `pts <= 0` clears the explicit size. Routes\n * through DocxSession `ApplyFormat` (`w:sz`), so it is lossless and survives save.\n */\n setFontSize(pts: number): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n const blocks = this.selectedBlocks();\n if (blocks.length > 1 && this.applyInlineOpAcrossBlocks(blocks, { fontSizePts: pts })) return;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n // Use the live selection; if the font-size combobox stole focus and collapsed it, fall back to\n // the last real selection cached for this block so a sub-range still sizes (finding 3).\n let span = selectionSpanIn(block);\n if (!span && this.lastSelection && this.lastSelection.unid === unid) span = this.lastSelection.span;\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return;\n const res = this.parseEdit(\n this.exports.DocxSessionBridge.ApplyFormat(\n this.handle,\n fullId,\n span ? JSON.stringify(span) : \"\",\n JSON.stringify({ fontSizePts: pts }),\n ),\n );\n if (!res.success) return;\n if (this.affectsList(res)) { this.refreshAfter(block, this.blockIndex(block), false); return; }\n const fresh = this.swapBlock(block, unid, res.modified?.[0]);\n if (fresh && span) selectRange(fresh, span.start, span.length);\n else fresh?.focus();\n }\n\n /**\n * Set the font family of the current selection in the active block; with no selection,\n * applies to the whole paragraph. `\"\"` clears the explicit font (inherits the style/default).\n * Routes through DocxSession `ApplyFormat` (`w:rFonts`), so it is lossless and survives save.\n * Multi-block + last-selection plumbing matches {@link setFontSize} (a focus-stealing font\n * dropdown still applies to the real sub-range).\n */\n setFontFamily(name: string): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n const blocks = this.selectedBlocks();\n if (blocks.length > 1 && this.applyInlineOpAcrossBlocks(blocks, { fontFamily: name })) return;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n let span = selectionSpanIn(block);\n if (!span && this.lastSelection && this.lastSelection.unid === unid) span = this.lastSelection.span;\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return;\n const res = this.parseEdit(\n this.exports.DocxSessionBridge.ApplyFormat(\n this.handle,\n fullId,\n span ? JSON.stringify(span) : \"\",\n JSON.stringify({ fontFamily: name }),\n ),\n );\n if (!res.success) return;\n if (this.affectsList(res)) { this.refreshAfter(block, this.blockIndex(block), false); return; }\n const fresh = this.swapBlock(block, unid, res.modified?.[0]);\n if (fresh && span) selectRange(fresh, span.start, span.length);\n else fresh?.focus();\n }\n\n /** Set paragraph alignment (left/center/right/justify) on the active block. */\n setAlignment(alignment: EditorAlignment): void {\n this.applyParagraphFormat({ alignment });\n }\n\n /**\n * Insert an S-1-style horizontal rule (an empty paragraph with a bottom border) after the\n * active block. `weight` is the rule thickness in eighths of a point (default 12 \u2248 1.5pt).\n * Re-renders fully (a new block needs whole-document context to lay out).\n */\n insertHorizontalRule(weight = 12, style = \"single\", position: \"above\" | \"below\" = \"below\"): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n const idx = this.blockIndex(block);\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return;\n const res = this.parseEdit(\n this.exports.DocxSessionBridge.InsertHorizontalRule(\n this.handle,\n fullId,\n position === \"above\" ? \"before\" : \"after\",\n JSON.stringify({ style, size: weight, color: \"auto\" }),\n ),\n );\n if (!res.success) return;\n // Remount from the active block's index re-renders the new rule whether it landed just\n // above (at idx) or just below (at idx+1) the active block. Forced: a rule is a bordered\n // paragraph, and border-div grouping is whole-document render context.\n this.refreshAfter(block, idx, false, /* forceRemount */ true);\n }\n\n /**\n * Insert a `rows`\u00D7`cols` table after the active block. `options.cellContents` (row-major\n * markdown) seeds the cells, `options.borderless` makes an invisible layout table, and\n * `options.cellAlignment` aligns every cell. Re-renders fully (tables need document context).\n */\n insertTable(\n rows: number,\n cols: number,\n options?: {\n borderless?: boolean;\n cellContents?: string[];\n cellAlignment?: EditorAlignment;\n columnWidths?: number[];\n },\n ): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n const idx = this.blockIndex(block);\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return;\n // If the caret is on an empty paragraph (not a table cell), insert the table BEFORE it so the\n // empty paragraph becomes the editable line BELOW the table \u2014 no stray blank line above it, and\n // a reachable paragraph below (S-1 smoke-test findings 2 + 4). Otherwise insert after.\n const emptyHere =\n !block.closest(\"table\") && blockContentText(block).replace(/[\\s\u00A0]+/g, \"\").length === 0;\n const res = this.parseEdit(\n this.exports.DocxSessionBridge.InsertTable(\n this.handle,\n fullId,\n emptyHere ? \"before\" : \"after\",\n rows,\n cols,\n options ? JSON.stringify(options) : \"\",\n ),\n );\n if (!res.success) return;\n this.refreshAfter(block, idx, false);\n }\n\n // \u2500\u2500\u2500 Table row / column editing (active block must be inside a table cell) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** Run a table-structure op on the active cell's canonical tc anchor and re-render. */\n private tableEdit(run: (cellAnchor: string) => string): void {\n const block = this.activeBlock;\n const cell = block?.closest<HTMLElement>(\"td, th\");\n if (this.closed || !block || !cell || !block.closest(\"table\")) return;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n const paragraphId = this.anchorIdOf(block);\n const cellId = this.anchorIdOf(cell);\n if (!paragraphId || !cellId) return;\n const idx = this.blockIndex(block);\n if (!this.syncBlock(block, paragraphId)) return; // flush uncommitted cell text first\n const res = this.parseEdit(run(cellId));\n if (!res.success) return;\n this.refreshAfter(block, idx, false);\n }\n\n /** Insert a row above/below the active cell's row. No-op outside a table. */\n insertTableRow(where: \"above\" | \"below\"): void {\n this.tableEdit((a) =>\n this.exports.DocxSessionBridge.InsertTableRow(this.handle, a, where === \"above\" ? \"before\" : \"after\"),\n );\n }\n\n /** Insert a column left/right of the active cell's column. No-op outside a table. */\n insertTableColumn(where: \"left\" | \"right\"): void {\n this.tableEdit((a) =>\n this.exports.DocxSessionBridge.InsertTableColumn(this.handle, a, where === \"left\" ? \"before\" : \"after\"),\n );\n }\n\n /** Delete the active cell's row (deleting the last row removes the table). No-op outside a table. */\n deleteTableRow(): void {\n this.tableEdit((a) => this.exports.DocxSessionBridge.DeleteTableRow(this.handle, a));\n }\n\n /** Delete the active cell's column (deleting the last column removes the table). No-op outside a table. */\n deleteTableColumn(): void {\n this.tableEdit((a) => this.exports.DocxSessionBridge.DeleteTableColumn(this.handle, a));\n }\n\n /**\n * Indent/outdent the active block. On a LIST item this changes the list NESTING LEVEL\n * (`SetListLevel`) so numbering nests (e.g. 1, 2 \u2192 a sub-level) rather than the item just\n * shifting sideways with flat numbering. On a plain paragraph it adjusts the left indent by\n * `deltaTwips` (default \u00B1720 = 0.5\"), clamped at 0.\n */\n indent(deltaTwips = 720): void {\n if (this.activeBlock && isListBlock(this.activeBlock)) {\n this.setListLevel(deltaTwips >= 0 ? 1 : -1);\n return;\n }\n this.applyParagraphFormat({ indentDelta: deltaTwips });\n }\n\n /** Change the active list item's nesting level by `delta` (+1 deeper, \u22121 shallower). */\n private setListLevel(delta: number): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n const idx = this.blockIndex(block);\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return;\n const res = this.parseEdit(this.exports.DocxSessionBridge.SetListLevel(this.handle, fullId, delta));\n if (!res.success) return;\n // A level change ripples through the whole list's numbering \u2014 re-render with full document\n // context (sibling numbers shift without sibling XML changing), keeping the caret in place.\n this.refreshAfter(block, idx, false, /* forceRemount */ true);\n }\n\n /** Toggle (or set) page-break-before on the active block. */\n pageBreakBefore(value = true): void {\n this.applyParagraphFormat({ pageBreakBefore: value });\n }\n\n /**\n * Toggle the active block between a bullet/numbered list item and a plain paragraph.\n * Clicking the same kind it already is removes the list; any other state applies the kind.\n */\n toggleList(kind: \"bullet\" | \"decimal\"): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n\n let membership: { format?: string } | null = null;\n try {\n membership = JSON.parse(this.exports.DocxSessionBridge.GetListMembership(this.handle, fullId));\n } catch { /* treat as not-a-list */ }\n const isThisKind =\n !!membership && typeof membership.format === \"string\" &&\n membership.format.toLowerCase().startsWith(kind === \"bullet\" ? \"bullet\" : \"decimal\");\n\n const idx = this.blockIndex(block); // capture before the op\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return;\n const res = this.parseEdit(\n this.exports.DocxSessionBridge.ApplyListFormat(this.handle, fullId, isThisKind ? \"none\" : kind),\n );\n if (!res.success) return;\n // Numbering continuation across the list needs whole-document context \u2014 re-render fully\n // (sibling numbers shift without sibling XML changing).\n this.refreshAfter(block, idx, false, /* forceRemount */ true);\n }\n\n /** Clear all paragraph borders (e.g. remove an inserted horizontal rule) on the active block \u2014\n * or every block in a multi-block selection. The engine/wire already accept `clearBorders`;\n * this surfaces it on the editor so an HR border is removable (S-1 smoke-test finding 1b). */\n clearParagraphBorders(): void {\n this.applyParagraphFormat({ clearBorders: true });\n }\n\n /**\n * Delete the active block (e.g. a stray empty paragraph left above/below a table). Routes\n * through DocxSession `DeleteBlock` + re-render, focusing the previous block. No-op when the\n * caret is inside a table (remove cells via the table toolbar's delete row/column instead) and\n * no-op when it is the only editable block (don't empty the document). Closes the S-1\n * smoke-test \"no block-delete affordance\" gap.\n */\n deleteBlock(): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n if (block.closest(\"table\")) return; // cells are removed via the table toolbar, not here\n if (this.editableList().length <= 1) return; // never delete the last editable block\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n const fullId = this.anchorIdOf(block);\n if (!fullId) return;\n const idx = this.blockIndex(block);\n const res = this.parseEdit(this.exports.DocxSessionBridge.DeleteBlock(this.handle, fullId));\n if (!res.success) return;\n this.refreshAfter(block, Math.max(0, idx - 1), true);\n }\n\n /**\n * Cite a new footnote from the caret position in the active body block. The note definition is\n * created (writing the whole Word scaffold \u2014 part, reserved separator notes, settings\n * declaration, styles \u2014 on a document that has none yet) and its body renders as ordinary\n * editable `data-anchor` blocks in the notes section, so editing it afterwards needs no new op.\n *\n * Body blocks only: Word disallows a note reference inside a header/footer story or inside\n * another note, and the session rejects those with `AnchorWrongKind`. Reconciliation creates\n * the first notes section when needed and renumbers every affected citation in place.\n */\n insertFootnote(markdown = \"New footnote.\"): void {\n this.insertNote(\"footnote\", markdown);\n }\n\n /** Cite a new endnote from the caret \u2014 see {@link insertFootnote}; writes the endnotes part. */\n insertEndnote(markdown = \"New endnote.\"): void {\n this.insertNote(\"endnote\", markdown);\n }\n\n private insertNote(kind: \"footnote\" | \"endnote\", markdown: string): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n // A note reference is legal only in the main story: not in a header/footer band, and not\n // inside an existing note's body (both render as editable blocks here).\n if (this.isBandBlock(block) || block.closest(\".footnotes, .endnotes\")) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n const idx = this.blockIndex(block);\n // Offset first: syncBlock re-renders the block and would drop the live selection.\n const raw = caretOffsetIn(block);\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return;\n const offset = trimmedSplitOffset(block, raw ?? (block.textContent ?? \"\").length);\n const bridge = this.exports.DocxSessionBridge;\n const call = kind === \"footnote\" ? bridge.InsertFootnote : bridge.InsertEndnote;\n if (!call) return; // bridge predates note authoring\n const res = this.parseEdit(call.call(bridge, this.handle, fullId, offset, markdown));\n if (!res.success) return;\n this.reconcile(idx, false);\n }\n\n /**\n * Add a native Word comment on the current selection in the active block \u2014 or on the whole\n * block when the selection is collapsed (a null span comments the paragraph). The definition,\n * threading parts, and body-side range markers are written by the session's `AddComment`\n * (issue #300); the re-render shows the marker chrome the converter already draws. The\n * annotation type legal review runs on, finally authorable from the shipped surface\n * (issue #580).\n */\n addComment(\n markdown = \"New comment.\",\n author = this.options.commentAuthor,\n target?: CommentTarget,\n ): CommentListEntry | null {\n let block = target?.block.isConnected ? target.block : this.activeBlock;\n let span = target ? target.span : null;\n if (target && !target.block.isConnected) {\n // The draft's block was swapped since it was captured \u2014 the click that posts a draft\n // blurs and commits the paragraph. Find the same paragraph by anchor rather than taking\n // whatever block is active now, and keep the span only while the text it was measured\n // on is unchanged; otherwise comment the whole paragraph rather than the wrong characters.\n const live = target.anchor === undefined ? null : this.blockByAnchor(target.anchor);\n if (live) block = live;\n if (!live || target.text === undefined || blockContentText(live) !== target.text) span = null;\n }\n if (this.closed || !block) return null;\n const bridge = this.exports.DocxSessionBridge;\n if (!bridge.AddComment) return null; // bridge predates comment authoring\n let fullId = this.anchorIdOf(block);\n if (!fullId) return null;\n const idx = this.blockIndex(block);\n // Span first: syncBlock re-renders the block and would drop the live selection. A target\n // captured earlier (the gutter's draft bubble) wins over whatever the selection is now.\n if (!target) span = selectionSpanIn(block);\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return null;\n const res = this.parseEdit(\n bridge.AddComment(\n this.handle, fullId, span ? JSON.stringify(span) : \"\", author, \"\", \"\", markdown,\n ),\n );\n if (!res.success) return null;\n const created = res.created?.find((a) => a.kind === \"cmt\")?.id ?? null;\n // Comment markup lands inside the host paragraph, so it re-renders like any text edit; the\n // gutter then picks the new highlight up on its next layout.\n if (this.isBandBlock(block)) this.refreshAfter(block, idx, false);\n else this.reconcile(idx, false);\n const entry = created ? this.listComments().find((c) => c.anchorId === created) ?? null : null;\n return entry;\n }\n\n /** Reply to a thread root (or any comment) as a native Word reply (`commentsExtended`). */\n addCommentReply(parentAnchorId: string, markdown: string, author = this.options.commentAuthor): boolean {\n if (this.closed) return false;\n const bridge = this.exports.DocxSessionBridge;\n if (!bridge.AddCommentReply) return false;\n const res = this.parseEdit(\n bridge.AddCommentReply(this.handle, parentAnchorId, author, \"\", \"\", markdown),\n );\n if (!res.success) return false;\n // A reply adds a reference run beside the parent's, so the host paragraph re-renders.\n this.reconcile();\n return true;\n }\n\n /** Replace a comment's body text; author/date are preserved. */\n updateComment(commentAnchorId: string, markdown: string): boolean {\n if (this.closed) return false;\n const bridge = this.exports.DocxSessionBridge;\n if (!bridge.UpdateComment) return false;\n return this.parseEdit(bridge.UpdateComment(this.handle, commentAnchorId, markdown)).success;\n }\n\n /** Delete a comment: the definition and its range markers everywhere. */\n removeComment(commentAnchorId: string): boolean {\n if (this.closed) return false;\n const bridge = this.exports.DocxSessionBridge;\n if (!bridge.RemoveComment) return false;\n const res = this.parseEdit(bridge.RemoveComment(this.handle, commentAnchorId));\n if (!res.success) return false;\n this.reconcile();\n return true;\n }\n\n /** What \"New comment\" would comment on right now: the active block and the selection in it. */\n commentTarget(): CommentTarget | null {\n const block = this.activeBlock;\n if (this.closed || !block || !block.isConnected) return null;\n let span = selectionSpanIn(block);\n const unid = block.getAttribute(\"data-anchor\");\n if (!span && this.lastSelection && this.lastSelection.unid === unid) span = this.lastSelection.span;\n return { block, span, anchor: this.anchorIdOf(block), text: blockContentText(block) };\n }\n\n /** The live block for a full anchor id, or null when no mounted block resolves to it. */\n private blockByAnchor(anchor: string): HTMLElement | null {\n for (const el of Array.from(this.container.querySelectorAll<HTMLElement>(\"[data-anchor]\"))) {\n if (this.anchorIdOf(el) === anchor) return el;\n }\n return null;\n }\n\n /** Open a draft comment bubble beside the selection (Word's \"New Comment\"). */\n beginComment(): boolean {\n return this.gutter?.beginDraft() ?? false;\n }\n\n cancelComment(): void {\n this.gutter?.cancelDraft();\n }\n\n /** Activate a thread by `cmt` anchor id or numeric comment id (null clears). */\n activateComment(id: string | null): void {\n this.gutter?.setActive(id, { scrollBubble: true, scrollAnchor: true });\n }\n\n /** Step to the next (+1) / previous (\u22121) thread in document order. */\n stepComment(direction: 1 | -1): CommentListEntry | null {\n return this.gutter?.step(direction) ?? null;\n }\n\n /** The active thread root's anchor id, or null. */\n get activeComment(): string | null {\n return this.gutter?.active ?? null;\n }\n\n /** Show or hide the comment gutter (the markup stays in the document). */\n showComments(visible: boolean): void {\n this.gutter?.setVisible(visible);\n }\n\n get commentsVisible(): boolean {\n return this.gutter?.isVisible ?? false;\n }\n\n /** Force the gutter to lay out now (tests). */\n layoutComments(): void {\n this.gutter?.layout();\n }\n\n /** The document's native comment threads (session truth), for review UIs \u2014 flat entries\n * with `parentAnchorId` linking replies and `resolved` carrying thread state. */\n listComments(): CommentListEntry[] {\n if (this.closed) return [];\n const bridge = this.exports.DocxSessionBridge;\n if (!bridge.ListComments) return [];\n try {\n return JSON.parse(bridge.ListComments(this.handle)) as CommentListEntry[];\n } catch {\n return [];\n }\n }\n\n /** Resolve or reopen a comment thread by its `cmt` anchor id (from {@link listComments}).\n * Resolution is thread metadata (`commentsExtended`), not body markup, so no re-render is\n * needed \u2014 a review UI re-reads {@link listComments} for the new state. */\n setCommentResolved(commentAnchorId: string, resolved: boolean): boolean {\n if (this.closed) return false;\n const bridge = this.exports.DocxSessionBridge;\n if (!bridge.SetCommentResolved) return false;\n return this.parseEdit(bridge.SetCommentResolved(this.handle, commentAnchorId, resolved)).success;\n }\n\n private applyParagraphFormat(op: {\n alignment?: EditorAlignment;\n indentDelta?: number;\n firstLineIndent?: number;\n hangingIndent?: number;\n spacingBefore?: number;\n spacingAfter?: number;\n lineSpacing?: number;\n lineSpacingRule?: \"auto\" | \"exact\" | \"atLeast\";\n pageBreakBefore?: boolean;\n clearBorders?: boolean;\n }): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n const blocks = this.selectedBlocks();\n if (\n blocks.length > 1 &&\n this.applyParagraphOpAcrossBlocks(\n blocks,\n (id) => this.exports.DocxSessionBridge.SetParagraphFormat(this.handle, id, JSON.stringify(op)),\n // A border change regroups the wrapping border <div>s \u2014 whole-document context.\n !!op.clearBorders,\n )\n )\n return;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n const idx = this.blockIndex(block);\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return;\n const res = this.parseEdit(\n this.exports.DocxSessionBridge.SetParagraphFormat(this.handle, fullId, JSON.stringify(op)),\n );\n if (!res.success) return;\n // A border change adds/removes the wrapping border <div>, so a single-block swap can't restructure\n // it correctly \u2014 re-render fully (like list edits) so the wrapper appears/disappears cleanly.\n if (this.affectsList(res) || op.clearBorders) { this.refreshAfter(block, idx, false, true); return; }\n this.swapBlock(block, unid, res.modified?.[0])?.focus();\n }\n\n /** Set the paragraph style of the active block \u2014 or of every block in a multi-block selection\n * (e.g. \"Heading1\", \"Heading2\", \"Normal\"). */\n setParagraphStyle(styleId: string): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n const blocks = this.selectedBlocks();\n if (\n blocks.length > 1 &&\n this.applyParagraphOpAcrossBlocks(blocks, (id) =>\n this.exports.DocxSessionBridge.SetParagraphStyle(this.handle, id, styleId),\n )\n )\n return;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n const idx = this.blockIndex(block);\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return;\n const res = this.parseEdit(this.exports.DocxSessionBridge.SetParagraphStyle(this.handle, fullId, styleId));\n if (!res.success) return;\n if (this.affectsList(res)) { this.refreshAfter(block, idx, false, true); return; }\n this.swapBlock(block, unid, res.modified?.[0])?.focus();\n }\n\n /** Undo the last edit (incremental repaint; falls back to a full re-render). */\n undo(): void {\n if (this.closed) return;\n if (!this.exports.DocxSessionBridge.Undo(this.handle)) return;\n this.invalidateBlockMoveTargets();\n this.reconcile();\n }\n\n /** Redo the last undone edit (incremental repaint; falls back to a full re-render). */\n redo(): void {\n if (this.closed) return;\n if (!this.exports.DocxSessionBridge.Redo(this.handle)) return;\n this.invalidateBlockMoveTargets();\n this.reconcile();\n }\n\n // \u2500\u2500\u2500 Header/footer region commands (no-ops unless `headerFooter` is on) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /**\n * Select which story kind a band edits (`\"default\"` / `\"first\"` / `\"even\"`). A kind with no\n * existing part is created empty, so the band always presents something editable. `\"first\"`\n * sets the section's `w:titlePg`; `\"even\"` sets the document-global `w:evenAndOddHeaders`\n * (which also governs footers \u2014 the band surfaces that caveat inline).\n */\n setHeaderFooterKind(which: BandWhich, kind: HeaderFooterKind): void {\n this.assertOpen();\n this.region?.setKind(which, kind);\n }\n\n /** The story kind a band is currently editing, or null when the region is off. */\n headerFooterKind(which: BandWhich): HeaderFooterKind | null {\n return this.region?.kindOf(which) ?? null;\n }\n\n /**\n * Append a page-number field to the focused header/footer story paragraph (falling back to the\n * band's last paragraph \u2014 Word's convention). No-op outside a band.\n */\n insertPageNumber(field: \"currentPage\" | \"totalPages\" | \"pageOfTotal\" = \"currentPage\"): void {\n this.assertOpen();\n if (!this.region) return;\n const block = this.activeBlock;\n const band = block ? this.region.bandOf(block) : null;\n const anchorId = block?.getAttribute(\"data-hf-anchor\");\n if (block && band && anchorId) {\n // Flush uncommitted typing first: the field appends to the SESSION paragraph, and the\n // story repaint that follows would otherwise blur-commit stale DOM text over it.\n const synced = this.syncBlock(block, anchorId);\n if (!synced) return;\n this.region.insertPageNumber(this.region.whichOf(band), synced, field);\n return;\n }\n // No band block focused \u2014 target the footer, where page numbers overwhelmingly live.\n this.region.insertPageNumberInBand(\"footer\", field);\n }\n\n /**\n * Set the page numbering of the section the bands describe (`w:pgNumType`) \u2014 Word's *Format Page\n * Numbers\u2026*: `start` restarts numbering at that number, `format` chooses `1, 2, 3` vs\n * `i, ii, iii` etc. Omitted fields are left unchanged. Requires the header/footer region\n * (`{ headerFooter: true }`); a no-op otherwise.\n *\n * Inserted page-number fields are plain, so they render through this. The editor's own view still\n * shows each field's cached result \u2014 Word recomputes on open \u2014 but `{ paginated: true }`\n * substitutes the real per-page number and so reflects the change immediately.\n */\n setPageNumbering(op: { start?: number; format?: NumberFormat }): void {\n this.assertOpen();\n this.region?.setPageNumbering(op);\n }\n\n /** Remove the section's page-numbering start/format: it reverts to continuing the previous\n * section's numbering in Word's default `1, 2, 3`. */\n clearPageNumbering(): void {\n this.assertOpen();\n this.region?.clearPageNumbering();\n }\n\n /** This section's page numbering as the document currently states it \u2014 `{}` when the section\n * sets neither (it continues the previous section in the default format). */\n pageNumbering(): { start?: number; format?: NumberFormat } {\n return this.region?.pageNumbering() ?? {};\n }\n\n // \u2500\u2500\u2500 Font group \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /**\n * Apply one inline `FormatOp` to the selection: a sub-range of the active block, the whole\n * block when the caret is collapsed, or every block of a multi-block selection. The last real\n * selection is used when a focus-stealing control (a colour picker) collapsed the live one.\n */\n private applyInlineFormat(op: Record<string, unknown>): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n const blocks = this.selectedBlocks();\n if (blocks.length > 1 && this.applyInlineOpAcrossBlocks(blocks, op)) return;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n let span = selectionSpanIn(block);\n if (!span && this.lastSelection && this.lastSelection.unid === unid) span = this.lastSelection.span;\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return;\n const res = this.parseEdit(\n this.exports.DocxSessionBridge.ApplyFormat(\n this.handle, fullId, span ? JSON.stringify(span) : \"\", JSON.stringify(op),\n ),\n );\n if (!res.success) return;\n if (this.affectsList(res)) { this.refreshAfter(block, this.blockIndex(block), false); return; }\n const fresh = this.swapBlock(block, unid, res.modified?.[0]);\n if (fresh && span) selectRange(fresh, span.start, span.length);\n else fresh?.focus();\n }\n\n /** Font colour as a hex triplet (with or without '#'); `\"\"` clears the explicit colour. */\n setFontColor(hex: string): void {\n this.applyInlineFormat({ color: hex.replace(/^#/, \"\").toUpperCase() });\n }\n\n /** Word highlight colour name (`\"yellow\"`, `\"green\"`, \u2026); `\"\"` removes the highlight. */\n setHighlight(name: string): void {\n this.applyInlineFormat({ highlight: name });\n }\n\n setAllCaps(on: boolean): void {\n this.applyInlineFormat({ caps: on });\n }\n\n setSmallCaps(on: boolean): void {\n this.applyInlineFormat({ smallCaps: on });\n }\n\n /** Word's \"Clear All Formatting\": drop every direct run property on the selection. */\n clearFormatting(): void {\n this.applyInlineFormat({\n bold: false, italic: false, underline: false, strike: false, code: false, color: \"\",\n highlight: \"\", vertAlign: \"\", fontSizePts: 0, fontFamily: \"\", runStyle: \"\",\n caps: false, smallCaps: false,\n });\n }\n\n /** The caret's rendered font size in points (from computed style), or null. */\n fontSizeAtCaret(): number | null {\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n let el: HTMLElement | null = this.activeBlock;\n if (sel && sel.rangeCount > 0) {\n const n = sel.getRangeAt(0).startContainer;\n const candidate = n.nodeType === 3 ? n.parentElement : (n as HTMLElement);\n if (candidate && this.container.contains(candidate)) el = candidate;\n }\n if (!el || typeof getComputedStyle !== \"function\") return null;\n const px = parseFloat(getComputedStyle(el).fontSize);\n return px > 0 ? Math.round(px * 0.75 * 2) / 2 : null;\n }\n\n /** Grow (+) or shrink (\u2212) the selection's font size by `delta` points (Word's A\u2191 / A\u2193). */\n adjustFontSize(delta: number): void {\n const size = this.fontSizeAtCaret();\n if (size == null) return;\n this.setFontSize(Math.max(1, Math.round((size + delta) * 2) / 2));\n }\n\n // \u2500\u2500\u2500 Paragraph group \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** Line spacing as a multiple of single (1, 1.15, 1.5, 2 \u2026) \u2014 `w:spacing/@w:line` under `auto`. */\n setLineSpacing(multiple: number): void {\n this.applyParagraphFormat({ lineSpacing: Math.round(multiple * 240), lineSpacingRule: \"auto\" });\n }\n\n /** Space before/after the paragraph, in POINTS (Word's Paragraph dialog units). */\n setParagraphSpacing(op: { beforePt?: number; afterPt?: number }): void {\n const payload: { spacingBefore?: number; spacingAfter?: number } = {};\n if (op.beforePt != null) payload.spacingBefore = Math.max(0, Math.round(op.beforePt * 20));\n if (op.afterPt != null) payload.spacingAfter = Math.max(0, Math.round(op.afterPt * 20));\n if (Object.keys(payload).length === 0) return;\n this.applyParagraphFormat(payload);\n }\n\n /** First-line indent in twips (0 = none); removes any hanging indent. */\n setFirstLineIndent(twips: number): void {\n this.applyParagraphFormat({ firstLineIndent: Math.max(0, twips) });\n }\n\n /** Hanging indent in twips (0 = none); removes any first-line indent. */\n setHangingIndent(twips: number): void {\n this.applyParagraphFormat({ hangingIndent: Math.max(0, twips) });\n }\n\n /**\n * Make the active block (or every selected block) a list item of `kind` \u2014 the full Word\n * numbering gallery, not just bullets/decimal \u2014 or a plain paragraph with `\"none\"`.\n */\n setListFormat(kind: ListFormat): void {\n const block = this.activeBlock;\n if (this.closed || !block) return;\n const blocks = this.selectedBlocks();\n if (\n blocks.length > 1 &&\n this.applyParagraphOpAcrossBlocks(\n blocks,\n (id) => this.exports.DocxSessionBridge.ApplyListFormat(this.handle, id, kind),\n true,\n )\n )\n return;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return;\n const idx = this.blockIndex(block);\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return;\n const res = this.parseEdit(this.exports.DocxSessionBridge.ApplyListFormat(this.handle, fullId, kind));\n if (!res.success) return;\n this.refreshAfter(block, idx, false, /* forceRemount */ true);\n }\n\n /** The active block's list format (`\"bullet\"`, `\"decimal\"`, \u2026), or null when it is not a list item. */\n listFormatAtCaret(): string | null {\n const block = this.activeBlock;\n if (this.closed || !block || !isListBlock(block)) return null;\n const fullId = this.anchorIdOf(block);\n if (!fullId) return null;\n try {\n const membership = JSON.parse(this.exports.DocxSessionBridge.GetListMembership(this.handle, fullId)) as { format?: string } | null;\n return membership?.format ?? null;\n } catch {\n return null;\n }\n }\n\n /** Paragraph formatting (direct + effective) of the active block, for ribbon state. */\n paragraphFormatting(): FormattingInspection | null {\n const block = this.activeBlock;\n const bridge = this.exports.DocxSessionBridge;\n if (this.closed || !block || typeof bridge.GetFormatting !== \"function\") return null;\n const fullId = this.anchorIdOf(block);\n if (!fullId) return null;\n try {\n const parsed = JSON.parse(bridge.GetFormatting(this.handle, fullId)) as FormattingInspection | null;\n return parsed && typeof parsed === \"object\" && \"effectiveParagraph\" in parsed ? parsed : null;\n } catch {\n return null;\n }\n }\n\n // \u2500\u2500\u2500 Links, images, references \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** Wrap the selection in a hyperlink (external URL, or an internal bookmark name). */\n insertHyperlink(target: string, kind: \"external\" | \"internal\" = \"external\"): boolean {\n const block = this.activeBlock;\n const bridge = this.exports.DocxSessionBridge;\n if (this.closed || !block || typeof bridge.AddHyperlink !== \"function\") return false;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return false;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return false;\n let span = selectionSpanIn(block);\n if (!span && this.lastSelection && this.lastSelection.unid === unid) span = this.lastSelection.span;\n if (!span) return false; // Word needs a range to link\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return false;\n const res = this.parseEdit(\n bridge.AddHyperlink(this.handle, fullId, span.start, span.length, kind, target),\n );\n if (!res.success) return false;\n const fresh = this.swapBlock(block, unid, res.modified?.[0]);\n if (fresh) selectRange(fresh, span.start, span.length);\n return true;\n }\n\n /** The hyperlink the caret (or selection start) sits in, or null. */\n hyperlinkAtCaret(): HyperlinkInfo | null {\n const block = this.activeBlock;\n const bridge = this.exports.DocxSessionBridge;\n if (this.closed || !block || typeof bridge.ListHyperlinks !== \"function\") return null;\n const fullId = this.anchorIdOf(block);\n if (!fullId) return null;\n const sel = typeof window !== \"undefined\" ? window.getSelection() : null;\n let offset = 0;\n if (sel && sel.rangeCount > 0 && block.contains(sel.getRangeAt(0).startContainer)) {\n const r = sel.getRangeAt(0);\n offset = contentOffsetOf(block, r.startContainer, r.startOffset);\n }\n try {\n const links = JSON.parse(bridge.ListHyperlinks(this.handle, 63)) as HyperlinkInfo[];\n return (\n links.find(\n (l) => l.anchorId === fullId && offset >= l.span.start && offset <= l.span.start + l.span.length,\n ) ?? null\n );\n } catch {\n return null;\n }\n }\n\n /** Remove the hyperlink at the caret, keeping its text. */\n removeHyperlink(): boolean {\n const link = this.hyperlinkAtCaret();\n const bridge = this.exports.DocxSessionBridge;\n const block = this.activeBlock;\n if (!link || !block || typeof bridge.RemoveHyperlink !== \"function\") return false;\n const unid = block.getAttribute(\"data-anchor\");\n const res = this.parseEdit(bridge.RemoveHyperlink(this.handle, link.id));\n if (!res.success) return false;\n if (unid) this.swapBlock(block, unid, res.modified?.[0]);\n return true;\n }\n\n /** Insert an inline image (base64 bytes) at the caret in the active body block. */\n insertImage(imageBase64: string, options: ImageInsertOptions = {}): boolean {\n const block = this.activeBlock;\n const bridge = this.exports.DocxSessionBridge;\n if (this.closed || !block || typeof bridge.InsertImage !== \"function\") return false;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return false;\n const idx = this.blockIndex(block);\n const raw = caretOffsetIn(block);\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return false;\n const offset = trimmedSplitOffset(block, raw ?? (block.textContent ?? \"\").length);\n const res = this.parseEdit(\n bridge.InsertImage(this.handle, fullId, offset, imageBase64, JSON.stringify(options)),\n );\n if (!res.success) return false;\n // Image parts are not in the block-render shell, so a single-block swap would drop the\n // picture; the full render is the only path that shows it.\n this.refreshAfter(block, idx, true, /* forceRemount */ true);\n return true;\n }\n\n /** Read a picked file and insert it as an inline image. */\n async insertImageFile(file: Blob, options: ImageInsertOptions = {}): Promise<boolean> {\n const bytes = new Uint8Array(await file.arrayBuffer());\n let binary = \"\";\n const chunk = 0x8000;\n for (let i = 0; i < bytes.length; i += chunk) {\n binary += String.fromCharCode(...bytes.subarray(i, i + chunk));\n }\n return this.insertImage(btoa(binary), options);\n }\n\n /** Insert a table of contents (a real TOC field) before the active block. */\n insertTableOfContents(options: TableOfContentsOptions = {}): boolean {\n const block = this.activeBlock;\n const bridge = this.exports.DocxSessionBridge;\n if (this.closed || !block || typeof bridge.InsertTableOfContents !== \"function\") return false;\n if (this.isBandBlock(block) || block.closest(\"table, .footnotes, .endnotes\")) return false;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return false;\n const idx = this.blockIndex(block);\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return false;\n const res = this.parseEdit(\n bridge.InsertTableOfContents(this.handle, fullId, \"before\", JSON.stringify(options)),\n );\n if (!res.success) return false;\n this.refreshAfter(block, idx, false, /* forceRemount */ true);\n return true;\n }\n\n // \u2500\u2500\u2500 Table group (extended) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** Merge the active cell with `rowSpan`\u00D7`colSpan` neighbours (down and right). */\n mergeCells(rowSpan: number, colSpan: number): void {\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.MergeCells !== \"function\") return;\n this.tableEdit((a) => bridge.MergeCells!(this.handle, a, rowSpan, colSpan, \"\"));\n }\n\n /** Split a merged cell back into its grid cells. */\n unmergeCells(): void {\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.UnmergeCells !== \"function\") return;\n this.tableEdit((a) => bridge.UnmergeCells!(this.handle, a));\n }\n\n /** Set (or with `style: \"none\"` remove) the borders of the active cell's table. */\n setTableBorders(spec: TableBorderSpec): void {\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.SetTableBorders !== \"function\") return;\n this.tableEdit((a) => bridge.SetTableBorders!(this.handle, a, JSON.stringify(spec)));\n }\n\n /** Shade the active cell (or its row/column/table) with a hex fill; `\"\"` clears. */\n setCellShading(fill: string, scope: \"cell\" | \"row\" | \"column\" | \"table\" = \"cell\"): void {\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.SetCellShading !== \"function\") return;\n this.tableEdit((a) => bridge.SetCellShading!(this.handle, a, fill.replace(/^#/, \"\"), scope));\n }\n\n /** Repeat the active cell's row at the top of every page the table spans. */\n setRepeatHeaderRow(repeat: boolean): void {\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.SetRepeatHeaderRow !== \"function\") return;\n this.tableEdit((a) => bridge.SetRepeatHeaderRow!(this.handle, a, repeat));\n }\n\n /** Delete the whole table the caret is in. */\n deleteTable(): void {\n const block = this.activeBlock;\n const table = block?.closest<HTMLElement>(\"table\");\n if (this.closed || !block || !table) return;\n const tableId = this.anchorIdOf(table);\n if (!tableId) return;\n const idx = this.blockIndex(block);\n const res = this.parseEdit(this.exports.DocxSessionBridge.DeleteBlock(this.handle, tableId));\n if (!res.success) return;\n this.refreshAfter(block, Math.max(0, idx - 1), true);\n }\n\n // \u2500\u2500\u2500 Review group \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** How edits are being recorded right now. */\n get trackedChanges(): TrackedChangeMode {\n return this.options.trackedChanges;\n }\n\n /**\n * Switch tracked-changes mode mid-session (Word's \"Track Changes\" toggle). Undo history and\n * edits survive; the document re-renders so revisions show (or stop showing) inline.\n */\n setTrackedChanges(mode: TrackedChangeMode): void {\n this.assertOpen();\n if (this.options.trackedChanges === mode) return;\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.SetTrackedChanges !== \"function\") return;\n bridge.SetTrackedChanges(this.handle, mode);\n this.options.trackedChanges = mode;\n this.remount();\n }\n\n setRevisionAuthor(author: string): void {\n this.assertOpen();\n this.options.revisionAuthor = author;\n this.exports.DocxSessionBridge.SetRevisionAuthor?.(this.handle, author);\n }\n\n /** Every tracked revision in the document, from the session's registry. */\n listRevisions(): RevisionListEntry[] {\n const bridge = this.exports.DocxSessionBridge;\n if (this.closed || typeof bridge.ListRevisions !== \"function\") return [];\n try {\n const parsed = JSON.parse(bridge.ListRevisions(this.handle)) as RevisionListEntry[] | { error?: string };\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n }\n\n acceptRevision(revisionId: string): boolean {\n return this.resolveRevision(\"AcceptRevision\", revisionId);\n }\n\n rejectRevision(revisionId: string): boolean {\n return this.resolveRevision(\"RejectRevision\", revisionId);\n }\n\n acceptAllRevisions(): boolean {\n return this.resolveRevision(\"AcceptAllRevisions\");\n }\n\n rejectAllRevisions(): boolean {\n return this.resolveRevision(\"RejectAllRevisions\");\n }\n\n private resolveRevision(\n op: \"AcceptRevision\" | \"RejectRevision\" | \"AcceptAllRevisions\" | \"RejectAllRevisions\",\n revisionId?: string,\n ): boolean {\n const bridge = this.exports.DocxSessionBridge;\n if (this.closed) return false;\n const idx = this.activeBlock ? this.blockIndex(this.activeBlock) : -1;\n let json: string;\n if (op === \"AcceptRevision\" || op === \"RejectRevision\") {\n const fn = bridge[op];\n if (typeof fn !== \"function\" || !revisionId) return false;\n json = fn(this.handle, revisionId);\n } else {\n const fn = bridge[op];\n if (typeof fn !== \"function\") return false;\n json = fn(this.handle);\n }\n const res = this.parseEdit(json);\n if (!res.success) return false;\n // Resolution rewrites markup across the document; the reconciler proves what it can.\n this.reconcile(idx, false);\n return true;\n }\n\n /** Rendered revision marks in document order \u2014 what Previous/Next step through. */\n revisionElements(): HTMLElement[] {\n return Array.from(\n this.container.querySelectorAll<HTMLElement>(\n 'ins[class*=\"-ins\"], del[class*=\"-del\"], ins[class*=\"move-to\"], del[class*=\"move-from\"], ' +\n 'tr[class*=\"row-ins\"], tr[class*=\"row-del\"]',\n ),\n ).filter((el) => !el.closest(\"#pagination-staging, .docx-comment-gutter\"));\n }\n\n /** The registry entry a rendered revision mark belongs to (matched by block, then by text). */\n revisionAt(el: HTMLElement): RevisionListEntry | null {\n const block = el.closest<HTMLElement>(\"[data-anchor]\");\n const unid = block?.getAttribute(\"data-anchor\");\n const candidates = this.listRevisions().filter((r) => r.resolutionStatus === \"supported\");\n if (!unid) return candidates[0] ?? null;\n const inBlock = candidates.filter(\n (r) => r.anchorId?.endsWith(unid) || r.affectedAnchors?.some((a) => a.unid === unid),\n );\n if (inBlock.length === 0) return null;\n const text = (el.textContent ?? \"\").trim();\n return inBlock.find((r) => text && r.text.trim() === text) ?? inBlock[0];\n }\n\n // \u2500\u2500\u2500 Find & replace \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** Every occurrence of `query` in the editable blocks, in document order. */\n find(query: string, options: { matchCase?: boolean } = {}): EditorMatch[] {\n if (!query) return [];\n const needle = options.matchCase ? query : query.toLowerCase();\n const blocks = this.editableList().concat(\n Array.from(this.container.querySelectorAll<HTMLElement>('[data-hf-band] [data-anchor][contenteditable=\"true\"]')),\n );\n const out: EditorMatch[] = [];\n for (const block of blocks) {\n const text = blockContentText(block);\n const hay = options.matchCase ? text : text.toLowerCase();\n let from = 0;\n for (;;) {\n const at = hay.indexOf(needle, from);\n if (at < 0) break;\n out.push({ block, start: at, length: query.length });\n from = at + Math.max(1, query.length);\n }\n }\n return out;\n }\n\n /**\n * Select a match, focus its block and scroll it into view \u2014 the caret lands on the hit, so\n * typing continues in the document. A find box that is still being typed into wants\n * `showFindMatches` instead; this is the commit step (closing the bar, jumping in to edit).\n */\n selectMatch(match: EditorMatch): void {\n if (!match.block.isConnected) return;\n this.clearFindMatches();\n this.activeBlock = match.block;\n selectRange(match.block, match.start, match.length);\n match.block.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\n }\n\n /**\n * Paint `matches` and scroll the one at `activeIndex` into view WITHOUT moving focus or the\n * caret. This is what a find field calls on every keystroke: the document shows where the hits\n * are and rides to the current one, while the keyboard stays in the search box.\n *\n * Falls back to the document selection where the CSS Custom Highlight API is missing \u2014 still\n * without focusing the block, so the next character typed goes to the search field either way.\n */\n showFindMatches(matches: EditorMatch[], activeIndex: number): void {\n const active = matches[activeIndex];\n this.clearFindMatches();\n if (!active || !active.block.isConnected) return;\n this.activeBlock = active.block;\n const activeRange = contentRangeIn(active.block, active.start, active.length);\n const registry = highlightRegistry();\n if (registry && activeRange) {\n ensureFindHighlightStyles(this.container.ownerDocument);\n const rest: Range[] = [];\n for (let i = 0; i < matches.length && rest.length < FIND_PAINT_LIMIT; i++) {\n if (i === activeIndex) continue;\n const range = contentRangeIn(matches[i].block, matches[i].start, matches[i].length);\n if (range) rest.push(range);\n }\n if (rest.length > 0) registry.set(FIND_HIGHLIGHT, makeHighlight(rest));\n registry.set(FIND_HIGHLIGHT_ACTIVE, makeHighlight([activeRange]));\n findPaintOwner = this;\n } else if (activeRange) {\n // No highlight registry (older Firefox/Safari): the document selection is the only paint\n // available. It is not registry-owned, so `clearFindMatches` leaves it \u2014 the next\n // `showFindMatches` or the closing `selectMatch` overwrites it.\n const sel = this.container.ownerDocument.defaultView?.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(activeRange);\n }\n active.block.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\n }\n\n /** Drop the find painting (closing the find bar, or committing a match to the caret). */\n clearFindMatches(): void {\n if (findPaintOwner !== this) return;\n const registry = highlightRegistry();\n registry?.delete(FIND_HIGHLIGHT);\n registry?.delete(FIND_HIGHLIGHT_ACTIVE);\n findPaintOwner = null;\n }\n\n /**\n * Replace one match's text (formatting of the surrounding run is inherited). `focus: false`\n * leaves the keyboard where it is \u2014 a Replace button pressed from the find bar must not drag\n * the caret into the document mid-search.\n */\n replaceMatch(\n match: EditorMatch,\n replacement: string,\n options: { focus?: boolean } = {},\n ): boolean {\n const block = match.block;\n if (this.closed || !block.isConnected) return false;\n const unid = block.getAttribute(\"data-anchor\");\n if (!unid) return false;\n let fullId = this.anchorIdOf(block);\n if (!fullId) return false;\n fullId = this.syncBlock(block, fullId);\n if (!fullId) return false;\n const span = trimmedSpan(block, { start: match.start, length: match.length });\n if (span.length === 0) return false;\n const res = this.parseEdit(\n this.exports.DocxSessionBridge.ReplaceTextAtSpan(\n this.handle, fullId, span.start, span.length, replacement,\n ),\n );\n if (!res.success) return false;\n const fresh = this.swapBlock(block, unid, res.modified?.[0]);\n if (fresh && options.focus !== false) selectRange(fresh, span.start, replacement.length);\n return true;\n }\n\n /** Replace every occurrence; returns how many were replaced. */\n replaceAll(\n query: string,\n replacement: string,\n options: { matchCase?: boolean; focus?: boolean } = {},\n ): number {\n if (this.closed || !query) return 0;\n const matches = this.find(query, options);\n let count = 0;\n // Group by block and replace from the END so earlier offsets stay valid.\n const byBlock = new Map<HTMLElement, EditorMatch[]>();\n for (const m of matches) {\n const list = byBlock.get(m.block) ?? [];\n list.push(m);\n byBlock.set(m.block, list);\n }\n for (const [block, list] of byBlock) {\n let current: HTMLElement = block;\n for (const m of list.slice().sort((a, b) => b.start - a.start)) {\n if (!current.isConnected) break;\n const before = current;\n if (this.replaceMatch(\n { block: current, start: m.start, length: m.length }, replacement, { focus: options.focus },\n )) {\n count++;\n // swapBlock replaced the node; keep following it.\n current = this.activeBlock && this.activeBlock !== before ? this.activeBlock : current;\n }\n }\n }\n return count;\n }\n\n // \u2500\u2500\u2500 View \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** Set the author-pinned zoom (1 = 100%). Fit-to-width still caps it on narrow hosts. */\n setZoom(scale: number): void {\n this.assertOpen();\n this.viewport.setScale(scale);\n this.gutter?.schedule();\n }\n\n /** The zoom the user asked for (what a zoom control shows), before fit-to-width caps it. */\n get requestedZoom(): number {\n return this.viewport.requestedScale;\n }\n\n /** Word count over the body's editable text. */\n wordCount(): number {\n let count = 0;\n for (const block of this.editableList()) {\n // Notes are not body words in either view (the paginator's per-page note block carries\n // the \"page-footnotes\" class; the continuous view's sections are \".footnotes\"/\".endnotes\").\n if (block.closest('.footnotes, .endnotes, [class$=\"-footnotes\"], [class$=\"-endnotes\"]')) continue;\n const text = blockContentText(block);\n const words = text.match(/[\\p{L}\\p{N}][\\p{L}\\p{N}'\u2019.-]*/gu);\n count += words ? words.length : 0;\n }\n return count;\n }\n\n /** In page view, the active block's page and the page total; null in continuous view. */\n pageInfo(): { page: number; total: number } | null {\n if (!this.options.paginated) return null;\n const boxes = this.editRoot.querySelectorAll<HTMLElement>(\".page-box:not([data-section-filler])\");\n const total = boxes.length;\n const box = this.activeBlock?.closest<HTMLElement>(\".page-box\");\n const page = box ? parseInt(box.dataset.pageNumber || \"1\", 10) : 1;\n return { page, total };\n }\n\n // \u2500\u2500\u2500 Layout: section page setup \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** The section governing the active block (or the first body block). */\n sectionInfo(): SectionInfo | null {\n if (this.closed) return null;\n const block =\n this.activeBlock && !this.isBandBlock(this.activeBlock) ? this.activeBlock : this.editableList()[0];\n const unid = block?.getAttribute(\"data-anchor\");\n const fullId = unid ? this.unidToFullId.get(unid) : undefined;\n if (!fullId) return null;\n try {\n const parsed = JSON.parse(this.exports.DocxSessionBridge.GetSectionInfo(this.handle, fullId)) as SectionInfo | null;\n return parsed && typeof parsed.sectionUnid === \"string\" ? parsed : null;\n } catch {\n return null;\n }\n }\n\n /** Word's Page Setup on the section holding the caret: size, orientation, margins. */\n setPageSetup(op: EditorPageSetup): boolean {\n this.assertOpen();\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.SetPageSetup !== \"function\") return false;\n const info = this.sectionInfo();\n if (!info) return false;\n const res = this.parseEdit(bridge.SetPageSetup(this.handle, info.anchorId, JSON.stringify(op)));\n if (!res.success) return false;\n // Geometry is whole-document context (sheet width, page boxes).\n this.remount(this.activeBlock ? this.blockIndex(this.activeBlock) : -1, false);\n return true;\n }\n\n // \u2500\u2500\u2500 Header & footer (extended) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** Word's \"Different first page\" (`first`) / \"Different odd & even pages\" (`even`). */\n setHeaderFooterKindEnabled(kind: \"first\" | \"even\", enabled: boolean): boolean {\n this.assertOpen();\n return this.region?.setKindEnabled(kind, enabled) ?? false;\n }\n\n headerFooterKindEnabled(kind: \"first\" | \"even\"): boolean {\n return this.region?.kindEnabled(kind) ?? false;\n }\n\n /** \"First Page Header\", \"Footer\", \u2026 for the story a band (or the active page area) shows. */\n headerFooterStoryLabel(which: BandWhich): string {\n return this.region?.storyLabel(which) ?? (which === \"header\" ? \"Header\" : \"Footer\");\n }\n\n /** Put the caret in the header or footer (Word's \"Go to Header / Go to Footer\"). */\n goToHeaderFooter(which: BandWhich): boolean {\n this.assertOpen();\n return this.region?.focusStory(which, this.activeBlock) ?? false;\n }\n\n /** Leave the header/footer and put the caret back in the body. */\n closeHeaderFooter(): void {\n this.assertOpen();\n this.region?.close();\n const body = this.editableList();\n const target =\n this.activeBlock && !this.isBandBlock(this.activeBlock) && this.activeBlock.isConnected\n ? this.activeBlock\n : body[0];\n if (target) placeCaretAtOffset(target, 0);\n }\n\n /** Which story the caret is in, or null in the body. */\n get activeStoryKind(): BandWhich | null {\n return this.activeStory;\n }\n\n // \u2500\u2500\u2500 Introspection for chrome \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** The document's style definitions (for a styles gallery); empty on older bundles. */\n styles(): StyleInfo[] {\n const bridge = this.exports.DocxSessionBridge;\n if (this.closed || typeof bridge.ListStyles !== \"function\") return [];\n try {\n const parsed = JSON.parse(bridge.ListStyles(this.handle)) as StyleInfo[] | { error?: string };\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n }\n\n /** The active block's paragraph style id (from the render), or null. */\n styleAtCaret(): string | null {\n const info = this.paragraphFormatting();\n return info?.effectiveParagraph.styleId ?? info?.directParagraph.styleId ?? null;\n }\n\n /** Which inline formats the current selection carries \u2014 for ribbon button highlighting. */\n queryFormatState(): Record<FormatKey, boolean> {\n const block = this.activeBlock ?? this.editRoot;\n return {\n bold: selectionHasFormat(\"bold\", block),\n italic: selectionHasFormat(\"italic\", block),\n underline: selectionHasFormat(\"underline\", block),\n strike: selectionHasFormat(\"strike\", block),\n code: selectionHasFormat(\"code\", block),\n superscript: selectionHasFormat(\"superscript\", block),\n subscript: selectionHasFormat(\"subscript\", block),\n };\n }\n\n /** Re-render one block from the live session by EditResult ref, swapping it in place. */\n private swapBlock(oldEl: HTMLElement, oldUnid: string, ref?: AnchorRef): HTMLElement | null {\n const inBand = this.isBandBlock(oldEl);\n const anchorId = ref?.id ?? this.anchorIdOf(oldEl);\n const newUnid = ref?.unid ?? oldUnid;\n if (!anchorId) return null;\n const fresh = this.renderInto(anchorId);\n if (!fresh || !this.replaceNode(oldEl, fresh)) return null;\n // A band block resolves through its stamped `data-hf-anchor`, never the unid map \u2014 and its\n // unid can collide with another part's, so writing it here would corrupt that entry.\n if (!inBand) {\n this.unidToFullId.delete(oldUnid);\n this.unidToFullId.set(newUnid, anchorId);\n }\n // Stamp BEFORE wiring so wireBlock's own resolution sees the authoritative id.\n if (inBand) this.region!.adoptBlock(fresh, anchorId);\n this.wireBlock(fresh);\n this.activeBlock = fresh;\n // The throwaway render numbers citation markers from 1 \u2014 repair in place.\n this.maybeRenumberNotes(fresh);\n if (inBand) this.region!.afterStoryEdit(fresh);\n this.options.onEdit?.({ anchorId, unid: newUnid });\n return fresh;\n }\n\n /**\n * Full-document HTML from the live session. Prefers the session-attached\n * `RenderHtml` bridge \u2014 the saved bytes never cross the JS/WASM boundary\n * (two multi-MB copies per remount on a large doc) \u2014 and falls back to\n * Save + ConvertDocxToHtmlComplete for older WASM bundles. Both paths use\n * the same option profile, so the rendered HTML is identical.\n */\n /** The editor's render profile, as the comment-aware bridge endpoints take it. */\n private editorRenderProfile(): string {\n return JSON.stringify({\n cssPrefix: this.options.cssPrefix,\n fabricateClasses: this.options.fabricateClasses,\n paginated: this.options.paginated,\n scale: this.options.scale,\n renderTrackedChanges: this.renderTrackedChanges,\n comments: this.options.comments,\n });\n }\n\n /**\n * Full-document HTML from the live session. Prefers the session-attached\n * `RenderEditorHtml` (comment-aware) or `RenderHtml` bridge \u2014 the saved bytes never cross the\n * JS/WASM boundary \u2014 and falls back to `ConvertDocxToHtmlComplete` over `bytes` (the opened\n * document on first paint, else a fresh save) for older WASM bundles. Every path uses the\n * same option profile, so the rendered HTML is identical.\n */\n private renderFullHtml(bytes?: Uint8Array): string {\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.RenderEditorHtml === \"function\") {\n const html = bridge.RenderEditorHtml(this.handle, this.editorRenderProfile());\n if (html.charCodeAt(0) !== 0x7b) return html;\n }\n if (this.options.comments) {\n // Only the bytes path can render comment markup on a bundle without RenderEditorHtml.\n const source =\n bytes ??\n (typeof bridge.SaveWithAnchorIds === \"function\"\n ? bridge.SaveWithAnchorIds(this.handle)\n : bridge.Save(this.handle));\n return this.exports.DocumentConverter.ConvertDocxToHtmlComplete(\n ...completeArgs(\n source, this.options.cssPrefix, this.options.fabricateClasses,\n this.options.paginated, this.options.scale, this.renderTrackedChanges, true,\n ),\n );\n }\n if (typeof bridge.RenderHtmlForReview === \"function\") {\n const html = bridge.RenderHtmlForReview(\n this.handle,\n this.options.cssPrefix,\n this.options.fabricateClasses,\n this.options.paginated,\n this.options.scale,\n this.renderTrackedChanges,\n );\n if (html.charCodeAt(0) !== 0x7b) return html;\n }\n if (typeof bridge.RenderHtml === \"function\") {\n const html = bridge.RenderHtml(\n this.handle,\n this.options.cssPrefix,\n this.options.fabricateClasses,\n this.options.paginated,\n this.options.scale,\n );\n if (html.charCodeAt(0) !== 0x7b /* not an error object */) return html;\n }\n // Fallback only (no RenderHtml on this bridge, or it errored). These bytes are re-rendered and\n // discarded, and the re-render has to resolve to the SAME anchors the live session holds \u2014 a\n // content change re-derives a block's content-hashed unid, which would leave it unwired. So ask\n // for the Unid-bearing save here, and here only; DocxEditor.save() stays clean.\n const source =\n bytes ??\n (typeof bridge.SaveWithAnchorIds === \"function\"\n ? bridge.SaveWithAnchorIds(this.handle)\n : bridge.Save(this.handle));\n return this.exports.DocumentConverter.ConvertDocxToHtmlComplete(\n ...completeArgs(\n source, this.options.cssPrefix, this.options.fabricateClasses,\n this.options.paginated, this.options.scale, this.renderTrackedChanges, false,\n ),\n );\n }\n\n /** Editable BODY blocks in document order (band blocks are enumerated by `ownerRoot`). In page\n * view a live story sits INSIDE a page box, so it is excluded here explicitly \u2014 a remount\n * rebuilds the pages without it, and a focus index that counted it would land one block off. */\n private editableList(): HTMLElement[] {\n return Array.from(\n this.editRoot.querySelectorAll<HTMLElement>('[data-anchor][contenteditable=\"true\"]'),\n ).filter((el) => !el.closest(\"[data-hf-band]\"));\n }\n\n private blockIndex(el: HTMLElement): number {\n return Array.from(\n this.ownerRoot(el).querySelectorAll<HTMLElement>('[data-anchor][contenteditable=\"true\"]'),\n ).indexOf(el);\n }\n\n /**\n * True when an edit produced or touched a list item (kind \"li\"). List markers and\n * numbering CONTINUATION need whole-document context, which a single-block render lacks\n * (every item would render as \"1.\"), so such edits re-render the whole document.\n */\n private affectsList(res: EditResultLite): boolean {\n return [...(res.modified ?? []), ...(res.created ?? [])].some((r) => r.kind === \"li\");\n }\n\n // \u2500\u2500\u2500 Incremental structural reconcile \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n //\n // After a structural op (insert table/row/col, footnote, delete block, undo/redo)\n // the DOM is patched from a unit-sequence diff against the session's render plan\n // instead of remounting the whole document (~3 s of full-document conversion on a\n // 350-block file). Full remount remains the universal FALLBACK: any ambiguity,\n // unsupported bridge, paginated mode, list-membership change, or thrown error\n // lands there \u2014 correctness never depends on the diff being right.\n\n /** True when the bridge carries the reconcile trio and the mode allows patching. */\n private canReconcile(): boolean {\n const b = this.exports.DocxSessionBridge;\n return (\n !this.options.paginated &&\n typeof b.ListBlocks === \"function\" &&\n typeof b.RenderBlocksHtml === \"function\" &&\n typeof b.ListNotes === \"function\"\n );\n }\n\n /** The body's top-level unit nodes in document order: `[data-anchor]` elements not\n * nested in another unit (cell paragraphs collapse into their table) and not in the\n * notes sections. */\n private bodyUnitNodes(): HTMLElement[] {\n const all = Array.from(this.editRoot.querySelectorAll<HTMLElement>(\"[data-anchor]\"));\n return all.filter((el) => {\n if (el.closest(\"section.footnotes, section.endnotes\")) return false;\n const ancestor = el.parentElement?.closest(\"[data-anchor]\");\n return !(ancestor && this.editRoot.contains(ancestor));\n });\n }\n\n /** The DOM diff token for a body unit node (see editor-reconcile.tokenOf). */\n private static domTokenOf(el: HTMLElement): string {\n const unid = el.getAttribute(\"data-anchor\") ?? \"\";\n const sig = el.getAttribute(\"data-render-sig\");\n return sig ? `${unid}|${sig}` : unid;\n }\n\n /** The kind a body unit node would have in the plan (only 'li'/'tbl' matter to the\n * remount guard). */\n private static domKindOf(el: HTMLElement): string {\n if (el.tagName === \"TABLE\") return \"tbl\";\n return el.querySelector(\":scope > [data-list-marker]\") ? \"li\" : \"p\";\n }\n\n private static listMarkerText(el: Element | null): string | null {\n const m = el?.querySelector(\":scope > [data-list-marker]\");\n return m ? m.textContent : null;\n }\n\n /**\n * Incrementally patch the DOM from the session's render plan; falls back to\n * {@link remount} whenever it cannot prove the patch correct. Same focus contract\n * as remount.\n */\n private reconcile(focusIndex = -1, caretAtEnd = false): void {\n if (!this.canReconcile()) {\n this.remount(focusIndex, caretAtEnd);\n return;\n }\n try {\n if (!this.reconcileCore()) {\n this.remount(focusIndex, caretAtEnd);\n return;\n }\n } catch (err) {\n this.lastReconcileFallback = `threw: ${err instanceof Error ? err.message : String(err)}`;\n this.remount(focusIndex, caretAtEnd);\n return;\n }\n if (focusIndex >= 0) {\n const blocks = this.editableList();\n const target = blocks[Math.min(focusIndex, blocks.length - 1)];\n if (target) {\n this.activeBlock = target;\n placeCaretAtOffset(target, caretAtEnd ? (target.textContent ?? \"\").length : 0);\n }\n }\n this.syncRegionToBody(this.activeBlock ?? undefined);\n this.gutter?.schedule();\n }\n\n /** The patch itself. Returns false to request the remount fallback. */\n private reconcileCore(): boolean {\n const bridge = this.exports.DocxSessionBridge;\n // Refresh the unid \u2192 anchor map FIRST: wiring freshly rendered nodes (wireBlock)\n // resolves through it, and the map must reflect the post-op session.\n this.refreshAnchorMap();\n const plan = JSON.parse(this.renderPlanJson()) as RenderPlan & { error?: string };\n if (plan.error) return this.bail(`plan error: ${plan.error}`);\n\n const oldNodes = this.bodyUnitNodes();\n const oldTokens = oldNodes.map(DocxEditor.domTokenOf);\n const oldKinds = oldNodes.map(DocxEditor.domKindOf);\n const bodyDiff = diffUnits(oldTokens, plan.body);\n if (needsRemount(bodyDiff, plan.body, oldKinds)) {\n // Name the shape, not just the verdict: \"churn\" and \"a list item moved in or out\" are very\n // different findings when a repaint unexpectedly costs a whole-document render.\n return this.bail(\n `needsRemount (li change or churn): +${bodyDiff.added.length} -${bodyDiff.removed.length} ` +\n `~${bodyDiff.substituted.length} moved=${bodyDiff.moved.length} of ${plan.body.length}`,\n );\n }\n\n const fnState = this.notesDiff(\"footnotes\", plan.footnotes);\n const enState = this.notesDiff(\"endnotes\", plan.endnotes);\n if (fnState === null || enState === null) return this.bail(\"notes container unstampable/missing\");\n\n // One batch render for everything that needs fresh HTML.\n const movedBodyNew = new Set(bodyDiff.moved.map((m) => m.newIndex));\n const addedBodyIds = bodyDiff.added\n .filter((j) => !movedBodyNew.has(j))\n .map((j) => plan.body[j].id);\n const addedNoteIds = fnState.diff.added\n .map((j) => plan.footnotes[j].id)\n .concat(enState.diff.added.map((j) => plan.endnotes[j].id));\n const allIds = addedBodyIds.concat(addedNoteIds);\n let rendered: Record<string, string | null> = {};\n if (allIds.length > 0) {\n const idsJson = JSON.stringify(allIds);\n const renderedJson = this.renderBlocksJson(idsJson);\n rendered = JSON.parse(renderedJson);\n if ((rendered as { error?: string }).error) return this.bail(`render error: ${(rendered as { error?: string }).error}`);\n for (const id of allIds) if (!rendered[id]) return this.bail(`unrenderable: ${id}`);\n }\n\n // A substituted list item may only swap in place if its rendered marker matches\n // the old node's \u2014 a marker change (level/membership/numbering) means sibling\n // numbers shifted too, which only a remount repaints.\n const parse = (html: string): HTMLElement | null => {\n const el = new DOMParser().parseFromString(html, \"text/html\").body\n .firstElementChild as HTMLElement | null;\n // Per-block converter output carries the XHTML xmlns; a full render only has it\n // on the document root, so drop it to keep reconciled DOM \u2261 remounted DOM.\n el?.removeAttribute(\"xmlns\");\n return el;\n };\n const freshBody = new Map<number, HTMLElement>();\n for (const j of bodyDiff.added.filter((j) => !movedBodyNew.has(j))) {\n const el = parse(rendered[plan.body[j].id]!);\n if (!el) return this.bail(`unparseable render: ${plan.body[j].id}`);\n freshBody.set(j, el);\n }\n for (const { oldIndex, newIndex } of bodyDiff.substituted) {\n const freshRoot = freshBody.get(newIndex);\n const oldMarker = DocxEditor.listMarkerText(oldNodes[oldIndex]);\n const newMarker = DocxEditor.listMarkerText(\n freshRoot ? DocxEditor.anchorElOf(freshRoot) : null,\n );\n if (oldMarker !== newMarker) return this.bail(\"substituted li marker drift\");\n }\n\n const bodyApply = this.applyBodyDiff(oldNodes, plan.body, bodyDiff, freshBody);\n if (bodyApply !== true) return this.bail(`applyBodyDiff bail: ${bodyApply}`);\n this.applyNotesDiff(\"footnotes\", plan.footnotes, fnState, rendered);\n this.applyNotesDiff(\"endnotes\", plan.endnotes, enState, rendered);\n\n // Note chrome (marker sup text / hrefs / li values) is position-derived and NOT\n // covered by the unit diff \u2014 renumber whenever notes changed or any fresh body\n // node carries a citation marker.\n const freshHasMarker = [...freshBody.values()].some((el) =>\n el.querySelector(\"a.footnote-ref, a.endnote-ref\"),\n );\n if (fnState.diff.added.length + fnState.diff.removed.length > 0 || freshHasMarker)\n this.renumberNoteChrome(\"footnote\");\n if (enState.diff.added.length + enState.diff.removed.length > 0 || freshHasMarker)\n this.renumberNoteChrome(\"endnote\");\n this.lastReconcileFallback = null;\n return true;\n }\n\n private bail(reason: string): false {\n this.lastReconcileFallback = reason;\n return false;\n }\n\n /** The generated single-child wrapper chain around a unit node (a table's alignment\n * <div>). Climbs while the parent is an anchor-less DIV whose ONLY element child is\n * the current node \u2014 never a section div (multi-child) or the edit root. */\n private unitWrapperOf(el: HTMLElement): HTMLElement {\n let n: HTMLElement = el;\n while (\n n.parentElement &&\n n.parentElement !== this.editRoot &&\n n.parentElement.tagName === \"DIV\" &&\n !n.parentElement.hasAttribute(\"data-section-index\") &&\n !n.parentElement.hasAttribute(\"data-anchor\") &&\n n.parentElement.childElementCount === 1\n ) {\n n = n.parentElement;\n }\n return n;\n }\n\n /** The `[data-anchor]` element of a fresh render root (the root itself for a leaf\n * block, its descendant for a wrapper-shaped render like a table's align div). */\n private static anchorElOf(root: HTMLElement): HTMLElement | null {\n return root.hasAttribute(\"data-anchor\")\n ? root\n : root.querySelector<HTMLElement>(\"[data-anchor]\");\n }\n\n /** Insert/remove/swap body unit nodes per the diff. Returns `true` on success or a\n * bail-reason string (parent ambiguity, order violation, wrapper semantics) \u2014 the\n * session is already correct, so bailing just means a full repaint. */\n private applyBodyDiff(\n oldNodes: HTMLElement[],\n units: RenderUnit[],\n diff: UnitDiff,\n fresh: Map<number, HTMLElement>,\n ): true | string {\n // In-place substitutions first: replace at WRAPPER level so a table swaps with its\n // alignment div. A LEAF render replacing a wrapped node would break the wrapper's\n // semantics (border <div> grouping) \u2014 that is remount territory.\n const subOldByNew = new Map(diff.substituted.map((s) => [s.newIndex, s.oldIndex]));\n for (const [nj, oi] of subOldByNew) {\n const freshRoot = fresh.get(nj)!;\n const oldWrapper = this.unitWrapperOf(oldNodes[oi]);\n // A render that differs from the live node ONLY in <img> attributes (a host replacing\n // an image's media through the session \u2014 the arcade's Doom cartridge does it every\n // frame) patches those attributes on the elements already on screen instead of\n // swapping nodes. Firefox and WebKit paint a freshly inserted <img> as an empty box\n // until its data URI is decoded, so a per-frame swap strobes white between frames;\n // an in-place src change keeps the previous bitmap up until the new one is ready.\n // The live node stays wired, so only its signature stamp needs refreshing. Any\n // other difference (or a border-wrapper change) falls through to the swap below.\n const leaf = freshRoot.hasAttribute(\"data-anchor\");\n const imagePairs = imageOnlyDelta(leaf ? oldNodes[oi] : oldWrapper, freshRoot);\n if (imagePairs) {\n for (const [live, next] of imagePairs) patchImageAttributes(live, next);\n const sig = units[nj].sig;\n if (sig) oldNodes[oi].setAttribute(\"data-render-sig\", sig);\n continue;\n }\n if (!freshRoot.hasAttribute(\"data-anchor\")) {\n oldWrapper.replaceWith(freshRoot); // wrapper-shaped render (table) \u21C4 wrapper\n } else if (oldWrapper === oldNodes[oi]) {\n oldNodes[oi].replaceWith(freshRoot);\n } else if (\n !oldNodes[oi].hasAttribute(\"data-render-sig\") &&\n unidOf(units[nj].id) === oldNodes[oi].getAttribute(\"data-anchor\")\n ) {\n // Same block, leaf render, wrapped slot, and the old node carries NO signature:\n // a sig-less node is one a SINGLE-BLOCK swap placed (mount and reconcile both\n // stamp signatures), and those swaps never change border grouping \u2014 every\n // border-changing op forces a full remount. The wrapper is therefore still\n // valid; swap the leaf inside it, exactly as the single-block path itself does\n // for a bordered paragraph. A STAMPED wrapped slot whose content changed stays\n // remount territory \u2014 the change could be the border itself.\n oldNodes[oi].replaceWith(freshRoot);\n } else {\n // border-div semantics, remount\n return `leaf render into wrapped slot (unit ${units[nj].id.slice(0, 24)})`;\n }\n this.wireUnit(freshRoot, units[nj]);\n }\n\n const movedOldByNew = new Map(diff.moved.map((m) => [m.newIndex, m.oldIndex]));\n const movedNew = new Set(diff.moved.map((m) => m.newIndex));\n const movedOld = new Set(diff.moved.map((m) => m.oldIndex));\n const pureAdded = diff.added.filter((j) => !subOldByNew.has(j) && !movedNew.has(j));\n const pureRemoved = diff.removed.filter(\n (i) => !diff.substituted.some((s) => s.oldIndex === i) && !movedOld.has(i),\n );\n // DOMParser roots report isConnected=true because they belong to their detached\n // HTMLDocument. Track only fresh additions actually inserted into the live editor;\n // otherwise a later not-yet-applied sibling looks like a neighbor in another parent.\n const appliedFresh = new Set<number>();\n const nodeAt = (j: number): HTMLElement | null => {\n const oi = diff.keep.get(j);\n if (oi !== undefined) return oldNodes[oi];\n const movedOi = movedOldByNew.get(j);\n if (movedOi !== undefined) return oldNodes[movedOi];\n if (subOldByNew.has(j)) return fresh.get(j)!;\n const f = fresh.get(j);\n return f && appliedFresh.has(j) ? f : null;\n };\n\n // Preserve the established incremental insertion path: body render output may\n // legitimately use several wrapper parents (for example border groups), so it is\n // not valid to normalize the whole body against one common parent.\n for (const j of pureAdded) {\n const el = fresh.get(j)!;\n let prev: HTMLElement | null = null;\n for (let k = j - 1; k >= 0 && !prev; k--) prev = nodeAt(k);\n let next: HTMLElement | null = null;\n for (let k = j + 1; k < units.length && !next; k++) next = nodeAt(k);\n const prevW = prev ? this.unitWrapperOf(prev) : null;\n const nextW = next ? this.unitWrapperOf(next) : null;\n if (prevW && nextW && prevW.parentElement !== nextW.parentElement)\n return \"insert neighbors in different parents\";\n if (prevW) prevW.after(el);\n else if (nextW) nextW.before(el);\n else return \"insert with no anchored neighbor\";\n appliedFresh.add(j);\n this.wireUnit(el, units[j]);\n }\n\n // Pure removals take their now-empty generated wrappers with them. Exact-token\n // move sources remain live even though the LCS also reports them as removed.\n for (const i of pureRemoved) {\n this.unitWrapperOf(oldNodes[i]).remove();\n }\n\n // A block move changes one exact-token unit's slot. Move only that existing\n // wrapper beside its final neighbor; this preserves identity without disturbing\n // unrelated nodes or assuming every rendered unit shares one DOM parent.\n for (const { newIndex } of [...diff.moved].sort((a, b) => a.newIndex - b.newIndex)) {\n const moving = nodeAt(newIndex);\n if (!moving?.isConnected) return \"move source is not connected\";\n const movingW = this.unitWrapperOf(moving);\n let prevW: HTMLElement | null = null;\n for (let k = newIndex - 1; k >= 0 && !prevW; k--) {\n const n = nodeAt(k);\n if (n?.isConnected) prevW = this.unitWrapperOf(n);\n }\n let nextW: HTMLElement | null = null;\n for (let k = newIndex + 1; k < units.length && !nextW; k++) {\n const n = nodeAt(k);\n if (n?.isConnected) nextW = this.unitWrapperOf(n);\n }\n if (prevW && prevW !== movingW && prevW.parentElement === movingW.parentElement) {\n prevW.after(movingW);\n } else if (nextW && nextW !== movingW && nextW.parentElement === movingW.parentElement) {\n nextW.before(movingW);\n } else {\n return \"move neighbors in different parents\";\n }\n }\n return true;\n }\n\n /** Wire a freshly rendered unit root (and its nested blocks) and stamp the unit's\n * content signature on its `[data-anchor]` element \u2014 the element the next\n * reconcile's DOM walk reads tokens from. */\n private wireUnit(root: HTMLElement, unit: RenderUnit): void {\n const anchorEl = DocxEditor.anchorElOf(root);\n if (anchorEl && unit.sig) anchorEl.setAttribute(\"data-render-sig\", unit.sig);\n if (anchorEl) this.wireBlock(anchorEl);\n root.querySelectorAll<HTMLElement>(\"[data-anchor]\").forEach((b) => this.wireBlock(b));\n }\n\n /** Old-sequence diff state for one notes section. `null` requests remount when an\n * existing list is not stampable; an absent list is the valid first-note case. */\n private notesDiff(\n sectionClass: \"footnotes\" | \"endnotes\",\n units: RenderUnit[],\n ): { lis: HTMLElement[]; diff: UnitDiff } | null {\n const ol = this.editRoot.querySelector<HTMLElement>(`section.${sectionClass} > ol`);\n const lis = ol ? (Array.from(ol.children).filter((c) => c.tagName === \"LI\") as HTMLElement[]) : [];\n if (units.length === 0 && lis.length === 0) return { lis, diff: diffUnits([], []) };\n // Full render omits empty note sections. Treat the first note as an insertion into\n // an empty list; applyNotesDiff creates the converter-equivalent section + list.\n if (!ol) return { lis, diff: diffUnits([], units) };\n const tokens: string[] = [];\n for (const li of lis) {\n const unid = li.getAttribute(\"data-note-anchor\");\n if (!unid) return null; // unstamped DOM (older mount) \u2014 remount restamps\n const sig = li.getAttribute(\"data-render-sig\");\n tokens.push(sig ? `${unid}|${sig}` : unid);\n }\n return { lis, diff: diffUnits(tokens, units) };\n }\n\n /** Apply a notes-section diff: rebuild the `<ol>`'s li list, preserving kept nodes. */\n private applyNotesDiff(\n sectionClass: \"footnotes\" | \"endnotes\",\n units: RenderUnit[],\n state: { lis: HTMLElement[]; diff: UnitDiff },\n rendered: Record<string, string | null>,\n ): void {\n if (state.diff.added.length === 0 && state.diff.removed.length === 0) return;\n // Removing the LAST note removes the whole section \u2014 a full render emits no\n // section for a document without notes, and equivalence with remount is the pin.\n if (units.length === 0) {\n this.editRoot.querySelector(`section.${sectionClass}`)?.remove();\n return;\n }\n let section = this.editRoot.querySelector<HTMLElement>(`:scope > section.${sectionClass}`);\n let ol = section?.querySelector<HTMLOListElement>(`:scope > ol`) ?? null;\n if (!ol) {\n if (!section) {\n section = document.createElement(\"section\");\n section.className = sectionClass;\n const following = sectionClass === \"footnotes\"\n ? this.editRoot.querySelector<HTMLElement>(`:scope > section.endnotes`)\n : null;\n if (following) following.before(section);\n else this.editRoot.append(section);\n }\n if (!section.querySelector(\":scope > hr\")) section.prepend(document.createElement(\"hr\"));\n ol = document.createElement(\"ol\");\n section.append(ol);\n }\n const prefix = sectionClass === \"footnotes\" ? \"fn\" : \"en\";\n const nodes: HTMLElement[] = [];\n for (let j = 0; j < units.length; j++) {\n const oi = state.diff.keep.get(j);\n if (oi !== undefined) {\n nodes.push(state.lis[oi]);\n continue;\n }\n nodes.push(this.buildNoteLi(prefix, units[j], rendered[units[j].id]!));\n }\n ol.replaceChildren(...nodes);\n }\n\n /** Build a notes-section `<li>` for a freshly rendered note \u2014 replicating the\n * converter's chrome (id/value are re-stamped by the renumber pass; the backref\n * goes inside the last paragraph, matching RenderFootnoteItem). */\n private buildNoteLi(prefix: \"fn\" | \"en\", unit: RenderUnit, html: string): HTMLElement {\n const li = document.createElement(\"li\");\n li.setAttribute(\"data-note-anchor\", unidOf(unit.id));\n if (unit.sig) li.setAttribute(\"data-render-sig\", unit.sig);\n li.innerHTML = html;\n const paras = li.querySelectorAll<HTMLElement>(\":scope > p\");\n const last = paras[paras.length - 1];\n if (last) {\n const backref = document.createElement(\"a\");\n backref.setAttribute(\"class\", `${prefix}-backref`);\n backref.setAttribute(\"contenteditable\", \"false\");\n // The separator space must live INSIDE the chrome element. As a bare text\n // node in the paragraph it was counted by blockContentText, giving the\n // committed baseline a phantom trailing character the session's flat text\n // does not have \u2014 every later span commit then computed offsets one past\n // the session text and died with offset_out_of_range, silently reverting\n // the user's note edit (#583).\n backref.textContent = \" \u21A9\";\n last.append(backref);\n }\n li.querySelectorAll<HTMLElement>(\"[data-anchor]\").forEach((b) => this.wireBlock(b));\n return li;\n }\n\n /**\n * Rewrite position-derived note chrome from the session's citation-ordered note\n * list: the k-th marker in document order IS note k (ids ascend in reference\n * order), so marker sup text, hrefs/ids, li ids/values and backref hrefs are all\n * re-derived positionally. Pure attribute/text patching of generated chrome.\n */\n private renumberNoteChrome(kind: \"footnote\" | \"endnote\"): void {\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.ListNotes !== \"function\") return;\n const prefix = kind === \"footnote\" ? \"fn\" : \"en\";\n let notes: Array<{ id: string; defAnchorId: string; ordinal: number }>;\n try {\n notes = JSON.parse(bridge.ListNotes(this.handle, kind === \"endnote\"));\n } catch {\n return;\n }\n if (!Array.isArray(notes)) return;\n const markers = Array.from(\n this.editRoot.querySelectorAll<HTMLElement>(`a.${kind}-ref`),\n ).filter((a) => !a.closest(\"section.footnotes, section.endnotes\"));\n markers.forEach((a, k) => {\n const n = notes[k];\n if (!n) return;\n a.setAttribute(\"href\", `#${prefix}-${n.id}`);\n a.id = `${prefix}-ref-${n.id}`;\n if (kind === \"footnote\") a.setAttribute(\"data-footnote-id\", n.id);\n const sup = a.querySelector(\"sup\");\n if (sup) sup.textContent = String(n.ordinal);\n });\n // Match list items by their stamped note anchor, NOT position: the section can\n // hold rendered-but-never-cited notes (Word's continuationNotice) that ListNotes\n // \u2014 a citation walk \u2014 does not list; positional pairing would relabel them.\n const byUnid = new Map(notes.map((n) => [unidOf(n.defAnchorId), n]));\n const lis = this.editRoot.querySelectorAll<HTMLElement>(`section.${kind}s > ol > li`);\n lis.forEach((li) => {\n const unid = li.getAttribute(\"data-note-anchor\");\n const n = unid ? byUnid.get(unid) : undefined;\n if (!n) return;\n li.id = `${prefix}-${n.id}`;\n li.setAttribute(\"value\", String(n.ordinal));\n li.querySelectorAll<HTMLElement>(`a.${prefix}-backref`).forEach((b) =>\n b.setAttribute(\"href\", `#${prefix}-ref-${n.id}`),\n );\n });\n }\n\n /** After an incremental block swap, stale marker chrome in the swapped node (the\n * throwaway render numbers citations from 1) is repaired in place. */\n private maybeRenumberNotes(fresh: HTMLElement): void {\n if (fresh.querySelector(\"a.footnote-ref\")) this.renumberNoteChrome(\"footnote\");\n if (fresh.querySelector(\"a.endnote-ref\")) this.renumberNoteChrome(\"endnote\");\n }\n\n /** Stamp the DOM state the reconciler diffs against: container signatures on body\n * tables and `data-note-anchor` + signature on notes-section items. Called after\n * every full mount; reconcile stamps its own insertions. */\n private stampPlanState(): void {\n const bridge = this.exports.DocxSessionBridge;\n if (typeof bridge.ListBlocks !== \"function\") return;\n try {\n const plan = JSON.parse(this.renderPlanJson()) as RenderPlan & { error?: string };\n if (plan.error) return;\n // Positional pairing: a fresh full mount renders exactly the plan's units in\n // order (verified invariant). On any mismatch, leave unstamped \u2014 an unstamped\n // unit just diffs as changed and re-renders once.\n const nodes = this.bodyUnitNodes();\n if (nodes.length === plan.body.length) {\n nodes.forEach((el, k) => {\n if (plan.body[k].sig && el.getAttribute(\"data-anchor\") === unidOf(plan.body[k].id))\n el.setAttribute(\"data-render-sig\", plan.body[k].sig!);\n });\n }\n const stampNotes = (sectionClass: string, units: RenderUnit[]): void => {\n const lis = this.editRoot.querySelectorAll<HTMLElement>(`section.${sectionClass} > ol > li`);\n if (lis.length !== units.length) return; // inconsistent \u2014 leave unstamped (reconcile will remount)\n lis.forEach((li, k) => {\n li.setAttribute(\"data-note-anchor\", unidOf(units[k].id));\n if (units[k].sig) li.setAttribute(\"data-render-sig\", units[k].sig!);\n });\n };\n stampNotes(\"footnotes\", plan.footnotes);\n stampNotes(\"endnotes\", plan.endnotes);\n } catch {\n /* stamping is best-effort; unstamped DOM just falls back to remount */\n }\n }\n\n /**\n * Full re-render from current session state (after undo/redo, and after list edits where\n * single-block rendering can't compute numbering). Optionally focus the editable block at\n * `focusIndex` (caret at start, or end if `caretAtEnd`) \u2014 addressed by index because a\n * block's content-hashed unid changes across the save/reproject a remount performs.\n */\n private remount(focusIndex = -1, caretAtEnd = false): void {\n this.teardownBlockDrag();\n this.refreshAnchorMap();\n const fullHtml = this.renderFullHtml();\n this.activeBlock = null;\n if (this.options.paginated) this.mountPaginated(fullHtml);\n else this.mountHtml(fullHtml);\n if (focusIndex >= 0) {\n const blocks = this.editableList();\n const target = blocks[Math.min(focusIndex, blocks.length - 1)];\n if (target) {\n this.activeBlock = target;\n placeCaretAtOffset(target, caretAtEnd ? (target.textContent ?? \"\").length : 0);\n }\n }\n // A remount rebuilds the body from the live session; re-resolve the section so undo/redo of a\n // section-affecting edit (or a pagination toggle) leaves the bands describing the right one.\n this.syncRegionToBody(this.activeBlock ?? undefined);\n this.setupBlockDrag();\n this.gutter?.schedule();\n }\n\n /** Re-append the gutter after a mount emptied the container (mounts replace `innerHTML`). */\n private readoptGutter(): void {\n this.gutter?.reattach();\n }\n}\n\nconst commentGutterStyledDocuments = new WeakSet<Document>();\nfunction ensureCommentGutterStyles(doc: Document): void {\n if (commentGutterStyledDocuments.has(doc)) return;\n commentGutterStyledDocuments.add(doc);\n const style = doc.createElement(\"style\");\n style.dataset.docxodusCommentGutter = \"true\";\n style.textContent = COMMENT_GUTTER_CSS;\n (doc.head ?? doc.documentElement).appendChild(style);\n}\n", "function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };", "function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };", "function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };", "import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };", "function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };", "import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };", "import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { bind } from 'bind-event-listener';\nimport { getElementFromPointWithoutHoneypot } from '../honey-pot-fix/get-element-from-point-without-honey-pot';\nimport { makeHoneyPotFix } from '../honey-pot-fix/make-honey-pot-fix';\nimport { makeAdapter } from '../make-adapter/make-adapter';\nimport { combine } from '../public-utils/combine';\nimport { once } from '../public-utils/once';\nimport { addAttribute } from '../util/add-attribute';\nimport { androidFallbackText, isAndroid } from '../util/android';\nimport { getInput } from '../util/get-input';\nimport { textMediaType } from '../util/media-types/text-media-type';\nimport { URLMediaType } from '../util/media-types/url-media-type';\nimport { elementAdapterNativeDataKey } from './element-adapter-native-data-key';\nvar draggableRegistry = new WeakMap();\nfunction addToRegistry(args) {\n draggableRegistry.set(args.element, args);\n return function cleanup() {\n draggableRegistry.delete(args.element);\n };\n}\nvar honeyPotFix = makeHoneyPotFix();\nvar adapter = makeAdapter({\n typeKey: 'element',\n defaultDropEffect: 'move',\n mount: function mount(api) {\n /** Binding event listeners the `document` rather than `window` so that\n * this adapter always gets preference over the text adapter.\n * `document` is the first `EventTarget` under `window`\n * https://twitter.com/alexandereardon/status/1604658588311465985\n */\n return combine(honeyPotFix.bindEvents(), bind(document, {\n type: 'dragstart',\n listener: function listener(event) {\n var _entry$dragHandle, _entry$getInitialData, _entry$getInitialData2, _entry$dragHandle2, _entry$getInitialData3, _entry$getInitialData4;\n if (!api.canStart(event)) {\n return;\n }\n\n // If the \"dragstart\" event is cancelled, then a drag won't start\n // There will be no further drag operation events (eg no \"dragend\" event)\n if (event.defaultPrevented) {\n return;\n }\n\n // Technically `dataTransfer` can be `null` according to the types\n // But that behaviour does not seem to appear in the spec.\n // If there is not `dataTransfer`, we can assume something is wrong and not\n // start a drag\n if (!event.dataTransfer) {\n // Including this code on \"test\" and \"development\" environments:\n // - Browser tests commonly run against \"development\" builds\n // - Unit tests commonly run in \"test\"\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"\\n It appears as though you have are not testing DragEvents correctly.\\n\\n - If you are unit testing, ensure you have polyfilled DragEvent.\\n - If you are browser testing, ensure you are dispatching drag events correctly.\\n\\n Please see our testing guides for more information:\\n https://atlassian.design/components/pragmatic-drag-and-drop/core-package/testing\\n \".replace(/ {2}/g, ''));\n }\n return;\n }\n\n // the closest parent that is a draggable element will be marked as\n // the `event.target` for the event\n var target = event.target;\n\n // this source is only for elements\n // Note: only HTMLElements can have the \"draggable\" attribute\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n // see if the thing being dragged is owned by us\n var entry = draggableRegistry.get(target);\n\n // no matching element found\n // \u2192 dragging an element with `draggable=\"true\"` that is not controlled by us\n if (!entry) {\n return;\n }\n\n /**\n * A text selection drag _can_ have the `draggable` element be\n * the `event.target` if the user is dragging the text selection\n * from the `draggable`.\n *\n * To know if the `draggable` is being dragged, we look at whether any\n * `\"text/plain\"` data is being dragged. If it is, then a text selection\n * drag is occurring.\n *\n * This behaviour has been validated on:\n *\n * - Chrome@128 on Android@14\n * - Chrome@128 on iOS@17.6.1\n * - Chrome@128 on Windows@11\n * - Chrome@128 on MacOS@14.6.1\n * - Firefox@129 on Windows@11 (not possible for user to select text in a draggable)\n * - Firefox@129 on MacOS@14.6.1 (not possible for user to select text in a draggable)\n *\n * Note: Could usually just use: `event.dataTransfer.types.includes(textMediaType)`\n * but unfortunately ProseMirror is always setting `\"\"` as the dragged text\n *\n * Note: Unfortunately editor is (heavily) leaning on the current functionality today\n * and unwinding it will be a decent amount of effort. So for now, a text selection\n * where the `event.target` is a `draggable` element will still trigger the\n * element adapter.\n *\n * // Future state:\n * if(event.dataTransfer.getData(textMediaType)) {\n * \treturn;\n * }\n *\n */\n\n var input = getInput(event);\n var feedback = {\n element: entry.element,\n dragHandle: (_entry$dragHandle = entry.dragHandle) !== null && _entry$dragHandle !== void 0 ? _entry$dragHandle : null,\n input: input\n };\n\n // Check: does the draggable want to allow dragging?\n if (entry.canDrag && !entry.canDrag(feedback)) {\n // cancel drag operation if we cannot drag\n event.preventDefault();\n return;\n }\n\n // Check: is there a drag handle and is the user using it?\n if (entry.dragHandle) {\n // technically don't need this util, but just being\n // consistent with how we look up what is under the users\n // cursor.\n var over = getElementFromPointWithoutHoneypot({\n x: input.clientX,\n y: input.clientY\n });\n\n // if we are not dragging from the drag handle (or something inside the drag handle)\n // then we will cancel the active drag\n if (!entry.dragHandle.contains(over)) {\n event.preventDefault();\n return;\n }\n }\n\n /**\n * **Goal**\n * Pass information to other applications\n *\n * **Approach**\n * Put data into the native data store\n *\n * **What about the native adapter?**\n * When the element adapter puts native data into the native data store\n * the native adapter is not triggered in the current window,\n * but a native adapter in an external window _can_ be triggered\n *\n * **Why bake this into core?**\n * This functionality could be pulled out and exposed inside of\n * `onGenerateDragPreview`. But decided to make it a part of the\n * base API as it felt like a common enough use case and ended\n * up being a similar amount of code to include this function as\n * it was to expose the hook for it\n */\n var nativeData = (_entry$getInitialData = (_entry$getInitialData2 = entry.getInitialDataForExternal) === null || _entry$getInitialData2 === void 0 ? void 0 : _entry$getInitialData2.call(entry, feedback)) !== null && _entry$getInitialData !== void 0 ? _entry$getInitialData : null;\n if (nativeData) {\n for (var _i = 0, _Object$entries = Object.entries(nativeData); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n key = _Object$entries$_i[0],\n data = _Object$entries$_i[1];\n event.dataTransfer.setData(key, data !== null && data !== void 0 ? data : '');\n }\n }\n\n /**\n * \uD83D\uDCF1 For Android devices, a drag operation will not start unless\n * \"text/plain\" or \"text/uri-list\" data exists in the native data store\n * https://twitter.com/alexandereardon/status/1732189803754713424\n *\n * Tested on:\n * Device: Google Pixel 5\n * Android version: 14 (November 5, 2023)\n * Chrome version: 120.0\n */\n if (isAndroid() && !event.dataTransfer.types.includes(textMediaType) && !event.dataTransfer.types.includes(URLMediaType)) {\n event.dataTransfer.setData(textMediaType, androidFallbackText);\n }\n\n /**\n * 1. Must set any media type for `iOS15` to work\n * 2. We are also doing adding data so that the native adapter\n * can know that the element adapter has handled this drag\n *\n * We used to wrap this `setData()` in a `try/catch` for Firefox,\n * but it looks like that was not needed.\n *\n * Tested using: https://codesandbox.io/s/checking-firefox-throw-behaviour-on-dragstart-qt8h4f\n *\n * - \u2705 Firefox@70.0 (Oct 2019) on macOS Sonoma\n * - \u2705 Firefox@70.0 (Oct 2019) on macOS Big Sur\n * - \u2705 Firefox@70.0 (Oct 2019) on Windows 10\n *\n * // just checking a few more combinations to be super safe\n *\n * - \u2705 Chrome@78 (Oct 2019) on macOS Big Sur\n * - \u2705 Chrome@78 (Oct 2019) on Windows 10\n * - \u2705 Safari@14.1 on macOS Big Sur\n */\n event.dataTransfer.setData(elementAdapterNativeDataKey, '');\n var payload = {\n element: entry.element,\n dragHandle: (_entry$dragHandle2 = entry.dragHandle) !== null && _entry$dragHandle2 !== void 0 ? _entry$dragHandle2 : null,\n data: (_entry$getInitialData3 = (_entry$getInitialData4 = entry.getInitialData) === null || _entry$getInitialData4 === void 0 ? void 0 : _entry$getInitialData4.call(entry, feedback)) !== null && _entry$getInitialData3 !== void 0 ? _entry$getInitialData3 : {}\n };\n var dragType = {\n type: 'element',\n payload: payload,\n startedFrom: 'internal'\n };\n api.start({\n event: event,\n dragType: dragType\n });\n }\n }));\n },\n dispatchEventToSource: function dispatchEventToSource(_ref) {\n var _draggableRegistry$ge, _draggableRegistry$ge2;\n var eventName = _ref.eventName,\n payload = _ref.payload;\n // During a drag operation, a draggable can be:\n // - remounted with different functions\n // - removed completely\n // So we need to get the latest entry from the registry in order\n // to call the latest event functions\n\n (_draggableRegistry$ge = draggableRegistry.get(payload.source.element)) === null || _draggableRegistry$ge === void 0 || (_draggableRegistry$ge2 = _draggableRegistry$ge[eventName]) === null || _draggableRegistry$ge2 === void 0 || _draggableRegistry$ge2.call(_draggableRegistry$ge,\n // I cannot seem to get the types right here.\n // TS doesn't seem to like that one event can need `nativeSetDragImage`\n // @ts-expect-error\n payload);\n },\n onPostDispatch: honeyPotFix.getOnPostDispatch()\n});\nexport var dropTargetForElements = adapter.dropTarget;\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport var monitorForElements = adapter.monitor;\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function draggable(args) {\n // Guardrail: warn if the drag handle is not contained in draggable element\n if (process.env.NODE_ENV !== 'production') {\n if (args.dragHandle && !args.element.contains(args.dragHandle)) {\n // eslint-disable-next-line no-console\n console.warn('Drag handle element must be contained in draggable element', {\n element: args.element,\n dragHandle: args.dragHandle\n });\n }\n }\n // Guardrail: warn if the draggable element is already registered\n if (process.env.NODE_ENV !== 'production') {\n var existing = draggableRegistry.get(args.element);\n if (existing) {\n // eslint-disable-next-line no-console\n console.warn('You have already registered a `draggable` on the same element', {\n existing: existing,\n proposed: args\n });\n }\n }\n var cleanup = combine(\n // making the draggable register the adapter rather than drop targets\n // this is because you *must* have a draggable element to start a drag\n // but you _might_ not have any drop targets immediately\n // (You might create drop targets async)\n adapter.registerUsage(), addToRegistry(args), addAttribute(args.element, {\n attribute: 'draggable',\n value: 'true'\n }));\n\n // Wrapping in `once` to prevent unexpected side effects if consumers call\n // the clean up function multiple times.\n return once(cleanup);\n}\n\n/** Common event payload for all events */\n\n/** A map containing payloads for all events */\n\n/** Common event payload for all drop target events */\n\n/** A map containing payloads for all events on drop targets */\n\n/** Arguments given to all feedback functions (eg `canDrag()`) on for a `draggable()` */\n\n/** Arguments given to all feedback functions (eg `canDrop()`) on a `dropTargetForElements()` */\n\n/** Arguments given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForElements` */", "// pulling this into a separate file so adapter(s) that don't\n// need the honey pot can pay as little as possible for it.\nexport var honeyPotDataAttribute = 'data-pdnd-honey-pot';", "import { honeyPotDataAttribute } from './honey-pot-data-attribute';\nexport function isHoneyPotElement(target) {\n return target instanceof Element && target.hasAttribute(honeyPotDataAttribute);\n}", "import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { isHoneyPotElement } from './is-honey-pot-element';\nexport function getElementFromPointWithoutHoneypot(client) {\n // eslint-disable-next-line no-restricted-syntax\n var _document$elementsFro = document.elementsFromPoint(client.x, client.y),\n _document$elementsFro2 = _slicedToArray(_document$elementsFro, 2),\n top = _document$elementsFro2[0],\n second = _document$elementsFro2[1];\n if (!top) {\n return null;\n }\n if (isHoneyPotElement(top)) {\n return second !== null && second !== void 0 ? second : null;\n }\n return top;\n}", "function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };", "import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { bind, bindAll } from 'bind-event-listener';\nimport { maxZIndex } from '../util/max-z-index';\nimport { popoverResetUserAgentStyles } from '../util/popover-reset-styles';\nimport { supportsPopover } from '../util/supports-popover';\nimport { honeyPotDataAttribute } from './honey-pot-data-attribute';\nvar honeyPotSize = 2;\nvar halfHoneyPotSize = honeyPotSize / 2;\n\n/**\n * `clientX` and `clientY` can be in sub pixels (eg `2.332`)\n * However, browser hitbox testing is commonly do to the closest pixel.\n *\n * \u2192 https://issues.chromium.org/issues/40940531\n *\n * To be sure that the honey pot will be over the `client` position,\n * we `.floor()` `clientX` and`clientY` and then make it `2px` in size.\n **/\nfunction floorToClosestPixel(point) {\n return {\n x: Math.floor(point.x),\n y: Math.floor(point.y)\n };\n}\n\n/**\n * We want to make sure the honey pot sits around the users position.\n * This seemed to be the most resilient while testing.\n */\nfunction pullBackByHalfHoneyPotSize(point) {\n return {\n x: point.x - halfHoneyPotSize,\n y: point.y - halfHoneyPotSize\n };\n}\n\n/**\n * Prevent the honey pot from changing the window size.\n * This is super unlikely to occur, but just being safe.\n */\nfunction preventGoingBackwardsOffScreen(point) {\n return {\n x: Math.max(point.x, 0),\n y: Math.max(point.y, 0)\n };\n}\n\n/**\n * Prevent the honey pot from changing the window size.\n * This is super unlikely to occur, but just being safe.\n */\nfunction preventGoingForwardsOffScreen(point) {\n return {\n x: Math.min(point.x, window.innerWidth - honeyPotSize),\n y: Math.min(point.y, window.innerHeight - honeyPotSize)\n };\n}\n\n/**\n * Create a `2x2` `DOMRect` around the `client` position\n */\nfunction getHoneyPotRectFor(_ref) {\n var client = _ref.client;\n var point = preventGoingForwardsOffScreen(preventGoingBackwardsOffScreen(pullBackByHalfHoneyPotSize(floorToClosestPixel(client))));\n\n // When debugging, it is helpful to\n // make this element a bit bigger\n return DOMRect.fromRect({\n x: point.x,\n y: point.y,\n width: honeyPotSize,\n height: honeyPotSize\n });\n}\nfunction getRectStyles(_ref2) {\n var clientRect = _ref2.clientRect;\n return {\n left: \"\".concat(clientRect.left, \"px\"),\n top: \"\".concat(clientRect.top, \"px\"),\n width: \"\".concat(clientRect.width, \"px\"),\n height: \"\".concat(clientRect.height, \"px\")\n };\n}\nfunction isWithin(_ref3) {\n var client = _ref3.client,\n clientRect = _ref3.clientRect;\n return (\n // is within horizontal bounds\n client.x >= clientRect.x && client.x <= clientRect.x + clientRect.width &&\n // is within vertical bounds\n client.y >= clientRect.y && client.y <= clientRect.y + clientRect.height\n );\n}\n/**\n * The honey pot fix is designed to get around a painful bug in all browsers.\n *\n * [Overview](https://www.youtube.com/watch?v=udE9qbFTeQg)\n *\n * **Background**\n *\n * When a drag starts, browsers incorrectly think that the users pointer is\n * still depressed where the drag started. Any element that goes under this position\n * will be entered into, causing `\"mouseenter\"` events and `\":hover\"` styles to be applied.\n *\n * _This is a violation of the spec_\n *\n * > \"From the moment that the user agent is to initiate the drag-and-drop operation,\n * > until the end \tof the drag-and-drop operation, device input events\n * > (e.g. mouse and keyboard events) must be suppressed.\"\n * >\n * > - https://html.spec.whatwg.org/multipage/dnd.html#drag-and-drop-processing-model\n *\n * _Some impacts_\n *\n * - `\":hover\"` styles being applied where they shouldn't (looks messy)\n * - components such as tooltips responding to `\"mouseenter\"` can show during a drag,\n * and on an element the user isn't even over\n *\n * Bug: https://issues.chromium.org/issues/41129937\n *\n * **Honey pot fix**\n *\n * 1. Create an element where the browser thinks the depressed pointer is\n * to absorb the incorrect pointer events\n * 2. Remove that element when it is no longer needed\n */\nfunction mountHoneyPot(_ref4) {\n var initial = _ref4.initial;\n var element = document.createElement('div');\n element.setAttribute(honeyPotDataAttribute, 'true');\n\n // Using popover=\"manual\" to place the element in the browser's top layer.\n // This ensures the honey pot is visually on top of everything else,\n // including elements using z-index and other stacking contexts.\n // \"manual\" means no light dismiss \u2014 we manage the lifecycle ourselves.\n // Falls back to position:fixed + maxZIndex when the popover API is not available.\n if (supportsPopover()) {\n element.setAttribute('popover', 'manual');\n }\n\n // can shift during the drag thanks to Firefox\n var clientRect = getHoneyPotRectFor({\n client: initial\n });\n Object.assign(element.style, _objectSpread(_objectSpread({\n position: 'fixed'\n }, supportsPopover() ?\n // needs to come first as it has 'inset: unset' which\n // needs to be overridden by our top / left values\n popoverResetUserAgentStyles : {\n // Fallback: using maximum possible z-index so that this element\n // will always be on top of other positioned content.\n zIndex: maxZIndex\n }), {}, {\n // Setting a background color explicitly to avoid any inherited styles.\n // Looks like this could be `opacity: 0`, but worried that _might_\n // cause the element to be ignored on some platforms.\n // When debugging, set backgroundColor to something like \"red\".\n backgroundColor: 'transparent',\n // Being explicit to avoid inheriting styles\n padding: 0,\n margin: 0,\n boxSizing: 'border-box',\n // We want this element to absorb pointer events,\n // it's kind of the whole point \uD83D\uDE09\n pointerEvents: 'auto'\n }, getRectStyles({\n clientRect: clientRect\n })));\n document.body.appendChild(element);\n if (supportsPopover()) {\n element.showPopover();\n }\n\n /**\n * \uD83E\uDD8A In firefox we can get `\"pointermove\"` events after the drag\n * has started, which is a spec violation.\n * The final `\"pointermove\"` will reveal where the \"depressed\" position\n * is for our honey pot fix.\n */\n var unbindPointerMove = bind(window, {\n type: 'pointermove',\n listener: function listener(event) {\n var client = {\n x: event.clientX,\n y: event.clientY\n };\n clientRect = getHoneyPotRectFor({\n client: client\n });\n Object.assign(element.style, getRectStyles({\n clientRect: clientRect\n }));\n },\n // using capture so we are less likely to be impacted by event stopping\n options: {\n capture: true\n }\n });\n return function finish(_ref5) {\n var current = _ref5.current;\n // Don't need this any more\n unbindPointerMove();\n\n // If the user is hover the honey pot, we remove it\n // so that the user can continue to interact with the page normally.\n if (isWithin({\n client: current,\n clientRect: clientRect\n })) {\n element.remove();\n return;\n }\n function cleanup() {\n unbindPostDragEvents();\n element.remove();\n }\n var unbindPostDragEvents = bindAll(window, [{\n type: 'pointerdown',\n listener: cleanup\n }, {\n type: 'pointermove',\n listener: cleanup\n }, {\n type: 'focusin',\n listener: cleanup\n }, {\n type: 'focusout',\n listener: cleanup\n },\n // a 'pointerdown' should happen before 'dragstart', but just being super safe\n {\n type: 'dragstart',\n listener: cleanup\n },\n // if the user has dragged something out of the window\n // and then is dragging something back into the window\n // the first events we will see are \"dragenter\" (and then \"dragover\").\n // So if we see any of these we need to clear the post drag fix.\n {\n type: 'dragenter',\n listener: cleanup\n }, {\n type: 'dragover',\n listener: cleanup\n }\n\n // Not adding a \"wheel\" event listener, as \"wheel\" by itself does not\n // resolve the bug.\n ], {\n // Using `capture` so less likely to be impacted by other code stopping events\n capture: true\n });\n };\n}\nexport function makeHoneyPotFix() {\n var latestPointerMove = null;\n function bindEvents() {\n // For sanity, only collecting this value from when events are first bound.\n // This prevents the case where a super old \"pointermove\" could be used\n // from a prior interaction.\n latestPointerMove = null;\n return bind(window, {\n type: 'pointermove',\n listener: function listener(event) {\n latestPointerMove = {\n x: event.clientX,\n y: event.clientY\n };\n },\n // listening for pointer move in capture phase\n // so we are less likely to be impacted by events being stopped.\n options: {\n capture: true\n }\n });\n }\n function getOnPostDispatch() {\n var finish = null;\n return function onPostEvent(_ref6) {\n var eventName = _ref6.eventName,\n payload = _ref6.payload;\n // We are adding the honey pot `onDragStart` so we don't\n // impact the creation of the native drag preview.\n if (eventName === 'onDragStart') {\n var input = payload.location.initial.input;\n\n // Sometimes there will be no latest \"pointermove\" (eg iOS).\n // In which case, we use the start position of the drag.\n var initial = latestPointerMove !== null && latestPointerMove !== void 0 ? latestPointerMove : {\n x: input.clientX,\n y: input.clientY\n };\n\n // Don't need to defensively call `finish()` as `onDrop` from\n // one interaction is guaranteed to be called before `onDragStart`\n // of the next.\n finish = mountHoneyPot({\n initial: initial\n });\n }\n if (eventName === 'onDrop') {\n var _finish;\n var _input = payload.location.current.input;\n (_finish = finish) === null || _finish === void 0 || _finish({\n current: {\n x: _input.clientX,\n y: _input.clientY\n }\n });\n finish = null;\n // this interaction is finished, we want to use\n // the latest \"pointermove\" for each interaction\n latestPointerMove = null;\n }\n };\n }\n return {\n bindEvents: bindEvents,\n getOnPostDispatch: getOnPostDispatch\n };\n}", "// Maximum possible z-index\n// https://stackoverflow.com/questions/491052/minimum-and-maximum-value-of-z-index\nexport var maxZIndex = 2147483647;", "/**\n * Resets user agent styles for `[popover]` elements.\n *\n * Browsers apply these defaults to popovers (per the WHATWG HTML spec rendering section):\n * - `inset: 0` + `margin: auto` \u2192 centers the popover in the viewport\n * - `border: solid` \u2192 visible border\n * - `padding: 0.25em` \u2192 internal spacing\n * - `overflow: auto` \u2192 scrollbars when content overflows\n * - `color: CanvasText` + `background-color: Canvas` \u2192 system theme colors\n *\n * This object neutralizes those defaults so the popover behaves like a plain\n * positioned `<div>`, matching the sizing of the legacy (non-popover)\n * fallback container exactly.\n *\n * **Width and height (`auto`)**\n *\n * `width` and `height` override the spec user agent value of `fit-content`\n * with `auto`.\n *\n * _Why?_\n *\n * - When a `[popover]` is sized with `fit-content` and contains a flex\n * container, Safari collapses any flex item that uses `overflow: auto`\n * to `0px`.\n * - Setting the popover's `width` and `height` to `auto` skips the `fit-content`\n * pass and avoids the bug in Safari\n * - Chromium and Firefox tolerate `fit-content` here, but `auto` is safe\n * everywhere and matches our non-popover path\n */\nexport var popoverResetUserAgentStyles = {\n inset: 'unset',\n border: 'none',\n padding: 0,\n margin: 0,\n overflow: 'visible',\n color: 'inherit',\n background: 'transparent',\n width: 'auto',\n height: 'auto'\n};", "/** Provide a function that you only ever want to be called a single time */\nexport function once(fn) {\n var cache = null;\n return function wrapped() {\n if (!cache) {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var result = fn.apply(this, args);\n cache = {\n result: result\n };\n }\n return cache.result;\n };\n}", "import { once } from '../public-utils/once';\n\n// Using `once` as the value won't change in a browser\n\n/**\n * Returns `true` if the browser supports the Popover API (top-layer).\n *\n * When supported, elements with `popover=\"manual\"` can be promoted to the\n * browser's top layer via `element.showPopover()`, which is more reliable\n * than `z-index` for ensuring an element renders above everything else.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Popover_API\n */\nexport var supportsPopover = once(function supportsPopover() {\n return typeof HTMLElement !== 'undefined' && typeof HTMLElement.prototype.showPopover === 'function';\n});", "import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };", "function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };", "import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };", "import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport { bindAll } from 'bind-event-listener';\nimport { getElementFromPointWithoutHoneypot } from '../honey-pot-fix/get-element-from-point-without-honey-pot';\nimport { isHoneyPotElement } from '../honey-pot-fix/is-honey-pot-element';\nimport { isLeavingWindow } from '../util/changing-window/is-leaving-window';\nimport { getBindingsForBrokenDrags } from '../util/detect-broken-drag';\nimport { getInput } from '../util/get-input';\nimport { makeDispatch } from './dispatch-consumer-event';\nvar globalState = {\n isActive: false\n};\nfunction canStart() {\n return !globalState.isActive;\n}\nfunction getNativeSetDragImage(event) {\n if (event.dataTransfer) {\n // need to use `.bind` as `setDragImage` is required\n // to be run with `event.dataTransfer` as the \"this\" context\n return event.dataTransfer.setDragImage.bind(event.dataTransfer);\n }\n return null;\n}\nfunction hasHierarchyChanged(_ref) {\n var current = _ref.current,\n next = _ref.next;\n if (current.length !== next.length) {\n return true;\n }\n // not checking stickiness, data or dropEffect,\n // just whether the hierarchy has changed\n for (var i = 0; i < current.length; i++) {\n if (current[i].element !== next[i].element) {\n return true;\n }\n }\n return false;\n}\nfunction start(_ref2) {\n var event = _ref2.event,\n dragType = _ref2.dragType,\n getDropTargetsOver = _ref2.getDropTargetsOver,\n dispatchEvent = _ref2.dispatchEvent;\n if (!canStart()) {\n return;\n }\n var initial = getStartLocation({\n event: event,\n dragType: dragType,\n getDropTargetsOver: getDropTargetsOver\n });\n globalState.isActive = true;\n var state = {\n current: initial\n };\n\n // Setting initial drop effect for the drag\n setDropEffectOnEvent({\n event: event,\n current: initial.dropTargets\n });\n var dispatch = makeDispatch({\n source: dragType.payload,\n dispatchEvent: dispatchEvent,\n initial: initial\n });\n function updateState(next) {\n // only looking at whether hierarchy has changed to determine whether something as 'changed'\n var hasChanged = hasHierarchyChanged({\n current: state.current.dropTargets,\n next: next.dropTargets\n });\n\n // Always updating the state to include latest data, dropEffect and stickiness\n // Only updating consumers if the hierarchy has changed in some way\n // Consumers can get the latest data by using `onDrag`\n state.current = next;\n if (hasChanged) {\n dispatch.dragUpdate({\n current: state.current\n });\n }\n }\n function onUpdateEvent(event) {\n var input = getInput(event);\n\n // If we are over the honey pot, we need to get the element\n // that the user would have been over if not for the honey pot\n var target = isHoneyPotElement(event.target) ? getElementFromPointWithoutHoneypot({\n x: input.clientX,\n y: input.clientY\n }) : event.target;\n var nextDropTargets = getDropTargetsOver({\n target: target,\n input: input,\n source: dragType.payload,\n current: state.current.dropTargets\n });\n if (nextDropTargets.length) {\n // \uD83E\uDE78 must call `event.preventDefault()` to allow a browser drop to occur\n event.preventDefault();\n setDropEffectOnEvent({\n event: event,\n current: nextDropTargets\n });\n }\n updateState({\n dropTargets: nextDropTargets,\n input: input\n });\n }\n function cancel() {\n // The spec behaviour is that when a drag is cancelled, or when dropping on no drop targets,\n // a \"dragleave\" event is fired on the active drop target before a \"dragend\" event.\n // We are replicating that behaviour in `cancel` if there are any active drop targets to\n // ensure consistent behaviour.\n //\n // Note: When cancelling, or dropping on no drop targets, a \"dragleave\" event\n // will have already cleared the dropTargets to `[]` (as that particular \"dragleave\" has a `relatedTarget` of `null`)\n\n if (state.current.dropTargets.length) {\n updateState({\n dropTargets: [],\n input: state.current.input\n });\n }\n dispatch.drop({\n current: state.current,\n updatedSourcePayload: null\n });\n finish();\n }\n function finish() {\n globalState.isActive = false;\n unbindEvents();\n }\n var unbindEvents = bindAll(window, [{\n // \uD83D\uDC4B Note: we are repurposing the `dragover` event as our `drag` event\n // this is because firefox does not publish pointer coordinates during\n // a `drag` event, but does for every other type of drag event\n // `dragover` fires on all elements that are being dragged over\n // Because we are binding to `window` - our `dragover` is effectively the same as a `drag`\n // \uD83E\uDD8A\uD83D\uDE24\n type: 'dragover',\n listener: function listener(event) {\n // We need to regularly calculate the drop targets in order to allow:\n // - dynamic `canDrop()` checks\n // - rapid updating `getData()` calls to attach data in response to user input (eg for edge detection)\n // Sadly we cannot schedule inspecting changes resulting from this event\n // we need to be able to conditionally cancel the event with `event.preventDefault()`\n // to enable the correct native drop experience.\n\n // 1. check to see if anything has changed\n onUpdateEvent(event);\n\n // 2. let consumers know a move has occurred\n // This will include the latest 'input' values\n dispatch.drag({\n current: state.current\n });\n }\n }, {\n type: 'dragenter',\n listener: onUpdateEvent\n }, {\n type: 'dragleave',\n listener: function listener(event) {\n if (!isLeavingWindow({\n dragLeave: event\n })) {\n return;\n }\n\n /**\n * At this point we don't know if a drag is being cancelled,\n * or if a drag is leaving the `window`.\n *\n * Both have:\n * 1. \"dragleave\" (with `relatedTarget: null`)\n * 2. \"dragend\" (a \"dragend\" can occur when outside the `window`)\n *\n * **Clearing drop targets**\n *\n * For either case we are clearing the the drop targets\n *\n * - cancelling: we clear drop targets in `\"dragend\"` anyway\n * - leaving the `window`: we clear the drop targets (to clear stickiness)\n *\n * **Leaving the window and finishing the drag**\n *\n * _internal drags_\n *\n * - The drag continues when the user is outside the `window`\n * and can resume if the user drags back over the `window`,\n * or end when the user drops in an external `window`.\n * - We will get a `\"dragend\"`, or we can listen for other\n * events to determine the drag is finished when the user re-enters the `window`).\n *\n * _external drags_\n *\n * - We conclude the drag operation.\n * - We have no idea if the user will drag back over the `window`,\n * or if the drag ends elsewhere.\n * - We will create a new drag if the user re-enters the `window`.\n *\n * **Not updating `input`**\n *\n * \uD83D\uDC1B Bug[Chrome] the final `\"dragleave\"` has default input values (eg `clientX == 0`)\n * Workaround: intentionally not updating `input` in \"dragleave\"\n * rather than the users current input values\n * - [Conversation](https://twitter.com/alexandereardon/status/1642697633864241152)\n * - [Bug](https://bugs.chromium.org/p/chromium/issues/detail?id=1429937)\n **/\n\n updateState({\n input: state.current.input,\n dropTargets: []\n });\n if (dragType.startedFrom === 'external') {\n cancel();\n }\n }\n }, {\n // A \"drop\" can only happen if the browser allowed the drop\n type: 'drop',\n listener: function listener(event) {\n // Capture the final input.\n // We are capturing the final `input` for the\n // most accurate honey pot experience\n state.current = {\n dropTargets: state.current.dropTargets,\n input: getInput(event)\n };\n\n /** If there are no drop targets, then we will get\n * a \"drop\" event if:\n * - `preventUnhandled()` is being used\n * - there is an unmanaged drop target (eg another library)\n * In these cases, it's up to the consumer\n * to handle the drop if it's not over one of our drop targets\n * - `preventUnhandled()` will cancel the \"drop\"\n * - unmanaged drop targets can handle the \"drop\" how they want to\n * We won't call `event.preventDefault()` in this call path */\n\n if (!state.current.dropTargets.length) {\n cancel();\n return;\n }\n event.preventDefault();\n\n // applying the latest drop effect to the event\n setDropEffectOnEvent({\n event: event,\n current: state.current.dropTargets\n });\n dispatch.drop({\n current: state.current,\n // When dropping something native, we need to extract the latest\n // `.items` from the \"drop\" event as it is now accessible\n updatedSourcePayload: dragType.type === 'external' ? dragType.getDropPayload(event) : null\n });\n finish();\n }\n }, {\n // \"dragend\" fires when on the drag source (eg a draggable element)\n // when the drag is finished.\n // \"dragend\" will fire after \"drop\" (if there was a successful drop)\n // \"dragend\" does not fire if the draggable source has been removed during the drag\n // or for external drag sources (eg files)\n\n // This \"dragend\" listener will not fire if there was a successful drop\n // as we will have already removed the event listener\n\n type: 'dragend',\n listener: function listener(event) {\n // In firefox, the position of the \"dragend\" event can\n // be a bit different to the last \"dragover\" event.\n // Updating the input so we can get the best possible\n // information for the honey pot.\n state.current = {\n dropTargets: state.current.dropTargets,\n input: getInput(event)\n };\n cancel();\n }\n }].concat(_toConsumableArray(getBindingsForBrokenDrags({\n onDragEnd: cancel\n }))),\n // Once we have started a managed drag operation it is important that we see / own all drag events\n // We got one adoption bug pop up where some code was stopping (`event.stopPropagation()`)\n // all \"drop\" events in the bubble phase on the `document.body`.\n // This meant that we never saw the \"drop\" event.\n {\n capture: true\n });\n dispatch.start({\n nativeSetDragImage: getNativeSetDragImage(event)\n });\n}\nfunction setDropEffectOnEvent(_ref3) {\n var _current$;\n var event = _ref3.event,\n current = _ref3.current;\n // setting the `dropEffect` to be the innerMost drop targets dropEffect\n var innerMost = (_current$ = current[0]) === null || _current$ === void 0 ? void 0 : _current$.dropEffect;\n if (innerMost != null && event.dataTransfer) {\n event.dataTransfer.dropEffect = innerMost;\n }\n}\nfunction getStartLocation(_ref4) {\n var event = _ref4.event,\n dragType = _ref4.dragType,\n getDropTargetsOver = _ref4.getDropTargetsOver;\n var input = getInput(event);\n\n // When dragging from outside of the browser,\n // the drag is not being sourced from any local drop targets\n if (dragType.startedFrom === 'external') {\n return {\n input: input,\n dropTargets: []\n };\n }\n var dropTargets = getDropTargetsOver({\n input: input,\n source: dragType.payload,\n target: event.target,\n current: []\n });\n return {\n input: input,\n dropTargets: dropTargets\n };\n}\nexport var lifecycle = {\n canStart: canStart,\n start: start\n};", "import { once } from '../public-utils/once';\n\n// using `cache` as our `isFirefox()` result will not change in a browser\n\n/**\n * Returns `true` if a `Firefox` browser\n * */\nexport var isFirefox = once(function isFirefox() {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n return navigator.userAgent.includes('Firefox');\n});", "import { once } from '../public-utils/once';\n\n// using `cache` as our `isSafari()` result will not change in a browser\n\n/**\n * Returns `true` if a `Safari` browser.\n * Returns `true` if the browser is running on iOS (they are all Safari).\n *\n * Use `isSafariOnIOS` if you want to check if something is Safari + iOS\n * */\nexport var isSafari = once(function isSafari() {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n var _navigator = navigator,\n userAgent = _navigator.userAgent;\n return userAgent.includes('AppleWebKit') && !userAgent.includes('Chrome');\n});", "import { bindAll } from 'bind-event-listener';\nimport { isSafari } from '../is-safari';\n\n/* For \"dragenter\" events, the browser should set `relatedTarget` to the previous element.\n * For external drag operations, our first \"dragenter\" event should have a `event.relatedTarget` of `null`.\n *\n * Unfortunately in Safari `event.relatedTarget` is *always* set to `null`\n * Safari bug: https://bugs.webkit.org/show_bug.cgi?id=242627\n * To work around this we count \"dragenter\" and \"dragleave\" events */\n\n// Using symbols for event properties so we don't clash with\n// anything on the `event` object\nvar symbols = {\n isLeavingWindow: Symbol('leaving'),\n isEnteringWindow: Symbol('entering')\n};\nexport function isEnteringWindowInSafari(_ref) {\n var dragEnter = _ref.dragEnter;\n if (!isSafari()) {\n return false;\n }\n return dragEnter.hasOwnProperty(symbols.isEnteringWindow);\n}\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function isLeavingWindowInSafari(_ref2) {\n var dragLeave = _ref2.dragLeave;\n if (!isSafari()) {\n return false;\n }\n return dragLeave.hasOwnProperty(symbols.isLeavingWindow);\n}\n(function fixSafari() {\n // Don't do anything when server side rendering\n if (typeof window === 'undefined') {\n return;\n }\n\n // rather than checking the userAgent for \"jsdom\" we can do this check\n // so that the check will be removed completely in production code\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n if (!isSafari()) {\n return;\n }\n function getInitialState() {\n return {\n enterCount: 0,\n isOverWindow: false\n };\n }\n var state = getInitialState();\n function resetState() {\n state = getInitialState();\n }\n\n // These event listeners are bound _forever_ and _never_ removed\n // We don't bother cleaning up these event listeners (for now)\n // as this workaround is only for Safari\n\n // This is how the event count works:\n //\n // lift (+1 enterCount)\n // - dragstart(draggable) [enterCount: 0]\n // - dragenter(draggable) [enterCount: 1]\n // leaving draggable (+0 enterCount)\n // - dragenter(document.body) [enterCount: 2]\n // - dragleave(draggable) [enterCount: 1]\n // leaving window (-1 enterCount)\n // - dragleave(document.body) [enterCount: 0] {leaving the window}\n\n // Things to note:\n // - dragenter and dragleave bubble\n // - the first dragenter when entering a window might not be on `window`\n // - it could be on an element that is pressed up against the window\n // - (so we cannot rely on `event.target` values)\n\n bindAll(window, [{\n type: 'dragstart',\n listener: function listener() {\n state.enterCount = 0;\n // drag start occurs in the source window\n state.isOverWindow = true;\n // When a drag first starts it will also trigger a \"dragenter\" on the draggable element\n }\n }, {\n type: 'drop',\n listener: resetState\n }, {\n type: 'dragend',\n listener: resetState\n }, {\n type: 'dragenter',\n listener: function listener(event) {\n if (!state.isOverWindow && state.enterCount === 0) {\n // Patching the `event` object\n // The `event` object is shared with all event listeners for the event\n event[symbols.isEnteringWindow] = true;\n }\n state.isOverWindow = true;\n state.enterCount++;\n }\n }, {\n type: 'dragleave',\n listener: function listener(event) {\n state.enterCount--;\n if (state.isOverWindow && state.enterCount === 0) {\n // Patching the `event` object as it is shared with all event listeners\n // The `event` object is shared with all event listeners for the event\n event[symbols.isLeavingWindow] = true;\n state.isOverWindow = false;\n }\n }\n }],\n // using `capture: true` so that adding event listeners\n // in bubble phase will have the correct symbols\n {\n capture: true\n });\n})();", "/**\n * Does the `EventTarget` look like a `Node` based on \"duck typing\".\n *\n * Helpful when the `Node` might be outside of the current document\n * so we cannot to an `target instanceof Node` check.\n */\nfunction isNodeLike(target) {\n return 'nodeName' in target;\n}\n\n/**\n * Is an `EventTarget` a `Node` from another `window`?\n */\nexport function isFromAnotherWindow(eventTarget) {\n return isNodeLike(eventTarget) && eventTarget.ownerDocument !== document;\n}", "import { isFirefox } from '../is-firefox';\nimport { isSafari } from '../is-safari';\nimport { isLeavingWindowInSafari } from './count-events-for-safari';\nimport { isFromAnotherWindow } from './is-from-another-window';\nexport function isLeavingWindow(_ref) {\n var dragLeave = _ref.dragLeave;\n var type = dragLeave.type,\n relatedTarget = dragLeave.relatedTarget;\n if (type !== 'dragleave') {\n return false;\n }\n if (isSafari()) {\n return isLeavingWindowInSafari({\n dragLeave: dragLeave\n });\n }\n\n // Standard check: if going to `null` we are leaving the `window`\n if (relatedTarget == null) {\n return true;\n }\n\n /**\n * \uD83E\uDD8A Exception: `iframe` in Firefox (`125.0`)\n *\n * Case 1: parent `window` \u2192 child `iframe`\n * `dragLeave.relatedTarget` is element _inside_ the child `iframe`\n * (foreign element)\n *\n * Case 2: child `iframe` \u2192 parent `window`\n * `dragLeave.relatedTarget` is the `iframe` in the parent `window`\n * (foreign element)\n */\n\n if (isFirefox()) {\n return isFromAnotherWindow(relatedTarget);\n }\n\n /**\n * \uD83C\uDF0F Exception: `iframe` in Chrome (`124.0`)\n *\n * Case 1: parent `window` \u2192 child `iframe`\n * `dragLeave.relatedTarget` is the `iframe` in the parent `window`\n *\n * Case 2: child `iframe` \u2192 parent `window`\n * `dragLeave.relatedTarget` is `null` *(standard check)*\n */\n\n // Case 2\n // Using `instanceof` check as the element will be in the same `window`\n return relatedTarget instanceof HTMLIFrameElement;\n}", "export function getBindingsForBrokenDrags(_ref) {\n var onDragEnd = _ref.onDragEnd;\n return [\n // ## Detecting drag ending for removed draggables\n //\n // If a draggable element is removed during a drag and the user drops:\n // 1. if over a valid drop target: we get a \"drop\" event to know the drag is finished\n // 2. if not over a valid drop target (or cancelled): we get nothing\n // The \"dragend\" event will not fire on the source draggable if it has been\n // removed from the DOM.\n // So we need to figure out if a drag operation has finished by looking at other events\n // We can do this by looking at other events\n\n // ### First detection: \"pointermove\" events\n\n // 1. \"pointermove\" events cannot fire during a drag and drop operation\n // according to the spec. So if we get a \"pointermove\" it means that\n // the drag and drop operations has finished. So if we get a \"pointermove\"\n // we know that the drag is over\n // 2. \uD83E\uDD8A\uD83D\uDE24 Drag and drop operations are _supposed_ to suppress\n // other pointer events. However, firefox will allow a few\n // pointer event to get through after a drag starts.\n // The most I've seen is 3\n {\n type: 'pointermove',\n listener: function () {\n var callCount = 0;\n return function listener() {\n // Using 20 as it is far bigger than the most observed (3)\n if (callCount < 20) {\n callCount++;\n return;\n }\n onDragEnd();\n };\n }()\n },\n // ### Second detection: \"pointerdown\" events\n\n // If we receive this event then we know that a drag operation has finished\n // and potentially another one is about to start.\n // Note: `pointerdown` fires on all browsers / platforms before \"dragstart\"\n {\n type: 'pointerdown',\n listener: onDragEnd\n }];\n}", "export function getInput(event) {\n return {\n altKey: event.altKey,\n button: event.button,\n buttons: event.buttons,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n shiftKey: event.shiftKey,\n clientX: event.clientX,\n clientY: event.clientY,\n pageX: event.pageX,\n pageY: event.pageY\n };\n}", "var rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\nexport default rafSchd;\n", "import rafSchd from 'raf-schd';\nvar scheduleOnDrag = rafSchd(function (fn) {\n return fn();\n});\nvar dragStart = function () {\n var scheduled = null;\n function schedule(fn) {\n var frameId = requestAnimationFrame(function () {\n scheduled = null;\n fn();\n });\n scheduled = {\n frameId: frameId,\n fn: fn\n };\n }\n function flush() {\n if (scheduled) {\n cancelAnimationFrame(scheduled.frameId);\n scheduled.fn();\n scheduled = null;\n }\n }\n return {\n schedule: schedule,\n flush: flush\n };\n}();\nexport function makeDispatch(_ref) {\n var source = _ref.source,\n initial = _ref.initial,\n dispatchEvent = _ref.dispatchEvent;\n var previous = {\n dropTargets: []\n };\n function safeDispatch(args) {\n dispatchEvent(args);\n previous = {\n dropTargets: args.payload.location.current.dropTargets\n };\n }\n var dispatch = {\n start: function start(_ref2) {\n var nativeSetDragImage = _ref2.nativeSetDragImage;\n // Ensuring that both `onGenerateDragPreview` and `onDragStart` get the same location.\n // We do this so that `previous` is`[]` in `onDragStart` (which is logical)\n var location = {\n current: initial,\n previous: previous,\n initial: initial\n };\n // a `onGenerateDragPreview` does _not_ add another entry for `previous`\n // onDragPreview\n safeDispatch({\n eventName: 'onGenerateDragPreview',\n payload: {\n source: source,\n location: location,\n nativeSetDragImage: nativeSetDragImage\n }\n });\n dragStart.schedule(function () {\n safeDispatch({\n eventName: 'onDragStart',\n payload: {\n source: source,\n location: location\n }\n });\n });\n },\n dragUpdate: function dragUpdate(_ref3) {\n var current = _ref3.current;\n dragStart.flush();\n scheduleOnDrag.cancel();\n safeDispatch({\n eventName: 'onDropTargetChange',\n payload: {\n source: source,\n location: {\n initial: initial,\n previous: previous,\n current: current\n }\n }\n });\n },\n drag: function drag(_ref4) {\n var current = _ref4.current;\n scheduleOnDrag(function () {\n dragStart.flush();\n var location = {\n initial: initial,\n previous: previous,\n current: current\n };\n safeDispatch({\n eventName: 'onDrag',\n payload: {\n source: source,\n location: location\n }\n });\n });\n },\n drop: function drop(_ref5) {\n var current = _ref5.current,\n updatedSourcePayload = _ref5.updatedSourcePayload;\n dragStart.flush();\n scheduleOnDrag.cancel();\n safeDispatch({\n eventName: 'onDrop',\n payload: {\n source: updatedSourcePayload !== null && updatedSourcePayload !== void 0 ? updatedSourcePayload : source,\n location: {\n current: current,\n previous: previous,\n initial: initial\n }\n }\n });\n }\n };\n return dispatch;\n}", "// Extending `Map` to allow us to link Key and Values together\n\nvar ledger = new Map();\nfunction registerUsage(_ref) {\n var typeKey = _ref.typeKey,\n mount = _ref.mount;\n var entry = ledger.get(typeKey);\n if (entry) {\n entry.usageCount++;\n return entry;\n }\n var initial = {\n typeKey: typeKey,\n unmount: mount(),\n usageCount: 1\n };\n ledger.set(typeKey, initial);\n return initial;\n}\nexport function register(args) {\n var entry = registerUsage(args);\n return function unregister() {\n entry.usageCount--;\n if (entry.usageCount > 0) {\n return;\n }\n // Only a single usage left, remove it\n entry.unmount();\n ledger.delete(args.typeKey);\n };\n}", "/** Create a new combined function that will call all the provided functions */\nexport function combine() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n return function cleanup() {\n fns.forEach(function (fn) {\n return fn();\n });\n };\n}", "export function addAttribute(element, _ref) {\n var attribute = _ref.attribute,\n value = _ref.value;\n element.setAttribute(attribute, value);\n return function () {\n return element.removeAttribute(attribute);\n };\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nimport { combine } from '../public-utils/combine';\nimport { once } from '../public-utils/once';\nimport { addAttribute } from '../util/add-attribute';\nfunction copyReverse(array) {\n return array.slice(0).reverse();\n}\nexport function makeDropTarget(_ref) {\n var typeKey = _ref.typeKey,\n defaultDropEffect = _ref.defaultDropEffect;\n var registry = new WeakMap();\n var dropTargetDataAtt = \"data-drop-target-for-\".concat(typeKey);\n var dropTargetSelector = \"[\".concat(dropTargetDataAtt, \"]\");\n function addToRegistry(args) {\n registry.set(args.element, args);\n return function () {\n return registry.delete(args.element);\n };\n }\n function dropTargetForConsumers(args) {\n // Guardrail: warn if the draggable element is already registered\n if (process.env.NODE_ENV !== 'production') {\n var existing = registry.get(args.element);\n if (existing) {\n // eslint-disable-next-line no-console\n console.warn(\"You have already registered a [\".concat(typeKey, \"] dropTarget on the same element\"), {\n existing: existing,\n proposed: args\n });\n }\n if (args.element instanceof HTMLIFrameElement) {\n // eslint-disable-next-line no-console\n console.warn(\"\\n We recommend not registering <iframe> elements as drop targets\\n as it can result in some strange browser event ordering.\\n \" // Removing newlines and excessive whitespace\n .replace(/\\s{2,}/g, ' ').trim());\n }\n }\n var cleanup = combine(addAttribute(args.element, {\n attribute: dropTargetDataAtt,\n value: 'true'\n }), addToRegistry(args));\n\n // Wrapping in `once` to prevent unexpected side effects if consumers call\n // the clean up function multiple times.\n return once(cleanup);\n }\n function getActualDropTargets(_ref2) {\n var _args$getData, _args$getData2, _args$getDropEffect, _args$getDropEffect2;\n var source = _ref2.source,\n target = _ref2.target,\n input = _ref2.input,\n _ref2$result = _ref2.result,\n result = _ref2$result === void 0 ? [] : _ref2$result;\n if (target == null) {\n return result;\n }\n if (!(target instanceof Element)) {\n // For \"text-selection\" drags, the original `target`\n // is not an `Element`, so we need to start looking from\n // the parent element\n if (target instanceof Node) {\n return getActualDropTargets({\n source: source,\n target: target.parentElement,\n input: input,\n result: result\n });\n }\n\n // not sure what we are working with,\n // so we can exit.\n return result;\n }\n var closest = target.closest(dropTargetSelector);\n\n // Cannot find anything else\n if (closest == null) {\n return result;\n }\n var args = registry.get(closest);\n\n // error: something had a dropTargetSelector but we could not\n // find a match. For now, failing silently\n if (args == null) {\n return result;\n }\n var feedback = {\n input: input,\n source: source,\n element: args.element\n };\n\n // if dropping is not allowed, skip this drop target\n // and continue looking up the DOM tree\n if (args.canDrop && !args.canDrop(feedback)) {\n return getActualDropTargets({\n source: source,\n target: args.element.parentElement,\n input: input,\n result: result\n });\n }\n\n // calculate our new record\n var data = (_args$getData = (_args$getData2 = args.getData) === null || _args$getData2 === void 0 ? void 0 : _args$getData2.call(args, feedback)) !== null && _args$getData !== void 0 ? _args$getData : {};\n var dropEffect = (_args$getDropEffect = (_args$getDropEffect2 = args.getDropEffect) === null || _args$getDropEffect2 === void 0 ? void 0 : _args$getDropEffect2.call(args, feedback)) !== null && _args$getDropEffect !== void 0 ? _args$getDropEffect : defaultDropEffect;\n var record = {\n data: data,\n element: args.element,\n dropEffect: dropEffect,\n // we are collecting _actual_ drop targets, so these are\n // being applied _not_ due to stickiness\n isActiveDueToStickiness: false\n };\n return getActualDropTargets({\n source: source,\n target: args.element.parentElement,\n input: input,\n // Using bubble ordering. Same ordering as `event.getPath()`\n result: [].concat(_toConsumableArray(result), [record])\n });\n }\n function notifyCurrent(_ref3) {\n var eventName = _ref3.eventName,\n payload = _ref3.payload;\n var _iterator = _createForOfIteratorHelper(payload.location.current.dropTargets),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _entry$eventName;\n var record = _step.value;\n var entry = registry.get(record.element);\n var args = _objectSpread(_objectSpread({}, payload), {}, {\n self: record\n });\n entry === null || entry === void 0 || (_entry$eventName = entry[eventName]) === null || _entry$eventName === void 0 || _entry$eventName.call(entry,\n // I cannot seem to get the types right here.\n // TS doesn't seem to like that one event can need `nativeSetDragImage`\n // @ts-expect-error\n args);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n var actions = {\n onGenerateDragPreview: notifyCurrent,\n onDrag: notifyCurrent,\n onDragStart: notifyCurrent,\n onDrop: notifyCurrent,\n onDropTargetChange: function onDropTargetChange(_ref4) {\n var payload = _ref4.payload;\n var isCurrent = new Set(payload.location.current.dropTargets.map(function (record) {\n return record.element;\n }));\n var visited = new Set();\n var _iterator2 = _createForOfIteratorHelper(payload.location.previous.dropTargets),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _entry$onDropTargetCh;\n var record = _step2.value;\n visited.add(record.element);\n var entry = registry.get(record.element);\n var isOver = isCurrent.has(record.element);\n var args = _objectSpread(_objectSpread({}, payload), {}, {\n self: record\n });\n entry === null || entry === void 0 || (_entry$onDropTargetCh = entry.onDropTargetChange) === null || _entry$onDropTargetCh === void 0 || _entry$onDropTargetCh.call(entry, args);\n\n // if we cannot find the drop target in the current array, then it has been left\n if (!isOver) {\n var _entry$onDragLeave;\n entry === null || entry === void 0 || (_entry$onDragLeave = entry.onDragLeave) === null || _entry$onDragLeave === void 0 || _entry$onDragLeave.call(entry, args);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var _iterator3 = _createForOfIteratorHelper(payload.location.current.dropTargets),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _entry$onDropTargetCh2, _entry$onDragEnter;\n var _record = _step3.value;\n // already published an update to this drop target\n if (visited.has(_record.element)) {\n continue;\n }\n // at this point we have a new drop target that is being entered into\n var _args = _objectSpread(_objectSpread({}, payload), {}, {\n self: _record\n });\n var _entry = registry.get(_record.element);\n _entry === null || _entry === void 0 || (_entry$onDropTargetCh2 = _entry.onDropTargetChange) === null || _entry$onDropTargetCh2 === void 0 || _entry$onDropTargetCh2.call(_entry, _args);\n _entry === null || _entry === void 0 || (_entry$onDragEnter = _entry.onDragEnter) === null || _entry$onDragEnter === void 0 || _entry$onDragEnter.call(_entry, _args);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n };\n function dispatchEvent(args) {\n actions[args.eventName](args);\n }\n function getIsOver(_ref5) {\n var source = _ref5.source,\n target = _ref5.target,\n input = _ref5.input,\n current = _ref5.current;\n var actual = getActualDropTargets({\n source: source,\n target: target,\n input: input\n });\n\n // stickiness is only relevant when we have less\n // drop targets than we did before\n if (actual.length >= current.length) {\n return actual;\n }\n\n // less 'actual' drop targets than before,\n // we need to see if 'stickiness' applies\n\n // An old drop target will continue to be dropped on if:\n // 1. it has the same parent\n // 2. nothing exists in it's previous index\n\n var lastCaptureOrdered = copyReverse(current);\n var actualCaptureOrdered = copyReverse(actual);\n var resultCaptureOrdered = [];\n for (var index = 0; index < lastCaptureOrdered.length; index++) {\n var _argsForLast$getIsSti;\n var last = lastCaptureOrdered[index];\n var fresh = actualCaptureOrdered[index];\n\n // if a record is in the new index -> use that\n // it will have the latest data + dropEffect\n if (fresh != null) {\n resultCaptureOrdered.push(fresh);\n continue;\n }\n\n // At this point we have no drop target in the old spot\n // Check to see if we can use a previous sticky drop target\n\n // The \"parent\" is the one inside of `resultCaptureOrdered`\n // (the parent might be a drop target that was sticky)\n var parent = resultCaptureOrdered[index - 1];\n var lastParent = lastCaptureOrdered[index - 1];\n\n // Stickiness is based on parent relationships, so if the parent relationship has change\n // then we can stop our search\n if ((parent === null || parent === void 0 ? void 0 : parent.element) !== (lastParent === null || lastParent === void 0 ? void 0 : lastParent.element)) {\n break;\n }\n\n // We need to check whether the old drop target can still be dropped on\n\n var argsForLast = registry.get(last.element);\n\n // We cannot drop on a drop target that is no longer mounted\n if (!argsForLast) {\n break;\n }\n var feedback = {\n input: input,\n source: source,\n element: argsForLast.element\n };\n\n // We cannot drop on a drop target that no longer allows being dropped on\n if (argsForLast.canDrop && !argsForLast.canDrop(feedback)) {\n break;\n }\n\n // We cannot drop on a drop target that is no longer sticky\n if (!((_argsForLast$getIsSti = argsForLast.getIsSticky) !== null && _argsForLast$getIsSti !== void 0 && _argsForLast$getIsSti.call(argsForLast, feedback))) {\n break;\n }\n\n // Note: intentionally not recollecting `getData()` or `getDropEffect()`\n // Previous values for `data` and `dropEffect` will be borrowed\n // This is to prevent things like the 'closest edge' changing when\n // no longer over a drop target.\n // We could change our mind on this behaviour in the future\n\n resultCaptureOrdered.push(_objectSpread(_objectSpread({}, last), {}, {\n // making it clear to consumers this drop target is active due to stickiness\n isActiveDueToStickiness: true\n }));\n }\n\n // return bubble ordered result\n return copyReverse(resultCaptureOrdered);\n }\n return {\n dropTargetForConsumers: dropTargetForConsumers,\n getIsOver: getIsOver,\n dispatchEvent: dispatchEvent\n };\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { once } from '../public-utils/once';\nexport function makeMonitor() {\n var registry = new Set();\n var dragging = null;\n function tryAddToActive(monitor) {\n if (!dragging) {\n return;\n }\n // Monitor is allowed to monitor events if:\n // 1. It has no `canMonitor` function (default is that a monitor can listen to everything)\n // 2. `canMonitor` returns true\n if (!monitor.canMonitor || monitor.canMonitor(dragging.canMonitorArgs)) {\n dragging.active.add(monitor);\n }\n }\n function monitorForConsumers(args) {\n // We are giving each `args` a new reference so that you\n // can create multiple monitors with the same `args`.\n var entry = _objectSpread({}, args);\n registry.add(entry);\n\n // if there is an active drag we need to see if this new monitor is relevant\n tryAddToActive(entry);\n function cleanup() {\n registry.delete(entry);\n\n // We need to stop publishing events during a drag to this monitor!\n if (dragging) {\n dragging.active.delete(entry);\n }\n }\n\n // Wrapping in `once` to prevent unexpected side effects if consumers call\n // the clean up function multiple times.\n return once(cleanup);\n }\n function dispatchEvent(_ref) {\n var eventName = _ref.eventName,\n payload = _ref.payload;\n if (eventName === 'onGenerateDragPreview') {\n dragging = {\n canMonitorArgs: {\n initial: payload.location.initial,\n source: payload.source\n },\n active: new Set()\n };\n var _iterator = _createForOfIteratorHelper(registry),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var monitor = _step.value;\n tryAddToActive(monitor);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n // This should never happen.\n if (!dragging) {\n return;\n }\n\n // Creating an array from the set _before_ iterating\n // This is so that monitors added during the current event will not be called.\n // This behaviour matches native EventTargets where an event listener\n // cannot add another event listener during an active event to the same\n // event target in the same event (for us we have a single global event target)\n var active = Array.from(dragging.active);\n for (var _i = 0, _active = active; _i < _active.length; _i++) {\n var _monitor = _active[_i];\n // A monitor can be removed by another monitor during an event.\n // We need to check that the monitor is still registered before calling it\n if (dragging.active.has(_monitor)) {\n var _monitor$eventName;\n // @ts-expect-error: I cannot get this type working!\n (_monitor$eventName = _monitor[eventName]) === null || _monitor$eventName === void 0 || _monitor$eventName.call(_monitor, payload);\n }\n }\n if (eventName === 'onDrop') {\n dragging.active.clear();\n dragging = null;\n }\n }\n return {\n dispatchEvent: dispatchEvent,\n monitorForConsumers: monitorForConsumers\n };\n}", "import { lifecycle } from '../ledger/lifecycle-manager';\nimport { register } from '../ledger/usage-ledger';\nimport { makeDropTarget } from './make-drop-target';\nimport { makeMonitor } from './make-monitor';\nexport function makeAdapter(_ref) {\n var typeKey = _ref.typeKey,\n mount = _ref.mount,\n dispatchEventToSource = _ref.dispatchEventToSource,\n onPostDispatch = _ref.onPostDispatch,\n defaultDropEffect = _ref.defaultDropEffect;\n var monitorAPI = makeMonitor();\n var dropTargetAPI = makeDropTarget({\n typeKey: typeKey,\n defaultDropEffect: defaultDropEffect\n });\n function dispatchEvent(args) {\n // 1. forward the event to source\n dispatchEventToSource === null || dispatchEventToSource === void 0 || dispatchEventToSource(args);\n\n // 2. forward the event to relevant dropTargets\n dropTargetAPI.dispatchEvent(args);\n\n // 3. forward event to monitors\n monitorAPI.dispatchEvent(args);\n\n // 4. post consumer dispatch (used for honey pot fix)\n onPostDispatch === null || onPostDispatch === void 0 || onPostDispatch(args);\n }\n function start(_ref2) {\n var event = _ref2.event,\n dragType = _ref2.dragType;\n lifecycle.start({\n event: event,\n dragType: dragType,\n getDropTargetsOver: dropTargetAPI.getIsOver,\n dispatchEvent: dispatchEvent\n });\n }\n function registerUsage() {\n function mountAdapter() {\n var api = {\n canStart: lifecycle.canStart,\n start: start\n };\n return mount(api);\n }\n return register({\n typeKey: typeKey,\n mount: mountAdapter\n });\n }\n return {\n registerUsage: registerUsage,\n dropTarget: dropTargetAPI.dropTargetForConsumers,\n monitor: monitorAPI.monitorForConsumers\n };\n}", "import { once } from '../public-utils/once';\n\n// Using `once` as the value won't change in a browser\n\nexport var isAndroid = once(function isAndroid() {\n return navigator.userAgent.toLocaleLowerCase().includes('android');\n});\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport var androidFallbackText = 'pdnd:android-fallback';", "// Why we put the media types in their own files:\n//\n// - we are not putting them all in one file as not all adapters need all types\n// - we are not putting them in the external helpers as some things just need the\n// types and not the external functions code\nexport var textMediaType = 'text/plain';", "// Why we put the media types in their own files:\n//\n// - we are not putting them all in one file as not all adapters need all types\n// - we are not putting them in the external helpers as some things just need the\n// types and not the external functions code\nexport var URLMediaType = 'text/uri-list';", "/**\n * This key has been pulled into a separate module\n * so that the external adapter does not need to import\n * the element adapter\n */\nexport var elementAdapterNativeDataKey = 'application/vnd.pdnd';", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { monitorForElements } from '../../../adapter/element-adapter';\nimport { isSafari } from '../../../util/is-safari';\nimport { maxZIndex } from '../../../util/max-z-index';\nimport { popoverResetUserAgentStyles } from '../../../util/popover-reset-styles';\nimport { supportsPopover } from '../../../util/supports-popover';\n\n/** A function to remove the element that has been added to the `container`.\n * @example () => ReactDOM.unmountComponentAtNode(container)\n */\n\n/** A function that will render a preview element into a `container` `HTMLElement` */\n\n/** By default we use the build in values for the native drag preview: {x: 0, y: 0} */\nfunction defaultOffset() {\n return {\n x: 0,\n y: 0\n };\n}\n\n/** This function provides the ability to mount an element for it to be used as the native drag preview\n *\n * @example\n * draggable({\n * onGenerateDragPreview: ({ nativeSetDragImage }) => {\n * setCustomNativeDragPreview({\n * render: ({ container }) => {\n * ReactDOM.render(<Preview item={item} />, container);\n * return () => ReactDOM.unmountComponentAtNode(container);\n * },\n * nativeSetDragImage,\n * });\n * },\n * });\n */\nexport function setCustomNativeDragPreview(_ref) {\n var render = _ref.render,\n nativeSetDragImage = _ref.nativeSetDragImage,\n _ref$getOffset = _ref.getOffset,\n getOffset = _ref$getOffset === void 0 ? defaultOffset : _ref$getOffset;\n var container = document.createElement('div');\n\n // Using popover=\"manual\" to place the element in the browser's top layer.\n // This ensures the drag preview container is visually on top of everything else,\n // including elements using z-index and other stacking contexts.\n // \"manual\" means no light dismiss \u2014 we manage the lifecycle ourselves.\n // This element is only created for a single frame for the browser to take a\n // photo of it, and then it is destroyed.\n // Falls back to position:fixed + maxZIndex when the popover API is not available.\n // Note: the popover attribute must be set before the element is in the DOM.\n // `.showPopover()` is called further below after the element is appended to the body.\n if (supportsPopover()) {\n container.setAttribute('popover', 'manual');\n }\n Object.assign(container.style, _objectSpread(_objectSpread({\n // Ensuring we don't cause reflow when adding the element to the page\n // Using `position:fixed` rather than `position:absolute` so we are\n // positioned on the current viewport.\n // `position:fixed` also creates a new stacking context, so we don't need to do that here\n position: 'fixed'\n }, supportsPopover() ?\n // needs to come first as it has 'inset: unset' which\n // needs to be overridden by our top / left values\n popoverResetUserAgentStyles : {\n // Fallback: using maximum possible z-index so that this element\n // will always be on top of other positioned content.\n zIndex: maxZIndex\n }), {}, {\n // According to `mdn`, the element can be offscreen:\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/setDragImage#imgelement\n //\n // However, that information does not appear in the specs:\n // https://html.spec.whatwg.org/multipage/dnd.html#dom-datatransfer-setdragimage-dev\n //\n // If the element is _completely_ offscreen, Safari@17.1 will cancel the drag\n top: 0,\n left: 0,\n // Avoiding any additional events caused by the new element (being super safe)\n pointerEvents: 'none'\n }));\n document.body.append(container);\n\n // `.showPopover()` must be called after the element is in the DOM.\n if (supportsPopover()) {\n container.showPopover();\n }\n var unmount = render({\n container: container\n });\n\n /**\n * Some frameworks (eg `react`) don't render into the container until the next microtask.\n * - This will run before the browser takes it's picture of the element\n * - This will run before the animation frame that removes `container`.\n * */\n\n queueMicrotask(function () {\n var previewOffset = getOffset({\n container: container\n });\n\n /**\n * **Problem**\n * On `Safari@17.1` if a drag preview element has some opacity,\n * Safari will include elements behind the drag preview element\n * in the drag preview.\n * Bug: https://bugs.webkit.org/show_bug.cgi?id=266025\n *\n * **Fix**\n * We push the drag preview so it is _almost_ completely offscreen so that\n * there won't be any elements behind the drag preview element.\n * If the element is _completely_ offscreen, then the drag is cancelled by Safari.\n *\n * Using `-0.0001` so that any potential \"see through\" on the drag preview element\n * is effectively invisible \uD83D\uDC7B\n *\n * **Unsuccessful alternatives**\n * Setting a background color (eg \"white\") on the `container`\n * \u2192 Wrecks the opacity of the drag preview element\n *\n * Adding a parent element of the `container` with a background color (eg \"white\")\n * \u2192 Wrecks the opacity of the drag preview element\n */\n /**\n * Update: this bug fix is no longer needed in `Safari@26.4` (and maybe earlier)\n * We can remove it in a future release\n */\n if (isSafari()) {\n var rect = container.getBoundingClientRect();\n\n // We cannot apply this fix if nothing has been rendered into the `container`\n if (rect.width === 0) {\n return;\n }\n container.style.left = \"-\".concat(rect.width - 0.0001, \"px\");\n }\n nativeSetDragImage === null || nativeSetDragImage === void 0 || nativeSetDragImage(container, previewOffset.x, previewOffset.y);\n });\n function cleanup() {\n // No need to call `.hidePopover()`.\n // Removing the element from the DOM dismisses the popover\n unbindMonitor();\n unmount === null || unmount === void 0 || unmount();\n document.body.removeChild(container);\n }\n var unbindMonitor = monitorForElements({\n // Remove portal in the dragstart event so that the user will never see it\n onDragStart: cleanup,\n // Backup: remove portal when the drop finishes (this would be an error case)\n onDrop: cleanup\n });\n}", "import { once } from '../public-utils/once';\nimport { isSafari } from './is-safari';\n\n// Using `once` as the value won't change in a browser\n\n/**\n * **Notes**\n *\n * All browsers on iOS (Safari, Chrome, Firefox) use the same rendering engine (Safari / Webkit).\n *\n * \u2192 https://developer.apple.com/app-store/review/guidelines/ (see 2.5.6)\n *\n * There is some ongoing change in this space, and we might see some new browser\n * engines soon on iOS (at least in Europe)\n *\n * \u2192 https://developer.apple.com/support/alternative-browser-engines/\n **/\n\n/**\n * Returns `true` if browser is Safari (WebKit) on iOS.\n */\nexport var isSafariOnIOS = once(function isSafariOnIOS() {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n return isSafari() && 'ontouchend' in document;\n});", "export var centerUnderPointer = function centerUnderPointer(_ref) {\n var container = _ref.container;\n var rect = container.getBoundingClientRect();\n return {\n x: rect.width / 2,\n y: rect.height / 2\n };\n};", "import { isAndroid } from '../../../util/android';\nimport { isSafariOnIOS } from '../../../util/is-safari-on-ios';\nimport { centerUnderPointer } from './center-under-pointer';\n\n/** Any valid CSS string value\n * @example `calc(var(--grid) * 2)\n */\n\n/**\n * Position the native drag preview **in front** of the users pointer.\n *\n * **Distance**\n *\n * If the total width of your preview (including the offset applied by this function)\n * exceeds `280px` then the drag preview will have more opacity applied on Windows.\n *\n * https://atlassian.design/components/pragmatic-drag-and-drop/web-platform-design-constraints\n *\n * **Direction**\n *\n * This function will position the drag preview on the _right hand side for left to right (`ltr`) interfaces_, and on the _left hand side for right to left (`rtl`) languages_.\n *\n * The direction will be calculated based on the direction (`dir`) being applied to the `container`\n * element (which will be a child of the `body` element).\n *\n * **iOS, iPadOS and Android**\n *\n * The drag preview will be centered under the users pointer rather than\n * pushed away on iOS due to platform limitations.\n */\nexport function pointerOutsideOfPreview(point) {\n return function getOffset(_ref) {\n var container = _ref.container;\n /**\n * **Approach: transparent borders.**\n *\n * The only reliable cross browser technique found to push a\n * drag preview away from the cursor is to use transparent borders on the container.\n *\n * **\uD83D\uDE45\uD83D\uDCF1 Not pushing the preview away on touch devices**\n *\n * _On iOS_\n *\n * Safari will set the transparent border color to be black\n *\n * `iOS@18.4.1` on May 7th 2025:\n * - If you set the background color on the `container` the border color will be that\n * - Setting a transparent background color on the `container` still results in a\n * black border\n * - The `<body>` text or background color does not change the black border color\n *\n * While dragging, the drag preview will shift under the center of the users pointer.\n * So if you start at {x: 0, y: 0} (top left), almost immediately the preview will move\n * to be under the middle of the users pointer.\n *\n * _On Android_\n *\n * Chrome will put the center of the drag preview under the users pointer immediately.\n *\n * Tested on `Chrome@137` on `Android 14` on June 20th 2025\n *\n * _What we do_\n *\n * We don't add the transparent border\n *\n * - Avoid the black color on iOS\n * - It isn't needed on Android anyway as the preview will be under the center\n * of the users pointer\n *\n * We put the center of the drag preview under the users pointer\n *\n * - Avoids the drag preview quickly moving from a top corner to be centered under\n * the users pointer on iOS\n * - It will be under the center on Android no matter what we do\n *\n * We previously had a isTouchDevice() check, but it felt safer for now\n * to have a more targeted check, as these are the devices that have been\n * tested on.\n */\n if (isSafariOnIOS() || isAndroid()) {\n return centerUnderPointer({\n container: container\n });\n }\n Object.assign(container.style, {\n borderInlineStart: \"\".concat(point.x, \" solid transparent\"),\n borderTop: \"\".concat(point.y, \" solid transparent\")\n });\n\n // Unfortunate that we need to use `getComputedStyle`,\n // but it's only a single call when the drag is starting.\n var computed = window.getComputedStyle(container);\n if (computed.direction === 'rtl') {\n // The DOMRect will include the new border we added\n var box = container.getBoundingClientRect();\n\n // Use the top right corner (including the new border) as the offset.\n // The border will push the preview away from the pointer.\n return {\n x: box.width,\n y: 0\n };\n }\n\n // Use the top left corner as the offset. The border will\n // push the preview away from the pointer.\n return {\n x: 0,\n y: 0\n };\n };\n}", "var ledger = new Map();\nvar requested = new Set();\nexport function markAndGetEngagement(element) {\n markEngagement(element);\n var entry = ledger.get(element);\n if (entry) {\n return entry;\n }\n var fresh = {\n timeOfEngagementStart: Date.now()\n };\n ledger.set(element, fresh);\n return fresh;\n}\nexport function markEngagement(element) {\n requested.add(element);\n}\nexport function clearUnusedEngagements(fn) {\n // make sure previous engagement requests don't linger\n requested.clear();\n\n // perform the required work\n fn();\n\n // if engagements where not requested, purge it\n ledger.forEach(function (_, element) {\n if (!requested.has(element)) {\n ledger.delete(element);\n }\n });\n\n // cleaning up after ourselves\n requested.clear();\n}\nexport function clearEngagementHistory() {\n ledger.clear();\n}", "import { getElementFromPointWithoutHoneypot } from '@atlaskit/pragmatic-drag-and-drop/private/get-element-from-point-without-honey-pot';\nimport { clearEngagementHistory, clearUnusedEngagements } from './engagement-history';\n// We keep this map so that \"over element\" scrolling and \"overflow\" scrolling\n// can leverage the same scheduler.\n// The 'monitor' is the key for looking up schedulers\nvar schedulers = new Map();\nexport function getScheduler(monitor) {\n var scheduler = schedulers.get(monitor);\n if (scheduler) {\n // @ts-expect-error: I don't know how to link the DragType generic between the key and the value when the\n // monitor itself is the key\n return scheduler;\n }\n var created = makeScheduler(monitor);\n schedulers.set(monitor, created);\n return created;\n}\nfunction makeScheduler(monitor) {\n var state = {\n type: 'idle'\n };\n var callbacks = [];\n function loop(timeLastFrameFinished) {\n if (state.type !== 'running') {\n return;\n }\n var timeSinceLastFrame = timeLastFrameFinished - state.timeLastFrameFinished;\n var _state = state,\n latestArgs = _state.latestArgs;\n\n // A common starting lookup point for determining\n // which auto scroller should be used, and what should be scrolled.\n var underUsersPointer = getElementFromPointWithoutHoneypot({\n x: latestArgs.location.current.input.clientX,\n y: latestArgs.location.current.input.clientY\n });\n clearUnusedEngagements(function () {\n callbacks.forEach(function (onFrame) {\n return onFrame({\n underUsersPointer: underUsersPointer,\n latestArgs: latestArgs,\n timeSinceLastFrame: timeSinceLastFrame\n });\n });\n });\n state.timeLastFrameFinished = timeLastFrameFinished;\n state.frameId = requestAnimationFrame(loop);\n }\n function reset() {\n if (state.type === 'idle') {\n return;\n }\n cancelAnimationFrame(state.frameId);\n clearEngagementHistory();\n state = {\n type: 'idle'\n };\n }\n function start(args) {\n if (state.type !== 'idle') {\n return;\n }\n state = {\n // Waiting a frame so we can accurately determine `timeSinceLastFrame`.\n type: 'initializing',\n latestArgs: args,\n frameId: requestAnimationFrame(function (timeLastFrameFinished) {\n if (state.type !== 'initializing') {\n return;\n }\n state = {\n type: 'running',\n timeLastFrameFinished: timeLastFrameFinished,\n latestArgs: state.latestArgs,\n frameId: requestAnimationFrame(loop)\n };\n })\n };\n }\n\n // this module might have been imported after a drag has started\n // We are starting the auto scroller if we get an update event and\n // the auto scroller has not started yet\n function update(args) {\n if (state.type === 'idle') {\n start(args);\n return;\n }\n state.latestArgs = args;\n }\n\n // Not exposing a way to stop listening\n monitor({\n onDragStart: start,\n onDropTargetChange: update,\n onDrag: update,\n onDrop: reset\n });\n var api = {\n onFrame: function onFrame(fn) {\n callbacks.push(fn);\n }\n };\n return api;\n}", "export var dataAttribute = 'data-auto-scrollable';\nexport var selector = \"[\".concat(dataAttribute, \"=\\\"true\\\"]\");\nexport function addScrollableAttribute(element) {\n element.setAttribute(dataAttribute, 'true');\n return function () {\n return element.removeAttribute(dataAttribute);\n };\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar baseConfig = {\n startHitboxAtPercentageRemainingOfElement: {\n top: 0.25,\n right: 0.25,\n bottom: 0.25,\n left: 0.25\n },\n maxScrollAtPercentageRemainingOfHitbox: {\n top: 0.5,\n right: 0.5,\n bottom: 0.5,\n left: 0.5\n },\n timeDampeningDurationMs: 400,\n // Too big and it's too easy to trigger auto scrolling\n // Too small and it's too hard \uD83D\uDE05\n maxMainAxisHitboxSize: 180\n};\n\n/** What the max scroll should be per second. Using \"per second\" rather than \"per frame\"\n * as we want a consistent scroll speed regardless of frame rate.\n *\n *\n * I explored trying to make the max scroll speed dynamic based on particular factors.\n * However, it ended up being difficult to find a _perfect_ formula.\n *\n * Likely the perfect answer would involve:\n * - the size of the scrollable element\n * - the size of the scrollable element relative to the screen size\n * - the size of the drag preview\n * - the size of elements being scrolled in scrollable elements (expensive and difficult to compute)\n */\nvar maxPixelScrollPerSecond = {\n // What the value would be if we were scrolling at 15px per frame at 60fps.\n // This is the default as it works well for most experiences.\n // In certain scenarios though it can feel a bit slow.\n standard: 15 * 60,\n // What the value would be if we were scrolling at 25px per frame at 60fps.\n // This is not the default as it feels too fast for a lot of experiences.\n fast: 25 * 60\n};\nexport function getInternalConfig(provided) {\n var _provided$maxScrollSp;\n return _objectSpread(_objectSpread({}, baseConfig), {}, {\n // only allowing limited control over the config at this stage\n maxPixelScrollPerSecond: maxPixelScrollPerSecond[(_provided$maxScrollSp = provided === null || provided === void 0 ? void 0 : provided.maxScrollSpeed) !== null && _provided$maxScrollSp !== void 0 ? _provided$maxScrollSp : 'standard']\n });\n}", "export var canScrollOnEdge = {\n // Notes:\n //\n // \uD83C\uDF0F Chrome 115.0: uses fractional units for `scrollLeft` and `scrollTop`\n // (and fractional units don't reach true integer maximum when zoomed in / out)\n // \uD83C\uDF4E Safari 16.5.2: no fractional units\n // \uD83E\uDD8A Firefox 115.0: no fractional units\n\n // we have some scroll we can move backwards into\n top: function top(element) {\n return element.scrollTop > 0;\n },\n // We have some scroll we can move forward into\n right: function right(element) {\n return Math.ceil(element.scrollLeft) + element.clientWidth < element.scrollWidth;\n },\n // We have some scroll we can move forwards into\n bottom: function bottom(element) {\n return Math.ceil(element.scrollTop) + element.clientHeight < element.scrollHeight;\n },\n // we have some scroll we can move back into.\n left: function left(element) {\n return element.scrollLeft > 0;\n }\n};", "export var edges = ['top', 'right', 'bottom', 'left'];\nexport var edgeAxisLookup = {\n top: 'vertical',\n right: 'horizontal',\n bottom: 'vertical',\n left: 'horizontal'\n};", "var vertical = {\n start: 'top',\n end: 'bottom',\n point: 'y',\n size: 'height'\n};\nvar horizontal = {\n start: 'left',\n end: 'right',\n point: 'x',\n size: 'width'\n};\nexport var axisLookup = {\n vertical: {\n mainAxis: vertical,\n crossAxis: horizontal\n },\n horizontal: {\n mainAxis: horizontal,\n crossAxis: vertical\n }\n};", "export var mainAxisSideLookup = {\n top: 'start',\n right: 'end',\n bottom: 'end',\n left: 'start'\n};", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { axisLookup } from './axis';\nimport { mainAxisSideLookup } from './side';\nfunction makeGetHitbox(_ref) {\n var edge = _ref.edge,\n axis = _ref.axis;\n return function hitbox(_ref2) {\n var clientRect = _ref2.clientRect,\n config = _ref2.config;\n var _axisLookup$axis = axisLookup[axis],\n mainAxis = _axisLookup$axis.mainAxis,\n crossAxis = _axisLookup$axis.crossAxis;\n var side = mainAxisSideLookup[edge];\n var mainAxisHitboxSize = Math.min(\n // scale the size of the hitbox down for smaller elements\n config.startHitboxAtPercentageRemainingOfElement[edge] * clientRect[mainAxis.size],\n // Don't let the hitbox grow too big for big elements\n config.maxMainAxisHitboxSize);\n return DOMRect.fromRect(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, mainAxis.point, side === 'start' ?\n // begin from the start edge and grow inwards\n clientRect[mainAxis.point] :\n // begin from inside the end edge and grow towards the end edge\n clientRect[mainAxis.point] + clientRect[mainAxis.size] - mainAxisHitboxSize), crossAxis.point, clientRect[crossAxis.point]), mainAxis.size, mainAxisHitboxSize), crossAxis.size, clientRect[crossAxis.size]));\n };\n}\nexport var getOverElementHitbox = {\n top: makeGetHitbox({\n axis: 'vertical',\n edge: 'top'\n }),\n right: makeGetHitbox({\n axis: 'horizontal',\n edge: 'right'\n }),\n bottom: makeGetHitbox({\n axis: 'vertical',\n edge: 'bottom'\n }),\n left: makeGetHitbox({\n axis: 'horizontal',\n edge: 'left'\n })\n};", "export function getPercentageInRange(_ref) {\n var startOfRange = _ref.startOfRange,\n endOfRange = _ref.endOfRange,\n value = _ref.value;\n // checking inputs\n var isValid = startOfRange < endOfRange;\n if (!isValid) {\n return 0;\n }\n if (value < startOfRange) {\n return 0;\n }\n if (value > endOfRange) {\n return 1;\n }\n var range = endOfRange - startOfRange;\n return (value - startOfRange) / range;\n}", "import { axisLookup } from './axis';\nimport { getPercentageInRange } from './get-percentage-in-range';\nimport { mainAxisSideLookup } from './side';\n\n// We want a consistent scroll speed across devices, regardless of framerate\nfunction getMaxScrollChange(_ref) {\n var timeSinceLastFrame = _ref.timeSinceLastFrame,\n config = _ref.config;\n var targetScrollPerMs = config.maxPixelScrollPerSecond / 1000;\n\n // Adjusting out target scroll rate to match the frame rate of the target device\n // This will pull the scroll speed down on high frame rate devices\n // so we get a consistent visual scroll speed regardless of device.\n var proposed = Math.ceil(targetScrollPerMs * timeSinceLastFrame);\n\n // If lots of time as passed since that last frame (such on lower frame rate devices)\n // we don't want the scroll speed to be too fast, otherwise it can feel jumpy\n // We are capping the scroll speed at what it would be if we were hitting 60fps\n var maximum = config.maxPixelScrollPerSecond / 60;\n return Math.min(proposed, maximum);\n}\nfunction getDistanceDampening(_ref2) {\n var client = _ref2.client,\n axis = _ref2.axis,\n edge = _ref2.edge,\n hitbox = _ref2.hitbox,\n config = _ref2.config;\n var mainAxis = axisLookup[axis].mainAxis;\n var side = mainAxisSideLookup[edge];\n\n // We want to hit the max speed before the edge of the hitbox\n var maxSpeedBuffer = hitbox[mainAxis.size] * config.maxScrollAtPercentageRemainingOfHitbox[edge];\n if (side === 'end') {\n return getPercentageInRange({\n startOfRange: hitbox[mainAxis.start],\n endOfRange: hitbox[mainAxis.end] - maxSpeedBuffer,\n value: client[mainAxis.point]\n });\n }\n\n // Moving towards start edge\n\n var raw = getPercentageInRange({\n startOfRange: hitbox[mainAxis.start] + maxSpeedBuffer,\n endOfRange: hitbox[mainAxis.end],\n value: client[mainAxis.point]\n });\n // When moving near start edge\n // - the 'end' edge is where we start scrolling\n // - the 'start' edge is where we reach max speed\n // So we need to invert the percentage when moving backwards\n return 1 - raw;\n}\nexport function getScrollChange(_ref3) {\n var client = _ref3.client,\n timeSinceLastFrame = _ref3.timeSinceLastFrame,\n engagement = _ref3.engagement,\n axis = _ref3.axis,\n hitbox = _ref3.hitbox,\n edge = _ref3.edge,\n isDistanceDampeningEnabled = _ref3.isDistanceDampeningEnabled,\n config = _ref3.config;\n // We have two forms of speed dampening:\n // 1. \uD83D\uDDFA\uFE0F Distance\n // The closer you are to a hitbox edge, the faster the scroll speed will be\n // 2. \u23F1\uFE0F Time\n // When first entering a scroll container we want to dampening all scrolling\n // This is to prevent super fast auto scrolling when first entering into\n // a scroll container, or when lifting in a scroll container\n\n var maxScroll = getMaxScrollChange({\n timeSinceLastFrame: timeSinceLastFrame,\n config: config\n });\n var percentageDistanceDampening = isDistanceDampeningEnabled ? getDistanceDampening({\n client: client,\n edge: edge,\n hitbox: hitbox,\n axis: axis,\n config: config\n }) : 1;\n\n // Dampen speed by time\n var percentageThroughTimeDampening = getPercentageInRange({\n startOfRange: engagement.timeOfEngagementStart,\n endOfRange: engagement.timeOfEngagementStart + config.timeDampeningDurationMs,\n value: Date.now()\n });\n\n // Calculate how much of the max scroll we should apply based on dampening\n var percentageOfMaxScroll = percentageDistanceDampening * percentageThroughTimeDampening;\n\n // We _could_ ease this update (`Math.pow(percentageOfMaxSpeed, 2)`)\n // But linear is feeling really good\n // Always scrolling by at least one pixel, otherwise the scroll does nothing\n var scroll = Math.max(maxScroll * percentageOfMaxScroll, 1);\n var side = mainAxisSideLookup[edge];\n\n // When moving backwards, we will be scrolling backwards\n return side === 'end' ? scroll : -1 * scroll;\n}", "export function isAxisAllowed(axis, allowedAxis) {\n return allowedAxis === 'all' || axis === allowedAxis;\n}", "export function isWithin(_ref) {\n var client = _ref.client,\n clientRect = _ref.clientRect;\n return (\n // is within horizontal bounds\n client.x >= clientRect.x && client.x <= clientRect.x + clientRect.width &&\n // is within vertical bounds\n client.y >= clientRect.y && client.y <= clientRect.y + clientRect.height\n );\n}", "import { canScrollOnEdge } from '../shared/can-scroll-on-edge';\nimport { edgeAxisLookup, edges } from '../shared/edges';\nimport { getOverElementHitbox } from '../shared/get-over-element-hitbox';\nimport { getScrollChange } from '../shared/get-scroll-change';\nimport { isAxisAllowed } from '../shared/is-axis-allowed';\nimport { isWithin } from '../shared/is-within';\nfunction getRectDefault(element) {\n return element.getBoundingClientRect();\n}\nexport function getScrollBy(_ref) {\n var element = _ref.element,\n input = _ref.input,\n timeSinceLastFrame = _ref.timeSinceLastFrame,\n engagement = _ref.engagement,\n config = _ref.config,\n allowedAxis = _ref.allowedAxis,\n _ref$getRect = _ref.getRect,\n getRect = _ref$getRect === void 0 ? getRectDefault : _ref$getRect;\n var client = {\n x: input.clientX,\n y: input.clientY\n };\n var clientRect = getRect(element);\n var scrollableEdges = edges.reduce(function (map, edge) {\n var hitbox = getOverElementHitbox[edge]({\n clientRect: clientRect,\n config: config\n });\n var axis = edgeAxisLookup[edge];\n\n // Note: changing the allowed axis during a drag will not\n // reset time dampening. It was decided it would be too\n // complex to implement initially, and we can add it\n // later if needed.\n if (!isAxisAllowed(axis, allowedAxis)) {\n return map;\n }\n if (!isWithin({\n client: client,\n clientRect: hitbox\n })) {\n return map;\n }\n if (!canScrollOnEdge[edge](element)) {\n return map;\n }\n map.set(edge, {\n edge: edge,\n hitbox: hitbox\n });\n return map;\n }, new Map());\n var left = function () {\n var axis = 'horizontal';\n var leftEdge = scrollableEdges.get('left');\n if (leftEdge) {\n return getScrollChange({\n client: client,\n edge: leftEdge.edge,\n hitbox: leftEdge.hitbox,\n axis: axis,\n timeSinceLastFrame: timeSinceLastFrame,\n engagement: engagement,\n isDistanceDampeningEnabled: true,\n config: config\n });\n }\n var rightEdge = scrollableEdges.get('right');\n if (rightEdge) {\n return getScrollChange({\n client: client,\n edge: rightEdge.edge,\n hitbox: rightEdge.hitbox,\n axis: axis,\n timeSinceLastFrame: timeSinceLastFrame,\n engagement: engagement,\n isDistanceDampeningEnabled: true,\n config: config\n });\n }\n return 0;\n }();\n var top = function () {\n var axis = 'vertical';\n var bottomEdge = scrollableEdges.get('bottom');\n if (bottomEdge) {\n return getScrollChange({\n client: client,\n edge: bottomEdge.edge,\n hitbox: bottomEdge.hitbox,\n axis: axis,\n timeSinceLastFrame: timeSinceLastFrame,\n engagement: engagement,\n isDistanceDampeningEnabled: true,\n config: config\n });\n }\n var topEdge = scrollableEdges.get('top');\n if (topEdge) {\n return getScrollChange({\n client: client,\n edge: topEdge.edge,\n hitbox: topEdge.hitbox,\n axis: axis,\n timeSinceLastFrame: timeSinceLastFrame,\n engagement: engagement,\n isDistanceDampeningEnabled: true,\n config: config\n });\n }\n return 0;\n }();\n return {\n left: left,\n top: top\n };\n}", "function _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nimport { getInternalConfig } from '../shared/configuration';\nimport { markAndGetEngagement } from '../shared/engagement-history';\nimport { selector } from './data-attributes';\nimport { getScrollBy } from './get-scroll-by';\nfunction isScrollingAvailable(value) {\n return Boolean(value.top || value.left);\n}\nfunction tryScrollElements(_ref) {\n var _container$getConfigu, _container$getAllowed, _container$getAllowed2;\n var target = _ref.target,\n input = _ref.input,\n source = _ref.source,\n findEntry = _ref.findEntry,\n timeSinceLastFrame = _ref.timeSinceLastFrame,\n _ref$available = _ref.available,\n available = _ref$available === void 0 ? {\n top: true,\n left: true\n } : _ref$available;\n // we cannot do any more scrolling\n if (!isScrollingAvailable(available)) {\n return available;\n }\n\n // run out of parents to search\n if (!target) {\n return available;\n }\n var element = target.closest(selector);\n\n // cannot find any more scroll containers\n if (!element) {\n return available;\n }\n var container = findEntry(element);\n\n // cannot find registration, this is bad.\n // fail and just exit\n if (!container) {\n return available;\n }\n function continueSearchUp() {\n var _element$parentElemen;\n return tryScrollElements({\n target: (_element$parentElemen = element === null || element === void 0 ? void 0 : element.parentElement) !== null && _element$parentElemen !== void 0 ? _element$parentElemen : null,\n findEntry: findEntry,\n source: source,\n timeSinceLastFrame: timeSinceLastFrame,\n input: input,\n available: available\n });\n }\n var feedback = {\n input: input,\n source: source,\n element: element\n };\n\n // Engagement is not marked if scrolling is explicitly not allowed\n if (container.canScroll && !container.canScroll(feedback)) {\n return continueSearchUp();\n }\n\n // Marking engagement even if no edges are scrollable.\n // We are marking engagement as soon as the element is scrolled over\n var engagement = markAndGetEngagement(element);\n var config = getInternalConfig((_container$getConfigu = container.getConfiguration) === null || _container$getConfigu === void 0 ? void 0 : _container$getConfigu.call(container, feedback));\n var allowedAxis = (_container$getAllowed = (_container$getAllowed2 = container.getAllowedAxis) === null || _container$getAllowed2 === void 0 ? void 0 : _container$getAllowed2.call(container, feedback)) !== null && _container$getAllowed !== void 0 ? _container$getAllowed : 'all';\n var scrollBy = getScrollBy({\n element: element,\n engagement: engagement,\n input: input,\n timeSinceLastFrame: timeSinceLastFrame,\n allowedAxis: allowedAxis,\n config: config\n });\n\n // Only allow scrolling in directions that have not already been used\n var scroll = {\n top: 0,\n left: 0\n };\n if (available.top && scrollBy.top !== 0) {\n scroll.top = scrollBy.top;\n // can no longer scroll on the top after this\n available.top = false;\n }\n if (available.left && scrollBy.left !== 0) {\n scroll.left = scrollBy.left;\n // can no longer scroll on the left after this\n available.left = false;\n }\n\n // Only scroll if there is something to scroll\n if (scroll.top !== 0 || scroll.left !== 0) {\n element.scrollBy(scroll);\n }\n return continueSearchUp();\n}\nfunction tryScrollWindow(_ref2) {\n var input = _ref2.input,\n timeSinceLastFrame = _ref2.timeSinceLastFrame,\n available = _ref2.available,\n source = _ref2.source,\n entries = _ref2.entries;\n var element = document.documentElement;\n var feedback = {\n input: input,\n source: source,\n element: element\n };\n var _iterator = _createForOfIteratorHelper(entries),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _entry$getConfigurati, _entry$getAllowedAxis, _entry$getAllowedAxis2;\n var entry = _step.value;\n // this entry is not allowing scrolling, we need to look for another\n if (entry.canScroll && !entry.canScroll(feedback)) {\n continue;\n }\n\n // Note: if we had an event for when the user is leaving a tab\n // we _could_ conceptually reset the engagement\n var engagement = markAndGetEngagement(element);\n var config = getInternalConfig((_entry$getConfigurati = entry.getConfiguration) === null || _entry$getConfigurati === void 0 ? void 0 : _entry$getConfigurati.call(entry, feedback));\n var allowedAxis = (_entry$getAllowedAxis = (_entry$getAllowedAxis2 = entry.getAllowedAxis) === null || _entry$getAllowedAxis2 === void 0 ? void 0 : _entry$getAllowedAxis2.call(entry, feedback)) !== null && _entry$getAllowedAxis !== void 0 ? _entry$getAllowedAxis : 'all';\n var scrollBy = getScrollBy({\n element: element,\n engagement: engagement,\n input: input,\n config: config,\n allowedAxis: allowedAxis,\n getRect: function getRect(element) {\n return DOMRect.fromRect({\n y: 0,\n x: 0,\n width: element.clientWidth,\n height: element.clientHeight\n });\n },\n timeSinceLastFrame: timeSinceLastFrame\n });\n var scroll = {\n top: available.top ? scrollBy.top : 0,\n left: available.left ? scrollBy.left : 0\n };\n\n // only trigger a scroll if we are actually scrolling\n if (scroll.top !== 0 || scroll.left !== 0) {\n element.scrollBy(scroll);\n }\n\n // We only want the window to scroll once\n break;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\nexport function tryScroll(_ref3) {\n var input = _ref3.input,\n findEntry = _ref3.findEntry,\n timeSinceLastFrame = _ref3.timeSinceLastFrame,\n source = _ref3.source,\n getWindowScrollEntries = _ref3.getWindowScrollEntries,\n underUsersPointer = _ref3.underUsersPointer;\n // We are matching browser behaviour and scrolling inner elements\n // before outer ones. So we try to scroll scroller containers before\n // the window.\n var remainder = tryScrollElements({\n target: underUsersPointer,\n timeSinceLastFrame: timeSinceLastFrame,\n input: input,\n source: source,\n findEntry: findEntry\n });\n\n // Check if we can do any window scrolling\n if (!isScrollingAvailable(remainder)) {\n return;\n }\n tryScrollWindow({\n input: input,\n source: source,\n entries: getWindowScrollEntries(),\n timeSinceLastFrame: timeSinceLastFrame,\n available: remainder\n });\n}", "import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { once } from '@atlaskit/pragmatic-drag-and-drop/once';\nimport { getScheduler } from '../shared/scheduler';\nimport { addScrollableAttribute } from './data-attributes';\nimport { tryScroll } from './try-scroll';\nexport function makeApi(_ref) {\n var monitor = _ref.monitor;\n var elementRegistry = new Map();\n var windowRegistry = new Set();\n function autoScroll(args) {\n // Warn during development if trying to add auto scroll to an element\n // that is not scrollable.\n // Note: this can produce a false positive when a scroll container is not\n // scrollable initially, but becomes scrollable during a drag.\n // I thought of adding the warning as I think it would be a more common pitfall\n // to accidentally register auto scrolling on the wrong element\n // If requested, we could provide a mechanism to opt out of this warning\n if (process.env.NODE_ENV !== 'production') {\n var _window$getComputedSt = window.getComputedStyle(args.element),\n overflowX = _window$getComputedSt.overflowX,\n overflowY = _window$getComputedSt.overflowY;\n var isScrollable = overflowX === 'auto' || overflowX === 'scroll' || overflowY === 'auto' || overflowY === 'scroll';\n if (!isScrollable) {\n // eslint-disable-next-line no-console\n console.warn('Auto scrolling has been attached to an element that appears not to be scrollable', {\n element: args.element,\n overflowX: overflowX,\n overflowY: overflowY\n });\n }\n }\n\n // Warn if there is an existing registration\n if (process.env.NODE_ENV !== 'production') {\n var existing = elementRegistry.get(args.element);\n if (existing) {\n // eslint-disable-next-line no-console\n console.warn('You have already registered autoScrolling on the same element', {\n existing: existing,\n proposed: args\n });\n }\n }\n elementRegistry.set(args.element, args);\n var cleanup = combine(addScrollableAttribute(args.element), function () {\n return elementRegistry.delete(args.element);\n });\n return once(cleanup);\n }\n function autoScrollWindow() {\n var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Putting `args` in a unique object so that\n // each call will create a unique entry, even if a consumer\n // shares the `args` object between calls.\n // Just being safe here.\n var unique = _objectSpread({}, args);\n windowRegistry.add(unique);\n function cleanup() {\n windowRegistry.delete(unique);\n }\n return once(cleanup);\n }\n function findEntry(element) {\n var _elementRegistry$get;\n return (_elementRegistry$get = elementRegistry.get(element)) !== null && _elementRegistry$get !== void 0 ? _elementRegistry$get : null;\n }\n function getWindowScrollEntries() {\n return Array.from(windowRegistry);\n }\n function onFrame(_ref2) {\n var latestArgs = _ref2.latestArgs,\n underUsersPointer = _ref2.underUsersPointer,\n timeSinceLastFrame = _ref2.timeSinceLastFrame;\n tryScroll({\n input: latestArgs.location.current.input,\n source: latestArgs.source,\n findEntry: findEntry,\n underUsersPointer: underUsersPointer,\n timeSinceLastFrame: timeSinceLastFrame,\n getWindowScrollEntries: getWindowScrollEntries\n });\n }\n getScheduler(monitor).onFrame(onFrame);\n return {\n autoScroll: autoScroll,\n autoScrollWindow: autoScrollWindow\n };\n}", "import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { makeApi } from '../over-element/make-api';\nvar api = makeApi({\n monitor: monitorForElements\n});\nexport var autoScrollForElements = api.autoScroll;\nexport var autoScrollWindowForElements = api.autoScrollWindow;"],
5
+ "mappings": "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",
6
+ "names": ["bind", "bindAll", "r", "import_bind_event_listener", "top", "o", "supportsPopover", "r", "import_bind_event_listener", "isFirefox", "isSafari", "import_bind_event_listener", "rafSchd", "wrapperFn", "start", "event", "mount", "ownKeys", "r", "_objectSpread", "_unsupportedIterableToArray", "F", "e", "_arrayLikeToArray", "addToRegistry", "record", "_createForOfIteratorHelper", "_unsupportedIterableToArray", "F", "e", "r", "_arrayLikeToArray", "ownKeys", "_objectSpread", "mount", "dispatchEventToSource", "start", "registerUsage", "api", "isAndroid", "api", "ownKeys", "r", "_objectSpread", "isSafariOnIOS", "centerUnderPointer", "ledger", "start", "api", "ownKeys", "r", "_objectSpread", "isWithin", "isWithin", "left", "top", "_createForOfIteratorHelper", "_unsupportedIterableToArray", "F", "e", "r", "_arrayLikeToArray", "element", "ownKeys", "r", "_objectSpread", "start", "window", "top", "target", "source", "j"]
7
+ }