superdoc 2.25.0-next.1 → 2.25.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.
- package/dist/chunks/{FindReplaceSurface-BUw19rV8.cjs → FindReplaceSurface-8V8AjgR4.cjs} +1 -1
- package/dist/chunks/{FindReplaceSurface-B5dzB2sG.es.js → FindReplaceSurface-RUiTFDt3.es.js} +1 -1
- package/dist/chunks/{PasswordPromptSurface-DaIztq50.cjs → PasswordPromptSurface-B5DHV6qr.cjs} +1 -1
- package/dist/chunks/{PasswordPromptSurface-Ciu8aSmK.es.js → PasswordPromptSurface-BDpxqdzp.es.js} +1 -1
- package/dist/chunks/{PdfViewer-B8y_9or_.es.js → PdfViewer-DjdsIh6n.es.js} +1 -1
- package/dist/chunks/{PdfViewer-DRzLH3eS.cjs → PdfViewer-omriDChK.cjs} +1 -1
- package/dist/chunks/{_plugin-vue_export-helper-DHiJKCsy.es.js → _plugin-vue_export-helper-7ZiLY07t.es.js} +4 -1
- package/dist/chunks/{_plugin-vue_export-helper-CYxINHh_.cjs → _plugin-vue_export-helper-BUdjGKyl.cjs} +9 -0
- package/dist/chunks/{create-super-doc-ui-bTFGKVRb.cjs → create-super-doc-ui-ABeUNZlq.cjs} +105 -8
- package/dist/chunks/{create-super-doc-ui-8UTu16Lw.es.js → create-super-doc-ui-CCNvH6mr.es.js} +105 -8
- package/dist/collaboration-upgrade-engine.cjs +1 -1
- package/dist/collaboration-upgrade-engine.es.js +1 -1
- package/dist/document-api/src/comments/comments.d.ts +2 -1
- package/dist/document-api/src/comments/comments.types.d.ts +2 -0
- package/dist/document-api/src/content-controls/content-controls.types.d.ts +4 -2
- package/dist/document-api/src/contract/command-catalog.d.ts +1 -1
- package/dist/document-api/src/contract/operation-definitions.d.ts +1 -1
- package/dist/document-api/src/hyperlinks/hyperlinks.types.d.ts +9 -2
- package/dist/document-api/src/images/images.types.d.ts +3 -3
- package/dist/document-api/src/index.d.ts +1 -0
- package/dist/document-api/src/lists/lists.types.d.ts +11 -11
- package/dist/document-api/src/permission-ranges/permission-ranges.d.ts +9 -1
- package/dist/document-api/src/permission-ranges/permission-ranges.types.d.ts +17 -0
- package/dist/document-api/src/protection/protection.types.d.ts +2 -2
- package/dist/document-api/src/receipt-bridge.d.ts +3 -0
- package/dist/document-api/src/selection/selection.types.d.ts +3 -2
- package/dist/document-api/src/types/blocks.types.d.ts +2 -2
- package/dist/document-api/src/types/mutation-plan.types.d.ts +45 -5
- package/dist/document-api/src/types/receipt.d.ts +12 -0
- package/dist/document-api/src/types/sd-contract.d.ts +3 -0
- package/dist/document-api/src/types/track-changes.types.d.ts +8 -0
- package/dist/layout-engine/contracts/src/incremental-dependency.d.ts +2 -2
- package/dist/layout-engine/contracts/src/index.d.ts +4 -0
- package/dist/layout-engine/layout-bridge/src/font-metrics-cache.d.ts +2 -23
- package/dist/layout-engine/layout-bridge/src/incrementalLayout.d.ts +11 -4
- package/dist/layout-engine/layout-bridge/src/index.d.ts +3 -3
- package/dist/layout-engine/layout-bridge/src/measurement-environment.d.ts +12 -0
- package/dist/layout-engine/layout-bridge/src/resolveLiveCrossReferences.d.ts +1 -1
- package/dist/layout-engine/layout-bridge/src/text-measurement.d.ts +8 -0
- package/dist/layout-engine/painters/dom/src/decoration-geometry.d.ts +17 -0
- package/dist/layout-engine/painters/dom/src/index.d.ts +5 -0
- package/dist/layout-engine/painters/dom/src/renderer.d.ts +0 -31
- package/dist/layout-engine/painters/dom/src/runs/text-run.d.ts +2 -17
- package/dist/layout-engine/painters/dom/src/runs/text-style-facts.d.ts +9 -0
- package/dist/layout-engine/painters/dom/src/runs/tracked-changes.d.ts +6 -9
- package/dist/layout-engine/painters/dom/src/styles.d.ts +21 -0
- package/dist/public/ui-react.cjs +1 -1
- package/dist/public/ui-react.es.js +1 -1
- package/dist/public/ui-vue.cjs +1 -1
- package/dist/public/ui-vue.es.js +1 -1
- package/dist/public/ui.cjs +1 -1
- package/dist/public/ui.es.js +1 -1
- package/dist/shared/font-system/src/registry.d.ts +5 -1
- package/dist/shared/font-system/src/resolver.d.ts +2 -0
- package/dist/style.css +1 -4239
- package/dist/style.layered.css +1 -4239
- package/dist/superdoc/src/composables/use-link-popover.d.ts +9 -0
- package/dist/superdoc/src/core/superdoc-ui-owner.d.ts +1 -0
- package/dist/superdoc/src/core/types/index.d.ts +1 -1
- package/dist/superdoc/src/core/v2-integration/internal-vue-runtime.d.ts +1 -0
- package/dist/superdoc/src/index.d.cts +2 -0
- package/dist/superdoc/src/index.d.ts +1 -0
- package/dist/superdoc/src/public/index.d.cts +8 -0
- package/dist/superdoc/src/public/index.d.ts +2 -0
- package/dist/superdoc/src/stores/comments-store.d.ts +7 -4
- package/dist/superdoc/src/stores/superdoc-store.d.ts +21 -12
- package/dist/superdoc.cjs +357 -137
- package/dist/superdoc.es.js +356 -138
- package/dist-cdn/style.layered.css +1 -1
- package/dist-cdn/superdoc.min.css +1 -1
- package/dist-cdn/superdoc.min.js +42 -42
- package/package.json +2 -2
|
@@ -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" | "delete" | "selection.extractOoxml" | "selection.current" | "selection.releaseSnapshot" | "insert" | "info" | "projectHtml" | "projectMarkdown" | "capabilities.check" | "format.apply" | "styles.getCatalog" | "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.position" | "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.dstrike" | "format.vertAlign" | "format.bCs" | "format.iCs" | "format.snapToGrid" | "format.oMath" | "format.letterSpacing" | "format.charScale" | "format.kerning" | "format.fitText" | "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.create" | "styles.getTheme" | "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" | "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" | "headerFooters.pageNumbers.get" | "headerFooters.pageNumbers.insert" | "headerFooters.pageNumbers.set" | "headerFooters.pageNumbers.remove" | "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" | "delete" | "selection.extractOoxml" | "selection.current" | "selection.releaseSnapshot" | "insert" | "info" | "projectHtml" | "projectMarkdown" | "capabilities.check" | "format.apply" | "comments.patch" | "trackChanges.decide" | "styles.getCatalog" | "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.position" | "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.dstrike" | "format.vertAlign" | "format.bCs" | "format.iCs" | "format.snapToGrid" | "format.oMath" | "format.letterSpacing" | "format.charScale" | "format.kerning" | "format.fitText" | "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.create" | "styles.getTheme" | "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.delete" | "comments.get" | "comments.list" | "trackChanges.list" | "trackChanges.get" | "query.match" | "ranges.resolve" | "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" | "headerFooters.pageNumbers.get" | "headerFooters.pageNumbers.insert" | "headerFooters.pageNumbers.set" | "headerFooters.pageNumbers.remove" | "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. */
|
|
@@ -3369,7 +3369,7 @@ export declare const OPERATION_DEFINITIONS: {
|
|
|
3369
3369
|
};
|
|
3370
3370
|
readonly 'protection.setEditingRestriction': {
|
|
3371
3371
|
readonly memberPath: "protection.setEditingRestriction";
|
|
3372
|
-
readonly description: "
|
|
3372
|
+
readonly description: "Author a Word readOnly, comments, trackedChanges, or forms restriction. Inspect runtimeEnforced in the returned state: V2 currently enforces readOnly; the other modes are saved for Word and are not enforced in SuperDoc.";
|
|
3373
3373
|
readonly expectedResult: "Returns a ProtectionMutationResult with the updated protection state on success.";
|
|
3374
3374
|
readonly requiresDocumentContext: true;
|
|
3375
3375
|
readonly metadata: CommandStaticMetadata;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BlockNodeAddress, InlineNodeAddress } from '../types/base.js';
|
|
2
2
|
import { TextAddress } from '../types/address.js';
|
|
3
3
|
import { DiscoveryOutput } from '../types/discovery.js';
|
|
4
|
-
import { ReceiptFailure } from '../types/receipt.js';
|
|
4
|
+
import { ReceiptFailure, ReceiptSuccess } from '../types/receipt.js';
|
|
5
5
|
/** Narrowed inline address for hyperlink targets. */
|
|
6
6
|
export type HyperlinkTarget = InlineNodeAddress & {
|
|
7
7
|
nodeType: 'hyperlink';
|
|
@@ -74,10 +74,17 @@ export interface HyperlinkInfo {
|
|
|
74
74
|
properties: HyperlinkReadProperties;
|
|
75
75
|
text?: string;
|
|
76
76
|
}
|
|
77
|
-
export interface HyperlinkMutationSuccess {
|
|
77
|
+
export interface HyperlinkMutationSuccess extends ReceiptSuccess {
|
|
78
78
|
success: true;
|
|
79
79
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
80
80
|
hyperlink: HyperlinkTarget;
|
|
81
|
+
/** Legacy native identifier for the mutated hyperlink, null after removal. */
|
|
82
|
+
hyperlinkNodeId?: string | null;
|
|
83
|
+
/** Package parts created or modified by the mutation. */
|
|
84
|
+
partsCreated?: readonly string[];
|
|
85
|
+
partsModified?: readonly string[];
|
|
86
|
+
/** Relationship identity created for an external destination, when present. */
|
|
87
|
+
createdRId?: string;
|
|
81
88
|
}
|
|
82
89
|
export interface HyperlinkMutationFailure {
|
|
83
90
|
success: false;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BlockNodeAddress } from '../types/index.js';
|
|
2
|
-
import { ReceiptInsert } from '../types/receipt.js';
|
|
2
|
+
import { ReceiptInsert, ReceiptSuccess } from '../types/receipt.js';
|
|
3
3
|
import { StoryLocator } from '../types/story.types.js';
|
|
4
4
|
import { ContentControlTarget } from '../content-controls/content-controls.types.js';
|
|
5
5
|
import { ImageProperties, ImageWrapType, ImageWrapSide, ImageMarginOffset, ImageSize, ImageCropInfo } from '../types/media.types.js';
|
|
@@ -186,7 +186,7 @@ export interface SetZOrderInput {
|
|
|
186
186
|
imageId: string;
|
|
187
187
|
zOrder: ImageZOrderInput;
|
|
188
188
|
}
|
|
189
|
-
export interface CreateImageSuccessResult {
|
|
189
|
+
export interface CreateImageSuccessResult extends ReceiptSuccess {
|
|
190
190
|
success: true;
|
|
191
191
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
192
192
|
image: ImageAddress;
|
|
@@ -206,7 +206,7 @@ export interface ImagesListResult {
|
|
|
206
206
|
total: number;
|
|
207
207
|
items: ImageSummary[];
|
|
208
208
|
}
|
|
209
|
-
export interface ImagesMutationSuccessResult {
|
|
209
|
+
export interface ImagesMutationSuccessResult extends ReceiptSuccess {
|
|
210
210
|
success: true;
|
|
211
211
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
212
212
|
image: ImageAddress;
|
|
@@ -132,6 +132,7 @@ export type { AnchoredMetadataApi, AnchoredMetadataAdapter } from './metadata/an
|
|
|
132
132
|
export type { ProtectionApi, ProtectionAdapter } from './protection/protection.js';
|
|
133
133
|
export * from './protection/protection.types.js';
|
|
134
134
|
export type { PermissionRangesApi, PermissionRangesAdapter } from './permission-ranges/permission-ranges.js';
|
|
135
|
+
export { listPermissionRangeEditors, resolvePermissionRangeEditor } from './permission-ranges/permission-ranges.js';
|
|
135
136
|
export type * from './permission-ranges/permission-ranges.types.js';
|
|
136
137
|
export type { FootnotesApi, FootnotesAdapter } from './footnotes/footnotes.js';
|
|
137
138
|
export type { ClipboardApi, ClipboardAdapter } from './clipboard/clipboard.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AffectedRefRemapping, BlockNodeType, ReceiptFailure, ReceiptInsert, StoryLocator, TextAddress, TextRangeShift } from '../types/index.js';
|
|
1
|
+
import { AffectedRefRemapping, BlockNodeType, ReceiptFailure, ReceiptInsert, ReceiptSuccess, StoryLocator, TextAddress, TextRangeShift } from '../types/index.js';
|
|
2
2
|
import { DiscoveryOutput } from '../types/discovery.js';
|
|
3
3
|
export type ListItemAddress = {
|
|
4
4
|
kind: 'block';
|
|
@@ -356,14 +356,14 @@ export interface ListsCaptureTemplateSuccessResult {
|
|
|
356
356
|
template: ListTemplate;
|
|
357
357
|
}
|
|
358
358
|
export type ListsCaptureTemplateResult = ListsCaptureTemplateSuccessResult | ListsFailureResult;
|
|
359
|
-
export interface ListsInsertSuccessResult {
|
|
359
|
+
export interface ListsInsertSuccessResult extends ReceiptSuccess {
|
|
360
360
|
success: true;
|
|
361
361
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
362
362
|
item: ListItemAddress;
|
|
363
363
|
insertionPoint: TextAddress;
|
|
364
364
|
trackedChangeRefs?: ReceiptInsert[];
|
|
365
365
|
}
|
|
366
|
-
export interface ListsMutateItemSuccessResult {
|
|
366
|
+
export interface ListsMutateItemSuccessResult extends ReceiptSuccess {
|
|
367
367
|
success: true;
|
|
368
368
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
369
369
|
item: ListItemAddress;
|
|
@@ -375,38 +375,38 @@ export interface ListsMutateItemSuccessResult {
|
|
|
375
375
|
txId?: string;
|
|
376
376
|
changed?: boolean;
|
|
377
377
|
}
|
|
378
|
-
export interface ListsCreateSuccessResult {
|
|
378
|
+
export interface ListsCreateSuccessResult extends ReceiptSuccess {
|
|
379
379
|
success: true;
|
|
380
380
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
381
381
|
listId: string;
|
|
382
382
|
item: ListItemAddress;
|
|
383
383
|
}
|
|
384
|
-
export interface ListsJoinSuccessResult {
|
|
384
|
+
export interface ListsJoinSuccessResult extends ReceiptSuccess {
|
|
385
385
|
success: true;
|
|
386
386
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
387
387
|
listId: string;
|
|
388
388
|
}
|
|
389
|
-
export interface ListsSeparateSuccessResult {
|
|
389
|
+
export interface ListsSeparateSuccessResult extends ReceiptSuccess {
|
|
390
390
|
success: true;
|
|
391
391
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
392
392
|
listId: string;
|
|
393
393
|
numId: number;
|
|
394
394
|
}
|
|
395
|
-
export interface ListsMergeSuccessResult {
|
|
395
|
+
export interface ListsMergeSuccessResult extends ReceiptSuccess {
|
|
396
396
|
success: true;
|
|
397
397
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
398
398
|
listId: string;
|
|
399
399
|
absorbedCount: number;
|
|
400
400
|
removedEmptyBlocks: number;
|
|
401
401
|
}
|
|
402
|
-
export interface ListsSplitSuccessResult {
|
|
402
|
+
export interface ListsSplitSuccessResult extends ReceiptSuccess {
|
|
403
403
|
success: true;
|
|
404
404
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
405
405
|
listId: string;
|
|
406
406
|
numId: number;
|
|
407
407
|
restartedAt: number | null;
|
|
408
408
|
}
|
|
409
|
-
export interface ListsDetachSuccessResult {
|
|
409
|
+
export interface ListsDetachSuccessResult extends ReceiptSuccess {
|
|
410
410
|
success: true;
|
|
411
411
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
412
412
|
paragraph: {
|
|
@@ -415,7 +415,7 @@ export interface ListsDetachSuccessResult {
|
|
|
415
415
|
nodeId: string;
|
|
416
416
|
};
|
|
417
417
|
}
|
|
418
|
-
export interface ListsConvertToTextSuccessResult {
|
|
418
|
+
export interface ListsConvertToTextSuccessResult extends ReceiptSuccess {
|
|
419
419
|
success: true;
|
|
420
420
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
421
421
|
paragraph: {
|
|
@@ -447,7 +447,7 @@ export type ListsMergeResult = ListsMergeSuccessResult | ListsFailureResult;
|
|
|
447
447
|
export type ListsSplitResult = ListsSplitSuccessResult | ListsFailureResult;
|
|
448
448
|
export type ListsDetachResult = ListsDetachSuccessResult | ListsFailureResult;
|
|
449
449
|
export type ListsConvertToTextResult = ListsConvertToTextSuccessResult | ListsFailureResult;
|
|
450
|
-
export interface ListsDeleteSuccessResult {
|
|
450
|
+
export interface ListsDeleteSuccessResult extends ReceiptSuccess {
|
|
451
451
|
success: true;
|
|
452
452
|
appliedChangeMode?: 'direct' | 'tracked';
|
|
453
453
|
/** Number of list items removed. */
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { MutationOptions } from '../write/write.js';
|
|
2
|
-
import { PermissionRangesListInput, PermissionRangesListResult, PermissionRangesGetInput, PermissionRangeInfo, PermissionRangesCreateInput, PermissionRangesRemoveInput, PermissionRangesUpdatePrincipalInput, PermissionRangeMutationResult, PermissionRangeRemoveResult } from './permission-ranges.types.js';
|
|
2
|
+
import { PermissionRangesListInput, PermissionRangesListResult, PermissionRangesGetInput, PermissionRangeInfo, PermissionRangesCreateInput, PermissionRangesRemoveInput, PermissionRangesUpdatePrincipalInput, PermissionRangeMutationResult, PermissionRangeRemoveResult, PermissionRangeEditor, PermissionRangeEditorResolution } from './permission-ranges.types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve a host ID or imported Word email against an explicitly supplied roster.
|
|
5
|
+
* Word receives the email when available; opaque IDs remain host-specific.
|
|
6
|
+
* Duplicate IDs/emails are ambiguous. This does not authenticate a user.
|
|
7
|
+
*/
|
|
8
|
+
export declare function resolvePermissionRangeEditor(editors: readonly PermissionRangeEditor[], id: string): PermissionRangeEditorResolution;
|
|
9
|
+
/** Enumerate the host roster for an editor picker, including ambiguous entries. */
|
|
10
|
+
export declare function listPermissionRangeEditors(editors: readonly PermissionRangeEditor[]): PermissionRangeEditorResolution[];
|
|
3
11
|
export interface PermissionRangesApi {
|
|
4
12
|
list(input?: PermissionRangesListInput): PermissionRangesListResult;
|
|
5
13
|
get(input: PermissionRangesGetInput): PermissionRangeInfo;
|
|
@@ -9,6 +9,23 @@ export type PermissionRangePrincipal = {
|
|
|
9
9
|
kind: 'editor';
|
|
10
10
|
id: string;
|
|
11
11
|
};
|
|
12
|
+
/** Trusted host roster entry. Names are display labels, never permission identities. */
|
|
13
|
+
export interface PermissionRangeEditor {
|
|
14
|
+
id?: string | null;
|
|
15
|
+
email?: string | null;
|
|
16
|
+
name?: string | null;
|
|
17
|
+
}
|
|
18
|
+
export type PermissionRangeEditorResolution = {
|
|
19
|
+
status: 'resolved';
|
|
20
|
+
id: string;
|
|
21
|
+
editor: PermissionRangeEditor;
|
|
22
|
+
principal: Extract<PermissionRangePrincipal, {
|
|
23
|
+
kind: 'editor';
|
|
24
|
+
}>;
|
|
25
|
+
} | {
|
|
26
|
+
status: 'unknown' | 'ambiguous';
|
|
27
|
+
id: string;
|
|
28
|
+
};
|
|
12
29
|
export type PermissionRangeKind = 'inline' | 'block';
|
|
13
30
|
export interface PermissionRangeInfo {
|
|
14
31
|
id: string;
|
|
@@ -33,8 +33,8 @@ export declare const DEFAULT_PROTECTION_STATE: DocumentProtectionState;
|
|
|
33
33
|
export type ProtectionGetInput = Record<string, never> | undefined;
|
|
34
34
|
/** Input for `protection.setEditingRestriction`. */
|
|
35
35
|
export interface SetEditingRestrictionInput {
|
|
36
|
-
/**
|
|
37
|
-
mode: '
|
|
36
|
+
/** Word restriction to author. Inspect `runtimeEnforced` before relying on engine enforcement. */
|
|
37
|
+
mode: Exclude<EditingRestrictionMode, 'none'>;
|
|
38
38
|
/** Whether to restrict formatting changes. Defaults to false. */
|
|
39
39
|
formattingRestricted?: boolean;
|
|
40
40
|
}
|
|
@@ -8,6 +8,9 @@ export interface MutationReceiptBridgeContext {
|
|
|
8
8
|
}
|
|
9
9
|
interface CanonicalSuccessMetadata {
|
|
10
10
|
appliedChangeMode?: ReceiptSuccess['appliedChangeMode'];
|
|
11
|
+
changed?: ReceiptSuccess['changed'];
|
|
12
|
+
trackedChangeRefs?: ReceiptSuccess['trackedChangeRefs'];
|
|
13
|
+
trackedChangeCount?: ReceiptSuccess['trackedChangeCount'];
|
|
11
14
|
id?: ReceiptSuccess['id'];
|
|
12
15
|
inserted?: ReceiptSuccess['inserted'];
|
|
13
16
|
updated?: ReceiptSuccess['updated'];
|
|
@@ -165,8 +165,9 @@ export interface SelectionInfo {
|
|
|
165
165
|
selectionTarget?: SelectionTarget | null;
|
|
166
166
|
/**
|
|
167
167
|
* V2 browser cell context with inclusive, zero-based logical bounds.
|
|
168
|
-
* Whole-cell selections clear text targets
|
|
169
|
-
*
|
|
168
|
+
* Whole-cell selections clear text targets; explicit whole-table handle selections
|
|
169
|
+
* retain resolved formatting targets. Character selections preserve their targets
|
|
170
|
+
* and include the containing cells, including endpoint cells.
|
|
170
171
|
* Exact cell IDs and spans describe merged or nonrectangular selections;
|
|
171
172
|
* only rectangular whole-cell metadata can become a table-cells target.
|
|
172
173
|
*/
|
|
@@ -144,7 +144,7 @@ export interface BlocksSplitInput {
|
|
|
144
144
|
/** Include deleted tracked text in the offset ruler. Defaults to `visible`. */
|
|
145
145
|
coordinateSpace?: 'visible' | 'tracked';
|
|
146
146
|
}
|
|
147
|
-
export interface BlocksSplitSuccessResult {
|
|
147
|
+
export interface BlocksSplitSuccessResult extends Omit<ReceiptSuccess, 'inserted'> {
|
|
148
148
|
success: true;
|
|
149
149
|
appliedChangeMode?: ReceiptSuccess['appliedChangeMode'];
|
|
150
150
|
/** Address of the new paragraph created by the split (the tail). */
|
|
@@ -173,7 +173,7 @@ export interface BlocksMergeInput {
|
|
|
173
173
|
/** Paragraph immediately after `first` in the same story. */
|
|
174
174
|
second: BlockNodeAddress;
|
|
175
175
|
}
|
|
176
|
-
export interface BlocksMergeSuccessResult {
|
|
176
|
+
export interface BlocksMergeSuccessResult extends Omit<ReceiptSuccess, 'removed'> {
|
|
177
177
|
success: true;
|
|
178
178
|
appliedChangeMode?: ReceiptSuccess['appliedChangeMode'];
|
|
179
179
|
/** Address of the paragraph that was removed (the second paragraph). */
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { BlockNodeAddress, BlockNodeType } from './base.js';
|
|
2
|
-
import { TextAddress, TrackedChangeAddress, SelectionTarget, DeleteBehavior } from './address.js';
|
|
2
|
+
import { TextAddress, TextTarget, TrackedChangeAddress, SelectionTarget, DeleteBehavior } from './address.js';
|
|
3
3
|
import { TextSelector, NodeSelector } from './query.js';
|
|
4
4
|
import { InsertStylePolicy, StylePolicy } from './style-policy.types.js';
|
|
5
5
|
import { InlineRunPatch } from '../format/inline-run-patch.js';
|
|
6
6
|
import { SDFragment } from './fragment.js';
|
|
7
7
|
import { Placement, NestingPolicy } from './placement.js';
|
|
8
|
-
import { AffectedRef } from './receipt.js';
|
|
8
|
+
import { AffectedRef, ReceiptSuccess } from './receipt.js';
|
|
9
9
|
import { ChangeMode } from '../write/write.js';
|
|
10
10
|
import { StoryLocator } from './story.types.js';
|
|
11
11
|
export type SelectWhere = {
|
|
@@ -138,13 +138,37 @@ export type StructuralReplaceStep = {
|
|
|
138
138
|
nestingPolicy?: NestingPolicy;
|
|
139
139
|
};
|
|
140
140
|
};
|
|
141
|
+
/** Explicit review edits. Targets use the starting revision; relocations precede decisions. */
|
|
142
|
+
export type CommentRelocateStep = {
|
|
143
|
+
id: string;
|
|
144
|
+
op: 'comments.patch';
|
|
145
|
+
args: {
|
|
146
|
+
commentId: string;
|
|
147
|
+
target: TextAddress | SelectionTarget;
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
export type TrackChangesDecideStep = {
|
|
151
|
+
id: string;
|
|
152
|
+
op: 'trackChanges.decide';
|
|
153
|
+
args: {
|
|
154
|
+
decision: 'accept' | 'reject';
|
|
155
|
+
target: {
|
|
156
|
+
kind: 'id';
|
|
157
|
+
id: string;
|
|
158
|
+
} | {
|
|
159
|
+
kind: 'ids';
|
|
160
|
+
ids: string[];
|
|
161
|
+
};
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
export type ReviewMutationStep = CommentRelocateStep | TrackChangesDecideStep;
|
|
141
165
|
export type DomainStep = {
|
|
142
166
|
id: string;
|
|
143
167
|
op: string;
|
|
144
168
|
where: StepWhere;
|
|
145
169
|
args: Record<string, unknown>;
|
|
146
170
|
};
|
|
147
|
-
export type MutationStep = TextRewriteStep | TextInsertStep | TextDeleteStep | StyleApplyStep | StructuralInsertStep | StructuralReplaceStep | AssertStep | DomainStep;
|
|
171
|
+
export type MutationStep = TextRewriteStep | TextInsertStep | TextDeleteStep | StyleApplyStep | StructuralInsertStep | StructuralReplaceStep | AssertStep | DomainStep | ReviewMutationStep;
|
|
148
172
|
export type { ChangeMode } from '../write/write.js';
|
|
149
173
|
export type MutationsApplyInput = {
|
|
150
174
|
/** Target story for the mutation plan. Omit for body (backward compatible). */
|
|
@@ -230,7 +254,16 @@ export type StructuralStepData = {
|
|
|
230
254
|
domain: 'structural';
|
|
231
255
|
insertedBlockIds?: string[];
|
|
232
256
|
};
|
|
233
|
-
export type
|
|
257
|
+
export type ReviewStepData = {
|
|
258
|
+
domain: 'review';
|
|
259
|
+
commentIds?: string[];
|
|
260
|
+
commentTargets?: {
|
|
261
|
+
commentId: string;
|
|
262
|
+
target: TextTarget;
|
|
263
|
+
}[];
|
|
264
|
+
decidedTrackedChangeIds?: string[];
|
|
265
|
+
};
|
|
266
|
+
export type StepOutcomeData = ReviewStepData | TextStepData | AssertStepData | DomainStepData | TableStepData | StructuralStepData;
|
|
234
267
|
export type StepOutcome = {
|
|
235
268
|
stepId: string;
|
|
236
269
|
/** Effective mode when all committed requests in this step used the same mode. */
|
|
@@ -241,7 +274,7 @@ export type StepOutcome = {
|
|
|
241
274
|
trackedChangeIds?: string[];
|
|
242
275
|
data: StepOutcomeData;
|
|
243
276
|
};
|
|
244
|
-
export type PlanReceipt = {
|
|
277
|
+
export type PlanReceipt = ReceiptSuccess & {
|
|
245
278
|
success: true;
|
|
246
279
|
/** Effective mode when every committed step used the same mode. */
|
|
247
280
|
appliedChangeMode?: ChangeMode;
|
|
@@ -279,6 +312,13 @@ export type StepPreview = {
|
|
|
279
312
|
spanResolutions?: SpanStepResolution[];
|
|
280
313
|
selectionResolutions?: SelectionStepResolution[];
|
|
281
314
|
style?: unknown;
|
|
315
|
+
review?: {
|
|
316
|
+
commentId?: string;
|
|
317
|
+
target?: TextAddress | SelectionTarget;
|
|
318
|
+
mappedTarget?: TextTarget;
|
|
319
|
+
trackedChangeIds?: string[];
|
|
320
|
+
decision?: 'accept' | 'reject';
|
|
321
|
+
};
|
|
282
322
|
};
|
|
283
323
|
export type MutationsPreviewOutput = {
|
|
284
324
|
evaluatedRevision: string;
|
|
@@ -110,6 +110,12 @@ export interface ReceiptEffects {
|
|
|
110
110
|
}
|
|
111
111
|
export type ReceiptSuccess = {
|
|
112
112
|
success: true;
|
|
113
|
+
/** Whether a successful request changed the document; false represents a no-op commit. */
|
|
114
|
+
changed?: boolean;
|
|
115
|
+
/** Tracked changes authored by this mutation. */
|
|
116
|
+
trackedChangeRefs?: ReceiptInsert[];
|
|
117
|
+
/** Number of tracked changes authored by this mutation. */
|
|
118
|
+
trackedChangeCount?: number;
|
|
113
119
|
/**
|
|
114
120
|
* Mode in which this call's document content was committed. An edit folded
|
|
115
121
|
* into the author's existing insertion is tracked; auxiliary style and
|
|
@@ -202,6 +208,12 @@ export type TextMutationResolution = {
|
|
|
202
208
|
};
|
|
203
209
|
export type TextMutationReceipt = (ReceiptSuccess & {
|
|
204
210
|
resolution: TextMutationResolution;
|
|
211
|
+
/** Per-edit tracked-change results for atomic multi-edit mutations. */
|
|
212
|
+
trackedChangeOutcomes?: {
|
|
213
|
+
editIndex: number;
|
|
214
|
+
trackedChangeCount: number;
|
|
215
|
+
trackedChangeRefs: ReceiptInsert[];
|
|
216
|
+
}[];
|
|
205
217
|
}) | (ReceiptFailureResult & {
|
|
206
218
|
resolution: TextMutationResolution;
|
|
207
219
|
});
|
|
@@ -32,6 +32,9 @@ export interface SDMutationReceipt {
|
|
|
32
32
|
before: string;
|
|
33
33
|
after: string;
|
|
34
34
|
};
|
|
35
|
+
changed?: ReceiptSuccess['changed'];
|
|
36
|
+
trackedChangeRefs?: ReceiptSuccess['trackedChangeRefs'];
|
|
37
|
+
trackedChangeCount?: ReceiptSuccess['trackedChangeCount'];
|
|
35
38
|
id?: ReceiptSuccess['id'];
|
|
36
39
|
inserted?: ReceiptSuccess['inserted'];
|
|
37
40
|
updated?: ReceiptSuccess['updated'];
|
|
@@ -351,9 +351,17 @@ export interface TrackChangeStructuralDescriptor {
|
|
|
351
351
|
export type TrackChangeTarget = {
|
|
352
352
|
kind: 'text';
|
|
353
353
|
address: TrackedChangeAddress;
|
|
354
|
+
/** Resolved text geometry when available. */
|
|
355
|
+
segments?: TextTarget['segments'];
|
|
356
|
+
/** Story containing the resolved geometry. */
|
|
357
|
+
story?: TextTarget['story'];
|
|
354
358
|
} | {
|
|
355
359
|
kind: 'replacement';
|
|
356
360
|
address: TrackedChangeAddress;
|
|
361
|
+
/** Resolved text geometry when available. */
|
|
362
|
+
segments?: TextTarget['segments'];
|
|
363
|
+
/** Story containing the resolved geometry. */
|
|
364
|
+
story?: TextTarget['story'];
|
|
357
365
|
} | {
|
|
358
366
|
kind: 'formatting';
|
|
359
367
|
address: TrackedChangeAddress;
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* every retained dependency that required the checkpoint; consumers reject
|
|
6
6
|
* empty, duplicate, or unknown lists instead of trusting a generic boolean.
|
|
7
7
|
*/
|
|
8
|
-
export type PageCheckpointDependencyClass = 'multiple-sections' | 'furniture-page-tokens' | 'non-balanceable-multi-column-sections' | 'body-anchored-objects' | 'non-flowing-page-relative-body-anchors' | 'footnotes' | 'page-references' | 'cross-references' | 'keep-constraints' | 'tables' | 'furniture-anchored-objects';
|
|
9
|
-
export declare const PAGE_CHECKPOINT_DEPENDENCY_CLASSES: readonly ["multiple-sections", "furniture-page-tokens", "non-balanceable-multi-column-sections", "body-anchored-objects", "non-flowing-page-relative-body-anchors", "footnotes", "page-references", "cross-references", "keep-constraints", "tables", "furniture-anchored-objects"];
|
|
8
|
+
export type PageCheckpointDependencyClass = 'multiple-sections' | 'furniture-page-tokens' | 'body-page-number-tokens' | 'non-balanceable-multi-column-sections' | 'body-anchored-objects' | 'non-flowing-page-relative-body-anchors' | 'footnotes' | 'page-references' | 'cross-references' | 'keep-constraints' | 'tables' | 'furniture-anchored-objects';
|
|
9
|
+
export declare const PAGE_CHECKPOINT_DEPENDENCY_CLASSES: readonly ["multiple-sections", "furniture-page-tokens", "body-page-number-tokens", "non-balanceable-multi-column-sections", "body-anchored-objects", "non-flowing-page-relative-body-anchors", "footnotes", "page-references", "cross-references", "keep-constraints", "tables", "furniture-anchored-objects"];
|
|
10
10
|
/**
|
|
11
11
|
* Exact retained-generation proof for page/margin-relative body anchors that
|
|
12
12
|
* cannot influence paragraph flow (`wrap=None`). The host builds this once
|
|
@@ -2899,6 +2899,8 @@ export type LayoutBlockResumeCheckpoint = {
|
|
|
2899
2899
|
columns: ColumnLayout;
|
|
2900
2900
|
}[];
|
|
2901
2901
|
activeConstraintIndex: number;
|
|
2902
|
+
/** Exact active configuration, including single-column state omitted from Page.columns. */
|
|
2903
|
+
activeColumns?: ColumnLayout;
|
|
2902
2904
|
footnoteDemandThisPage: number;
|
|
2903
2905
|
footnoteRefsThisPage: number;
|
|
2904
2906
|
footnoteAnchorsThisPage: readonly {
|
|
@@ -2935,6 +2937,8 @@ export type Layout = {
|
|
|
2935
2937
|
layoutEpoch?: number;
|
|
2936
2938
|
/** Exact paragraph-boundary resume sidecar; never inferred from painted geometry. */
|
|
2937
2939
|
blockResumeCheckpoints?: ReadonlyMap<BlockId, LayoutBlockResumeCheckpoint>;
|
|
2940
|
+
/** Engine-authored column state at physical page creation, including count=1 configurations. */
|
|
2941
|
+
pageStartColumns?: ReadonlyMap<number, ColumnLayout>;
|
|
2938
2942
|
};
|
|
2939
2943
|
export type WrapTextMode = 'bothSides' | 'left' | 'right' | 'largest';
|
|
2940
2944
|
export type WrapExclusion = {
|
|
@@ -44,36 +44,15 @@ export interface FontMetricsCacheConfig {
|
|
|
44
44
|
*/
|
|
45
45
|
export declare class FontMetricsCache {
|
|
46
46
|
private cache;
|
|
47
|
-
private canvas;
|
|
48
47
|
private ctx;
|
|
48
|
+
private fontGeneration;
|
|
49
49
|
/**
|
|
50
50
|
* Creates a new FontMetricsCache instance.
|
|
51
51
|
* Initializes the canvas context for measurements.
|
|
52
52
|
*/
|
|
53
53
|
constructor();
|
|
54
|
-
/**
|
|
55
|
-
* Initializes the canvas and context for font measurements.
|
|
56
|
-
*
|
|
57
|
-
* Creates an offscreen 1x1 canvas with 2D rendering context optimized for
|
|
58
|
-
* text measurement. The canvas is never attached to the DOM and is purely
|
|
59
|
-
* used for the canvas.measureText() API.
|
|
60
|
-
*
|
|
61
|
-
* Performance considerations:
|
|
62
|
-
* - Canvas is created once and reused for all measurements
|
|
63
|
-
* - Size is minimal (1x1) as we only need measureText(), not rendering
|
|
64
|
-
* - willReadFrequently hint optimizes for frequent measureText() calls
|
|
65
|
-
*
|
|
66
|
-
* Failure modes:
|
|
67
|
-
* - Not in browser environment (SSR): Sets ctx to null, cache will be disabled
|
|
68
|
-
* - Canvas creation fails: Catches error, sets ctx to null, measurements fall back to defaults
|
|
69
|
-
*
|
|
70
|
-
* Side effects:
|
|
71
|
-
* - Creates this.canvas and this.ctx properties
|
|
72
|
-
* - On failure, cache becomes read-only (getMetrics returns undefined for unmeasured fonts)
|
|
73
|
-
*
|
|
74
|
-
* @private
|
|
75
|
-
*/
|
|
76
54
|
private initializeCanvas;
|
|
55
|
+
private ensureFontGeneration;
|
|
77
56
|
/**
|
|
78
57
|
* Pre-warms the cache by measuring all characters for the specified fonts.
|
|
79
58
|
*
|
|
@@ -378,13 +378,14 @@ export type IncrementalPaginationProof = IncrementalPaginationProofBase & ({
|
|
|
378
378
|
* mid-section checkpoint cannot seed. False is admissible only
|
|
379
379
|
* together with `balanceableSectionsBoundaryBlockId`, the last
|
|
380
380
|
* page-bearing block at or before the final balanceable section end.
|
|
381
|
-
* The bridge
|
|
382
|
-
*
|
|
383
|
-
* after the
|
|
384
|
-
* layout.
|
|
381
|
+
* The bridge replays from document start unless the separately proved
|
|
382
|
+
* unchanged balanced prefix precedes a complete single-column seed
|
|
383
|
+
* strictly after the boundary. Convergence remains fenced after it.
|
|
385
384
|
*/
|
|
386
385
|
multiColumnSectionsProvedNonBalanceable: boolean;
|
|
387
386
|
balanceableSectionsBoundaryBlockId?: string;
|
|
387
|
+
/** The unchanged balanced sections precede every dirty owner; the bridge re-verifies the seeded checkpoint. */
|
|
388
|
+
balanceableSectionsRetainedPrefix?: true;
|
|
388
389
|
/** Last vertically aligned section page; validated before reuse. */
|
|
389
390
|
vAlignSectionsBoundaryBlockId?: string;
|
|
390
391
|
/** Replay page zero through the aligned boundary before convergence. */
|
|
@@ -617,6 +618,12 @@ export declare function __test_only_splicedCheckpointStats(map: ReadonlyMap<stri
|
|
|
617
618
|
sourceCount: number;
|
|
618
619
|
maximumTransformTreeDepth: number;
|
|
619
620
|
} | null;
|
|
621
|
+
export type LayoutPageGeometry = Pick<Page, 'size' | 'margins' | 'sectionIndex'>;
|
|
622
|
+
/** Internal live identity readback; every fragment remains visible to ownership validation. */
|
|
623
|
+
export declare function readLayoutPageFragmentBlockIds(pages: Page[], pageIndex: number): IterableIterator<string>;
|
|
624
|
+
/** Read canonical page boxes without materializing retained PM or fragment transforms. */
|
|
625
|
+
export declare function readLayoutPageGeometry(pages: Page[], pageIndex: number): LayoutPageGeometry;
|
|
626
|
+
export declare function __test_only_pageSequenceMaterializationCount(pages: Page[]): number;
|
|
620
627
|
export declare function __test_only_lazyPageTransformStats(pages: Page[]): {
|
|
621
628
|
segmentCount: number;
|
|
622
629
|
maximumLedgerCount: number;
|
|
@@ -12,15 +12,15 @@ export { findWordBoundaries, findParagraphBoundaries } from './text-boundaries.j
|
|
|
12
12
|
export type { BoundaryRange } from './text-boundaries.js';
|
|
13
13
|
export { buildSectionAwareHeaderFooterLayoutKey, buildSectionContentWidth, buildEffectiveHeaderFooterRefsBySection, collectReferencedHeaderFooterRIds, buildSectionAwareHeaderFooterMeasurementGroups, } from './sectionAwareHeaderFooter.js';
|
|
14
14
|
export type { HeaderFooterSectionKind, HeaderFooterRefs, SectionAwareHeaderFooterMeasurementGroup, } from './sectionAwareHeaderFooter.js';
|
|
15
|
-
export { clearIncrementalModuleState, incrementalLayout, measureCache, normalizeMargin } from './incrementalLayout.js';
|
|
15
|
+
export { clearIncrementalModuleState, incrementalLayout, measureCache, normalizeMargin, readLayoutPageGeometry, readLayoutPageFragmentBlockIds, } from './incrementalLayout.js';
|
|
16
16
|
export { hashMeasureContent } from './cache.js';
|
|
17
|
-
export type { HeaderFooterLayoutResult, HeaderFooterGeometrySeed, IncrementalLayoutBridgeTiming, IncrementalLayoutResult, IncrementalLayoutExecutionControl, IncrementalLayoutContinuation, IncrementalMeasureReuseProof, IncrementalLayoutReuseOptions, IncrementalLayoutReuseSummary, IncrementalSectionPageNumberTransform, IncrementalLayoutTailAdoption, IncrementalLayoutTailDisposition, IncrementalPaginationProof, LayoutPositionTransform, FootnoteReserveSeed, } from './incrementalLayout.js';
|
|
17
|
+
export type { HeaderFooterLayoutResult, HeaderFooterGeometrySeed, IncrementalLayoutBridgeTiming, IncrementalLayoutResult, IncrementalLayoutExecutionControl, IncrementalLayoutContinuation, IncrementalMeasureReuseProof, IncrementalLayoutReuseOptions, IncrementalLayoutReuseSummary, IncrementalSectionPageNumberTransform, IncrementalLayoutTailAdoption, IncrementalLayoutTailDisposition, IncrementalPaginationProof, LayoutPositionTransform, LayoutPageGeometry, FootnoteReserveSeed, } from './incrementalLayout.js';
|
|
18
18
|
export { collectFootnoteLedgers, getPreferredReserveCandidates, getPreferredReserveTrialTargets, isMandatoryOnlyFootnotePage, scoreFootnoteWindow, summarizeFootnoteWindow, } from './footnote-scorer.js';
|
|
19
19
|
export type { FootnotePreferredReserveCandidate, FootnoteWindowScoreInput, FootnoteWindowScoreReason, FootnoteWindowScoreResult, FootnoteWindowStats, } from './footnote-scorer.js';
|
|
20
20
|
export { computeDisplayPageNumber } from '../../layout-engine/src/index.js';
|
|
21
21
|
export type { DisplayPageInfo, HeaderFooterConstraints } from '../../layout-engine/src/index.js';
|
|
22
22
|
export { clearRemeasureTextCaches, remeasureParagraph } from './remeasure.js';
|
|
23
|
-
export { findCharacterAtX, measureCharacterX } from './text-measurement.js';
|
|
23
|
+
export { findCharacterAtX, measureCharacterX, measureInlineImageCaretTextBox, getRunFontString, } from './text-measurement.js';
|
|
24
24
|
export { sliceRunsForLine } from '../../contracts/src/index.js';
|
|
25
25
|
export { clickToPositionDom, findPageElement } from './dom-mapping.js';
|
|
26
26
|
export { isListItem, getWordLayoutConfig, calculateTextStartIndent, extractParagraphIndent } from './list-indent-utils.js';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Native Canvas2D allocation shared by the secondary layout measurers. */
|
|
2
|
+
export type LayoutMeasurementContext = CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;
|
|
3
|
+
type UnavailablePolicy = 'require-native' | 'headless-approximation';
|
|
4
|
+
export declare function getLayoutMeasurementFontGeneration(): number;
|
|
5
|
+
/** Invalidates secondary caches when a face changes behind an unchanged CSS font string. */
|
|
6
|
+
export declare function invalidateLayoutMeasurementFonts(): void;
|
|
7
|
+
export declare function createLayoutMeasurementContext(options?: {
|
|
8
|
+
context?: LayoutMeasurementContext;
|
|
9
|
+
ownerDocument?: Document;
|
|
10
|
+
unavailable?: UnavailablePolicy;
|
|
11
|
+
}): LayoutMeasurementContext | null;
|
|
12
|
+
export {};
|
|
@@ -18,6 +18,6 @@ export declare function cloneLiveCrossReferenceFieldBlocks<T extends FlowBlock>(
|
|
|
18
18
|
* graph. This happens before measurement, so changed result text participates
|
|
19
19
|
* in line wrapping and pagination without creating a second document mutation.
|
|
20
20
|
*/
|
|
21
|
-
export declare function resolveLiveCrossReferences(bodyBlocks: FlowBlock[]):
|
|
21
|
+
export declare function resolveLiveCrossReferences(bodyBlocks: FlowBlock[]): boolean;
|
|
22
22
|
/** Build the page-aware STYLEREF resolver used by repeated headers/footers. */
|
|
23
23
|
export declare function buildPageStyleReferenceResolver(bodyBlocks: readonly FlowBlock[], layout: Layout): PageStyleReferenceResolver;
|