@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.
- package/dist/index.js +641 -393
- 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: {
|
|
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-
|
|
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
|
|
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,
|
|
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-
|
|
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
|
|
157658
|
-
|
|
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-
|
|
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
|
|
229394
|
-
|
|
229395
|
-
|
|
229396
|
-
|
|
229397
|
-
|
|
229398
|
-
|
|
229399
|
-
|
|
229400
|
-
|
|
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 (
|
|
229403
|
-
|
|
229404
|
-
|
|
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 = `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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, 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
|
-
|
|
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:
|
|
293488
|
-
|
|
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
|
|
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
|
|
293535
|
-
|
|
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
|
|
294038
|
+
var init_src_CGvIfKnh_es = __esm(() => {
|
|
293801
294039
|
init_rolldown_runtime_Bg48TavK_es();
|
|
293802
|
-
|
|
294040
|
+
init_SuperConverter_XXBr0N8c_es();
|
|
293803
294041
|
init_jszip_C49i9kUs_es();
|
|
293804
294042
|
init_uuid_qzgm05fK_es();
|
|
293805
|
-
|
|
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
|
|
320501
|
-
if (!
|
|
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
|
|
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
|
|
320594
|
-
const
|
|
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
|
|
320610
|
-
const
|
|
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
|
-
|
|
329789
|
-
|
|
330036
|
+
init_src_CGvIfKnh_es();
|
|
330037
|
+
init_SuperConverter_XXBr0N8c_es();
|
|
329790
330038
|
init_jszip_C49i9kUs_es();
|
|
329791
330039
|
init_xml_js_CqGKpaft_es();
|
|
329792
|
-
|
|
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();
|