@superdoc-dev/mcp 0.3.0-next.6 → 0.3.0-next.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +300 -345
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -93206,6 +93206,18 @@ var init_contract = __esm(() => {
93206
93206
  type: "string"
93207
93207
  }
93208
93208
  },
93209
+ activeCommentIds: {
93210
+ type: "array",
93211
+ items: {
93212
+ type: "string"
93213
+ }
93214
+ },
93215
+ activeChangeIds: {
93216
+ type: "array",
93217
+ items: {
93218
+ type: "string"
93219
+ }
93220
+ },
93209
93221
  text: {
93210
93222
  type: "string"
93211
93223
  }
@@ -93214,7 +93226,9 @@ var init_contract = __esm(() => {
93214
93226
  required: [
93215
93227
  "empty",
93216
93228
  "target",
93217
- "activeMarks"
93229
+ "activeMarks",
93230
+ "activeCommentIds",
93231
+ "activeChangeIds"
93218
93232
  ]
93219
93233
  }
93220
93234
  },
@@ -204776,7 +204790,7 @@ var init_remark_gfm_BhnWr3yf_es = __esm(() => {
204776
204790
  emptyOptions2 = {};
204777
204791
  });
204778
204792
 
204779
- // ../../packages/superdoc/dist/chunks/SuperConverter-CyrStvpz.es.js
204793
+ // ../../packages/superdoc/dist/chunks/SuperConverter-4akUYfWt.es.js
204780
204794
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
204781
204795
  const fieldValue = extension$1.config[field];
204782
204796
  if (typeof fieldValue === "function")
@@ -207448,44 +207462,6 @@ function executeResolveRange(adapter, input) {
207448
207462
  validateResolveRangeInput(input);
207449
207463
  return adapter.resolve(input);
207450
207464
  }
