superdoc 2.19.0-next.1 → 2.19.0-next.11

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 (34) hide show
  1. package/dist/chunks/{create-super-doc-ui-BFJ9Y0YV.cjs → create-super-doc-ui-CSZSAgxc.cjs} +58 -0
  2. package/dist/chunks/{create-super-doc-ui-Dfw1b6h_.es.js → create-super-doc-ui-DMe-GQEe.es.js} +58 -0
  3. package/dist/chunks/pdf.worker.min-BgWCk_Cj.cjs +4 -0
  4. package/dist/chunks/pdf.worker.min-t-CYmkGJ.es.js +4 -0
  5. package/dist/collaboration-upgrade-engine.cjs +1 -1
  6. package/dist/collaboration-upgrade-engine.es.js +1 -1
  7. package/dist/document-api/src/contract/command-catalog.d.ts +1 -1
  8. package/dist/document-api/src/contract/metadata-types.d.ts +1 -1
  9. package/dist/document-api/src/contract/operation-definitions.d.ts +9 -0
  10. package/dist/document-api/src/diff/diff.types.d.ts +9 -1
  11. package/dist/document-api/src/diff/index.d.ts +1 -1
  12. package/dist/document-api/src/index.d.ts +3 -3
  13. package/dist/document-api/src/selection/selection.d.ts +6 -2
  14. package/dist/document-api/src/selection/selection.types.d.ts +75 -0
  15. package/dist/document-api/src/types/track-changes.types.d.ts +35 -2
  16. package/dist/layout-engine/contracts/src/index.d.ts +15 -0
  17. package/dist/layout-engine/contracts/src/resolved-layout.d.ts +3 -1
  18. package/dist/layout-engine/painters/dom/src/runs/tab-run.d.ts +1 -1
  19. package/dist/public/ui-react.cjs +1 -1
  20. package/dist/public/ui-react.es.js +1 -1
  21. package/dist/public/ui-vue.cjs +1 -1
  22. package/dist/public/ui-vue.es.js +1 -1
  23. package/dist/public/ui.cjs +1 -1
  24. package/dist/public/ui.es.js +1 -1
  25. package/dist/style.css +22 -22
  26. package/dist/style.layered.css +22 -22
  27. package/dist/superdoc/src/core/SuperDoc.d.ts +8 -7
  28. package/dist/superdoc/src/core/types/index.d.ts +32 -14
  29. package/dist/superdoc.cjs +12 -8
  30. package/dist/superdoc.es.js +12 -8
  31. package/dist-cdn/style.layered.css +1 -1
  32. package/dist-cdn/superdoc.min.css +1 -1
  33. package/dist-cdn/superdoc.min.js +36 -36
  34. package/package.json +3 -2
@@ -19,7 +19,7 @@ var COLLABORATION_UPGRADE_ENGINE_MINIMUM_NODE_MAJOR = 20;
19
19
  var PRIVATE_ENGINE_INFO = (0, _superdoc_docx_engine_collaboration_upgrade_engine.getCollaborationUpgradeEngineInfo)();
