@superdoc-dev/cli 0.8.0-next.10 → 0.8.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 (2) hide show
  1. package/dist/index.js +641 -393
  2. package/package.json +6 -6
package/dist/index.js CHANGED
@@ -9660,9 +9660,37 @@ var init_schemas = __esm(() => {
9660
9660
  type: "array",
9661
9661
  items: objectSchema({
9662
9662
  nodeId: { type: "string", description: "Stable block ID — pass to scrollToElement() for navigation." },
9663
- type: { type: "string", description: "Block type: paragraph, heading, listItem, table, image, etc." },
9663
+ type: {
9664
+ type: "string",
9665
+ description: "Block type: paragraph, heading, listItem, image, tableOfContents."
9666
+ },
9664
9667
  text: { type: "string", description: "Full plain text content of the block." },
9665
- headingLevel: { type: "integer", description: "Heading level (1–6). Only present for headings." }
9668
+ headingLevel: { type: "integer", description: "Heading level (1–6). Only present for headings." },
9669
+ tableContext: objectSchema({
9670
+ tableOrdinal: {
9671
+ type: "integer",
9672
+ description: "0-based table ordinal, unique within one extract() result."
9673
+ },
9674
+ parentTableOrdinal: {
9675
+ type: "integer",
9676
+ description: "Ordinal of the parent table when the containing table is nested."
9677
+ },
9678
+ parentRowIndex: {
9679
+ type: "integer",
9680
+ description: "Row index in the parent table. Set with parentTableOrdinal."
9681
+ },
9682
+ parentColumnIndex: {
9683
+ type: "integer",
9684
+ description: "Column index in the parent table. Set with parentTableOrdinal."
9685
+ },
9686
+ rowIndex: { type: "integer", description: "0-based row index of the containing cell." },
9687
+ columnIndex: {
9688
+ type: "integer",
9689
+ description: "0-based logical grid column, not the row child order."
9690
+ },
9691
+ rowspan: { type: "integer", description: "Number of rows the cell spans." },
9692
+ colspan: { type: "integer", description: "Number of columns the cell spans." }
9693
+ }, ["tableOrdinal", "rowIndex", "columnIndex", "rowspan", "colspan"])
9666
9694
  }, ["nodeId", "type", "text"])
9667
9695
  },
9668
9696
  comments: {
@@ -65507,7 +65535,7 @@ var init_remark_gfm_BhnWr3yf_es = __esm(() => {
65507
65535
  emptyOptions2 = {};
65508
65536
  });
65509
65537
 
65510
- // ../../packages/superdoc/dist/chunks/SuperConverter-uCLp4MWG.es.js
65538
+ // ../../packages/superdoc/dist/chunks/SuperConverter-XXBr0N8c.es.js
65511
65539
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
65512
65540
  const fieldValue = extension$1.config[field];
65513
65541
  if (typeof fieldValue === "function")
@@ -117686,7 +117714,7 @@ var isRegExp = (value) => {
117686
117714
  state.kern = kernNode.attributes["w:val"];
117687
117715
  }
117688
117716
  }, SuperConverter;
117689
- var init_SuperConverter_uCLp4MWG_es = __esm(() => {
117717
+ var init_SuperConverter_XXBr0N8c_es = __esm(() => {
117690
117718
  init_rolldown_runtime_Bg48TavK_es();
117691
117719
  init_jszip_C49i9kUs_es();
117692
117720
  init_xml_js_CqGKpaft_es();
@@ -128738,7 +128766,7 @@ var init_SuperConverter_uCLp4MWG_es = __esm(() => {
128738
128766
  },
128739
128767
  type: {
128740
128768
  type: "string",
128741
- description: "Block type: paragraph, heading, listItem, table, image, etc."
128769
+ description: "Block type: paragraph, heading, listItem, image, tableOfContents."
128742
128770
  },
128743
128771
  text: {
128744
128772
  type: "string",
@@ -128747,7 +128775,47 @@ var init_SuperConverter_uCLp4MWG_es = __esm(() => {
128747
128775
  headingLevel: {
128748
128776
  type: "integer",
128749
128777
  description: "Heading level (1–6). Only present for headings."
128750
- }
128778
+ },
128779
+ tableContext: objectSchema2({
128780
+ tableOrdinal: {
128781
+ type: "integer",
128782
+ description: "0-based table ordinal, unique within one extract() result."
128783
+ },
128784
+ parentTableOrdinal: {
128785
+ type: "integer",
128786
+ description: "Ordinal of the parent table when the containing table is nested."
128787
+ },
128788
+ parentRowIndex: {
128789
+ type: "integer",
128790
+ description: "Row index in the parent table. Set with parentTableOrdinal."
128791
+ },
128792
+ parentColumnIndex: {
128793
+ type: "integer",
128794
+ description: "Column index in the parent table. Set with parentTableOrdinal."
128795
+ },
128796
+ rowIndex: {
128797
+ type: "integer",
128798
+ description: "0-based row index of the containing cell."
128799
+ },
128800
+ columnIndex: {
128801
+ type: "integer",
128802
+ description: "0-based logical grid column, not the row child order."
128803
+ },
128804
+ rowspan: {
128805
+ type: "integer",
128806
+ description: "Number of rows the cell spans."
128807
+ },
128808
+ colspan: {
128809
+ type: "integer",
128810
+ description: "Number of columns the cell spans."
128811
+ }
128812
+ }, [
128813
+ "tableOrdinal",
128814
+ "rowIndex",
128815
+ "columnIndex",
128816
+ "rowspan",
128817
+ "colspan"
128818
+ ])
128751
128819
  }, [
128752
128820
  "nodeId",
128753
128821
  "type",
@@ -155062,7 +155130,7 @@ var init_SuperConverter_uCLp4MWG_es = __esm(() => {
155062
155130
  };
155063
155131
  });
155064
155132
 
155065
- // ../../packages/superdoc/dist/chunks/create-headless-toolbar-CFesyRMw.es.js
155133
+ // ../../packages/superdoc/dist/chunks/create-headless-toolbar-BAI3xz0T.es.js
155066
155134
  function parseSizeUnit(val = "0") {
155067
155135
  const length3 = val.toString() || "0";
155068
155136
  const value = Number.parseFloat(length3);
@@ -157654,8 +157722,8 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, Extension = class Extension2 {
157654
157722
  }
157655
157723
  };
157656
157724
  };
157657
- var init_create_headless_toolbar_CFesyRMw_es = __esm(() => {
157658
- init_SuperConverter_uCLp4MWG_es();
157725
+ var init_create_headless_toolbar_BAI3xz0T_es = __esm(() => {
157726
+ init_SuperConverter_XXBr0N8c_es();
157659
157727
  init_constants_CGhJRd87_es();
157660
157728
  init_dist_B8HfvhaK_es();
157661
157729
  CSS_DIMENSION_REGEX = /[\d-.]+(\w+)$/;
@@ -206342,7 +206410,7 @@ var init_remark_gfm_eZN6yzWQ_es = __esm(() => {
206342
206410
  init_remark_gfm_BhnWr3yf_es();
206343
206411
  });
206344
206412
 
206345
- // ../../packages/superdoc/dist/chunks/src-DSGKQ7oD.es.js
206413
+ // ../../packages/superdoc/dist/chunks/src-CGvIfKnh.es.js
206346
206414
  function deleteProps(obj, propOrProps) {
206347
206415
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
206348
206416
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -227887,341 +227955,6 @@ function executeStructuralReplaceWrapper(editor, input2, options) {
227887
227955
  };
227888
227956
  }
227889
227957
  }
227890
- function extractTextPreview(node3) {
227891
- if (!node3.isTextblock)
227892
- return null;
227893
- const text5 = node3.textContent;
227894
- if (text5.length <= TEXT_PREVIEW_MAX_LENGTH)
227895
- return text5;
227896
- return text5.slice(0, TEXT_PREVIEW_MAX_LENGTH);
227897
- }
227898
- function extractBlockText$1(node3) {
227899
- if (!node3.isTextblock)
227900
- return null;
227901
- return node3.textContent;
227902
- }
227903
- function buildStyleContext(editor) {
227904
- const styleProps = readTranslatedLinkedStyles(editor);
227905
- if (!styleProps)
227906
- return null;
227907
- return {
227908
- styles: styleProps.styles ?? {},
227909
- docDefaultsFontSizeHp: typeof styleProps.docDefaults?.runProperties?.fontSize === "number" ? styleProps.docDefaults.runProperties.fontSize : undefined
227910
- };
227911
- }
227912
- function resolveBlockFontSizePt(styleCtx, styleId) {
227913
- if (!styleCtx)
227914
- return OOXML_DEFAULT_FONT_SIZE_PT;
227915
- let currentId = styleId ?? "Normal";
227916
- const visited = /* @__PURE__ */ new Set;
227917
- while (currentId && !visited.has(currentId)) {
227918
- visited.add(currentId);
227919
- const style2 = styleCtx.styles[currentId];
227920
- if (!style2)
227921
- break;
227922
- const fs = style2.runProperties?.fontSize;
227923
- if (typeof fs === "number")
227924
- return fs / 2;
227925
- currentId = style2.basedOn ?? "";
227926
- }
227927
- if (!visited.has("Normal")) {
227928
- const fs = styleCtx.styles["Normal"]?.runProperties?.fontSize;
227929
- if (typeof fs === "number")
227930
- return fs / 2;
227931
- }
227932
- if (typeof styleCtx.docDefaultsFontSizeHp === "number")
227933
- return styleCtx.docDefaultsFontSizeHp / 2;
227934
- return OOXML_DEFAULT_FONT_SIZE_PT;
227935
- }
227936
- function extractBlockFormatting(node3, styleCtx) {
227937
- const pProps = node3.attrs.paragraphProperties;
227938
- const styleId = pProps?.styleId ?? null;
227939
- let fontFamily;
227940
- let fontSize;
227941
- let bold2;
227942
- let underline;
227943
- let color2;
227944
- node3.descendants((child) => {
227945
- if (fontFamily !== undefined)
227946
- return false;
227947
- const marks = child.marks ?? [];
227948
- if (!child.isText || marks.length === 0)
227949
- return;
227950
- for (const mark2 of marks) {
227951
- const markName = mark2.type.name;
227952
- const attrs = mark2.attrs;
227953
- if (markName === "textStyle") {
227954
- if (typeof attrs.fontFamily === "string" && attrs.fontFamily)
227955
- fontFamily = attrs.fontFamily;
227956
- if (attrs.fontSize != null) {
227957
- const raw = typeof attrs.fontSize === "string" ? parseFloat(attrs.fontSize) : attrs.fontSize;
227958
- if (typeof raw === "number" && Number.isFinite(raw))
227959
- fontSize = raw;
227960
- }
227961
- if (typeof attrs.color === "string" && attrs.color)
227962
- color2 = attrs.color;
227963
- }
227964
- if (markName === "bold" && attrs.value === true)
227965
- bold2 = true;
227966
- if (markName === "underline")
227967
- underline = true;
227968
- }
227969
- return false;
227970
- });
227971
- if (color2 === "auto")
227972
- color2 = undefined;
227973
- let headingLevel;
227974
- if (typeof styleId === "string") {
227975
- const m$1 = HEADING_PATTERN.exec(styleId);
227976
- if (m$1)
227977
- headingLevel = parseInt(m$1[1], 10);
227978
- }
227979
- return {
227980
- ...styleId ? { styleId } : {},
227981
- ...fontFamily ? { fontFamily } : {},
227982
- ...fontSize !== undefined ? { fontSize } : styleCtx ? { fontSize: resolveBlockFontSizePt(styleCtx, styleId) } : {},
227983
- ...bold2 ? { bold: bold2 } : {},
227984
- ...underline ? { underline } : {},
227985
- ...color2 ? { color: color2 } : {},
227986
- ...pProps?.justification ? { alignment: pProps.justification } : {},
227987
- ...headingLevel ? { headingLevel } : {}
227988
- };
227989
- }
227990
- function toBlockSummary(candidate, ordinal) {
227991
- return {
227992
- ordinal,
227993
- nodeId: candidate.nodeId,
227994
- nodeType: candidate.nodeType,
227995
- textPreview: extractTextPreview(candidate.node)
227996
- };
227997
- }
227998
- function resolveSdBlockId(candidate) {
227999
- const sdBlockId = candidate.node.attrs?.sdBlockId;
228000
- if (typeof sdBlockId === "string" && sdBlockId.length > 0)
228001
- return sdBlockId;
228002
- throw new DocumentApiAdapterError("INTERNAL_ERROR", "Resolved block candidate is missing sdBlockId attribute. This indicates a schema/extension invariant violation.", { attrs: candidate.node.attrs });
228003
- }
228004
- function validateDeleteTargetNodeType(nodeType) {
228005
- if (REJECTED_DELETE_NODE_TYPES3.has(nodeType))
228006
- throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets. Table row/column operations are out of scope.`, { nodeType });
228007
- if (!SUPPORTED_DELETE_NODE_TYPES3.has(nodeType))
228008
- throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets.`, { nodeType });
228009
- }
228010
- function validateCommandLayerUniqueness(editor, sdBlockId) {
228011
- const getBlockNodeById = editor.helpers?.blockNode?.getBlockNodeById;
228012
- if (typeof getBlockNodeById !== "function")
228013
- throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "blocks.delete requires the blockNode helper to be registered.", { reason: "missing_helper" });
228014
- const matches2 = getBlockNodeById(sdBlockId);
228015
- if (!matches2 || Array.isArray(matches2) && matches2.length === 0)
228016
- throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Block with sdBlockId "${sdBlockId}" was not found at the command layer.`, { sdBlockId });
228017
- if (Array.isArray(matches2) && matches2.length > 1)
228018
- throw new DocumentApiAdapterError("AMBIGUOUS_TARGET", `Multiple blocks share sdBlockId "${sdBlockId}" at the command layer.`, {
228019
- sdBlockId,
228020
- count: matches2.length
228021
- });
228022
- }
228023
- function collectTopLevelBlocks(editor) {
228024
- const doc$12 = editor.state.doc;
228025
- const results = [];
228026
- let offset$1 = 0;
228027
- for (let i4 = 0;i4 < doc$12.childCount; i4++) {
228028
- const child = doc$12.child(i4);
228029
- const nodeType = mapBlockNodeType(child);
228030
- const pos = offset$1;
228031
- if (nodeType) {
228032
- const nodeId = resolveBlockNodeId(child, pos, nodeType, [i4]);
228033
- if (nodeId)
228034
- results.push({
228035
- node: child,
228036
- pos,
228037
- end: pos + child.nodeSize,
228038
- nodeType,
228039
- nodeId
228040
- });
228041
- }
228042
- offset$1 += child.nodeSize;
228043
- }
228044
- return results;
228045
- }
228046
- function blocksListWrapper(editor, input2) {
228047
- const topLevel = collectTopLevelBlocks(editor);
228048
- const filtered = input2?.nodeTypes ? topLevel.filter((b$1) => input2.nodeTypes.includes(b$1.nodeType)) : topLevel;
228049
- const total = filtered.length;
228050
- const offset$1 = input2?.offset ?? 0;
228051
- const limit = input2?.limit ?? total;
228052
- const paged = filtered.slice(offset$1, offset$1 + limit);
228053
- const rev = getRevision(editor);
228054
- const styleCtx = buildStyleContext(editor);
228055
- return {
228056
- total,
228057
- blocks: paged.map((candidate, i4) => {
228058
- const textLength = computeTextContentLength(candidate.node);
228059
- const fullText = input2?.includeText ? extractBlockText$1(candidate.node) : undefined;
228060
- const ref$1 = textLength > 0 ? encodeV4Ref({
228061
- v: 4,
228062
- rev,
228063
- storyKey: "body",
228064
- scope: "block",
228065
- matchId: candidate.nodeId,
228066
- segments: [{
228067
- blockId: candidate.nodeId,
228068
- start: 0,
228069
- end: textLength
228070
- }],
228071
- blockIndex: offset$1 + i4
228072
- }) : undefined;
228073
- return {
228074
- ordinal: offset$1 + i4,
228075
- nodeId: candidate.nodeId,
228076
- nodeType: candidate.nodeType,
228077
- textPreview: extractTextPreview(candidate.node),
228078
- ...fullText !== undefined ? { text: fullText } : {},
228079
- isEmpty: textLength === 0,
228080
- ...extractBlockFormatting(candidate.node, styleCtx),
228081
- ...ref$1 ? { ref: ref$1 } : {}
228082
- };
228083
- }),
228084
- revision: rev
228085
- };
228086
- }
228087
- function blocksDeleteWrapper(editor, input2, options) {
228088
- rejectTrackedMode("blocks.delete", options);
228089
- const candidate = findBlockByIdStrict(getBlockIndex(editor), input2.target);
228090
- validateDeleteTargetNodeType(candidate.nodeType);
228091
- const deletedBlock = toBlockSummary(candidate, collectTopLevelBlocks(editor).findIndex((b$1) => b$1.nodeId === candidate.nodeId && b$1.nodeType === candidate.nodeType));
228092
- const sdBlockId = resolveSdBlockId(candidate);
228093
- const deleteBlockNodeById = requireEditorCommand(editor.commands?.deleteBlockNodeById, "blocks.delete");
228094
- validateCommandLayerUniqueness(editor, sdBlockId);
228095
- if (options?.dryRun)
228096
- return {
228097
- success: true,
228098
- deleted: input2.target,
228099
- deletedBlock
228100
- };
228101
- if (executeDomainCommand(editor, () => {
228102
- const didApply = deleteBlockNodeById(sdBlockId);
228103
- if (didApply)
228104
- clearIndexCache(editor);
228105
- return didApply;
228106
- }, { expectedRevision: options?.expectedRevision }).steps[0]?.effect !== "changed")
228107
- throw new DocumentApiAdapterError("INTERNAL_ERROR", "blocks.delete command returned false despite passing all pre-apply checks. This is an internal invariant violation.", {
228108
- sdBlockId,
228109
- target: input2.target
228110
- });
228111
- return {
228112
- success: true,
228113
- deleted: input2.target,
228114
- deletedBlock
228115
- };
228116
- }
228117
- function hasSectionBreak(candidate) {
228118
- const pPr = candidate.node.attrs?.paragraphProperties;
228119
- return pPr?.sectPr != null && typeof pPr.sectPr === "object";
228120
- }
228121
- function resolveTopLevelOrdinal(topLevel, candidate, label) {
228122
- const idx = topLevel.findIndex((b$1) => b$1.nodeId === candidate.nodeId && b$1.nodeType === candidate.nodeType);
228123
- if (idx !== -1)
228124
- return idx;
228125
- throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange ${label} resolved to a nested block (not a direct document child). Only top-level blocks are supported.`, {
228126
- nodeId: candidate.nodeId,
228127
- nodeType: candidate.nodeType
228128
- });
228129
- }
228130
- function resolveRangeEndpoint(index2, address2, label) {
228131
- const key2 = `${address2.nodeType}:${address2.nodeId}`;
228132
- if (index2.ambiguous.has(key2))
228133
- throw new DocumentApiAdapterError("AMBIGUOUS_TARGET", `Multiple blocks share key "${key2}".`, { target: address2 });
228134
- const candidate = index2.byId.get(key2);
228135
- if (candidate)
228136
- return candidate;
228137
- const mismatch = index2.candidates.find((c) => c.nodeId === address2.nodeId);
228138
- if (mismatch)
228139
- throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange ${label} expected ${address2.nodeType}:${address2.nodeId} but resolved to ${mismatch.nodeType}.`, {
228140
- expected: address2.nodeType,
228141
- actual: mismatch.nodeType,
228142
- nodeId: address2.nodeId
228143
- });
228144
- throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Block "${key2}" was not found.`, { target: address2 });
228145
- }
228146
- function rejectUnmappedNodesInRange(doc$12, rangeBlocks) {
228147
- if (rangeBlocks.length === 0)
228148
- return;
228149
- const rangeFrom = rangeBlocks[0].pos;
228150
- const rangeTo = rangeBlocks[rangeBlocks.length - 1].end;
228151
- const recognizedPositions = new Set(rangeBlocks.map((b$1) => b$1.pos));
228152
- let offset$1 = 0;
228153
- for (let i4 = 0;i4 < doc$12.childCount; i4++) {
228154
- const child = doc$12.child(i4);
228155
- const childEnd = offset$1 + child.nodeSize;
228156
- if (childEnd > rangeFrom && offset$1 < rangeTo && !recognizedPositions.has(offset$1)) {
228157
- if (!RANGE_DELETE_SAFE_NODE_TYPES.has(child.type.name))
228158
- throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange cannot delete range: unrecognized node "${child.type.name}" at position ${offset$1} would be silently removed.`, {
228159
- pmNodeType: child.type.name,
228160
- pos: offset$1
228161
- });
228162
- }
228163
- offset$1 = childEnd;
228164
- }
228165
- }
228166
- function blocksDeleteRangeWrapper(editor, input2, options) {
228167
- rejectTrackedMode("blocks.deleteRange", options);
228168
- const topLevel = collectTopLevelBlocks(editor);
228169
- const index2 = getBlockIndex(editor);
228170
- const startCandidate = resolveRangeEndpoint(index2, input2.start, "start");
228171
- const endCandidate = resolveRangeEndpoint(index2, input2.end, "end");
228172
- const startOrdinal = resolveTopLevelOrdinal(topLevel, startCandidate, "start");
228173
- const endOrdinal = resolveTopLevelOrdinal(topLevel, endCandidate, "end");
228174
- if (startOrdinal > endOrdinal)
228175
- throw new DocumentApiAdapterError("INVALID_INPUT", `blocks.deleteRange start ordinal (${startOrdinal}) is after end ordinal (${endOrdinal}). The start must precede or equal the end.`, {
228176
- startOrdinal,
228177
- endOrdinal
228178
- });
228179
- const rangeBlocks = topLevel.slice(startOrdinal, endOrdinal + 1);
228180
- rejectUnmappedNodesInRange(editor.state.doc, rangeBlocks);
228181
- for (const block of rangeBlocks)
228182
- if (hasSectionBreak(block))
228183
- throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange cannot delete a range that includes a section break (block "${block.nodeId}" at ordinal ${topLevel.indexOf(block)}).`, {
228184
- nodeId: block.nodeId,
228185
- nodeType: block.nodeType
228186
- });
228187
- const deletedBlocks = rangeBlocks.map((c, i4) => toBlockSummary(c, startOrdinal + i4));
228188
- const revisionBefore = getRevision(editor);
228189
- if (options?.dryRun)
228190
- return {
228191
- success: true,
228192
- deletedCount: rangeBlocks.length,
228193
- deletedBlocks,
228194
- revision: {
228195
- before: revisionBefore,
228196
- after: revisionBefore
228197
- },
228198
- dryRun: true
228199
- };
228200
- const rangeFrom = rangeBlocks[0].pos;
228201
- const rangeTo = rangeBlocks[rangeBlocks.length - 1].end;
228202
- if (executeDomainCommand(editor, () => {
228203
- const tr = editor.state.tr;
228204
- tr.delete(rangeFrom, rangeTo);
228205
- editor.dispatch(tr);
228206
- clearIndexCache(editor);
228207
- return true;
228208
- }, { expectedRevision: options?.expectedRevision }).steps[0]?.effect !== "changed")
228209
- throw new DocumentApiAdapterError("INTERNAL_ERROR", "blocks.deleteRange command returned false despite passing all pre-apply checks.", {
228210
- start: input2.start,
228211
- end: input2.end
228212
- });
228213
- const revisionAfter = getRevision(editor);
228214
- return {
228215
- success: true,
228216
- deletedCount: rangeBlocks.length,
228217
- deletedBlocks,
228218
- revision: {
228219
- before: revisionBefore,
228220
- after: revisionAfter
228221
- },
228222
- dryRun: false
228223
- };
228224
- }
228225
227958
  function ensureFallbackStore(editor) {
228226
227959
  if (!editor.storage)
228227
227960
  editor.storage = {};
@@ -229390,19 +229123,116 @@ function trackChangesAcceptAllWrapper(editor, _input, options) {
229390
229123
  function trackChangesRejectAllWrapper(editor, _input, options) {
229391
229124
  return decideAll(editor, "reject", options);
229392
229125
  }
229393
- function collectBlocks(editor) {
229394
- return collectTopLevelBlocks(editor).map((candidate) => {
229395
- const pProps = candidate.node.attrs.paragraphProperties;
229396
- const headingLevel = getHeadingLevel(pProps?.styleId);
229397
- const block = {
229398
- nodeId: candidate.nodeId,
229399
- type: candidate.nodeType,
229400
- text: candidate.node.textContent
229126
+ function indexCellsForTable(tableNode) {
229127
+ const map$12 = TableMap.get(tableNode);
229128
+ const anchors = [];
229129
+ let rowOffset = 0;
229130
+ for (let rowChildIndex = 0;rowChildIndex < tableNode.childCount; rowChildIndex++) {
229131
+ const row2 = tableNode.child(rowChildIndex);
229132
+ let cellOffsetInRow = 0;
229133
+ for (let cellChildIndexInRow = 0;cellChildIndexInRow < row2.childCount; cellChildIndexInRow++) {
229134
+ const cellNode = row2.child(cellChildIndexInRow);
229135
+ const cellOffset = rowOffset + 1 + cellOffsetInRow;
229136
+ cellOffsetInRow += cellNode.nodeSize;
229137
+ const cellAttrs = cellNode.attrs;
229138
+ if (cellAttrs.__placeholder != null)
229139
+ continue;
229140
+ const mapIndex = map$12.map.indexOf(cellOffset);
229141
+ if (mapIndex < 0)
229142
+ continue;
229143
+ anchors.push({
229144
+ cellNode,
229145
+ cellOffset,
229146
+ rowChildIndex,
229147
+ cellChildIndexInRow,
229148
+ gridRowIndex: Math.floor(mapIndex / map$12.width),
229149
+ gridColumnIndex: mapIndex % map$12.width,
229150
+ rowspan: cellAttrs.rowspan ?? 1,
229151
+ colspan: cellAttrs.colspan ?? 1
229152
+ });
229153
+ }
229154
+ rowOffset += row2.nodeSize;
229155
+ }
229156
+ return anchors;
229157
+ }
229158
+ function buildBlock(node3, pos, nodeType, path2, tableContext) {
229159
+ const nodeId = resolveBlockNodeId(node3, pos, nodeType, path2);
229160
+ if (!nodeId)
229161
+ return;
229162
+ const pProps = node3.attrs.paragraphProperties;
229163
+ const headingLevel = getHeadingLevel(pProps?.styleId);
229164
+ const block = {
229165
+ nodeId,
229166
+ type: nodeType,
229167
+ text: node3.textContent
229168
+ };
229169
+ if (headingLevel !== undefined)
229170
+ block.headingLevel = headingLevel;
229171
+ if (tableContext)
229172
+ block.tableContext = tableContext;
229173
+ return block;
229174
+ }
229175
+ function collectContainerBlocks(container, contentStart, containerPath, ordinals, tableContext, nestedParent) {
229176
+ const blocks2 = [];
229177
+ let childOffset = 0;
229178
+ for (let i4 = 0;i4 < container.childCount; i4++) {
229179
+ const child = container.child(i4);
229180
+ const childPos = contentStart + childOffset;
229181
+ childOffset += child.nodeSize;
229182
+ const childPath = [...containerPath, i4];
229183
+ if (child.type.name === "table") {
229184
+ blocks2.push(...collectTableExtractBlocks(child, childPos, childPath, ordinals, nestedParent));
229185
+ continue;
229186
+ }
229187
+ if (SDT_BLOCK_NODE_NAMES.has(child.type.name)) {
229188
+ blocks2.push(...collectContainerBlocks(child, childPos + 1, childPath, ordinals, tableContext, nestedParent));
229189
+ continue;
229190
+ }
229191
+ const childType = mapBlockNodeType(child);
229192
+ if (childType && EMITTABLE_BLOCK_TYPES.has(childType)) {
229193
+ const block = buildBlock(child, childPos, childType, childPath, tableContext);
229194
+ if (block)
229195
+ blocks2.push(block);
229196
+ continue;
229197
+ }
229198
+ if (!child.isLeaf && child.firstChild?.isBlock === true)
229199
+ blocks2.push(...collectContainerBlocks(child, childPos + 1, childPath, ordinals, tableContext, nestedParent));
229200
+ }
229201
+ return blocks2;
229202
+ }
229203
+ function collectTableExtractBlocks(tableNode, tablePos, tablePath, ordinals, parent) {
229204
+ const tableOrdinal = ordinals.next++;
229205
+ const anchors = indexCellsForTable(tableNode);
229206
+ const blocks2 = [];
229207
+ for (const anchor of anchors) {
229208
+ const cellContentStart = tablePos + 1 + anchor.cellOffset + 1;
229209
+ const cellPath = [
229210
+ ...tablePath,
229211
+ anchor.rowChildIndex,
229212
+ anchor.cellChildIndexInRow
229213
+ ];
229214
+ const tableContext = {
229215
+ tableOrdinal,
229216
+ rowIndex: anchor.gridRowIndex,
229217
+ columnIndex: anchor.gridColumnIndex,
229218
+ rowspan: anchor.rowspan,
229219
+ colspan: anchor.colspan
229401
229220
  };
229402
- if (headingLevel !== undefined)
229403
- block.headingLevel = headingLevel;
229404
- return block;
229405
- });
229221
+ if (parent) {
229222
+ tableContext.parentTableOrdinal = parent.tableOrdinal;
229223
+ tableContext.parentRowIndex = parent.rowIndex;
229224
+ tableContext.parentColumnIndex = parent.columnIndex;
229225
+ }
229226
+ blocks2.push(...collectContainerBlocks(anchor.cellNode, cellContentStart, cellPath, ordinals, tableContext, {
229227
+ tableOrdinal,
229228
+ rowIndex: anchor.gridRowIndex,
229229
+ columnIndex: anchor.gridColumnIndex
229230
+ }));
229231
+ }
229232
+ return blocks2;
229233
+ }
229234
+ function collectBlocks(editor) {
229235
+ return collectContainerBlocks(editor.state.doc, 0, [], { next: 0 });
229406
229236
  }
229407
229237
  function collectComments(editor) {
229408
229238
  return createCommentsWrapper(editor).list({ includeResolved: true }).items.map((item) => {
@@ -230194,6 +230024,341 @@ function createHeadingWrapper(editor, input2, options) {
230194
230024
  disposeEphemeralWriteRuntime(runtime);
230195
230025
  }
230196
230026
  }
230027
+ function extractTextPreview(node3) {
230028
+ if (!node3.isTextblock)
230029
+ return null;
230030
+ const text5 = node3.textContent;
230031
+ if (text5.length <= TEXT_PREVIEW_MAX_LENGTH)
230032
+ return text5;
230033
+ return text5.slice(0, TEXT_PREVIEW_MAX_LENGTH);
230034
+ }
230035
+ function extractBlockText$1(node3) {
230036
+ if (!node3.isTextblock)
230037
+ return null;
230038
+ return node3.textContent;
230039
+ }
230040
+ function buildStyleContext(editor) {
230041
+ const styleProps = readTranslatedLinkedStyles(editor);
230042
+ if (!styleProps)
230043
+ return null;
230044
+ return {
230045
+ styles: styleProps.styles ?? {},
230046
+ docDefaultsFontSizeHp: typeof styleProps.docDefaults?.runProperties?.fontSize === "number" ? styleProps.docDefaults.runProperties.fontSize : undefined
230047
+ };
230048
+ }
230049
+ function resolveBlockFontSizePt(styleCtx, styleId) {
230050
+ if (!styleCtx)
230051
+ return OOXML_DEFAULT_FONT_SIZE_PT;
230052
+ let currentId = styleId ?? "Normal";
230053
+ const visited = /* @__PURE__ */ new Set;
230054
+ while (currentId && !visited.has(currentId)) {
230055
+ visited.add(currentId);
230056
+ const style2 = styleCtx.styles[currentId];
230057
+ if (!style2)
230058
+ break;
230059
+ const fs = style2.runProperties?.fontSize;
230060
+ if (typeof fs === "number")
230061
+ return fs / 2;
230062
+ currentId = style2.basedOn ?? "";
230063
+ }
230064
+ if (!visited.has("Normal")) {
230065
+ const fs = styleCtx.styles["Normal"]?.runProperties?.fontSize;
230066
+ if (typeof fs === "number")
230067
+ return fs / 2;
230068
+ }
230069
+ if (typeof styleCtx.docDefaultsFontSizeHp === "number")
230070
+ return styleCtx.docDefaultsFontSizeHp / 2;
230071
+ return OOXML_DEFAULT_FONT_SIZE_PT;
230072
+ }
230073
+ function extractBlockFormatting(node3, styleCtx) {
230074
+ const pProps = node3.attrs.paragraphProperties;
230075
+ const styleId = pProps?.styleId ?? null;
230076
+ let fontFamily;
230077
+ let fontSize;
230078
+ let bold2;
230079
+ let underline;
230080
+ let color2;
230081
+ node3.descendants((child) => {
230082
+ if (fontFamily !== undefined)
230083
+ return false;
230084
+ const marks = child.marks ?? [];
230085
+ if (!child.isText || marks.length === 0)
230086
+ return;
230087
+ for (const mark2 of marks) {
230088
+ const markName = mark2.type.name;
230089
+ const attrs = mark2.attrs;
230090
+ if (markName === "textStyle") {
230091
+ if (typeof attrs.fontFamily === "string" && attrs.fontFamily)
230092
+ fontFamily = attrs.fontFamily;
230093
+ if (attrs.fontSize != null) {
230094
+ const raw = typeof attrs.fontSize === "string" ? parseFloat(attrs.fontSize) : attrs.fontSize;
230095
+ if (typeof raw === "number" && Number.isFinite(raw))
230096
+ fontSize = raw;
230097
+ }
230098
+ if (typeof attrs.color === "string" && attrs.color)
230099
+ color2 = attrs.color;
230100
+ }
230101
+ if (markName === "bold" && attrs.value === true)
230102
+ bold2 = true;
230103
+ if (markName === "underline")
230104
+ underline = true;
230105
+ }
230106
+ return false;
230107
+ });
230108
+ if (color2 === "auto")
230109
+ color2 = undefined;
230110
+ let headingLevel;
230111
+ if (typeof styleId === "string") {
230112
+ const m$1 = HEADING_PATTERN.exec(styleId);
230113
+ if (m$1)
230114
+ headingLevel = parseInt(m$1[1], 10);
230115
+ }
230116
+ return {
230117
+ ...styleId ? { styleId } : {},
230118
+ ...fontFamily ? { fontFamily } : {},
230119
+ ...fontSize !== undefined ? { fontSize } : styleCtx ? { fontSize: resolveBlockFontSizePt(styleCtx, styleId) } : {},
230120
+ ...bold2 ? { bold: bold2 } : {},
230121
+ ...underline ? { underline } : {},
230122
+ ...color2 ? { color: color2 } : {},
230123
+ ...pProps?.justification ? { alignment: pProps.justification } : {},
230124
+ ...headingLevel ? { headingLevel } : {}
230125
+ };
230126
+ }
230127
+ function toBlockSummary(candidate, ordinal) {
230128
+ return {
230129
+ ordinal,
230130
+ nodeId: candidate.nodeId,
230131
+ nodeType: candidate.nodeType,
230132
+ textPreview: extractTextPreview(candidate.node)
230133
+ };
230134
+ }
230135
+ function resolveSdBlockId(candidate) {
230136
+ const sdBlockId = candidate.node.attrs?.sdBlockId;
230137
+ if (typeof sdBlockId === "string" && sdBlockId.length > 0)
230138
+ return sdBlockId;
230139
+ throw new DocumentApiAdapterError("INTERNAL_ERROR", "Resolved block candidate is missing sdBlockId attribute. This indicates a schema/extension invariant violation.", { attrs: candidate.node.attrs });
230140
+ }
230141
+ function validateDeleteTargetNodeType(nodeType) {
230142
+ if (REJECTED_DELETE_NODE_TYPES3.has(nodeType))
230143
+ throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets. Table row/column operations are out of scope.`, { nodeType });
230144
+ if (!SUPPORTED_DELETE_NODE_TYPES3.has(nodeType))
230145
+ throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.delete does not support "${nodeType}" targets.`, { nodeType });
230146
+ }
230147
+ function validateCommandLayerUniqueness(editor, sdBlockId) {
230148
+ const getBlockNodeById = editor.helpers?.blockNode?.getBlockNodeById;
230149
+ if (typeof getBlockNodeById !== "function")
230150
+ throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "blocks.delete requires the blockNode helper to be registered.", { reason: "missing_helper" });
230151
+ const matches2 = getBlockNodeById(sdBlockId);
230152
+ if (!matches2 || Array.isArray(matches2) && matches2.length === 0)
230153
+ throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Block with sdBlockId "${sdBlockId}" was not found at the command layer.`, { sdBlockId });
230154
+ if (Array.isArray(matches2) && matches2.length > 1)
230155
+ throw new DocumentApiAdapterError("AMBIGUOUS_TARGET", `Multiple blocks share sdBlockId "${sdBlockId}" at the command layer.`, {
230156
+ sdBlockId,
230157
+ count: matches2.length
230158
+ });
230159
+ }
230160
+ function collectTopLevelBlocks(editor) {
230161
+ const doc$12 = editor.state.doc;
230162
+ const results = [];
230163
+ let offset$1 = 0;
230164
+ for (let i4 = 0;i4 < doc$12.childCount; i4++) {
230165
+ const child = doc$12.child(i4);
230166
+ const nodeType = mapBlockNodeType(child);
230167
+ const pos = offset$1;
230168
+ if (nodeType) {
230169
+ const nodeId = resolveBlockNodeId(child, pos, nodeType, [i4]);
230170
+ if (nodeId)
230171
+ results.push({
230172
+ node: child,
230173
+ pos,
230174
+ end: pos + child.nodeSize,
230175
+ nodeType,
230176
+ nodeId
230177
+ });
230178
+ }
230179
+ offset$1 += child.nodeSize;
230180
+ }
230181
+ return results;
230182
+ }
230183
+ function blocksListWrapper(editor, input2) {
230184
+ const topLevel = collectTopLevelBlocks(editor);
230185
+ const filtered = input2?.nodeTypes ? topLevel.filter((b$1) => input2.nodeTypes.includes(b$1.nodeType)) : topLevel;
230186
+ const total = filtered.length;
230187
+ const offset$1 = input2?.offset ?? 0;
230188
+ const limit = input2?.limit ?? total;
230189
+ const paged = filtered.slice(offset$1, offset$1 + limit);
230190
+ const rev = getRevision(editor);
230191
+ const styleCtx = buildStyleContext(editor);
230192
+ return {
230193
+ total,
230194
+ blocks: paged.map((candidate, i4) => {
230195
+ const textLength = computeTextContentLength(candidate.node);
230196
+ const fullText = input2?.includeText ? extractBlockText$1(candidate.node) : undefined;
230197
+ const ref$1 = textLength > 0 ? encodeV4Ref({
230198
+ v: 4,
230199
+ rev,
230200
+ storyKey: "body",
230201
+ scope: "block",
230202
+ matchId: candidate.nodeId,
230203
+ segments: [{
230204
+ blockId: candidate.nodeId,
230205
+ start: 0,
230206
+ end: textLength
230207
+ }],
230208
+ blockIndex: offset$1 + i4
230209
+ }) : undefined;
230210
+ return {
230211
+ ordinal: offset$1 + i4,
230212
+ nodeId: candidate.nodeId,
230213
+ nodeType: candidate.nodeType,
230214
+ textPreview: extractTextPreview(candidate.node),
230215
+ ...fullText !== undefined ? { text: fullText } : {},
230216
+ isEmpty: textLength === 0,
230217
+ ...extractBlockFormatting(candidate.node, styleCtx),
230218
+ ...ref$1 ? { ref: ref$1 } : {}
230219
+ };
230220
+ }),
230221
+ revision: rev
230222
+ };
230223
+ }
230224
+ function blocksDeleteWrapper(editor, input2, options) {
230225
+ rejectTrackedMode("blocks.delete", options);
230226
+ const candidate = findBlockByIdStrict(getBlockIndex(editor), input2.target);
230227
+ validateDeleteTargetNodeType(candidate.nodeType);
230228
+ const deletedBlock = toBlockSummary(candidate, collectTopLevelBlocks(editor).findIndex((b$1) => b$1.nodeId === candidate.nodeId && b$1.nodeType === candidate.nodeType));
230229
+ const sdBlockId = resolveSdBlockId(candidate);
230230
+ const deleteBlockNodeById = requireEditorCommand(editor.commands?.deleteBlockNodeById, "blocks.delete");
230231
+ validateCommandLayerUniqueness(editor, sdBlockId);
230232
+ if (options?.dryRun)
230233
+ return {
230234
+ success: true,
230235
+ deleted: input2.target,
230236
+ deletedBlock
230237
+ };
230238
+ if (executeDomainCommand(editor, () => {
230239
+ const didApply = deleteBlockNodeById(sdBlockId);
230240
+ if (didApply)
230241
+ clearIndexCache(editor);
230242
+ return didApply;
230243
+ }, { expectedRevision: options?.expectedRevision }).steps[0]?.effect !== "changed")
230244
+ throw new DocumentApiAdapterError("INTERNAL_ERROR", "blocks.delete command returned false despite passing all pre-apply checks. This is an internal invariant violation.", {
230245
+ sdBlockId,
230246
+ target: input2.target
230247
+ });
230248
+ return {
230249
+ success: true,
230250
+ deleted: input2.target,
230251
+ deletedBlock
230252
+ };
230253
+ }
230254
+ function hasSectionBreak(candidate) {
230255
+ const pPr = candidate.node.attrs?.paragraphProperties;
230256
+ return pPr?.sectPr != null && typeof pPr.sectPr === "object";
230257
+ }
230258
+ function resolveTopLevelOrdinal(topLevel, candidate, label) {
230259
+ const idx = topLevel.findIndex((b$1) => b$1.nodeId === candidate.nodeId && b$1.nodeType === candidate.nodeType);
230260
+ if (idx !== -1)
230261
+ return idx;
230262
+ throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange ${label} resolved to a nested block (not a direct document child). Only top-level blocks are supported.`, {
230263
+ nodeId: candidate.nodeId,
230264
+ nodeType: candidate.nodeType
230265
+ });
230266
+ }
230267
+ function resolveRangeEndpoint(index2, address2, label) {
230268
+ const key2 = `${address2.nodeType}:${address2.nodeId}`;
230269
+ if (index2.ambiguous.has(key2))
230270
+ throw new DocumentApiAdapterError("AMBIGUOUS_TARGET", `Multiple blocks share key "${key2}".`, { target: address2 });
230271
+ const candidate = index2.byId.get(key2);
230272
+ if (candidate)
230273
+ return candidate;
230274
+ const mismatch = index2.candidates.find((c) => c.nodeId === address2.nodeId);
230275
+ if (mismatch)
230276
+ throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange ${label} expected ${address2.nodeType}:${address2.nodeId} but resolved to ${mismatch.nodeType}.`, {
230277
+ expected: address2.nodeType,
230278
+ actual: mismatch.nodeType,
230279
+ nodeId: address2.nodeId
230280
+ });
230281
+ throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Block "${key2}" was not found.`, { target: address2 });
230282
+ }
230283
+ function rejectUnmappedNodesInRange(doc$12, rangeBlocks) {
230284
+ if (rangeBlocks.length === 0)
230285
+ return;
230286
+ const rangeFrom = rangeBlocks[0].pos;
230287
+ const rangeTo = rangeBlocks[rangeBlocks.length - 1].end;
230288
+ const recognizedPositions = new Set(rangeBlocks.map((b$1) => b$1.pos));
230289
+ let offset$1 = 0;
230290
+ for (let i4 = 0;i4 < doc$12.childCount; i4++) {
230291
+ const child = doc$12.child(i4);
230292
+ const childEnd = offset$1 + child.nodeSize;
230293
+ if (childEnd > rangeFrom && offset$1 < rangeTo && !recognizedPositions.has(offset$1)) {
230294
+ if (!RANGE_DELETE_SAFE_NODE_TYPES.has(child.type.name))
230295
+ throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange cannot delete range: unrecognized node "${child.type.name}" at position ${offset$1} would be silently removed.`, {
230296
+ pmNodeType: child.type.name,
230297
+ pos: offset$1
230298
+ });
230299
+ }
230300
+ offset$1 = childEnd;
230301
+ }
230302
+ }
230303
+ function blocksDeleteRangeWrapper(editor, input2, options) {
230304
+ rejectTrackedMode("blocks.deleteRange", options);
230305
+ const topLevel = collectTopLevelBlocks(editor);
230306
+ const index2 = getBlockIndex(editor);
230307
+ const startCandidate = resolveRangeEndpoint(index2, input2.start, "start");
230308
+ const endCandidate = resolveRangeEndpoint(index2, input2.end, "end");
230309
+ const startOrdinal = resolveTopLevelOrdinal(topLevel, startCandidate, "start");
230310
+ const endOrdinal = resolveTopLevelOrdinal(topLevel, endCandidate, "end");
230311
+ if (startOrdinal > endOrdinal)
230312
+ throw new DocumentApiAdapterError("INVALID_INPUT", `blocks.deleteRange start ordinal (${startOrdinal}) is after end ordinal (${endOrdinal}). The start must precede or equal the end.`, {
230313
+ startOrdinal,
230314
+ endOrdinal
230315
+ });
230316
+ const rangeBlocks = topLevel.slice(startOrdinal, endOrdinal + 1);
230317
+ rejectUnmappedNodesInRange(editor.state.doc, rangeBlocks);
230318
+ for (const block of rangeBlocks)
230319
+ if (hasSectionBreak(block))
230320
+ throw new DocumentApiAdapterError("INVALID_TARGET", `blocks.deleteRange cannot delete a range that includes a section break (block "${block.nodeId}" at ordinal ${topLevel.indexOf(block)}).`, {
230321
+ nodeId: block.nodeId,
230322
+ nodeType: block.nodeType
230323
+ });
230324
+ const deletedBlocks = rangeBlocks.map((c, i4) => toBlockSummary(c, startOrdinal + i4));
230325
+ const revisionBefore = getRevision(editor);
230326
+ if (options?.dryRun)
230327
+ return {
230328
+ success: true,
230329
+ deletedCount: rangeBlocks.length,
230330
+ deletedBlocks,
230331
+ revision: {
230332
+ before: revisionBefore,
230333
+ after: revisionBefore
230334
+ },
230335
+ dryRun: true
230336
+ };
230337
+ const rangeFrom = rangeBlocks[0].pos;
230338
+ const rangeTo = rangeBlocks[rangeBlocks.length - 1].end;
230339
+ if (executeDomainCommand(editor, () => {
230340
+ const tr = editor.state.tr;
230341
+ tr.delete(rangeFrom, rangeTo);
230342
+ editor.dispatch(tr);
230343
+ clearIndexCache(editor);
230344
+ return true;
230345
+ }, { expectedRevision: options?.expectedRevision }).steps[0]?.effect !== "changed")
230346
+ throw new DocumentApiAdapterError("INTERNAL_ERROR", "blocks.deleteRange command returned false despite passing all pre-apply checks.", {
230347
+ start: input2.start,
230348
+ end: input2.end
230349
+ });
230350
+ const revisionAfter = getRevision(editor);
230351
+ return {
230352
+ success: true,
230353
+ deletedCount: rangeBlocks.length,
230354
+ deletedBlocks,
230355
+ revision: {
230356
+ before: revisionBefore,
230357
+ after: revisionAfter
230358
+ },
230359
+ dryRun: false
230360
+ };
230361
+ }
230197
230362
  function findLevelElement(abstract, ilvl) {
230198
230363
  const ilvlStr = String(ilvl);
230199
230364
  return abstract.elements?.find((el) => el.name === "w:lvl" && el.attributes?.["w:ilvl"] === ilvlStr);
@@ -249226,6 +249391,24 @@ function resolveLayout(input2) {
249226
249391
  resolved.layoutEpoch = layout.layoutEpoch;
249227
249392
  return resolved;
249228
249393
  }
249394
+ function resolveHeaderFooterLayout(layout, blocks2, measures) {
249395
+ const pages = layout.pages.map((page) => {
249396
+ const blockMap = buildBlockMap(page.blocks ?? blocks2, page.measures ?? measures);
249397
+ const blockVersionCache = /* @__PURE__ */ new Map;
249398
+ return {
249399
+ number: page.number,
249400
+ numberText: page.numberText,
249401
+ items: page.fragments.map((fragment2, fragmentIndex) => resolveFragmentItem(fragment2, fragmentIndex, page.number - 1, blockMap, blockVersionCache))
249402
+ };
249403
+ });
249404
+ return {
249405
+ height: layout.height,
249406
+ minY: layout.minY,
249407
+ maxY: layout.maxY,
249408
+ renderHeight: layout.renderHeight,
249409
+ pages
249410
+ };
249411
+ }
249229
249412
  function assertRequiredBlockMeasurePair(label, blocks2, measures) {
249230
249413
  if (blocks2.length !== measures.length)
249231
249414
  throw new Error(`${label} blocks and measures must have the same length.`);
@@ -264856,6 +265039,36 @@ function setSurfaceRangeEnd(range, entry, pos) {
264856
265039
  range.setEndAfter(entry.el);
264857
265040
  return true;
264858
265041
  }
265042
+ function resolveResult(result) {
265043
+ return resolveHeaderFooterLayout(result.layout, result.blocks, result.measures);
265044
+ }
265045
+ function shiftResolvedPaintItemY(item, yOffset) {
265046
+ if (item.kind === "group")
265047
+ return {
265048
+ ...item,
265049
+ y: item.y + yOffset,
265050
+ children: item.children.map((child) => shiftResolvedPaintItemY(child, yOffset))
265051
+ };
265052
+ return {
265053
+ ...item,
265054
+ y: item.y + yOffset
265055
+ };
265056
+ }
265057
+ function normalizeDecorationFragments(fragments, layoutMinY) {
265058
+ if (layoutMinY >= 0)
265059
+ return fragments;
265060
+ const yOffset = -layoutMinY;
265061
+ return fragments.map((fragment2) => ({
265062
+ ...fragment2,
265063
+ y: fragment2.y + yOffset
265064
+ }));
265065
+ }
265066
+ function normalizeDecorationItems(items, layoutMinY) {
265067
+ if (!items || layoutMinY >= 0)
265068
+ return items;
265069
+ const yOffset = -layoutMinY;
265070
+ return items.map((item) => shiftResolvedPaintItemY(item, yOffset));
265071
+ }
264859
265072
  function createStoryHiddenHost(doc$12, widthPx, options = {}) {
264860
265073
  const { wrapper, host } = createHiddenHost(doc$12, widthPx);
264861
265074
  wrapper.classList.add(STORY_HIDDEN_HOST_WRAPPER_CLASS);
@@ -278216,7 +278429,7 @@ var Node$13 = class Node$14 {
278216
278429
  console.warn("Failed to initialize developer tools:", error3);
278217
278430
  }
278218
278431
  }
278219
- }, BLANK_DOCX_BASE64 = `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`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, DEBUG_TEXT_REWRITE, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, OOXML_DEFAULT_FONT_SIZE_PT = 10, FALLBACK_STORE_KEY = "__documentApiComments", TRACKED_CHANGE_ANCHOR_KEY_PREFIX = "tc::", COMMENT_ANCHOR_KEY_PREFIX = "comment::", indexByHost, TrackedChangeIndexImpl = class {
278432
+ }, BLANK_DOCX_BASE64 = `UEsDBBQAAAAIAAAAIQAykW9XXgEAAKUFAAATABwAW0NvbnRlbnRfVHlwZXNdLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1lMtqwzAQRfeF/oPRNthKuiilxMmij2UbaPoBijRORPVCmrz+vuM4NaWkMeSxMcgz994zQsxwvLEmW0FM2ruSDYo+y8BJr7Sbl+xz+po/sCyhcEoY76BkW0hsPLq9GU63AVJGapdKtkAMj5wnuQArUuEDOKpUPlqBdIxzHoT8EnPgd/3+PZfeITjMsfZgo+EzVGJpMHvZ0O+GJIJJLHtqGuuskokQjJYCqc5XTv1JyfcJBSl3PWmhQ+pRA+MHE+rK/wF73TtdTdQKsomI+CYsdfG1j4orL5eWlMVxmwOcvqq0hFZfu4XoJaREd25N0Vas0K7XxeGWdgaRlJcHaa07IRJuDaTLEzS+3fGASIJrAOydOxHWMPu4GsUv806QinKnYmbg8hitdScE0hqA5js4m2NncyySOifRh0RrJZ4w9s/eqNU5DRwgoj7+6tpEsj57PqhXkgJ1IJvvluzoG1BLAwQKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAcAGRvY1Byb3BzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhACEYr1llAQAAxQIAABAAHABkb2NQcm9wcy9hcHAueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ1STU/DMAy9I/Efqt63dBwmNHlBaAhx4GPSCpyjxG0j0iRKson9e5wVSoEbOdnP9st7TuDqvTfFAUPUzq7LxbwqC7TSKW3bdflc384uyyImYZUwzuK6PGIsr/j5GWyD8xiSxlgQhY3rskvJrxiLssNexDmVLVUaF3qRKA0tc02jJd44ue/RJnZRVUuG7wmtQjXzI2E5MK4O6b+kysmsL77UR098HGrsvREJ+WOeNHPlUg9sRKF2SZha98grgscEtqLFyBfAhgBeXVAx9wwBbDoRhEy0vwxOMrj23mgpEu2VP2gZXHRNKp5OYos8DWzaAmRgh3IfdDpmqmkK99ri6YIhIFVBtEH47gROMthJYXBD1nkjTERg3wBsXO+FJTo2RsT3Fp997W7yFj5HfoITi686dTsvJP4yO8FhRygqUj8KGAG4o8cIJrPTrG1RffX8LeT1vQy/ki+W84rOaV9fGLkevwv/AFBLAwQUAAAACAAAACEACvOn+GYBAADtAgAAEQAcAGRvY1Byb3BzL2NvcmUueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ2SXU+DMBSG7038D6T3UGBqDAGWTLMrZ0yc0XhX27Otjn6k7cb27y0wmMRdeXc+nvP29G3z6UFUwR6M5UoWKIliFICkinG5LtDbch7eo8A6IhmplIQCHcGiaXl9lVOdUWXgxSgNxnGwgVeSNqO6QBvndIaxpRsQxEaekL65UkYQ51OzxprQLVkDTuP4DgtwhBFHcCMY6kERnSQZHST1zlStAKMYKhAgncVJlOAz68AIe3Gg7fwiBXdHDRfRvjnQB8sHsK7rqJ60qN8/wR+Lp9f2qiGXjVcUUJkzmjnuKihzfA59ZHdf30BdVx4SH1MDxClTPnO6DWZgJKlapq83jm/hWCvDrJ8eZR5jYKnh2vl37LRHBU9XxLqFf9gVBzY7jo/5224mDOx58y/KtCWGND+Z3K0GLPDmZJ2Vfed98vC4nKMyjdObMEnD5G6Zpll8m8XxZ7PdaP4sKE4L/FuxF+gMGn/Q8gdQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAYAHABfcmVscy9VVAkAA4Yc7WiHHO1odXgLAAEE9QEAAAQUAAAAUEsDBBQAAAAIAAAAIQAekRq36QAAAE4CAAALABwAX3JlbHMvLnJlbHNVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAArZLBasMwDEDvg/2D0b1R2sEYo04vY9DbGNkHCFtJTBPb2GrX/v082NgCXelhR8vS05PQenOcRnXglF3wGpZVDYq9Cdb5XsNb+7x4AJWFvKUxeNZw4gyb5vZm/cojSSnKg4tZFYrPGgaR+IiYzcAT5SpE9uWnC2kiKc/UYySzo55xVdf3mH4zoJkx1dZqSFt7B6o9Rb6GHbrOGX4KZj+xlzMtkI/C3rJdxFTqk7gyjWop9SwabDAvJZyRYqwKGvC80ep6o7+nxYmFLAmhCYkv+3xmXBJa/ueK5hk/Nu8hWbRf4W8bnF1B8wFQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAHAB3b3JkL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAHAB3b3JkL2ZvbnRUYWJsZS54bWxVVAkAA54c7WieHO1odXgLAAEE9QEAAAQUAAAAvZPBbqMwEIbvlfoOlu8NhpA0RSFV222kvexh1T6AY0ywFtvI44Tk7dcYiBSyuy3tqiCEGf75mPnHLO8PskR7bkBoleJwQjDiiulMqG2KX1/WNwuMwFKV0VIrnuIjB3y/ur5a1kmulQXk8hUkkqW4sLZKggBYwSWFia64ci9zbSS17tFsA0nNr111w7SsqBUbUQp7DCJC5vj6CrmjZZn3oHSeC8a/abaTXFkPCQwvHVYrKEQFZ8j6Pcham6wymnEA170sW6ikQp2zwviCJgUzGnRuJ663rjbPc4yQ+JUsB5TZOEr0Z8qc8cM40KIDBS7zAiaycbD5CSayIexjZQ0p2W4UJ5r2FTW3Jn0IhMxmxThmP8GgyaWWFhSKCywf1+/sxDxKNwgkWfJ9q7Shm9KR3CZDbosgD0btZJobaieO+j6Qdwiv2mK6nxLViaLSUV6E5IB+8Br91JKqXtZJK6o08NCp97RMMWkanZMpmZHYXZFbxTg4T2EFNcDtKYUMBTmVojz2743/6kBSCcuKXrGnRjQdD0Ugtk6ygw1J8TMhJHper3EbCVP85CK3i9ljF4maSvxx10WmpwhpIsxz/GPYcpjnnDT915dB6+Bf/HzSOyO4aRx908tb59+d97TxMv60l1Jn3PzbzFwcePYRJ+PpVzv54MZevunho9uPsfewPT/rIdQC4P/sx4evdrFfwuo3UEsDBBQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABwAd29yZC9kb2N1bWVudC54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAApZZbb9sgFMffJ+07WH5v8S1OYjWttGab+jCpWrcPQIDEqAYsILd9+h3s+LJ5qxz3CXPg/PjDORxz93AShXdg2nAlV354G/gek0RRLncr/+ePLzcL3zMWS4oLJdnKPzPjP9x//HB3zKgie8Gk9QAhTXYsycrPrS0zhAzJmcDmVnCilVFbe0uUQGq75YSho9IURUEYVF+lVoQZA+s9YnnAxr/gyGkcjWp8BGcHTBDJsbbs1DHCqyEztESLISiaAIIdRuEQFV+NSpFTNQAlk0CgakCaTSP9Y3PpNFI0JM2nkeIhaTGNNEgnMUxwVTIJg1ulBbbQ1TsksH7dlzcALrHlG15wewZmkDYYzOXrBEXg1RJETK8mzJFQlBUxbShq5e+1zC7+N62/k57V/pem9WDFuGVhuSViJ1sY2/jqMWdXu68vhaU6NaRZAeeopMl52VYHMZUGg3kDObx1AAdR+G1lC0detf+VtnUdhg44Rv4ldqKolb9NDIMR0XSI1mOMhD/XbJQIyOBu4UlH0zvccGTxaQDRAJASNvJn0TAWFwYi3e12HD7yWjWctOVw2uNME9MD0P1ViChudLjGufdYhlqaX4drYoScL7Y4xybvE9l1G5y1uLPonXe5e9+l+qrVvuxo/H20p668HuV1GwzSvyNYmveJeclxCVVXkOxpJ5XGmwIUwVXz4LZ4VQS8Ol1d49U3wGti7VUJ5Lmq5d/DO22j6Nm1JQwkWYk1foI0T8JlmqTz0K+s8Jezzhoks+VivpyBNYM3If0OJkiveD3/1JqetTPGYZA8fm6Na7bF+8IOpz/3JiMnwzBin/VYfiV89/ILBqFihVGUBG4iJHQ4W8A3qid8w45oFRTWMKmnaL7LbdfdKGuV6PoF2/ZGc4Ypg3XnUdXdKmV73d3eVt3LckQVBqymxITVcyozvIe/aheSrOCSPXNLQGWcVqOo2Xf1WUcEdU/o+99QSwMEFAAAAAgAAAAhAMrnZYorBAAAvgwAABEAHAB3b3JkL3NldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1V22PmzgQ/n7S/QfE58uG1ySLmq3yervV5lqVre6zAZNYa2Nkm03T0/33GwwO9BZVSav9hJln5pnxeGYM795/ZdR6wUISXsxt98axLVykPCPFfm5/edqOZrYlFSoyRHmB5/YJS/v93e+/vTtGEisFatICikJGLJ3bB6XKaDyW6QEzJG94iQsAcy4YUvAq9mOGxHNVjlLOSqRIQihRp7HnOBO7peFzuxJF1FKMGEkFlzxXtUnE85ykuH0YC3GJ38ZkzdOK4UJpj2OBKcTAC3kgpTRs7GfZADwYkpcfbeKFUaN3dJ0LtnvkIjtbXBJebVAKnmIp4YAYNQGSonMcvCI6+74B3+0WNRWYu45e9SMPryPwXhFMUvz1Oo5ZyzEGyz4Pya7jmZx5SNbj+blgegRZdRWF55s46kdt3uOSmcoO19GZMxrXtkihA5KHPiO+boPhme7EunxLekkFNtAjSQQSp375sTR62BdcoIRCOFCGFlSSpaOzmqOsH1ZTHZbJg6WTa9/B1PnGObOOUYlFCq0HI8tz7HENQMHzPFZIAVEkS0ypnmEpxQj8HqO9QAymj5FomwznqKLqCSWx4iUovSDY3tRQpgckUKqwiEuUAtuKF0pwavQy/hdXK5hkAhqttdBzrVvFzYwEiwIx2PB3c2/HM1xHVgly+cnYxrsb9l3+3xGHmS5Ihp/qRMfqRPEWgo/JN7wosg+VVAQY9fT7hQh+FAAuas8foTSeTiXeYqQqSNMbOdMnsaWk3BEhuHgoMqiNN3NG8hwLcECg1nZQPkTwo87zPUYZXKVv5LeS+G9Qhs70n6Asn5dcKc7uT+UBcv1rJ6nrfdwvX/ggyKRZfOZcnVVhbPnr6bKJtEYvQXzXCVabQWTibN1hm0XgO/4gsnLXbjCMhLPlaggJboOJuxhCJqG3CcIhZLH0Zv5sCFku3Wk4iKxW/srfDiIbZz28n83Km04HY9vees7tpj2d9kxYVH9qfBJmVTe2xRqLFWKJIMja1R8j41ojEc9LUhg8wTClcR+Jq8SAo1EDSIYo3UKJGcBp5BmR5Rrnek13SOw73lZDDEphyn44c9VTG4s/Ba/KBj0KVDYNa1TcIGgtSaEeCTNyWSWxsSrgXulBVZF9fBE6T116jpGCBtCD7xHpRtK6uBh9idtGoyKumwTvUFk2vZbs3blNyf6g3Lo9FLxl8M2qX5K912KexrwG0y8orXcG2u2ik3lG1tPzjczvZIGRBZ0sNLKwk02MbFLLDjBdBVx1z9D2ZlnLc04pP+LsvsNficwlmBI48fjEku5uu2kwSiTMoRKuQcWFwf7QmBtEGU8f6vs6aOT+YhGuF860gUN9fSo9qiC1n3G+RBJnLWZMw8b0n8nEmbjuajYKZpvb0WYaBKOZu7wdTafO1PW3rufPnH/bPjA/Hnf/AVBLAwQUAAAACAAAACEA24Vsw30EAACXHQAAEgAcAHdvcmQvbnVtYmVyaW5nLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAADNmc1u4zYQx+8F+g6CgB4Tifq2sM4iySZFFttF0U3RMy3RlhB+CBRlx9d9mT5CH2tfoaRkyXLkxJIctz4pJjk/zQxnyL+dDx+fCdaWiOcpo1MdXJq6hmjE4pQupvqfj/cXga7lAtIYYkbRVF+jXP949fNPH1YhLcgMcblQkwyah6ssmuqJEFloGHmUIALzS5JGnOVsLi4jRgw2n6cRMlaMx4ZlArP8K+MsQnkuObeQLmGub3DRcz9azOFKGiugY0QJ5AI9bxlgMMQ1JkbQBVkjQDJCC3RR9mCUZyivOiBnFEh61SG540h7gvPGkawuyR9HsrukYBypU06kW+AsQ1ROzhknUMiPfGEQyJ+K7EKCMyjSWYpTsZZM06sxMKVPIzySVg2B2PFggm8QFiNsxzWFTfWC03Bjf9HYK9fDyn7zaCwQ7vda+bqJgZ4FzkVty/vkrjL/xKKCICrKrBkcYZlHRvMkzZrTgYylycmkhizfSsCSYL052UDPVnvtaPtUbcMW2Mf9zd4RXHn+NhGYPXZTIRqLPi7svrP2hMgK3r54VGpayQU9D58aYHUAXoR6XhY1I9gwjGjb3YqT9myrmuM1nDRuccY50wLExSCEZdd+qIcyb7HyWMTJMFy9R4ayhQImME/aRDQsQLfBrUkr39niuKb6lbMi29LS42gP2+N1RYcFaHovdzDLj3PmWwIzeeqSKHxYUMbhDEuPZKtpslu0cge0qlzVQ6s6QKv3WisLSFOnln4lhRqc5YLDSHwtiLbz6UFWuxR8khlyJFUeV4OVprueC8RvOIJPaomi0Fy9LVxCeQUAD1jejenrhpohBRbpF7RE+HGdoXpNsp7xNP5NzWE1V60VJMP1Chfc3Tp3ZlDN4KWaSOWjcioUGZb3remYE9M0QelD6WPjRGUnZeg9aQZnBcZINMRHeQfVUz++/9OMf47qUYzmm+XZ71w9UqrCVMNT3bdKTxJIF6Ugtj1TrTWaxXzzuGdU5Cq5eZTKOvy2JjOGS9NrmbedgZRKcIzmUGZmAyspRunYy0yATibsckTeZ/JSXCK14ujMsKF5AY4zLjG3rOAp4tpXtGpl58VolHcXDsua1cma+/5Z+/H976F5s4A3Lm9/ydXqO1neytru2LAE2Xsa7AQJGtxwVhD83x3nnGXHyTycdce5Z9pxjj3yCH/vjvPOtONcc+RR/n4d559lx7n+yLP6P+q44Ew7znNGHuHHd5yxo24PSl8wRvq6gW8C++b6OOl7d+c5wL91+kjf+57bGKMoJRDv3cdfwOU7a9+echVMRhYlZivEvyAh92J/RNbgiA6p1p5aEtwcE9IfjEC6PyJ7X0Q8XSQDBCUIeoTUVX/3I0N6s+acwTt0SP71VGynKzp3cEiHhFtPOXWyovOGF11HU/Uquq4AOknR+YN36JAC6ilaTld0wfCQDmiXnoriZEU3GV50HVnxStF1NQAt737auvPVD2dhXJQ/q5WDMlTHn3jWy5/LHpprv34X3cO09jGdwHWB7wDwOhO0mUbrH6pX/wJQSwMEFAAAAAgAAAAhAL5+dmJWAQAA0AMAABQAHAB3b3JkL3dlYlNldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAACd01FvwiAQAOD3JfsPhHelumlMYzVZFpe9LEu2/QAKV0sGXAO46n79aLWuiy92T0DLfbnjYLneG02+wHmFNqOTcUIJWIFS2W1GP943owUlPnAruUYLGT2Ap+vV7c2yTmvI3yCEuNOTqFifGpHRMoQqZcyLEgz3Y6zAxp8FOsNDXLotM9x97qqRQFPxoHKlVTiwaZLM6Ylx1yhYFErAI4qdARvaeOZARxGtL1XlO62+RqvRycqhAO9jPUYfPcOVPTOT+wvIKOHQYxHGsZhTRi0VwydJOzP6F5gNA6YXwFzAfpixOBksRvYdJYc587OjZM/5XzI9QO4GEdO7Lo9maMJ7lpdBlsO4rkesieWBl9yXfRGGFTg7cwfTnLcR6fPWouO5jlK8QSReAtLC5NiFZiDHxpKuBNKeC13FJ4ZVUEZ9wwbdg8Pag2PNZ6411q8vT3HB/rzD1Q9QSwMEFAAAAAgAAAAhAD+v4WZfDwAADaYAAA8AHAB3b3JkL3N0eWxlcy54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA3Z1tc9s2Esff38x9B45e9V6ksp5lT92O7STnzCWpWzvX1xAJWaj5oCOpOO6nPwB8EKUlKC64UdRMZlqL4v4I4L+7xIIU+dMvXwLf+czjREThZW/w41nP4aEbeSJ8vOx9enj7at5zkpSFHvOjkF/2XnjS++Xnf/7jp+eLJH3xeeJIQJhcBO5lb5Wm64t+P3FXPGDJj9Gah/LLZRQHLJUf48d+wOKnzfqVGwVrloqF8EX60h+enU17OSZuQ4mWS+Hy15G7CXiYavt+zH1JjMJkJdZJQXtuQ3uOYm8dRy5PEtnpwM94ARNhiRmMASgQbhwl0TL9UXYmb5FGSfPBmf4r8LeACQ4wBICpy7/gGPOc0ZeWVY7wcJxpyRFehWPXmArA26AQw1HRDvU/ZV5hJV7qrXC4QqO+smUpW7FkVSVyXAcnJe4lUOMduBfvHsMoZgtfkqQHOdIJHA12MhXU/5xMWKfogqPHpfezjC4vcl/zJdv4aaI+xndx/jH/pP/3NgrTxHm+YIkrxGXvKhZMDvHzBWdJepUI9iBbLg8fCNmS26swEerLlfqjsrObXPYeRCBD+SN/dn6PAhY6P1xH3otzc/+vXl8d6InHodzzM/Mve8NsU/JXuWFcbLlJ9rf5LHwstvHw1af7ausqmxbCk01i8av7K204GF/44pGlm1g2S33ShCwRxd6N7Db/km5k++XO/Xw8+vujtC4/ZXvtDalMGDJ93GdZTH7Ll+8j94l796n84rJ31ss2fnp3F4solpnqsnd+nm+854G4FZ7Hw8qO4Up4/I8VDz8l3Ntu/+2tzjb5BjfahPLv0WyqZfYT780Xl69V7pLfhkzp9VEZaG02Yntwbf6/AjbIB7jOfsWZSuDOYB9xjkYMlUVS6W09c7PX9wH6QKNjHWh8rANNjnWg6bEONDvWgebHOtD51z6QCD2Z3wf1hwHUQxxDNKI5hmBDcwyxhOYYQgXNMUQCmmNwdDTH4MdojsFNEZw0ck1eWHH2kcHbm7mHzxF23MOnBDvu4TOAHfdwwrfjHs7vdtzD6dyOezh723EPJ2s8N5tqOe9kmIVp5yhbRlEaRil31PS0M42FkqWrWhqeOunxmKSTBJgss+Un4s40l+nPhz1k0u18nqqCzomWzlI8quKkc8N5+Jn70Zo7zPMkjxAYc1k+GUbExqdjvuQxD11O6dh0UF+E3Ak3wYLAN9fskYzFQ494+AoiSVIoHZpt0pUKEkHg1AFz44hgzsLI8sN7kXQfKwVxrje+z4lYH2lcTLO61wYa07000JjulYHGdC8MKppRDVFOIxqpnEY0YDmNaNwy/6Qat5xGNG45jWjcclr3cXsQqc/3Zx2D9mt3N36UUCS8e/EY6vXTzqR8zdS5YzF7jNl65ahl54MzLfRx9JLzA8U5rSRRzeu1i6hVZxFuug/oDo0quEoeUXiVPKIAK3ndQ+yDnCarCdotTT1zv1mktUHbviq4Z/4mm9B2jzaWdvewbQC8FXFCFgb1WAIP/qims7dEU71tK7s3bMvqHlb7WYm0eTmSoJV+5D7RpOHblzWPZVn21Jn0NvL96Jl7dMT7NI4yX6uG/HDYOuTfBOsVS0QCEO1P9cUdDM4Htu7coTufiZBGtzevAiZ8h24Gcfvw4b3zEK1VmakGhgZ4HaVpFJAx85XAH/7gi3/RNPBKFsHhC1Fvr4iWhzTsRhCcZDJS5BGR5DRThILkHKp5/+Evi4jFHg3tLubZTUMpJyLes2DtU8WWzIvPMv8QzIY0778sFmpdiCqoHkhglWXDZLP4k7vdU93HyCFZGfp1k+r1Rz3V7X61dwfXfZqwg+s+RdBqytOD8l+Czu7gund2B0fV2RufJYkwXkK15lF1t+BR97d78ZfzIj+KlxufbgALINkIFkCyIYz8TRAmlD3WPMIOax51fwldRvMIluQ079+x8MjE0DAqJTSMSgYNo9JAw0gF6H6HTgXW/TadCqz7vToZjGgKUIFR+Rnp6Z/oKk8FRuVnGkblZxpG5WcaRuVno9cOXy7lJJjuFFNBUvlcBUl3oglTHqyjmMUvRMg3Pn9kBAukGe0ujpbq1yRRmN3ETTGd3SxSysl2hqMS+Q++IGuaYlG2i2BFlPl+FBGtrW1PONpy9961Q2b65xydm3DnM5evIt/jsaFPjfXy/Zq5Ai6dtr9Y8l48rlLnflWu9lcx07ODlkXBvmN2+IB1Yz4dNl5m8sQmKBoKf0wxHbU3HgLj8WHj7Uxix3LS0hIec3rYcjtL3rGctbSEx5y3tBwBy6Z4eM3ip1pHmDX5T1njGZxv1nhhvjCuPWyTI5WWdS44a/KinVBxrlxXXS2A6rSLGbN9u+Ax22OiyEzBhJOZ0jquzIimAPudfxZJ7Rr1gevf5d0TIO+PW2fO3zZRCi5TD9v/qOudnDiFCXdqOaP2F652sox5HFunGzOidd4xI1onIDOiVSYymqNSkpnSOjeZEa2TlBmBzlbwjIDLVtAel62gvU22ghSbbNVhFmBGtJ4OmBHoQIUIdKB2mCmYEahABeZWgQop6ECFCHSgQgQ6UOEEDBeo0B4XqNDeJlAhxSZQIQUdqBCBDlSIQAcqRKADFSLQgWo5tzeaWwUqpKADFSLQgQoR6EAddwxUaI8LVGhvE6iQYhOokIIOVIhABypEoAMVItCBChHoQIUIVKACc6tAhRR0oEIEOlAhAh2ok46BCu1xgQrtbQIVUmwCFVLQgQoR6ECFCHSgQgQ6UCECHagQgQpUYG4VqJCCDlSIQAcqRKADddoxUKE9LlChvU2gQopNoEIKOlAhAh2oEIEOVIhABypEoAMVIlCBCsytAhVS0IEKEehAhYgm/8wvUZpusx/gVz2Nd+wjfueTNer36k+5d9ZQ26OKVplZ7X+LcB1FT07tDw9Ho/YQsfBFpJeoDZfVq9wZ+sLnrzfNv/Bp8RiPtl3Jfwuhr5kC+LitJVhTGTe5fNUSFHnjJk+vWoJZ57gp+1YtwWlw3JR0dVwWN6XI0xEwbkozFeOBwbwpW1fM4RA35eiKIRzhpsxcMYQD3JSPK4YTRyXnfetJy3GalveXAkKTO1YIMzOhyS2hVsa1/daimQlt1TMT2spoJqD0NGLwwppRaIXNKDupYZhhpbYPVDMBKzUkWEkNMPZSQ5S11BBlJzVMjFipIQErtX1yNhOspAYYe6khylpqiLKTGp7KsFJDAlZqSMBK3fGEbMTYSw1R1lJDlJ3UcHKHlRoSsFJDAlZqSLCSGmDspYYoa6khyk5qUCWjpYYErNSQgJUaEqykBhh7qSHKWmqIapJar6LYV0sVc9wkrGKIOyFXDHHJuWJoUS1VrC2rpQrBslqCWtlVS1XR7Kqlqnp21VJVRrtqCehpVy3VCmtXLdUqbFctmaXGVUt1UtsHql21VCc1rloySo2rlhqlxlVLjVLjqiWz1LhqqU5qXLVUJ7V9crarloxS46qlRqlx1VKj1LhqySw1rlqqkxpXLdVJjauW6qTueEK2q5YapcZVS41S46ols9S4aqlOaly1VCc1rlqqkxpXLRmlxlVLjVLjqqVGqXHVkllqXLVUJzWuWqqTGlct1UmNq5aMUuOqpUapcdVSo9S4aumDNBEEj4C6D1icOnTPi7tlySpl3R9O+CmMeRL5n7nn0Hb1PaqX/eed118ptn6dn9w/lWOmnoBe+bmSlz0BNgfqHd955WuqlLFqiZO/5yvfrBucX67NjqgNDxyqhOfXigcAv325lT7Cgsle/RrWHTxUD0as2a4cotheHOZmxeLs262rFvuc7/fl+SJO1Avcsq/Pzoaj0evZdbbXOns12xPn64/y+P3ig9SHJ/pTkv2AVpov1DPF5AiMpvq3V2yZ8viyN8+jNsqe2vT+s18eKZcuP0btW+CKV76xPyuvfNt/H5z68k2+TX2vXwlXa+kmaWXztfBE1jhXRXnZrrfj2VT7ht5ZZ4DLHtPxv92sbkpR9xm8zQjbF8gVF5urL5AbF30tXu1m4zxDo/MMKZ1n2MJ5tmGZ7bcTlF/ZvQYt3WvwfbrXaAjdK9vW0b1GRvcaUbrX6Dtxr2Gzex1yomO4ynAOXSXb1tFVxkZXGVO6yvjEXWVe9ZSx0VNGX8dTRPbfm4TEbzp6xMToERNKj5h8Hx4xPs3c0dEHpkYfmFL6wPTEfcAs++ToiWByrv7tO4F609LWBR6EeoPv1ZTAA2ZGD5hResDsb+sB0yME/pE1nxs1n1NqPj8pzaGys6PH9nCm/rXR+TXFnO/cqPM5pc7nJ67z/AgRTK+sKweVufkD1Q3rX/mLkcon++jXIu1rbnh7kkGvQTu9zO1O1SpsQ5v1Km3jwl3+sHaTQ7X2qHThZ1LLP96FyqGe83fYZy31vrBeseMN9/0PLNs7Wpt39fkyzb4dnM1rvl9kr4Qw2sf62oER0N9tTL/shHm8s5dE5j9qMa6T6keGweHOHiXWcaRb+rC7SeTQ6OXe/fbtrIHut/K2WG51tnlmL3HVxoEpXQ0OpCpz8vle1qO6LHciJR02SjokknSIO/t8/wp3WXFEKjxqVHhEpPDoayn8d1/0Q6o1blRrTKTW+NTUOvbCG1KVSaMqEyJVJqemysnpMG3UYUqkw/TUdDjqahRSklmjJDMiSWanJslpiTBvFGFOJML81EQ46koOUpLzRknOiSQ5PzVJvslyWvZgi/2xzrZSrKNpUtMi2iAv2FBrZNtF7r0L4656fcWXdMP8/En6jctjxyyBtk3W3XpV9PuJx+XgbifLZXqcwunzhDgRbiWqdYOu4VbxJbP6p1m2Hl+z+iAtX6K9L1D5BUWoFrDGaB1YRGu4CbI/hA/vhyq/BDE9mB64Je+bTECAVwwm36Lm3RHL5BZdQ3fXvczecOJzxq8sWX3MZq8B2Fcm20oRrZrUFKpDmztrD92ANige3venW3BUEcvj2khtmGSOz9S/NhpS18PbgasVp2vMVBQ2a3IwYI46cvUOrC6fbN+rsT9We6/dOOTRcChGYwv3FPpSl7pQpZ6R12LO19Jdyk7nD44rn2a3323wuDuco9R4BOqEetg7jnifVT4W9Ylu920oFAmverimvDeyKSjW117lAqneL5GelL9X+y91j5yTZUeuJ61OPuyW6+PlpdSvfKT+tmeHfhgxKjJ7NcbmU90afWU3+0SS/L/peijwo0bX7Xo62AmSAx57cnHfmCO3z9Y0DeB2j65Zsrjmh8qSi+yo+WglMqn4N2xNM3ZgSjmpH9Hir+Tn/wNQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL3RoZW1lL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAHAB3b3JkL3RoZW1lL3RoZW1lMS54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA7VlPb9s2FL8P2HcgdHf1x5IsBXUL/23XJm3RpB16ZGRaYkyJAkknMYoCQ3vaZcCAbthlwG47DMMKrMCKXfZhCrTYug8xSnZs0abatE23AksMxCL5e48/vvf4+ExdvHycEnCIGMc0axv2BcsAKIvoCGdx27izN2wEBuACZiNIaIbaxgxx4/KlTz+5CLdEglIEpHzGt2DbSITIt0yTR7Ib8gs0R5kcG1OWQiGbLDZHDB5JvSkxHcvyzRTizAAZTKXam+MxjhDYK1Qal06UD4j8lwledESE7UbljFWJEjua2MUXn/EeYeAQkrYh5xnRoz10LAxAIBdyoG1Y5Z9hXrpoLoWIqJGtyA3Lv4XcQmA0cUo5Fu8vBa2BE7j2Ur8z17+JGwTFZ6mvBMAokiu1N7C251uBs8BWQPNHje6wZTdVfEV/c1N/6HcdV8E3V3h3c43DcND3FLy7wnsb+I7ldMOmgvdWeH8D7w46LWeg4EtQQnA22UT7rSDwF+glZEzJVS089H2r1V/AVyizEl1z+UzUxVoKDygbSkDpXChwBsQsR2MYSVwnF5SDPuY5gTMD5DCjXHZbjm3LwHMtZ/kpLQ63EKxIz7sivtFV8AE8YjgXbeOa1GpUIC+ePXv+8Onzh789f/To+cNfwDaOE6GRuwqzuCr36sev//7+C/DXrz+8evyNHs+r+Jc/f/ny9z9ep14otL598vLpkxffffXnT4818A6D+1X4Hk4RBzfQEbhNU7lAzQRon72dxF4CcVWik8UcZrCQ0aAHIlHQN2aQQA2ui1Q73mUyXeiAV6YHCuHdhE0F1gCvJ6kC3KGUdCnTrul6MVfVCtMs1k/OplXcbQgPdXP31rw8mOYy7rFOZS9BCs1bRLocxihDAhRjdIKQRuwexopdd3DEKKdjAe5h0IVYa5I9vC/0QldxKv0y0xGU/lZss3MXdCnRqe+jQxUp9wYkOpWIKGa8AqcCplrGMCVV5DYUiY7k7oxFisG5kJ6OEaFgMEKc62RusplC9zqUeUvr9h0yS1UkE3iiQ25DSqvIPp30EpjmWs44S6rYz/hEhigEt6jQkqDqDina0g8wq3X3XYzE2+3tOzIN6QOkGJky3ZZAVN2PMzKGSKe8w1IlxXYY1kZHdxorob2NEIFHcIQQuPOZDk9zqid9LZFZ5SrS2eYaVGO1aGeIy1qpKG40jsVcCdldFNMaPjuztcQzg1kKWZ3mGxM1ZAb7TG5GXbySaKKkUsyKTasncZOn8FRabyVQCauizfXxOmPZ2+4xKXPwDjLorWVkYj+1bfYgQfqA2YMYbOvSrRSZ6kWK7VSKTbVyY3XTrtxgrhU9Kc7eUAH9N5XPB6t5zr7aqUso6zVOHW69sulRNsIff2HTh9PsFpJnyXldc17X/B/rmrr9fF7NnFcz59XMv1bNrAoYs3rZU2pJa29+xpiQXTEjaJuXpQ+Xe380lJ1loxRaXjTliXxcTKfgYgbLZ8Co+ByLZDeBuZzGLmeI+UJ1zEFOuSyfjFrdZfE1TXfoaHGPZ5/cbUoBKFb9lrfsl6WamPf6rdVF6FJ92Yp5lYBXKj09icpkKommhkSreToStnVWLEINi8B+HQuz4hV5OAFYXIt77pyRDDcZ0qPCT3P5E++euafrjKku29EsL3TPzNMKiUq4qSQqYZjIw2O9+4x9HYZ6VztaGq3gQ/ja3MwNJFNb4EjuuaYn1UQwbxtj+bNJPqa51MeLTAVJnLWNSCwM/S6ZJWdc9CFP5rByaL7+FAvEAMGpjPWqG0i24mY7LevjJRdaH5/lzHUno/EYRaKmZ9WUY3Ml2tH3BBcNOpWkd5PREdgnU3YbSkN5Lbsw4AhzsbTmCLNKcK+suJauFltReQO02qKQ5AlcnCjVZD6Hl89LOpV1lEzXV2XqTLgfD8/i1H2z0FrSrDlAWrVZ7MMd8hVWTT0rT5vrwsB6/Snx/gdChVqgp9bUU6s7O86wIKhM59fYzan15nueButRa1bqyrK18XKb7h/IyO/LanVKBJ9fkB3L8rt38lpyngnK3pPscizAlOG2cd/yOm7P8XoNK/AGDbfpWo3A6zQbHc9r2gPPtvpd54E0ikhS25vPPZQ/9sls8e6+7N94f5+elNoXIpqatKyDzVK4fH9vO/Xv7wGWlrnvO8OwGXb9RtjsDBtuvxs0wp7fbfT9Xqs/7Pe8IBw+MMBhCXY7zZ7rD4KGb/d6Dde3CvpB2Gi5jtNxW51g4HYeLGwtV37yfWLektelfwBQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL19yZWxzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhALO+ix3+AAAAtgMAABwAHAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQJAAMw0M4SiBztaHV4CwABBPUBAAAEFAAAAK2TzWrDMBCE74W+g9h7LTttQwmRcymBXFv3AWR7/UP1Y6RNWr99RUoShwbTg44zYme+hdV6860VO6DzvTUCsiQFhqaydW9aAR/F9uEFmCdpaqmsQQEjetjk93frN1SSwpDv+sGzkGK8gI5oWHHuqw619Ikd0ISXxjotKUjX8kFWn7JFvkjTJXfTDMivMtmuFuB29SOwYhzwP9m2afoKX22112joRgX3SBQ28yFTuhZJwMlJQhbw2wiLqAg0KpwCHPVcfRaz3ux1iS5sfCE4W3MQy5gQFGbxAnCUv2Y2x/Ack6GxhgpZqgnH2ZqDeIoJ8YXl+5+TnJgnEH712/IfUEsBAh4DFAAAAAgAAAAhADKRb1deAQAApQUAABMAGAAAAAAAAQAAAKSBAAAAAFtDb250ZW50X1R5cGVzXS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UGrAQAAZG9jUHJvcHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhACEYr1llAQAAxQIAABAAGAAAAAAAAQAAAKSB7gEAAGRvY1Byb3BzL2FwcC54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEACvOn+GYBAADtAgAAEQAYAAAAAAABAAAApIGdAwAAZG9jUHJvcHMvY29yZS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UFOBQAAX3JlbHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAB6RGrfpAAAATgIAAAsAGAAAAAAAAQAAAKSBjgUAAF9yZWxzLy5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1BvAYAAHdvcmQvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAGAAAAAAAAQAAAKSB+wYAAHdvcmQvZm9udFRhYmxlLnhtbFVUBQADnhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABgAAAAAAAEAAACkgVcJAAB3b3JkL2RvY3VtZW50LnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDK52WKKwQAAL4MAAARABgAAAAAAAEAAACkgXcMAAB3b3JkL3NldHRpbmdzLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDbhWzDfQQAAJcdAAASABgAAAAAAAEAAACkge0QAAB3b3JkL251bWJlcmluZy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAvn52YlYBAADQAwAAFAAYAAAAAAABAAAApIG2FQAAd29yZC93ZWJTZXR0aW5ncy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAP6/hZl8PAAANpgAADwAYAAAAAAABAAAApIFaFwAAd29yZC9zdHlsZXMueG1sVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BAicAAHdvcmQvdGhlbWUvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAGAAAAAAAAQAAAKSBRycAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJNkTVsAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQTEuAAB3b3JkL19yZWxzL1VUBQADhhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCzvosd/gAAALYDAAAcABgAAAAAAAEAAACkgXYuAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsFBgAAAAARABEAqQUAAMovAAAAAA==`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, DEBUG_TEXT_REWRITE, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", TRACKED_CHANGE_ANCHOR_KEY_PREFIX = "tc::", COMMENT_ANCHOR_KEY_PREFIX = "comment::", indexByHost, TrackedChangeIndexImpl = class {
278220
278433
  #hostEditor;
278221
278434
  #snapshots = /* @__PURE__ */ new Map;
278222
278435
  #aggregated = null;
@@ -278474,7 +278687,7 @@ var Node$13 = class Node$14 {
278474
278687
  listener(snapshot2);
278475
278688
  } catch {}
278476
278689
  }
278477
- }, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART$1 = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, V2_COVERAGE, SNAPSHOT_VERSION_V2 = "sd-diff-snapshot/v2", PAYLOAD_VERSION_V1 = "sd-diff-payload/v1", PAYLOAD_VERSION_V2 = "sd-diff-payload/v2", ENGINE_ID = "super-editor", STAGED_CONVERTER_KEYS, DiffServiceError, DEFAULT_LEVEL = 1, SWITCH_PATTERN, TOC_BOOKMARK_PREFIX = "_Toc", DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, ALLOWED_WRAP_ATTRS, WRAP_TYPES_SUPPORTING_SIDE, WRAP_TYPES_SUPPORTING_DISTANCES, RELATIVE_HEIGHT_MIN = 0, RELATIVE_HEIGHT_MAX = 4294967295, FORBIDDEN_RAW_PATCH_NAMES, CONTROL_TYPE_SDT_PR_ELEMENTS, DEFAULT_CHECKBOX_SYMBOL_FONT2 = "MS Gothic", DEFAULT_CHECKBOX_CHECKED_HEX2 = "2612", DEFAULT_CHECKBOX_UNCHECKED_HEX2 = "2610", VARIANT_ORDER, KIND_ORDER, HEADER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", DOCUMENT_RELS_PATH2 = "word/_rels/document.xml.rels", HEADER_FILE_PATTERN2, FOOTER_FILE_PATTERN2, SETTINGS_PART, SPECIAL_NOTE_TYPES, RESTART_POLICY_TO_OOXML, VALID_DISPLAYS, REFERENCE_BLOCK_PREFIX, CAPTION_STYLE_NAMES, CAPTION_PARAGRAPH_STYLE_ID = "Caption", CAPTION_FORMAT_TO_OOXML, DOCUMENT_STAT_FIELD_TYPES, TOA_LEADER_REVERSE_MAP, EDGE_NODE_TYPES, CONTENT_TYPES_PART_ID = "[Content_Types].xml", CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types", contentTypesPartDescriptor, empty_exports, init_empty, CURRENT_APP_VERSION2 = "1.28.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension3) => {
278690
+ }, EMITTABLE_BLOCK_TYPES, SDT_BLOCK_NODE_NAMES, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, OOXML_DEFAULT_FONT_SIZE_PT = 10, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART$1 = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, V2_COVERAGE, SNAPSHOT_VERSION_V2 = "sd-diff-snapshot/v2", PAYLOAD_VERSION_V1 = "sd-diff-payload/v1", PAYLOAD_VERSION_V2 = "sd-diff-payload/v2", ENGINE_ID = "super-editor", STAGED_CONVERTER_KEYS, DiffServiceError, DEFAULT_LEVEL = 1, SWITCH_PATTERN, TOC_BOOKMARK_PREFIX = "_Toc", DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, ALLOWED_WRAP_ATTRS, WRAP_TYPES_SUPPORTING_SIDE, WRAP_TYPES_SUPPORTING_DISTANCES, RELATIVE_HEIGHT_MIN = 0, RELATIVE_HEIGHT_MAX = 4294967295, FORBIDDEN_RAW_PATCH_NAMES, CONTROL_TYPE_SDT_PR_ELEMENTS, DEFAULT_CHECKBOX_SYMBOL_FONT2 = "MS Gothic", DEFAULT_CHECKBOX_CHECKED_HEX2 = "2612", DEFAULT_CHECKBOX_UNCHECKED_HEX2 = "2610", VARIANT_ORDER, KIND_ORDER, HEADER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", DOCUMENT_RELS_PATH2 = "word/_rels/document.xml.rels", HEADER_FILE_PATTERN2, FOOTER_FILE_PATTERN2, SETTINGS_PART, SPECIAL_NOTE_TYPES, RESTART_POLICY_TO_OOXML, VALID_DISPLAYS, REFERENCE_BLOCK_PREFIX, CAPTION_STYLE_NAMES, CAPTION_PARAGRAPH_STYLE_ID = "Caption", CAPTION_FORMAT_TO_OOXML, DOCUMENT_STAT_FIELD_TYPES, TOA_LEADER_REVERSE_MAP, EDGE_NODE_TYPES, CONTENT_TYPES_PART_ID = "[Content_Types].xml", CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types", contentTypesPartDescriptor, empty_exports, init_empty, CURRENT_APP_VERSION2 = "1.28.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension3) => {
278478
278691
  const extensionLike = extension3;
278479
278692
  const config2 = extensionLike?.config;
278480
278693
  const ExtensionCtor = extensionLike?.constructor;
@@ -292283,6 +292496,10 @@ menclose::after {
292283
292496
  #footerLayoutResults = null;
292284
292497
  #headerLayoutsByRId = /* @__PURE__ */ new Map;
292285
292498
  #footerLayoutsByRId = /* @__PURE__ */ new Map;
292499
+ #resolvedHeaderLayouts = null;
292500
+ #resolvedFooterLayouts = null;
292501
+ #resolvedHeaderByRId = /* @__PURE__ */ new Map;
292502
+ #resolvedFooterByRId = /* @__PURE__ */ new Map;
292286
292503
  #headerDecorationProvider;
292287
292504
  #footerDecorationProvider;
292288
292505
  #headerRegions = /* @__PURE__ */ new Map;
@@ -292352,12 +292569,14 @@ menclose::after {
292352
292569
  }
292353
292570
  set headerLayoutResults(results) {
292354
292571
  this.#headerLayoutResults = results;
292572
+ this.#resolvedHeaderLayouts = results ? results.map(resolveResult) : null;
292355
292573
  }
292356
292574
  get footerLayoutResults() {
292357
292575
  return this.#footerLayoutResults;
292358
292576
  }
292359
292577
  set footerLayoutResults(results) {
292360
292578
  this.#footerLayoutResults = results;
292579
+ this.#resolvedFooterLayouts = results ? results.map(resolveResult) : null;
292361
292580
  }
292362
292581
  get headerLayoutsByRId() {
292363
292582
  return this.#headerLayoutsByRId;
@@ -292412,6 +292631,8 @@ menclose::after {
292412
292631
  setLayoutResults(headerResults, footerResults) {
292413
292632
  this.#headerLayoutResults = headerResults;
292414
292633
  this.#footerLayoutResults = footerResults;
292634
+ this.#resolvedHeaderLayouts = headerResults ? headerResults.map(resolveResult) : null;
292635
+ this.#resolvedFooterLayouts = footerResults ? footerResults.map(resolveResult) : null;
292415
292636
  }
292416
292637
  initialize() {
292417
292638
  if (!this.#options.editor)
@@ -293024,10 +293245,16 @@ menclose::after {
293024
293245
  };
293025
293246
  }
293026
293247
  async layoutPerRId(headerFooterInput, layout, sectionMetadata) {
293027
- return await layoutPerRIdHeaderFooters(headerFooterInput, layout, sectionMetadata, {
293248
+ await layoutPerRIdHeaderFooters(headerFooterInput, layout, sectionMetadata, {
293028
293249
  headerLayoutsByRId: this.#headerLayoutsByRId,
293029
293250
  footerLayoutsByRId: this.#footerLayoutsByRId
293030
293251
  });
293252
+ this.#resolvedHeaderByRId.clear();
293253
+ for (const [key2, result] of this.#headerLayoutsByRId)
293254
+ this.#resolvedHeaderByRId.set(key2, resolveResult(result));
293255
+ this.#resolvedFooterByRId.clear();
293256
+ for (const [key2, result] of this.#footerLayoutsByRId)
293257
+ this.#resolvedFooterByRId.set(key2, resolveResult(result));
293031
293258
  }
293032
293259
  #computeMetrics(kind, layoutHeight, box, pageHeight, footerMargin) {
293033
293260
  const validatedLayoutHeight = Number.isFinite(layoutHeight) && layoutHeight >= 0 ? layoutHeight : 0;
@@ -293428,6 +293655,8 @@ menclose::after {
293428
293655
  createDecorationProvider(kind, layout) {
293429
293656
  const results = kind === "header" ? this.#headerLayoutResults : this.#footerLayoutResults;
293430
293657
  const layoutsByRId = kind === "header" ? this.#headerLayoutsByRId : this.#footerLayoutsByRId;
293658
+ const resolvedResults = kind === "header" ? this.#resolvedHeaderLayouts : this.#resolvedFooterLayouts;
293659
+ const resolvedByRId = kind === "header" ? this.#resolvedHeaderByRId : this.#resolvedFooterByRId;
293431
293660
  if ((!results || results.length === 0) && (!layoutsByRId || layoutsByRId.size === 0))
293432
293661
  return;
293433
293662
  const multiSectionId = this.#multiSectionIdentifier;
@@ -293475,6 +293704,10 @@ menclose::after {
293475
293704
  const slotPage$1 = this.#findPageForNumber(rIdLayout.layout.pages, pageNumber);
293476
293705
  if (slotPage$1) {
293477
293706
  const fragments$1 = slotPage$1.fragments ?? [];
293707
+ const resolvedItems = resolvedByRId.get(rIdLayoutKey)?.pages.find((p$12) => p$12.number === slotPage$1.number)?.items;
293708
+ if (resolvedItems && resolvedItems.length !== fragments$1.length)
293709
+ console.warn(`[HeaderFooterSessionManager] Resolved items length (${resolvedItems.length}) does not match fragments length (${fragments$1.length}) for rId '${rIdLayoutKey}' page ${pageNumber}. Dropping items.`);
293710
+ const alignedItems = resolvedItems && resolvedItems.length === fragments$1.length ? resolvedItems : undefined;
293478
293711
  const pageHeight$1 = page?.size?.h ?? layout.pageSize?.h ?? layoutOptions.pageSize?.h ?? defaultPageSize.h;
293479
293712
  const margins$1 = pageMargins ?? layout.pages[0]?.margins ?? layoutOptions.margins ?? defaultMargins;
293480
293713
  const decorationMargins$1 = kind === "footer" ? this.#stripFootnoteReserveFromBottomMargin(margins$1, page ?? null) : margins$1;
@@ -293484,10 +293717,8 @@ menclose::after {
293484
293717
  const metrics$1 = this.#computeMetrics(kind, rawLayoutHeight$1, box$1, pageHeight$1, margins$1?.footer ?? 0);
293485
293718
  const layoutMinY$1 = rIdLayout.layout.minY ?? 0;
293486
293719
  return {
293487
- fragments: layoutMinY$1 < 0 ? fragments$1.map((f2) => ({
293488
- ...f2,
293489
- y: f2.y - layoutMinY$1
293490
- })) : fragments$1,
293720
+ fragments: normalizeDecorationFragments(fragments$1, layoutMinY$1),
293721
+ items: normalizeDecorationItems(alignedItems, layoutMinY$1),
293491
293722
  height: metrics$1.containerHeight,
293492
293723
  contentHeight: metrics$1.layoutHeight > 0 ? metrics$1.layoutHeight : metrics$1.containerHeight,
293493
293724
  offset: metrics$1.offset,
@@ -293514,13 +293745,18 @@ menclose::after {
293514
293745
  }
293515
293746
  if (!results || results.length === 0)
293516
293747
  return null;
293517
- const variant = results.find((entry) => entry.type === headerFooterType);
293748
+ const variantIndex = results.findIndex((entry) => entry.type === headerFooterType);
293749
+ const variant = variantIndex >= 0 ? results[variantIndex] : undefined;
293518
293750
  if (!variant || !variant.layout?.pages?.length)
293519
293751
  return null;
293520
293752
  const slotPage = this.#findPageForNumber(variant.layout.pages, pageNumber);
293521
293753
  if (!slotPage)
293522
293754
  return null;
293523
293755
  const fragments = slotPage.fragments ?? [];
293756
+ const resolvedVariantItems = resolvedResults?.[variantIndex]?.pages.find((p$12) => p$12.number === slotPage.number)?.items;
293757
+ if (resolvedVariantItems && resolvedVariantItems.length !== fragments.length)
293758
+ console.warn(`[HeaderFooterSessionManager] Resolved items length (${resolvedVariantItems.length}) does not match fragments length (${fragments.length}) for variant '${headerFooterType}' page ${pageNumber}. Dropping items.`);
293759
+ const alignedVariantItems = resolvedVariantItems && resolvedVariantItems.length === fragments.length ? resolvedVariantItems : undefined;
293524
293760
  const pageHeight = page?.size?.h ?? layout.pageSize?.h ?? layoutOptions.pageSize?.h ?? defaultPageSize.h;
293525
293761
  const margins = pageMargins ?? layout.pages[0]?.margins ?? layoutOptions.margins ?? defaultMargins;
293526
293762
  const decorationMargins = kind === "footer" ? this.#stripFootnoteReserveFromBottomMargin(margins, page ?? null) : margins;
@@ -293531,10 +293767,8 @@ menclose::after {
293531
293767
  const finalHeaderId = sectionRId ?? fallbackId ?? undefined;
293532
293768
  const layoutMinY = variant.layout.minY ?? 0;
293533
293769
  return {
293534
- fragments: layoutMinY < 0 ? fragments.map((f2) => ({
293535
- ...f2,
293536
- y: f2.y - layoutMinY
293537
- })) : fragments,
293770
+ fragments: normalizeDecorationFragments(fragments, layoutMinY),
293771
+ items: normalizeDecorationItems(alignedVariantItems, layoutMinY),
293538
293772
  height: metrics.containerHeight,
293539
293773
  contentHeight: metrics.layoutHeight > 0 ? metrics.layoutHeight : metrics.containerHeight,
293540
293774
  offset: metrics.offset,
@@ -293590,6 +293824,10 @@ menclose::after {
293590
293824
  this.#footerLayoutResults = null;
293591
293825
  this.#headerLayoutsByRId.clear();
293592
293826
  this.#footerLayoutsByRId.clear();
293827
+ this.#resolvedHeaderLayouts = null;
293828
+ this.#resolvedFooterLayouts = null;
293829
+ this.#resolvedHeaderByRId.clear();
293830
+ this.#resolvedFooterByRId.clear();
293593
293831
  this.#headerDecorationProvider = undefined;
293594
293832
  this.#footerDecorationProvider = undefined;
293595
293833
  this.#headerRegions.clear();
@@ -293797,12 +294035,12 @@ menclose::after {
293797
294035
  return;
293798
294036
  console.log(...args$1);
293799
294037
  }, HEADER_FOOTER_INIT_BUDGET_MS = 200, MAX_ZOOM_WARNING_THRESHOLD = 10, MAX_SELECTION_RECTS_PER_USER = 100, SEMANTIC_RESIZE_DEBOUNCE_MS = 120, MIN_SEMANTIC_CONTENT_WIDTH_PX = 1, GLOBAL_PERFORMANCE, PresentationEditor, ICONS, TEXTS, tableActionsOptions;
293800
- var init_src_DSGKQ7oD_es = __esm(() => {
294038
+ var init_src_CGvIfKnh_es = __esm(() => {
293801
294039
  init_rolldown_runtime_Bg48TavK_es();
293802
- init_SuperConverter_uCLp4MWG_es();
294040
+ init_SuperConverter_XXBr0N8c_es();
293803
294041
  init_jszip_C49i9kUs_es();
293804
294042
  init_uuid_qzgm05fK_es();
293805
- init_create_headless_toolbar_CFesyRMw_es();
294043
+ init_create_headless_toolbar_BAI3xz0T_es();
293806
294044
  init_constants_CGhJRd87_es();
293807
294045
  init_dist_B8HfvhaK_es();
293808
294046
  init_unified_Dsuw2be5_es();
@@ -316441,11 +316679,15 @@ function print() { __p += __j.call(arguments, '') }
316441
316679
  "sdt",
316442
316680
  "image"
316443
316681
  ]);
316444
- SUPPORTED_DELETE_NODE_TYPES3 = new Set(DELETABLE_BLOCK_NODE_TYPES2);
316445
- REJECTED_DELETE_NODE_TYPES3 = new Set(["tableRow", "tableCell"]);
316446
- RANGE_DELETE_SAFE_NODE_TYPES = new Set(["passthroughBlock", "passthroughInline"]);
316447
- HEADING_PATTERN = /^Heading(\d)$/;
316448
316682
  indexByHost = /* @__PURE__ */ new WeakMap;
316683
+ EMITTABLE_BLOCK_TYPES = new Set([
316684
+ "paragraph",
316685
+ "heading",
316686
+ "listItem",
316687
+ "image",
316688
+ "tableOfContents"
316689
+ ]);
316690
+ SDT_BLOCK_NODE_NAMES = new Set(["structuredContentBlock", "sdt"]);
316449
316691
  REQUIRED_COMMANDS = {
316450
316692
  "create.paragraph": ["insertParagraphAt"],
316451
316693
  "create.heading": ["insertHeadingAt"],
@@ -316734,6 +316976,10 @@ function print() { __p += __j.call(arguments, '') }
316734
316976
  underline: new Set(["color", "w:color"]),
316735
316977
  borders: new Set(["color"])
316736
316978
  };
316979
+ SUPPORTED_DELETE_NODE_TYPES3 = new Set(DELETABLE_BLOCK_NODE_TYPES2);
316980
+ REJECTED_DELETE_NODE_TYPES3 = new Set(["tableRow", "tableCell"]);
316981
+ RANGE_DELETE_SAFE_NODE_TYPES = new Set(["passthroughBlock", "passthroughInline"]);
316982
+ HEADING_PATTERN = /^Heading(\d)$/;
316737
316983
  ORDERED_PRESET_CONFIG = {
316738
316984
  decimal: {
316739
316985
  numFmt: "decimal",
@@ -320494,14 +320740,11 @@ function print() { __p += __j.call(arguments, '') }
320494
320740
  this.renderDecorationSection(pageEl, page, pageIndex, "header", resolvedPage);
320495
320741
  this.renderDecorationSection(pageEl, page, pageIndex, "footer", resolvedPage);
320496
320742
  }
320497
- isPageRelativeAnchoredFragment(fragment2) {
320743
+ isPageRelativeAnchoredFragment(fragment2, resolvedItem) {
320498
320744
  if (fragment2.kind !== "image" && fragment2.kind !== "drawing")
320499
320745
  return false;
320500
- const lookup3 = this.blockLookup.get(fragment2.blockId);
320501
- if (!lookup3)
320502
- return false;
320503
- const block = lookup3.block;
320504
- if (block.kind !== "image" && block.kind !== "drawing")
320746
+ const block = (resolvedItem && "block" in resolvedItem ? resolvedItem.block : undefined) ?? this.blockLookup.get(fragment2.blockId)?.block;
320747
+ if (!block || block.kind !== "image" && block.kind !== "drawing")
320505
320748
  return false;
320506
320749
  return block.anchor?.vRelativeFrom === "page";
320507
320750
  }
@@ -320555,8 +320798,9 @@ function print() { __p += __j.call(arguments, '') }
320555
320798
  const footerAnchorContainerOffsetY = kind === "footer" ? footerAnchorPageOriginY - effectiveOffset : 0;
320556
320799
  let footerYOffset = 0;
320557
320800
  if (kind === "footer" && data.fragments.length > 0) {
320558
- const contentHeight = typeof data.contentHeight === "number" ? data.contentHeight : data.fragments.reduce((max$2, f2) => {
320559
- const fragHeight = "height" in f2 && typeof f2.height === "number" ? f2.height : this.estimateFragmentHeight(f2);
320801
+ const contentHeight = typeof data.contentHeight === "number" ? data.contentHeight : data.fragments.reduce((max$2, f2, fi) => {
320802
+ const resolvedItem = data.items?.[fi];
320803
+ const fragHeight = "height" in f2 && typeof f2.height === "number" ? f2.height : this.estimateFragmentHeight(f2, resolvedItem);
320560
320804
  return Math.max(max$2, f2.y + Math.max(0, fragHeight));
320561
320805
  }, 0);
320562
320806
  footerYOffset = Math.max(0, effectiveHeight - contentHeight);
@@ -320568,7 +320812,7 @@ function print() { __p += __j.call(arguments, '') }
320568
320812
  pageNumberText: resolvedPage?.numberText ?? page.numberText,
320569
320813
  pageIndex
320570
320814
  };
320571
- const betweenBorderFlags = computeBetweenBorderFlags(data.fragments, this.blockLookup);
320815
+ const betweenBorderFlags = computeBetweenBorderFlags(data.fragments, this.blockLookup, data.items);
320572
320816
  const behindDocFragments = [];
320573
320817
  const normalFragments = [];
320574
320818
  for (let fi = 0;fi < data.fragments.length; fi += 1) {
@@ -320590,8 +320834,9 @@ function print() { __p += __j.call(arguments, '') }
320590
320834
  const behindDocSelector = `[data-behind-doc-section="${kind}"]`;
320591
320835
  pageEl.querySelectorAll(behindDocSelector).forEach((el) => el.remove());
320592
320836
  behindDocFragments.forEach(({ fragment: fragment2, originalIndex }) => {
320593
- const fragEl = this.renderFragment(fragment2, context, undefined, betweenBorderFlags.get(originalIndex));
320594
- const isPageRelative = this.isPageRelativeAnchoredFragment(fragment2);
320837
+ const resolvedItem = data.items?.[originalIndex];
320838
+ const fragEl = this.renderFragment(fragment2, context, undefined, betweenBorderFlags.get(originalIndex), resolvedItem);
320839
+ const isPageRelative = this.isPageRelativeAnchoredFragment(fragment2, resolvedItem);
320595
320840
  let pageY;
320596
320841
  if (isPageRelative && kind === "footer")
320597
320842
  pageY = footerAnchorPageOriginY + fragment2.y;
@@ -320606,8 +320851,9 @@ function print() { __p += __j.call(arguments, '') }
320606
320851
  pageEl.insertBefore(fragEl, pageEl.firstChild);
320607
320852
  });
320608
320853
  normalFragments.forEach(({ fragment: fragment2, originalIndex }) => {
320609
- const fragEl = this.renderFragment(fragment2, context, undefined, betweenBorderFlags.get(originalIndex));
320610
- const isPageRelative = this.isPageRelativeAnchoredFragment(fragment2);
320854
+ const resolvedItem = data.items?.[originalIndex];
320855
+ const fragEl = this.renderFragment(fragment2, context, undefined, betweenBorderFlags.get(originalIndex), resolvedItem);
320856
+ const isPageRelative = this.isPageRelativeAnchoredFragment(fragment2, resolvedItem);
320611
320857
  if (isPageRelative && kind === "footer")
320612
320858
  fragEl.style.top = `${fragment2.y + footerAnchorContainerOffsetY}px`;
320613
320859
  else if (isPageRelative)
@@ -323363,7 +323609,9 @@ function print() { __p += __j.call(arguments, '') }
323363
323609
  el.style.left = `${item.x - mw}px`;
323364
323610
  el.style.width = `${item.width + mw}px`;
323365
323611
  }
323366
- estimateFragmentHeight(fragment2) {
323612
+ estimateFragmentHeight(fragment2, resolvedItem) {
323613
+ if (resolvedItem && "height" in resolvedItem && typeof resolvedItem.height === "number")
323614
+ return resolvedItem.height;
323367
323615
  const measure = this.blockLookup.get(fragment2.blockId)?.measure;
323368
323616
  if (fragment2.kind === "para" && measure?.kind === "paragraph")
323369
323617
  return measure.totalHeight;
@@ -329785,11 +330033,11 @@ var init_zipper_DbkgrypV_es = __esm(() => {
329785
330033
 
329786
330034
  // ../../packages/superdoc/dist/super-editor.es.js
329787
330035
  var init_super_editor_es = __esm(() => {
329788
- init_src_DSGKQ7oD_es();
329789
- init_SuperConverter_uCLp4MWG_es();
330036
+ init_src_CGvIfKnh_es();
330037
+ init_SuperConverter_XXBr0N8c_es();
329790
330038
  init_jszip_C49i9kUs_es();
329791
330039
  init_xml_js_CqGKpaft_es();
329792
- init_create_headless_toolbar_CFesyRMw_es();
330040
+ init_create_headless_toolbar_BAI3xz0T_es();
329793
330041
  init_constants_CGhJRd87_es();
329794
330042
  init_dist_B8HfvhaK_es();
329795
330043
  init_unified_Dsuw2be5_es();