207451
- function isEntityAddress(value) {
207452
- if (!isRecord(value))
207453
- return false;
207454
- if (value.kind !== "entity")
207455
- return false;
207456
- if (typeof value.entityType !== "string" || !VALID_ENTITY_TYPES.has(value.entityType))
207457
- return false;
207458
- if (typeof value.entityId !== "string" || value.entityId.length === 0)
207459
- return false;
207460
- return true;
207461
- }
207462
- function validateScrollIntoViewInput(input) {
207463
- if (!isRecord(input))
207464
- throw new DocumentApiValidationError("INVALID_INPUT", "ranges.scrollIntoView input must be a non-null object.");
207465
- assertNoUnknownFields(input, SCROLL_INTO_VIEW_ALLOWED_KEYS, "ranges.scrollIntoView");
207466
- const { target, block, behavior } = input;
207467
- if (target === undefined || target === null)
207468
- throw new DocumentApiValidationError("INVALID_TARGET", "ranges.scrollIntoView requires a target.", { field: "target" });
207469
- if (!isTextAddress(target) && !isTextTarget(target) && !isEntityAddress(target))
207470
- throw new DocumentApiValidationError("INVALID_TARGET", "target must be a TextAddress, TextTarget, or EntityAddress object.", {
207471
- field: "target",
207472
- value: target
207473
- });
207474
- if (block !== undefined && (typeof block !== "string" || !VALID_BLOCK_VALUES.has(block)))
207475
- throw new DocumentApiValidationError("INVALID_INPUT", `block must be one of "start" | "center" | "end" | "nearest", got ${JSON.stringify(block)}.`, {
207476
- field: "block",
207477
- value: block
207478
- });
207479
- if (behavior !== undefined && (typeof behavior !== "string" || !VALID_BEHAVIOR_VALUES.has(behavior)))
207480
- throw new DocumentApiValidationError("INVALID_INPUT", `behavior must be "auto" or "smooth", got ${JSON.stringify(behavior)}.`, {
207481
- field: "behavior",
207482
- value: behavior
207483
- });
207484
- }
207485
- async function executeScrollIntoView(adapter, input) {
207486
- validateScrollIntoViewInput(input);
207487
- return adapter.scrollIntoView(input);
207488
- }
207489
207465
  function validateSelectionCurrentInput(input) {
207490
207466
  if (input === undefined)
207491
207467
  return;
@@ -212699,28 +212675,15 @@ function createDocumentApi(adapters) {
212699
212675
  query: { match(input) {
212700
212676
  return executeQueryMatch(adapters.query, input);
212701
212677
  } },
212702
- ranges: {
212703
- resolve(input) {
212704
- return executeResolveRange(adapters.ranges, input);
212705
- },
212706
- scrollIntoView(input) {
212707
- return executeScrollIntoView(adapters.ranges, input);
212708
- }
212709
- },
212710
- selection: {
212711
- current(input) {
212712
- const adapter = adapters.selection;
212713
- if (!adapter)
212714
- throw new DocumentApiValidationError("SELECTION_ADAPTER_UNAVAILABLE", "No selection adapter was registered. Pass `selection` in DocumentApiAdapters to call selection.current().");
212715
- return executeSelectionCurrent(adapter, input);
212716
- },
212717
- onChange(listener) {
212718
- const adapter = adapters.selection;
212719
- if (!adapter)
212720
- throw new DocumentApiValidationError("SELECTION_ADAPTER_UNAVAILABLE", "No selection adapter was registered. Pass `selection` in DocumentApiAdapters to call selection.onChange().");
212721
- return adapter.onChange(listener);
212722
- }
212723
- },
212678
+ ranges: { resolve(input) {
212679
+ return executeResolveRange(adapters.ranges, input);
212680
+ } },
212681
+ selection: { current(input) {
212682
+ const adapter = adapters.selection;
212683
+ if (!adapter)
212684
+ throw new DocumentApiValidationError("SELECTION_ADAPTER_UNAVAILABLE", "No selection adapter was registered. Pass `selection` in DocumentApiAdapters to call selection.current().");
212685
+ return executeSelectionCurrent(adapter, input);
212686
+ } },
212724
212687
  mutations: {
212725
212688
  preview(input) {
212726
212689
  return adapters.mutations.preview(input);
@@ -242702,7 +242665,7 @@ var isRegExp = (value) => {
242702
242665
  tracked: false,
242703
242666
  carrier: runAttributeCarrier(runPropertyKey ?? key),
242704
242667
  schema
242705
- }), INLINE_PROPERTY_REGISTRY, INLINE_PROPERTY_KEY_SET, INLINE_PROPERTY_BY_KEY, UNDERLINE_OBJECT_ALLOWED_KEYS, SHADING_ALLOWED_KEYS, BORDER_ALLOWED_KEYS, FIT_TEXT_ALLOWED_KEYS, LANG_ALLOWED_KEYS, RFONTS_ALLOWED_KEYS, EAST_ASIAN_LAYOUT_ALLOWED_KEYS, STYLISTIC_SET_ALLOWED_KEYS, VERT_ALIGN_VALUES, PROPERTY_VALIDATOR_MAP, NONE_FAILURES, NONE_THROWS, T_NOT_FOUND, T_NOT_FOUND_CAPABLE, T_PLAN_ENGINE, T_NOT_FOUND_COMMAND, T_IMAGE_COMMAND, T_CC_READ, T_CC_MUTATION, T_CC_TYPED, T_CC_TYPED_READ, T_CC_RAW, T_QUERY_MATCH, T_SECTION_CREATE, T_SECTION_READ, T_PARAGRAPH_MUTATION, T_SECTION_MUTATION, T_SECTION_SETTINGS_MUTATION, T_HEADER_FOOTER_MUTATION, T_STORY, T_REF_READ_LIST, T_REF_MUTATION, T_REF_MUTATION_REMOVE, T_REF_INSERT, T_PROTECTION_READ, T_PROTECTION_MUTATION, T_PERM_RANGE_READ, T_PERM_RANGE_MUTATION, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS, OPERATION_DEFINITIONS, OPERATION_IDS, COMMAND_CATALOG, PARAGRAPH_ALIGNMENTS, TAB_STOP_ALIGNMENTS, TAB_STOP_LEADERS, BORDER_SIDES, CLEAR_BORDER_SIDES, LINE_RULES, PARAGRAPH_DIRECTIONS, ALIGNMENT_POLICIES, PARAGRAPH_BLOCK_TYPES, SET_STYLE_KEYS, CLEAR_STYLE_KEYS, RESET_DIRECT_FORMATTING_KEYS, SET_ALIGNMENT_KEYS, CLEAR_ALIGNMENT_KEYS, SET_INDENTATION_KEYS, CLEAR_INDENTATION_KEYS, SET_SPACING_KEYS, CLEAR_SPACING_KEYS, SET_KEEP_OPTIONS_KEYS, SET_OUTLINE_LEVEL_KEYS, SET_FLOW_OPTIONS_KEYS, SET_TAB_STOP_KEYS, CLEAR_TAB_STOP_KEYS, CLEAR_ALL_TAB_STOPS_KEYS, SET_BORDER_KEYS, CLEAR_BORDER_KEYS, SET_SHADING_KEYS, CLEAR_SHADING_KEYS, SET_DIRECTION_KEYS, CLEAR_DIRECTION_KEYS, ST_ON_OFF_ON_VALUES, ST_ON_OFF_OFF_VALUES, ST_UNDERLINE_VALUES, ST_UNDERLINE_VALUE_SET, ST_VERTICAL_ALIGN_RUN, ST_EM, ST_TEXT_ALIGNMENT, ST_TEXT_DIRECTION, ST_TEXTBOX_TIGHT_WRAP, ST_TEXT_TRANSFORM, ST_JUSTIFICATION, FONT_FAMILY_SCHEMA, COLOR_SCHEMA, SPACING_SCHEMA, INDENT_SCHEMA, UNDERLINE_SCHEMA, BORDER_PROPERTIES_SCHEMA, SHADING_SCHEMA, LANG_SCHEMA, EAST_ASIAN_LAYOUT_SCHEMA, FIT_TEXT_SCHEMA, NUMBERING_PROPERTIES_SCHEMA, FRAME_PR_SCHEMA, PARAGRAPH_BORDERS_SCHEMA, TAB_STOP_SCHEMA, PROPERTY_REGISTRY, ALLOWED_KEYS_BY_CHANNEL, PROPERTY_INDEX, EXCLUDED_KEYS, INPUT_ALLOWED_KEYS, TARGET_ALLOWED_KEYS, OPTIONS_ALLOWED_KEYS, VALID_CHANNELS, Z_ORDER_RELATIVE_HEIGHT_MAX = 4294967295, nodeTypeValues, blockNodeTypeValues, deletableBlockNodeTypeValues, inlineNodeTypeValues, rangeSchema, textAddressSchema, textTargetSchema, blockNodeAddressSchema, deletableBlockNodeAddressSchema, tableAddressSchema, tableRowAddressSchema, tableCellAddressSchema, tableOrCellAddressSchema, paragraphAddressSchema, headingAddressSchema, listItemAddressSchema, paragraphTargetSchema, sectionAddressSchema, nodeAddressSchema, commentAddressSchema, trackedChangeAddressSchema, entityAddressSchema, selectionTargetSchema, deleteBehaviorSchema, resolvedHandleSchema, pageInfoSchema, receiptSuccessSchema, textMutationRangeSchema, textMutationResolutionSchema, textMutationSuccessSchema, matchBlockSchema, storyLocatorSchema, trackChangeRefSchema, createParagraphSuccessSchema, createHeadingSuccessSchema, headingLevelSchema, listsInsertSuccessSchema, listsMutateItemSuccessSchema, textSelectorSchema, nodeSelectorSchema, sdMutationResolutionSchema, sdMutationSuccessSchema, documentInfoCountsSchema, documentInfoOutlineItemSchema, documentInfoCapabilitiesSchema, documentStylesSchema, documentDefaultsSchema, listKindSchema, listInsertPositionSchema, sectionBreakTypeSchema, sectionOrientationSchema, sectionVerticalAlignSchema, sectionDirectionSchema, sectionHeaderFooterKindSchema, sectionHeaderFooterVariantSchema, sectionLineNumberRestartSchema, sectionPageNumberFormatSchema, sectionRangeDomainSchema, sectionPageMarginsSchema, sectionHeaderFooterMarginsSchema, sectionPageSetupSchema, sectionColumnsSchema, sectionLineNumberingSchema, sectionPageNumberingSchema, sectionHeaderFooterRefsSchema, sectionBorderSpecSchema, sectionPageBordersSchema, sectionMutationSuccessSchema, documentMutationSuccessSchema, paragraphMutationTargetSchema, paragraphMutationSuccessSchema, createSectionBreakSuccessSchema, trackChangeWordRevisionIdsSchema, capabilityReasonsSchema, capabilityFlagSchema, operationRuntimeCapabilitySchema, operationCapabilitiesSchema, inlinePropertyCapabilitySchema, formatCapabilitiesSchema, planEngineCapabilitiesSchema, nullableTableBorderSpecSchema, sdFragmentSchema, placementSchema, nestingPolicySchema, tableCreateLocationSchema, formatInlineAliasOperationSchemas, tocMutationFailureSchema, tocMutationSuccessSchema, tocEntryMutationFailureSchema, tocEntryMutationSuccessSchema, hyperlinkTargetSchema, hyperlinkReadPropertiesSchema, hyperlinkSpecSchema, hyperlinkPatchSchema, hyperlinkDomainSchema, hyperlinkMutationSuccessSchema, hyperlinkMutationFailureSchema, contentControlTargetSchema, contentControlMutationSuccessSchema, contentControlMutationFailureSchema, ccListResultSchema, ccInfoSchema, refFailureSchema, bookmarkAddressSchema, bookmarkMutation, footnoteAddressSchema, footnoteConfigScopeSchema, footnoteNumberingSchema, footnoteMutation, footnoteConfig, crossRefAddressSchema, crossRefTargetSchema, crossRefDisplaySchema, crossRefMutation, indexAddressSchema, indexEntryAddressSchema, indexConfigSchema, indexEntryDataSchema, indexEntryPatchSchema, indexMutation, indexEntryMutation, captionAddressSchema, captionMutation, captionConfig, fieldAddressSchema, fieldMutation, citationAddressSchema, citationSourceAddressSchema, bibliographyAddressSchema, citationMutation, citationSourceMutation, bibliographyMutation, citationPersonSchema, citationSourceFieldsSchema, tocCreateLocationSchema, authoritiesAddressSchema, authorityEntryAddressSchema, authoritiesConfigSchema, authorityEntryDataSchema, authorityEntryPatchSchema, authoritiesMutation, authorityEntryMutation, diffCoverageSchema, diffSummarySchema, diffSnapshotSchema, diffPayloadSchema, GROUP_METADATA, STEP_OP_CATALOG_UNFROZEN, PUBLIC_STEP_OP_CATALOG_UNFROZEN, PUBLIC_MUTATION_STEP_OP_IDS, PUBLIC_MUTATION_STEP_OP_SET, CAPABILITY_REASON_CODES, VALID_EDGE_VALUES, VALID_EDGE_NODE_TYPES, VALID_DOCUMENT_EDGES, VALID_REF_BOUNDARIES, VALID_ANCHOR_KINDS, RESOLVE_RANGE_ALLOWED_KEYS, VALID_ENTITY_TYPES, SCROLL_INTO_VIEW_ALLOWED_KEYS, VALID_BLOCK_VALUES, VALID_BEHAVIOR_VALUES, SELECTION_CURRENT_ALLOWED_KEYS, CREATE_COMMENT_ALLOWED_KEYS, PATCH_COMMENT_ALLOWED_KEYS, STYLE_APPLY_INPUT_ALLOWED_KEYS, INLINE_ALIAS_INPUT_ALLOWED_KEYS, DELETE_INPUT_ALLOWED_KEYS, VALID_BEHAVIORS, CONTENT_KIND_SET, INLINE_KIND_SET, LEGACY_TOP_LEVEL_TYPES, TEXT_INSERT_ALLOWED_KEYS, STRUCTURAL_INSERT_ALLOWED_KEYS, VALID_INSERT_TYPES, LIST_KINDS, LIST_INSERT_POSITIONS, JOIN_DIRECTIONS, MUTATION_SCOPES, LEVEL_ALIGNMENTS, TRAILING_CHARACTERS, LIST_PRESET_IDS, VALID_BLOCK_NODE_TYPES$1, VALID_LIST_KINDS, VALID_INSERT_POSITIONS, VALID_JOIN_DIRECTIONS, VALID_MUTATION_SCOPES, VALID_LEVEL_ALIGNMENTS, VALID_TRAILING_CHARACTERS, VALID_LIST_PRESETS, VALID_CONTINUITY_VALUES, VALID_SEQUENCE_MODES, VALID_LIST_CREATE_MODES, TEXT_REPLACE_ALLOWED_KEYS, STRUCTURAL_REPLACE_ALLOWED_KEYS, VALID_HEADING_LEVELS, SECTION_BREAK_TYPES$1, SUPPORTED_DELETE_NODE_TYPES, REJECTED_DELETE_NODE_TYPES, VALID_BLOCK_NODE_TYPES, SNAPSHOT_VERSIONS, PAYLOAD_VERSIONS, VALID_STYLE_OPTION_FLAGS, TABLE_BORDER_COLOR_PATTERN, VALID_APPLY_TO_VALUES, VALID_BORDER_EDGE_KEYS, HEADER_FOOTER_KINDS$1, HEADER_FOOTER_VARIANTS$1, DEFAULT_SECTIONS_LIST_LIMIT = 250, SECTION_BREAK_TYPES, SECTION_ORIENTATIONS, SECTION_VERTICAL_ALIGNS, SECTION_DIRECTIONS, HEADER_FOOTER_KINDS, HEADER_FOOTER_VARIANTS, LINE_NUMBER_RESTARTS, PAGE_NUMBER_FORMATS, PAGE_BORDER_DISPLAYS, PAGE_BORDER_OFFSET_FROM_VALUES, PAGE_BORDER_Z_ORDER_VALUES, VALID_WRAP_TYPES, VALID_WRAP_SIDES, VALID_IMAGE_SIZE_UNITS, VALID_TOC_UPDATE_MODES, EDIT_ENTRY_PATCH_ALLOWED_KEYS, PATCH_FIELDS, CONTENT_CONTROL_TYPES, LOCK_MODES, CONTENT_CONTROL_APPEARANCES, VALID_NODE_KINDS, VALID_LOCK_MODES$1, VALID_CC_TYPES, VALID_CC_APPEARANCES, VALID_CONTENT_FORMATS, VALID_RAW_PATCH_OPS, VALID_SET_MODES, VALID_CREATE_LOCATION_KINDS, DEFAULT_PROTECTION_STATE, ADAPTER_GATED_PREFIXES, _buffers, _defaultCollectionId = null, _nextCollectionId = 1, generateV2HandlerEntity = (handlerName, translator$217) => ({
242668
+ }), INLINE_PROPERTY_REGISTRY, INLINE_PROPERTY_KEY_SET, INLINE_PROPERTY_BY_KEY, UNDERLINE_OBJECT_ALLOWED_KEYS, SHADING_ALLOWED_KEYS, BORDER_ALLOWED_KEYS, FIT_TEXT_ALLOWED_KEYS, LANG_ALLOWED_KEYS, RFONTS_ALLOWED_KEYS, EAST_ASIAN_LAYOUT_ALLOWED_KEYS, STYLISTIC_SET_ALLOWED_KEYS, VERT_ALIGN_VALUES, PROPERTY_VALIDATOR_MAP, NONE_FAILURES, NONE_THROWS, T_NOT_FOUND, T_NOT_FOUND_CAPABLE, T_PLAN_ENGINE, T_NOT_FOUND_COMMAND, T_IMAGE_COMMAND, T_CC_READ, T_CC_MUTATION, T_CC_TYPED, T_CC_TYPED_READ, T_CC_RAW, T_QUERY_MATCH, T_SECTION_CREATE, T_SECTION_READ, T_PARAGRAPH_MUTATION, T_SECTION_MUTATION, T_SECTION_SETTINGS_MUTATION, T_HEADER_FOOTER_MUTATION, T_STORY, T_REF_READ_LIST, T_REF_MUTATION, T_REF_MUTATION_REMOVE, T_REF_INSERT, T_PROTECTION_READ, T_PROTECTION_MUTATION, T_PERM_RANGE_READ, T_PERM_RANGE_MUTATION, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS, OPERATION_DEFINITIONS, OPERATION_IDS, COMMAND_CATALOG, PARAGRAPH_ALIGNMENTS, TAB_STOP_ALIGNMENTS, TAB_STOP_LEADERS, BORDER_SIDES, CLEAR_BORDER_SIDES, LINE_RULES, PARAGRAPH_DIRECTIONS, ALIGNMENT_POLICIES, PARAGRAPH_BLOCK_TYPES, SET_STYLE_KEYS, CLEAR_STYLE_KEYS, RESET_DIRECT_FORMATTING_KEYS, SET_ALIGNMENT_KEYS, CLEAR_ALIGNMENT_KEYS, SET_INDENTATION_KEYS, CLEAR_INDENTATION_KEYS, SET_SPACING_KEYS, CLEAR_SPACING_KEYS, SET_KEEP_OPTIONS_KEYS, SET_OUTLINE_LEVEL_KEYS, SET_FLOW_OPTIONS_KEYS, SET_TAB_STOP_KEYS, CLEAR_TAB_STOP_KEYS, CLEAR_ALL_TAB_STOPS_KEYS, SET_BORDER_KEYS, CLEAR_BORDER_KEYS, SET_SHADING_KEYS, CLEAR_SHADING_KEYS, SET_DIRECTION_KEYS, CLEAR_DIRECTION_KEYS, ST_ON_OFF_ON_VALUES, ST_ON_OFF_OFF_VALUES, ST_UNDERLINE_VALUES, ST_UNDERLINE_VALUE_SET, ST_VERTICAL_ALIGN_RUN, ST_EM, ST_TEXT_ALIGNMENT, ST_TEXT_DIRECTION, ST_TEXTBOX_TIGHT_WRAP, ST_TEXT_TRANSFORM, ST_JUSTIFICATION, FONT_FAMILY_SCHEMA, COLOR_SCHEMA, SPACING_SCHEMA, INDENT_SCHEMA, UNDERLINE_SCHEMA, BORDER_PROPERTIES_SCHEMA, SHADING_SCHEMA, LANG_SCHEMA, EAST_ASIAN_LAYOUT_SCHEMA, FIT_TEXT_SCHEMA, NUMBERING_PROPERTIES_SCHEMA, FRAME_PR_SCHEMA, PARAGRAPH_BORDERS_SCHEMA, TAB_STOP_SCHEMA, PROPERTY_REGISTRY, ALLOWED_KEYS_BY_CHANNEL, PROPERTY_INDEX, EXCLUDED_KEYS, INPUT_ALLOWED_KEYS, TARGET_ALLOWED_KEYS, OPTIONS_ALLOWED_KEYS, VALID_CHANNELS, Z_ORDER_RELATIVE_HEIGHT_MAX = 4294967295, nodeTypeValues, blockNodeTypeValues, deletableBlockNodeTypeValues, inlineNodeTypeValues, rangeSchema, textAddressSchema, textTargetSchema, blockNodeAddressSchema, deletableBlockNodeAddressSchema, tableAddressSchema, tableRowAddressSchema, tableCellAddressSchema, tableOrCellAddressSchema, paragraphAddressSchema, headingAddressSchema, listItemAddressSchema, paragraphTargetSchema, sectionAddressSchema, nodeAddressSchema, commentAddressSchema, trackedChangeAddressSchema, entityAddressSchema, selectionTargetSchema, deleteBehaviorSchema, resolvedHandleSchema, pageInfoSchema, receiptSuccessSchema, textMutationRangeSchema, textMutationResolutionSchema, textMutationSuccessSchema, matchBlockSchema, storyLocatorSchema, trackChangeRefSchema, createParagraphSuccessSchema, createHeadingSuccessSchema, headingLevelSchema, listsInsertSuccessSchema, listsMutateItemSuccessSchema, textSelectorSchema, nodeSelectorSchema, sdMutationResolutionSchema, sdMutationSuccessSchema, documentInfoCountsSchema, documentInfoOutlineItemSchema, documentInfoCapabilitiesSchema, documentStylesSchema, documentDefaultsSchema, listKindSchema, listInsertPositionSchema, sectionBreakTypeSchema, sectionOrientationSchema, sectionVerticalAlignSchema, sectionDirectionSchema, sectionHeaderFooterKindSchema, sectionHeaderFooterVariantSchema, sectionLineNumberRestartSchema, sectionPageNumberFormatSchema, sectionRangeDomainSchema, sectionPageMarginsSchema, sectionHeaderFooterMarginsSchema, sectionPageSetupSchema, sectionColumnsSchema, sectionLineNumberingSchema, sectionPageNumberingSchema, sectionHeaderFooterRefsSchema, sectionBorderSpecSchema, sectionPageBordersSchema, sectionMutationSuccessSchema, documentMutationSuccessSchema, paragraphMutationTargetSchema, paragraphMutationSuccessSchema, createSectionBreakSuccessSchema, trackChangeWordRevisionIdsSchema, capabilityReasonsSchema, capabilityFlagSchema, operationRuntimeCapabilitySchema, operationCapabilitiesSchema, inlinePropertyCapabilitySchema, formatCapabilitiesSchema, planEngineCapabilitiesSchema, nullableTableBorderSpecSchema, sdFragmentSchema, placementSchema, nestingPolicySchema, tableCreateLocationSchema, formatInlineAliasOperationSchemas, tocMutationFailureSchema, tocMutationSuccessSchema, tocEntryMutationFailureSchema, tocEntryMutationSuccessSchema, hyperlinkTargetSchema, hyperlinkReadPropertiesSchema, hyperlinkSpecSchema, hyperlinkPatchSchema, hyperlinkDomainSchema, hyperlinkMutationSuccessSchema, hyperlinkMutationFailureSchema, contentControlTargetSchema, contentControlMutationSuccessSchema, contentControlMutationFailureSchema, ccListResultSchema, ccInfoSchema, refFailureSchema, bookmarkAddressSchema, bookmarkMutation, footnoteAddressSchema, footnoteConfigScopeSchema, footnoteNumberingSchema, footnoteMutation, footnoteConfig, crossRefAddressSchema, crossRefTargetSchema, crossRefDisplaySchema, crossRefMutation, indexAddressSchema, indexEntryAddressSchema, indexConfigSchema, indexEntryDataSchema, indexEntryPatchSchema, indexMutation, indexEntryMutation, captionAddressSchema, captionMutation, captionConfig, fieldAddressSchema, fieldMutation, citationAddressSchema, citationSourceAddressSchema, bibliographyAddressSchema, citationMutation, citationSourceMutation, bibliographyMutation, citationPersonSchema, citationSourceFieldsSchema, tocCreateLocationSchema, authoritiesAddressSchema, authorityEntryAddressSchema, authoritiesConfigSchema, authorityEntryDataSchema, authorityEntryPatchSchema, authoritiesMutation, authorityEntryMutation, diffCoverageSchema, diffSummarySchema, diffSnapshotSchema, diffPayloadSchema, GROUP_METADATA, STEP_OP_CATALOG_UNFROZEN, PUBLIC_STEP_OP_CATALOG_UNFROZEN, PUBLIC_MUTATION_STEP_OP_IDS, PUBLIC_MUTATION_STEP_OP_SET, CAPABILITY_REASON_CODES, VALID_EDGE_VALUES, VALID_EDGE_NODE_TYPES, VALID_DOCUMENT_EDGES, VALID_REF_BOUNDARIES, VALID_ANCHOR_KINDS, RESOLVE_RANGE_ALLOWED_KEYS, SELECTION_CURRENT_ALLOWED_KEYS, CREATE_COMMENT_ALLOWED_KEYS, PATCH_COMMENT_ALLOWED_KEYS, STYLE_APPLY_INPUT_ALLOWED_KEYS, INLINE_ALIAS_INPUT_ALLOWED_KEYS, DELETE_INPUT_ALLOWED_KEYS, VALID_BEHAVIORS, CONTENT_KIND_SET, INLINE_KIND_SET, LEGACY_TOP_LEVEL_TYPES, TEXT_INSERT_ALLOWED_KEYS, STRUCTURAL_INSERT_ALLOWED_KEYS, VALID_INSERT_TYPES, LIST_KINDS, LIST_INSERT_POSITIONS, JOIN_DIRECTIONS, MUTATION_SCOPES, LEVEL_ALIGNMENTS, TRAILING_CHARACTERS, LIST_PRESET_IDS, VALID_BLOCK_NODE_TYPES$1, VALID_LIST_KINDS, VALID_INSERT_POSITIONS, VALID_JOIN_DIRECTIONS, VALID_MUTATION_SCOPES, VALID_LEVEL_ALIGNMENTS, VALID_TRAILING_CHARACTERS, VALID_LIST_PRESETS, VALID_CONTINUITY_VALUES, VALID_SEQUENCE_MODES, VALID_LIST_CREATE_MODES, TEXT_REPLACE_ALLOWED_KEYS, STRUCTURAL_REPLACE_ALLOWED_KEYS, VALID_HEADING_LEVELS, SECTION_BREAK_TYPES$1, SUPPORTED_DELETE_NODE_TYPES, REJECTED_DELETE_NODE_TYPES, VALID_BLOCK_NODE_TYPES, SNAPSHOT_VERSIONS, PAYLOAD_VERSIONS, VALID_STYLE_OPTION_FLAGS, TABLE_BORDER_COLOR_PATTERN, VALID_APPLY_TO_VALUES, VALID_BORDER_EDGE_KEYS, HEADER_FOOTER_KINDS$1, HEADER_FOOTER_VARIANTS$1, DEFAULT_SECTIONS_LIST_LIMIT = 250, SECTION_BREAK_TYPES, SECTION_ORIENTATIONS, SECTION_VERTICAL_ALIGNS, SECTION_DIRECTIONS, HEADER_FOOTER_KINDS, HEADER_FOOTER_VARIANTS, LINE_NUMBER_RESTARTS, PAGE_NUMBER_FORMATS, PAGE_BORDER_DISPLAYS, PAGE_BORDER_OFFSET_FROM_VALUES, PAGE_BORDER_Z_ORDER_VALUES, VALID_WRAP_TYPES, VALID_WRAP_SIDES, VALID_IMAGE_SIZE_UNITS, VALID_TOC_UPDATE_MODES, EDIT_ENTRY_PATCH_ALLOWED_KEYS, PATCH_FIELDS, CONTENT_CONTROL_TYPES, LOCK_MODES, CONTENT_CONTROL_APPEARANCES, VALID_NODE_KINDS, VALID_LOCK_MODES$1, VALID_CC_TYPES, VALID_CC_APPEARANCES, VALID_CONTENT_FORMATS, VALID_RAW_PATCH_OPS, VALID_SET_MODES, VALID_CREATE_LOCATION_KINDS, DEFAULT_PROTECTION_STATE, ADAPTER_GATED_PREFIXES, _buffers, _defaultCollectionId = null, _nextCollectionId = 1, generateV2HandlerEntity = (handlerName, translator$217) => ({
242706
242669
  handlerName,
242707
242670
  handler: (params) => {
242708
242671
  const { nodes } = params;
@@ -257183,7 +257146,7 @@ var isRegExp = (value) => {
257183
257146
  state.kern = kernNode.attributes["w:val"];
257184
257147
  }
257185
257148
  }, SuperConverter;
257186
- var init_SuperConverter_CyrStvpz_es = __esm(() => {
257149
+ var init_SuperConverter_4akUYfWt_es = __esm(() => {
257187
257150
  init_rolldown_runtime_Bg48TavK_es();
257188
257151
  init_jszip_C49i9kUs_es();
257189
257152
  init_xml_js_CqGKpaft_es();
@@ -270073,11 +270036,15 @@ var init_SuperConverter_CyrStvpz_es = __esm(() => {
270073
270036
  empty: { type: "boolean" },
270074
270037
  target: { oneOf: [textTargetSchema, { type: "null" }] },
270075
270038
  activeMarks: arraySchema({ type: "string" }),
270039
+ activeCommentIds: arraySchema({ type: "string" }),
270040
+ activeChangeIds: arraySchema({ type: "string" }),
270076
270041
  text: { type: "string" }
270077
270042
  }, [
270078
270043
  "empty",
270079
270044
  "target",
270080
- "activeMarks"
270045
+ "activeMarks",
270046
+ "activeCommentIds",
270047
+ "activeChangeIds"
270081
270048
  ])
270082
270049
  },
270083
270050
  "mutations.preview": {
@@ -271910,19 +271877,6 @@ var init_SuperConverter_CyrStvpz_es = __esm(() => {
271910
271877
  "expectedRevision",
271911
271878
  "in"
271912
271879
  ]);
271913
- VALID_ENTITY_TYPES = new Set(["comment", "trackedChange"]);
271914
- SCROLL_INTO_VIEW_ALLOWED_KEYS = new Set([
271915
- "target",
271916
- "block",
271917
- "behavior"
271918
- ]);
271919
- VALID_BLOCK_VALUES = new Set([
271920
- "start",
271921
- "center",
271922
- "end",
271923
- "nearest"
271924
- ]);
271925
- VALID_BEHAVIOR_VALUES = new Set(["auto", "smooth"]);
271926
271880
  SELECTION_CURRENT_ALLOWED_KEYS = new Set(["includeText"]);
271927
271881
  CREATE_COMMENT_ALLOWED_KEYS = new Set([
271928
271882
  "target",
@@ -294782,7 +294736,7 @@ var init_SuperConverter_CyrStvpz_es = __esm(() => {
294782
294736
  };
294783
294737
  });
294784
294738
 
294785
- // ../../packages/superdoc/dist/chunks/create-headless-toolbar-JcG-eLAZ.es.js
294739
+ // ../../packages/superdoc/dist/chunks/create-headless-toolbar-DeNFsEHx.es.js
294786
294740
  function parseSizeUnit(val = "0") {
294787
294741
  const length = val.toString() || "0";
294788
294742
  const value = Number.parseFloat(length);
@@ -296463,10 +296417,17 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, Extension = class Extension2 {
296463
296417
  active: false,
296464
296418
  disabled: true
296465
296419
  }];
296466
- return [command, entry.state({
296467
- context,
296468
- superdoc
296469
- })];
296420
+ try {
296421
+ return [command, entry.state({
296422
+ context,
296423
+ superdoc
296424
+ })];
296425
+ } catch {
296426
+ return [command, {
296427
+ active: false,
296428
+ disabled: true
296429
+ }];
296430
+ }
296470
296431
  });
296471
296432
  return Object.fromEntries(entries);
296472
296433
  }, createToolbarSnapshot = ({ superdoc, commands = [], toolbarRegistry }) => {
@@ -297404,8 +297365,8 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, Extension = class Extension2 {
297404
297365
  }
297405
297366
  };
297406
297367
  };
297407
- var init_create_headless_toolbar_JcG_eLAZ_es = __esm(() => {
297408
- init_SuperConverter_CyrStvpz_es();
297368
+ var init_create_headless_toolbar_DeNFsEHx_es = __esm(() => {
297369
+ init_SuperConverter_4akUYfWt_es();
297409
297370
  init_constants_DrU4EASo_es();
297410
297371
  init_dist_B8HfvhaK_es();
297411
297372
  CSS_DIMENSION_REGEX = /[\d-.]+(\w+)$/;
@@ -351614,7 +351575,7 @@ var init_remark_gfm_eZN6yzWQ_es = __esm(() => {
351614
351575
  init_remark_gfm_BhnWr3yf_es();
351615
351576
  });
351616
351577
 
351617
- // ../../packages/superdoc/dist/chunks/src-4pRutOwm.es.js
351578
+ // ../../packages/superdoc/dist/chunks/src-C-2U54wX.es.js
351618
351579
  function deleteProps(obj, propOrProps) {
351619
351580
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
351620
351581
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -360523,7 +360484,7 @@ function getMarksDiff(marksA = [], marksB = []) {
360523
360484
  if (!attrs)
360524
360485
  return {};
360525
360486
  const ignoredMarkKeys = /* @__PURE__ */ new Set;
360526
- if (TRACK_CHANGE_MARK_NAMES.has(markName))
360487
+ if (TRACK_CHANGE_MARK_NAMES$1.has(markName))
360527
360488
  for (const key2 of TRACK_CHANGE_IGNORED_ATTRIBUTE_KEYS)
360528
360489
  ignoredMarkKeys.add(key2);
360529
360490
  const normalized = {};
@@ -378608,57 +378569,27 @@ function resolveRange(hostEditor, input2) {
378608
378569
  storyLocator
378609
378570
  });
378610
378571
  }
378611
- async function scrollRangeIntoView(editor, input2) {
378612
- const presentation = editor.presentationEditor;
378613
- if (!presentation)
378614
- return { success: false };
378615
- if ("kind" in input2.target && input2.target.kind === "entity") {
378616
- if (typeof presentation.navigateTo !== "function")
378617
- return { success: false };
378618
- try {
378619
- return { success: await presentation.navigateTo(input2.target) };
378620
- } catch {
378621
- return { success: false };
378622
- }
378623
- }
378624
- if (typeof presentation.scrollToPositionAsync !== "function")
378625
- return { success: false };
378626
- try {
378627
- const firstSegment = "segments" in input2.target ? input2.target.segments[0] : {
378628
- blockId: input2.target.blockId,
378629
- range: input2.target.range
378630
- };
378631
- if (!firstSegment)
378632
- return { success: false };
378633
- const resolved = resolveTextTarget(editor, {
378634
- kind: "text",
378635
- blockId: firstSegment.blockId,
378636
- range: firstSegment.range
378637
- });
378638
- if (!resolved)
378639
- return { success: false };
378640
- return { success: await presentation.scrollToPositionAsync(resolved.from, {
378641
- block: input2.block ?? "center",
378642
- behavior: input2.behavior ?? "smooth"
378643
- }) };
378644
- } catch {
378645
- return { success: false };
378646
- }
378647
- }
378648
378572
  function resolveCurrentSelectionInfo(editor, input2) {
378649
378573
  const state = editor.state;
378650
378574
  if (!state)
378651
378575
  return {
378652
378576
  empty: true,
378653
378577
  target: null,
378654
- activeMarks: []
378578
+ activeMarks: [],
378579
+ activeCommentIds: [],
378580
+ activeChangeIds: []
378655
378581
  };
378656
378582
  const { from: from$1, to, empty: empty$1 } = state.selection;
378657
378583
  const segments = collectTextSegments(state.doc, from$1, to);
378584
+ const target = segments && segments.length > 0 ? buildTextTarget(segments) : null;
378585
+ const activeMarks = collectActiveMarks(state, from$1, to);
378586
+ const { commentIds: activeCommentIds, changeIds: activeChangeRawIds } = collectActiveEntityIds(state, from$1, to);
378658
378587
  const info = {
378659
378588
  empty: empty$1,
378660
- target: segments && segments.length > 0 ? buildTextTarget(segments) : null,
378661
- activeMarks: collectActiveMarks(state, from$1, to)
378589
+ target,
378590
+ activeMarks,
378591
+ activeCommentIds,
378592
+ activeChangeIds: mapRawChangeIdsToCanonical(editor, activeChangeRawIds)
378662
378593
  };
378663
378594
  if (input2.includeText && !empty$1)
378664
378595
  info.text = state.doc.textBetween(from$1, to, " ");
@@ -378707,6 +378638,68 @@ function readBlockId(node2) {
378707
378638
  const id2 = attrs.sdBlockId ?? attrs.id ?? attrs.blockId;
378708
378639
  return typeof id2 === "string" && id2.length > 0 ? id2 : null;
378709
378640
  }
378641
+ function mapRawChangeIdsToCanonical(editor, rawIds) {
378642
+ if (rawIds.length === 0)
378643
+ return rawIds;
378644
+ let grouped;
378645
+ try {
378646
+ grouped = groupTrackedChanges(editor);
378647
+ } catch {
378648
+ return [];
378649
+ }
378650
+ const rawToCanonical = /* @__PURE__ */ new Map;
378651
+ for (const change of grouped)
378652
+ rawToCanonical.set(change.rawId, change.id);
378653
+ const seen = /* @__PURE__ */ new Set;
378654
+ const out = [];
378655
+ for (const raw of rawIds) {
378656
+ const canonical = rawToCanonical.get(raw);
378657
+ if (!canonical)
378658
+ continue;
378659
+ if (seen.has(canonical))
378660
+ continue;
378661
+ seen.add(canonical);
378662
+ out.push(canonical);
378663
+ }
378664
+ return out;
378665
+ }
378666
+ function collectActiveEntityIds(state, from$1, to) {
378667
+ const commentIds = /* @__PURE__ */ new Set;
378668
+ const changeIds = /* @__PURE__ */ new Set;
378669
+ const collectFromMark = (markType, attrs) => {
378670
+ if (markType === COMMENT_MARK_NAME2) {
378671
+ const id2 = resolveCommentIdFromAttrs(attrs ?? {});
378672
+ if (typeof id2 === "string" && id2.length > 0)
378673
+ commentIds.add(id2);
378674
+ } else if (TRACK_CHANGE_MARK_NAMES.has(markType)) {
378675
+ const id2 = attrs?.id;
378676
+ if (typeof id2 === "string" && id2.length > 0)
378677
+ changeIds.add(id2);
378678
+ }
378679
+ };
378680
+ if (from$1 === to) {
378681
+ if (state.storedMarks)
378682
+ for (const mark2 of state.storedMarks)
378683
+ collectFromMark(mark2.type.name, mark2.attrs);
378684
+ const $pos = state.doc.resolve(from$1);
378685
+ for (const mark2 of $pos.marks())
378686
+ collectFromMark(mark2.type.name, mark2.attrs);
378687
+ } else
378688
+ state.doc.nodesBetween(from$1, to, (node2, pos) => {
378689
+ if (!node2.isText)
378690
+ return true;
378691
+ const start$1 = Math.max(pos, from$1);
378692
+ if (Math.min(pos + node2.nodeSize, to) <= start$1)
378693
+ return false;
378694
+ for (const mark2 of node2.marks)
378695
+ collectFromMark(mark2.type.name, mark2.attrs);
378696
+ return false;
378697
+ });
378698
+ return {
378699
+ commentIds: Array.from(commentIds),
378700
+ changeIds: Array.from(changeIds)
378701
+ };
378702
+ }
378710
378703
  function collectActiveMarks(state, from$1, to) {
378711
378704
  const names = /* @__PURE__ */ new Set;
378712
378705
  const stored = state.storedMarks;
@@ -378724,45 +378717,6 @@ function collectActiveMarks(state, from$1, to) {
378724
378717
  }
378725
378718
  return Array.from(names);
378726
378719
  }
378727
- function subscribeToSelection(editor, listener) {
378728
- let scheduled = false;
378729
- let cancelled = false;
378730
- let lastEmittedKey = null;
378731
- const flush = () => {
378732
- scheduled = false;
378733
- if (cancelled)
378734
- return;
378735
- const info = resolveCurrentSelectionInfo(editor, {});
378736
- const key2 = selectionInfoKey(info);
378737
- if (key2 === lastEmittedKey)
378738
- return;
378739
- lastEmittedKey = key2;
378740
- listener(info);
378741
- };
378742
- const schedule = () => {
378743
- if (scheduled || cancelled)
378744
- return;
378745
- scheduled = true;
378746
- queueMicrotask(flush);
378747
- };
378748
- editor.on("selectionUpdate", schedule);
378749
- editor.on("transaction", schedule);
378750
- return () => {
378751
- cancelled = true;
378752
- editor.off?.("selectionUpdate", schedule);
378753
- editor.off?.("transaction", schedule);
378754
- };
378755
- }
378756
- function selectionInfoKey(info) {
378757
- const target = info.target;
378758
- let targetKey;
378759
- if (!target)
378760
- targetKey = "null";
378761
- else
378762
- targetKey = target.segments.map((s2) => `${s2.blockId}:${s2.range.start}-${s2.range.end}`).join("|");
378763
- const marks = [...info.activeMarks].sort().join(",");
378764
- return `${info.empty ? "1" : "0"}:${targetKey}:${marks}`;
378765
- }
378766
378720
  function markTypesPresentEverywhere(doc$12, from$1, to) {
378767
378721
  let common = null;
378768
378722
  let aborted2 = false;
@@ -391625,14 +391579,8 @@ function assembleDocumentApiAdapters(editor) {
391625
391579
  remove: (input2, options) => authorityEntriesRemoveWrapper(editor, input2, options)
391626
391580
  }
391627
391581
  },
391628
- ranges: {
391629
- resolve: (input2) => resolveRange(editor, input2),
391630
- scrollIntoView: (input2) => scrollRangeIntoView(editor, input2)
391631
- },
391632
- selection: {
391633
- current: (input2) => resolveCurrentSelectionInfo(editor, input2),
391634
- onChange: (listener) => subscribeToSelection(editor, listener)
391635
- },
391582
+ ranges: { resolve: (input2) => resolveRange(editor, input2) },
391583
+ selection: { current: (input2) => resolveCurrentSelectionInfo(editor, input2) },
391636
391584
  query: { match: (input2) => queryMatchAdapter(editor, input2) },
391637
391585
  mutations: {
391638
391586
  preview: (input2) => previewPlan(editor, input2),
@@ -407118,6 +407066,59 @@ function createHiddenHost(doc$12, widthPx) {
407118
407066
  host
407119
407067
  };
407120
407068
  }
407069
+ function findRenderedCommentElements(host, commentId, storyKey) {
407070
+ if (!host || !commentId)
407071
+ return [];
407072
+ return Array.from(host.querySelectorAll("[data-comment-ids]")).filter((el) => {
407073
+ const raw = el.dataset.commentIds;
407074
+ if (!raw)
407075
+ return false;
407076
+ if (!raw.split(",").some((token$1) => token$1.trim() === commentId))
407077
+ return false;
407078
+ if (!storyKey)
407079
+ return true;
407080
+ const elStoryKey = el.dataset.storyKey;
407081
+ if (elStoryKey)
407082
+ return elStoryKey === storyKey;
407083
+ return storyKey === BODY_STORY_KEY;
407084
+ });
407085
+ }
407086
+ function findRenderedTrackedChangeElementsStrict(host, entityId, escapeAttrValue$1, storyKey) {
407087
+ if (!host || !entityId)
407088
+ return [];
407089
+ const baseSelector = `[data-track-change-id="${escapeAttrValue$1(entityId)}"]`;
407090
+ if (!storyKey)
407091
+ return Array.from(host.querySelectorAll(baseSelector));
407092
+ const storySelector = `${baseSelector}[data-story-key="${escapeAttrValue$1(storyKey)}"]`;
407093
+ return Array.from(host.querySelectorAll(storySelector));
407094
+ }
407095
+ function elementsToRangeRects(elements) {
407096
+ const result = [];
407097
+ for (const element3 of elements) {
407098
+ const rect = element3.getBoundingClientRect();
407099
+ if (![
407100
+ rect.top,
407101
+ rect.left,
407102
+ rect.right,
407103
+ rect.bottom,
407104
+ rect.width,
407105
+ rect.height
407106
+ ].every(Number.isFinite))
407107
+ continue;
407108
+ const pageEl = element3.closest(".superdoc-page");
407109
+ const pageIndexAttr = Number(pageEl?.dataset?.pageIndex ?? 0);
407110
+ result.push({
407111
+ pageIndex: Number.isFinite(pageIndexAttr) ? pageIndexAttr : 0,
407112
+ left: rect.left,
407113
+ top: rect.top,
407114
+ right: rect.right,
407115
+ bottom: rect.bottom,
407116
+ width: rect.width,
407117
+ height: rect.height
407118
+ });
407119
+ }
407120
+ return result;
407121
+ }
407121
407122
  function getFallbackCursorColor(clientId, fallbackColors) {
407122
407123
  return fallbackColors[clientId % fallbackColors.length];
407123
407124
  }
@@ -422081,7 +422082,7 @@ var Node$13 = class Node$14 {
422081
422082
  id: { default: null },
422082
422083
  edGrp: { default: null },
422083
422084
  displacedByCustomXml: { default: null }
422084
- }), 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, path5, value) => {
422085
+ }), PermEnd, PermEndBlock, IGNORED_ATTRIBUTE_KEYS, TRACK_CHANGE_MARK_NAMES$1, 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, path5, value) => {
422085
422086
  if (!path5.includes(".")) {
422086
422087
  target[path5] = value;
422087
422088
  return;
@@ -422357,7 +422358,7 @@ var Node$13 = class Node$14 {
422357
422358
  PassthroughBlock,
422358
422359
  Diffing
422359
422360
  ];
422360
- }, sanitizeNumber = (value, defaultNumber) => {
422361
+ }, ALL_TOOLBAR_COMMAND_IDS, EMPTY_ACTIVE_IDS, sanitizeNumber = (value, defaultNumber) => {
422361
422362
  let sanitized = value.replace(/[^0-9.]/g, "");
422362
422363
  sanitized = parseFloat(sanitized);
422363
422364
  if (isNaN(sanitized))
@@ -424996,7 +424997,7 @@ var Node$13 = class Node$14 {
424996
424997
  listener(snapshot2);
424997
424998
  } catch {}
424998
424999
  }
424999
- }, TRACK_MARK_TYPE_BY_NAME, EMITTABLE_BLOCK_TYPES, SDT_BLOCK_NODE_NAMES, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, SUPPORTED_DELETE_NODE_TYPES2, REJECTED_DELETE_NODE_TYPES2, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, OOXML_DEFAULT_FONT_SIZE_PT = 10, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, SYMBOL_FONT_NAMES, RFONTS_FAMILY_ATTRS, 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, BatchHistoryAdapter = class {
425000
+ }, TRACK_MARK_TYPE_BY_NAME, EMITTABLE_BLOCK_TYPES, SDT_BLOCK_NODE_NAMES, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, SUPPORTED_DELETE_NODE_TYPES2, REJECTED_DELETE_NODE_TYPES2, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, OOXML_DEFAULT_FONT_SIZE_PT = 10, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, SYMBOL_FONT_NAMES, RFONTS_FAMILY_ATTRS, 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, COMMENT_MARK_NAME2 = "commentMark", TRACK_CHANGE_MARK_NAMES, 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, BatchHistoryAdapter = class {
425000
425001
  #done = [];
425001
425002
  #redone = [];
425002
425003
  #listeners = /* @__PURE__ */ new Set;
@@ -433121,7 +433122,7 @@ menclose::after {
433121
433122
  while (prevPointer < previous3.length && nextPointer < next2.length) {
433122
433123
  const prevBlock = previous3[prevPointer];
433123
433124
  const nextBlock = next2[nextPointer];
433124
- if (prevBlock.id === nextBlock.id && shallowEqual(prevBlock, nextBlock)) {
433125
+ if (prevBlock.id === nextBlock.id && shallowEqual$1(prevBlock, nextBlock)) {
433125
433126
  lastStableIndex = nextPointer;
433126
433127
  stableBlockIds.add(prevBlock.id);
433127
433128
  prevPointer += 1;
@@ -433149,7 +433150,7 @@ menclose::after {
433149
433150
  deletedBlockIds,
433150
433151
  stableBlockIds
433151
433152
  };
433152
- }, shallowEqual = (a2, b$1) => {
433153
+ }, shallowEqual$1 = (a2, b$1) => {
433153
433154
  if (a2.kind !== b$1.kind)
433154
433155
  return false;
433155
433156
  if (a2.kind === "image" && b$1.kind === "image")
@@ -440693,12 +440694,12 @@ menclose::after {
440693
440694
  return;
440694
440695
  console.log(...args$1);
440695
440696
  }, 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;
440696
- var init_src_4pRutOwm_es = __esm(() => {
440697
+ var init_src_C_2U54wX_es = __esm(() => {
440697
440698
  init_rolldown_runtime_Bg48TavK_es();
440698
- init_SuperConverter_CyrStvpz_es();
440699
+ init_SuperConverter_4akUYfWt_es();
440699
440700
  init_jszip_C49i9kUs_es();
440700
440701
  init_uuid_qzgm05fK_es();
440701
- init_create_headless_toolbar_JcG_eLAZ_es();
440702
+ init_create_headless_toolbar_DeNFsEHx_es();
440702
440703
  init_constants_DrU4EASo_es();
440703
440704
  init_dist_B8HfvhaK_es();
440704
440705
  init_unified_Dsuw2be5_es();
@@ -458961,7 +458962,7 @@ function print() { __p += __j.call(arguments, '') }
458961
458962
  attributes: sharedAttributes
458962
458963
  });
458963
458964
  IGNORED_ATTRIBUTE_KEYS = new Set(["sdBlockId"]);
458964
- TRACK_CHANGE_MARK_NAMES = new Set([
458965
+ TRACK_CHANGE_MARK_NAMES$1 = new Set([
458965
458966
  "trackInsert",
458966
458967
  "trackDelete",
458967
458968
  "trackFormat"
@@ -459055,6 +459056,8 @@ function print() { __p += __j.call(arguments, '') }
459055
459056
  };
459056
459057
  }
459057
459058
  });
459059
+ ALL_TOOLBAR_COMMAND_IDS = Object.keys(createToolbarRegistry());
459060
+ EMPTY_ACTIVE_IDS = Object.freeze([]);
459058
459061
  formatRegistry = { rules: [
459059
459062
  {
459060
459063
  name: "bold",
@@ -463779,6 +463782,11 @@ function print() { __p += __j.call(arguments, '') }
463779
463782
  bullet: "disc"
463780
463783
  };
463781
463784
  EDGE_NODE_TYPES$1 = new Set(SELECTION_EDGE_NODE_TYPES);
463785
+ TRACK_CHANGE_MARK_NAMES = new Set([
463786
+ "trackInsert",
463787
+ "trackDelete",
463788
+ "trackFormat"
463789
+ ]);
463782
463790
  POINTS_TO_PIXELS = 96 / 72;
463783
463791
  PIXELS_TO_TWIPS = 1440 / 96;
463784
463792
  WORD_DEFAULT_TBL_LOOK = {
@@ -472733,6 +472741,26 @@ function print() { __p += __j.call(arguments, '') }
472733
472741
  pageIndex: rects[0]?.pageIndex ?? 0
472734
472742
  };
472735
472743
  }
472744
+ getEntityRects(target) {
472745
+ if (!target || typeof target !== "object")
472746
+ return [];
472747
+ const entityType = target.entityType;
472748
+ const entityId = target.entityId;
472749
+ if (typeof entityType !== "string" || typeof entityId !== "string" || entityId.length === 0)
472750
+ return [];
472751
+ const host = this.#visibleHost;
472752
+ if (!host)
472753
+ return [];
472754
+ const storyKey = resolveStoryKeyFromAddress(target.story);
472755
+ let elements;
472756
+ if (entityType === "trackedChange")
472757
+ elements = findRenderedTrackedChangeElementsStrict(host, entityId, escapeAttrValue, storyKey);
472758
+ else if (entityType === "comment")
472759
+ elements = findRenderedCommentElements(host, entityId, storyKey);
472760
+ else
472761
+ return [];
472762
+ return elementsToRangeRects(elements);
472763
+ }
472736
472764
  #getThreadSelectionBounds(data, relativeTo) {
472737
472765
  const start$1 = Number.isFinite(data.start ?? data.pos) ? Number(data.start ?? data.pos) : undefined;
472738
472766
  const end$1 = Number.isFinite(data.end) ? Number(data.end) : start$1;
@@ -477607,11 +477635,11 @@ var init_zipper_DbkgrypV_es = __esm(() => {
477607
477635
 
477608
477636
  // ../../packages/superdoc/dist/super-editor.es.js
477609
477637
  var init_super_editor_es = __esm(() => {
477610
- init_src_4pRutOwm_es();
477611
- init_SuperConverter_CyrStvpz_es();
477638
+ init_src_C_2U54wX_es();
477639
+ init_SuperConverter_4akUYfWt_es();
477612
477640
  init_jszip_C49i9kUs_es();
477613
477641
  init_xml_js_CqGKpaft_es();
477614
- init_create_headless_toolbar_JcG_eLAZ_es();
477642
+ init_create_headless_toolbar_DeNFsEHx_es();
477615
477643
  init_constants_DrU4EASo_es();
477616
477644
  init_dist_B8HfvhaK_es();
477617
477645
  init_unified_Dsuw2be5_es();
@@ -489383,8 +489411,10 @@ var init_schemas4 = __esm(() => {
489383
489411
  empty: { type: "boolean" },
489384
489412
  target: { oneOf: [textTargetSchema2, { type: "null" }] },
489385
489413
  activeMarks: arraySchema2({ type: "string" }),
489414
+ activeCommentIds: arraySchema2({ type: "string" }),
489415
+ activeChangeIds: arraySchema2({ type: "string" }),
489386
489416
  text: { type: "string" }
489387
- }, ["empty", "target", "activeMarks"])
489417
+ }, ["empty", "target", "activeMarks", "activeCommentIds", "activeChangeIds"])
489388
489418
  },
489389
489419
  "mutations.preview": {
489390
489420
  input: mutationsInputSchema,
@@ -491633,57 +491663,9 @@ var init_resolve = __esm(() => {
491633
491663
  RESOLVE_RANGE_ALLOWED_KEYS2 = new Set(["start", "end", "expectedRevision", "in"]);
491634
491664
  });
491635
491665
 
491636
- // ../../packages/document-api/src/ranges/scroll-into-view.ts
491637
- function isEntityAddress2(value) {
491638
- if (!isRecord3(value))
491639
- return false;
491640
- if (value.kind !== "entity")
491641
- return false;
491642
- if (typeof value.entityType !== "string" || !VALID_ENTITY_TYPES2.has(value.entityType))
491643
- return false;
491644
- if (typeof value.entityId !== "string" || value.entityId.length === 0)
491645
- return false;
491646
- return true;
491647
- }
491648
- function validateScrollIntoViewInput2(input2) {
491649
- if (!isRecord3(input2)) {
491650
- throw new DocumentApiValidationError3("INVALID_INPUT", "ranges.scrollIntoView input must be a non-null object.");
491651
- }
491652
- assertNoUnknownFields2(input2, SCROLL_INTO_VIEW_ALLOWED_KEYS2, "ranges.scrollIntoView");
491653
- const { target, block, behavior } = input2;
491654
- if (target === undefined || target === null) {
491655
- throw new DocumentApiValidationError3("INVALID_TARGET", "ranges.scrollIntoView requires a target.", {
491656
- field: "target"
491657
- });
491658
- }
491659
- if (!isTextAddress2(target) && !isTextTarget2(target) && !isEntityAddress2(target)) {
491660
- throw new DocumentApiValidationError3("INVALID_TARGET", "target must be a TextAddress, TextTarget, or EntityAddress object.", { field: "target", value: target });
491661
- }
491662
- if (block !== undefined && (typeof block !== "string" || !VALID_BLOCK_VALUES2.has(block))) {
491663
- throw new DocumentApiValidationError3("INVALID_INPUT", `block must be one of "start" | "center" | "end" | "nearest", got ${JSON.stringify(block)}.`, { field: "block", value: block });
491664
- }
491665
- if (behavior !== undefined && (typeof behavior !== "string" || !VALID_BEHAVIOR_VALUES2.has(behavior))) {
491666
- throw new DocumentApiValidationError3("INVALID_INPUT", `behavior must be "auto" or "smooth", got ${JSON.stringify(behavior)}.`, { field: "behavior", value: behavior });
491667
- }
491668
- }
491669
- async function executeScrollIntoView2(adapter, input2) {
491670
- validateScrollIntoViewInput2(input2);
491671
- return adapter.scrollIntoView(input2);
491672
- }
491673
- var VALID_ENTITY_TYPES2, SCROLL_INTO_VIEW_ALLOWED_KEYS2, VALID_BLOCK_VALUES2, VALID_BEHAVIOR_VALUES2;
491674
- var init_scroll_into_view = __esm(() => {
491675
- init_errors6();
491676
- init_validation_primitives();
491677
- VALID_ENTITY_TYPES2 = new Set(["comment", "trackedChange"]);
491678
- SCROLL_INTO_VIEW_ALLOWED_KEYS2 = new Set(["target", "block", "behavior"]);
491679
- VALID_BLOCK_VALUES2 = new Set(["start", "center", "end", "nearest"]);
491680
- VALID_BEHAVIOR_VALUES2 = new Set(["auto", "smooth"]);
491681
- });
491682
-
491683
491666
  // ../../packages/document-api/src/ranges/index.ts
491684
491667
  var init_ranges = __esm(() => {
491685
491668
  init_resolve();
491686
- init_scroll_into_view();
491687
491669
  });
491688
491670
 
491689
491671
  // ../../packages/document-api/src/selection/selection.ts
@@ -497577,9 +497559,6 @@ function createDocumentApi2(adapters) {
497577
497559
  ranges: {
497578
497560
  resolve(input2) {
497579
497561
  return executeResolveRange2(adapters.ranges, input2);
497580
- },
497581
- scrollIntoView(input2) {
497582
- return executeScrollIntoView2(adapters.ranges, input2);
497583
497562
  }
497584
497563
  },
497585
497564
  selection: {
@@ -497589,13 +497568,6 @@ function createDocumentApi2(adapters) {
497589
497568
  throw new DocumentApiValidationError3("SELECTION_ADAPTER_UNAVAILABLE", "No selection adapter was registered. Pass `selection` in DocumentApiAdapters to call selection.current().");
497590
497569
  }
497591
497570
  return executeSelectionCurrent2(adapter, input2);
497592
- },
497593
- onChange(listener) {
497594
- const adapter = adapters.selection;
497595
- if (!adapter) {
497596
- throw new DocumentApiValidationError3("SELECTION_ADAPTER_UNAVAILABLE", "No selection adapter was registered. Pass `selection` in DocumentApiAdapters to call selection.onChange().");
497597
- }
497598
- return adapter.onChange(listener);
497599
497571
  }
497600
497572
  },
497601
497573
  mutations: {
@@ -497683,7 +497655,6 @@ var init_src = __esm(() => {
497683
497655
  init_story_validator();
497684
497656
  init_delete();
497685
497657
  init_resolve();
497686
- init_scroll_into_view();
497687
497658
  init_selection();
497688
497659
  init_insert();
497689
497660
  init_lists();
@@ -498278,7 +498249,7 @@ function isInlineHost2(node3) {
498278
498249
  function relevantMarks2(marks) {
498279
498250
  if (!marks?.length)
498280
498251
  return [];
498281
- return marks.filter((mark2) => mark2.type?.name === LINK_MARK_NAME2 || mark2.type?.name === COMMENT_MARK_NAME2);
498252
+ return marks.filter((mark2) => mark2.type?.name === LINK_MARK_NAME2 || mark2.type?.name === COMMENT_MARK_NAME3);
498282
498253
  }
498283
498254
  function closeMarkSpan2(state, key2, endOffset, endPos) {
498284
498255
  const active = state.activeMarks.get(key2);
@@ -498288,7 +498259,7 @@ function closeMarkSpan2(state, key2, endOffset, endPos) {
498288
498259
  if (endOffset <= active.startOffset)
498289
498260
  return;
498290
498261
  const markType = active.mark.type?.name;
498291
- const nodeType = markType === LINK_MARK_NAME2 ? "hyperlink" : markType === COMMENT_MARK_NAME2 ? "comment" : undefined;
498262
+ const nodeType = markType === LINK_MARK_NAME2 ? "hyperlink" : markType === COMMENT_MARK_NAME3 ? "comment" : undefined;
498292
498263
  if (!nodeType)
498293
498264
  return;
498294
498265
  const attrs = active.mark.attrs ?? {};
@@ -498492,9 +498463,9 @@ function findInlineByType2(index2, nodeType) {
498492
498463
  return index2.candidates;
498493
498464
  return index2.byType.get(nodeType) ?? [];
498494
498465
  }
498495
- var LINK_MARK_NAME2 = "link", COMMENT_MARK_NAME2, SUPPORTED_INLINE_TYPES2;
498466
+ var LINK_MARK_NAME2 = "link", COMMENT_MARK_NAME3, SUPPORTED_INLINE_TYPES2;
498496
498467
  var init_inline_address_resolver = __esm(() => {
498497
- COMMENT_MARK_NAME2 = CommentMarkName2;
498468
+ COMMENT_MARK_NAME3 = CommentMarkName2;
498498
498469
  SUPPORTED_INLINE_TYPES2 = new Set([
498499
498470
  "run",
498500
498471
  "bookmark",
@@ -588987,65 +588958,25 @@ var init_range_resolver = __esm(() => {
588987
588958
  EDGE_NODE_TYPES2 = new Set(SELECTION_EDGE_NODE_TYPES2);
588988
588959
  });
588989
588960
 
588990
- // ../../packages/super-editor/src/editors/v1/document-api-adapters/helpers/scroll-into-view-adapter.ts
588991
- async function scrollRangeIntoView2(editor, input2) {
588992
- const presentation = editor.presentationEditor;
588993
- if (!presentation) {
588994
- return { success: false };
588995
- }
588996
- if ("kind" in input2.target && input2.target.kind === "entity") {
588997
- if (typeof presentation.navigateTo !== "function") {
588998
- return { success: false };
588999
- }
589000
- try {
589001
- const ok5 = await presentation.navigateTo(input2.target);
589002
- return { success: ok5 };
589003
- } catch {
589004
- return { success: false };
589005
- }
589006
- }
589007
- if (typeof presentation.scrollToPositionAsync !== "function") {
589008
- return { success: false };
589009
- }
589010
- try {
589011
- const firstSegment = "segments" in input2.target ? input2.target.segments[0] : { blockId: input2.target.blockId, range: input2.target.range };
589012
- if (!firstSegment)
589013
- return { success: false };
589014
- const resolved = resolveTextTarget2(editor, {
589015
- kind: "text",
589016
- blockId: firstSegment.blockId,
589017
- range: firstSegment.range
589018
- });
589019
- if (!resolved)
589020
- return { success: false };
589021
- const ok5 = await presentation.scrollToPositionAsync(resolved.from, {
589022
- block: input2.block ?? "center",
589023
- behavior: input2.behavior ?? "smooth"
589024
- });
589025
- return { success: ok5 };
589026
- } catch {
589027
- return { success: false };
589028
- }
589029
- }
589030
- var init_scroll_into_view_adapter = __esm(() => {
589031
- init_adapter_utils();
589032
- });
589033
-
589034
588961
  // ../../packages/super-editor/src/editors/v1/document-api-adapters/helpers/selection-info-resolver.ts
589035
588962
  function resolveCurrentSelectionInfo2(editor, input2) {
589036
588963
  const state = editor.state;
589037
588964
  if (!state) {
589038
- return { empty: true, target: null, activeMarks: [] };
588965
+ return { empty: true, target: null, activeMarks: [], activeCommentIds: [], activeChangeIds: [] };
589039
588966
  }
589040
588967
  const sel = state.selection;
589041
588968
  const { from: from4, to, empty: empty6 } = sel;
589042
588969
  const segments = collectTextSegments2(state.doc, from4, to);
589043
588970
  const target = segments && segments.length > 0 ? buildTextTarget3(segments) : null;
589044
588971
  const activeMarks = collectActiveMarks2(state, from4, to);
588972
+ const { commentIds: activeCommentIds, changeIds: activeChangeRawIds } = collectActiveEntityIds2(state, from4, to);
588973
+ const activeChangeIds = mapRawChangeIdsToCanonical2(editor, activeChangeRawIds);
589045
588974
  const info = {
589046
588975
  empty: empty6,
589047
588976
  target,
589048
- activeMarks
588977
+ activeMarks,
588978
+ activeCommentIds,
588979
+ activeChangeIds
589049
588980
  };
589050
588981
  if (input2.includeText && !empty6) {
589051
588982
  info.text = state.doc.textBetween(from4, to, " ");
@@ -589089,6 +589020,69 @@ function readBlockId2(node4) {
589089
589020
  const id2 = attrs.sdBlockId ?? attrs.id ?? attrs.blockId;
589090
589021
  return typeof id2 === "string" && id2.length > 0 ? id2 : null;
589091
589022
  }
589023
+ function mapRawChangeIdsToCanonical2(editor, rawIds) {
589024
+ if (rawIds.length === 0)
589025
+ return rawIds;
589026
+ let grouped;
589027
+ try {
589028
+ grouped = groupTrackedChanges2(editor);
589029
+ } catch {
589030
+ return [];
589031
+ }
589032
+ const rawToCanonical = new Map;
589033
+ for (const change of grouped) {
589034
+ rawToCanonical.set(change.rawId, change.id);
589035
+ }
589036
+ const seen = new Set;
589037
+ const out = [];
589038
+ for (const raw of rawIds) {
589039
+ const canonical = rawToCanonical.get(raw);
589040
+ if (!canonical)
589041
+ continue;
589042
+ if (seen.has(canonical))
589043
+ continue;
589044
+ seen.add(canonical);
589045
+ out.push(canonical);
589046
+ }
589047
+ return out;
589048
+ }
589049
+ function collectActiveEntityIds2(state, from4, to) {
589050
+ const commentIds = new Set;
589051
+ const changeIds = new Set;
589052
+ const collectFromMark = (markType, attrs) => {
589053
+ if (markType === COMMENT_MARK_NAME4) {
589054
+ const id2 = resolveCommentIdFromAttrs2(attrs ?? {});
589055
+ if (typeof id2 === "string" && id2.length > 0)
589056
+ commentIds.add(id2);
589057
+ } else if (TRACK_CHANGE_MARK_NAMES2.has(markType)) {
589058
+ const id2 = attrs?.id;
589059
+ if (typeof id2 === "string" && id2.length > 0)
589060
+ changeIds.add(id2);
589061
+ }
589062
+ };
589063
+ if (from4 === to) {
589064
+ if (state.storedMarks) {
589065
+ for (const mark2 of state.storedMarks)
589066
+ collectFromMark(mark2.type.name, mark2.attrs);
589067
+ }
589068
+ const $pos = state.doc.resolve(from4);
589069
+ for (const mark2 of $pos.marks())
589070
+ collectFromMark(mark2.type.name, mark2.attrs);
589071
+ } else {
589072
+ state.doc.nodesBetween(from4, to, (node4, pos) => {
589073
+ if (!node4.isText)
589074
+ return true;
589075
+ const start2 = Math.max(pos, from4);
589076
+ const end = Math.min(pos + node4.nodeSize, to);
589077
+ if (end <= start2)
589078
+ return false;
589079
+ for (const mark2 of node4.marks)
589080
+ collectFromMark(mark2.type.name, mark2.attrs);
589081
+ return false;
589082
+ });
589083
+ }
589084
+ return { commentIds: Array.from(commentIds), changeIds: Array.from(changeIds) };
589085
+ }
589092
589086
  function collectActiveMarks2(state, from4, to) {
589093
589087
  const names = new Set;
589094
589088
  const stored = state.storedMarks;
@@ -589108,46 +589102,6 @@ function collectActiveMarks2(state, from4, to) {
589108
589102
  }
589109
589103
  return Array.from(names);
589110
589104
  }
589111
- function subscribeToSelection2(editor, listener) {
589112
- let scheduled = false;
589113
- let cancelled = false;
589114
- let lastEmittedKey = null;
589115
- const flush = () => {
589116
- scheduled = false;
589117
- if (cancelled)
589118
- return;
589119
- const info = resolveCurrentSelectionInfo2(editor, {});
589120
- const key2 = selectionInfoKey2(info);
589121
- if (key2 === lastEmittedKey)
589122
- return;
589123
- lastEmittedKey = key2;
589124
- listener(info);
589125
- };
589126
- const schedule = () => {
589127
- if (scheduled || cancelled)
589128
- return;
589129
- scheduled = true;
589130
- queueMicrotask(flush);
589131
- };
589132
- editor.on("selectionUpdate", schedule);
589133
- editor.on("transaction", schedule);
589134
- return () => {
589135
- cancelled = true;
589136
- editor.off?.("selectionUpdate", schedule);
589137
- editor.off?.("transaction", schedule);
589138
- };
589139
- }
589140
- function selectionInfoKey2(info) {
589141
- const target = info.target;
589142
- let targetKey;
589143
- if (!target) {
589144
- targetKey = "null";
589145
- } else {
589146
- targetKey = target.segments.map((s2) => `${s2.blockId}:${s2.range.start}-${s2.range.end}`).join("|");
589147
- }
589148
- const marks = [...info.activeMarks].sort().join(",");
589149
- return `${info.empty ? "1" : "0"}:${targetKey}:${marks}`;
589150
- }
589151
589105
  function markTypesPresentEverywhere2(doc6, from4, to) {
589152
589106
  let common = null;
589153
589107
  let aborted2 = false;
@@ -589177,7 +589131,11 @@ function markTypesPresentEverywhere2(doc6, from4, to) {
589177
589131
  });
589178
589132
  return common ?? new Set;
589179
589133
  }
589180
- var init_selection_info_resolver = () => {};
589134
+ var COMMENT_MARK_NAME4 = "commentMark", TRACK_CHANGE_MARK_NAMES2;
589135
+ var init_selection_info_resolver = __esm(() => {
589136
+ init_tracked_change_resolver();
589137
+ TRACK_CHANGE_MARK_NAMES2 = new Set(["trackInsert", "trackDelete", "trackFormat"]);
589138
+ });
589181
589139
 
589182
589140
  // ../../packages/super-editor/src/editors/v1/document-api-adapters/helpers/table-target-resolver.ts
589183
589141
  function resolveLocatorToCandidate2(editor, locator, operationName) {
@@ -595207,7 +595165,7 @@ function getMarksDiff2(marksA = [], marksB = []) {
595207
595165
  return {};
595208
595166
  }
595209
595167
  const ignoredMarkKeys = new Set;
595210
- if (TRACK_CHANGE_MARK_NAMES2.has(markName)) {
595168
+ if (TRACK_CHANGE_MARK_NAMES3.has(markName)) {
595211
595169
  for (const key2 of TRACK_CHANGE_IGNORED_ATTRIBUTE_KEYS2) {
595212
595170
  ignoredMarkKeys.add(key2);
595213
595171
  }
@@ -595364,10 +595322,10 @@ function deepEquals2(a2, b2) {
595364
595322
  }
595365
595323
  return false;
595366
595324
  }
595367
- var IGNORED_ATTRIBUTE_KEYS2, TRACK_CHANGE_MARK_NAMES2, TRACK_CHANGE_IGNORED_ATTRIBUTE_KEYS2;
595325
+ var IGNORED_ATTRIBUTE_KEYS2, TRACK_CHANGE_MARK_NAMES3, TRACK_CHANGE_IGNORED_ATTRIBUTE_KEYS2;
595368
595326
  var init_attributes_diffing = __esm(() => {
595369
595327
  IGNORED_ATTRIBUTE_KEYS2 = new Set(["sdBlockId"]);
595370
- TRACK_CHANGE_MARK_NAMES2 = new Set(["trackInsert", "trackDelete", "trackFormat"]);
595328
+ TRACK_CHANGE_MARK_NAMES3 = new Set(["trackInsert", "trackDelete", "trackFormat"]);
595371
595329
  TRACK_CHANGE_IGNORED_ATTRIBUTE_KEYS2 = new Set(["id", "sourceId"]);
595372
595330
  });
595373
595331
 
@@ -607573,12 +607531,10 @@ function assembleDocumentApiAdapters2(editor) {
607573
607531
  }
607574
607532
  },
607575
607533
  ranges: {
607576
- resolve: (input2) => resolveRange2(editor, input2),
607577
- scrollIntoView: (input2) => scrollRangeIntoView2(editor, input2)
607534
+ resolve: (input2) => resolveRange2(editor, input2)
607578
607535
  },
607579
607536
  selection: {
607580
- current: (input2) => resolveCurrentSelectionInfo2(editor, input2),
607581
- onChange: (listener) => subscribeToSelection2(editor, listener)
607537
+ current: (input2) => resolveCurrentSelectionInfo2(editor, input2)
607582
607538
  },
607583
607539
  query: {
607584
607540
  match: (input2) => queryMatchAdapter2(editor, input2)
@@ -607628,7 +607584,6 @@ var init_assemble_adapters = __esm(() => {
607628
607584
  init_preview();
607629
607585
  init_query_match_adapter();
607630
607586
  init_range_resolver();
607631
- init_scroll_into_view_adapter();
607632
607587
  init_selection_info_resolver();
607633
607588
  init_revision_tracker();
607634
607589
  init_story_revision_store();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superdoc-dev/mcp",
3
- "version": "0.3.0-next.6",
3
+ "version": "0.3.0-next.8",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "superdoc-mcp": "./dist/index.js"
@@ -11,8 +11,8 @@
11
11
  "dependencies": {
12
12
  "@modelcontextprotocol/sdk": "^1.26.0",
13
13
  "zod": "^4.3.6",
14
- "@superdoc-dev/sdk": "1.7.0",
15
- "@superdoc/document-api": "0.0.1"
14
+ "@superdoc/document-api": "0.0.1",
15
+ "@superdoc-dev/sdk": "1.7.0"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@types/bun": "^1.3.8",