@superdoc-dev/cli 0.5.0-next.19 → 0.5.0-next.20
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 +1086 -76
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -9283,25 +9283,30 @@ var init_schemas = __esm(() => {
|
|
|
9283
9283
|
comments: { type: "boolean" },
|
|
9284
9284
|
styles: { type: "boolean" },
|
|
9285
9285
|
numbering: { type: "boolean" },
|
|
9286
|
-
headerFooters: { type: "boolean"
|
|
9286
|
+
headerFooters: { type: "boolean" }
|
|
9287
9287
|
}, ["body", "comments", "styles", "numbering", "headerFooters"]);
|
|
9288
9288
|
diffSummarySchema = objectSchema({
|
|
9289
9289
|
hasChanges: { type: "boolean" },
|
|
9290
|
-
changedComponents: {
|
|
9290
|
+
changedComponents: {
|
|
9291
|
+
type: "array",
|
|
9292
|
+
items: { type: "string", enum: ["body", "comments", "styles", "numbering", "headerFooters", "parts"] }
|
|
9293
|
+
},
|
|
9291
9294
|
body: objectSchema({ hasChanges: { type: "boolean" } }, ["hasChanges"]),
|
|
9292
9295
|
comments: objectSchema({ hasChanges: { type: "boolean" } }, ["hasChanges"]),
|
|
9293
9296
|
styles: objectSchema({ hasChanges: { type: "boolean" } }, ["hasChanges"]),
|
|
9294
|
-
numbering: objectSchema({ hasChanges: { type: "boolean" } }, ["hasChanges"])
|
|
9295
|
-
|
|
9297
|
+
numbering: objectSchema({ hasChanges: { type: "boolean" } }, ["hasChanges"]),
|
|
9298
|
+
headerFooters: objectSchema({ hasChanges: { type: "boolean" } }, ["hasChanges"]),
|
|
9299
|
+
parts: objectSchema({ hasChanges: { type: "boolean" } }, ["hasChanges"])
|
|
9300
|
+
}, ["hasChanges", "changedComponents", "body", "comments", "styles", "numbering", "headerFooters", "parts"]);
|
|
9296
9301
|
diffSnapshotSchema = objectSchema({
|
|
9297
|
-
version: { type: "string",
|
|
9302
|
+
version: { type: "string", enum: ["sd-diff-snapshot/v1", "sd-diff-snapshot/v2"] },
|
|
9298
9303
|
engine: { type: "string", enum: ["super-editor"] },
|
|
9299
9304
|
fingerprint: { type: "string" },
|
|
9300
9305
|
coverage: diffCoverageSchema,
|
|
9301
9306
|
payload: { type: "object", description: "Opaque engine-owned snapshot data." }
|
|
9302
9307
|
}, ["version", "engine", "fingerprint", "coverage", "payload"]);
|
|
9303
9308
|
diffPayloadSchema = objectSchema({
|
|
9304
|
-
version: { type: "string",
|
|
9309
|
+
version: { type: "string", enum: ["sd-diff-payload/v1", "sd-diff-payload/v2"] },
|
|
9305
9310
|
engine: { type: "string", enum: ["super-editor"] },
|
|
9306
9311
|
baseFingerprint: { type: "string" },
|
|
9307
9312
|
targetFingerprint: { type: "string" },
|
|
@@ -15575,8 +15580,8 @@ function validateSnapshotWrapper(snapshot) {
|
|
|
15575
15580
|
if (!isRecord2(snapshot)) {
|
|
15576
15581
|
throw new DocumentApiValidationError("INVALID_INPUT", "targetSnapshot must be a DiffSnapshot object.");
|
|
15577
15582
|
}
|
|
15578
|
-
if (snapshot.version
|
|
15579
|
-
throw new DocumentApiValidationError("CAPABILITY_UNSUPPORTED", `Unsupported snapshot version "${String(snapshot.version)}". Expected "${
|
|
15583
|
+
if (!SNAPSHOT_VERSIONS.has(String(snapshot.version))) {
|
|
15584
|
+
throw new DocumentApiValidationError("CAPABILITY_UNSUPPORTED", `Unsupported snapshot version "${String(snapshot.version)}". Expected one of "${[...SNAPSHOT_VERSIONS].join('", "')}".`);
|
|
15580
15585
|
}
|
|
15581
15586
|
if (typeof snapshot.engine !== "string") {
|
|
15582
15587
|
throw new DocumentApiValidationError("INVALID_INPUT", "targetSnapshot.engine must be a string.");
|
|
@@ -15595,8 +15600,8 @@ function validateDiffPayloadWrapper(diff) {
|
|
|
15595
15600
|
if (!isRecord2(diff)) {
|
|
15596
15601
|
throw new DocumentApiValidationError("INVALID_INPUT", "diff must be a DiffPayload object.");
|
|
15597
15602
|
}
|
|
15598
|
-
if (diff.version
|
|
15599
|
-
throw new DocumentApiValidationError("CAPABILITY_UNSUPPORTED", `Unsupported diff version "${String(diff.version)}". Expected "${
|
|
15603
|
+
if (!PAYLOAD_VERSIONS.has(String(diff.version))) {
|
|
15604
|
+
throw new DocumentApiValidationError("CAPABILITY_UNSUPPORTED", `Unsupported diff version "${String(diff.version)}". Expected one of "${[...PAYLOAD_VERSIONS].join('", "')}".`);
|
|
15600
15605
|
}
|
|
15601
15606
|
if (typeof diff.engine !== "string") {
|
|
15602
15607
|
throw new DocumentApiValidationError("INVALID_INPUT", "diff.engine must be a string.");
|
|
@@ -15628,9 +15633,11 @@ function executeDiffApply(adapter, input, options) {
|
|
|
15628
15633
|
validateDiffPayloadWrapper(input?.diff);
|
|
15629
15634
|
return adapter.apply(input, options);
|
|
15630
15635
|
}
|
|
15631
|
-
var
|
|
15636
|
+
var SNAPSHOT_VERSIONS, PAYLOAD_VERSIONS;
|
|
15632
15637
|
var init_diff = __esm(() => {
|
|
15633
15638
|
init_errors2();
|
|
15639
|
+
SNAPSHOT_VERSIONS = new Set(["sd-diff-snapshot/v1", "sd-diff-snapshot/v2"]);
|
|
15640
|
+
PAYLOAD_VERSIONS = new Set(["sd-diff-payload/v1", "sd-diff-payload/v2"]);
|
|
15634
15641
|
});
|
|
15635
15642
|
|
|
15636
15643
|
// ../../packages/document-api/src/tables/tables.ts
|
|
@@ -63339,7 +63346,7 @@ var init_remark_gfm_z_sDF4ss_es = __esm(() => {
|
|
|
63339
63346
|
emptyOptions2 = {};
|
|
63340
63347
|
});
|
|
63341
63348
|
|
|
63342
|
-
// ../../packages/superdoc/dist/chunks/SuperConverter-
|
|
63349
|
+
// ../../packages/superdoc/dist/chunks/SuperConverter-CYbYOJeZ.es.js
|
|
63343
63350
|
function getExtensionConfigField(extension$1, field, context = { name: "" }) {
|
|
63344
63351
|
const fieldValue = extension$1.config[field];
|
|
63345
63352
|
if (typeof fieldValue === "function")
|
|
@@ -68061,8 +68068,8 @@ function isRecord$1(value) {
|
|
|
68061
68068
|
function validateSnapshotWrapper2(snapshot2) {
|
|
68062
68069
|
if (!isRecord$1(snapshot2))
|
|
68063
68070
|
throw new DocumentApiValidationError2("INVALID_INPUT", "targetSnapshot must be a DiffSnapshot object.");
|
|
68064
|
-
if (snapshot2.version
|
|
68065
|
-
throw new DocumentApiValidationError2("CAPABILITY_UNSUPPORTED", `Unsupported snapshot version "${String(snapshot2.version)}". Expected "${
|
|
68071
|
+
if (!SNAPSHOT_VERSIONS2.has(String(snapshot2.version)))
|
|
68072
|
+
throw new DocumentApiValidationError2("CAPABILITY_UNSUPPORTED", `Unsupported snapshot version "${String(snapshot2.version)}". Expected one of "${[...SNAPSHOT_VERSIONS2].join('", "')}".`);
|
|
68066
68073
|
if (typeof snapshot2.engine !== "string")
|
|
68067
68074
|
throw new DocumentApiValidationError2("INVALID_INPUT", "targetSnapshot.engine must be a string.");
|
|
68068
68075
|
if (typeof snapshot2.fingerprint !== "string")
|
|
@@ -68075,8 +68082,8 @@ function validateSnapshotWrapper2(snapshot2) {
|
|
|
68075
68082
|
function validateDiffPayloadWrapper2(diff) {
|
|
68076
68083
|
if (!isRecord$1(diff))
|
|
68077
68084
|
throw new DocumentApiValidationError2("INVALID_INPUT", "diff must be a DiffPayload object.");
|
|
68078
|
-
if (diff.version
|
|
68079
|
-
throw new DocumentApiValidationError2("CAPABILITY_UNSUPPORTED", `Unsupported diff version "${String(diff.version)}". Expected "${
|
|
68085
|
+
if (!PAYLOAD_VERSIONS2.has(String(diff.version)))
|
|
68086
|
+
throw new DocumentApiValidationError2("CAPABILITY_UNSUPPORTED", `Unsupported diff version "${String(diff.version)}". Expected one of "${[...PAYLOAD_VERSIONS2].join('", "')}".`);
|
|
68080
68087
|
if (typeof diff.engine !== "string")
|
|
68081
68088
|
throw new DocumentApiValidationError2("INVALID_INPUT", "diff.engine must be a string.");
|
|
68082
68089
|
if (typeof diff.baseFingerprint !== "string")
|
|
@@ -99712,7 +99719,7 @@ var isRegExp = (value) => {
|
|
|
99712
99719
|
tracked: false,
|
|
99713
99720
|
carrier: runAttributeCarrier2(runPropertyKey ?? key),
|
|
99714
99721
|
schema
|
|
99715
|
-
}), INLINE_PROPERTY_REGISTRY2, INLINE_PROPERTY_KEY_SET2, INLINE_PROPERTY_BY_KEY2, UNDERLINE_OBJECT_ALLOWED_KEYS2, SHADING_ALLOWED_KEYS2, BORDER_ALLOWED_KEYS2, FIT_TEXT_ALLOWED_KEYS2, LANG_ALLOWED_KEYS2, RFONTS_ALLOWED_KEYS2, EAST_ASIAN_LAYOUT_ALLOWED_KEYS2, STYLISTIC_SET_ALLOWED_KEYS2, VERT_ALIGN_VALUES2, PROPERTY_VALIDATOR_MAP2, NONE_FAILURES2, NONE_THROWS2, T_NOT_FOUND2, T_NOT_FOUND_CAPABLE2, T_PLAN_ENGINE2, T_NOT_FOUND_COMMAND2, T_IMAGE_COMMAND2, T_CC_READ2, T_CC_MUTATION2, T_CC_TYPED2, T_CC_TYPED_READ2, T_CC_RAW2, T_QUERY_MATCH2, T_SECTION_CREATE2, T_SECTION_READ2, T_PARAGRAPH_MUTATION2, T_SECTION_MUTATION2, T_SECTION_SETTINGS_MUTATION2, T_HEADER_FOOTER_MUTATION2, T_STORY2, T_REF_READ_LIST2, T_REF_MUTATION2, T_REF_MUTATION_REMOVE2, T_REF_INSERT2, T_PROTECTION_READ2, T_PROTECTION_MUTATION2, T_PERM_RANGE_READ2, T_PERM_RANGE_MUTATION2, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS2, OPERATION_DEFINITIONS2, OPERATION_IDS2, COMMAND_CATALOG3, PARAGRAPH_ALIGNMENTS2, TAB_STOP_ALIGNMENTS2, TAB_STOP_LEADERS2, BORDER_SIDES2, CLEAR_BORDER_SIDES2, LINE_RULES2, PARAGRAPH_DIRECTIONS2, ALIGNMENT_POLICIES2, PARAGRAPH_BLOCK_TYPES2, SET_STYLE_KEYS2, CLEAR_STYLE_KEYS2, RESET_DIRECT_FORMATTING_KEYS2, SET_ALIGNMENT_KEYS2, CLEAR_ALIGNMENT_KEYS2, SET_INDENTATION_KEYS2, CLEAR_INDENTATION_KEYS2, SET_SPACING_KEYS2, CLEAR_SPACING_KEYS2, SET_KEEP_OPTIONS_KEYS2, SET_OUTLINE_LEVEL_KEYS2, SET_FLOW_OPTIONS_KEYS2, SET_TAB_STOP_KEYS2, CLEAR_TAB_STOP_KEYS2, CLEAR_ALL_TAB_STOPS_KEYS2, SET_BORDER_KEYS2, CLEAR_BORDER_KEYS2, SET_SHADING_KEYS2, CLEAR_SHADING_KEYS2, SET_DIRECTION_KEYS2, CLEAR_DIRECTION_KEYS2, ST_ON_OFF_ON_VALUES2, ST_ON_OFF_OFF_VALUES2, ST_UNDERLINE_VALUES2, ST_UNDERLINE_VALUE_SET2, ST_VERTICAL_ALIGN_RUN2, ST_EM2, ST_TEXT_ALIGNMENT2, ST_TEXT_DIRECTION2, ST_TEXTBOX_TIGHT_WRAP2, ST_TEXT_TRANSFORM2, ST_JUSTIFICATION2, FONT_FAMILY_SCHEMA2, COLOR_SCHEMA2, SPACING_SCHEMA2, INDENT_SCHEMA2, UNDERLINE_SCHEMA2, BORDER_PROPERTIES_SCHEMA2, SHADING_SCHEMA2, LANG_SCHEMA2, EAST_ASIAN_LAYOUT_SCHEMA2, FIT_TEXT_SCHEMA2, NUMBERING_PROPERTIES_SCHEMA2, FRAME_PR_SCHEMA2, PARAGRAPH_BORDERS_SCHEMA2, TAB_STOP_SCHEMA2, PROPERTY_REGISTRY2, ALLOWED_KEYS_BY_CHANNEL2, PROPERTY_INDEX2, EXCLUDED_KEYS2, INPUT_ALLOWED_KEYS2, TARGET_ALLOWED_KEYS2, OPTIONS_ALLOWED_KEYS2, VALID_CHANNELS2, Z_ORDER_RELATIVE_HEIGHT_MAX2 = 4294967295, nodeTypeValues2, blockNodeTypeValues2, deletableBlockNodeTypeValues2, inlineNodeTypeValues2, rangeSchema2, textAddressSchema2, textTargetSchema2, blockNodeAddressSchema2, deletableBlockNodeAddressSchema2, tableAddressSchema2, tableRowAddressSchema2, tableCellAddressSchema2, tableOrCellAddressSchema2, paragraphAddressSchema2, headingAddressSchema2, listItemAddressSchema2, paragraphTargetSchema2, sectionAddressSchema2, nodeAddressSchema2, commentAddressSchema2, trackedChangeAddressSchema2, entityAddressSchema2, selectionTargetSchema2, deleteBehaviorSchema2, resolvedHandleSchema2, pageInfoSchema2, receiptSuccessSchema2, textMutationRangeSchema2, textMutationResolutionSchema2, textMutationSuccessSchema2, matchBlockSchema2, storyLocatorSchema2, trackChangeRefSchema2, createParagraphSuccessSchema2, createHeadingSuccessSchema2, headingLevelSchema2, listsInsertSuccessSchema2, listsMutateItemSuccessSchema2, textSelectorSchema2, nodeSelectorSchema2, sdMutationResolutionSchema2, sdMutationSuccessSchema2, documentInfoCountsSchema2, documentInfoOutlineItemSchema2, documentInfoCapabilitiesSchema2, documentStylesSchema2, documentDefaultsSchema2, listKindSchema2, listInsertPositionSchema2, sectionBreakTypeSchema2, sectionOrientationSchema2, sectionVerticalAlignSchema2, sectionDirectionSchema2, sectionHeaderFooterKindSchema2, sectionHeaderFooterVariantSchema2, sectionLineNumberRestartSchema2, sectionPageNumberFormatSchema2, sectionRangeDomainSchema2, sectionPageMarginsSchema2, sectionHeaderFooterMarginsSchema2, sectionPageSetupSchema2, sectionColumnsSchema2, sectionLineNumberingSchema2, sectionPageNumberingSchema2, sectionHeaderFooterRefsSchema2, sectionBorderSpecSchema2, sectionPageBordersSchema2, sectionMutationSuccessSchema2, documentMutationSuccessSchema2, paragraphMutationTargetSchema2, paragraphMutationSuccessSchema2, createSectionBreakSuccessSchema2, capabilityReasonsSchema2, capabilityFlagSchema2, operationRuntimeCapabilitySchema2, operationCapabilitiesSchema2, inlinePropertyCapabilitySchema2, formatCapabilitiesSchema2, planEngineCapabilitiesSchema2, nullableTableBorderSpecSchema2, sdFragmentSchema2, placementSchema2, nestingPolicySchema2, tableCreateLocationSchema2, formatInlineAliasOperationSchemas2, tocMutationFailureSchema2, tocMutationSuccessSchema2, tocEntryMutationFailureSchema2, tocEntryMutationSuccessSchema2, hyperlinkTargetSchema2, hyperlinkReadPropertiesSchema2, hyperlinkSpecSchema2, hyperlinkPatchSchema2, hyperlinkDomainSchema2, hyperlinkMutationSuccessSchema2, hyperlinkMutationFailureSchema2, contentControlTargetSchema2, contentControlMutationSuccessSchema2, contentControlMutationFailureSchema2, ccListResultSchema2, ccInfoSchema2, refFailureSchema2, bookmarkAddressSchema2, bookmarkMutation2, footnoteAddressSchema2, footnoteConfigScopeSchema2, footnoteNumberingSchema2, footnoteMutation2, footnoteConfig2, crossRefAddressSchema2, crossRefTargetSchema2, crossRefDisplaySchema2, crossRefMutation2, indexAddressSchema2, indexEntryAddressSchema2, indexConfigSchema2, indexEntryDataSchema2, indexEntryPatchSchema2, indexMutation2, indexEntryMutation2, captionAddressSchema2, captionMutation2, captionConfig2, fieldAddressSchema2, fieldMutation2, citationAddressSchema2, citationSourceAddressSchema2, bibliographyAddressSchema2, citationMutation2, citationSourceMutation2, bibliographyMutation2, citationPersonSchema2, citationSourceFieldsSchema2, tocCreateLocationSchema2, authoritiesAddressSchema2, authorityEntryAddressSchema2, authoritiesConfigSchema2, authorityEntryDataSchema2, authorityEntryPatchSchema2, authoritiesMutation2, authorityEntryMutation2, diffCoverageSchema2, diffSummarySchema2, diffSnapshotSchema2, diffPayloadSchema2, GROUP_METADATA2, STEP_OP_CATALOG_UNFROZEN2, PUBLIC_STEP_OP_CATALOG_UNFROZEN2, PUBLIC_MUTATION_STEP_OP_IDS2, PUBLIC_MUTATION_STEP_OP_SET2, CAPABILITY_REASON_CODES, VALID_EDGE_VALUES2, VALID_EDGE_NODE_TYPES2, VALID_DOCUMENT_EDGES2, VALID_REF_BOUNDARIES2, VALID_ANCHOR_KINDS2, RESOLVE_RANGE_ALLOWED_KEYS2, CREATE_COMMENT_ALLOWED_KEYS2, PATCH_COMMENT_ALLOWED_KEYS2, STYLE_APPLY_INPUT_ALLOWED_KEYS2, INLINE_ALIAS_INPUT_ALLOWED_KEYS2, DELETE_INPUT_ALLOWED_KEYS2, VALID_BEHAVIORS2, CONTENT_KIND_SET2, INLINE_KIND_SET2, LEGACY_TOP_LEVEL_TYPES2, TEXT_INSERT_ALLOWED_KEYS2, STRUCTURAL_INSERT_ALLOWED_KEYS2, VALID_INSERT_TYPES2, LIST_KINDS2, LIST_INSERT_POSITIONS2, JOIN_DIRECTIONS2, MUTATION_SCOPES2, LEVEL_ALIGNMENTS2, TRAILING_CHARACTERS2, LIST_PRESET_IDS2, VALID_BLOCK_NODE_TYPES$1, VALID_LIST_KINDS2, VALID_INSERT_POSITIONS2, VALID_JOIN_DIRECTIONS2, VALID_MUTATION_SCOPES2, VALID_LEVEL_ALIGNMENTS2, VALID_TRAILING_CHARACTERS2, VALID_LIST_PRESETS2, VALID_CONTINUITY_VALUES2, VALID_SEQUENCE_MODES2, VALID_LIST_CREATE_MODES2, TEXT_REPLACE_ALLOWED_KEYS2, STRUCTURAL_REPLACE_ALLOWED_KEYS2, VALID_HEADING_LEVELS2, SECTION_BREAK_TYPES$1, SUPPORTED_DELETE_NODE_TYPES2, REJECTED_DELETE_NODE_TYPES2, VALID_BLOCK_NODE_TYPES3,
|
|
99722
|
+
}), INLINE_PROPERTY_REGISTRY2, INLINE_PROPERTY_KEY_SET2, INLINE_PROPERTY_BY_KEY2, UNDERLINE_OBJECT_ALLOWED_KEYS2, SHADING_ALLOWED_KEYS2, BORDER_ALLOWED_KEYS2, FIT_TEXT_ALLOWED_KEYS2, LANG_ALLOWED_KEYS2, RFONTS_ALLOWED_KEYS2, EAST_ASIAN_LAYOUT_ALLOWED_KEYS2, STYLISTIC_SET_ALLOWED_KEYS2, VERT_ALIGN_VALUES2, PROPERTY_VALIDATOR_MAP2, NONE_FAILURES2, NONE_THROWS2, T_NOT_FOUND2, T_NOT_FOUND_CAPABLE2, T_PLAN_ENGINE2, T_NOT_FOUND_COMMAND2, T_IMAGE_COMMAND2, T_CC_READ2, T_CC_MUTATION2, T_CC_TYPED2, T_CC_TYPED_READ2, T_CC_RAW2, T_QUERY_MATCH2, T_SECTION_CREATE2, T_SECTION_READ2, T_PARAGRAPH_MUTATION2, T_SECTION_MUTATION2, T_SECTION_SETTINGS_MUTATION2, T_HEADER_FOOTER_MUTATION2, T_STORY2, T_REF_READ_LIST2, T_REF_MUTATION2, T_REF_MUTATION_REMOVE2, T_REF_INSERT2, T_PROTECTION_READ2, T_PROTECTION_MUTATION2, T_PERM_RANGE_READ2, T_PERM_RANGE_MUTATION2, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS2, OPERATION_DEFINITIONS2, OPERATION_IDS2, COMMAND_CATALOG3, PARAGRAPH_ALIGNMENTS2, TAB_STOP_ALIGNMENTS2, TAB_STOP_LEADERS2, BORDER_SIDES2, CLEAR_BORDER_SIDES2, LINE_RULES2, PARAGRAPH_DIRECTIONS2, ALIGNMENT_POLICIES2, PARAGRAPH_BLOCK_TYPES2, SET_STYLE_KEYS2, CLEAR_STYLE_KEYS2, RESET_DIRECT_FORMATTING_KEYS2, SET_ALIGNMENT_KEYS2, CLEAR_ALIGNMENT_KEYS2, SET_INDENTATION_KEYS2, CLEAR_INDENTATION_KEYS2, SET_SPACING_KEYS2, CLEAR_SPACING_KEYS2, SET_KEEP_OPTIONS_KEYS2, SET_OUTLINE_LEVEL_KEYS2, SET_FLOW_OPTIONS_KEYS2, SET_TAB_STOP_KEYS2, CLEAR_TAB_STOP_KEYS2, CLEAR_ALL_TAB_STOPS_KEYS2, SET_BORDER_KEYS2, CLEAR_BORDER_KEYS2, SET_SHADING_KEYS2, CLEAR_SHADING_KEYS2, SET_DIRECTION_KEYS2, CLEAR_DIRECTION_KEYS2, ST_ON_OFF_ON_VALUES2, ST_ON_OFF_OFF_VALUES2, ST_UNDERLINE_VALUES2, ST_UNDERLINE_VALUE_SET2, ST_VERTICAL_ALIGN_RUN2, ST_EM2, ST_TEXT_ALIGNMENT2, ST_TEXT_DIRECTION2, ST_TEXTBOX_TIGHT_WRAP2, ST_TEXT_TRANSFORM2, ST_JUSTIFICATION2, FONT_FAMILY_SCHEMA2, COLOR_SCHEMA2, SPACING_SCHEMA2, INDENT_SCHEMA2, UNDERLINE_SCHEMA2, BORDER_PROPERTIES_SCHEMA2, SHADING_SCHEMA2, LANG_SCHEMA2, EAST_ASIAN_LAYOUT_SCHEMA2, FIT_TEXT_SCHEMA2, NUMBERING_PROPERTIES_SCHEMA2, FRAME_PR_SCHEMA2, PARAGRAPH_BORDERS_SCHEMA2, TAB_STOP_SCHEMA2, PROPERTY_REGISTRY2, ALLOWED_KEYS_BY_CHANNEL2, PROPERTY_INDEX2, EXCLUDED_KEYS2, INPUT_ALLOWED_KEYS2, TARGET_ALLOWED_KEYS2, OPTIONS_ALLOWED_KEYS2, VALID_CHANNELS2, Z_ORDER_RELATIVE_HEIGHT_MAX2 = 4294967295, nodeTypeValues2, blockNodeTypeValues2, deletableBlockNodeTypeValues2, inlineNodeTypeValues2, rangeSchema2, textAddressSchema2, textTargetSchema2, blockNodeAddressSchema2, deletableBlockNodeAddressSchema2, tableAddressSchema2, tableRowAddressSchema2, tableCellAddressSchema2, tableOrCellAddressSchema2, paragraphAddressSchema2, headingAddressSchema2, listItemAddressSchema2, paragraphTargetSchema2, sectionAddressSchema2, nodeAddressSchema2, commentAddressSchema2, trackedChangeAddressSchema2, entityAddressSchema2, selectionTargetSchema2, deleteBehaviorSchema2, resolvedHandleSchema2, pageInfoSchema2, receiptSuccessSchema2, textMutationRangeSchema2, textMutationResolutionSchema2, textMutationSuccessSchema2, matchBlockSchema2, storyLocatorSchema2, trackChangeRefSchema2, createParagraphSuccessSchema2, createHeadingSuccessSchema2, headingLevelSchema2, listsInsertSuccessSchema2, listsMutateItemSuccessSchema2, textSelectorSchema2, nodeSelectorSchema2, sdMutationResolutionSchema2, sdMutationSuccessSchema2, documentInfoCountsSchema2, documentInfoOutlineItemSchema2, documentInfoCapabilitiesSchema2, documentStylesSchema2, documentDefaultsSchema2, listKindSchema2, listInsertPositionSchema2, sectionBreakTypeSchema2, sectionOrientationSchema2, sectionVerticalAlignSchema2, sectionDirectionSchema2, sectionHeaderFooterKindSchema2, sectionHeaderFooterVariantSchema2, sectionLineNumberRestartSchema2, sectionPageNumberFormatSchema2, sectionRangeDomainSchema2, sectionPageMarginsSchema2, sectionHeaderFooterMarginsSchema2, sectionPageSetupSchema2, sectionColumnsSchema2, sectionLineNumberingSchema2, sectionPageNumberingSchema2, sectionHeaderFooterRefsSchema2, sectionBorderSpecSchema2, sectionPageBordersSchema2, sectionMutationSuccessSchema2, documentMutationSuccessSchema2, paragraphMutationTargetSchema2, paragraphMutationSuccessSchema2, createSectionBreakSuccessSchema2, capabilityReasonsSchema2, capabilityFlagSchema2, operationRuntimeCapabilitySchema2, operationCapabilitiesSchema2, inlinePropertyCapabilitySchema2, formatCapabilitiesSchema2, planEngineCapabilitiesSchema2, nullableTableBorderSpecSchema2, sdFragmentSchema2, placementSchema2, nestingPolicySchema2, tableCreateLocationSchema2, formatInlineAliasOperationSchemas2, tocMutationFailureSchema2, tocMutationSuccessSchema2, tocEntryMutationFailureSchema2, tocEntryMutationSuccessSchema2, hyperlinkTargetSchema2, hyperlinkReadPropertiesSchema2, hyperlinkSpecSchema2, hyperlinkPatchSchema2, hyperlinkDomainSchema2, hyperlinkMutationSuccessSchema2, hyperlinkMutationFailureSchema2, contentControlTargetSchema2, contentControlMutationSuccessSchema2, contentControlMutationFailureSchema2, ccListResultSchema2, ccInfoSchema2, refFailureSchema2, bookmarkAddressSchema2, bookmarkMutation2, footnoteAddressSchema2, footnoteConfigScopeSchema2, footnoteNumberingSchema2, footnoteMutation2, footnoteConfig2, crossRefAddressSchema2, crossRefTargetSchema2, crossRefDisplaySchema2, crossRefMutation2, indexAddressSchema2, indexEntryAddressSchema2, indexConfigSchema2, indexEntryDataSchema2, indexEntryPatchSchema2, indexMutation2, indexEntryMutation2, captionAddressSchema2, captionMutation2, captionConfig2, fieldAddressSchema2, fieldMutation2, citationAddressSchema2, citationSourceAddressSchema2, bibliographyAddressSchema2, citationMutation2, citationSourceMutation2, bibliographyMutation2, citationPersonSchema2, citationSourceFieldsSchema2, tocCreateLocationSchema2, authoritiesAddressSchema2, authorityEntryAddressSchema2, authoritiesConfigSchema2, authorityEntryDataSchema2, authorityEntryPatchSchema2, authoritiesMutation2, authorityEntryMutation2, diffCoverageSchema2, diffSummarySchema2, diffSnapshotSchema2, diffPayloadSchema2, GROUP_METADATA2, STEP_OP_CATALOG_UNFROZEN2, PUBLIC_STEP_OP_CATALOG_UNFROZEN2, PUBLIC_MUTATION_STEP_OP_IDS2, PUBLIC_MUTATION_STEP_OP_SET2, CAPABILITY_REASON_CODES, VALID_EDGE_VALUES2, VALID_EDGE_NODE_TYPES2, VALID_DOCUMENT_EDGES2, VALID_REF_BOUNDARIES2, VALID_ANCHOR_KINDS2, RESOLVE_RANGE_ALLOWED_KEYS2, CREATE_COMMENT_ALLOWED_KEYS2, PATCH_COMMENT_ALLOWED_KEYS2, STYLE_APPLY_INPUT_ALLOWED_KEYS2, INLINE_ALIAS_INPUT_ALLOWED_KEYS2, DELETE_INPUT_ALLOWED_KEYS2, VALID_BEHAVIORS2, CONTENT_KIND_SET2, INLINE_KIND_SET2, LEGACY_TOP_LEVEL_TYPES2, TEXT_INSERT_ALLOWED_KEYS2, STRUCTURAL_INSERT_ALLOWED_KEYS2, VALID_INSERT_TYPES2, LIST_KINDS2, LIST_INSERT_POSITIONS2, JOIN_DIRECTIONS2, MUTATION_SCOPES2, LEVEL_ALIGNMENTS2, TRAILING_CHARACTERS2, LIST_PRESET_IDS2, VALID_BLOCK_NODE_TYPES$1, VALID_LIST_KINDS2, VALID_INSERT_POSITIONS2, VALID_JOIN_DIRECTIONS2, VALID_MUTATION_SCOPES2, VALID_LEVEL_ALIGNMENTS2, VALID_TRAILING_CHARACTERS2, VALID_LIST_PRESETS2, VALID_CONTINUITY_VALUES2, VALID_SEQUENCE_MODES2, VALID_LIST_CREATE_MODES2, TEXT_REPLACE_ALLOWED_KEYS2, STRUCTURAL_REPLACE_ALLOWED_KEYS2, VALID_HEADING_LEVELS2, SECTION_BREAK_TYPES$1, SUPPORTED_DELETE_NODE_TYPES2, REJECTED_DELETE_NODE_TYPES2, VALID_BLOCK_NODE_TYPES3, SNAPSHOT_VERSIONS2, PAYLOAD_VERSIONS2, VALID_STYLE_OPTION_FLAGS2, TABLE_BORDER_COLOR_PATTERN2, VALID_APPLY_TO_VALUES2, VALID_BORDER_EDGE_KEYS2, HEADER_FOOTER_KINDS$1, HEADER_FOOTER_VARIANTS$1, DEFAULT_SECTIONS_LIST_LIMIT2 = 250, SECTION_BREAK_TYPES3, SECTION_ORIENTATIONS2, SECTION_VERTICAL_ALIGNS2, SECTION_DIRECTIONS2, HEADER_FOOTER_KINDS3, HEADER_FOOTER_VARIANTS3, LINE_NUMBER_RESTARTS2, PAGE_NUMBER_FORMATS2, PAGE_BORDER_DISPLAYS2, PAGE_BORDER_OFFSET_FROM_VALUES2, PAGE_BORDER_Z_ORDER_VALUES2, VALID_WRAP_TYPES2, VALID_WRAP_SIDES2, VALID_IMAGE_SIZE_UNITS2, VALID_TOC_UPDATE_MODES2, EDIT_ENTRY_PATCH_ALLOWED_KEYS2, PATCH_FIELDS2, CONTENT_CONTROL_TYPES2, LOCK_MODES2, CONTENT_CONTROL_APPEARANCES2, VALID_NODE_KINDS2, VALID_LOCK_MODES$1, VALID_CC_TYPES2, VALID_CC_APPEARANCES2, VALID_CONTENT_FORMATS2, VALID_RAW_PATCH_OPS2, VALID_SET_MODES2, VALID_CREATE_LOCATION_KINDS2, DEFAULT_PROTECTION_STATE, ADAPTER_GATED_PREFIXES2, _buffers, _defaultCollectionId = null, _nextCollectionId = 1, generateV2HandlerEntity = (handlerName, translator$216) => ({
|
|
99716
99723
|
handlerName,
|
|
99717
99724
|
handler: (params3) => {
|
|
99718
99725
|
const { nodes } = params3;
|
|
@@ -113988,7 +113995,7 @@ var isRegExp = (value) => {
|
|
|
113988
113995
|
state.kern = kernNode.attributes["w:val"];
|
|
113989
113996
|
}
|
|
113990
113997
|
}, SuperConverter;
|
|
113991
|
-
var
|
|
113998
|
+
var init_SuperConverter_CYbYOJeZ_es = __esm(() => {
|
|
113992
113999
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
113993
114000
|
init_jszip_ChlR43oI_es();
|
|
113994
114001
|
init_xml_js_40FWvL78_es();
|
|
@@ -124840,10 +124847,7 @@ var init_SuperConverter_DtIvNa0T_es = __esm(() => {
|
|
|
124840
124847
|
comments: { type: "boolean" },
|
|
124841
124848
|
styles: { type: "boolean" },
|
|
124842
124849
|
numbering: { type: "boolean" },
|
|
124843
|
-
headerFooters: {
|
|
124844
|
-
type: "boolean",
|
|
124845
|
-
const: false
|
|
124846
|
-
}
|
|
124850
|
+
headerFooters: { type: "boolean" }
|
|
124847
124851
|
}, [
|
|
124848
124852
|
"body",
|
|
124849
124853
|
"comments",
|
|
@@ -124861,26 +124865,32 @@ var init_SuperConverter_DtIvNa0T_es = __esm(() => {
|
|
|
124861
124865
|
"body",
|
|
124862
124866
|
"comments",
|
|
124863
124867
|
"styles",
|
|
124864
|
-
"numbering"
|
|
124868
|
+
"numbering",
|
|
124869
|
+
"headerFooters",
|
|
124870
|
+
"parts"
|
|
124865
124871
|
]
|
|
124866
124872
|
}
|
|
124867
124873
|
},
|
|
124868
124874
|
body: objectSchema2({ hasChanges: { type: "boolean" } }, ["hasChanges"]),
|
|
124869
124875
|
comments: objectSchema2({ hasChanges: { type: "boolean" } }, ["hasChanges"]),
|
|
124870
124876
|
styles: objectSchema2({ hasChanges: { type: "boolean" } }, ["hasChanges"]),
|
|
124871
|
-
numbering: objectSchema2({ hasChanges: { type: "boolean" } }, ["hasChanges"])
|
|
124877
|
+
numbering: objectSchema2({ hasChanges: { type: "boolean" } }, ["hasChanges"]),
|
|
124878
|
+
headerFooters: objectSchema2({ hasChanges: { type: "boolean" } }, ["hasChanges"]),
|
|
124879
|
+
parts: objectSchema2({ hasChanges: { type: "boolean" } }, ["hasChanges"])
|
|
124872
124880
|
}, [
|
|
124873
124881
|
"hasChanges",
|
|
124874
124882
|
"changedComponents",
|
|
124875
124883
|
"body",
|
|
124876
124884
|
"comments",
|
|
124877
124885
|
"styles",
|
|
124878
|
-
"numbering"
|
|
124886
|
+
"numbering",
|
|
124887
|
+
"headerFooters",
|
|
124888
|
+
"parts"
|
|
124879
124889
|
]);
|
|
124880
124890
|
diffSnapshotSchema2 = objectSchema2({
|
|
124881
124891
|
version: {
|
|
124882
124892
|
type: "string",
|
|
124883
|
-
|
|
124893
|
+
enum: ["sd-diff-snapshot/v1", "sd-diff-snapshot/v2"]
|
|
124884
124894
|
},
|
|
124885
124895
|
engine: {
|
|
124886
124896
|
type: "string",
|
|
@@ -124902,7 +124912,7 @@ var init_SuperConverter_DtIvNa0T_es = __esm(() => {
|
|
|
124902
124912
|
diffPayloadSchema2 = objectSchema2({
|
|
124903
124913
|
version: {
|
|
124904
124914
|
type: "string",
|
|
124905
|
-
|
|
124915
|
+
enum: ["sd-diff-payload/v1", "sd-diff-payload/v2"]
|
|
124906
124916
|
},
|
|
124907
124917
|
engine: {
|
|
124908
124918
|
type: "string",
|
|
@@ -128428,6 +128438,8 @@ var init_SuperConverter_DtIvNa0T_es = __esm(() => {
|
|
|
128428
128438
|
SUPPORTED_DELETE_NODE_TYPES2 = new Set(DELETABLE_BLOCK_NODE_TYPES2);
|
|
128429
128439
|
REJECTED_DELETE_NODE_TYPES2 = new Set(["tableRow", "tableCell"]);
|
|
128430
128440
|
VALID_BLOCK_NODE_TYPES3 = new Set(BLOCK_NODE_TYPES2);
|
|
128441
|
+
SNAPSHOT_VERSIONS2 = new Set(["sd-diff-snapshot/v1", "sd-diff-snapshot/v2"]);
|
|
128442
|
+
PAYLOAD_VERSIONS2 = new Set(["sd-diff-payload/v1", "sd-diff-payload/v2"]);
|
|
128431
128443
|
VALID_STYLE_OPTION_FLAGS2 = new Set([
|
|
128432
128444
|
"headerRow",
|
|
128433
128445
|
"lastRow",
|
|
@@ -172499,7 +172511,7 @@ var init_remark_gfm_CjV8kaUy_es = __esm(() => {
|
|
|
172499
172511
|
init_remark_gfm_z_sDF4ss_es();
|
|
172500
172512
|
});
|
|
172501
172513
|
|
|
172502
|
-
// ../../packages/superdoc/dist/chunks/src-
|
|
172514
|
+
// ../../packages/superdoc/dist/chunks/src-CxFOmQ5k.es.js
|
|
172503
172515
|
function deleteProps(obj, propOrProps) {
|
|
172504
172516
|
const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
|
|
172505
172517
|
const removeNested = (target, pathParts, index2 = 0) => {
|
|
@@ -190797,6 +190809,336 @@ function resolveCommentBodyNodeJSON(comment2) {
|
|
|
190797
190809
|
function isRecord$4(value) {
|
|
190798
190810
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
190799
190811
|
}
|
|
190812
|
+
function captureHeaderFooterState(editor) {
|
|
190813
|
+
return {
|
|
190814
|
+
parts: collectHeaderFooterParts(editor),
|
|
190815
|
+
slots: collectHeaderFooterSlots(editor)
|
|
190816
|
+
};
|
|
190817
|
+
}
|
|
190818
|
+
function diffHeaderFooters(oldState, newState, schema) {
|
|
190819
|
+
const previous3 = oldState ?? {
|
|
190820
|
+
parts: [],
|
|
190821
|
+
slots: []
|
|
190822
|
+
};
|
|
190823
|
+
const next2 = newState ?? {
|
|
190824
|
+
parts: [],
|
|
190825
|
+
slots: []
|
|
190826
|
+
};
|
|
190827
|
+
const previousParts = new Map(previous3.parts.map((part) => [part.refId, part]));
|
|
190828
|
+
const nextParts = new Map(next2.parts.map((part) => [part.refId, part]));
|
|
190829
|
+
const addedParts = [];
|
|
190830
|
+
const removedParts = [];
|
|
190831
|
+
const modifiedParts = [];
|
|
190832
|
+
for (const nextPart of next2.parts) {
|
|
190833
|
+
const previousPart = previousParts.get(nextPart.refId);
|
|
190834
|
+
if (!previousPart) {
|
|
190835
|
+
addedParts.push(structuredClone(nextPart));
|
|
190836
|
+
continue;
|
|
190837
|
+
}
|
|
190838
|
+
if (previousPart.kind !== nextPart.kind) {
|
|
190839
|
+
removedParts.push(structuredClone(previousPart));
|
|
190840
|
+
addedParts.push(structuredClone(nextPart));
|
|
190841
|
+
continue;
|
|
190842
|
+
}
|
|
190843
|
+
const oldDoc = schema.nodeFromJSON(previousPart.content);
|
|
190844
|
+
const newDoc = schema.nodeFromJSON(nextPart.content);
|
|
190845
|
+
const docDiffs = diffNodes(normalizeNodes(oldDoc), normalizeNodes(newDoc));
|
|
190846
|
+
if (docDiffs.length > 0 || previousPart.partPath !== nextPart.partPath)
|
|
190847
|
+
modifiedParts.push({
|
|
190848
|
+
refId: nextPart.refId,
|
|
190849
|
+
kind: nextPart.kind,
|
|
190850
|
+
oldPartPath: previousPart.partPath,
|
|
190851
|
+
partPath: nextPart.partPath,
|
|
190852
|
+
docDiffs
|
|
190853
|
+
});
|
|
190854
|
+
}
|
|
190855
|
+
for (const previousPart of previous3.parts)
|
|
190856
|
+
if (!nextParts.has(previousPart.refId))
|
|
190857
|
+
removedParts.push(structuredClone(previousPart));
|
|
190858
|
+
const previousSlots = new Map(previous3.slots.map((slot) => [slot.sectionId, slot]));
|
|
190859
|
+
const nextSlots = new Map(next2.slots.map((slot) => [slot.sectionId, slot]));
|
|
190860
|
+
const slotChanges = [];
|
|
190861
|
+
const sectionIds = new Set([...previousSlots.keys(), ...nextSlots.keys()]);
|
|
190862
|
+
for (const sectionId of sectionIds) {
|
|
190863
|
+
const previousSlot = previousSlots.get(sectionId);
|
|
190864
|
+
const nextSlot = nextSlots.get(sectionId) ?? createClearedSlotState(sectionId);
|
|
190865
|
+
if (!slotsEqual(previousSlot, nextSlot))
|
|
190866
|
+
slotChanges.push(structuredClone(nextSlot));
|
|
190867
|
+
}
|
|
190868
|
+
if (addedParts.length === 0 && removedParts.length === 0 && modifiedParts.length === 0 && slotChanges.length === 0)
|
|
190869
|
+
return null;
|
|
190870
|
+
return {
|
|
190871
|
+
addedParts,
|
|
190872
|
+
removedParts,
|
|
190873
|
+
modifiedParts,
|
|
190874
|
+
slotChanges
|
|
190875
|
+
};
|
|
190876
|
+
}
|
|
190877
|
+
function collectHeaderFooterParts(editor) {
|
|
190878
|
+
const parts = [];
|
|
190879
|
+
const partPaths = readHeaderFooterPartPaths(editor);
|
|
190880
|
+
for (const kind of PART_KINDS) {
|
|
190881
|
+
const source = kind === "header" ? editor.converter?.headers : editor.converter?.footers;
|
|
190882
|
+
if (!source)
|
|
190883
|
+
continue;
|
|
190884
|
+
for (const [refId, content3] of Object.entries(source)) {
|
|
190885
|
+
const partPath = partPaths.get(refId);
|
|
190886
|
+
if (!partPath || !content3 || typeof content3 !== "object")
|
|
190887
|
+
continue;
|
|
190888
|
+
parts.push({
|
|
190889
|
+
refId,
|
|
190890
|
+
kind,
|
|
190891
|
+
partPath,
|
|
190892
|
+
content: structuredClone(content3)
|
|
190893
|
+
});
|
|
190894
|
+
}
|
|
190895
|
+
}
|
|
190896
|
+
return parts.sort(compareParts);
|
|
190897
|
+
}
|
|
190898
|
+
function readHeaderFooterPartPaths(editor) {
|
|
190899
|
+
const result = /* @__PURE__ */ new Map;
|
|
190900
|
+
const relsRoot = editor.converter?.convertedXml?.["word/_rels/document.xml.rels"]?.elements?.find((entry) => entry.name === "Relationships");
|
|
190901
|
+
if (!relsRoot?.elements)
|
|
190902
|
+
return result;
|
|
190903
|
+
for (const entry of relsRoot.elements) {
|
|
190904
|
+
const type = entry.attributes?.Type;
|
|
190905
|
+
if (entry.name !== "Relationship" || type !== "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header" && type !== "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer")
|
|
190906
|
+
continue;
|
|
190907
|
+
const refId = entry.attributes?.Id;
|
|
190908
|
+
const target = entry.attributes?.Target;
|
|
190909
|
+
if (!refId || !target)
|
|
190910
|
+
continue;
|
|
190911
|
+
result.set(refId, normalizePartPath(target));
|
|
190912
|
+
}
|
|
190913
|
+
return result;
|
|
190914
|
+
}
|
|
190915
|
+
function normalizePartPath(target) {
|
|
190916
|
+
let normalized = target.replace(/^\.\//, "");
|
|
190917
|
+
if (normalized.startsWith("../"))
|
|
190918
|
+
normalized = normalized.slice(3);
|
|
190919
|
+
if (normalized.startsWith("/"))
|
|
190920
|
+
normalized = normalized.slice(1);
|
|
190921
|
+
if (!normalized.startsWith("word/"))
|
|
190922
|
+
normalized = `word/${normalized}`;
|
|
190923
|
+
return normalized;
|
|
190924
|
+
}
|
|
190925
|
+
function collectHeaderFooterSlots(editor) {
|
|
190926
|
+
const slots = [];
|
|
190927
|
+
for (const projection of resolveSectionProjections(editor)) {
|
|
190928
|
+
const sectPr = readTargetSectPr(editor, projection);
|
|
190929
|
+
const headerRefs = sectPr ? readSectPrHeaderFooterRefs(sectPr, "header") : undefined;
|
|
190930
|
+
const footerRefs = sectPr ? readSectPrHeaderFooterRefs(sectPr, "footer") : undefined;
|
|
190931
|
+
slots.push({
|
|
190932
|
+
sectionId: projection.sectionId,
|
|
190933
|
+
titlePg: projection.range.titlePg === true,
|
|
190934
|
+
header: {
|
|
190935
|
+
default: headerRefs?.default ?? null,
|
|
190936
|
+
first: headerRefs?.first ?? null,
|
|
190937
|
+
even: headerRefs?.even ?? null
|
|
190938
|
+
},
|
|
190939
|
+
footer: {
|
|
190940
|
+
default: footerRefs?.default ?? null,
|
|
190941
|
+
first: footerRefs?.first ?? null,
|
|
190942
|
+
even: footerRefs?.even ?? null
|
|
190943
|
+
}
|
|
190944
|
+
});
|
|
190945
|
+
}
|
|
190946
|
+
return slots.sort((a2, b$1) => a2.sectionId.localeCompare(b$1.sectionId));
|
|
190947
|
+
}
|
|
190948
|
+
function compareParts(a2, b$1) {
|
|
190949
|
+
if (a2.kind !== b$1.kind)
|
|
190950
|
+
return a2.kind.localeCompare(b$1.kind);
|
|
190951
|
+
return a2.refId.localeCompare(b$1.refId);
|
|
190952
|
+
}
|
|
190953
|
+
function createClearedSlotState(sectionId) {
|
|
190954
|
+
return {
|
|
190955
|
+
sectionId,
|
|
190956
|
+
titlePg: false,
|
|
190957
|
+
header: {
|
|
190958
|
+
default: null,
|
|
190959
|
+
first: null,
|
|
190960
|
+
even: null
|
|
190961
|
+
},
|
|
190962
|
+
footer: {
|
|
190963
|
+
default: null,
|
|
190964
|
+
first: null,
|
|
190965
|
+
even: null
|
|
190966
|
+
}
|
|
190967
|
+
};
|
|
190968
|
+
}
|
|
190969
|
+
function slotsEqual(previous3, next2) {
|
|
190970
|
+
if (!previous3)
|
|
190971
|
+
return false;
|
|
190972
|
+
if (previous3.titlePg !== next2.titlePg)
|
|
190973
|
+
return false;
|
|
190974
|
+
for (const variant of SLOT_VARIANTS) {
|
|
190975
|
+
if (previous3.header[variant] !== next2.header[variant])
|
|
190976
|
+
return false;
|
|
190977
|
+
if (previous3.footer[variant] !== next2.footer[variant])
|
|
190978
|
+
return false;
|
|
190979
|
+
}
|
|
190980
|
+
return true;
|
|
190981
|
+
}
|
|
190982
|
+
function toRelsPathForPart2(partPath) {
|
|
190983
|
+
if (partPath === DOCUMENT_RELS_PATH$2 || partPath.endsWith(".rels"))
|
|
190984
|
+
return null;
|
|
190985
|
+
const lastSlash = partPath.lastIndexOf("/");
|
|
190986
|
+
if (lastSlash < 0 || lastSlash === partPath.length - 1)
|
|
190987
|
+
return null;
|
|
190988
|
+
return `${partPath.slice(0, lastSlash)}/_rels/${partPath.slice(lastSlash + 1)}.rels`;
|
|
190989
|
+
}
|
|
190990
|
+
function capturePartsState(editor, headerFooters) {
|
|
190991
|
+
const convertedXml = editor.converter?.convertedXml ?? {};
|
|
190992
|
+
const mediaStore = getMediaStore(editor);
|
|
190993
|
+
const headerFooterClosures = {};
|
|
190994
|
+
for (const part of headerFooters?.parts ?? [])
|
|
190995
|
+
headerFooterClosures[part.refId] = {
|
|
190996
|
+
refId: part.refId,
|
|
190997
|
+
kind: part.kind,
|
|
190998
|
+
partPath: part.partPath,
|
|
190999
|
+
parts: collectPartClosure(part.partPath, convertedXml, mediaStore)
|
|
191000
|
+
};
|
|
191001
|
+
return {
|
|
191002
|
+
bodyClosure: collectBodyClosure(convertedXml, mediaStore),
|
|
191003
|
+
headerFooterClosures
|
|
191004
|
+
};
|
|
191005
|
+
}
|
|
191006
|
+
function diffParts(previousPartsState, nextPartsState) {
|
|
191007
|
+
if (!previousPartsState || !nextPartsState)
|
|
191008
|
+
return null;
|
|
191009
|
+
const upserts = {};
|
|
191010
|
+
const deletes = /* @__PURE__ */ new Set;
|
|
191011
|
+
const nextReachablePartPaths = collectReachablePartPaths(nextPartsState);
|
|
191012
|
+
const previousOwnedParts = collectOwnedParts(previousPartsState);
|
|
191013
|
+
const nextOwnedParts = collectOwnedParts(nextPartsState);
|
|
191014
|
+
for (const [partPath, snapshot2] of Object.entries(nextOwnedParts)) {
|
|
191015
|
+
const previous3 = previousOwnedParts[partPath];
|
|
191016
|
+
if (!previous3 || !partSnapshotsEqual(previous3, snapshot2))
|
|
191017
|
+
upserts[partPath] = structuredClone(snapshot2);
|
|
191018
|
+
}
|
|
191019
|
+
for (const partPath of Object.keys(previousOwnedParts))
|
|
191020
|
+
if (!(partPath in nextOwnedParts) && !(partPath in upserts) && !nextReachablePartPaths.has(partPath))
|
|
191021
|
+
deletes.add(partPath);
|
|
191022
|
+
if (Object.keys(upserts).length === 0 && deletes.size === 0)
|
|
191023
|
+
return null;
|
|
191024
|
+
return {
|
|
191025
|
+
upserts,
|
|
191026
|
+
deletes: [...deletes].sort()
|
|
191027
|
+
};
|
|
191028
|
+
}
|
|
191029
|
+
function collectOwnedParts(partsState) {
|
|
191030
|
+
const owned = {};
|
|
191031
|
+
addOwnedPartsFromClosure(owned, partsState.bodyClosure);
|
|
191032
|
+
for (const closure of Object.values(partsState.headerFooterClosures))
|
|
191033
|
+
addOwnedPartsFromClosure(owned, closure.parts, closure.partPath);
|
|
191034
|
+
return owned;
|
|
191035
|
+
}
|
|
191036
|
+
function addOwnedPartsFromClosure(target, closure, semanticRootPath) {
|
|
191037
|
+
for (const [partPath, snapshot2] of Object.entries(closure)) {
|
|
191038
|
+
if (isSemanticOwnedPart(partPath, semanticRootPath))
|
|
191039
|
+
continue;
|
|
191040
|
+
target[partPath] = snapshot2;
|
|
191041
|
+
}
|
|
191042
|
+
}
|
|
191043
|
+
function isSemanticOwnedPart(partPath, headerFooterRootPath) {
|
|
191044
|
+
if (partPath === "word/document.xml" || partPath === "word/styles.xml" || partPath === "word/numbering.xml")
|
|
191045
|
+
return true;
|
|
191046
|
+
if (headerFooterRootPath && partPath === headerFooterRootPath)
|
|
191047
|
+
return true;
|
|
191048
|
+
return false;
|
|
191049
|
+
}
|
|
191050
|
+
function collectReachablePartPaths(partsState) {
|
|
191051
|
+
const reachable = /* @__PURE__ */ new Set;
|
|
191052
|
+
for (const partPath of Object.keys(partsState?.bodyClosure ?? {}))
|
|
191053
|
+
reachable.add(partPath);
|
|
191054
|
+
for (const closure of Object.values(partsState?.headerFooterClosures ?? {}))
|
|
191055
|
+
for (const partPath of Object.keys(closure.parts))
|
|
191056
|
+
reachable.add(partPath);
|
|
191057
|
+
return reachable;
|
|
191058
|
+
}
|
|
191059
|
+
function getMediaStore(editor) {
|
|
191060
|
+
return {
|
|
191061
|
+
...editor.options?.mediaFiles ?? {},
|
|
191062
|
+
...editor.storage?.image?.media ?? {}
|
|
191063
|
+
};
|
|
191064
|
+
}
|
|
191065
|
+
function collectPartClosure(partPath, convertedXml, mediaStore) {
|
|
191066
|
+
const snapshots = {};
|
|
191067
|
+
collectPartAndDependencies(partPath, convertedXml, mediaStore, snapshots, /* @__PURE__ */ new Set);
|
|
191068
|
+
return snapshots;
|
|
191069
|
+
}
|
|
191070
|
+
function collectBodyClosure(convertedXml, mediaStore) {
|
|
191071
|
+
const relsPart = convertedXml[DOCUMENT_RELS_PATH$1];
|
|
191072
|
+
if (!relsPart || typeof relsPart !== "object")
|
|
191073
|
+
return {};
|
|
191074
|
+
const snapshots = { [DOCUMENT_RELS_PATH$1]: {
|
|
191075
|
+
kind: "xml",
|
|
191076
|
+
content: structuredClone(relsPart)
|
|
191077
|
+
} };
|
|
191078
|
+
const visited = new Set([DOCUMENT_RELS_PATH$1]);
|
|
191079
|
+
for (const relationship of readRelationships(relsPart)) {
|
|
191080
|
+
if (!shouldCaptureBodyRelationship(String(relationship.attributes?.Type ?? "")))
|
|
191081
|
+
continue;
|
|
191082
|
+
if (String(relationship.attributes?.TargetMode ?? "") === "External")
|
|
191083
|
+
continue;
|
|
191084
|
+
const targetPath = resolveOpcTargetPath(String(relationship.attributes?.Target ?? ""), "word");
|
|
191085
|
+
if (!targetPath)
|
|
191086
|
+
continue;
|
|
191087
|
+
collectPartAndDependencies(targetPath, convertedXml, mediaStore, snapshots, visited);
|
|
191088
|
+
}
|
|
191089
|
+
return snapshots;
|
|
191090
|
+
}
|
|
191091
|
+
function collectPartAndDependencies(partPath, convertedXml, mediaStore, snapshots, visited) {
|
|
191092
|
+
if (visited.has(partPath))
|
|
191093
|
+
return;
|
|
191094
|
+
visited.add(partPath);
|
|
191095
|
+
const xmlPart = convertedXml[partPath];
|
|
191096
|
+
if (xmlPart && typeof xmlPart === "object")
|
|
191097
|
+
snapshots[partPath] = {
|
|
191098
|
+
kind: "xml",
|
|
191099
|
+
content: structuredClone(xmlPart)
|
|
191100
|
+
};
|
|
191101
|
+
else if (partPath in mediaStore) {
|
|
191102
|
+
snapshots[partPath] = {
|
|
191103
|
+
kind: "binary",
|
|
191104
|
+
content: structuredClone(mediaStore[partPath])
|
|
191105
|
+
};
|
|
191106
|
+
return;
|
|
191107
|
+
} else
|
|
191108
|
+
return;
|
|
191109
|
+
const relsPath = toRelsPathForPart2(partPath);
|
|
191110
|
+
const relsPart = relsPath ? convertedXml[relsPath] : undefined;
|
|
191111
|
+
if (!relsPath || !relsPart || typeof relsPart !== "object")
|
|
191112
|
+
return;
|
|
191113
|
+
snapshots[relsPath] = {
|
|
191114
|
+
kind: "xml",
|
|
191115
|
+
content: structuredClone(relsPart)
|
|
191116
|
+
};
|
|
191117
|
+
const relationships = readRelationships(relsPart);
|
|
191118
|
+
const baseDir = getPartBaseDir(partPath);
|
|
191119
|
+
for (const relationship of relationships) {
|
|
191120
|
+
if (String(relationship.attributes?.TargetMode ?? "") === "External")
|
|
191121
|
+
continue;
|
|
191122
|
+
const targetPath = resolveOpcTargetPath(String(relationship.attributes?.Target ?? ""), baseDir);
|
|
191123
|
+
if (!targetPath)
|
|
191124
|
+
continue;
|
|
191125
|
+
collectPartAndDependencies(targetPath, convertedXml, mediaStore, snapshots, visited);
|
|
191126
|
+
}
|
|
191127
|
+
}
|
|
191128
|
+
function readRelationships(relsPart) {
|
|
191129
|
+
const root3 = relsPart?.elements?.find((entry) => entry.name === "Relationships");
|
|
191130
|
+
return Array.isArray(root3?.elements) ? root3.elements : [];
|
|
191131
|
+
}
|
|
191132
|
+
function getPartBaseDir(partPath) {
|
|
191133
|
+
const lastSlash = partPath.lastIndexOf("/");
|
|
191134
|
+
return lastSlash >= 0 ? partPath.slice(0, lastSlash) : "";
|
|
191135
|
+
}
|
|
191136
|
+
function shouldCaptureBodyRelationship(type) {
|
|
191137
|
+
return !BODY_RELATIONSHIP_EXCLUSIONS.has(type);
|
|
191138
|
+
}
|
|
191139
|
+
function partSnapshotsEqual(a2, b$1) {
|
|
191140
|
+
return a2.kind === b$1.kind && JSON.stringify(a2.content) === JSON.stringify(b$1.content);
|
|
191141
|
+
}
|
|
190800
191142
|
function hasOwnStyle(styleMap, styleId) {
|
|
190801
191143
|
return Object.prototype.hasOwnProperty.call(styleMap, styleId);
|
|
190802
191144
|
}
|
|
@@ -190833,12 +191175,17 @@ function diffStyles(oldStyles, newStyles) {
|
|
|
190833
191175
|
function diffNumbering(oldNumbering, newNumbering) {
|
|
190834
191176
|
return getAttributesDiff(oldNumbering ?? {}, newNumbering ?? {});
|
|
190835
191177
|
}
|
|
190836
|
-
function computeDiff(oldPmDoc, newPmDoc, schema, oldComments = [], newComments = [], oldStyles = null, newStyles = null, oldNumbering = null, newNumbering = null) {
|
|
191178
|
+
function computeDiff(oldPmDoc, newPmDoc, schema, oldComments = [], newComments = [], oldStyles = null, newStyles = null, oldNumbering = null, newNumbering = null, oldHeaderFooters = null, newHeaderFooters = null, oldPartsState = null, newPartsState = null) {
|
|
191179
|
+
const docDiffs = diffNodes(normalizeNodes(oldPmDoc), normalizeNodes(newPmDoc));
|
|
191180
|
+
const headerFootersDiff = diffHeaderFooters(oldHeaderFooters, newHeaderFooters, schema);
|
|
191181
|
+
const partsDiff = oldPartsState && newPartsState ? diffParts(oldPartsState, newPartsState) : null;
|
|
190837
191182
|
return {
|
|
190838
|
-
docDiffs
|
|
191183
|
+
docDiffs,
|
|
190839
191184
|
commentDiffs: diffComments(oldComments, newComments, schema),
|
|
190840
191185
|
stylesDiff: diffStyles(oldStyles, newStyles),
|
|
190841
|
-
numberingDiff: diffNumbering(oldNumbering, newNumbering)
|
|
191186
|
+
numberingDiff: diffNumbering(oldNumbering, newNumbering),
|
|
191187
|
+
headerFootersDiff,
|
|
191188
|
+
partsDiff
|
|
190842
191189
|
};
|
|
190843
191190
|
}
|
|
190844
191191
|
function replayNonParagraphDiff({ tr, diff, schema }) {
|
|
@@ -191687,7 +192034,514 @@ function replayNumbering({ numberingDiff, editor }) {
|
|
|
191687
192034
|
result.applied += 1;
|
|
191688
192035
|
return result;
|
|
191689
192036
|
}
|
|
191690
|
-
function
|
|
192037
|
+
function replayHeaderFooters({ tr, headerFootersDiff, schema, editor, trackedChangesRequested = false }) {
|
|
192038
|
+
const result = {
|
|
192039
|
+
applied: 0,
|
|
192040
|
+
skipped: 0,
|
|
192041
|
+
warnings: []
|
|
192042
|
+
};
|
|
192043
|
+
if (!headerFootersDiff)
|
|
192044
|
+
return result;
|
|
192045
|
+
if (!editor?.converter) {
|
|
192046
|
+
result.skipped += 1;
|
|
192047
|
+
result.warnings.push("Header/footer replay skipped: editor converter is unavailable.");
|
|
192048
|
+
return result;
|
|
192049
|
+
}
|
|
192050
|
+
if (trackedChangesRequested)
|
|
192051
|
+
result.warnings.push("Header/footer replay applied directly because tracked header/footer replay is not supported.");
|
|
192052
|
+
ensureHeaderFooterCollections(editor.converter);
|
|
192053
|
+
for (const part of headerFootersDiff.addedParts) {
|
|
192054
|
+
createHeaderFooterPart$1(editor.converter, schema, part);
|
|
192055
|
+
result.applied += 1;
|
|
192056
|
+
}
|
|
192057
|
+
for (const part of headerFootersDiff.modifiedParts) {
|
|
192058
|
+
if (applyHeaderFooterPartContent(editor.converter, schema, part.refId, part.kind, part.oldPartPath, part.partPath, part.docDiffs)) {
|
|
192059
|
+
result.applied += 1;
|
|
192060
|
+
continue;
|
|
192061
|
+
}
|
|
192062
|
+
result.skipped += 1;
|
|
192063
|
+
result.warnings.push(`Header/footer replay skipped for "${part.refId}": stored part content was not found.`);
|
|
192064
|
+
}
|
|
192065
|
+
let slotChangesApplied = 0;
|
|
192066
|
+
for (const slot of headerFootersDiff.slotChanges) {
|
|
192067
|
+
if (applyHeaderFooterSlotChange(tr, editor, slot)) {
|
|
192068
|
+
result.applied += 1;
|
|
192069
|
+
slotChangesApplied += 1;
|
|
192070
|
+
continue;
|
|
192071
|
+
}
|
|
192072
|
+
result.skipped += 1;
|
|
192073
|
+
result.warnings.push(`Header/footer replay skipped for section "${slot.sectionId}": section projection was not found.`);
|
|
192074
|
+
}
|
|
192075
|
+
if (slotChangesApplied > 0)
|
|
192076
|
+
syncTitlePageCache(tr, editor);
|
|
192077
|
+
for (const part of headerFootersDiff.removedParts) {
|
|
192078
|
+
deleteHeaderFooterPart(editor.converter, part);
|
|
192079
|
+
result.applied += 1;
|
|
192080
|
+
}
|
|
192081
|
+
if (result.applied > 0) {
|
|
192082
|
+
tr.setMeta("forceUpdatePagination", true);
|
|
192083
|
+
editor.converter.headerFooterModified = true;
|
|
192084
|
+
editor.converter.documentModified = true;
|
|
192085
|
+
const changedParts = [];
|
|
192086
|
+
if (headerFootersDiff.addedParts.length > 0 || headerFootersDiff.removedParts.length > 0 || headerFootersDiff.slotChanges.length > 0)
|
|
192087
|
+
changedParts.push({
|
|
192088
|
+
partId: "word/_rels/document.xml.rels",
|
|
192089
|
+
operation: "mutate",
|
|
192090
|
+
changedPaths: []
|
|
192091
|
+
});
|
|
192092
|
+
for (const part of headerFootersDiff.addedParts)
|
|
192093
|
+
changedParts.push({
|
|
192094
|
+
partId: part.partPath,
|
|
192095
|
+
sectionId: part.refId,
|
|
192096
|
+
operation: "create",
|
|
192097
|
+
changedPaths: []
|
|
192098
|
+
});
|
|
192099
|
+
for (const part of headerFootersDiff.modifiedParts) {
|
|
192100
|
+
if (part.oldPartPath !== part.partPath) {
|
|
192101
|
+
changedParts.push({
|
|
192102
|
+
partId: part.oldPartPath,
|
|
192103
|
+
sectionId: part.refId,
|
|
192104
|
+
operation: "delete",
|
|
192105
|
+
changedPaths: []
|
|
192106
|
+
});
|
|
192107
|
+
changedParts.push({
|
|
192108
|
+
partId: part.partPath,
|
|
192109
|
+
sectionId: part.refId,
|
|
192110
|
+
operation: "create",
|
|
192111
|
+
changedPaths: []
|
|
192112
|
+
});
|
|
192113
|
+
continue;
|
|
192114
|
+
}
|
|
192115
|
+
changedParts.push({
|
|
192116
|
+
partId: part.partPath,
|
|
192117
|
+
sectionId: part.refId,
|
|
192118
|
+
operation: "mutate",
|
|
192119
|
+
changedPaths: []
|
|
192120
|
+
});
|
|
192121
|
+
}
|
|
192122
|
+
for (const part of headerFootersDiff.removedParts)
|
|
192123
|
+
changedParts.push({
|
|
192124
|
+
partId: part.partPath,
|
|
192125
|
+
sectionId: part.refId,
|
|
192126
|
+
operation: "delete",
|
|
192127
|
+
changedPaths: []
|
|
192128
|
+
});
|
|
192129
|
+
editor.emit?.("partChanged", {
|
|
192130
|
+
parts: changedParts,
|
|
192131
|
+
source: "diff-replay"
|
|
192132
|
+
});
|
|
192133
|
+
}
|
|
192134
|
+
return result;
|
|
192135
|
+
}
|
|
192136
|
+
function ensureHeaderFooterCollections(converter) {
|
|
192137
|
+
if (!converter.headers)
|
|
192138
|
+
converter.headers = {};
|
|
192139
|
+
if (!converter.footers)
|
|
192140
|
+
converter.footers = {};
|
|
192141
|
+
if (!converter.headerIds)
|
|
192142
|
+
converter.headerIds = {};
|
|
192143
|
+
if (!converter.footerIds)
|
|
192144
|
+
converter.footerIds = {};
|
|
192145
|
+
if (!converter.convertedXml)
|
|
192146
|
+
converter.convertedXml = {};
|
|
192147
|
+
}
|
|
192148
|
+
function createHeaderFooterPart$1(converter, schema, part) {
|
|
192149
|
+
const partCollection = part.kind === "header" ? converter.headers : converter.footers;
|
|
192150
|
+
partCollection[part.refId] = structuredClone(part.content);
|
|
192151
|
+
const variantIds = part.kind === "header" ? converter.headerIds : converter.footerIds;
|
|
192152
|
+
if (!Array.isArray(variantIds.ids))
|
|
192153
|
+
variantIds.ids = [];
|
|
192154
|
+
if (!variantIds.ids.includes(part.refId))
|
|
192155
|
+
variantIds.ids.push(part.refId);
|
|
192156
|
+
upsertRelationshipEntry(converter.convertedXml, part);
|
|
192157
|
+
ensureXmlPartExists(converter.convertedXml, part);
|
|
192158
|
+
syncHeaderFooterPartXml(converter, schema, part.kind, part.refId, part.content);
|
|
192159
|
+
}
|
|
192160
|
+
function applyHeaderFooterPartContent(converter, schema, refId, kind, oldPartPath, partPath, docDiffs) {
|
|
192161
|
+
const collection = kind === "header" ? converter.headers : converter.footers;
|
|
192162
|
+
const currentJson = collection[refId];
|
|
192163
|
+
if (!currentJson || typeof currentJson !== "object")
|
|
192164
|
+
return false;
|
|
192165
|
+
let nextJson = currentJson;
|
|
192166
|
+
if (docDiffs.length > 0) {
|
|
192167
|
+
const partTr = EditorState.create({
|
|
192168
|
+
schema,
|
|
192169
|
+
doc: schema.nodeFromJSON(currentJson)
|
|
192170
|
+
}).tr;
|
|
192171
|
+
if (replayDocDiffs({
|
|
192172
|
+
tr: partTr,
|
|
192173
|
+
docDiffs,
|
|
192174
|
+
schema
|
|
192175
|
+
}).skipped > 0)
|
|
192176
|
+
return false;
|
|
192177
|
+
nextJson = partTr.doc.toJSON();
|
|
192178
|
+
collection[refId] = nextJson;
|
|
192179
|
+
}
|
|
192180
|
+
updateHeaderFooterPartPath(converter, {
|
|
192181
|
+
refId,
|
|
192182
|
+
kind,
|
|
192183
|
+
oldPartPath,
|
|
192184
|
+
partPath
|
|
192185
|
+
});
|
|
192186
|
+
syncHeaderFooterPartXml(converter, schema, kind, refId, nextJson);
|
|
192187
|
+
return true;
|
|
192188
|
+
}
|
|
192189
|
+
function applyHeaderFooterSlotChange(tr, editor, slot) {
|
|
192190
|
+
const projectionEditor = {
|
|
192191
|
+
...editor,
|
|
192192
|
+
state: {
|
|
192193
|
+
...editor.state,
|
|
192194
|
+
doc: tr.doc
|
|
192195
|
+
}
|
|
192196
|
+
};
|
|
192197
|
+
const projection = resolveSectionProjections(projectionEditor).find((entry) => entry.sectionId === slot.sectionId);
|
|
192198
|
+
if (!projection)
|
|
192199
|
+
return false;
|
|
192200
|
+
const nextSectPr = ensureSectPrElement(readTargetSectPr(projectionEditor, projection));
|
|
192201
|
+
writeSectPrTitlePage(nextSectPr, slot.titlePg);
|
|
192202
|
+
applySlotRefs(nextSectPr, "header", slot.header);
|
|
192203
|
+
applySlotRefs(nextSectPr, "footer", slot.footer);
|
|
192204
|
+
syncVariantIdCaches(editor.converter, slot);
|
|
192205
|
+
if (projection.target.kind === "paragraph") {
|
|
192206
|
+
const paragraph2 = tr.doc.nodeAt(projection.target.pos);
|
|
192207
|
+
if (!paragraph2)
|
|
192208
|
+
return false;
|
|
192209
|
+
const attrs = paragraph2.attrs ?? {};
|
|
192210
|
+
const nextAttrs = {
|
|
192211
|
+
...attrs,
|
|
192212
|
+
paragraphProperties: {
|
|
192213
|
+
...attrs.paragraphProperties ?? {},
|
|
192214
|
+
sectPr: nextSectPr
|
|
192215
|
+
},
|
|
192216
|
+
pageBreakSource: "sectPr",
|
|
192217
|
+
sectionMargins: readSectPrMargins(nextSectPr)
|
|
192218
|
+
};
|
|
192219
|
+
tr.setNodeMarkup(projection.target.pos, undefined, nextAttrs, paragraph2.marks);
|
|
192220
|
+
return true;
|
|
192221
|
+
}
|
|
192222
|
+
tr.setDocAttribute("bodySectPr", nextSectPr);
|
|
192223
|
+
syncBodySectPrConverterCache(editor.converter, nextSectPr);
|
|
192224
|
+
return true;
|
|
192225
|
+
}
|
|
192226
|
+
function applySlotRefs(sectPr, kind, refs) {
|
|
192227
|
+
for (const variant of SLOT_VARIANTS) {
|
|
192228
|
+
clearSectPrHeaderFooterRef(sectPr, kind, variant);
|
|
192229
|
+
if (refs[variant])
|
|
192230
|
+
setSectPrHeaderFooterRef(sectPr, kind, variant, refs[variant]);
|
|
192231
|
+
}
|
|
192232
|
+
}
|
|
192233
|
+
function syncVariantIdCaches(converter, slot) {
|
|
192234
|
+
const headerIds = converter.headerIds ??= {};
|
|
192235
|
+
const footerIds = converter.footerIds ??= {};
|
|
192236
|
+
for (const variant of SLOT_VARIANTS) {
|
|
192237
|
+
headerIds[variant] = slot.header[variant] ?? null;
|
|
192238
|
+
footerIds[variant] = slot.footer[variant] ?? null;
|
|
192239
|
+
}
|
|
192240
|
+
}
|
|
192241
|
+
function syncBodySectPrConverterCache(converter, sectPr) {
|
|
192242
|
+
converter.bodySectPr = cloneXmlElement(sectPr);
|
|
192243
|
+
const savedBodyNode = converter.savedTagsToRestore?.find((entry) => entry?.name === "w:body");
|
|
192244
|
+
if (!savedBodyNode || !Array.isArray(savedBodyNode.elements))
|
|
192245
|
+
return;
|
|
192246
|
+
const preservedChildren = savedBodyNode.elements.filter((entry) => entry?.name !== "w:sectPr");
|
|
192247
|
+
preservedChildren.push(cloneXmlElement(sectPr));
|
|
192248
|
+
savedBodyNode.elements = preservedChildren;
|
|
192249
|
+
}
|
|
192250
|
+
function syncTitlePageCache(tr, editor) {
|
|
192251
|
+
if (!editor.converter)
|
|
192252
|
+
return;
|
|
192253
|
+
if (!editor.converter.headerIds)
|
|
192254
|
+
editor.converter.headerIds = {};
|
|
192255
|
+
if (!editor.converter.footerIds)
|
|
192256
|
+
editor.converter.footerIds = {};
|
|
192257
|
+
const hasTitlePage = resolveSectionProjections({
|
|
192258
|
+
...editor,
|
|
192259
|
+
state: {
|
|
192260
|
+
...editor.state,
|
|
192261
|
+
doc: tr.doc
|
|
192262
|
+
}
|
|
192263
|
+
}).some((entry) => entry.range.titlePg === true);
|
|
192264
|
+
editor.converter.headerIds.titlePg = hasTitlePage;
|
|
192265
|
+
editor.converter.footerIds.titlePg = hasTitlePage;
|
|
192266
|
+
}
|
|
192267
|
+
function deleteHeaderFooterPart(converter, part) {
|
|
192268
|
+
const collection = part.kind === "header" ? converter.headers : converter.footers;
|
|
192269
|
+
delete collection[part.refId];
|
|
192270
|
+
const variantIds = part.kind === "header" ? converter.headerIds : converter.footerIds;
|
|
192271
|
+
if (Array.isArray(variantIds.ids))
|
|
192272
|
+
variantIds.ids = variantIds.ids.filter((value) => value !== part.refId);
|
|
192273
|
+
for (const key$1 of [
|
|
192274
|
+
"default",
|
|
192275
|
+
"first",
|
|
192276
|
+
"even",
|
|
192277
|
+
"odd"
|
|
192278
|
+
])
|
|
192279
|
+
if (variantIds[key$1] === part.refId)
|
|
192280
|
+
variantIds[key$1] = null;
|
|
192281
|
+
removeRelationshipEntry(converter.convertedXml, part.refId);
|
|
192282
|
+
delete converter.convertedXml[part.partPath];
|
|
192283
|
+
const relsPath = toRelsPathForPart2(part.partPath);
|
|
192284
|
+
if (relsPath)
|
|
192285
|
+
delete converter.convertedXml[relsPath];
|
|
192286
|
+
}
|
|
192287
|
+
function updateHeaderFooterPartPath(converter, part) {
|
|
192288
|
+
upsertRelationshipEntry(converter.convertedXml, {
|
|
192289
|
+
refId: part.refId,
|
|
192290
|
+
kind: part.kind,
|
|
192291
|
+
partPath: part.partPath,
|
|
192292
|
+
content: {
|
|
192293
|
+
type: "doc",
|
|
192294
|
+
content: []
|
|
192295
|
+
}
|
|
192296
|
+
});
|
|
192297
|
+
if (part.oldPartPath === part.partPath) {
|
|
192298
|
+
ensureXmlPartExists(converter.convertedXml, {
|
|
192299
|
+
refId: part.refId,
|
|
192300
|
+
kind: part.kind,
|
|
192301
|
+
partPath: part.partPath,
|
|
192302
|
+
content: {
|
|
192303
|
+
type: "doc",
|
|
192304
|
+
content: []
|
|
192305
|
+
}
|
|
192306
|
+
});
|
|
192307
|
+
return;
|
|
192308
|
+
}
|
|
192309
|
+
const previousXml = converter.convertedXml[part.oldPartPath];
|
|
192310
|
+
if (previousXml) {
|
|
192311
|
+
converter.convertedXml[part.partPath] = previousXml;
|
|
192312
|
+
delete converter.convertedXml[part.oldPartPath];
|
|
192313
|
+
} else
|
|
192314
|
+
ensureXmlPartExists(converter.convertedXml, {
|
|
192315
|
+
refId: part.refId,
|
|
192316
|
+
kind: part.kind,
|
|
192317
|
+
partPath: part.partPath,
|
|
192318
|
+
content: {
|
|
192319
|
+
type: "doc",
|
|
192320
|
+
content: []
|
|
192321
|
+
}
|
|
192322
|
+
});
|
|
192323
|
+
const oldRelsPath = toRelsPathForPart2(part.oldPartPath);
|
|
192324
|
+
const nextRelsPath = toRelsPathForPart2(part.partPath);
|
|
192325
|
+
if (oldRelsPath && nextRelsPath && oldRelsPath !== nextRelsPath) {
|
|
192326
|
+
const previousRels = converter.convertedXml[oldRelsPath];
|
|
192327
|
+
if (previousRels) {
|
|
192328
|
+
converter.convertedXml[nextRelsPath] = previousRels;
|
|
192329
|
+
delete converter.convertedXml[oldRelsPath];
|
|
192330
|
+
}
|
|
192331
|
+
}
|
|
192332
|
+
}
|
|
192333
|
+
function upsertRelationshipEntry(convertedXml, part) {
|
|
192334
|
+
const relsRoot = ensureRelationshipsRoot(convertedXml);
|
|
192335
|
+
const target = part.partPath.replace(/^word\//, "");
|
|
192336
|
+
const type = part.kind === "header" ? HEADER_RELATIONSHIP_TYPE$2 : FOOTER_RELATIONSHIP_TYPE$2;
|
|
192337
|
+
const existing = relsRoot.elements.find((entry) => entry.name === "Relationship" && entry.attributes?.Id === part.refId);
|
|
192338
|
+
if (existing) {
|
|
192339
|
+
existing.attributes = {
|
|
192340
|
+
...existing.attributes ?? {},
|
|
192341
|
+
Id: part.refId,
|
|
192342
|
+
Type: type,
|
|
192343
|
+
Target: target
|
|
192344
|
+
};
|
|
192345
|
+
return;
|
|
192346
|
+
}
|
|
192347
|
+
relsRoot.elements.push({
|
|
192348
|
+
name: "Relationship",
|
|
192349
|
+
attributes: {
|
|
192350
|
+
Id: part.refId,
|
|
192351
|
+
Type: type,
|
|
192352
|
+
Target: target
|
|
192353
|
+
},
|
|
192354
|
+
elements: []
|
|
192355
|
+
});
|
|
192356
|
+
}
|
|
192357
|
+
function removeRelationshipEntry(convertedXml, refId) {
|
|
192358
|
+
const relsRoot = convertedXml["word/_rels/document.xml.rels"]?.elements?.find((entry) => entry.name === "Relationships");
|
|
192359
|
+
if (!relsRoot?.elements)
|
|
192360
|
+
return;
|
|
192361
|
+
relsRoot.elements = relsRoot.elements.filter((entry) => !(entry.name === "Relationship" && entry.attributes?.Id === refId));
|
|
192362
|
+
}
|
|
192363
|
+
function ensureXmlPartExists(convertedXml, part) {
|
|
192364
|
+
if (convertedXml[part.partPath])
|
|
192365
|
+
return;
|
|
192366
|
+
convertedXml[part.partPath] = {
|
|
192367
|
+
type: "element",
|
|
192368
|
+
name: "document",
|
|
192369
|
+
elements: [{
|
|
192370
|
+
type: "element",
|
|
192371
|
+
name: part.kind === "header" ? "w:hdr" : "w:ftr",
|
|
192372
|
+
attributes: getHeaderFooterRootAttributes(convertedXml, part.kind),
|
|
192373
|
+
elements: []
|
|
192374
|
+
}]
|
|
192375
|
+
};
|
|
192376
|
+
}
|
|
192377
|
+
function syncHeaderFooterPartXml(converter, schema, kind, refId, content3) {
|
|
192378
|
+
const partPath = findPartPathByRefId(converter.convertedXml, refId);
|
|
192379
|
+
if (!partPath)
|
|
192380
|
+
return;
|
|
192381
|
+
ensureXmlPartExists(converter.convertedXml, {
|
|
192382
|
+
refId,
|
|
192383
|
+
kind,
|
|
192384
|
+
partPath,
|
|
192385
|
+
content: {
|
|
192386
|
+
type: "doc",
|
|
192387
|
+
content: []
|
|
192388
|
+
}
|
|
192389
|
+
});
|
|
192390
|
+
const exported = converter.exportToXmlJson?.({
|
|
192391
|
+
data: content3,
|
|
192392
|
+
editor: {
|
|
192393
|
+
schema,
|
|
192394
|
+
getUpdatedJson: () => content3
|
|
192395
|
+
},
|
|
192396
|
+
editorSchema: schema,
|
|
192397
|
+
isHeaderFooter: true,
|
|
192398
|
+
comments: [],
|
|
192399
|
+
commentDefinitions: []
|
|
192400
|
+
});
|
|
192401
|
+
const root3 = converter.convertedXml[partPath];
|
|
192402
|
+
if (!root3?.elements?.[0])
|
|
192403
|
+
return;
|
|
192404
|
+
root3.elements[0].attributes = {
|
|
192405
|
+
...getHeaderFooterRootAttributes(converter.convertedXml, kind),
|
|
192406
|
+
...root3.elements[0].attributes ?? {}
|
|
192407
|
+
};
|
|
192408
|
+
if (exported?.result?.elements?.[0]?.elements)
|
|
192409
|
+
root3.elements[0].elements = exported.result.elements[0].elements;
|
|
192410
|
+
}
|
|
192411
|
+
function getHeaderFooterRootAttributes(convertedXml, kind) {
|
|
192412
|
+
const existingAttributes = findExistingHeaderFooterRootAttributes(convertedXml, kind);
|
|
192413
|
+
return {
|
|
192414
|
+
...DEFAULT_DOCX_DEFS,
|
|
192415
|
+
...existingAttributes ?? {}
|
|
192416
|
+
};
|
|
192417
|
+
}
|
|
192418
|
+
function findExistingHeaderFooterRootAttributes(convertedXml, kind) {
|
|
192419
|
+
const rootName = kind === "header" ? "w:hdr" : "w:ftr";
|
|
192420
|
+
for (const value of Object.values(convertedXml)) {
|
|
192421
|
+
const root3 = value?.elements?.[0];
|
|
192422
|
+
if (root3?.name !== rootName || !root3.attributes)
|
|
192423
|
+
continue;
|
|
192424
|
+
return root3.attributes;
|
|
192425
|
+
}
|
|
192426
|
+
return null;
|
|
192427
|
+
}
|
|
192428
|
+
function findPartPathByRefId(convertedXml, refId) {
|
|
192429
|
+
const target = convertedXml["word/_rels/document.xml.rels"]?.elements?.find((entry) => entry.name === "Relationships")?.elements?.find((entry) => entry.name === "Relationship" && entry.attributes?.Id === refId)?.attributes?.Target;
|
|
192430
|
+
if (!target)
|
|
192431
|
+
return null;
|
|
192432
|
+
return normalizePartPath(target);
|
|
192433
|
+
}
|
|
192434
|
+
function ensureRelationshipsRoot(convertedXml) {
|
|
192435
|
+
if (!convertedXml["word/_rels/document.xml.rels"])
|
|
192436
|
+
convertedXml["word/_rels/document.xml.rels"] = {
|
|
192437
|
+
type: "element",
|
|
192438
|
+
name: "document",
|
|
192439
|
+
elements: []
|
|
192440
|
+
};
|
|
192441
|
+
const relsPart = convertedXml["word/_rels/document.xml.rels"];
|
|
192442
|
+
if (!relsPart.elements)
|
|
192443
|
+
relsPart.elements = [];
|
|
192444
|
+
let relsRoot = relsPart.elements.find((entry) => entry.name === "Relationships");
|
|
192445
|
+
if (!relsRoot) {
|
|
192446
|
+
relsRoot = {
|
|
192447
|
+
name: "Relationships",
|
|
192448
|
+
attributes: { xmlns: "http://schemas.openxmlformats.org/package/2006/relationships" },
|
|
192449
|
+
elements: []
|
|
192450
|
+
};
|
|
192451
|
+
relsPart.elements.push(relsRoot);
|
|
192452
|
+
}
|
|
192453
|
+
if (!relsRoot.elements)
|
|
192454
|
+
relsRoot.elements = [];
|
|
192455
|
+
return relsRoot;
|
|
192456
|
+
}
|
|
192457
|
+
function replayPartsDiff({ partsDiff, editor }) {
|
|
192458
|
+
const result = {
|
|
192459
|
+
applied: 0,
|
|
192460
|
+
skipped: 0,
|
|
192461
|
+
warnings: []
|
|
192462
|
+
};
|
|
192463
|
+
if (!partsDiff)
|
|
192464
|
+
return result;
|
|
192465
|
+
if (!editor?.converter?.convertedXml) {
|
|
192466
|
+
result.skipped += 1;
|
|
192467
|
+
result.warnings.push("Parts replay skipped: editor converter is unavailable.");
|
|
192468
|
+
return result;
|
|
192469
|
+
}
|
|
192470
|
+
editor.options ??= {};
|
|
192471
|
+
editor.options.mediaFiles ??= {};
|
|
192472
|
+
const optionMediaStore = editor.options.mediaFiles;
|
|
192473
|
+
editor.storage ??= {};
|
|
192474
|
+
editor.storage.image ??= {};
|
|
192475
|
+
editor.storage.image.media ??= {};
|
|
192476
|
+
const storageMediaStore = editor.storage.image.media;
|
|
192477
|
+
const changedParts = [];
|
|
192478
|
+
for (const [partPath, snapshot2] of Object.entries(partsDiff.upserts)) {
|
|
192479
|
+
if (snapshot2.kind === "xml") {
|
|
192480
|
+
const operation = partPath in editor.converter.convertedXml ? "mutate" : "create";
|
|
192481
|
+
editor.converter.convertedXml[partPath] = structuredClone(snapshot2.content);
|
|
192482
|
+
changedParts.push({
|
|
192483
|
+
partId: partPath,
|
|
192484
|
+
operation,
|
|
192485
|
+
changedPaths: []
|
|
192486
|
+
});
|
|
192487
|
+
} else {
|
|
192488
|
+
const operation = partPath in optionMediaStore || partPath in storageMediaStore || partPath in editor.converter.convertedXml ? "mutate" : "create";
|
|
192489
|
+
const value = structuredClone(snapshot2.content);
|
|
192490
|
+
optionMediaStore[partPath] = value;
|
|
192491
|
+
storageMediaStore[partPath] = structuredClone(value);
|
|
192492
|
+
if (partPath.startsWith("word/media/") && typeof value === "string")
|
|
192493
|
+
editor.commands?.addImageToCollaboration?.({
|
|
192494
|
+
mediaPath: partPath,
|
|
192495
|
+
fileData: value
|
|
192496
|
+
});
|
|
192497
|
+
changedParts.push({
|
|
192498
|
+
partId: partPath,
|
|
192499
|
+
operation,
|
|
192500
|
+
changedPaths: []
|
|
192501
|
+
});
|
|
192502
|
+
}
|
|
192503
|
+
result.applied += 1;
|
|
192504
|
+
}
|
|
192505
|
+
for (const partPath of partsDiff.deletes) {
|
|
192506
|
+
if (partPath in editor.converter.convertedXml) {
|
|
192507
|
+
delete editor.converter.convertedXml[partPath];
|
|
192508
|
+
changedParts.push({
|
|
192509
|
+
partId: partPath,
|
|
192510
|
+
operation: "delete",
|
|
192511
|
+
changedPaths: []
|
|
192512
|
+
});
|
|
192513
|
+
result.applied += 1;
|
|
192514
|
+
continue;
|
|
192515
|
+
}
|
|
192516
|
+
const hadOptionMedia = partPath in optionMediaStore;
|
|
192517
|
+
const hadStorageMedia = partPath in storageMediaStore;
|
|
192518
|
+
if (hadOptionMedia)
|
|
192519
|
+
delete optionMediaStore[partPath];
|
|
192520
|
+
if (hadStorageMedia)
|
|
192521
|
+
delete storageMediaStore[partPath];
|
|
192522
|
+
if (hadOptionMedia || hadStorageMedia) {
|
|
192523
|
+
changedParts.push({
|
|
192524
|
+
partId: partPath,
|
|
192525
|
+
operation: "delete",
|
|
192526
|
+
changedPaths: []
|
|
192527
|
+
});
|
|
192528
|
+
result.applied += 1;
|
|
192529
|
+
}
|
|
192530
|
+
}
|
|
192531
|
+
if (changedParts.length > 0) {
|
|
192532
|
+
editor.converter.documentModified = true;
|
|
192533
|
+
editor.emit?.("partChanged", {
|
|
192534
|
+
parts: changedParts,
|
|
192535
|
+
source: "diff-replay"
|
|
192536
|
+
});
|
|
192537
|
+
}
|
|
192538
|
+
return {
|
|
192539
|
+
applied: result.applied,
|
|
192540
|
+
skipped: result.skipped,
|
|
192541
|
+
warnings: result.warnings
|
|
192542
|
+
};
|
|
192543
|
+
}
|
|
192544
|
+
function replayDiffs({ tr, diff, schema, comments = [], editor, trackedChangesRequested = false }) {
|
|
191691
192545
|
const docReplay = replayDocDiffs({
|
|
191692
192546
|
tr,
|
|
191693
192547
|
docDiffs: diff.docDiffs,
|
|
@@ -191706,15 +192560,28 @@ function replayDiffs({ tr, diff, schema, comments = [], editor }) {
|
|
|
191706
192560
|
numberingDiff: diff.numberingDiff,
|
|
191707
192561
|
editor
|
|
191708
192562
|
});
|
|
192563
|
+
const headerFootersReplay = replayHeaderFooters({
|
|
192564
|
+
tr,
|
|
192565
|
+
headerFootersDiff: diff.headerFootersDiff,
|
|
192566
|
+
schema,
|
|
192567
|
+
editor,
|
|
192568
|
+
trackedChangesRequested
|
|
192569
|
+
});
|
|
192570
|
+
const partsReplay = replayPartsDiff({
|
|
192571
|
+
partsDiff: diff.partsDiff,
|
|
192572
|
+
editor
|
|
192573
|
+
});
|
|
191709
192574
|
return {
|
|
191710
192575
|
tr,
|
|
191711
|
-
appliedDiffs: docReplay.applied + commentsReplay.applied + stylesReplay.applied + numberingReplay.applied,
|
|
191712
|
-
skippedDiffs: docReplay.skipped + commentsReplay.skipped + stylesReplay.skipped + numberingReplay.skipped,
|
|
192576
|
+
appliedDiffs: docReplay.applied + commentsReplay.applied + stylesReplay.applied + numberingReplay.applied + headerFootersReplay.applied + partsReplay.applied,
|
|
192577
|
+
skippedDiffs: docReplay.skipped + commentsReplay.skipped + stylesReplay.skipped + numberingReplay.skipped + headerFootersReplay.skipped + partsReplay.skipped,
|
|
191713
192578
|
warnings: [
|
|
191714
192579
|
...docReplay.warnings,
|
|
191715
192580
|
...commentsReplay.warnings,
|
|
191716
192581
|
...stylesReplay.warnings,
|
|
191717
|
-
...numberingReplay.warnings
|
|
192582
|
+
...numberingReplay.warnings,
|
|
192583
|
+
...headerFootersReplay.warnings,
|
|
192584
|
+
...partsReplay.warnings
|
|
191718
192585
|
]
|
|
191719
192586
|
};
|
|
191720
192587
|
}
|
|
@@ -209469,12 +210336,14 @@ function canonicalizeComment(comment2) {
|
|
|
209469
210336
|
result[key$1] = value;
|
|
209470
210337
|
return result;
|
|
209471
210338
|
}
|
|
209472
|
-
function buildCanonicalDiffableState(doc$12, comments, styles, numbering) {
|
|
210339
|
+
function buildCanonicalDiffableState(doc$12, comments, styles, numbering, headerFooters, partsState) {
|
|
209473
210340
|
return {
|
|
209474
210341
|
body: normalizeDocJSON(doc$12.toJSON()),
|
|
209475
210342
|
comments: comments.map(canonicalizeComment),
|
|
209476
210343
|
styles: styles ? styles : null,
|
|
209477
|
-
numbering: numbering ? numbering : null
|
|
210344
|
+
numbering: numbering ? numbering : null,
|
|
210345
|
+
headerFooters: headerFooters ? structuredClone(headerFooters) : null,
|
|
210346
|
+
partsState: partsState ? structuredClone(partsState) : null
|
|
209478
210347
|
};
|
|
209479
210348
|
}
|
|
209480
210349
|
function sortKeysDeep(value) {
|
|
@@ -209550,6 +210419,8 @@ function buildDiffSummary(diff) {
|
|
|
209550
210419
|
const commentsHasChanges = diff.commentDiffs.length > 0;
|
|
209551
210420
|
const stylesHasChanges = diff.stylesDiff !== null;
|
|
209552
210421
|
const numberingHasChanges = diff.numberingDiff !== null;
|
|
210422
|
+
const headerFootersHasChanges = diff.headerFootersDiff !== null;
|
|
210423
|
+
const partsHasChanges = diff.partsDiff !== null;
|
|
209553
210424
|
const changedComponents = [];
|
|
209554
210425
|
if (bodyHasChanges)
|
|
209555
210426
|
changedComponents.push("body");
|
|
@@ -209559,13 +210430,19 @@ function buildDiffSummary(diff) {
|
|
|
209559
210430
|
changedComponents.push("styles");
|
|
209560
210431
|
if (numberingHasChanges)
|
|
209561
210432
|
changedComponents.push("numbering");
|
|
210433
|
+
if (headerFootersHasChanges)
|
|
210434
|
+
changedComponents.push("headerFooters");
|
|
210435
|
+
if (partsHasChanges)
|
|
210436
|
+
changedComponents.push("parts");
|
|
209562
210437
|
return {
|
|
209563
210438
|
hasChanges: changedComponents.length > 0,
|
|
209564
210439
|
changedComponents,
|
|
209565
210440
|
body: { hasChanges: bodyHasChanges },
|
|
209566
210441
|
comments: { hasChanges: commentsHasChanges },
|
|
209567
210442
|
styles: { hasChanges: stylesHasChanges },
|
|
209568
|
-
numbering: { hasChanges: numberingHasChanges }
|
|
210443
|
+
numbering: { hasChanges: numberingHasChanges },
|
|
210444
|
+
headerFooters: { hasChanges: headerFootersHasChanges },
|
|
210445
|
+
parts: { hasChanges: partsHasChanges }
|
|
209569
210446
|
};
|
|
209570
210447
|
}
|
|
209571
210448
|
function coverageEquals(a2, b$1) {
|
|
@@ -209580,37 +210457,54 @@ function getEditorStyles(editor) {
|
|
|
209580
210457
|
function getEditorNumbering(editor) {
|
|
209581
210458
|
return editor.converter?.translatedNumbering ?? null;
|
|
209582
210459
|
}
|
|
210460
|
+
function getEditorHeaderFooters(editor) {
|
|
210461
|
+
return captureHeaderFooterState(editor);
|
|
210462
|
+
}
|
|
210463
|
+
function getEditorPartsState(editor, headerFooters) {
|
|
210464
|
+
return capturePartsState(editor, headerFooters);
|
|
210465
|
+
}
|
|
210466
|
+
function buildCanonicalStateForCoverage(doc$12, comments, styles, numbering, headerFooters, partsState, coverage) {
|
|
210467
|
+
return buildCanonicalDiffableState(doc$12, comments, styles, numbering, coverage.headerFooters ? headerFooters : null, coverage.headerFooters ? partsState : null);
|
|
210468
|
+
}
|
|
209583
210469
|
function captureSnapshot(editor) {
|
|
209584
210470
|
const doc$12 = editor.state.doc;
|
|
209585
210471
|
const comments = getEditorComments(editor);
|
|
209586
210472
|
const styles = getEditorStyles(editor);
|
|
209587
210473
|
const numbering = getEditorNumbering(editor);
|
|
210474
|
+
const headerFooters = getEditorHeaderFooters(editor);
|
|
210475
|
+
const partsState = getEditorPartsState(editor, headerFooters);
|
|
209588
210476
|
return {
|
|
209589
|
-
version:
|
|
210477
|
+
version: SNAPSHOT_VERSION_V2,
|
|
209590
210478
|
engine: ENGINE_ID,
|
|
209591
|
-
fingerprint: computeFingerprint(
|
|
209592
|
-
coverage: { ...
|
|
210479
|
+
fingerprint: computeFingerprint(buildCanonicalStateForCoverage(doc$12, comments, styles, numbering, headerFooters, partsState, V2_COVERAGE)),
|
|
210480
|
+
coverage: { ...V2_COVERAGE },
|
|
209593
210481
|
payload: structuredClone({
|
|
209594
210482
|
doc: doc$12.toJSON(),
|
|
209595
210483
|
comments,
|
|
209596
210484
|
styles,
|
|
209597
|
-
numbering
|
|
210485
|
+
numbering,
|
|
210486
|
+
headerFooters,
|
|
210487
|
+
partsState
|
|
209598
210488
|
})
|
|
209599
210489
|
};
|
|
209600
210490
|
}
|
|
209601
210491
|
function compareToSnapshot(editor, targetSnapshot) {
|
|
209602
210492
|
validateEngine(targetSnapshot.engine);
|
|
209603
210493
|
validateSnapshotVersion(targetSnapshot.version);
|
|
210494
|
+
validateSnapshotFingerprints(targetSnapshot);
|
|
210495
|
+
const expectedCoverage = getCoverageForSnapshotVersion(targetSnapshot.version);
|
|
209604
210496
|
const targetCoverage = targetSnapshot.coverage;
|
|
209605
|
-
validateCoverageMatch(
|
|
210497
|
+
validateCoverageMatch(expectedCoverage, targetCoverage);
|
|
209606
210498
|
validateSnapshotPayload(targetSnapshot.payload);
|
|
209607
210499
|
const targetComments = targetSnapshot.payload.comments ?? [];
|
|
209608
210500
|
const targetStyles = targetSnapshot.payload.styles;
|
|
209609
210501
|
const targetNumbering = targetSnapshot.payload.numbering;
|
|
210502
|
+
const targetHeaderFooters = targetSnapshot.payload.headerFooters ?? null;
|
|
210503
|
+
const targetPartsState = targetSnapshot.payload.partsState ?? null;
|
|
209610
210504
|
const targetDoc = parseDocPayload(editor.state.schema, targetSnapshot.payload.doc);
|
|
209611
210505
|
let reDerivedFingerprint;
|
|
209612
210506
|
try {
|
|
209613
|
-
reDerivedFingerprint = computeFingerprint(
|
|
210507
|
+
reDerivedFingerprint = computeFingerprint(buildCanonicalStateForCoverage(targetDoc, targetComments, targetStyles, targetNumbering, targetHeaderFooters, targetSnapshot.version === SNAPSHOT_VERSION_V2 ? targetPartsState : null, targetCoverage));
|
|
209614
210508
|
} catch (err) {
|
|
209615
210509
|
if (err instanceof DiffServiceError)
|
|
209616
210510
|
throw err;
|
|
@@ -209622,10 +210516,12 @@ function compareToSnapshot(editor, targetSnapshot) {
|
|
|
209622
210516
|
const baseComments = getEditorComments(editor);
|
|
209623
210517
|
const baseStyles = getEditorStyles(editor);
|
|
209624
210518
|
const baseNumbering2 = getEditorNumbering(editor);
|
|
209625
|
-
const
|
|
210519
|
+
const baseHeaderFooters = targetCoverage.headerFooters ? getEditorHeaderFooters(editor) : null;
|
|
210520
|
+
const basePartsState = targetCoverage.headerFooters ? getEditorPartsState(editor, baseHeaderFooters) : null;
|
|
210521
|
+
const baseFingerprint = computeFingerprint(buildCanonicalStateForCoverage(baseDoc, baseComments, baseStyles, baseNumbering2, baseHeaderFooters, targetSnapshot.version === SNAPSHOT_VERSION_V2 ? basePartsState : null, targetCoverage));
|
|
209626
210522
|
let rawDiff;
|
|
209627
210523
|
try {
|
|
209628
|
-
rawDiff = computeDiff(baseDoc, targetDoc, editor.state.schema, baseComments, targetComments, baseStyles, targetStyles, baseNumbering2, targetNumbering);
|
|
210524
|
+
rawDiff = computeDiff(baseDoc, targetDoc, editor.state.schema, baseComments, targetComments, baseStyles, targetStyles, baseNumbering2, targetNumbering, baseHeaderFooters, targetHeaderFooters, basePartsState, targetPartsState);
|
|
209629
210525
|
} catch (err) {
|
|
209630
210526
|
if (err instanceof DiffServiceError)
|
|
209631
210527
|
throw err;
|
|
@@ -209636,14 +210532,16 @@ function compareToSnapshot(editor, targetSnapshot) {
|
|
|
209636
210532
|
docDiffs: rawDiff.docDiffs,
|
|
209637
210533
|
commentDiffs: rawDiff.commentDiffs,
|
|
209638
210534
|
stylesDiff: rawDiff.stylesDiff,
|
|
209639
|
-
numberingDiff: rawDiff.numberingDiff
|
|
210535
|
+
numberingDiff: rawDiff.numberingDiff,
|
|
210536
|
+
headerFootersDiff: rawDiff.headerFootersDiff,
|
|
210537
|
+
partsDiff: rawDiff.partsDiff
|
|
209640
210538
|
});
|
|
209641
210539
|
return {
|
|
209642
|
-
version:
|
|
210540
|
+
version: getPayloadVersionForCoverage(targetCoverage),
|
|
209643
210541
|
engine: ENGINE_ID,
|
|
209644
210542
|
baseFingerprint,
|
|
209645
210543
|
targetFingerprint: targetSnapshot.fingerprint,
|
|
209646
|
-
coverage: { ...
|
|
210544
|
+
coverage: { ...targetCoverage },
|
|
209647
210545
|
summary,
|
|
209648
210546
|
payload
|
|
209649
210547
|
};
|
|
@@ -209651,8 +210549,15 @@ function compareToSnapshot(editor, targetSnapshot) {
|
|
|
209651
210549
|
function applyDiffPayload(editor, diffPayload, options) {
|
|
209652
210550
|
validateEngine(diffPayload.engine);
|
|
209653
210551
|
validatePayloadVersion(diffPayload.version);
|
|
210552
|
+
validateCoverageForPayloadVersion(diffPayload);
|
|
210553
|
+
validatePayloadFingerprints(diffPayload);
|
|
209654
210554
|
const baseDoc = editor.state.doc;
|
|
209655
|
-
const
|
|
210555
|
+
const baseComments = getEditorComments(editor);
|
|
210556
|
+
const baseStyles = getEditorStyles(editor);
|
|
210557
|
+
const baseNumbering2 = getEditorNumbering(editor);
|
|
210558
|
+
const baseHeaderFooters = getEditorHeaderFooters(editor);
|
|
210559
|
+
const basePartsState = getEditorPartsState(editor, baseHeaderFooters);
|
|
210560
|
+
const currentFingerprint = computeFingerprint(buildCanonicalStateForCoverage(baseDoc, baseComments, baseStyles, baseNumbering2, baseHeaderFooters, diffPayload.version === PAYLOAD_VERSION_V2 ? basePartsState : null, diffPayload.coverage));
|
|
209656
210561
|
if (currentFingerprint !== diffPayload.baseFingerprint)
|
|
209657
210562
|
throw new DiffServiceError("PRECONDITION_FAILED", `Document fingerprint mismatch. Expected "${diffPayload.baseFingerprint}", got "${currentFingerprint}". The document may have changed since the diff was computed. Re-run diff.compare against the current state.`);
|
|
209658
210563
|
const rawDiff = parseDiffPayloadContents(diffPayload.payload);
|
|
@@ -209668,7 +210573,8 @@ function applyDiffPayload(editor, diffPayload, options) {
|
|
|
209668
210573
|
diff: rawDiff,
|
|
209669
210574
|
schema: editor.state.schema,
|
|
209670
210575
|
comments: stagedComments,
|
|
209671
|
-
editor: staging
|
|
210576
|
+
editor: staging,
|
|
210577
|
+
trackedChangesRequested: trackedRequested
|
|
209672
210578
|
});
|
|
209673
210579
|
tr.setMeta("inputType", "programmatic");
|
|
209674
210580
|
if (trackedRequested)
|
|
@@ -209684,7 +210590,7 @@ function applyDiffPayload(editor, diffPayload, options) {
|
|
|
209684
210590
|
appliedOperations: replayResult.appliedDiffs,
|
|
209685
210591
|
baseFingerprint: diffPayload.baseFingerprint,
|
|
209686
210592
|
targetFingerprint: diffPayload.targetFingerprint,
|
|
209687
|
-
coverage: { ...
|
|
210593
|
+
coverage: { ...diffPayload.coverage },
|
|
209688
210594
|
summary: verifiedSummary,
|
|
209689
210595
|
diagnostics: replayResult.warnings
|
|
209690
210596
|
},
|
|
@@ -209694,6 +210600,17 @@ function applyDiffPayload(editor, diffPayload, options) {
|
|
|
209694
210600
|
function createStagingEditor(editor, comments) {
|
|
209695
210601
|
const pendingEvents = [];
|
|
209696
210602
|
const stagedComments = comments.map((c) => ({ ...c }));
|
|
210603
|
+
const stagedOptions = editor.options ? {
|
|
210604
|
+
...editor.options,
|
|
210605
|
+
mediaFiles: editor.options.mediaFiles ? structuredClone(editor.options.mediaFiles) : editor.options.mediaFiles
|
|
210606
|
+
} : editor.options;
|
|
210607
|
+
const stagedStorage = editor.storage ? {
|
|
210608
|
+
...editor.storage,
|
|
210609
|
+
image: editor.storage.image ? {
|
|
210610
|
+
...editor.storage.image,
|
|
210611
|
+
media: editor.storage.image.media ? structuredClone(editor.storage.image.media) : editor.storage.image.media
|
|
210612
|
+
} : editor.storage.image
|
|
210613
|
+
} : editor.storage;
|
|
209697
210614
|
let stagedConverter = null;
|
|
209698
210615
|
if (editor.converter) {
|
|
209699
210616
|
const raw = editor.converter;
|
|
@@ -209703,6 +210620,7 @@ function createStagingEditor(editor, comments) {
|
|
|
209703
210620
|
if (val !== null && val !== undefined && typeof val === "object")
|
|
209704
210621
|
cloned[key$1] = structuredClone(val);
|
|
209705
210622
|
}
|
|
210623
|
+
cloned.headerFooterModified = raw.headerFooterModified;
|
|
209706
210624
|
cloned.documentModified = raw.documentModified;
|
|
209707
210625
|
cloned.comments = stagedComments;
|
|
209708
210626
|
stagedConverter = cloned;
|
|
@@ -209712,7 +210630,8 @@ function createStagingEditor(editor, comments) {
|
|
|
209712
210630
|
emit: (event, payload) => {
|
|
209713
210631
|
pendingEvents.push([event, payload]);
|
|
209714
210632
|
},
|
|
209715
|
-
options:
|
|
210633
|
+
options: stagedOptions,
|
|
210634
|
+
storage: stagedStorage,
|
|
209716
210635
|
converter: stagedConverter
|
|
209717
210636
|
};
|
|
209718
210637
|
function commit() {
|
|
@@ -209721,8 +210640,13 @@ function createStagingEditor(editor, comments) {
|
|
|
209721
210640
|
const stagedRaw = stagedConverter;
|
|
209722
210641
|
for (const key$1 of STAGED_CONVERTER_KEYS)
|
|
209723
210642
|
realRaw[key$1] = stagedRaw[key$1];
|
|
210643
|
+
realRaw.headerFooterModified = stagedRaw.headerFooterModified;
|
|
209724
210644
|
realRaw.documentModified = stagedRaw.documentModified;
|
|
209725
210645
|
}
|
|
210646
|
+
if (editor.options && stagedOptions && "mediaFiles" in stagedOptions)
|
|
210647
|
+
editor.options.mediaFiles = stagedOptions.mediaFiles;
|
|
210648
|
+
if (editor.storage?.image && stagedStorage?.image)
|
|
210649
|
+
editor.storage.image.media = stagedStorage.image.media;
|
|
209726
210650
|
const ownedComments = stagedComments.map((c) => structuredClone(c));
|
|
209727
210651
|
if (editor.converter)
|
|
209728
210652
|
if (Array.isArray(editor.converter.comments)) {
|
|
@@ -209753,6 +210677,8 @@ function parseDiffPayloadContents(payload) {
|
|
|
209753
210677
|
const commentDiffs = payload.commentDiffs;
|
|
209754
210678
|
const stylesDiff = payload.stylesDiff;
|
|
209755
210679
|
const numberingDiff = payload.numberingDiff;
|
|
210680
|
+
const headerFootersDiff = payload.headerFootersDiff;
|
|
210681
|
+
const partsDiff = payload.partsDiff;
|
|
209756
210682
|
if (!Array.isArray(docDiffs))
|
|
209757
210683
|
throw new DiffServiceError("INVALID_INPUT", "Diff payload.docDiffs must be an array.");
|
|
209758
210684
|
if (!Array.isArray(commentDiffs))
|
|
@@ -209763,11 +210689,17 @@ function parseDiffPayloadContents(payload) {
|
|
|
209763
210689
|
throw new DiffServiceError("INVALID_INPUT", "Diff payload.stylesDiff must be a plain object or null.");
|
|
209764
210690
|
if (numberingDiff !== null && numberingDiff !== undefined && (typeof numberingDiff !== "object" || Array.isArray(numberingDiff)))
|
|
209765
210691
|
throw new DiffServiceError("INVALID_INPUT", "Diff payload.numberingDiff must be a plain object or null.");
|
|
210692
|
+
if (headerFootersDiff !== null && headerFootersDiff !== undefined && (typeof headerFootersDiff !== "object" || Array.isArray(headerFootersDiff)))
|
|
210693
|
+
throw new DiffServiceError("INVALID_INPUT", "Diff payload.headerFootersDiff must be a plain object or null.");
|
|
210694
|
+
if (partsDiff !== null && partsDiff !== undefined && (typeof partsDiff !== "object" || Array.isArray(partsDiff)))
|
|
210695
|
+
throw new DiffServiceError("INVALID_INPUT", "Diff payload.partsDiff must be a plain object or null.");
|
|
209766
210696
|
return {
|
|
209767
210697
|
docDiffs,
|
|
209768
210698
|
commentDiffs: structuredClone(commentDiffs),
|
|
209769
210699
|
stylesDiff: stylesDiff ?? null,
|
|
209770
|
-
numberingDiff: numberingDiff ?? null
|
|
210700
|
+
numberingDiff: numberingDiff ?? null,
|
|
210701
|
+
headerFootersDiff: headerFootersDiff ?? null,
|
|
210702
|
+
partsDiff: partsDiff ?? null
|
|
209771
210703
|
};
|
|
209772
210704
|
}
|
|
209773
210705
|
function isNonNullObject(v) {
|
|
@@ -209798,12 +210730,20 @@ function validateEngine(engine) {
|
|
|
209798
210730
|
throw new DiffServiceError("INVALID_INPUT", `Unsupported engine "${engine}". This adapter only supports "${ENGINE_ID}".`);
|
|
209799
210731
|
}
|
|
209800
210732
|
function validateSnapshotVersion(version$1) {
|
|
209801
|
-
if (version$1 !==
|
|
209802
|
-
throw new DiffServiceError("CAPABILITY_UNSUPPORTED", `Unsupported snapshot version "${version$1}". Expected "${
|
|
210733
|
+
if (version$1 !== "sd-diff-snapshot/v1" && version$1 !== SNAPSHOT_VERSION_V2)
|
|
210734
|
+
throw new DiffServiceError("CAPABILITY_UNSUPPORTED", `Unsupported snapshot version "${version$1}". Expected "sd-diff-snapshot/v1" or "${SNAPSHOT_VERSION_V2}".`);
|
|
209803
210735
|
}
|
|
209804
210736
|
function validatePayloadVersion(version$1) {
|
|
209805
|
-
if (version$1 !==
|
|
209806
|
-
throw new DiffServiceError("CAPABILITY_UNSUPPORTED", `Unsupported diff version "${version$1}". Expected "${
|
|
210737
|
+
if (version$1 !== PAYLOAD_VERSION_V1 && version$1 !== PAYLOAD_VERSION_V2)
|
|
210738
|
+
throw new DiffServiceError("CAPABILITY_UNSUPPORTED", `Unsupported diff version "${version$1}". Expected "${PAYLOAD_VERSION_V1}" or "${PAYLOAD_VERSION_V2}".`);
|
|
210739
|
+
}
|
|
210740
|
+
function validateSnapshotFingerprints(snapshot2) {
|
|
210741
|
+
if (typeof snapshot2.fingerprint !== "string")
|
|
210742
|
+
throw new DiffServiceError("INVALID_INPUT", "Snapshot fingerprint must be a string.");
|
|
210743
|
+
}
|
|
210744
|
+
function validatePayloadFingerprints(payload) {
|
|
210745
|
+
if (typeof payload.baseFingerprint !== "string" || typeof payload.targetFingerprint !== "string")
|
|
210746
|
+
throw new DiffServiceError("INVALID_INPUT", "Diff payload fingerprints must be strings.");
|
|
209807
210747
|
}
|
|
209808
210748
|
function validateSnapshotPayload(payload) {
|
|
209809
210749
|
if (payload.comments !== null && payload.comments !== undefined) {
|
|
@@ -209819,11 +210759,26 @@ function validateSnapshotPayload(payload) {
|
|
|
209819
210759
|
throw new DiffServiceError("INVALID_INPUT", "Snapshot payload.styles must be a plain object or null.");
|
|
209820
210760
|
if (payload.numbering !== null && payload.numbering !== undefined && (typeof payload.numbering !== "object" || Array.isArray(payload.numbering)))
|
|
209821
210761
|
throw new DiffServiceError("INVALID_INPUT", "Snapshot payload.numbering must be a plain object or null.");
|
|
210762
|
+
if (payload.headerFooters !== null && payload.headerFooters !== undefined && (typeof payload.headerFooters !== "object" || Array.isArray(payload.headerFooters)))
|
|
210763
|
+
throw new DiffServiceError("INVALID_INPUT", "Snapshot payload.headerFooters must be a plain object or null.");
|
|
210764
|
+
if (payload.partsState !== null && payload.partsState !== undefined && (typeof payload.partsState !== "object" || Array.isArray(payload.partsState)))
|
|
210765
|
+
throw new DiffServiceError("INVALID_INPUT", "Snapshot payload.partsState must be a plain object or null.");
|
|
209822
210766
|
}
|
|
209823
210767
|
function validateCoverageMatch(base5, target) {
|
|
209824
210768
|
if (!coverageEquals(base5, target))
|
|
209825
210769
|
throw new DiffServiceError("INVALID_INPUT", `Coverage mismatch between base and target. Both must use the same coverage configuration.`);
|
|
209826
210770
|
}
|
|
210771
|
+
function validateCoverageForPayloadVersion(diffPayload) {
|
|
210772
|
+
const expectedCoverage = diffPayload.version === PAYLOAD_VERSION_V1 ? V1_COVERAGE : V2_COVERAGE;
|
|
210773
|
+
if (!coverageEquals(diffPayload.coverage, expectedCoverage))
|
|
210774
|
+
throw new DiffServiceError("INVALID_INPUT", `Coverage mismatch for payload version "${diffPayload.version}". Expected ${JSON.stringify(expectedCoverage)}, got ${JSON.stringify(diffPayload.coverage)}.`);
|
|
210775
|
+
}
|
|
210776
|
+
function getCoverageForSnapshotVersion(version$1) {
|
|
210777
|
+
return version$1 === "sd-diff-snapshot/v1" ? V1_COVERAGE : V2_COVERAGE;
|
|
210778
|
+
}
|
|
210779
|
+
function getPayloadVersionForCoverage(coverage) {
|
|
210780
|
+
return coverage.headerFooters ? PAYLOAD_VERSION_V2 : PAYLOAD_VERSION_V1;
|
|
210781
|
+
}
|
|
209827
210782
|
function createDiffAdapter(editor) {
|
|
209828
210783
|
return {
|
|
209829
210784
|
capture() {
|
|
@@ -209834,7 +210789,7 @@ function createDiffAdapter(editor) {
|
|
|
209834
210789
|
},
|
|
209835
210790
|
apply(input2, options) {
|
|
209836
210791
|
const { result, tr } = wrapServiceCall(() => applyDiffPayload(editor, input2.diff, options));
|
|
209837
|
-
if (tr.docChanged)
|
|
210792
|
+
if (tr.docChanged || result.appliedOperations > 0)
|
|
209838
210793
|
editor.dispatch(tr);
|
|
209839
210794
|
editor.emit("commentsUpdate", { type: "replayCompleted" });
|
|
209840
210795
|
return result;
|
|
@@ -241774,7 +242729,7 @@ var Node$13 = class Node$14 {
|
|
|
241774
242729
|
id: { default: null },
|
|
241775
242730
|
edGrp: { default: null },
|
|
241776
242731
|
displacedByCustomXml: { default: null }
|
|
241777
|
-
}), PermEnd, PermEndBlock, IGNORED_ATTRIBUTE_KEYS, TRACK_CHANGE_MARK_NAMES, TRACK_CHANGE_IGNORED_ATTRIBUTE_KEYS, VOLATILE_PARAGRAPH_ATTRS, VOLATILE_IMAGE_ORIGINAL_ATTR_KEYS, SIMILARITY_THRESHOLD = 0.65, MIN_LENGTH_FOR_SIMILARITY = 4, COMMENT_ATTRS_DIFF_IGNORED_KEYS, setNestedValue = (target, path2, value) => {
|
|
242732
|
+
}), PermEnd, PermEndBlock, IGNORED_ATTRIBUTE_KEYS, TRACK_CHANGE_MARK_NAMES, TRACK_CHANGE_IGNORED_ATTRIBUTE_KEYS, VOLATILE_PARAGRAPH_ATTRS, VOLATILE_IMAGE_ORIGINAL_ATTR_KEYS, SIMILARITY_THRESHOLD = 0.65, MIN_LENGTH_FOR_SIMILARITY = 4, COMMENT_ATTRS_DIFF_IGNORED_KEYS, SLOT_VARIANTS, PART_KINDS, DOCUMENT_RELS_PATH$2 = "word/_rels/document.xml.rels", DOCUMENT_RELS_PATH$1 = "word/_rels/document.xml.rels", BODY_RELATIONSHIP_EXCLUSIONS, setNestedValue = (target, path2, value) => {
|
|
241778
242733
|
if (!path2.includes(".")) {
|
|
241779
242734
|
target[path2] = value;
|
|
241780
242735
|
return;
|
|
@@ -241908,7 +242863,7 @@ var Node$13 = class Node$14 {
|
|
|
241908
242863
|
type: mark2.type.name,
|
|
241909
242864
|
attrs: mark2.attrs ?? {}
|
|
241910
242865
|
}));
|
|
241911
|
-
}, Diffing, getRichTextExtensions = () => {
|
|
242866
|
+
}, HEADER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", Diffing, getRichTextExtensions = () => {
|
|
241912
242867
|
return [
|
|
241913
242868
|
Bold,
|
|
241914
242869
|
Color,
|
|
@@ -244361,7 +245316,18 @@ var Node$13 = class Node$14 {
|
|
|
244361
245316
|
console.warn("Failed to initialize developer tools:", error3);
|
|
244362
245317
|
}
|
|
244363
245318
|
}
|
|
244364
|
-
}, 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, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, 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", 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, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, 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, SNAPSHOT_VERSION3 = "sd-diff-snapshot/v1", PAYLOAD_VERSION3 = "sd-diff-payload/v1", 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.23.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, Editor, EXCLUDED_PLUGIN_KEY_REF_LIST, EXCLUDED_PLUGIN_KEY_REFS, EXCLUDED_PLUGIN_KEY_PREFIXES, TEXT_RANGE_BLOCK_SEP = `
|
|
245319
|
+
}, 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, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, 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", 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, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, 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.23.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension2) => {
|
|
245320
|
+
const extensionLike = extension2;
|
|
245321
|
+
const config2 = extensionLike?.config;
|
|
245322
|
+
const ExtensionCtor = extensionLike?.constructor;
|
|
245323
|
+
if (!config2 || typeof config2 !== "object" || typeof ExtensionCtor !== "function")
|
|
245324
|
+
return extension2;
|
|
245325
|
+
try {
|
|
245326
|
+
return new ExtensionCtor(config2);
|
|
245327
|
+
} catch {
|
|
245328
|
+
return extension2;
|
|
245329
|
+
}
|
|
245330
|
+
}, Editor, EXCLUDED_PLUGIN_KEY_REF_LIST, EXCLUDED_PLUGIN_KEY_REFS, EXCLUDED_PLUGIN_KEY_PREFIXES, TEXT_RANGE_BLOCK_SEP = `
|
|
244365
245331
|
`, TEXT_RANGE_LEAF_SEP = `
|
|
244366
245332
|
`, DecorationBridge = class DecorationBridge2 {
|
|
244367
245333
|
#applied = /* @__PURE__ */ new WeakMap;
|
|
@@ -253908,9 +254874,9 @@ var Node$13 = class Node$14 {
|
|
|
253908
254874
|
return;
|
|
253909
254875
|
console.log(...args$1);
|
|
253910
254876
|
}, 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;
|
|
253911
|
-
var
|
|
254877
|
+
var init_src_CxFOmQ5k_es = __esm(() => {
|
|
253912
254878
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
253913
|
-
|
|
254879
|
+
init_SuperConverter_CYbYOJeZ_es();
|
|
253914
254880
|
init_jszip_ChlR43oI_es();
|
|
253915
254881
|
init_uuid_qzgm05fK_es();
|
|
253916
254882
|
init_constants_CIF8yzNk_es();
|
|
@@ -275803,19 +276769,46 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
275803
276769
|
"fileId",
|
|
275804
276770
|
"selection"
|
|
275805
276771
|
];
|
|
276772
|
+
SLOT_VARIANTS = [
|
|
276773
|
+
"default",
|
|
276774
|
+
"first",
|
|
276775
|
+
"even"
|
|
276776
|
+
];
|
|
276777
|
+
PART_KINDS = ["header", "footer"];
|
|
276778
|
+
BODY_RELATIONSHIP_EXCLUSIONS = new Set([
|
|
276779
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",
|
|
276780
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering",
|
|
276781
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings",
|
|
276782
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",
|
|
276783
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings",
|
|
276784
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable",
|
|
276785
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/header",
|
|
276786
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer",
|
|
276787
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",
|
|
276788
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes",
|
|
276789
|
+
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes",
|
|
276790
|
+
"http://schemas.microsoft.com/office/2011/relationships/commentsExtended",
|
|
276791
|
+
"http://schemas.microsoft.com/office/2016/09/relationships/commentsIds",
|
|
276792
|
+
"http://schemas.microsoft.com/office/2018/08/relationships/commentsExtensible"
|
|
276793
|
+
]);
|
|
275806
276794
|
Diffing = Extension.create({
|
|
275807
276795
|
name: "documentDiffing",
|
|
275808
276796
|
addCommands() {
|
|
275809
276797
|
return {
|
|
275810
|
-
compareDocuments: (
|
|
276798
|
+
compareDocuments: (targetEditor) => ({ state, tr }) => {
|
|
275811
276799
|
tr.setMeta("preventDispatch", true);
|
|
276800
|
+
const updatedDocument = targetEditor.state.doc;
|
|
275812
276801
|
const currentComments = this.editor.converter?.comments ?? [];
|
|
275813
|
-
const nextComments =
|
|
276802
|
+
const nextComments = targetEditor.converter?.comments ?? currentComments;
|
|
275814
276803
|
const currentStyles = this.editor.converter?.translatedLinkedStyles ?? null;
|
|
275815
|
-
const nextStyles =
|
|
276804
|
+
const nextStyles = targetEditor.converter?.translatedLinkedStyles ?? currentStyles;
|
|
275816
276805
|
const currentNumbering = this.editor.converter?.translatedNumbering ?? null;
|
|
275817
|
-
const nextNumbering =
|
|
275818
|
-
|
|
276806
|
+
const nextNumbering = targetEditor.converter?.translatedNumbering ?? currentNumbering;
|
|
276807
|
+
const currentHeaderFooters = captureHeaderFooterState(this.editor);
|
|
276808
|
+
const currentPartsState = capturePartsState(this.editor, currentHeaderFooters);
|
|
276809
|
+
const nextHeaderFooters = captureHeaderFooterState(targetEditor);
|
|
276810
|
+
const nextPartsState = capturePartsState(targetEditor, nextHeaderFooters);
|
|
276811
|
+
return computeDiff(state.doc, updatedDocument, state.schema, currentComments, nextComments, currentStyles, nextStyles, currentNumbering, nextNumbering, currentHeaderFooters, nextHeaderFooters, currentPartsState, nextPartsState);
|
|
275819
276812
|
},
|
|
275820
276813
|
replayDifferences: (diff, { applyTrackedChanges = true } = {}) => ({ state, dispatch }) => {
|
|
275821
276814
|
if (!dispatch)
|
|
@@ -275823,18 +276816,21 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
275823
276816
|
const comments = this.editor.converter ? Array.isArray(this.editor.converter.comments) ? this.editor.converter.comments : this.editor.converter.comments = [] : [];
|
|
275824
276817
|
const tr = state.tr;
|
|
275825
276818
|
const canApplyTrackedChanges = applyTrackedChanges && Boolean(this.editor.options.user);
|
|
275826
|
-
|
|
276819
|
+
if (canApplyTrackedChanges)
|
|
276820
|
+
tr.setMeta("inputType", "programmatic");
|
|
276821
|
+
const replayResult = replayDiffs({
|
|
275827
276822
|
tr,
|
|
275828
276823
|
diff,
|
|
275829
276824
|
schema: state.schema,
|
|
275830
276825
|
comments,
|
|
275831
|
-
editor: this.editor
|
|
276826
|
+
editor: this.editor,
|
|
276827
|
+
trackedChangesRequested: canApplyTrackedChanges
|
|
275832
276828
|
});
|
|
275833
276829
|
if (canApplyTrackedChanges)
|
|
275834
276830
|
tr.setMeta("forceTrackChanges", true);
|
|
275835
276831
|
else
|
|
275836
276832
|
tr.setMeta("skipTrackChanges", true);
|
|
275837
|
-
if (dispatch && tr.docChanged)
|
|
276833
|
+
if (dispatch && (tr.docChanged || replayResult.appliedDiffs > 0))
|
|
275838
276834
|
dispatch(tr);
|
|
275839
276835
|
this.editor.emit("commentsUpdate", { type: "replayCompleted" });
|
|
275840
276836
|
return true;
|
|
@@ -280869,11 +281865,24 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
280869
281865
|
numbering: true,
|
|
280870
281866
|
headerFooters: false
|
|
280871
281867
|
});
|
|
281868
|
+
V2_COVERAGE = Object.freeze({
|
|
281869
|
+
body: true,
|
|
281870
|
+
comments: true,
|
|
281871
|
+
styles: true,
|
|
281872
|
+
numbering: true,
|
|
281873
|
+
headerFooters: true
|
|
281874
|
+
});
|
|
280872
281875
|
STAGED_CONVERTER_KEYS = [
|
|
280873
281876
|
"translatedLinkedStyles",
|
|
280874
281877
|
"translatedNumbering",
|
|
280875
281878
|
"convertedXml",
|
|
280876
281879
|
"numbering",
|
|
281880
|
+
"headers",
|
|
281881
|
+
"footers",
|
|
281882
|
+
"headerIds",
|
|
281883
|
+
"footerIds",
|
|
281884
|
+
"bodySectPr",
|
|
281885
|
+
"savedTagsToRestore",
|
|
280877
281886
|
"documentGuid",
|
|
280878
281887
|
"documentUniqueIdentifier"
|
|
280879
281888
|
];
|
|
@@ -281882,8 +282891,9 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
281882
282891
|
const allExtensions = [...coreExtensions, ...this.options.extensions].filter((extension2) => {
|
|
281883
282892
|
const extensionType = typeof extension2?.type === "string" ? extension2.type : undefined;
|
|
281884
282893
|
return extensionType ? allowedExtensions.includes(extensionType) : false;
|
|
281885
|
-
});
|
|
281886
|
-
|
|
282894
|
+
}).map((extension2) => cloneExtensionInstance(extension2));
|
|
282895
|
+
const isolatedExternalExtensions = externalExtensions.map((extension2) => cloneExtensionInstance(extension2));
|
|
282896
|
+
this.extensionService = ExtensionService.create(allExtensions, isolatedExternalExtensions, this);
|
|
281887
282897
|
}
|
|
281888
282898
|
#createCommandService() {
|
|
281889
282899
|
this.#commandService = CommandService.create({ editor: this });
|
|
@@ -287860,8 +288870,8 @@ var init_zipper_YmNpPIyc_es = __esm(() => {
|
|
|
287860
288870
|
|
|
287861
288871
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
287862
288872
|
var init_super_editor_es = __esm(() => {
|
|
287863
|
-
|
|
287864
|
-
|
|
288873
|
+
init_src_CxFOmQ5k_es();
|
|
288874
|
+
init_SuperConverter_CYbYOJeZ_es();
|
|
287865
288875
|
init_jszip_ChlR43oI_es();
|
|
287866
288876
|
init_xml_js_40FWvL78_es();
|
|
287867
288877
|
init_constants_CIF8yzNk_es();
|