20
20
  var ENGINE_INFO = Object.freeze({
21
21
  ...PRIVATE_ENGINE_INFO,
22
- superdocVersion: "2.19.0-next.1",
22
+ superdocVersion: "2.19.0-next.11",
23
23
  roomSchemaVersion: Object.freeze({ ...PRIVATE_ENGINE_INFO.roomSchemaVersion }),
24
24
  supportedBundleVersions: SUPPORTED_COLLABORATION_UPGRADE_BUNDLE_VERSIONS,
25
25
  supportedV1ReaderContractVersions: SUPPORTED_V1_READER_CONTRACT_VERSIONS
@@ -18,7 +18,7 @@ var COLLABORATION_UPGRADE_ENGINE_MINIMUM_NODE_MAJOR = 20;
18
18
  var PRIVATE_ENGINE_INFO = getCollaborationUpgradeEngineInfo$1();
19
19
  var ENGINE_INFO = Object.freeze({
20
20
  ...PRIVATE_ENGINE_INFO,
21
- superdocVersion: "2.19.0-next.1",
21
+ superdocVersion: "2.19.0-next.11",
22
22
  roomSchemaVersion: Object.freeze({ ...PRIVATE_ENGINE_INFO.roomSchemaVersion }),
23
23
  supportedBundleVersions: SUPPORTED_COLLABORATION_UPGRADE_BUNDLE_VERSIONS,
24
24
  supportedV1ReaderContractVersions: SUPPORTED_V1_READER_CONTRACT_VERSIONS
@@ -1,7 +1,7 @@
1
1
  import { CommandCatalog, CommandStaticMetadata, OperationId } from './types.js';
2
2
  export declare const COMMAND_CATALOG: CommandCatalog;
3
3
  /** Operation IDs whose catalog entry has `mutates: true`. */
4
- export declare const MUTATING_OPERATION_IDS: ("replace" | "find" | "insert" | "delete" | "info" | "projectHtml" | "projectMarkdown" | "capabilities.check" | "format.apply" | "blocks.split" | "blocks.merge" | "blocks.move" | "lists.getState" | "lists.apply" | "lists.continue" | "lists.restart" | "lists.remove" | "format.paragraph.setMarkRunProps" | "tables.moveRow" | "tables.moveColumn" | "format.bold" | "format.strike" | "format.color" | "format.rtl" | "format.cs" | "format.shading" | "format.fontFamily" | "format.lang" | "format.fontSize" | "format.fontSizeCs" | "format.highlight" | "format.italic" | "format.underline" | "format.caps" | "format.smallCaps" | "format.outline" | "format.shadow" | "format.emboss" | "format.imprint" | "format.vanish" | "format.webHidden" | "format.specVanish" | "format.border" | "format.fitText" | "format.dstrike" | "format.vertAlign" | "format.position" | "format.bCs" | "format.iCs" | "format.snapToGrid" | "format.oMath" | "format.letterSpacing" | "format.charScale" | "format.kerning" | "format.rStyle" | "format.rFonts" | "format.eastAsianLayout" | "format.em" | "format.ligatures" | "format.numForm" | "format.numSpacing" | "format.stylisticSets" | "format.contextualAlternates" | "get" | "getNode" | "getNodeById" | "getText" | "getMarkdown" | "getHtml" | "markdownToFragment" | "htmlToFragment" | "extract" | "clearContent" | "formatRange" | "blocks.findText" | "blocks.list" | "blocks.delete" | "blocks.deleteRange" | "styles.apply" | "styles.getCatalog" | "templates.apply" | "create.paragraph" | "create.heading" | "create.sectionBreak" | "sections.list" | "sections.get" | "sections.setBreakType" | "sections.setPageMargins" | "sections.setHeaderFooterMargins" | "sections.setPageSetup" | "sections.setColumns" | "sections.setLineNumbering" | "sections.setPageNumbering" | "sections.setTitlePage" | "sections.setOddEvenHeadersFooters" | "sections.setVerticalAlign" | "sections.setSectionDirection" | "sections.setHeaderFooterRef" | "sections.clearHeaderFooterRef" | "sections.setLinkToPrevious" | "sections.setPageBorders" | "sections.clearPageBorders" | "styles.paragraph.setStyle" | "styles.paragraph.setStyleRef" | "styles.paragraph.clearStyle" | "format.paragraph.resetDirectFormatting" | "format.paragraph.setAlignment" | "format.paragraph.clearAlignment" | "format.paragraph.setIndentation" | "format.paragraph.clearIndentation" | "format.paragraph.setSpacing" | "format.paragraph.clearSpacing" | "format.paragraph.setKeepOptions" | "format.paragraph.setOutlineLevel" | "format.paragraph.setFlowOptions" | "format.paragraph.setTabStop" | "format.paragraph.clearTabStop" | "format.paragraph.clearAllTabStops" | "format.paragraph.setBorder" | "format.paragraph.clearBorder" | "format.paragraph.setShading" | "format.paragraph.clearShading" | "format.paragraph.setDirection" | "format.paragraph.clearDirection" | "format.paragraph.setNumbering" | "lists.list" | "lists.get" | "lists.insert" | "lists.create" | "lists.attach" | "lists.detach" | "lists.delete" | "lists.indent" | "lists.outdent" | "lists.join" | "lists.canJoin" | "lists.separate" | "lists.merge" | "lists.split" | "lists.setLevel" | "lists.setValue" | "lists.continuePrevious" | "lists.canContinuePrevious" | "lists.setLevelRestart" | "lists.convertToText" | "lists.applyTemplate" | "lists.applyPreset" | "lists.setType" | "lists.captureTemplate" | "lists.setLevelNumbering" | "lists.setLevelBullet" | "lists.setLevelPictureBullet" | "lists.setLevelAlignment" | "lists.setLevelIndents" | "lists.setLevelTrailingCharacter" | "lists.setLevelMarkerFont" | "lists.clearLevelOverrides" | "lists.getStyle" | "lists.applyStyle" | "lists.restartAt" | "lists.setLevelNumberStyle" | "lists.setLevelText" | "lists.setLevelStart" | "lists.setLevelLayout" | "comments.create" | "comments.patch" | "comments.delete" | "comments.get" | "comments.list" | "trackChanges.list" | "trackChanges.get" | "trackChanges.decide" | "query.match" | "ranges.resolve" | "selection.current" | "mutations.preview" | "mutations.apply" | "plan.execute" | "capabilities.get" | "capabilities.resolve" | "create.table" | "tables.convertFromText" | "tables.delete" | "tables.clearContents" | "tables.move" | "tables.split" | "tables.convertToText" | "tables.setLayout" | "tables.insertRow" | "tables.deleteRow" | "tables.setRowHeight" | "tables.distributeRows" | "tables.setRowOptions" | "tables.insertColumn" | "tables.deleteColumn" | "tables.setColumnWidth" | "tables.distributeColumns" | "tables.insertCell" | "tables.deleteCell" | "tables.mergeCells" | "tables.unmergeCells" | "tables.splitCell" | "tables.setCellProperties" | "tables.setCellText" | "tables.sort" | "tables.setAltText" | "tables.setStyle" | "tables.clearStyle" | "tables.setStyleOption" | "tables.setBorder" | "tables.clearBorder" | "tables.applyBorderPreset" | "tables.setShading" | "tables.clearShading" | "tables.setTablePadding" | "tables.setCellPadding" | "tables.setCellSpacing" | "tables.clearCellSpacing" | "tables.applyStyle" | "tables.setBorders" | "tables.setTableOptions" | "tables.applyPreset" | "tables.get" | "tables.getCells" | "tables.getProperties" | "tables.getStyles" | "tables.setDefaultStyle" | "tables.clearDefaultStyle" | "create.tableOfContents" | "toc.list" | "toc.get" | "toc.configure" | "toc.update" | "toc.remove" | "toc.markEntry" | "toc.unmarkEntry" | "toc.listEntries" | "toc.getEntry" | "toc.editEntry" | "history.get" | "history.undo" | "history.redo" | "create.image" | "images.list" | "images.get" | "images.delete" | "images.move" | "images.convertToInline" | "images.convertToFloating" | "images.setSize" | "images.setWrapType" | "images.setWrapSide" | "images.setWrapDistances" | "images.setPosition" | "images.setAnchorOptions" | "images.setZOrder" | "images.scale" | "images.setLockAspectRatio" | "images.rotate" | "images.flip" | "images.crop" | "images.resetCrop" | "images.replaceSource" | "images.setAltText" | "images.setDecorative" | "images.setName" | "images.setHyperlink" | "images.insertCaption" | "images.updateCaption" | "images.removeCaption" | "hyperlinks.list" | "hyperlinks.get" | "hyperlinks.wrap" | "hyperlinks.insert" | "hyperlinks.patch" | "hyperlinks.remove" | "headerFooters.list" | "headerFooters.get" | "headerFooters.resolve" | "headerFooters.refs.set" | "headerFooters.refs.clear" | "headerFooters.refs.setLinkedToPrevious" | "headerFooters.parts.list" | "headerFooters.parts.create" | "headerFooters.parts.delete" | "watermarks.apply" | "watermarks.list" | "watermarks.insert" | "watermarks.replace" | "watermarks.remove" | "create.contentControl" | "contentControls.list" | "contentControls.get" | "contentControls.listInRange" | "contentControls.selectByTag" | "contentControls.selectByTitle" | "contentControls.listChildren" | "contentControls.getParent" | "contentControls.wrap" | "contentControls.unwrap" | "contentControls.delete" | "contentControls.copy" | "contentControls.move" | "contentControls.patch" | "contentControls.setLockMode" | "contentControls.setType" | "contentControls.getContent" | "contentControls.replaceContent" | "contentControls.clearContent" | "contentControls.appendContent" | "contentControls.prependContent" | "contentControls.insertBefore" | "contentControls.insertAfter" | "contentControls.getBinding" | "contentControls.setBinding" | "contentControls.clearBinding" | "contentControls.getRawProperties" | "contentControls.patchRawProperties" | "contentControls.validateWordCompatibility" | "contentControls.normalizeWordCompatibility" | "contentControls.normalizeTagPayload" | "contentControls.text.setMultiline" | "contentControls.text.setValue" | "contentControls.text.clearValue" | "contentControls.date.setValue" | "contentControls.date.clearValue" | "contentControls.date.setDisplayFormat" | "contentControls.date.setDisplayLocale" | "contentControls.date.setStorageFormat" | "contentControls.date.setCalendar" | "contentControls.checkbox.getState" | "contentControls.checkbox.setState" | "contentControls.checkbox.toggle" | "contentControls.checkbox.setSymbolPair" | "contentControls.choiceList.getItems" | "contentControls.choiceList.setItems" | "contentControls.choiceList.setSelected" | "contentControls.repeatingSection.listItems" | "contentControls.repeatingSection.insertItemBefore" | "contentControls.repeatingSection.insertItemAfter" | "contentControls.repeatingSection.cloneItem" | "contentControls.repeatingSection.deleteItem" | "contentControls.repeatingSection.setAllowInsertDelete" | "contentControls.group.wrap" | "contentControls.group.ungroup" | "bookmarks.list" | "bookmarks.get" | "bookmarks.insert" | "bookmarks.rename" | "bookmarks.remove" | "footnotes.list" | "footnotes.get" | "footnotes.insert" | "footnotes.update" | "footnotes.remove" | "footnotes.configure" | "clipboard.parse" | "clipboard.insert" | "clipboard.serializeSelection" | "crossRefs.list" | "crossRefs.get" | "crossRefs.insert" | "crossRefs.rebuild" | "crossRefs.remove" | "index.list" | "index.get" | "index.insert" | "index.configure" | "index.rebuild" | "index.remove" | "index.entries.list" | "index.entries.get" | "index.entries.insert" | "index.entries.update" | "index.entries.remove" | "captions.list" | "captions.get" | "captions.insert" | "captions.update" | "captions.remove" | "captions.configure" | "fields.list" | "fields.get" | "fields.insert" | "fields.rebuild" | "fields.remove" | "citations.list" | "citations.get" | "citations.insert" | "citations.update" | "citations.remove" | "citations.sources.list" | "citations.sources.get" | "citations.sources.insert" | "citations.sources.update" | "citations.sources.remove" | "citations.bibliography.get" | "citations.bibliography.insert" | "citations.bibliography.rebuild" | "citations.bibliography.configure" | "citations.bibliography.remove" | "authorities.list" | "authorities.get" | "authorities.insert" | "authorities.configure" | "authorities.rebuild" | "authorities.remove" | "authorities.entries.list" | "authorities.entries.get" | "authorities.entries.insert" | "authorities.entries.update" | "authorities.entries.remove" | "diff.capture" | "diff.compare" | "diff.apply" | "export.toDocx" | "protection.get" | "protection.setEditingRestriction" | "protection.clearEditingRestriction" | "permissionRanges.list" | "permissionRanges.get" | "permissionRanges.create" | "permissionRanges.remove" | "permissionRanges.updatePrincipal" | "customXml.parts.list" | "customXml.parts.get" | "customXml.parts.create" | "customXml.parts.patch" | "customXml.parts.remove" | "metadata.attach" | "metadata.list" | "metadata.get" | "metadata.update" | "metadata.remove" | "metadata.resolve")[];
4
+ export declare const MUTATING_OPERATION_IDS: ("replace" | "find" | "insert" | "delete" | "info" | "projectHtml" | "projectMarkdown" | "capabilities.check" | "format.apply" | "blocks.split" | "blocks.merge" | "blocks.move" | "lists.getState" | "lists.apply" | "lists.continue" | "lists.restart" | "lists.remove" | "format.paragraph.setMarkRunProps" | "tables.moveRow" | "tables.moveColumn" | "format.bold" | "format.strike" | "format.color" | "format.rtl" | "format.cs" | "format.shading" | "format.fontFamily" | "format.lang" | "format.fontSize" | "format.fontSizeCs" | "format.highlight" | "format.italic" | "format.underline" | "format.caps" | "format.smallCaps" | "format.outline" | "format.shadow" | "format.emboss" | "format.imprint" | "format.vanish" | "format.webHidden" | "format.specVanish" | "format.border" | "format.fitText" | "format.dstrike" | "format.vertAlign" | "format.position" | "format.bCs" | "format.iCs" | "format.snapToGrid" | "format.oMath" | "format.letterSpacing" | "format.charScale" | "format.kerning" | "format.rStyle" | "format.rFonts" | "format.eastAsianLayout" | "format.em" | "format.ligatures" | "format.numForm" | "format.numSpacing" | "format.stylisticSets" | "format.contextualAlternates" | "get" | "getNode" | "getNodeById" | "getText" | "getMarkdown" | "getHtml" | "markdownToFragment" | "htmlToFragment" | "extract" | "clearContent" | "formatRange" | "blocks.findText" | "blocks.list" | "blocks.delete" | "blocks.deleteRange" | "styles.apply" | "styles.getCatalog" | "templates.apply" | "create.paragraph" | "create.heading" | "create.sectionBreak" | "sections.list" | "sections.get" | "sections.setBreakType" | "sections.setPageMargins" | "sections.setHeaderFooterMargins" | "sections.setPageSetup" | "sections.setColumns" | "sections.setLineNumbering" | "sections.setPageNumbering" | "sections.setTitlePage" | "sections.setOddEvenHeadersFooters" | "sections.setVerticalAlign" | "sections.setSectionDirection" | "sections.setHeaderFooterRef" | "sections.clearHeaderFooterRef" | "sections.setLinkToPrevious" | "sections.setPageBorders" | "sections.clearPageBorders" | "styles.paragraph.setStyle" | "styles.paragraph.setStyleRef" | "styles.paragraph.clearStyle" | "format.paragraph.resetDirectFormatting" | "format.paragraph.setAlignment" | "format.paragraph.clearAlignment" | "format.paragraph.setIndentation" | "format.paragraph.clearIndentation" | "format.paragraph.setSpacing" | "format.paragraph.clearSpacing" | "format.paragraph.setKeepOptions" | "format.paragraph.setOutlineLevel" | "format.paragraph.setFlowOptions" | "format.paragraph.setTabStop" | "format.paragraph.clearTabStop" | "format.paragraph.clearAllTabStops" | "format.paragraph.setBorder" | "format.paragraph.clearBorder" | "format.paragraph.setShading" | "format.paragraph.clearShading" | "format.paragraph.setDirection" | "format.paragraph.clearDirection" | "format.paragraph.setNumbering" | "lists.list" | "lists.get" | "lists.insert" | "lists.create" | "lists.attach" | "lists.detach" | "lists.delete" | "lists.indent" | "lists.outdent" | "lists.join" | "lists.canJoin" | "lists.separate" | "lists.merge" | "lists.split" | "lists.setLevel" | "lists.setValue" | "lists.continuePrevious" | "lists.canContinuePrevious" | "lists.setLevelRestart" | "lists.convertToText" | "lists.applyTemplate" | "lists.applyPreset" | "lists.setType" | "lists.captureTemplate" | "lists.setLevelNumbering" | "lists.setLevelBullet" | "lists.setLevelPictureBullet" | "lists.setLevelAlignment" | "lists.setLevelIndents" | "lists.setLevelTrailingCharacter" | "lists.setLevelMarkerFont" | "lists.clearLevelOverrides" | "lists.getStyle" | "lists.applyStyle" | "lists.restartAt" | "lists.setLevelNumberStyle" | "lists.setLevelText" | "lists.setLevelStart" | "lists.setLevelLayout" | "comments.create" | "comments.patch" | "comments.delete" | "comments.get" | "comments.list" | "trackChanges.list" | "trackChanges.get" | "trackChanges.decide" | "query.match" | "ranges.resolve" | "selection.current" | "selection.extractOoxml" | "mutations.preview" | "mutations.apply" | "plan.execute" | "capabilities.get" | "capabilities.resolve" | "create.table" | "tables.convertFromText" | "tables.delete" | "tables.clearContents" | "tables.move" | "tables.split" | "tables.convertToText" | "tables.setLayout" | "tables.insertRow" | "tables.deleteRow" | "tables.setRowHeight" | "tables.distributeRows" | "tables.setRowOptions" | "tables.insertColumn" | "tables.deleteColumn" | "tables.setColumnWidth" | "tables.distributeColumns" | "tables.insertCell" | "tables.deleteCell" | "tables.mergeCells" | "tables.unmergeCells" | "tables.splitCell" | "tables.setCellProperties" | "tables.setCellText" | "tables.sort" | "tables.setAltText" | "tables.setStyle" | "tables.clearStyle" | "tables.setStyleOption" | "tables.setBorder" | "tables.clearBorder" | "tables.applyBorderPreset" | "tables.setShading" | "tables.clearShading" | "tables.setTablePadding" | "tables.setCellPadding" | "tables.setCellSpacing" | "tables.clearCellSpacing" | "tables.applyStyle" | "tables.setBorders" | "tables.setTableOptions" | "tables.applyPreset" | "tables.get" | "tables.getCells" | "tables.getProperties" | "tables.getStyles" | "tables.setDefaultStyle" | "tables.clearDefaultStyle" | "create.tableOfContents" | "toc.list" | "toc.get" | "toc.configure" | "toc.update" | "toc.remove" | "toc.markEntry" | "toc.unmarkEntry" | "toc.listEntries" | "toc.getEntry" | "toc.editEntry" | "history.get" | "history.undo" | "history.redo" | "create.image" | "images.list" | "images.get" | "images.delete" | "images.move" | "images.convertToInline" | "images.convertToFloating" | "images.setSize" | "images.setWrapType" | "images.setWrapSide" | "images.setWrapDistances" | "images.setPosition" | "images.setAnchorOptions" | "images.setZOrder" | "images.scale" | "images.setLockAspectRatio" | "images.rotate" | "images.flip" | "images.crop" | "images.resetCrop" | "images.replaceSource" | "images.setAltText" | "images.setDecorative" | "images.setName" | "images.setHyperlink" | "images.insertCaption" | "images.updateCaption" | "images.removeCaption" | "hyperlinks.list" | "hyperlinks.get" | "hyperlinks.wrap" | "hyperlinks.insert" | "hyperlinks.patch" | "hyperlinks.remove" | "headerFooters.list" | "headerFooters.get" | "headerFooters.resolve" | "headerFooters.refs.set" | "headerFooters.refs.clear" | "headerFooters.refs.setLinkedToPrevious" | "headerFooters.parts.list" | "headerFooters.parts.create" | "headerFooters.parts.delete" | "watermarks.apply" | "watermarks.list" | "watermarks.insert" | "watermarks.replace" | "watermarks.remove" | "create.contentControl" | "contentControls.list" | "contentControls.get" | "contentControls.listInRange" | "contentControls.selectByTag" | "contentControls.selectByTitle" | "contentControls.listChildren" | "contentControls.getParent" | "contentControls.wrap" | "contentControls.unwrap" | "contentControls.delete" | "contentControls.copy" | "contentControls.move" | "contentControls.patch" | "contentControls.setLockMode" | "contentControls.setType" | "contentControls.getContent" | "contentControls.replaceContent" | "contentControls.clearContent" | "contentControls.appendContent" | "contentControls.prependContent" | "contentControls.insertBefore" | "contentControls.insertAfter" | "contentControls.getBinding" | "contentControls.setBinding" | "contentControls.clearBinding" | "contentControls.getRawProperties" | "contentControls.patchRawProperties" | "contentControls.validateWordCompatibility" | "contentControls.normalizeWordCompatibility" | "contentControls.normalizeTagPayload" | "contentControls.text.setMultiline" | "contentControls.text.setValue" | "contentControls.text.clearValue" | "contentControls.date.setValue" | "contentControls.date.clearValue" | "contentControls.date.setDisplayFormat" | "contentControls.date.setDisplayLocale" | "contentControls.date.setStorageFormat" | "contentControls.date.setCalendar" | "contentControls.checkbox.getState" | "contentControls.checkbox.setState" | "contentControls.checkbox.toggle" | "contentControls.checkbox.setSymbolPair" | "contentControls.choiceList.getItems" | "contentControls.choiceList.setItems" | "contentControls.choiceList.setSelected" | "contentControls.repeatingSection.listItems" | "contentControls.repeatingSection.insertItemBefore" | "contentControls.repeatingSection.insertItemAfter" | "contentControls.repeatingSection.cloneItem" | "contentControls.repeatingSection.deleteItem" | "contentControls.repeatingSection.setAllowInsertDelete" | "contentControls.group.wrap" | "contentControls.group.ungroup" | "bookmarks.list" | "bookmarks.get" | "bookmarks.insert" | "bookmarks.rename" | "bookmarks.remove" | "footnotes.list" | "footnotes.get" | "footnotes.insert" | "footnotes.update" | "footnotes.remove" | "footnotes.configure" | "clipboard.parse" | "clipboard.insert" | "clipboard.serializeSelection" | "crossRefs.list" | "crossRefs.get" | "crossRefs.insert" | "crossRefs.rebuild" | "crossRefs.remove" | "index.list" | "index.get" | "index.insert" | "index.configure" | "index.rebuild" | "index.remove" | "index.entries.list" | "index.entries.get" | "index.entries.insert" | "index.entries.update" | "index.entries.remove" | "captions.list" | "captions.get" | "captions.insert" | "captions.update" | "captions.remove" | "captions.configure" | "fields.list" | "fields.get" | "fields.insert" | "fields.rebuild" | "fields.remove" | "citations.list" | "citations.get" | "citations.insert" | "citations.update" | "citations.remove" | "citations.sources.list" | "citations.sources.get" | "citations.sources.insert" | "citations.sources.update" | "citations.sources.remove" | "citations.bibliography.get" | "citations.bibliography.insert" | "citations.bibliography.rebuild" | "citations.bibliography.configure" | "citations.bibliography.remove" | "authorities.list" | "authorities.get" | "authorities.insert" | "authorities.configure" | "authorities.rebuild" | "authorities.remove" | "authorities.entries.list" | "authorities.entries.get" | "authorities.entries.insert" | "authorities.entries.update" | "authorities.entries.remove" | "diff.capture" | "diff.compare" | "diff.apply" | "export.toDocx" | "protection.get" | "protection.setEditingRestriction" | "protection.clearEditingRestriction" | "permissionRanges.list" | "permissionRanges.get" | "permissionRanges.create" | "permissionRanges.remove" | "permissionRanges.updatePrincipal" | "customXml.parts.list" | "customXml.parts.get" | "customXml.parts.create" | "customXml.parts.patch" | "customXml.parts.remove" | "metadata.attach" | "metadata.list" | "metadata.get" | "metadata.update" | "metadata.remove" | "metadata.resolve")[];
5
5
  /** Maps each operation to its human-readable description. */
6
6
  export declare const OPERATION_DESCRIPTION_MAP: Record<OperationId, string>;
7
7
  /** Maps each operation to whether it requires an open document to execute. */
@@ -3,7 +3,7 @@ export declare const OPERATION_IDEMPOTENCY_VALUES: readonly ["idempotent", "cond
3
3
  export type OperationIdempotency = (typeof OPERATION_IDEMPOTENCY_VALUES)[number];
4
4
  export declare const OPERATION_TRACKED_SUPPORT_VALUES: readonly ["always", "conditional", "never"];
5
5
  export type OperationTrackedSupport = (typeof OPERATION_TRACKED_SUPPORT_VALUES)[number];
6
- export declare const PRE_APPLY_THROW_CODES: readonly ["TARGET_NOT_FOUND", "CAPABILITY_UNAVAILABLE", "INVALID_TARGET", "AMBIGUOUS_TARGET", "REVISION_MISMATCH", "MATCH_NOT_FOUND", "AMBIGUOUS_MATCH", "STYLE_CONFLICT", "PRECONDITION_FAILED", "INVALID_INPUT", "CROSS_BLOCK_MATCH", "SPAN_FRAGMENTED", "TARGET_MOVED", "PLAN_CONFLICT_OVERLAP", "INVALID_STEP_COMBINATION", "REVISION_CHANGED_SINCE_COMPILE", "INVALID_INSERTION_CONTEXT", "DOCUMENT_IDENTITY_CONFLICT", "INTERNAL_ERROR", "ADDRESS_STALE", "DUPLICATE_ID", "INVALID_CONTEXT", "RAW_MODE_REQUIRED", "PRESERVE_ONLY_VIOLATION", "CAPABILITY_UNSUPPORTED", "LOCK_VIOLATION", "TYPE_MISMATCH", "STORY_NOT_FOUND", "STORY_MISMATCH", "STORY_NOT_SUPPORTED", "CROSS_STORY_PLAN", "MATERIALIZATION_FAILED"];
6
+ export declare const PRE_APPLY_THROW_CODES: readonly ["TARGET_NOT_FOUND", "CAPABILITY_UNAVAILABLE", "INVALID_TARGET", "AMBIGUOUS_TARGET", "REVISION_MISMATCH", "MATCH_NOT_FOUND", "AMBIGUOUS_MATCH", "STYLE_CONFLICT", "PRECONDITION_FAILED", "INVALID_INPUT", "CROSS_BLOCK_MATCH", "SPAN_FRAGMENTED", "TARGET_MOVED", "PLAN_CONFLICT_OVERLAP", "INVALID_STEP_COMBINATION", "REVISION_CHANGED_SINCE_COMPILE", "INVALID_INSERTION_CONTEXT", "DOCUMENT_IDENTITY_CONFLICT", "INTERNAL_ERROR", "ADDRESS_STALE", "DUPLICATE_ID", "INVALID_CONTEXT", "RAW_MODE_REQUIRED", "PRESERVE_ONLY_VIOLATION", "CAPABILITY_UNSUPPORTED", "LOCK_VIOLATION", "TYPE_MISMATCH", "STORY_NOT_FOUND", "STORY_MISMATCH", "STORY_NOT_SUPPORTED", "CROSS_STORY_PLAN", "MATERIALIZATION_FAILED", "RESOURCE_LIMIT"];
7
7
  export type PreApplyThrowCode = (typeof PRE_APPLY_THROW_CODES)[number];
8
8
  export interface CommandThrowPolicy {
9
9
  preApply: readonly PreApplyThrowCode[];
@@ -1031,6 +1031,15 @@ export declare const OPERATION_DEFINITIONS: {
1031
1031
  readonly referenceDocPath: "selection/current.mdx";
1032
1032
  readonly referenceGroup: "selection";
1033
1033
  };
1034
+ readonly 'selection.extractOoxml': {
1035
+ readonly memberPath: "selection.extractOoxml";
1036
+ readonly description: "Capture a nonempty current or addressed selection as OOXML with its structure, context, and package dependencies.";
1037
+ readonly expectedResult: "Returns the selected OOXML, structural placement, source provenance, and required relationships and parts without changing the document.";
1038
+ readonly requiresDocumentContext: true;
1039
+ readonly metadata: CommandStaticMetadata;
1040
+ readonly referenceDocPath: "selection/extract-ooxml.mdx";
1041
+ readonly referenceGroup: "selection";
1042
+ };
1034
1043
  readonly 'mutations.preview': {
1035
1044
  readonly memberPath: "mutations.preview";
1036
1045
  readonly description: "Dry-run a mutation plan, returning resolved targets without applying changes.";
@@ -44,7 +44,7 @@ export interface DiffSummary {
44
44
  };
45
45
  }
46
46
  /** Stable reason code for a compare-time apply blocker. */
47
- export type DiffApplyEligibilityBlockerCode = 'family-apply-lane-unavailable' | 'header-footer-physical-lifecycle-unsafe' | 'header-footer-tracked-lifecycle-unsupported' | 'comment-replay-unsafe' | 'comment-anchor-marker-semantics-unsafe' | 'styles-replay-unsafe' | 'numbering-replay-unsafe' | 'definition-replay-tracked-unsupported' | 'section-reference-replay-unsafe' | 'structural-paragraph-unsupported';
47
+ export type DiffApplyEligibilityBlockerCode = 'family-apply-lane-unavailable' | 'header-footer-physical-lifecycle-unsafe' | 'header-footer-tracked-lifecycle-unsupported' | 'comment-replay-unsafe' | 'comment-anchor-marker-semantics-unsafe' | 'styles-replay-unsafe' | 'numbering-replay-unsafe' | 'definition-replay-tracked-unsupported' | 'package-graph-tracked-unsupported' | 'section-reference-replay-unsafe' | 'structural-paragraph-unsupported';
48
48
  /** A known reason that the complete diff cannot be applied in one change mode. */
49
49
  export interface DiffApplyEligibilityBlocker {
50
50
  code: DiffApplyEligibilityBlockerCode;
@@ -71,9 +71,17 @@ export interface DiffPayload {
71
71
  summary: DiffSummary;
72
72
  /** Known compare-time blockers by apply mode. Candidate status is not a live apply guarantee. */
73
73
  applyEligibility?: DiffApplyEligibility;
74
+ /** Exhaustive changed OPC parts from the two source-complete snapshots. */
75
+ partChanges?: DiffPartChange[];
74
76
  /** Opaque engine-owned diff data. Do not inspect or modify. */
75
77
  payload: Record<string, unknown>;
76
78
  }
79
+ export interface DiffPartChange {
80
+ partUri: string;
81
+ kind: 'added' | 'removed' | 'modified';
82
+ beforeFingerprint: string | null;
83
+ afterFingerprint: string | null;
84
+ }
77
85
  export interface DiffApplyReviewItem {
78
86
  id: string;
79
87
  story: StoryLocator;
@@ -1,3 +1,3 @@
1
1
  export type { DiffAdapter, DiffApi } from './diff.js';
2
2
  export { executeDiffCapture, executeDiffCompare, executeDiffApply } from './diff.js';
3
- export type { DiffSnapshot, DiffPayload, DiffApplyResult, DiffSummary, DiffCoverage, DiffEngineId, DiffCompareInput, DiffApplyInput, DiffApplyOptions, DiffChangeMode, DiffApplyOperationReceipt, DiffApplyReviewItem, DiffApplyEligibility, DiffApplyModeEligibility, DiffApplyEligibilityBlocker, DiffApplyEligibilityBlockerCode, } from './diff.types.js';
3
+ export type { DiffSnapshot, DiffPayload, DiffPartChange, DiffApplyResult, DiffSummary, DiffCoverage, DiffEngineId, DiffCompareInput, DiffApplyInput, DiffApplyOptions, DiffChangeMode, DiffApplyOperationReceipt, DiffApplyReviewItem, DiffApplyEligibility, DiffApplyModeEligibility, DiffApplyEligibilityBlocker, DiffApplyEligibilityBlockerCode, } from './diff.types.js';
@@ -76,8 +76,8 @@ export * from './export/export.types.js';
76
76
  export type { SelectionMutationAdapter, SelectionMutationRequest, SelectionInsertRequest, } from './selection-mutation.js';
77
77
  export type { RangeAnchor, DocumentEdgeAnchor, PointAnchor, RefBoundaryAnchor, ResolveRangeInput, ResolveRangeOutput, RangeBlockPreview, RangePreview, RangeResolverAdapter, ScrollIntoViewInput, ScrollIntoViewOutput, } from './ranges/index.js';
78
78
  export { executeResolveRange } from './ranges/index.js';
79
- export type { SelectionApi, SelectionAdapter, SelectionCurrentInput, SelectionInfo } from './selection/selection.js';
80
- export { executeSelectionCurrent } from './selection/selection.js';
79
+ export type { SelectionApi, SelectionAdapter, SelectionCurrentInput, SelectionExtractOoxmlInput, SelectionExtractOoxmlResult, SelectionOoxmlDependency, SelectionTableCellsTarget, SelectionInfo, } from './selection/selection.js';
80
+ export { executeSelectionCurrent, executeSelectionExtractOoxml } from './selection/selection.js';
81
81
  export type { HeaderFootersAdapter, HeaderFootersApi } from './header-footers/header-footers.js';
82
82
  export * from './header-footers/header-footers.types.js';
83
83
  export type { WatermarksAdapter, WatermarksApi } from './watermarks/watermarks.js';
@@ -95,7 +95,7 @@ export { executeProjectMarkdown } from './project-markdown/project-markdown.js';
95
95
  export type { HistoryState, HistoryActionResult, HistoryNoopReason, SDHistoryStatus, SDHistoryCollaborationMeta, } from './history/history.types.js';
96
96
  export { executeTrackChangesGet, executeTrackChangesList, executeTrackChangesDecide, } from './track-changes/track-changes.js';
97
97
  export { createPlanApi, type PlanApi, type PlanExecuteInput, type PlanExecuteEntry, type PlanExecuteEntryExpect, type PlanExecuteResult, type PlanEntryReceipt, type PlanEntryReceiptStatus, type PlanExecuteFailure, type PlanCaptureRefMarker, type PlanProjectTextOffsetMarker, } from './plan/plan.js';
98
- export type { DiffSnapshot, DiffPayload, DiffApplyResult, DiffCompareInput, DiffApplyInput, DiffApplyOptions, DiffApplyOperationReceipt, DiffApplyReviewItem, DiffApplyEligibility, DiffApplyModeEligibility, DiffApplyEligibilityBlocker, DiffApplyEligibilityBlockerCode, } from './diff/diff.types.js';
98
+ export type { DiffSnapshot, DiffPayload, DiffPartChange, DiffApplyResult, DiffCompareInput, DiffApplyInput, DiffApplyOptions, DiffApplyOperationReceipt, DiffApplyReviewItem, DiffApplyEligibility, DiffApplyModeEligibility, DiffApplyEligibilityBlocker, DiffApplyEligibilityBlockerCode, } from './diff/diff.types.js';
99
99
  export type { GetAdapter } from './get/get.js';
100
100
  export type { FindAdapter, FindOptions } from './find/find.js';
101
101
  export type { GetNodeAdapter, GetNodeByIdInput } from './get-node/get-node.js';
@@ -1,11 +1,12 @@
1
- import { SelectionCurrentInput, SelectionInfo } from './selection.types.js';
2
- export type { SelectionCurrentInput, SelectionInfo } from './selection.types.js';
1
+ import { SelectionCurrentInput, SelectionExtractOoxmlInput, SelectionExtractOoxmlResult, SelectionInfo } from './selection.types.js';
2
+ export type { SelectionCurrentInput, SelectionExtractOoxmlInput, SelectionExtractOoxmlResult, SelectionOoxmlDependency, SelectionTableCellsTarget, SelectionInfo, } from './selection.types.js';
3
3
  /**
4
4
  * Engine-specific adapter for the selection API.
5
5
  */
6
6
  export interface SelectionAdapter {
7
7
  /** Read the editor's current selection. */
8
8
  current(input: SelectionCurrentInput): SelectionInfo;
9
+ extractOoxml(input: SelectionExtractOoxmlInput): SelectionExtractOoxmlResult;
9
10
  }
10
11
  /**
11
12
  * Public selection API exposed on `editor.doc.selection`.
@@ -19,5 +20,8 @@ export interface SelectionApi {
19
20
  * pass the resulting `target` directly to `comments.create`.
20
21
  */
21
22
  current(input?: SelectionCurrentInput): SelectionInfo;
23
+ /** Capture the addressed selected OOXML and its package dependencies. */
24
+ extractOoxml(input: SelectionExtractOoxmlInput): SelectionExtractOoxmlResult;
22
25
  }
26
+ export declare function executeSelectionExtractOoxml(adapter: SelectionAdapter, input: SelectionExtractOoxmlInput): SelectionExtractOoxmlResult;
23
27
  export declare function executeSelectionCurrent(adapter: SelectionAdapter, input?: SelectionCurrentInput): SelectionInfo;
@@ -1,4 +1,79 @@
1
1
  import { SelectionTarget, TextTarget } from '../types/address.js';
2
+ export interface SelectionTableCellsTarget {
3
+ kind: 'tableCells';
4
+ tableId: string;
5
+ start: {
6
+ rowIndex: number;
7
+ columnIndex: number;
8
+ };
9
+ end: {
10
+ rowIndex: number;
11
+ columnIndex: number;
12
+ };
13
+ story?: SelectionTarget['story'];
14
+ }
15
+ export type SelectionExtractOoxmlInput = {
16
+ at: SelectionTarget | SelectionTableCellsTarget;
17
+ selection?: never;
18
+ } | {
19
+ selection: 'current';
20
+ at?: never;
21
+ };
22
+ export interface SelectionOoxmlDependency {
23
+ sourcePartUri: string;
24
+ relationshipId: string;
25
+ relationshipType: string;
26
+ target: string;
27
+ targetMode: 'Internal' | 'External';
28
+ contentType: string | null;
29
+ /** Base64-encoded target part when the relationship is internal. */
30
+ dataBase64?: string;
31
+ }
32
+ export interface SelectionExtractOoxmlResult {
33
+ /** Version of the serialized selection-capture manifest. */
34
+ formatVersion: 1;
35
+ at: SelectionTarget | SelectionTableCellsTarget;
36
+ /** Source revision for provenance, never a read precondition. */
37
+ evaluatedRevision: string;
38
+ fragment: {
39
+ placement: 'inline' | 'blocks' | 'table';
40
+ /** Selected WordprocessingML with enough structural wrappers for its placement. */
41
+ xml: string;
42
+ /** Namespace bindings needed to parse the selected fragment. */
43
+ namespaces: Record<string, string>;
44
+ /** Source grid positions for a whole-table or rectangular-cell capture. */
45
+ table?: {
46
+ tableId: string;
47
+ gridColumnCount: number;
48
+ cells: {
49
+ rowIndex: number;
50
+ columnIndex: number;
51
+ gridSpan: number;
52
+ vMerge: 'none' | 'restart' | 'continue';
53
+ }[];
54
+ };
55
+ };
56
+ source: {
57
+ story: SelectionTarget['story'] | null;
58
+ partUri: string;
59
+ paragraphStyleId: string | null;
60
+ };
61
+ /** Source structure outside the selected visible content needed to interpret it. */
62
+ context: {
63
+ xml: string[];
64
+ tableMerges?: {
65
+ selectedRowIndex: number;
66
+ columnIndex: number;
67
+ restartRowIndex: number;
68
+ restartCellPropertiesXml: string;
69
+ }[];
70
+ };
71
+ dependencies: SelectionOoxmlDependency[];
72
+ diagnostics: {
73
+ code: string;
74
+ message: string;
75
+ }[];
76
+ }
2
77
  /**
3
78
  * Input for `selection.current`: reads the editor's current selection.
4
79
  *
@@ -57,6 +57,32 @@ export interface TrackChangeWordRevisionIds {
57
57
  /** Durable membership of one authored text rewrite; children can be decided individually. */
58
58
  export interface TrackChangeRewriteReviewGroup {
59
59
  kind: 'text-rewrite';
60
+ /**
61
+ * Provenance basis for this review group, distinct from the unrelated flat
62
+ * {@link TrackChangeInfo.origin} (importing platform, e.g. Word/Google
63
+ * Docs). `'authored-operation'` here reflects an authored `text.rewrite`
64
+ * transaction (spec SD-5189 CASE-3).
65
+ */
66
+ groupOrigin: 'authored-operation';
67
+ role: 'parent' | 'child';
68
+ parentId?: string;
69
+ childChangeIds: readonly string[];
70
+ members: readonly {
71
+ id: string;
72
+ type: TrackChangeBroadType;
73
+ subtype: string;
74
+ sourceIds: TrackChangeSourceIds;
75
+ }[];
76
+ }
77
+ /**
78
+ * Durable membership of one document-comparison hunk; children can be
79
+ * decided individually. Distinct from {@link TrackChangeRewriteReviewGroup}:
80
+ * a comparison hunk originates from `diff.apply({changeMode:'tracked'})`,
81
+ * not an authored rewrite transaction (spec SD-4953, SD-5189 CASE-2/CASE-3).
82
+ */
83
+ export interface TrackChangeComparisonHunkReviewGroup {
84
+ kind: 'comparison-hunk';
85
+ groupOrigin: 'comparison-hunk';
60
86
  role: 'parent' | 'child';
61
87
  parentId?: string;
62
88
  childChangeIds: readonly string[];
@@ -67,6 +93,13 @@ export interface TrackChangeRewriteReviewGroup {
67
93
  sourceIds: TrackChangeSourceIds;
68
94
  }[];
69
95
  }
96
+ /**
97
+ * Public review-group union (spec SD-5189 CASE-3). Only the two producer
98
+ * kinds this contract covers today; whether the kernel's other internal
99
+ * review-group kinds (formatting/structural/list-delta variants) also need
100
+ * public projection is an open question left to whoever owns those surfaces.
101
+ */
102
+ export type TrackChangeReviewGroup = TrackChangeRewriteReviewGroup | TrackChangeComparisonHunkReviewGroup;
70
103
  /**
71
104
  * Canonical multi-side source provenance per spec §3 / §4. Each value is
72
105
  * raw, source-format identity (Word `w:id`, `w:rsidR` / `w:rsidDel`, future
@@ -519,7 +552,7 @@ export interface TrackChangeInfo {
519
552
  wordRevisionIds?: TrackChangeWordRevisionIds;
520
553
  /** Stable revision-group id (spec §3, fragment lineage). */
521
554
  revisionGroupId?: string;
522
- reviewGroup?: TrackChangeRewriteReviewGroup;
555
+ reviewGroup?: TrackChangeReviewGroup;
523
556
  /** Set to the retired source id when this change is a partial-split fragment; otherwise `null`. */
524
557
  splitFromId?: string | null;
525
558
  /** Replacement side metadata (`grouped` mode replacements only). */
@@ -651,7 +684,7 @@ export interface TrackChangeDomain {
651
684
  structuralDescriptor?: TrackChangeStructuralDescriptor;
652
685
  /** Stable revision-group id. */
653
686
  revisionGroupId?: string;
654
- reviewGroup?: TrackChangeRewriteReviewGroup;
687
+ reviewGroup?: TrackChangeReviewGroup;
655
688
  /** Set to the retired source id when this list item is a partial-split fragment; otherwise `null`. */
656
689
  splitFromId?: string | null;
657
690
  /**
@@ -1455,6 +1455,18 @@ export type DrawingBlock = VectorShapeDrawing | TextboxDrawing | ShapeGroupDrawi
1455
1455
  * Maps to OOXML w:vAlign values in sectPr.
1456
1456
  */
1457
1457
  export type SectionVerticalAlign = 'top' | 'center' | 'bottom' | 'both';
1458
+ export type SectionPageBorderSide = {
1459
+ width: number;
1460
+ space: number;
1461
+ color: string;
1462
+ };
1463
+ export type SectionPageBorders = {
1464
+ offsetFrom: 'page';
1465
+ top?: SectionPageBorderSide;
1466
+ right?: SectionPageBorderSide;
1467
+ bottom?: SectionPageBorderSide;
1468
+ left?: SectionPageBorderSide;
1469
+ };
1458
1470
  export type SectionBreakBlock = {
1459
1471
  kind: 'sectionBreak';
1460
1472
  id: BlockId;
@@ -1471,6 +1483,7 @@ export type SectionBreakBlock = {
1471
1483
  h: number;
1472
1484
  };
1473
1485
  orientation?: 'portrait' | 'landscape';
1486
+ pageBorders?: SectionPageBorders;
1474
1487
  margins: {
1475
1488
  /** Header margin (distance from top of page to header content) */
1476
1489
  header?: number;
@@ -2464,6 +2477,8 @@ export type Page = {
2464
2477
  */
2465
2478
  suppressHeaderFooter?: boolean;
2466
2479
  margins?: PageMargins;
2480
+ /** Section-owned frame outside the page's body margins. */
2481
+ pageBorders?: SectionPageBorders;
2467
2482
  /**
2468
2483
  * Extra bottom space reserved on this page for footnotes (in px).
2469
2484
  * Used by consumers (e.g. editors/painters) to keep footer hit regions and
@@ -1,4 +1,4 @@
1
- import { ColumnLayout, ColumnRegion, DocumentBackground, DrawingBlock, FlowMode, Fragment, ImageBlock, ImageFragmentMetadata, Line, ListBlock, ListMeasure, PageMargins, PageNumberChapterSeparator, PageNumberFormat, ParagraphBlock, ParagraphBorders, ParagraphMeasure, SectionVerticalAlign, MarkerTrackedChange, SourceAnchor, TableBlock, TableMeasure } from './index.js';
1
+ import { ColumnLayout, ColumnRegion, DocumentBackground, DrawingBlock, FlowMode, Fragment, ImageBlock, ImageFragmentMetadata, Line, ListBlock, ListMeasure, PageMargins, PageNumberChapterSeparator, PageNumberFormat, ParagraphBlock, ParagraphBorders, ParagraphMeasure, SectionVerticalAlign, SectionPageBorders, MarkerTrackedChange, SourceAnchor, TableBlock, TableMeasure } from './index.js';
2
2
  import { LayoutSourceIdentity } from './layout-identity.js';
3
3
  /** A fully resolved layout ready for the next-generation paint pipeline. */
4
4
  export type ResolvedLayout = {
@@ -47,6 +47,8 @@ export type ResolvedPage = {
47
47
  pageCountFieldsExact?: boolean;
48
48
  /** Page margins from the source page. Used for ruler rendering and header/footer positioning. */
49
49
  margins?: PageMargins;
50
+ /** Page frame resolved from the owning section. */
51
+ pageBorders?: SectionPageBorders;
50
52
  /** Extra bottom space reserved for footnotes (px). Used for footer space calculation. */
51
53
  footnoteReserved?: number;
52
54
  /** Numeric page number after section numbering restart/offset. Used for OOXML odd/even parity. */
@@ -62,5 +62,5 @@ export declare const renderPositionedTabRun: (run: Extract<Run, {
62
62
  * scales with font size (capped by the descent). This is geometry derived from
63
63
  * the resolved line metrics. The painter never measures the DOM (SD-2957).
64
64
  */
65
- export declare const underlineOffsetFromLineTop: (line: Line) => number;
65
+ export declare const underlineOffsetFromLineTop: (line: Line, fallbackFontSize?: number) => number;
66
66
  export {};
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-BFJ9Y0YV.cjs");
2
+ const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-CSZSAgxc.cjs");
3
3
  const require_slice_source = require("../chunks/slice-source-CFaqq0Vo.cjs");
4
4
  let react = require("react");
5
5
  //#region src/public/ui/react.ts
@@ -1,4 +1,4 @@
1
- import { t as createSuperDocUI } from "../chunks/create-super-doc-ui-Dfw1b6h_.es.js";
1
+ import { t as createSuperDocUI } from "../chunks/create-super-doc-ui-DMe-GQEe.es.js";
2
2
  import { t as toSliceSource } from "../chunks/slice-source-gfOhG2MW.es.js";
3
3
  import { createContext, createElement, useCallback, useContext, useEffect, useRef, useState } from "react";
4
4
  //#region src/public/ui/react.ts
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-BFJ9Y0YV.cjs");
2
+ const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-CSZSAgxc.cjs");
3
3
  const require_slice_source = require("../chunks/slice-source-CFaqq0Vo.cjs");
4
4
  let vue = require("vue");
5
5
  //#region src/public/ui/vue.ts
@@ -1,4 +1,4 @@
1
- import { t as createSuperDocUI } from "../chunks/create-super-doc-ui-Dfw1b6h_.es.js";
1
+ import { t as createSuperDocUI } from "../chunks/create-super-doc-ui-DMe-GQEe.es.js";
2
2
  import { t as toSliceSource } from "../chunks/slice-source-gfOhG2MW.es.js";
3
3
  import { computed, inject, onScopeDispose, provide, shallowRef, toRaw, toValue, watch } from "vue";
4
4
  //#region src/public/ui/vue.ts
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-BFJ9Y0YV.cjs");
2
+ const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-CSZSAgxc.cjs");
3
3
  exports.BUILT_IN_COMMAND_IDS = require_create_super_doc_ui.BUILT_IN_COMMAND_IDS;
4
4
  exports.createSuperDocUI = require_create_super_doc_ui.createSuperDocUI;
5
5
  exports.shallowEqual = require_create_super_doc_ui.shallowEqual;
@@ -1,2 +1,2 @@
1
- import { i as BUILT_IN_COMMAND_IDS, l as shallowEqual, t as createSuperDocUI } from "../chunks/create-super-doc-ui-Dfw1b6h_.es.js";
1
+ import { i as BUILT_IN_COMMAND_IDS, l as shallowEqual, t as createSuperDocUI } from "../chunks/create-super-doc-ui-DMe-GQEe.es.js";
2
2
  export { BUILT_IN_COMMAND_IDS, createSuperDocUI, shallowEqual };
package/dist/style.css CHANGED
@@ -2339,34 +2339,34 @@ img[data-v-c95b2073] {
2339
2339
  pointer-events: auto;
2340
2340
  }
2341
2341
 
2342
- .superdoc[data-v-77e0209a] {
2342
+ .superdoc[data-v-696dd93d] {
2343
2343
  display: flex;
2344
2344
  position: relative;
2345
2345
  }
2346
- .right-sidebar[data-v-77e0209a] {
2346
+ .right-sidebar[data-v-696dd93d] {
2347
2347
  min-width: 320px;
2348
2348
  height: 100%;
2349
2349
  }
2350
- .floating-comments[data-v-77e0209a] {
2350
+ .floating-comments[data-v-696dd93d] {
2351
2351
  min-width: 300px;
2352
2352
  width: 300px;
2353
2353
  height: 100%;
2354
2354
  overflow: visible;
2355
2355
  }
2356
- .superdoc__layers[data-v-77e0209a] {
2356
+ .superdoc__layers[data-v-696dd93d] {
2357
2357
  height: 100%;
2358
2358
  position: relative;
2359
2359
  box-sizing: border-box;
2360
2360
  }
2361
- .superdoc__document[data-v-77e0209a] {
2361
+ .superdoc__document[data-v-696dd93d] {
2362
2362
  width: 100%;
2363
2363
  position: relative;
2364
2364
  }
2365
- .superdoc__sub-document[data-v-77e0209a] {
2365
+ .superdoc__sub-document[data-v-696dd93d] {
2366
2366
  width: 100%;
2367
2367
  position: relative;
2368
2368
  }
2369
- .superdoc__selection-layer[data-v-77e0209a] {
2369
+ .superdoc__selection-layer[data-v-696dd93d] {
2370
2370
  position: absolute;
2371
2371
  min-width: 100%;
2372
2372
  min-height: 100%;
@@ -2377,13 +2377,13 @@ img[data-v-c95b2073] {
2377
2377
  /* SD-3497: PDF whiteboard overlay sits above the rendered PDF canvas but below
2378
2378
  the PDF comment anchors (z-index 6 in PdfCommentsLayer) so anchors stay
2379
2379
  clickable, and below the selection layer (z-index 10). */
2380
- .superdoc__whiteboard-layer[data-v-77e0209a] {
2380
+ .superdoc__whiteboard-layer[data-v-696dd93d] {
2381
2381
  z-index: 4;
2382
2382
  }
2383
- .superdoc__temp-selection[data-v-77e0209a] {
2383
+ .superdoc__temp-selection[data-v-696dd93d] {
2384
2384
  position: absolute;
2385
2385
  }
2386
- .superdoc__right-sidebar[data-v-77e0209a] {
2386
+ .superdoc__right-sidebar[data-v-696dd93d] {
2387
2387
  width: 320px;
2388
2388
  min-width: 320px;
2389
2389
  padding: 0 10px;
@@ -2391,7 +2391,7 @@ img[data-v-c95b2073] {
2391
2391
  position: relative;
2392
2392
  z-index: 2;
2393
2393
  }
2394
- .superdoc__compact-comment-popover[data-v-77e0209a] {
2394
+ .superdoc__compact-comment-popover[data-v-696dd93d] {
2395
2395
  position: absolute;
2396
2396
  top: 12px;
2397
2397
  right: 12px;
@@ -2400,14 +2400,14 @@ img[data-v-c95b2073] {
2400
2400
  }
2401
2401
 
2402
2402
  /* Tools styles */
2403
- .tools[data-v-77e0209a] {
2403
+ .tools[data-v-696dd93d] {
2404
2404
  position: absolute;
2405
2405
  z-index: 3;
2406
2406
  display: flex;
2407
2407
  flex-direction: column;
2408
2408
  gap: var(--sd-ui-tools-gap, 6px);
2409
2409
  }
2410
- .tools-item[data-v-77e0209a] {
2410
+ .tools-item[data-v-696dd93d] {
2411
2411
  display: flex;
2412
2412
  align-items: center;
2413
2413
  justify-content: center;
@@ -2418,10 +2418,10 @@ img[data-v-c95b2073] {
2418
2418
  cursor: pointer;
2419
2419
  position: relative;
2420
2420
  }
2421
- .tools-item i[data-v-77e0209a] {
2421
+ .tools-item i[data-v-696dd93d] {
2422
2422
  cursor: pointer;
2423
2423
  }
2424
- .superdoc__tools-icon[data-v-77e0209a] {
2424
+ .superdoc__tools-icon[data-v-696dd93d] {
2425
2425
  width: var(--sd-ui-tools-icon-size, 20px);
2426
2426
  height: var(--sd-ui-tools-icon-size, 20px);
2427
2427
  flex-shrink: 0;
@@ -2436,22 +2436,22 @@ img[data-v-c95b2073] {
2436
2436
 
2437
2437
  /* 834px is iPad screen size in portrait orientation */
2438
2438
  @media (max-width: 834px) {
2439
- .superdoc .superdoc__layers[data-v-77e0209a] {
2439
+ .superdoc .superdoc__layers[data-v-696dd93d] {
2440
2440
  margin: 0;
2441
2441
  border: 0 !important;
2442
2442
  box-shadow: none;
2443
2443
  }
2444
- .superdoc__sub-document[data-v-77e0209a] {
2444
+ .superdoc__sub-document[data-v-696dd93d] {
2445
2445
  max-width: 100%;
2446
2446
  }
2447
- .superdoc__right-sidebar[data-v-77e0209a] {
2447
+ .superdoc__right-sidebar[data-v-696dd93d] {
2448
2448
  padding: 10px;
2449
2449
  position: relative;
2450
2450
  }
2451
2451
  }
2452
2452
 
2453
2453
  /* AI Writer styles */
2454
- .ai-writer-container[data-v-77e0209a] {
2454
+ .ai-writer-container[data-v-696dd93d] {
2455
2455
  position: fixed;
2456
2456
  z-index: 1000;
2457
2457
  background: white;
@@ -2467,10 +2467,10 @@ img[data-v-c95b2073] {
2467
2467
  transform: translateY(-50%);
2468
2468
  z-index: 50;
2469
2469
  } */
2470
- .ai-tool > svg[data-v-77e0209a] {
2470
+ .ai-tool > svg[data-v-696dd93d] {
2471
2471
  fill: transparent;
2472
2472
  }
2473
- .ai-tool[data-v-77e0209a]::before {
2473
+ .ai-tool[data-v-696dd93d]::before {
2474
2474
  content: '';
2475
2475
  position: absolute;
2476
2476
  width: 20px;
@@ -2491,7 +2491,7 @@ img[data-v-c95b2073] {
2491
2491
  filter: brightness(1.2);
2492
2492
  transition: filter 0.2s ease;
2493
2493
  }
2494
- .ai-tool[data-v-77e0209a]:hover::before {
2494
+ .ai-tool[data-v-696dd93d]:hover::before {
2495
2495
  filter: brightness(1.3);
2496
2496
  }
2497
2497