@superdoc-dev/cli 0.3.0-next.15 → 0.3.0-next.17

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 +918 -270
  2. package/package.json +9 -9
package/dist/index.js CHANGED
@@ -1372,8 +1372,8 @@ var init_operation_definitions = __esm(() => {
1372
1372
  },
1373
1373
  info: {
1374
1374
  memberPath: "info",
1375
- description: "Return document summary info including word, character, paragraph, heading, table, image, comment, tracked-change, SDT-field, and list counts, plus outline and capabilities.",
1376
- expectedResult: "Returns a DocumentInfo object with counts (words, characters, paragraphs, headings, tables, images, comments, trackedChanges, sdtFields, lists), document outline, capability flags, and revision.",
1375
+ description: "Return document summary info including word, character, paragraph, heading, table, image, comment, tracked-change, SDT-field, list, and page counts, plus outline and capabilities.",
1376
+ expectedResult: "Returns a DocumentInfo object with counts (words, characters, paragraphs, headings, tables, images, comments, trackedChanges, sdtFields, lists, and optionally pages when pagination is active), document outline, capability flags, and revision.",
1377
1377
  requiresDocumentContext: true,
1378
1378
  metadata: readOperation(),
1379
1379
  referenceDocPath: "info.mdx",
@@ -8026,7 +8026,8 @@ var init_schemas = __esm(() => {
8026
8026
  comments: { type: "integer" },
8027
8027
  trackedChanges: { type: "integer" },
8028
8028
  sdtFields: { type: "integer" },
8029
- lists: { type: "integer" }
8029
+ lists: { type: "integer" },
8030
+ pages: { type: "integer" }
8030
8031
  }, [
8031
8032
  "words",
8032
8033
  "characters",
@@ -39075,7 +39076,7 @@ var init_remark_gfm_z_sDF4ss_es = __esm(() => {
39075
39076
  emptyOptions2 = {};
39076
39077
  });
39077
39078
 
39078
- // ../../packages/superdoc/dist/chunks/SuperConverter-ClF1lbF9.es.js
39079
+ // ../../packages/superdoc/dist/chunks/SuperConverter-hvBoS9gB.es.js
39079
39080
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
39080
39081
  const fieldValue = extension$1.config[field];
39081
39082
  if (typeof fieldValue === "function")
@@ -45659,6 +45660,14 @@ function createStrictTogglePropertyHandler(xmlName, sdName = null) {
45659
45660
  }
45660
45661
  };
45661
45662
  }
45663
+ function stripUnsupportedTableIdentityAttributes(attrs) {
45664
+ if (!attrs || typeof attrs !== "object")
45665
+ return {};
45666
+ const filteredAttrs = { ...attrs };
45667
+ for (const attrName of UNSUPPORTED_TABLE_IDENTITY_ATTRS)
45668
+ delete filteredAttrs[attrName];
45669
+ return filteredAttrs;
45670
+ }
45662
45671
  function createMeasurementPropertyHandler(xmlName, sdName = null) {
45663
45672
  if (!sdName)
45664
45673
  sdName = xmlName.split(":")[1];
@@ -47891,10 +47900,11 @@ function encode$48(params, encodedAttrs) {
47891
47900
  }
47892
47901
  function decode$50(params, decodedAttrs) {
47893
47902
  const translated = translateTableCell(params);
47894
- if (decodedAttrs && Object.keys(decodedAttrs).length)
47903
+ const filteredDecodedAttrs = stripUnsupportedTableIdentityAttributes(decodedAttrs);
47904
+ if (Object.keys(filteredDecodedAttrs).length)
47895
47905
  translated.attributes = {
47896
47906
  ...translated.attributes || {},
47897
- ...decodedAttrs
47907
+ ...filteredDecodedAttrs
47898
47908
  };
47899
47909
  return translated;
47900
47910
  }
@@ -64353,50 +64363,103 @@ function toIdentityValue(value) {
64353
64363
  if (typeof value === "number" && Number.isFinite(value))
64354
64364
  return String(value);
64355
64365
  }
64356
- function resolvePrimaryBlockIdentity(node3) {
64366
+ function getBlockIdentityAttrs(node3) {
64357
64367
  if (!node3 || typeof node3 !== "object")
64358
- return;
64359
- const attrPriority = BLOCK_IDENTITY_ATTRS[node3.type];
64360
- if (!attrPriority)
64361
- return;
64368
+ return [];
64369
+ return BLOCK_IDENTITY_ATTRS[node3.type] ?? [];
64370
+ }
64371
+ function getExplicitIdentityEntries(node3) {
64372
+ const attrPriority = getBlockIdentityAttrs(node3);
64373
+ if (attrPriority.length === 0)
64374
+ return [];
64362
64375
  const attrs = typeof node3.attrs === "object" && node3.attrs ? node3.attrs : {};
64376
+ const identityEntries = [];
64363
64377
  for (const attr of attrPriority) {
64364
64378
  const value = toIdentityValue(attrs[attr]);
64365
64379
  if (value)
64366
- return {
64367
- id: value,
64368
- source: attr
64369
- };
64380
+ identityEntries.push({
64381
+ attr,
64382
+ value
64383
+ });
64370
64384
  }
64385
+ return identityEntries;
64371
64386
  }
64372
- function nextUniqueDocxId(usedIds) {
64373
- let id = generateDocxRandomId();
64374
- while (usedIds.has(id))
64375
- id = generateDocxRandomId();
64376
- return id;
64387
+ function groupIdentityEntriesByValue(identityEntries) {
64388
+ const groupsByValue = /* @__PURE__ */ new Map;
64389
+ for (const entry of identityEntries) {
64390
+ const existingGroup = groupsByValue.get(entry.value);
64391
+ if (existingGroup) {
64392
+ existingGroup.attrs.push(entry.attr);
64393
+ continue;
64394
+ }
64395
+ groupsByValue.set(entry.value, {
64396
+ value: entry.value,
64397
+ attrs: [entry.attr]
64398
+ });
64399
+ }
64400
+ return [...groupsByValue.values()];
64377
64401
  }
64378
- function dedupeBlockIdentitiesInNode(node3, usedIds) {
64402
+ function shouldSynthesizeParaId(node3) {
64403
+ return Boolean(node3 && typeof node3 === "object" && SYNTHETIC_PARA_ID_TYPES.has(node3.type));
64404
+ }
64405
+ function collectExplicitBlockIdentities(node3, reservedIds) {
64379
64406
  if (!node3 || typeof node3 !== "object")
64380
64407
  return;
64381
- const identity = resolvePrimaryBlockIdentity(node3);
64382
- if (identity)
64383
- if (usedIds.has(identity.id)) {
64384
- const replacementId = nextUniqueDocxId(usedIds);
64385
- node3.attrs = {
64386
- ...node3.attrs,
64387
- [identity.source]: replacementId
64388
- };
64389
- usedIds.add(replacementId);
64390
- } else
64391
- usedIds.add(identity.id);
64408
+ const identityEntries = getExplicitIdentityEntries(node3);
64409
+ for (const { value } of groupIdentityEntriesByValue(identityEntries))
64410
+ reservedIds.add(value);
64411
+ if (Array.isArray(node3.content))
64412
+ node3.content.forEach((child) => collectExplicitBlockIdentities(child, reservedIds));
64413
+ }
64414
+ function createDeterministicDocxIdAllocator(reservedIds) {
64415
+ let nextValue = 1;
64416
+ return () => {
64417
+ while (nextValue <= MAX_DOCX_ID) {
64418
+ const id = nextValue.toString(16).toUpperCase().padStart(DOCX_ID_LENGTH, "0");
64419
+ nextValue += 1;
64420
+ if (reservedIds.has(id))
64421
+ continue;
64422
+ reservedIds.add(id);
64423
+ return id;
64424
+ }
64425
+ throw new Error("Unable to allocate a unique synthetic DOCX block id.");
64426
+ };
64427
+ }
64428
+ function setBlockIdentity(node3, attrName, value) {
64429
+ node3.attrs = {
64430
+ ...node3.attrs ?? {},
64431
+ [attrName]: value
64432
+ };
64433
+ }
64434
+ function normalizeBlockIdentitiesInNode(node3, seenIds, allocateDocxId) {
64435
+ if (!node3 || typeof node3 !== "object")
64436
+ return;
64437
+ const groupedIdentities = groupIdentityEntriesByValue(getExplicitIdentityEntries(node3));
64438
+ if (groupedIdentities.length > 0)
64439
+ for (const identityGroup of groupedIdentities)
64440
+ if (seenIds.has(identityGroup.value)) {
64441
+ const replacementId = allocateDocxId();
64442
+ for (const attr of identityGroup.attrs)
64443
+ setBlockIdentity(node3, attr, replacementId);
64444
+ seenIds.add(replacementId);
64445
+ } else
64446
+ seenIds.add(identityGroup.value);
64447
+ else if (shouldSynthesizeParaId(node3)) {
64448
+ const syntheticParaId = allocateDocxId();
64449
+ setBlockIdentity(node3, "paraId", syntheticParaId);
64450
+ seenIds.add(syntheticParaId);
64451
+ }
64392
64452
  if (Array.isArray(node3.content))
64393
- node3.content.forEach((child) => dedupeBlockIdentitiesInNode(child, usedIds));
64453
+ node3.content.forEach((child) => normalizeBlockIdentitiesInNode(child, seenIds, allocateDocxId));
64394
64454
  }
64395
64455
  function normalizeDuplicateBlockIdentitiesInContent(content$2 = []) {
64396
64456
  if (!Array.isArray(content$2) || content$2.length === 0)
64397
64457
  return content$2;
64398
- const usedIds = /* @__PURE__ */ new Set;
64399
- content$2.forEach((node3) => dedupeBlockIdentitiesInNode(node3, usedIds));
64458
+ const reservedIds = /* @__PURE__ */ new Set;
64459
+ content$2.forEach((node3) => collectExplicitBlockIdentities(node3, reservedIds));
64460
+ const allocateDocxId = createDeterministicDocxIdAllocator(reservedIds);
64461
+ const seenIds = /* @__PURE__ */ new Set;
64462
+ content$2.forEach((node3) => normalizeBlockIdentitiesInNode(node3, seenIds, allocateDocxId));
64400
64463
  return content$2;
64401
64464
  }
64402
64465
  function patchNumberingDefinitions(docx) {
@@ -68563,7 +68626,7 @@ var isRegExp = (value) => {
68563
68626
  consumed: 1
68564
68627
  };
68565
68628
  }
68566
- }), createSingleIntegerPropertyHandler = (xmlName, sdName = null) => createSingleAttrPropertyHandler(xmlName, sdName, "w:val", parseInteger, integerToString), parseMeasurementValue = (value, type) => {
68629
+ }), createSingleIntegerPropertyHandler = (xmlName, sdName = null) => createSingleAttrPropertyHandler(xmlName, sdName, "w:val", parseInteger, integerToString), UNSUPPORTED_TABLE_IDENTITY_ATTRS, parseMeasurementValue = (value, type) => {
68567
68630
  if (value == null)
68568
68631
  return;
68569
68632
  const strValue = String(value);
@@ -79226,7 +79289,7 @@ var isRegExp = (value) => {
79226
79289
  }
79227
79290
  return {
79228
79291
  name: "w:tbl",
79229
- attributes: decodedAttrs || {},
79292
+ attributes: stripUnsupportedTableIdentityAttributes(decodedAttrs),
79230
79293
  elements
79231
79294
  };
79232
79295
  }, config$23, translator$8, encode$40 = (attributes) => {
@@ -81432,7 +81495,7 @@ var isRegExp = (value) => {
81432
81495
  nodes: [translator$3.encode(params)],
81433
81496
  consumed: 1
81434
81497
  };
81435
- }, tabNodeEntityHandler, footnoteReferenceHandlerEntity, tableNodeHandlerEntity, tableOfContentsHandlerEntity, indexHandlerEntity, indexEntryHandlerEntity, commentRangeStartHandlerEntity, commentRangeEndHandlerEntity, permStartHandlerEntity, permEndHandlerEntity, PARAGRAPH_IDENTITY_ATTRS, TABLE_IDENTITY_ATTRS, DEFAULT_BLOCK_IDENTITY_ATTRS, BLOCK_IDENTITY_ATTRS, WORD_2012_NAMESPACE = "http://schemas.microsoft.com/office/word/2012/wordml", deepClone = (value) => JSON.parse(JSON.stringify(value)), getNumberingRoot = (numberingXml) => {
81498
+ }, tabNodeEntityHandler, footnoteReferenceHandlerEntity, tableNodeHandlerEntity, tableOfContentsHandlerEntity, indexHandlerEntity, indexEntryHandlerEntity, commentRangeStartHandlerEntity, commentRangeEndHandlerEntity, permStartHandlerEntity, permEndHandlerEntity, PARAGRAPH_IDENTITY_ATTRS, TABLE_IDENTITY_ATTRS, DEFAULT_BLOCK_IDENTITY_ATTRS, SYNTHETIC_PARA_ID_TYPES, DOCX_ID_LENGTH = 8, MAX_DOCX_ID = 4294967295, BLOCK_IDENTITY_ATTRS, WORD_2012_NAMESPACE = "http://schemas.microsoft.com/office/word/2012/wordml", deepClone = (value) => JSON.parse(JSON.stringify(value)), getNumberingRoot = (numberingXml) => {
81436
81499
  if (!numberingXml?.elements?.length)
81437
81500
  return null;
81438
81501
  return numberingXml.elements.find((el) => el?.name === "w:numbering") || numberingXml.elements[0] || null;
@@ -82459,7 +82522,7 @@ var isRegExp = (value) => {
82459
82522
  state.kern = kernNode.attributes["w:val"];
82460
82523
  }
82461
82524
  }, SuperConverter;
82462
- var init_SuperConverter_ClF1lbF9_es = __esm(() => {
82525
+ var init_SuperConverter_hvBoS9gB_es = __esm(() => {
82463
82526
  init_rolldown_runtime_B2q5OVn9_es();
82464
82527
  init_jszip_ChlR43oI_es();
82465
82528
  init_xml_js_BtmJ6bNs_es();
@@ -85553,8 +85616,8 @@ var init_SuperConverter_ClF1lbF9_es = __esm(() => {
85553
85616
  },
85554
85617
  info: {
85555
85618
  memberPath: "info",
85556
- description: "Return document summary info including word, character, paragraph, heading, table, image, comment, tracked-change, SDT-field, and list counts, plus outline and capabilities.",
85557
- expectedResult: "Returns a DocumentInfo object with counts (words, characters, paragraphs, headings, tables, images, comments, trackedChanges, sdtFields, lists), document outline, capability flags, and revision.",
85619
+ description: "Return document summary info including word, character, paragraph, heading, table, image, comment, tracked-change, SDT-field, list, and page counts, plus outline and capabilities.",
85620
+ expectedResult: "Returns a DocumentInfo object with counts (words, characters, paragraphs, headings, tables, images, comments, trackedChanges, sdtFields, lists, and optionally pages when pagination is active), document outline, capability flags, and revision.",
85558
85621
  requiresDocumentContext: true,
85559
85622
  metadata: readOperation2(),
85560
85623
  referenceDocPath: "info.mdx",
@@ -91637,7 +91700,8 @@ var init_SuperConverter_ClF1lbF9_es = __esm(() => {
91637
91700
  comments: { type: "integer" },
91638
91701
  trackedChanges: { type: "integer" },
91639
91702
  sdtFields: { type: "integer" },
91640
- lists: { type: "integer" }
91703
+ lists: { type: "integer" },
91704
+ pages: { type: "integer" }
91641
91705
  }, [
91642
91706
  "words",
91643
91707
  "characters",
@@ -95779,6 +95843,7 @@ var init_SuperConverter_ClF1lbF9_es = __esm(() => {
95779
95843
  "authorities"
95780
95844
  ];
95781
95845
  _buffers = /* @__PURE__ */ new Map;
95846
+ UNSUPPORTED_TABLE_IDENTITY_ATTRS = ["w14:paraId", "w14:textId"];
95782
95847
  translator$41 = NodeTranslator.from(createStrictTogglePropertyHandler("w:b", "bold"));
95783
95848
  translator$45 = NodeTranslator.from(createSingleBooleanPropertyHandler("w:bCs", "boldCs"));
95784
95849
  translator$43 = NodeTranslator.from(createBorderPropertyHandler("w:bdr", "borders"));
@@ -116747,6 +116812,7 @@ var init_SuperConverter_ClF1lbF9_es = __esm(() => {
116747
116812
  "blockId",
116748
116813
  "paraId"
116749
116814
  ];
116815
+ SYNTHETIC_PARA_ID_TYPES = new Set(["paragraph", "tableRow"]);
116750
116816
  BLOCK_IDENTITY_ATTRS = {
116751
116817
  paragraph: PARAGRAPH_IDENTITY_ATTRS,
116752
116818
  heading: DEFAULT_BLOCK_IDENTITY_ATTRS,
@@ -144256,7 +144322,7 @@ var init_remark_gfm_CjV8kaUy_es = __esm(() => {
144256
144322
  init_remark_gfm_z_sDF4ss_es();
144257
144323
  });
144258
144324
 
144259
- // ../../packages/superdoc/dist/chunks/src-bFMQreny.es.js
144325
+ // ../../packages/superdoc/dist/chunks/src-BAlN4OvK.es.js
144260
144326
  function deleteProps(obj, propOrProps) {
144261
144327
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
144262
144328
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -147165,7 +147231,7 @@ function normalizeExcerpt(text5) {
147165
147231
  const trimmed = text5.replace(/\s+/g, " ").trim();
147166
147232
  return trimmed.length ? trimmed : undefined;
147167
147233
  }
147168
- function stableHash$1(input2) {
147234
+ function stableHash$2(input2) {
147169
147235
  let hash$3 = 2166136261;
147170
147236
  for (let index2 = 0;index2 < input2.length; index2 += 1) {
147171
147237
  hash$3 ^= input2.charCodeAt(index2);
@@ -147174,11 +147240,39 @@ function stableHash$1(input2) {
147174
147240
  return (hash$3 >>> 0).toString(16).padStart(8, "0");
147175
147241
  }
147176
147242
  function buildFallbackTocNodeId(node3, pos) {
147177
- return `toc-auto-${stableHash$1(`${pos}:${typeof node3.attrs?.instruction === "string" ? node3.attrs.instruction : ""}`)}`;
147243
+ return `toc-auto-${stableHash$2(`${pos}:${typeof node3.attrs?.instruction === "string" ? node3.attrs.instruction : ""}`)}`;
147178
147244
  }
147179
147245
  function resolvePublicTocNodeId(node3, pos) {
147180
147246
  return buildFallbackTocNodeId(node3, pos);
147181
147247
  }
147248
+ function stableHash$1(input2) {
147249
+ let hash$3 = 2166136261;
147250
+ for (let index2 = 0;index2 < input2.length; index2 += 1) {
147251
+ hash$3 ^= input2.charCodeAt(index2);
147252
+ hash$3 = Math.imul(hash$3, 16777619);
147253
+ }
147254
+ return (hash$3 >>> 0).toString(16).padStart(8, "0");
147255
+ }
147256
+ function toTableLikeBlockNodeType(nodeType) {
147257
+ if (nodeType === "table")
147258
+ return "table";
147259
+ if (nodeType === "tableCell")
147260
+ return "tableCell";
147261
+ }
147262
+ function serializeTraversalPath(path2, pos) {
147263
+ if (Array.isArray(path2) && path2.length > 0)
147264
+ return `path:${path2.join(".")}`;
147265
+ return `pos:${pos}`;
147266
+ }
147267
+ function isVolatileRuntimeBlockId(id2) {
147268
+ return typeof id2 === "string" && UUID_LIKE_PATTERN.test(id2);
147269
+ }
147270
+ function buildFallbackTableNodeId(nodeType, pos, path2) {
147271
+ const tableLikeType = toTableLikeBlockNodeType(nodeType);
147272
+ if (!tableLikeType)
147273
+ return;
147274
+ return `${TABLE_LIKE_PREFIX[tableLikeType]}-${stableHash$1(`${tableLikeType}:${serializeTraversalPath(path2, pos)}`)}`;
147275
+ }
147182
147276
  function isListItem$1(attrs) {
147183
147277
  const numbering = attrs?.paragraphProperties?.numberingProperties;
147184
147278
  if (numbering && (numbering.numId != null || numbering.ilvl != null))
@@ -147228,7 +147322,16 @@ function mapBlockNodeType(node3) {
147228
147322
  return;
147229
147323
  }
147230
147324
  }
147231
- function resolveBlockNodeId(node3, pos, nodeType) {
147325
+ function resolveLegacyTableIdentity(attrs) {
147326
+ return toId(attrs.paraId) ?? toId(attrs.blockId) ?? toId(attrs.id) ?? toId(attrs.uuid);
147327
+ }
147328
+ function resolveRuntimeTableIdentity(nodeType, attrs, pos, path2) {
147329
+ const sdBlockId = toId(attrs.sdBlockId);
147330
+ if (sdBlockId && !isVolatileRuntimeBlockId(sdBlockId))
147331
+ return sdBlockId;
147332
+ return buildFallbackTableNodeId(nodeType, pos, path2);
147333
+ }
147334
+ function resolveBlockNodeId(node3, pos, nodeType, path2) {
147232
147335
  if (node3.type.name === "paragraph") {
147233
147336
  const attrs$1 = node3.attrs;
147234
147337
  return toId(attrs$1?.paraId) ?? toId(attrs$1?.sdBlockId);
@@ -147237,8 +147340,10 @@ function resolveBlockNodeId(node3, pos, nodeType) {
147237
147340
  return resolvePublicTocNodeId(node3, pos);
147238
147341
  const attrs = node3.attrs ?? {};
147239
147342
  const typeName = node3.type.name;
147240
- if (typeName === "table" || typeName === "tableRow" || typeName === "tableCell" || typeName === "tableHeader")
147343
+ if (typeName === "tableRow")
147241
147344
  return toId(attrs.paraId) ?? toId(attrs.sdBlockId) ?? toId(attrs.blockId) ?? toId(attrs.id) ?? toId(attrs.uuid);
147345
+ if (typeName === "table" || typeName === "tableCell" || typeName === "tableHeader")
147346
+ return resolveLegacyTableIdentity(attrs) ?? resolveRuntimeTableIdentity(nodeType, attrs, pos, path2);
147242
147347
  return toId(attrs.blockId) ?? toId(attrs.id) ?? toId(attrs.paraId) ?? toId(attrs.uuid) ?? toId(attrs.sdBlockId);
147243
147348
  }
147244
147349
  function toBlockAddress(candidate) {
@@ -147259,6 +147364,8 @@ function buildBlockIndex(editor) {
147259
147364
  const candidates = [];
147260
147365
  const byId = /* @__PURE__ */ new Map;
147261
147366
  const ambiguous = /* @__PURE__ */ new Set;
147367
+ const pathByNode = /* @__PURE__ */ new WeakMap;
147368
+ pathByNode.set(editor.state.doc, []);
147262
147369
  function registerKey(key$1, candidate) {
147263
147370
  if (byId.has(key$1)) {
147264
147371
  ambiguous.add(key$1);
@@ -147266,11 +147373,15 @@ function buildBlockIndex(editor) {
147266
147373
  } else if (!ambiguous.has(key$1))
147267
147374
  byId.set(key$1, candidate);
147268
147375
  }
147269
- editor.state.doc.descendants((node3, pos) => {
147376
+ editor.state.doc.descendants((node3, pos, parent, index2) => {
147377
+ const parentPath = parent ? pathByNode.get(parent) ?? [] : [];
147378
+ const path2 = typeof index2 === "number" && Number.isInteger(index2) && index2 >= 0 ? [...parentPath, index2] : undefined;
147379
+ if (path2)
147380
+ pathByNode.set(node3, path2);
147270
147381
  const nodeType = mapBlockNodeType(node3);
147271
147382
  if (!nodeType)
147272
147383
  return;
147273
- const nodeId = resolveBlockNodeId(node3, pos, nodeType);
147384
+ const nodeId = resolveBlockNodeId(node3, pos, nodeType, path2);
147274
147385
  if (!nodeId)
147275
147386
  return;
147276
147387
  const candidate = {
@@ -151769,15 +151880,6 @@ function requireEditorCommand(command$1, operationName) {
151769
151880
  return command$1;
151770
151881
  throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", `${operationName} command is not available.`, { reason: "missing_command" });
151771
151882
  }
151772
- function requireSchemaMark(editor, markName, operationName) {
151773
- const mark2 = editor.schema?.marks?.[markName];
151774
- if (mark2)
151775
- return mark2;
151776
- throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", `${operationName} requires the "${markName}" mark.`, {
151777
- reason: "missing_mark",
151778
- markName
151779
- });
151780
- }
151781
151883
  function ensureTrackedCapability(editor, config2) {
151782
151884
  if (typeof editor.commands?.insertTrackedChange !== "function")
151783
151885
  throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", `${config2.operation} requires the insertTrackedChange command.`, { reason: "missing_command" });
@@ -153933,14 +154035,15 @@ function resolveListItem(editor, address2) {
153933
154035
  function getLiveDocumentCounts(editor) {
153934
154036
  const currentDoc = editor.state.doc;
153935
154037
  const cached = liveDocumentCountsCache.get(editor);
154038
+ const pages = countPages(editor);
153936
154039
  if (cached && cached.doc === currentDoc)
153937
- return cloneLiveDocumentCounts(cached.counts);
154040
+ return cloneLiveDocumentCounts(cached.counts, pages);
153938
154041
  const counts = computeLiveDocumentCounts(editor);
153939
154042
  liveDocumentCountsCache.set(editor, {
153940
154043
  doc: currentDoc,
153941
154044
  counts
153942
154045
  });
153943
- return cloneLiveDocumentCounts(counts);
154046
+ return cloneLiveDocumentCounts(counts, pages);
153944
154047
  }
153945
154048
  function computeLiveDocumentCounts(editor) {
153946
154049
  const text5 = getTextAdapter(editor, {});
@@ -153961,8 +154064,11 @@ function computeLiveDocumentCounts(editor) {
153961
154064
  lists: countLists(editor, blockIndex)
153962
154065
  };
153963
154066
  }
153964
- function cloneLiveDocumentCounts(counts) {
153965
- return { ...counts };
154067
+ function cloneLiveDocumentCounts(counts, pages) {
154068
+ return pages != null ? {
154069
+ ...counts,
154070
+ pages
154071
+ } : { ...counts };
153966
154072
  }
153967
154073
  function countWordsFromText(text5) {
153968
154074
  const matches2 = text5.trim().match(/\S+/g);
@@ -154063,6 +154169,9 @@ function resolveVisibleListLevel(item) {
154063
154169
  return item.level;
154064
154170
  return item.path && item.path.length > 0 ? item.path.length - 1 : undefined;
154065
154171
  }
154172
+ function countPages(editor) {
154173
+ return editor.currentTotalPages;
154174
+ }
154066
154175
  function clampHeadingLevel(value) {
154067
154176
  if (typeof value !== "number" || !Number.isFinite(value))
154068
154177
  return 1;
@@ -154156,7 +154265,16 @@ function isInlinePropertyAvailable(editor, property) {
154156
154265
  if (property.storage === "mark") {
154157
154266
  if (property.carrier.storage !== "mark")
154158
154267
  return false;
154159
- return hasMarkCapability(editor, property.carrier.markName === "textStyle" ? "textStyle" : property.carrier.markName);
154268
+ const markName = property.carrier.markName;
154269
+ if (!hasMarkCapability(editor, markName))
154270
+ return false;
154271
+ if (markName === "textStyle" && property.carrier.textStyleAttr) {
154272
+ const textStyleMark = editor.schema.marks.textStyle;
154273
+ const markAttrs = textStyleMark?.spec?.attrs ?? textStyleMark?.attrs;
154274
+ if (!markAttrs || !Object.prototype.hasOwnProperty.call(markAttrs, property.carrier.textStyleAttr))
154275
+ return false;
154276
+ }
154277
+ return true;
154160
154278
  }
154161
154279
  return Boolean(editor.schema?.nodes?.run);
154162
154280
  }
@@ -157172,6 +157290,82 @@ function collectBlockIds(fragment2) {
157172
157290
  }
157173
157291
  return ids;
157174
157292
  }
157293
+ function getSchemaMarks(editor) {
157294
+ return editor.schema?.marks ?? editor.state.schema?.marks ?? {};
157295
+ }
157296
+ function getSchemaNodes(editor) {
157297
+ return editor.state.schema?.nodes ?? editor.schema?.nodes ?? {};
157298
+ }
157299
+ function getMarkAttrs(markType) {
157300
+ if (!markType || typeof markType !== "object")
157301
+ return;
157302
+ const specAttrs = markType.spec?.attrs;
157303
+ if (specAttrs && typeof specAttrs === "object")
157304
+ return specAttrs;
157305
+ const attrs = markType.attrs;
157306
+ if (attrs && typeof attrs === "object")
157307
+ return attrs;
157308
+ }
157309
+ function getInlinePropertyCapabilityIssue(editor, keys$1, operationName = "format.apply") {
157310
+ const schemaMarks = getSchemaMarks(editor);
157311
+ const requiredTextStyleAttrs = /* @__PURE__ */ new Set;
157312
+ let requiresRunNode = false;
157313
+ for (const key$1 of keys$1) {
157314
+ const entry = INLINE_PROPERTY_BY_KEY2[key$1];
157315
+ if (!entry)
157316
+ continue;
157317
+ if (entry.storage === "mark") {
157318
+ const carrier = entry.carrier;
157319
+ if (carrier.storage !== "mark")
157320
+ continue;
157321
+ if (!schemaMarks[carrier.markName])
157322
+ return {
157323
+ code: "CAPABILITY_UNAVAILABLE",
157324
+ message: `${operationName} requires the "${carrier.markName}" mark.`,
157325
+ details: {
157326
+ reason: "missing_mark",
157327
+ markName: carrier.markName
157328
+ }
157329
+ };
157330
+ if (carrier.markName === "textStyle" && carrier.textStyleAttr)
157331
+ requiredTextStyleAttrs.add(carrier.textStyleAttr);
157332
+ continue;
157333
+ }
157334
+ requiresRunNode = true;
157335
+ }
157336
+ if (requiredTextStyleAttrs.size > 0) {
157337
+ const markAttrs = getMarkAttrs(schemaMarks.textStyle);
157338
+ for (const attr of requiredTextStyleAttrs)
157339
+ if (!markAttrs || !Object.prototype.hasOwnProperty.call(markAttrs, attr))
157340
+ return {
157341
+ code: "CAPABILITY_UNAVAILABLE",
157342
+ message: `${operationName} requires the "${attr}" attribute on the textStyle mark.`,
157343
+ details: {
157344
+ reason: "missing_mark_attribute",
157345
+ markName: "textStyle",
157346
+ attribute: attr
157347
+ }
157348
+ };
157349
+ }
157350
+ if (requiresRunNode && !getSchemaNodes(editor).run)
157351
+ return {
157352
+ code: "CAPABILITY_UNAVAILABLE",
157353
+ message: `${operationName} requires a run node in the schema.`
157354
+ };
157355
+ }
157356
+ function getTrackedInlinePropertySupportIssue(keys$1, operationName = "format.apply") {
157357
+ const unsupportedTrackedKeys = keys$1.filter((key$1) => INLINE_PROPERTY_BY_KEY2[key$1]?.tracked === false);
157358
+ if (unsupportedTrackedKeys.length === 0)
157359
+ return;
157360
+ return {
157361
+ code: "CAPABILITY_UNAVAILABLE",
157362
+ message: `${operationName} tracked mode is not available for: ${unsupportedTrackedKeys.join(", ")}`,
157363
+ details: {
157364
+ keys: unsupportedTrackedKeys,
157365
+ changeMode: "tracked"
157366
+ }
157367
+ };
157368
+ }
157175
157369
  function editorHasDom(editor) {
157176
157370
  const opts = editor.options;
157177
157371
  return !!(opts?.document ?? opts?.mockDocument ?? (typeof document !== "undefined" ? document : null));
@@ -157355,38 +157549,16 @@ function writeWrapper(editor, request, options) {
157355
157549
  }), resolved.resolution);
157356
157550
  }
157357
157551
  function ensureInlinePropertyCapabilities(editor, keys$1) {
157358
- let requiresTextStyle = false;
157359
- let requiresRunNode = false;
157360
- for (const key$1 of keys$1) {
157361
- const entry = INLINE_PROPERTY_BY_KEY2[key$1];
157362
- if (!entry)
157363
- continue;
157364
- if (entry.storage === "mark") {
157365
- const carrier = entry.carrier;
157366
- if (carrier.storage !== "mark")
157367
- continue;
157368
- if (carrier.markName === "textStyle") {
157369
- requiresTextStyle = true;
157370
- continue;
157371
- }
157372
- requireSchemaMark(editor, carrier.markName, "format.apply");
157373
- continue;
157374
- }
157375
- requiresRunNode = true;
157376
- }
157377
- if (requiresTextStyle)
157378
- requireSchemaMark(editor, "textStyle", "format.apply");
157379
- if (requiresRunNode && !editor.state.schema.nodes.run)
157380
- throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", "format.apply requires a run node in the schema.");
157552
+ const issue = getInlinePropertyCapabilityIssue(editor, keys$1);
157553
+ if (!issue)
157554
+ return;
157555
+ throw new DocumentApiAdapterError(issue.code, issue.message, issue.details);
157381
157556
  }
157382
157557
  function ensureTrackedInlinePropertySupport(keys$1) {
157383
- const unsupportedTrackedKeys = keys$1.filter((key$1) => INLINE_PROPERTY_BY_KEY2[key$1]?.tracked === false);
157384
- if (unsupportedTrackedKeys.length === 0)
157558
+ const issue = getTrackedInlinePropertySupportIssue(keys$1);
157559
+ if (!issue)
157385
157560
  return;
157386
- throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", `format.apply tracked mode is not available for: ${unsupportedTrackedKeys.join(", ")}`, {
157387
- keys: unsupportedTrackedKeys,
157388
- changeMode: "tracked"
157389
- });
157561
+ throw new DocumentApiAdapterError(issue.code, issue.message, issue.details);
157390
157562
  }
157391
157563
  function buildSelectionWhere(request) {
157392
157564
  if (request.target)
@@ -159940,7 +160112,7 @@ function collectTopLevelBlocks(editor) {
159940
160112
  const nodeType = mapBlockNodeType(child);
159941
160113
  const pos = offset$1;
159942
160114
  if (nodeType) {
159943
- const nodeId = resolveBlockNodeId(child, pos, nodeType);
160115
+ const nodeId = resolveBlockNodeId(child, pos, nodeType, [i4]);
159944
160116
  if (nodeId)
159945
160117
  results.push({
159946
160118
  node: child,
@@ -162078,6 +162250,9 @@ function toTableFailure(code7, message, details) {
162078
162250
  }
162079
162251
  };
162080
162252
  }
162253
+ function generateDocxHexId() {
162254
+ return Array.from({ length: DOCX_HEX_ID_LENGTH }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
162255
+ }
162081
162256
  function findSettingsRoot(part) {
162082
162257
  if (part.name === "w:settings")
162083
162258
  return part;
@@ -162151,16 +162326,13 @@ function setOddEvenHeadersFooters(settingsRoot, enabled) {
162151
162326
  settingsRoot.elements = elements.filter((entry) => entry.name !== "w:evenAndOddHeaders");
162152
162327
  return hadFlag !== hasOddEvenHeadersFooters(settingsRoot);
162153
162328
  }
162154
- function generateParaId() {
162155
- return Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
162156
- }
162157
162329
  function createSeparatorParagraph(schema) {
162158
162330
  const paragraphType = schema.nodes.paragraph;
162159
162331
  if (!paragraphType)
162160
162332
  return null;
162161
162333
  const separatorAttrs = {
162162
162334
  sdBlockId: v4_default(),
162163
- paraId: generateParaId()
162335
+ paraId: generateDocxHexId()
162164
162336
  };
162165
162337
  return paragraphType.createAndFill(separatorAttrs) ?? paragraphType.createAndFill();
162166
162338
  }
@@ -163313,22 +163485,15 @@ function tablesConvertFromTextAdapter(editor, input2, options) {
163313
163485
  const text5 = cells[c] ?? "";
163314
163486
  const content3 = text5 ? schema.text(text5) : undefined;
163315
163487
  const para = schema.nodes.paragraph.createAndFill(null, content3);
163316
- tableCells.push(schema.nodes.tableCell.createAndFill({
163317
- sdBlockId: v4_default(),
163318
- paraId: generateParaId()
163319
- }, para));
163488
+ tableCells.push(schema.nodes.tableCell.createAndFill({ sdBlockId: v4_default() }, para));
163320
163489
  }
163321
163490
  tableRows.push(schema.nodes.tableRow.createAndFill({
163322
163491
  sdBlockId: v4_default(),
163323
- paraId: generateParaId()
163492
+ paraId: generateDocxHexId()
163324
163493
  }, tableCells));
163325
163494
  }
163326
163495
  const tableId = v4_default();
163327
- const tableParaId = generateParaId();
163328
- const tableNode = schema.nodes.table.create({
163329
- sdBlockId: tableId,
163330
- paraId: tableParaId
163331
- }, tableRows);
163496
+ const tableNode = schema.nodes.table.create({ sdBlockId: tableId }, tableRows);
163332
163497
  const startPos = paragraphs[0].pos;
163333
163498
  const lastP = paragraphs[paragraphs.length - 1];
163334
163499
  const endPos = lastP.pos + lastP.node.nodeSize;
@@ -163456,10 +163621,7 @@ function tablesInsertCellAdapter(editor, input2, options) {
163456
163621
  return toTableFailure("INVALID_TARGET", "Cell insertion with shiftRight is not supported for merged cells in this version.");
163457
163622
  const makeEmptyCell = (preferHeader = false) => {
163458
163623
  const candidateType = preferHeader ? schema.nodes.tableHeader ?? schema.nodes.tableCell : schema.nodes.tableCell;
163459
- return candidateType.createAndFill({
163460
- sdBlockId: v4_default(),
163461
- paraId: generateParaId()
163462
- }) ?? candidateType.createAndFill();
163624
+ return candidateType.createAndFill({ sdBlockId: v4_default() }) ?? candidateType.createAndFill();
163463
163625
  };
163464
163626
  const overflowRowCells = [];
163465
163627
  for (let col = 0;col < map$12.width; col++) {
@@ -163470,7 +163632,7 @@ function tablesInsertCellAdapter(editor, input2, options) {
163470
163632
  const overflowRowAttrs = {
163471
163633
  ...tableNode.child(Math.max(0, map$12.height - 1)).attrs ?? {},
163472
163634
  sdBlockId: v4_default(),
163473
- paraId: generateParaId()
163635
+ paraId: generateDocxHexId()
163474
163636
  };
163475
163637
  const overflowRow = schema.nodes.tableRow.createAndFill(overflowRowAttrs, overflowRowCells) ?? schema.nodes.tableRow.create(overflowRowAttrs, overflowRowCells);
163476
163638
  if (!overflowRow)
@@ -164439,13 +164601,11 @@ function createTableAdapter(editor, input2, options) {
164439
164601
  };
164440
164602
  }
164441
164603
  const tableId = v4_default();
164442
- const paraId = generateParaId();
164443
164604
  if (!insertTableAt$1({
164444
164605
  pos: insertAt,
164445
164606
  rows: input2.rows,
164446
164607
  columns: input2.columns,
164447
164608
  sdBlockId: tableId,
164448
- paraId,
164449
164609
  tracked: mode === "tracked"
164450
164610
  }))
164451
164611
  return {
@@ -164858,6 +165018,17 @@ function executeTextStep(ctx$1, targets, step3, rangeExecutor, spanExecutor) {
164858
165018
  data
164859
165019
  };
164860
165020
  }
165021
+ function ensureFormatStepCapabilities(ctx$1, step3) {
165022
+ const inlineKeys = Object.keys(step3.args.inline);
165023
+ const capabilityIssue = getInlinePropertyCapabilityIssue(ctx$1.editor, inlineKeys, step3.op);
165024
+ if (capabilityIssue)
165025
+ throw planError(capabilityIssue.code, capabilityIssue.message, step3.id, capabilityIssue.details);
165026
+ if (ctx$1.changeMode !== "tracked")
165027
+ return;
165028
+ const trackedIssue = getTrackedInlinePropertySupportIssue(inlineKeys, step3.op);
165029
+ if (trackedIssue)
165030
+ throw planError(trackedIssue.code, trackedIssue.message, step3.id, trackedIssue.details);
165031
+ }
164861
165032
  function buildTableInput(op, blockId, args$1) {
164862
165033
  const { target: _target, nodeId: _n, tableTarget: _tableTarget, tableNodeId: _t$1, ...safeArgs } = args$1;
164863
165034
  if (TABLE_SCOPED_OPS.has(op)) {
@@ -164883,7 +165054,10 @@ function registerBuiltInExecutors() {
164883
165054
  registerStepExecutor("text.rewrite", { execute: (ctx$1, targets, step3) => executeTextStep(ctx$1, targets, step3, (e, tr, t, s2, m$1) => executeTextRewrite(e, tr, t, s2, m$1), (e, tr, t, s2, m$1) => executeSpanTextRewrite(e, tr, t, s2, m$1)) });
164884
165055
  registerStepExecutor("text.insert", { execute: (ctx$1, targets, step3) => executeTextStep(ctx$1, targets, step3, (e, tr, t, s2, m$1) => executeTextInsert(e, tr, t, s2, m$1)) });
164885
165056
  registerStepExecutor("text.delete", { execute: (ctx$1, targets, step3) => executeTextStep(ctx$1, targets, step3, (e, tr, t, s2, m$1) => executeTextDelete(e, tr, t, s2, m$1), (e, tr, t, s2, m$1) => executeSpanTextDelete(e, tr, t, s2, m$1)) });
164886
- registerStepExecutor("format.apply", { execute: (ctx$1, targets, step3) => executeTextStep(ctx$1, targets, step3, (e, tr, t, s2, m$1) => executeStyleApply3(e, tr, t, s2, m$1), (e, tr, t, s2, m$1) => executeSpanStyleApply(e, tr, t, s2, m$1)) });
165057
+ registerStepExecutor("format.apply", { execute: (ctx$1, targets, step3) => {
165058
+ ensureFormatStepCapabilities(ctx$1, step3);
165059
+ return executeTextStep(ctx$1, targets, step3, (e, tr, t, s2, m$1) => executeStyleApply3(e, tr, t, s2, m$1), (e, tr, t, s2, m$1) => executeSpanStyleApply(e, tr, t, s2, m$1));
165060
+ } });
164887
165061
  registerStepExecutor("create.paragraph", { execute: (ctx$1, targets, step3) => executeCreateStep(ctx$1.editor, ctx$1.tr, step3, targets, ctx$1.mapping) });
164888
165062
  registerStepExecutor("create.heading", { execute: (ctx$1, targets, step3) => executeCreateStep(ctx$1.editor, ctx$1.tr, step3, targets, ctx$1.mapping) });
164889
165063
  registerStepExecutor("domain.command", { execute(ctx$1, _targets, step3) {
@@ -168652,6 +168826,130 @@ function applyTcPatch(existing, patch3) {
168652
168826
  function areTcConfigsEqual(a2, b$1) {
168653
168827
  return serializeTcInstruction(a2) === serializeTcInstruction(b$1);
168654
168828
  }
168829
+ function generateTocBookmarkName(blockId) {
168830
+ return `${TOC_BOOKMARK_PREFIX}${encodeBlockId(blockId)}`;
168831
+ }
168832
+ function encodeBlockId(input2) {
168833
+ let result = "";
168834
+ for (let i4 = 0;i4 < input2.length; i4++) {
168835
+ const ch = input2[i4];
168836
+ if (ch === "_")
168837
+ result += "__";
168838
+ else if (ch >= "a" && ch <= "z" || ch >= "A" && ch <= "Z" || ch >= "0" && ch <= "9")
168839
+ result += ch;
168840
+ else
168841
+ result += `_${ch.charCodeAt(0).toString(16).padStart(2, "0")}`;
168842
+ }
168843
+ return result;
168844
+ }
168845
+ function syncTocBookmarks(editor, sources) {
168846
+ const { schema, doc: doc$12 } = editor.state;
168847
+ if (!schema.nodes.bookmarkStart || !schema.nodes.bookmarkEnd)
168848
+ return;
168849
+ const needed = deduplicateByBlockId(sources);
168850
+ const existing = collectExistingTocBookmarkNames(doc$12);
168851
+ const missing = needed.filter((t) => !existing.has(t.bookmarkName));
168852
+ if (missing.length === 0)
168853
+ return;
168854
+ const insertions = resolveInsertionTargets(missing, buildBlockIdPositionMap(doc$12), doc$12);
168855
+ if (insertions.length === 0)
168856
+ return;
168857
+ const { tr } = editor.state;
168858
+ let nextId = findMaxBookmarkId(doc$12) + 1;
168859
+ for (const { bookmarkName, contentStart, contentEnd } of insertions) {
168860
+ const bookmarkId = String(nextId++);
168861
+ const endNode = schema.nodes.bookmarkEnd.create({ id: bookmarkId });
168862
+ const startNode = schema.nodes.bookmarkStart.create({
168863
+ name: bookmarkName,
168864
+ id: bookmarkId
168865
+ });
168866
+ tr.insert(tr.mapping.map(contentStart), startNode);
168867
+ tr.insert(tr.mapping.map(contentEnd), endNode);
168868
+ }
168869
+ if (tr.docChanged)
168870
+ dispatchTransaction$2(editor, tr);
168871
+ }
168872
+ function deduplicateByBlockId(sources) {
168873
+ const seenBlockIds = /* @__PURE__ */ new Set;
168874
+ const claimedNames = /* @__PURE__ */ new Map;
168875
+ const targets = [];
168876
+ for (const { sdBlockId } of sources) {
168877
+ if (seenBlockIds.has(sdBlockId))
168878
+ continue;
168879
+ seenBlockIds.add(sdBlockId);
168880
+ const bookmarkName = generateTocBookmarkName(sdBlockId);
168881
+ const existingOwner = claimedNames.get(bookmarkName);
168882
+ if (existingOwner !== undefined && existingOwner !== sdBlockId)
168883
+ continue;
168884
+ claimedNames.set(bookmarkName, sdBlockId);
168885
+ targets.push({
168886
+ blockId: sdBlockId,
168887
+ bookmarkName
168888
+ });
168889
+ }
168890
+ return targets;
168891
+ }
168892
+ function collectExistingTocBookmarkNames(doc$12) {
168893
+ const names = /* @__PURE__ */ new Set;
168894
+ doc$12.descendants((node3) => {
168895
+ if (node3.type.name === "bookmarkStart") {
168896
+ const name = node3.attrs?.name;
168897
+ if (name?.startsWith(TOC_BOOKMARK_PREFIX))
168898
+ names.add(name);
168899
+ }
168900
+ return true;
168901
+ });
168902
+ return names;
168903
+ }
168904
+ function buildBlockIdPositionMap(doc$12) {
168905
+ const map$12 = /* @__PURE__ */ new Map;
168906
+ doc$12.descendants((node3, pos) => {
168907
+ if (node3.type.name === "paragraph") {
168908
+ const id2 = node3.attrs?.sdBlockId ?? node3.attrs?.paraId;
168909
+ if (id2 && !map$12.has(id2))
168910
+ map$12.set(id2, pos);
168911
+ }
168912
+ return true;
168913
+ });
168914
+ return map$12;
168915
+ }
168916
+ function resolveInsertionTargets(missing, positions, doc$12) {
168917
+ const result = [];
168918
+ for (const { blockId, bookmarkName } of missing) {
168919
+ const pos = positions.get(blockId);
168920
+ if (pos === undefined)
168921
+ continue;
168922
+ const node3 = doc$12.nodeAt(pos);
168923
+ if (!node3 || node3.type.name !== "paragraph")
168924
+ continue;
168925
+ result.push({
168926
+ bookmarkName,
168927
+ contentStart: pos + 1,
168928
+ contentEnd: pos + node3.nodeSize - 1
168929
+ });
168930
+ }
168931
+ result.sort((a2, b$1) => b$1.contentStart - a2.contentStart);
168932
+ return result;
168933
+ }
168934
+ function findMaxBookmarkId(doc$12) {
168935
+ let maxId = -1;
168936
+ doc$12.descendants((node3) => {
168937
+ if (node3.type.name !== "bookmarkStart" && node3.type.name !== "bookmarkEnd")
168938
+ return true;
168939
+ const raw = node3.attrs?.id;
168940
+ const id2 = typeof raw === "string" ? parseInt(raw, 10) : typeof raw === "number" ? raw : NaN;
168941
+ if (!isNaN(id2) && id2 > maxId)
168942
+ maxId = id2;
168943
+ return true;
168944
+ });
168945
+ return maxId;
168946
+ }
168947
+ function dispatchTransaction$2(editor, tr) {
168948
+ if (typeof editor.dispatch === "function")
168949
+ editor.dispatch(tr);
168950
+ else if (typeof editor.view?.dispatch === "function")
168951
+ editor.view.dispatch(tr);
168952
+ }
168655
168953
  function collectTocSources(doc$12, config2) {
168656
168954
  const sources = [];
168657
168955
  const { outlineLevels, useAppliedOutlineLevel, tcFieldIdentifier, tcFieldLevels } = config2.source;
@@ -168742,7 +169040,7 @@ function buildEntryParagraph(source, config2) {
168742
169040
  textNode.marks = [{
168743
169041
  type: "link",
168744
169042
  attrs: {
168745
- anchor: source.sdBlockId,
169043
+ anchor: generateTocBookmarkName(source.sdBlockId),
168746
169044
  rId: null,
168747
169045
  history: true
168748
169046
  }
@@ -168941,8 +169239,12 @@ function sanitizeTocContentForSchema(content3, editor) {
168941
169239
  });
168942
169240
  }
168943
169241
  function materializeTocContent(doc$12, config2, editor) {
168944
- const entryParagraphs = buildTocEntryParagraphs(collectTocSources(doc$12, config2), config2);
168945
- return sanitizeTocContentForSchema(entryParagraphs.length > 0 ? entryParagraphs : NO_ENTRIES_PLACEHOLDER, editor);
169242
+ const sources = collectTocSources(doc$12, config2);
169243
+ const entryParagraphs = buildTocEntryParagraphs(sources, config2);
169244
+ return {
169245
+ content: sanitizeTocContentForSchema(entryParagraphs.length > 0 ? entryParagraphs : NO_ENTRIES_PLACEHOLDER, editor),
169246
+ sources
169247
+ };
168946
169248
  }
168947
169249
  function tocConfigureWrapper(editor, input2, options) {
168948
169250
  rejectTrackedMode("toc.configure", options);
@@ -168952,7 +169254,7 @@ function tocConfigureWrapper(editor, input2, options) {
168952
169254
  const instruction = serializeTocInstruction(patched);
168953
169255
  const rightAlignChanged = input2.patch.rightAlignPageNumbers !== undefined && input2.patch.rightAlignPageNumbers !== resolved.node.attrs?.rightAlignPageNumbers;
168954
169256
  const effectiveRightAlign = input2.patch.rightAlignPageNumbers ?? resolved.node.attrs?.rightAlignPageNumbers;
168955
- const nextContent = materializeTocContent(editor.state.doc, withRightAlign(patched, effectiveRightAlign), editor);
169257
+ const { content: nextContent, sources } = materializeTocContent(editor.state.doc, withRightAlign(patched, effectiveRightAlign), editor);
168956
169258
  if (areTocConfigsEqual(currentConfig, patched) && !rightAlignChanged)
168957
169259
  return tocFailure("NO_OP", "Configuration patch produced no change.");
168958
169260
  if (options?.dryRun)
@@ -168985,6 +169287,7 @@ function tocConfigureWrapper(editor, input2, options) {
168985
169287
  }
168986
169288
  }, options?.expectedRevision)))
168987
169289
  return tocFailure("NO_OP", "Configuration change could not be applied.");
169290
+ syncTocBookmarks(editor, sources);
168988
169291
  return tocSuccess(resolvePostMutationTocId(editor.state.doc, commandNodeId));
168989
169292
  }
168990
169293
  function tocUpdateWrapper(editor, input2, options) {
@@ -168997,13 +169300,13 @@ function tocUpdateAll(editor, input2, options) {
168997
169300
  const resolved = resolveTocTarget(editor.state.doc, input2.target);
168998
169301
  const config2 = parseTocInstruction(resolved.node.attrs?.instruction ?? "");
168999
169302
  const rightAlign = resolved.node.attrs?.rightAlignPageNumbers;
169000
- const content3 = materializeTocContent(editor.state.doc, withRightAlign(config2, rightAlign), editor);
169303
+ const { content: content3, sources } = materializeTocContent(editor.state.doc, withRightAlign(config2, rightAlign), editor);
169001
169304
  if (isTocContentUnchanged(resolved.node, content3))
169002
169305
  return tocFailure("NO_OP", "TOC update produced no change.");
169003
169306
  if (options?.dryRun)
169004
169307
  return tocSuccess(resolved.nodeId);
169005
169308
  const command$1 = editor.commands?.replaceTableOfContentsContentById;
169006
- return receiptApplied$9(typeof command$1 === "function" ? runTocCommand(editor, command$1, {
169309
+ if (!receiptApplied$9(typeof command$1 === "function" ? runTocCommand(editor, command$1, {
169007
169310
  sdBlockId: resolved.commandNodeId ?? resolved.nodeId,
169008
169311
  content: content3
169009
169312
  }, options?.expectedRevision) : runTocAction(editor, () => {
@@ -169017,7 +169320,10 @@ function tocUpdateAll(editor, input2, options) {
169017
169320
  } catch {
169018
169321
  return false;
169019
169322
  }
169020
- }, options?.expectedRevision)) ? tocSuccess(resolved.nodeId) : tocFailure("NO_OP", "TOC update produced no change.");
169323
+ }, options?.expectedRevision)))
169324
+ return tocFailure("NO_OP", "TOC update produced no change.");
169325
+ syncTocBookmarks(editor, sources);
169326
+ return tocSuccess(resolved.nodeId);
169021
169327
  }
169022
169328
  function getPageMap(editor) {
169023
169329
  const storage = editor.storage;
@@ -169136,7 +169442,7 @@ function createTableOfContentsWrapper(editor, input2, options) {
169136
169442
  pos = resolveCreateAnchor(editor, at.target, at.kind).pos;
169137
169443
  const config2 = input2.config ? applyTocPatchTyped(DEFAULT_TOC_CONFIG, input2.config) : DEFAULT_TOC_CONFIG;
169138
169444
  const instruction = serializeTocInstruction(config2);
169139
- const content3 = materializeTocContent(editor.state.doc, withRightAlign(config2, input2.config?.rightAlignPageNumbers), editor);
169445
+ const { content: content3, sources } = materializeTocContent(editor.state.doc, withRightAlign(config2, input2.config?.rightAlignPageNumbers), editor);
169140
169446
  const sdBlockId = v4_default();
169141
169447
  if (options?.dryRun)
169142
169448
  return {
@@ -169180,6 +169486,7 @@ function createTableOfContentsWrapper(editor, input2, options) {
169180
169486
  message: "Table of contents could not be inserted at the requested location."
169181
169487
  }
169182
169488
  };
169489
+ syncTocBookmarks(editor, sources);
169183
169490
  return {
169184
169491
  success: true,
169185
169492
  toc: buildTocAddress(resolvePostMutationTocId(editor.state.doc, sdBlockId))
@@ -200735,15 +201042,15 @@ var Node$13 = class Node$14 {
200735
201042
  return false;
200736
201043
  if ($from.parent.type.name !== "run")
200737
201044
  return false;
200738
- let dispatchTransaction$2 = null;
201045
+ let dispatchTransaction$3 = null;
200739
201046
  if (view?.dispatch)
200740
- dispatchTransaction$2 = view.dispatch.bind(view);
201047
+ dispatchTransaction$3 = view.dispatch.bind(view);
200741
201048
  else if (editor?.dispatch)
200742
- dispatchTransaction$2 = editor.dispatch.bind(editor);
200743
- if (!dispatchTransaction$2)
201049
+ dispatchTransaction$3 = editor.dispatch.bind(editor);
201050
+ if (!dispatchTransaction$3)
200744
201051
  return false;
200745
201052
  const handled = splitBlockPatch(state, (transaction) => {
200746
- dispatchTransaction$2(transaction);
201053
+ dispatchTransaction$3(transaction);
200747
201054
  }, editor);
200748
201055
  if (handled)
200749
201056
  tr.setMeta("preventDispatch", true);
@@ -205406,11 +205713,11 @@ var Node$13 = class Node$14 {
205406
205713
  this.eventListenerCleanups = [];
205407
205714
  this.resizeTimeoutId = null;
205408
205715
  }
205409
- attach({ element: element3, state, editorProps = {}, dispatchTransaction: dispatchTransaction$2, handleClick: handleClick$1 }) {
205716
+ attach({ element: element3, state, editorProps = {}, dispatchTransaction: dispatchTransaction$3, handleClick: handleClick$1 }) {
205410
205717
  this.view?.destroy();
205411
205718
  this.view = new EditorView(element3, {
205412
205719
  ...editorProps && typeof editorProps === "object" ? editorProps : {},
205413
- dispatchTransaction: dispatchTransaction$2,
205720
+ dispatchTransaction: dispatchTransaction$3,
205414
205721
  state,
205415
205722
  handleClick: handleClick$1
205416
205723
  });
@@ -205632,7 +205939,7 @@ var Node$13 = class Node$14 {
205632
205939
  console.warn("Failed to initialize developer tools:", error);
205633
205940
  }
205634
205941
  }
205635
- }, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, OOXML_PCT_DIVISOR = 5000, SPACE_CHARS, isAtomicRunKind = (kind) => kind === "image" || kind === "lineBreak" || kind === "break" || kind === "tab" || kind === "fieldAnnotation", isImageLikeRun = (run2) => {
205942
+ }, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, TABLE_LIKE_PREFIX, UUID_LIKE_PATTERN, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, OOXML_PCT_DIVISOR = 5000, SPACE_CHARS, isAtomicRunKind = (kind) => kind === "image" || kind === "lineBreak" || kind === "break" || kind === "tab" || kind === "fieldAnnotation", isImageLikeRun = (run2) => {
205636
205943
  if (!run2 || typeof run2 !== "object")
205637
205944
  return false;
205638
205945
  return typeof run2.src === "string";
@@ -205651,7 +205958,7 @@ var Node$13 = class Node$14 {
205651
205958
  return;
205652
205959
  const candidate = run2.pmEnd;
205653
205960
  return typeof candidate === "number" ? candidate : undefined;
205654
- }, engines_exports, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, cacheByEditor, OBJECT_REPLACEMENT_CHAR = "", LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES, VALID_APPEARANCES, 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, HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, DERIVED_ID_LENGTH = 24, groupedCache, FIELD_LIKE_SDT_TYPES, liveDocumentCountsCache, 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, 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, ALIGNMENT_TO_JUSTIFICATION, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES, SETTINGS_PART_PATH = "word/settings.xml", POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART = "word/settings.xml", TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS$1 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, DOCUMENT_RELS_PATH$1 = "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", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN$1, FOOTER_FILE_PATTERN$1, HISTORY_UNSAFE_OPS, 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) => {
205961
+ }, engines_exports, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, cacheByEditor, OBJECT_REPLACEMENT_CHAR = "", LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES, VALID_APPEARANCES, 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, HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, DERIVED_ID_LENGTH = 24, groupedCache, FIELD_LIKE_SDT_TYPES, liveDocumentCountsCache, 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, 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, ALIGNMENT_TO_JUSTIFICATION, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES, DOCX_HEX_ID_LENGTH = 8, SETTINGS_PART_PATH = "word/settings.xml", POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART = "word/settings.xml", TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS$1 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, DOCUMENT_RELS_PATH$1 = "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", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN$1, FOOTER_FILE_PATTERN$1, HISTORY_UNSAFE_OPS, 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) => {
205655
205962
  if (!path2.includes(".")) {
205656
205963
  target[path2] = value;
205657
205964
  return;
@@ -205785,7 +206092,7 @@ var Node$13 = class Node$14 {
205785
206092
  type: mark2.type.name,
205786
206093
  attrs: mark2.attrs ?? {}
205787
206094
  }));
205788
- }, 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, DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, DEFAULT_MIME_TYPE = "application/octet-stream", simpleHash2 = (str) => {
206095
+ }, 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, DEFAULT_MIME_TYPE = "application/octet-stream", simpleHash2 = (str) => {
205789
206096
  let hash$3 = 0;
205790
206097
  for (let i4 = 0;i4 < str.length; i4++) {
205791
206098
  const char = str.charCodeAt(i4);
@@ -220827,7 +221134,10 @@ var Node$13 = class Node$14 {
220827
221134
  for (let index2 = 0;index2 < rowsCount; index2++) {
220828
221135
  const isHeader = withHeaderRow && index2 === 0;
220829
221136
  const cellsToInsert = isHeader ? headerCells : cells;
220830
- const rowAttrs = isHeader ? { tableRowProperties: { repeatHeader: true } } : null;
221137
+ const rowAttrs = {
221138
+ ...isHeader ? { tableRowProperties: { repeatHeader: true } } : {},
221139
+ paraId: generateDocxHexId()
221140
+ };
220831
221141
  rows.push(types3.tableRow.createChecked(rowAttrs, cellsToInsert));
220832
221142
  }
220833
221143
  return types3.table.createChecked(tableAttrsOverride, rows);
@@ -224673,9 +224983,9 @@ var Node$13 = class Node$14 {
224673
224983
  return false;
224674
224984
  return Boolean(checker(attrs));
224675
224985
  }, SuperToolbar, ICONS, TEXTS, tableActionsOptions;
224676
- var init_src_bFMQreny_es = __esm(() => {
224986
+ var init_src_BAlN4OvK_es = __esm(() => {
224677
224987
  init_rolldown_runtime_B2q5OVn9_es();
224678
- init_SuperConverter_ClF1lbF9_es();
224988
+ init_SuperConverter_hvBoS9gB_es();
224679
224989
  init_jszip_ChlR43oI_es();
224680
224990
  init_uuid_qzgm05fK_es();
224681
224991
  init_constants_ep1_Gwqi_es();
@@ -231601,6 +231911,11 @@ function print() { __p += __j.call(arguments, '') }
231601
231911
  "spanning",
231602
231912
  "code"
231603
231913
  ];
231914
+ TABLE_LIKE_PREFIX = {
231915
+ table: "table-auto",
231916
+ tableCell: "cell-auto"
231917
+ };
231918
+ UUID_LIKE_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
231604
231919
  DocumentApiAdapterError = class DocumentApiAdapterError2 extends Error {
231605
231920
  constructor(code7, message, details) {
231606
231921
  super(message);
@@ -248397,7 +248712,7 @@ function print() { __p += __j.call(arguments, '') }
248397
248712
  }
248398
248713
  return true;
248399
248714
  },
248400
- insertTableAt: ({ pos, rows, columns, sdBlockId, paraId, tracked } = {}) => ({ tr, state, dispatch, editor }) => {
248715
+ insertTableAt: ({ pos, rows, columns, sdBlockId, tracked } = {}) => ({ tr, state, dispatch, editor }) => {
248401
248716
  const tableType = state.schema.nodes.table;
248402
248717
  const tableRowType = state.schema.nodes.tableRow;
248403
248718
  const tableCellType = state.schema.nodes.tableCell;
@@ -248410,22 +248725,18 @@ function print() { __p += __j.call(arguments, '') }
248410
248725
  if (!Number.isInteger(columns) || columns < 1)
248411
248726
  return false;
248412
248727
  try {
248413
- const genParaId = () => Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
248414
248728
  const widths = computeColumnWidths(editor, columns);
248415
248729
  const rowNodes = [];
248416
248730
  for (let r$1 = 0;r$1 < rows; r$1++) {
248417
248731
  const cellNodes = [];
248418
248732
  for (let c = 0;c < columns; c++) {
248419
- const cellAttrs = {
248420
- paraId: genParaId(),
248421
- ...widths ? { colwidth: [widths[c]] } : {}
248422
- };
248733
+ const cellAttrs = widths ? { colwidth: [widths[c]] } : {};
248423
248734
  const cell2 = tableCellType.createAndFill(cellAttrs);
248424
248735
  if (!cell2)
248425
248736
  return false;
248426
248737
  cellNodes.push(cell2);
248427
248738
  }
248428
- const row2 = tableRowType.createChecked(null, cellNodes);
248739
+ const row2 = tableRowType.createChecked({ paraId: generateDocxHexId() }, cellNodes);
248429
248740
  rowNodes.push(row2);
248430
248741
  }
248431
248742
  const resolved = normalizeNewTableAttrs(editor);
@@ -248433,8 +248744,7 @@ function print() { __p += __j.call(arguments, '') }
248433
248744
  ...resolved.tableStyleId ? { tableStyleId: resolved.tableStyleId } : {},
248434
248745
  ...resolved.borders ? { borders: resolved.borders } : {},
248435
248746
  ...resolved.tableProperties ? { tableProperties: resolved.tableProperties } : {},
248436
- ...sdBlockId ? { sdBlockId } : {},
248437
- ...paraId ? { paraId } : {}
248747
+ ...sdBlockId ? { sdBlockId } : {}
248438
248748
  };
248439
248749
  const tableNode = tableType.createChecked(tableAttrs, rowNodes);
248440
248750
  if (dispatch) {
@@ -248442,7 +248752,7 @@ function print() { __p += __j.call(arguments, '') }
248442
248752
  const makeSep = () => {
248443
248753
  const attrs = {
248444
248754
  sdBlockId: v4_default(),
248445
- paraId: genParaId()
248755
+ paraId: generateDocxHexId()
248446
248756
  };
248447
248757
  return state.schema.nodes.paragraph.createAndFill(attrs);
248448
248758
  };
@@ -257761,8 +258071,8 @@ var init_zipper_DqXT7uTa_es = __esm(() => {
257761
258071
 
257762
258072
  // ../../packages/superdoc/dist/super-editor.es.js
257763
258073
  var init_super_editor_es = __esm(() => {
257764
- init_src_bFMQreny_es();
257765
- init_SuperConverter_ClF1lbF9_es();
258074
+ init_src_BAlN4OvK_es();
258075
+ init_SuperConverter_hvBoS9gB_es();
257766
258076
  init_jszip_ChlR43oI_es();
257767
258077
  init_xml_js_BtmJ6bNs_es();
257768
258078
  init_constants_ep1_Gwqi_es();
@@ -257825,6 +258135,48 @@ function resolvePublicTocNodeId2(node3, pos) {
257825
258135
  return buildFallbackTocNodeId2(node3, pos);
257826
258136
  }
257827
258137
 
258138
+ // ../../packages/super-editor/src/document-api-adapters/helpers/table-node-id.ts
258139
+ function stableHash3(input2) {
258140
+ let hash2 = 2166136261;
258141
+ for (let index2 = 0;index2 < input2.length; index2 += 1) {
258142
+ hash2 ^= input2.charCodeAt(index2);
258143
+ hash2 = Math.imul(hash2, 16777619);
258144
+ }
258145
+ return (hash2 >>> 0).toString(16).padStart(8, "0");
258146
+ }
258147
+ function toTableLikeBlockNodeType2(nodeType) {
258148
+ if (nodeType === "table")
258149
+ return "table";
258150
+ if (nodeType === "tableCell")
258151
+ return "tableCell";
258152
+ return;
258153
+ }
258154
+ function serializeTraversalPath2(path2, pos) {
258155
+ if (Array.isArray(path2) && path2.length > 0) {
258156
+ return `path:${path2.join(".")}`;
258157
+ }
258158
+ return `pos:${pos}`;
258159
+ }
258160
+ function isVolatileRuntimeBlockId2(id2) {
258161
+ return typeof id2 === "string" && UUID_LIKE_PATTERN2.test(id2);
258162
+ }
258163
+ function buildFallbackTableNodeId2(nodeType, pos, path2) {
258164
+ const tableLikeType = toTableLikeBlockNodeType2(nodeType);
258165
+ if (!tableLikeType)
258166
+ return;
258167
+ const prefix2 = TABLE_LIKE_PREFIX2[tableLikeType];
258168
+ const source = serializeTraversalPath2(path2, pos);
258169
+ return `${prefix2}-${stableHash3(`${tableLikeType}:${source}`)}`;
258170
+ }
258171
+ var TABLE_LIKE_PREFIX2, UUID_LIKE_PATTERN2;
258172
+ var init_table_node_id = __esm(() => {
258173
+ TABLE_LIKE_PREFIX2 = {
258174
+ table: "table-auto",
258175
+ tableCell: "cell-auto"
258176
+ };
258177
+ UUID_LIKE_PATTERN2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
258178
+ });
258179
+
257828
258180
  // ../../packages/super-editor/src/document-api-adapters/errors.ts
257829
258181
  var DocumentApiAdapterError3;
257830
258182
  var init_errors3 = __esm(() => {
@@ -257892,7 +258244,17 @@ function mapBlockNodeType2(node3) {
257892
258244
  return;
257893
258245
  }
257894
258246
  }
257895
- function resolveBlockNodeId2(node3, pos, nodeType) {
258247
+ function resolveLegacyTableIdentity2(attrs) {
258248
+ return toId2(attrs.paraId) ?? toId2(attrs.blockId) ?? toId2(attrs.id) ?? toId2(attrs.uuid);
258249
+ }
258250
+ function resolveRuntimeTableIdentity2(nodeType, attrs, pos, path2) {
258251
+ const sdBlockId = toId2(attrs.sdBlockId);
258252
+ if (sdBlockId && !isVolatileRuntimeBlockId2(sdBlockId)) {
258253
+ return sdBlockId;
258254
+ }
258255
+ return buildFallbackTableNodeId2(nodeType, pos, path2);
258256
+ }
258257
+ function resolveBlockNodeId2(node3, pos, nodeType, path2) {
257896
258258
  if (node3.type.name === "paragraph") {
257897
258259
  const attrs2 = node3.attrs;
257898
258260
  return toId2(attrs2?.paraId) ?? toId2(attrs2?.sdBlockId);
@@ -257902,9 +258264,12 @@ function resolveBlockNodeId2(node3, pos, nodeType) {
257902
258264
  }
257903
258265
  const attrs = node3.attrs ?? {};
257904
258266
  const typeName = node3.type.name;
257905
- if (typeName === "table" || typeName === "tableRow" || typeName === "tableCell" || typeName === "tableHeader") {
258267
+ if (typeName === "tableRow") {
257906
258268
  return toId2(attrs.paraId) ?? toId2(attrs.sdBlockId) ?? toId2(attrs.blockId) ?? toId2(attrs.id) ?? toId2(attrs.uuid);
257907
258269
  }
258270
+ if (typeName === "table" || typeName === "tableCell" || typeName === "tableHeader") {
258271
+ return resolveLegacyTableIdentity2(attrs) ?? resolveRuntimeTableIdentity2(nodeType, attrs, pos, path2);
258272
+ }
257908
258273
  return toId2(attrs.blockId) ?? toId2(attrs.id) ?? toId2(attrs.paraId) ?? toId2(attrs.uuid) ?? toId2(attrs.sdBlockId);
257909
258274
  }
257910
258275
  function toBlockAddress2(candidate) {
@@ -257927,6 +258292,8 @@ function buildBlockIndex2(editor) {
257927
258292
  const candidates = [];
257928
258293
  const byId = new Map;
257929
258294
  const ambiguous = new Set;
258295
+ const pathByNode = new WeakMap;
258296
+ pathByNode.set(editor.state.doc, []);
257930
258297
  function registerKey(key2, candidate) {
257931
258298
  if (byId.has(key2)) {
257932
258299
  ambiguous.add(key2);
@@ -257935,11 +258302,16 @@ function buildBlockIndex2(editor) {
257935
258302
  byId.set(key2, candidate);
257936
258303
  }
257937
258304
  }
257938
- editor.state.doc.descendants((node3, pos) => {
258305
+ editor.state.doc.descendants((node3, pos, parent, index2) => {
258306
+ const parentPath = parent ? pathByNode.get(parent) ?? [] : [];
258307
+ const path2 = typeof index2 === "number" && Number.isInteger(index2) && index2 >= 0 ? [...parentPath, index2] : undefined;
258308
+ if (path2) {
258309
+ pathByNode.set(node3, path2);
258310
+ }
257939
258311
  const nodeType = mapBlockNodeType2(node3);
257940
258312
  if (!nodeType)
257941
258313
  return;
257942
- const nodeId = resolveBlockNodeId2(node3, pos, nodeType);
258314
+ const nodeId = resolveBlockNodeId2(node3, pos, nodeType, path2);
257943
258315
  if (!nodeId)
257944
258316
  return;
257945
258317
  const candidate = {
@@ -258034,6 +258406,7 @@ function findBlockByPos2(index2, pos) {
258034
258406
  }
258035
258407
  var SUPPORTED_BLOCK_NODE_TYPES, ALIAS_ELIGIBLE_TYPES2;
258036
258408
  var init_node_address_resolver = __esm(() => {
258409
+ init_table_node_id();
258037
258410
  init_errors3();
258038
258411
  SUPPORTED_BLOCK_NODE_TYPES = new Set([
258039
258412
  "paragraph",
@@ -266880,15 +267253,6 @@ function requireEditorCommand2(command2, operationName) {
266880
267253
  reason: "missing_command"
266881
267254
  });
266882
267255
  }
266883
- function requireSchemaMark2(editor, markName, operationName) {
266884
- const mark2 = editor.schema?.marks?.[markName];
266885
- if (mark2)
266886
- return mark2;
266887
- throw new DocumentApiAdapterError3("CAPABILITY_UNAVAILABLE", `${operationName} requires the "${markName}" mark.`, {
266888
- reason: "missing_mark",
266889
- markName
266890
- });
266891
- }
266892
267256
  function ensureTrackedCapability2(editor, config2) {
266893
267257
  if (typeof editor.commands?.insertTrackedChange !== "function") {
266894
267258
  throw new DocumentApiAdapterError3("CAPABILITY_UNAVAILABLE", `${config2.operation} requires the insertTrackedChange command.`, { reason: "missing_command" });
@@ -280842,6 +281206,15 @@ function createStrictTogglePropertyHandler2(xmlName, sdName = null) {
280842
281206
  }
280843
281207
  };
280844
281208
  }
281209
+ function stripUnsupportedTableIdentityAttributes2(attrs) {
281210
+ if (!attrs || typeof attrs !== "object")
281211
+ return {};
281212
+ const filteredAttrs = { ...attrs };
281213
+ for (const attrName of UNSUPPORTED_TABLE_IDENTITY_ATTRS2) {
281214
+ delete filteredAttrs[attrName];
281215
+ }
281216
+ return filteredAttrs;
281217
+ }
280845
281218
  function createMeasurementPropertyHandler2(xmlName, sdName = null) {
280846
281219
  if (!sdName)
280847
281220
  sdName = xmlName.split(":")[1];
@@ -281088,7 +281461,7 @@ var generateV2HandlerEntity2 = (handlerName, translator2) => ({
281088
281461
  consumed: 1
281089
281462
  };
281090
281463
  }
281091
- }), createSingleIntegerPropertyHandler2 = (xmlName, sdName = null) => createSingleAttrPropertyHandler2(xmlName, sdName, "w:val", parseInteger2, integerToString2), parseMeasurementValue2 = (value, type) => {
281464
+ }), createSingleIntegerPropertyHandler2 = (xmlName, sdName = null) => createSingleAttrPropertyHandler2(xmlName, sdName, "w:val", parseInteger2, integerToString2), UNSUPPORTED_TABLE_IDENTITY_ATTRS2, parseMeasurementValue2 = (value, type) => {
281092
281465
  if (value == null)
281093
281466
  return;
281094
281467
  const strValue = String(value);
@@ -281126,6 +281499,7 @@ var init_utils = __esm(() => {
281126
281499
  init_node_translator2();
281127
281500
  init_src();
281128
281501
  init_import_diagnostics();
281502
+ UNSUPPORTED_TABLE_IDENTITY_ATTRS2 = ["w14:paraId", "w14:textId"];
281129
281503
  });
281130
281504
 
281131
281505
  // ../../packages/super-editor/src/core/super-converter/v3/handlers/w/nsid/nsid-translator.js
@@ -291677,8 +292051,9 @@ function encode32(params3, encodedAttrs) {
291677
292051
  }
291678
292052
  function decode33(params3, decodedAttrs) {
291679
292053
  const translated = translateTableCell2(params3);
291680
- if (decodedAttrs && Object.keys(decodedAttrs).length) {
291681
- translated.attributes = { ...translated.attributes || {}, ...decodedAttrs };
292054
+ const filteredDecodedAttrs = stripUnsupportedTableIdentityAttributes2(decodedAttrs);
292055
+ if (Object.keys(filteredDecodedAttrs).length) {
292056
+ translated.attributes = { ...translated.attributes || {}, ...filteredDecodedAttrs };
291682
292057
  }
291683
292058
  return translated;
291684
292059
  }
@@ -313418,7 +313793,7 @@ var validXmlAttributes10, XML_NODE_NAME17 = "w:tbl", SD_NODE_NAME13 = "table", I
313418
313793
  }
313419
313794
  return {
313420
313795
  name: "w:tbl",
313421
- attributes: decodedAttrs || {},
313796
+ attributes: stripUnsupportedTableIdentityAttributes2(decodedAttrs),
313422
313797
  elements
313423
313798
  };
313424
313799
  }, config17, translator172;
@@ -318157,56 +318532,113 @@ function toIdentityValue2(value) {
318157
318532
  return String(value);
318158
318533
  return;
318159
318534
  }
318160
- function resolvePrimaryBlockIdentity2(node4) {
318535
+ function getBlockIdentityAttrs2(node4) {
318161
318536
  if (!node4 || typeof node4 !== "object")
318162
- return;
318163
- const attrPriority = BLOCK_IDENTITY_ATTRS2[node4.type];
318164
- if (!attrPriority)
318165
- return;
318537
+ return [];
318538
+ return BLOCK_IDENTITY_ATTRS2[node4.type] ?? [];
318539
+ }
318540
+ function getExplicitIdentityEntries2(node4) {
318541
+ const attrPriority = getBlockIdentityAttrs2(node4);
318542
+ if (attrPriority.length === 0)
318543
+ return [];
318166
318544
  const attrs = typeof node4.attrs === "object" && node4.attrs ? node4.attrs : {};
318545
+ const identityEntries = [];
318167
318546
  for (const attr of attrPriority) {
318168
318547
  const value = toIdentityValue2(attrs[attr]);
318169
- if (value)
318170
- return { id: value, source: attr };
318548
+ if (value) {
318549
+ identityEntries.push({ attr, value });
318550
+ }
318171
318551
  }
318172
- return;
318552
+ return identityEntries;
318173
318553
  }
318174
- function nextUniqueDocxId2(usedIds) {
318175
- let id2 = generateDocxRandomId2();
318176
- while (usedIds.has(id2)) {
318177
- id2 = generateDocxRandomId2();
318554
+ function groupIdentityEntriesByValue2(identityEntries) {
318555
+ const groupsByValue = new Map;
318556
+ for (const entry of identityEntries) {
318557
+ const existingGroup = groupsByValue.get(entry.value);
318558
+ if (existingGroup) {
318559
+ existingGroup.attrs.push(entry.attr);
318560
+ continue;
318561
+ }
318562
+ groupsByValue.set(entry.value, {
318563
+ value: entry.value,
318564
+ attrs: [entry.attr]
318565
+ });
318178
318566
  }
318179
- return id2;
318567
+ return [...groupsByValue.values()];
318568
+ }
318569
+ function shouldSynthesizeParaId2(node4) {
318570
+ return Boolean(node4 && typeof node4 === "object" && SYNTHETIC_PARA_ID_TYPES2.has(node4.type));
318180
318571
  }
318181
- function dedupeBlockIdentitiesInNode2(node4, usedIds) {
318572
+ function collectExplicitBlockIdentities2(node4, reservedIds) {
318182
318573
  if (!node4 || typeof node4 !== "object")
318183
318574
  return;
318184
- const identity = resolvePrimaryBlockIdentity2(node4);
318185
- if (identity) {
318186
- if (usedIds.has(identity.id)) {
318187
- const replacementId = nextUniqueDocxId2(usedIds);
318188
- node4.attrs = { ...node4.attrs, [identity.source]: replacementId };
318189
- usedIds.add(replacementId);
318190
- } else {
318191
- usedIds.add(identity.id);
318575
+ const identityEntries = getExplicitIdentityEntries2(node4);
318576
+ for (const { value } of groupIdentityEntriesByValue2(identityEntries)) {
318577
+ reservedIds.add(value);
318578
+ }
318579
+ if (Array.isArray(node4.content)) {
318580
+ node4.content.forEach((child) => collectExplicitBlockIdentities2(child, reservedIds));
318581
+ }
318582
+ }
318583
+ function createDeterministicDocxIdAllocator2(reservedIds) {
318584
+ let nextValue = 1;
318585
+ return () => {
318586
+ while (nextValue <= MAX_DOCX_ID2) {
318587
+ const id2 = nextValue.toString(16).toUpperCase().padStart(DOCX_ID_LENGTH2, "0");
318588
+ nextValue += 1;
318589
+ if (reservedIds.has(id2))
318590
+ continue;
318591
+ reservedIds.add(id2);
318592
+ return id2;
318192
318593
  }
318594
+ throw new Error("Unable to allocate a unique synthetic DOCX block id.");
318595
+ };
318596
+ }
318597
+ function setBlockIdentity2(node4, attrName, value) {
318598
+ node4.attrs = { ...node4.attrs ?? {}, [attrName]: value };
318599
+ }
318600
+ function normalizeBlockIdentitiesInNode2(node4, seenIds, allocateDocxId) {
318601
+ if (!node4 || typeof node4 !== "object")
318602
+ return;
318603
+ const identityEntries = getExplicitIdentityEntries2(node4);
318604
+ const groupedIdentities = groupIdentityEntriesByValue2(identityEntries);
318605
+ if (groupedIdentities.length > 0) {
318606
+ for (const identityGroup of groupedIdentities) {
318607
+ if (seenIds.has(identityGroup.value)) {
318608
+ const replacementId = allocateDocxId();
318609
+ for (const attr of identityGroup.attrs) {
318610
+ setBlockIdentity2(node4, attr, replacementId);
318611
+ }
318612
+ seenIds.add(replacementId);
318613
+ } else {
318614
+ seenIds.add(identityGroup.value);
318615
+ }
318616
+ }
318617
+ } else if (shouldSynthesizeParaId2(node4)) {
318618
+ const syntheticParaId = allocateDocxId();
318619
+ setBlockIdentity2(node4, "paraId", syntheticParaId);
318620
+ seenIds.add(syntheticParaId);
318193
318621
  }
318194
318622
  if (Array.isArray(node4.content)) {
318195
- node4.content.forEach((child) => dedupeBlockIdentitiesInNode2(child, usedIds));
318623
+ node4.content.forEach((child) => normalizeBlockIdentitiesInNode2(child, seenIds, allocateDocxId));
318196
318624
  }
318197
318625
  }
318198
318626
  function normalizeDuplicateBlockIdentitiesInContent2(content4 = []) {
318199
318627
  if (!Array.isArray(content4) || content4.length === 0)
318200
318628
  return content4;
318201
- const usedIds = new Set;
318202
- content4.forEach((node4) => dedupeBlockIdentitiesInNode2(node4, usedIds));
318629
+ const reservedIds = new Set;
318630
+ content4.forEach((node4) => collectExplicitBlockIdentities2(node4, reservedIds));
318631
+ const allocateDocxId = createDeterministicDocxIdAllocator2(reservedIds);
318632
+ const seenIds = new Set;
318633
+ content4.forEach((node4) => normalizeBlockIdentitiesInNode2(node4, seenIds, allocateDocxId));
318203
318634
  return content4;
318204
318635
  }
318205
- var PARAGRAPH_IDENTITY_ATTRS2, TABLE_IDENTITY_ATTRS2, DEFAULT_BLOCK_IDENTITY_ATTRS2, BLOCK_IDENTITY_ATTRS2;
318636
+ var PARAGRAPH_IDENTITY_ATTRS2, TABLE_IDENTITY_ATTRS2, DEFAULT_BLOCK_IDENTITY_ATTRS2, SYNTHETIC_PARA_ID_TYPES2, DOCX_ID_LENGTH2 = 8, MAX_DOCX_ID2 = 4294967295, BLOCK_IDENTITY_ATTRS2;
318206
318637
  var init_normalizeDuplicateBlockIdentitiesInContent = __esm(() => {
318207
318638
  PARAGRAPH_IDENTITY_ATTRS2 = ["sdBlockId", "paraId"];
318208
318639
  TABLE_IDENTITY_ATTRS2 = ["sdBlockId", "paraId", "blockId"];
318209
318640
  DEFAULT_BLOCK_IDENTITY_ATTRS2 = ["sdBlockId", "blockId", "paraId"];
318641
+ SYNTHETIC_PARA_ID_TYPES2 = new Set(["paragraph", "tableRow"]);
318210
318642
  BLOCK_IDENTITY_ATTRS2 = {
318211
318643
  paragraph: PARAGRAPH_IDENTITY_ATTRS2,
318212
318644
  heading: DEFAULT_BLOCK_IDENTITY_ATTRS2,
@@ -328174,12 +328606,13 @@ var init_list_item_resolver = __esm(() => {
328174
328606
  function getLiveDocumentCounts2(editor) {
328175
328607
  const currentDoc = editor.state.doc;
328176
328608
  const cached = liveDocumentCountsCache2.get(editor);
328609
+ const pages = countPages2(editor);
328177
328610
  if (cached && cached.doc === currentDoc) {
328178
- return cloneLiveDocumentCounts2(cached.counts);
328611
+ return cloneLiveDocumentCounts2(cached.counts, pages);
328179
328612
  }
328180
328613
  const counts = computeLiveDocumentCounts2(editor);
328181
328614
  liveDocumentCountsCache2.set(editor, { doc: currentDoc, counts });
328182
- return cloneLiveDocumentCounts2(counts);
328615
+ return cloneLiveDocumentCounts2(counts, pages);
328183
328616
  }
328184
328617
  function computeLiveDocumentCounts2(editor) {
328185
328618
  const text9 = getTextAdapter2(editor, {});
@@ -328200,8 +328633,8 @@ function computeLiveDocumentCounts2(editor) {
328200
328633
  lists: countLists2(editor, blockIndex)
328201
328634
  };
328202
328635
  }
328203
- function cloneLiveDocumentCounts2(counts) {
328204
- return { ...counts };
328636
+ function cloneLiveDocumentCounts2(counts, pages) {
328637
+ return pages != null ? { ...counts, pages } : { ...counts };
328205
328638
  }
328206
328639
  function countWordsFromText2(text9) {
328207
328640
  const matches3 = text9.trim().match(/\S+/g);
@@ -328306,6 +328739,9 @@ function resolveVisibleListLevel2(item) {
328306
328739
  }
328307
328740
  return item.path && item.path.length > 0 ? item.path.length - 1 : undefined;
328308
328741
  }
328742
+ function countPages2(editor) {
328743
+ return editor.currentTotalPages;
328744
+ }
328309
328745
  var FIELD_LIKE_SDT_TYPES2, liveDocumentCountsCache2;
328310
328746
  var init_live_document_counts = __esm(() => {
328311
328747
  init_index_cache();
@@ -328418,8 +328854,16 @@ function isInlinePropertyAvailable2(editor, property) {
328418
328854
  if (property.storage === "mark") {
328419
328855
  if (property.carrier.storage !== "mark")
328420
328856
  return false;
328421
- const markName = property.carrier.markName === "textStyle" ? "textStyle" : property.carrier.markName;
328422
- return hasMarkCapability2(editor, markName);
328857
+ const markName = property.carrier.markName;
328858
+ if (!hasMarkCapability2(editor, markName))
328859
+ return false;
328860
+ if (markName === "textStyle" && property.carrier.textStyleAttr) {
328861
+ const textStyleMark = editor.schema.marks.textStyle;
328862
+ const markAttrs = textStyleMark?.spec?.attrs ?? textStyleMark?.attrs;
328863
+ if (!markAttrs || !Object.prototype.hasOwnProperty.call(markAttrs, property.carrier.textStyleAttr))
328864
+ return false;
328865
+ }
328866
+ return true;
328423
328867
  }
328424
328868
  return Boolean(editor.schema?.nodes?.run);
328425
328869
  }
@@ -331951,6 +332395,84 @@ var init_structural_write_engine = __esm(() => {
331951
332395
  init_nesting_guard();
331952
332396
  });
331953
332397
 
332398
+ // ../../packages/super-editor/src/document-api-adapters/plan-engine/inline-property-guards.ts
332399
+ function getSchemaMarks2(editor) {
332400
+ return editor.schema?.marks ?? editor.state.schema?.marks ?? {};
332401
+ }
332402
+ function getSchemaNodes2(editor) {
332403
+ return editor.state.schema?.nodes ?? editor.schema?.nodes ?? {};
332404
+ }
332405
+ function getMarkAttrs2(markType) {
332406
+ if (!markType || typeof markType !== "object")
332407
+ return;
332408
+ const specAttrs = markType.spec?.attrs;
332409
+ if (specAttrs && typeof specAttrs === "object")
332410
+ return specAttrs;
332411
+ const attrs = markType.attrs;
332412
+ if (attrs && typeof attrs === "object")
332413
+ return attrs;
332414
+ return;
332415
+ }
332416
+ function getInlinePropertyCapabilityIssue2(editor, keys7, operationName = "format.apply") {
332417
+ const schemaMarks = getSchemaMarks2(editor);
332418
+ const requiredTextStyleAttrs = new Set;
332419
+ let requiresRunNode = false;
332420
+ for (const key2 of keys7) {
332421
+ const entry = INLINE_PROPERTY_BY_KEY[key2];
332422
+ if (!entry)
332423
+ continue;
332424
+ if (entry.storage === "mark") {
332425
+ const carrier = entry.carrier;
332426
+ if (carrier.storage !== "mark")
332427
+ continue;
332428
+ if (!schemaMarks[carrier.markName]) {
332429
+ return {
332430
+ code: "CAPABILITY_UNAVAILABLE",
332431
+ message: `${operationName} requires the "${carrier.markName}" mark.`,
332432
+ details: { reason: "missing_mark", markName: carrier.markName }
332433
+ };
332434
+ }
332435
+ if (carrier.markName === "textStyle" && carrier.textStyleAttr) {
332436
+ requiredTextStyleAttrs.add(carrier.textStyleAttr);
332437
+ }
332438
+ continue;
332439
+ }
332440
+ requiresRunNode = true;
332441
+ }
332442
+ if (requiredTextStyleAttrs.size > 0) {
332443
+ const markAttrs = getMarkAttrs2(schemaMarks.textStyle);
332444
+ for (const attr of requiredTextStyleAttrs) {
332445
+ if (!markAttrs || !Object.prototype.hasOwnProperty.call(markAttrs, attr)) {
332446
+ return {
332447
+ code: "CAPABILITY_UNAVAILABLE",
332448
+ message: `${operationName} requires the "${attr}" attribute on the textStyle mark.`,
332449
+ details: { reason: "missing_mark_attribute", markName: "textStyle", attribute: attr }
332450
+ };
332451
+ }
332452
+ }
332453
+ }
332454
+ if (requiresRunNode && !getSchemaNodes2(editor).run) {
332455
+ return {
332456
+ code: "CAPABILITY_UNAVAILABLE",
332457
+ message: `${operationName} requires a run node in the schema.`
332458
+ };
332459
+ }
332460
+ return;
332461
+ }
332462
+ function getTrackedInlinePropertySupportIssue2(keys7, operationName = "format.apply") {
332463
+ const unsupportedTrackedKeys = keys7.filter((key2) => INLINE_PROPERTY_BY_KEY[key2]?.tracked === false);
332464
+ if (unsupportedTrackedKeys.length === 0)
332465
+ return;
332466
+ return {
332467
+ code: "CAPABILITY_UNAVAILABLE",
332468
+ message: `${operationName} tracked mode is not available for: ${unsupportedTrackedKeys.join(", ")}`,
332469
+ details: { keys: unsupportedTrackedKeys, changeMode: "tracked" }
332470
+ };
332471
+ }
332472
+ var init_inline_property_guards = __esm(() => {
332473
+ init_src();
332474
+ });
332475
+
331954
332476
  // ../../packages/super-editor/src/document-api-adapters/plan-engine/plan-wrappers.ts
331955
332477
  function editorHasDom2(editor) {
331956
332478
  const opts = editor.options;
@@ -332128,37 +332650,16 @@ function writeWrapper2(editor, request, options) {
332128
332650
  return mapPlanReceiptToTextReceipt2(receipt2, resolved.resolution);
332129
332651
  }
332130
332652
  function ensureInlinePropertyCapabilities2(editor, keys7) {
332131
- let requiresTextStyle = false;
332132
- let requiresRunNode = false;
332133
- for (const key2 of keys7) {
332134
- const entry = INLINE_PROPERTY_BY_KEY[key2];
332135
- if (!entry)
332136
- continue;
332137
- if (entry.storage === "mark") {
332138
- const carrier = entry.carrier;
332139
- if (carrier.storage !== "mark")
332140
- continue;
332141
- if (carrier.markName === "textStyle") {
332142
- requiresTextStyle = true;
332143
- continue;
332144
- }
332145
- requireSchemaMark2(editor, carrier.markName, "format.apply");
332146
- continue;
332147
- }
332148
- requiresRunNode = true;
332149
- }
332150
- if (requiresTextStyle) {
332151
- requireSchemaMark2(editor, "textStyle", "format.apply");
332152
- }
332153
- if (requiresRunNode && !editor.state.schema.nodes.run) {
332154
- throw new DocumentApiAdapterError3("CAPABILITY_UNAVAILABLE", "format.apply requires a run node in the schema.");
332155
- }
332653
+ const issue = getInlinePropertyCapabilityIssue2(editor, keys7);
332654
+ if (!issue)
332655
+ return;
332656
+ throw new DocumentApiAdapterError3(issue.code, issue.message, issue.details);
332156
332657
  }
332157
332658
  function ensureTrackedInlinePropertySupport2(keys7) {
332158
- const unsupportedTrackedKeys = keys7.filter((key2) => INLINE_PROPERTY_BY_KEY[key2]?.tracked === false);
332159
- if (unsupportedTrackedKeys.length === 0)
332659
+ const issue = getTrackedInlinePropertySupportIssue2(keys7);
332660
+ if (!issue)
332160
332661
  return;
332161
- throw new DocumentApiAdapterError3("CAPABILITY_UNAVAILABLE", `format.apply tracked mode is not available for: ${unsupportedTrackedKeys.join(", ")}`, { keys: unsupportedTrackedKeys, changeMode: "tracked" });
332662
+ throw new DocumentApiAdapterError3(issue.code, issue.message, issue.details);
332162
332663
  }
332163
332664
  function buildSelectionWhere2(request) {
332164
332665
  if (request.target) {
@@ -332856,6 +333357,7 @@ var init_plan_wrappers = __esm(() => {
332856
333357
  init_selection_target_resolver();
332857
333358
  init_index_cache();
332858
333359
  init_node_address_resolver();
333360
+ init_inline_property_guards();
332859
333361
  STUB_WHERE2 = {
332860
333362
  by: "select",
332861
333363
  select: { type: "text", pattern: "", mode: "exact" },
@@ -334754,7 +335256,7 @@ function collectTopLevelBlocks2(editor) {
334754
335256
  const nodeType = mapBlockNodeType2(child);
334755
335257
  const pos = offset2;
334756
335258
  if (nodeType) {
334757
- const nodeId = resolveBlockNodeId2(child, pos, nodeType);
335259
+ const nodeId = resolveBlockNodeId2(child, pos, nodeType, [i5]);
334758
335260
  if (nodeId) {
334759
335261
  results.push({ node: child, pos, end: pos + child.nodeSize, nodeType, nodeId });
334760
335262
  }
@@ -336872,6 +337374,12 @@ var init_table_target_resolver = __esm(() => {
336872
337374
  init_errors3();
336873
337375
  });
336874
337376
 
337377
+ // ../../packages/super-editor/src/utils/generateDocxHexId.js
337378
+ function generateDocxHexId2() {
337379
+ return Array.from({ length: DOCX_HEX_ID_LENGTH2 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
337380
+ }
337381
+ var DOCX_HEX_ID_LENGTH2 = 8;
337382
+
336875
337383
  // ../../packages/super-editor/src/document-api-adapters/document-settings.ts
336876
337384
  function findSettingsRoot2(part) {
336877
337385
  if (part.name === "w:settings")
@@ -336950,16 +337458,13 @@ function setOddEvenHeadersFooters2(settingsRoot, enabled) {
336950
337458
  var SETTINGS_PART_PATH2 = "word/settings.xml";
336951
337459
 
336952
337460
  // ../../packages/super-editor/src/document-api-adapters/tables-adapter.ts
336953
- function generateParaId2() {
336954
- return Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
336955
- }
336956
337461
  function createSeparatorParagraph2(schema) {
336957
337462
  const paragraphType = schema.nodes.paragraph;
336958
337463
  if (!paragraphType)
336959
337464
  return null;
336960
337465
  const separatorAttrs = {
336961
337466
  sdBlockId: v42(),
336962
- paraId: generateParaId2()
337467
+ paraId: generateDocxHexId2()
336963
337468
  };
336964
337469
  return paragraphType.createAndFill(separatorAttrs) ?? paragraphType.createAndFill();
336965
337470
  }
@@ -338114,18 +338619,16 @@ function tablesConvertFromTextAdapter2(editor, input2, options) {
338114
338619
  const content5 = text9 ? schema.text(text9) : undefined;
338115
338620
  const para = schema.nodes.paragraph.createAndFill(null, content5);
338116
338621
  tableCells.push(schema.nodes.tableCell.createAndFill({
338117
- sdBlockId: v42(),
338118
- paraId: generateParaId2()
338622
+ sdBlockId: v42()
338119
338623
  }, para));
338120
338624
  }
338121
338625
  tableRows.push(schema.nodes.tableRow.createAndFill({
338122
338626
  sdBlockId: v42(),
338123
- paraId: generateParaId2()
338627
+ paraId: generateDocxHexId2()
338124
338628
  }, tableCells));
338125
338629
  }
338126
338630
  const tableId = v42();
338127
- const tableParaId = generateParaId2();
338128
- const tableNode = schema.nodes.table.create({ sdBlockId: tableId, paraId: tableParaId }, tableRows);
338631
+ const tableNode = schema.nodes.table.create({ sdBlockId: tableId }, tableRows);
338129
338632
  const startPos = paragraphs[0].pos;
338130
338633
  const lastP = paragraphs[paragraphs.length - 1];
338131
338634
  const endPos = lastP.pos + lastP.node.nodeSize;
@@ -338266,8 +338769,7 @@ function tablesInsertCellAdapter2(editor, input2, options) {
338266
338769
  const makeEmptyCell = (preferHeader = false) => {
338267
338770
  const candidateType = preferHeader ? schema.nodes.tableHeader ?? schema.nodes.tableCell : schema.nodes.tableCell;
338268
338771
  return candidateType.createAndFill({
338269
- sdBlockId: v42(),
338270
- paraId: generateParaId2()
338772
+ sdBlockId: v42()
338271
338773
  }) ?? candidateType.createAndFill();
338272
338774
  };
338273
338775
  const overflowRowCells = [];
@@ -338280,7 +338782,7 @@ function tablesInsertCellAdapter2(editor, input2, options) {
338280
338782
  const overflowRowAttrs = {
338281
338783
  ...templateRowAttrs,
338282
338784
  sdBlockId: v42(),
338283
- paraId: generateParaId2()
338785
+ paraId: generateDocxHexId2()
338284
338786
  };
338285
338787
  const overflowRow = schema.nodes.tableRow.createAndFill(overflowRowAttrs, overflowRowCells) ?? schema.nodes.tableRow.create(overflowRowAttrs, overflowRowCells);
338286
338788
  if (!overflowRow) {
@@ -339232,13 +339734,11 @@ function createTableAdapter2(editor, input2, options) {
339232
339734
  };
339233
339735
  }
339234
339736
  const tableId = v42();
339235
- const paraId = generateParaId2();
339236
339737
  const didApply = insertTableAt2({
339237
339738
  pos: insertAt,
339238
339739
  rows: input2.rows,
339239
339740
  columns: input2.columns,
339240
339741
  sdBlockId: tableId,
339241
- paraId,
339242
339742
  tracked: mode === "tracked"
339243
339743
  });
339244
339744
  if (!didApply) {
@@ -339663,6 +340163,19 @@ function executeTextStep2(ctx2, targets, step3, rangeExecutor, spanExecutor) {
339663
340163
  };
339664
340164
  return { stepId: step3.id, op: step3.op, effect: effect2, matchCount: targets.length, data };
339665
340165
  }
340166
+ function ensureFormatStepCapabilities2(ctx2, step3) {
340167
+ const inlineKeys = Object.keys(step3.args.inline);
340168
+ const capabilityIssue = getInlinePropertyCapabilityIssue2(ctx2.editor, inlineKeys, step3.op);
340169
+ if (capabilityIssue) {
340170
+ throw planError2(capabilityIssue.code, capabilityIssue.message, step3.id, capabilityIssue.details);
340171
+ }
340172
+ if (ctx2.changeMode !== "tracked")
340173
+ return;
340174
+ const trackedIssue = getTrackedInlinePropertySupportIssue2(inlineKeys, step3.op);
340175
+ if (trackedIssue) {
340176
+ throw planError2(trackedIssue.code, trackedIssue.message, step3.id, trackedIssue.details);
340177
+ }
340178
+ }
339666
340179
  function buildTableInput2(op, blockId, args3) {
339667
340180
  const { target: _target, nodeId: _n, tableTarget: _tableTarget, tableNodeId: _t2, ...safeArgs } = args3;
339668
340181
  if (TABLE_SCOPED_OPS2.has(op)) {
@@ -339687,7 +340200,10 @@ function registerBuiltInExecutors2() {
339687
340200
  execute: (ctx2, targets, step3) => executeTextStep2(ctx2, targets, step3, (e, tr, t, s2, m2) => executeTextDelete2(e, tr, t, s2, m2), (e, tr, t, s2, m2) => executeSpanTextDelete2(e, tr, t, s2, m2))
339688
340201
  });
339689
340202
  registerStepExecutor2("format.apply", {
339690
- execute: (ctx2, targets, step3) => executeTextStep2(ctx2, targets, step3, (e, tr, t, s2, m2) => executeStyleApply4(e, tr, t, s2, m2), (e, tr, t, s2, m2) => executeSpanStyleApply2(e, tr, t, s2, m2))
340203
+ execute: (ctx2, targets, step3) => {
340204
+ ensureFormatStepCapabilities2(ctx2, step3);
340205
+ return executeTextStep2(ctx2, targets, step3, (e, tr, t, s2, m2) => executeStyleApply4(e, tr, t, s2, m2), (e, tr, t, s2, m2) => executeSpanStyleApply2(e, tr, t, s2, m2));
340206
+ }
339691
340207
  });
339692
340208
  registerStepExecutor2("create.paragraph", {
339693
340209
  execute: (ctx2, targets, step3) => executeCreateStep2(ctx2.editor, ctx2.tr, step3, targets, ctx2.mapping)
@@ -339914,6 +340430,7 @@ var TABLE_ADAPTER_DISPATCH2, ROW_OPS2, TABLE_SCOPED_OPS2, registered2 = false;
339914
340430
  var init_register_executors = __esm(() => {
339915
340431
  init_executor_registry();
339916
340432
  init_errors4();
340433
+ init_inline_property_guards();
339917
340434
  init_executor();
339918
340435
  init_structural_write_engine();
339919
340436
  init_tables_adapter();
@@ -344342,6 +344859,131 @@ var init_tc_switches = __esm(() => {
344342
344859
  SWITCH_PATTERN3 = /\\([a-z])(?:\s*(?:"([^"]*)"|([^\s\\]+)))?/gi;
344343
344860
  });
344344
344861
 
344862
+ // ../../packages/super-editor/src/document-api-adapters/helpers/toc-bookmark-sync.ts
344863
+ function generateTocBookmarkName2(blockId) {
344864
+ return `${TOC_BOOKMARK_PREFIX2}${encodeBlockId2(blockId)}`;
344865
+ }
344866
+ function encodeBlockId2(input2) {
344867
+ let result = "";
344868
+ for (let i5 = 0;i5 < input2.length; i5++) {
344869
+ const ch = input2[i5];
344870
+ if (ch === "_") {
344871
+ result += "__";
344872
+ } else if (ch >= "a" && ch <= "z" || ch >= "A" && ch <= "Z" || ch >= "0" && ch <= "9") {
344873
+ result += ch;
344874
+ } else {
344875
+ result += `_${ch.charCodeAt(0).toString(16).padStart(2, "0")}`;
344876
+ }
344877
+ }
344878
+ return result;
344879
+ }
344880
+ function syncTocBookmarks2(editor, sources) {
344881
+ const { schema, doc: doc4 } = editor.state;
344882
+ if (!schema.nodes.bookmarkStart || !schema.nodes.bookmarkEnd)
344883
+ return;
344884
+ const needed = deduplicateByBlockId2(sources);
344885
+ const existing = collectExistingTocBookmarkNames2(doc4);
344886
+ const missing = needed.filter((t) => !existing.has(t.bookmarkName));
344887
+ if (missing.length === 0)
344888
+ return;
344889
+ const paragraphPositions = buildBlockIdPositionMap2(doc4);
344890
+ const insertions = resolveInsertionTargets2(missing, paragraphPositions, doc4);
344891
+ if (insertions.length === 0)
344892
+ return;
344893
+ const { tr } = editor.state;
344894
+ let nextId = findMaxBookmarkId2(doc4) + 1;
344895
+ for (const { bookmarkName, contentStart, contentEnd } of insertions) {
344896
+ const bookmarkId = String(nextId++);
344897
+ const endNode = schema.nodes.bookmarkEnd.create({ id: bookmarkId });
344898
+ const startNode = schema.nodes.bookmarkStart.create({ name: bookmarkName, id: bookmarkId });
344899
+ tr.insert(tr.mapping.map(contentStart), startNode);
344900
+ tr.insert(tr.mapping.map(contentEnd), endNode);
344901
+ }
344902
+ if (tr.docChanged) {
344903
+ dispatchTransaction2(editor, tr);
344904
+ }
344905
+ }
344906
+ function deduplicateByBlockId2(sources) {
344907
+ const seenBlockIds = new Set;
344908
+ const claimedNames = new Map;
344909
+ const targets = [];
344910
+ for (const { sdBlockId } of sources) {
344911
+ if (seenBlockIds.has(sdBlockId))
344912
+ continue;
344913
+ seenBlockIds.add(sdBlockId);
344914
+ const bookmarkName = generateTocBookmarkName2(sdBlockId);
344915
+ const existingOwner = claimedNames.get(bookmarkName);
344916
+ if (existingOwner !== undefined && existingOwner !== sdBlockId)
344917
+ continue;
344918
+ claimedNames.set(bookmarkName, sdBlockId);
344919
+ targets.push({ blockId: sdBlockId, bookmarkName });
344920
+ }
344921
+ return targets;
344922
+ }
344923
+ function collectExistingTocBookmarkNames2(doc4) {
344924
+ const names = new Set;
344925
+ doc4.descendants((node4) => {
344926
+ if (node4.type.name === "bookmarkStart") {
344927
+ const name = node4.attrs?.name;
344928
+ if (name?.startsWith(TOC_BOOKMARK_PREFIX2))
344929
+ names.add(name);
344930
+ }
344931
+ return true;
344932
+ });
344933
+ return names;
344934
+ }
344935
+ function buildBlockIdPositionMap2(doc4) {
344936
+ const map10 = new Map;
344937
+ doc4.descendants((node4, pos) => {
344938
+ if (node4.type.name === "paragraph") {
344939
+ const id2 = node4.attrs?.sdBlockId ?? node4.attrs?.paraId;
344940
+ if (id2 && !map10.has(id2))
344941
+ map10.set(id2, pos);
344942
+ }
344943
+ return true;
344944
+ });
344945
+ return map10;
344946
+ }
344947
+ function resolveInsertionTargets2(missing, positions, doc4) {
344948
+ const result = [];
344949
+ for (const { blockId, bookmarkName } of missing) {
344950
+ const pos = positions.get(blockId);
344951
+ if (pos === undefined)
344952
+ continue;
344953
+ const node4 = doc4.nodeAt(pos);
344954
+ if (!node4 || node4.type.name !== "paragraph")
344955
+ continue;
344956
+ result.push({
344957
+ bookmarkName,
344958
+ contentStart: pos + 1,
344959
+ contentEnd: pos + node4.nodeSize - 1
344960
+ });
344961
+ }
344962
+ result.sort((a2, b2) => b2.contentStart - a2.contentStart);
344963
+ return result;
344964
+ }
344965
+ function findMaxBookmarkId2(doc4) {
344966
+ let maxId = -1;
344967
+ doc4.descendants((node4) => {
344968
+ if (node4.type.name !== "bookmarkStart" && node4.type.name !== "bookmarkEnd")
344969
+ return true;
344970
+ const raw = node4.attrs?.id;
344971
+ const id2 = typeof raw === "string" ? parseInt(raw, 10) : typeof raw === "number" ? raw : NaN;
344972
+ if (!isNaN(id2) && id2 > maxId)
344973
+ maxId = id2;
344974
+ return true;
344975
+ });
344976
+ return maxId;
344977
+ }
344978
+ function dispatchTransaction2(editor, tr) {
344979
+ if (typeof editor.dispatch === "function") {
344980
+ editor.dispatch(tr);
344981
+ } else if (typeof editor.view?.dispatch === "function") {
344982
+ editor.view.dispatch(tr);
344983
+ }
344984
+ }
344985
+ var TOC_BOOKMARK_PREFIX2 = "_Toc";
344986
+
344345
344987
  // ../../packages/super-editor/src/document-api-adapters/helpers/toc-entry-builder.ts
344346
344988
  function collectTocSources2(doc4, config41) {
344347
344989
  const sources = [];
@@ -344427,7 +345069,7 @@ function buildEntryParagraph2(source, config41) {
344427
345069
  {
344428
345070
  type: "link",
344429
345071
  attrs: {
344430
- anchor: source.sdBlockId,
345072
+ anchor: generateTocBookmarkName2(source.sdBlockId),
344431
345073
  rId: null,
344432
345074
  history: true
344433
345075
  }
@@ -344619,7 +345261,7 @@ function materializeTocContent2(doc4, config41, editor) {
344619
345261
  const sources = collectTocSources2(doc4, config41);
344620
345262
  const entryParagraphs = buildTocEntryParagraphs2(sources, config41);
344621
345263
  const content5 = entryParagraphs.length > 0 ? entryParagraphs : NO_ENTRIES_PLACEHOLDER2;
344622
- return sanitizeTocContentForSchema2(content5, editor);
345264
+ return { content: sanitizeTocContentForSchema2(content5, editor), sources };
344623
345265
  }
344624
345266
  function tocConfigureWrapper2(editor, input2, options) {
344625
345267
  rejectTrackedMode2("toc.configure", options);
@@ -344629,7 +345271,7 @@ function tocConfigureWrapper2(editor, input2, options) {
344629
345271
  const instruction = serializeTocInstruction2(patched);
344630
345272
  const rightAlignChanged = input2.patch.rightAlignPageNumbers !== undefined && input2.patch.rightAlignPageNumbers !== resolved.node.attrs?.rightAlignPageNumbers;
344631
345273
  const effectiveRightAlign = input2.patch.rightAlignPageNumbers ?? resolved.node.attrs?.rightAlignPageNumbers;
344632
- const nextContent = materializeTocContent2(editor.state.doc, withRightAlign2(patched, effectiveRightAlign), editor);
345274
+ const { content: nextContent, sources } = materializeTocContent2(editor.state.doc, withRightAlign2(patched, effectiveRightAlign), editor);
344633
345275
  if (areTocConfigsEqual2(currentConfig, patched) && !rightAlignChanged) {
344634
345276
  return tocFailure2("NO_OP", "Configuration patch produced no change.");
344635
345277
  }
@@ -344666,6 +345308,7 @@ function tocConfigureWrapper2(editor, input2, options) {
344666
345308
  if (!receiptApplied2(receipt2)) {
344667
345309
  return tocFailure2("NO_OP", "Configuration change could not be applied.");
344668
345310
  }
345311
+ syncTocBookmarks2(editor, sources);
344669
345312
  const postMutationId = resolvePostMutationTocId2(editor.state.doc, commandNodeId);
344670
345313
  return tocSuccess2(postMutationId);
344671
345314
  }
@@ -344681,7 +345324,7 @@ function tocUpdateAll2(editor, input2, options) {
344681
345324
  const resolved = resolveTocTarget2(editor.state.doc, input2.target);
344682
345325
  const config41 = parseTocInstruction2(resolved.node.attrs?.instruction ?? "");
344683
345326
  const rightAlign = resolved.node.attrs?.rightAlignPageNumbers;
344684
- const content5 = materializeTocContent2(editor.state.doc, withRightAlign2(config41, rightAlign), editor);
345327
+ const { content: content5, sources } = materializeTocContent2(editor.state.doc, withRightAlign2(config41, rightAlign), editor);
344685
345328
  if (isTocContentUnchanged2(resolved.node, content5)) {
344686
345329
  return tocFailure2("NO_OP", "TOC update produced no change.");
344687
345330
  }
@@ -344704,7 +345347,11 @@ function tocUpdateAll2(editor, input2, options) {
344704
345347
  return false;
344705
345348
  }
344706
345349
  }, options?.expectedRevision);
344707
- return receiptApplied2(receipt2) ? tocSuccess2(resolved.nodeId) : tocFailure2("NO_OP", "TOC update produced no change.");
345350
+ if (!receiptApplied2(receipt2)) {
345351
+ return tocFailure2("NO_OP", "TOC update produced no change.");
345352
+ }
345353
+ syncTocBookmarks2(editor, sources);
345354
+ return tocSuccess2(resolved.nodeId);
344708
345355
  }
344709
345356
  function getPageMap2(editor) {
344710
345357
  const storage = editor.storage;
@@ -344828,7 +345475,7 @@ function createTableOfContentsWrapper2(editor, input2, options) {
344828
345475
  }
344829
345476
  const config41 = input2.config ? applyTocPatchTyped2(DEFAULT_TOC_CONFIG2, input2.config) : DEFAULT_TOC_CONFIG2;
344830
345477
  const instruction = serializeTocInstruction2(config41);
344831
- const content5 = materializeTocContent2(editor.state.doc, withRightAlign2(config41, input2.config?.rightAlignPageNumbers), editor);
345478
+ const { content: content5, sources } = materializeTocContent2(editor.state.doc, withRightAlign2(config41, input2.config?.rightAlignPageNumbers), editor);
344832
345479
  const sdBlockId = v42();
344833
345480
  if (options?.dryRun) {
344834
345481
  return { success: true, toc: buildTocAddress2("(dry-run)") };
@@ -344874,6 +345521,7 @@ function createTableOfContentsWrapper2(editor, input2, options) {
344874
345521
  }
344875
345522
  };
344876
345523
  }
345524
+ syncTocBookmarks2(editor, sources);
344877
345525
  const postMutationId = resolvePostMutationTocId2(editor.state.doc, sdBlockId);
344878
345526
  return { success: true, toc: buildTocAddress2(postMutationId) };
344879
345527
  }
@@ -344900,7 +345548,7 @@ var init_toc_wrappers = __esm(() => {
344900
345548
  });
344901
345549
 
344902
345550
  // ../../packages/super-editor/src/document-api-adapters/helpers/toc-entry-node-id.ts
344903
- function stableHash3(input2) {
345551
+ function stableHash4(input2) {
344904
345552
  let hash2 = 2166136261;
344905
345553
  for (let index3 = 0;index3 < input2.length; index3 += 1) {
344906
345554
  hash2 ^= input2.charCodeAt(index3);
@@ -344910,7 +345558,7 @@ function stableHash3(input2) {
344910
345558
  }
344911
345559
  function resolvePublicTcEntryNodeId2(node4, pos) {
344912
345560
  const instruction = typeof node4.attrs?.instruction === "string" ? node4.attrs.instruction : "";
344913
- return `tc-entry-${stableHash3(`${pos}:${instruction}`)}`;
345561
+ return `tc-entry-${stableHash4(`${pos}:${instruction}`)}`;
344914
345562
  }
344915
345563
 
344916
345564
  // ../../packages/super-editor/src/document-api-adapters/helpers/toc-entry-resolver.ts
@@ -346174,13 +346822,13 @@ function getLinkMarkType2(editor) {
346174
346822
  }
346175
346823
  return markType;
346176
346824
  }
346177
- function dispatchTransaction2(editor, tr) {
346825
+ function dispatchTransaction3(editor, tr) {
346178
346826
  editor.dispatch(tr);
346179
346827
  }
346180
346828
  function dispatchIfChanged2(editor, tr) {
346181
346829
  if (!tr.docChanged)
346182
346830
  return false;
346183
- dispatchTransaction2(editor, tr);
346831
+ dispatchTransaction3(editor, tr);
346184
346832
  return true;
346185
346833
  }
346186
346834
  function createRelationshipId2(editor, href) {
@@ -346226,7 +346874,7 @@ function wrapWithLink2(editor, from4, to, spec) {
346226
346874
  const tr = editor.state.tr;
346227
346875
  tr.addMark(from4, to, linkMarkType.create(attrs));
346228
346876
  applyDirectMutationMeta2(tr);
346229
- dispatchTransaction2(editor, tr);
346877
+ dispatchTransaction3(editor, tr);
346230
346878
  return true;
346231
346879
  }
346232
346880
  function insertLinkedText2(editor, pos, text9, spec) {
@@ -346237,7 +346885,7 @@ function insertLinkedText2(editor, pos, text9, spec) {
346237
346885
  tr.insertText(text9, pos);
346238
346886
  tr.addMark(pos, pos + text9.length, mark2);
346239
346887
  applyDirectMutationMeta2(tr);
346240
- dispatchTransaction2(editor, tr);
346888
+ dispatchTransaction3(editor, tr);
346241
346889
  return true;
346242
346890
  }
346243
346891
  function patchLinkMark2(editor, from4, to, existingMark, patch3) {
@@ -346287,7 +346935,7 @@ function deleteLinkedText2(editor, from4, to) {
346287
346935
  const tr = editor.state.tr;
346288
346936
  tr.delete(from4, to);
346289
346937
  applyDirectMutationMeta2(tr);
346290
- dispatchTransaction2(editor, tr);
346938
+ dispatchTransaction3(editor, tr);
346291
346939
  return true;
346292
346940
  }
346293
346941
  var init_hyperlink_mutation_helper = __esm(() => {
@@ -346759,7 +347407,7 @@ function executeSdtMutation2(editor, target, options, handler3) {
346759
347407
  }
346760
347408
  return buildMutationSuccess2(target, updatedRef);
346761
347409
  }
346762
- function dispatchTransaction3(editor, tr) {
347410
+ function dispatchTransaction4(editor, tr) {
346763
347411
  if (editor.view?.dispatch) {
346764
347412
  editor.view.dispatch(tr);
346765
347413
  return;
@@ -346844,7 +347492,7 @@ function replaceSdtTextContent2(editor, target, text9) {
346844
347492
  const updatedNode2 = resolved.node.type.create({ ...resolved.node.attrs }, null, resolved.node.marks);
346845
347493
  const { tr: tr2 } = editor.state;
346846
347494
  tr2.replaceWith(resolved.pos, resolved.pos + resolved.node.nodeSize, updatedNode2);
346847
- dispatchTransaction3(editor, tr2);
347495
+ dispatchTransaction4(editor, tr2);
346848
347496
  return true;
346849
347497
  }
346850
347498
  const paragraph4 = buildEmptyBlockContent2(editor, resolved.node);
@@ -346853,7 +347501,7 @@ function replaceSdtTextContent2(editor, target, text9) {
346853
347501
  const updatedNode = resolved.node.type.create({ ...resolved.node.attrs }, updatedParagraph, resolved.node.marks);
346854
347502
  const { tr } = editor.state;
346855
347503
  tr.replaceWith(resolved.pos, resolved.pos + resolved.node.nodeSize, updatedNode);
346856
- dispatchTransaction3(editor, tr);
347504
+ dispatchTransaction4(editor, tr);
346857
347505
  return true;
346858
347506
  }
346859
347507
  function listWrapper2(editor, query2) {
@@ -346947,7 +347595,7 @@ function wrapWrapper2(editor, input2, options) {
346947
347595
  const wrapperNode = nodeType.create({ id: id2, tag: input2.tag, alias: input2.alias, lockMode: input2.lockMode ?? "unlocked" }, resolved.node);
346948
347596
  const { tr } = editor.state;
346949
347597
  tr.replaceWith(resolved.pos, resolved.pos + resolved.node.nodeSize, wrapperNode);
346950
- dispatchTransaction3(editor, tr);
347598
+ dispatchTransaction4(editor, tr);
346951
347599
  return wrapperTarget;
346952
347600
  });
346953
347601
  }
@@ -346959,7 +347607,7 @@ function unwrapWrapper2(editor, input2, options) {
346959
347607
  const resolved = resolveSdtByTarget2(editor.state.doc, input2.target);
346960
347608
  const { tr } = editor.state;
346961
347609
  tr.replaceWith(resolved.pos, resolved.pos + resolved.node.nodeSize, resolved.node.content);
346962
- dispatchTransaction3(editor, tr);
347610
+ dispatchTransaction4(editor, tr);
346963
347611
  return true;
346964
347612
  });
346965
347613
  }
@@ -346986,7 +347634,7 @@ function copyWrapper2(editor, input2, options) {
346986
347634
  const { tr } = editor.state;
346987
347635
  const insertPos = dest.pos + dest.node.nodeSize;
346988
347636
  tr.insert(insertPos, cloned);
346989
- dispatchTransaction3(editor, tr);
347637
+ dispatchTransaction4(editor, tr);
346990
347638
  return { kind: source.kind, nodeType: "sdt", nodeId: newId };
346991
347639
  });
346992
347640
  }
@@ -347001,7 +347649,7 @@ function moveWrapper2(editor, input2, options) {
347001
347649
  const destAfterDelete = resolveSdtByTarget2(tr.doc, input2.destination);
347002
347650
  const insertPos = destAfterDelete.pos + destAfterDelete.node.nodeSize;
347003
347651
  tr.insert(insertPos, source.node);
347004
- dispatchTransaction3(editor, tr);
347652
+ dispatchTransaction4(editor, tr);
347005
347653
  return true;
347006
347654
  });
347007
347655
  }
@@ -347277,7 +347925,7 @@ function insertBeforeWrapper2(editor, input2, options) {
347277
347925
  const textNode = editor.schema.text(input2.content);
347278
347926
  const { tr } = editor.state;
347279
347927
  tr.insert(resolved.pos, textNode);
347280
- dispatchTransaction3(editor, tr);
347928
+ dispatchTransaction4(editor, tr);
347281
347929
  return true;
347282
347930
  });
347283
347931
  }
@@ -347290,7 +347938,7 @@ function insertAfterWrapper2(editor, input2, options) {
347290
347938
  const textNode = editor.schema.text(input2.content);
347291
347939
  const { tr } = editor.state;
347292
347940
  tr.insert(insertPos, textNode);
347293
- dispatchTransaction3(editor, tr);
347941
+ dispatchTransaction4(editor, tr);
347294
347942
  return true;
347295
347943
  });
347296
347944
  }
@@ -347678,7 +348326,7 @@ function repeatingSectionInsertItemBeforeWrapper2(editor, input2, options) {
347678
348326
  const newItem = nodeType.create({ id: generateSdtId2(), controlType: "repeatingSectionItem", type: "repeatingSectionItem" }, paragraph4);
347679
348327
  const { tr } = editor.state;
347680
348328
  tr.insert(insertPos, newItem);
347681
- dispatchTransaction3(editor, tr);
348329
+ dispatchTransaction4(editor, tr);
347682
348330
  return true;
347683
348331
  });
347684
348332
  }
@@ -347700,7 +348348,7 @@ function repeatingSectionInsertItemAfterWrapper2(editor, input2, options) {
347700
348348
  const newItem = nodeType.create({ id: generateSdtId2(), controlType: "repeatingSectionItem", type: "repeatingSectionItem" }, paragraph4);
347701
348349
  const { tr } = editor.state;
347702
348350
  tr.insert(insertPos, newItem);
347703
- dispatchTransaction3(editor, tr);
348351
+ dispatchTransaction4(editor, tr);
347704
348352
  return true;
347705
348353
  });
347706
348354
  }
@@ -347720,7 +348368,7 @@ function repeatingSectionCloneItemWrapper2(editor, input2, options) {
347720
348368
  const insertPos = sourceItem.pos + sourceItem.node.nodeSize;
347721
348369
  const { tr } = editor.state;
347722
348370
  tr.insert(insertPos, cloned);
347723
- dispatchTransaction3(editor, tr);
348371
+ dispatchTransaction4(editor, tr);
347724
348372
  return true;
347725
348373
  });
347726
348374
  }
@@ -347738,7 +348386,7 @@ function repeatingSectionDeleteItemWrapper2(editor, input2, options) {
347738
348386
  const item = items[input2.index];
347739
348387
  const { tr } = editor.state;
347740
348388
  tr.delete(item.pos, item.pos + item.node.nodeSize);
347741
- dispatchTransaction3(editor, tr);
348389
+ dispatchTransaction4(editor, tr);
347742
348390
  return true;
347743
348391
  });
347744
348392
  }
@@ -347763,7 +348411,7 @@ function groupWrapWrapper2(editor, input2, options) {
347763
348411
  const groupNode = groupNodeType.create({ id: groupId, controlType: "group", type: "group" }, resolved.node);
347764
348412
  const { tr } = editor.state;
347765
348413
  tr.replaceWith(resolved.pos, resolved.pos + resolved.node.nodeSize, groupNode);
347766
- dispatchTransaction3(editor, tr);
348414
+ dispatchTransaction4(editor, tr);
347767
348415
  return { kind: "block", nodeType: "sdt", nodeId: groupId };
347768
348416
  });
347769
348417
  }
@@ -347776,7 +348424,7 @@ function groupUngroupWrapper2(editor, input2, options) {
347776
348424
  const resolved = resolveSdtByTarget2(editor.state.doc, input2.target);
347777
348425
  const { tr } = editor.state;
347778
348426
  tr.replaceWith(resolved.pos, resolved.pos + resolved.node.nodeSize, resolved.node.content);
347779
- dispatchTransaction3(editor, tr);
348427
+ dispatchTransaction4(editor, tr);
347780
348428
  return true;
347781
348429
  });
347782
348430
  }
@@ -347831,7 +348479,7 @@ function createWrapper2(editor, input2, options) {
347831
348479
  const insertPos = ref4.pos + ref4.node.nodeSize;
347832
348480
  const { tr } = editor.state;
347833
348481
  tr.insert(insertPos, newNode);
347834
- dispatchTransaction3(editor, tr);
348482
+ dispatchTransaction4(editor, tr);
347835
348483
  return true;
347836
348484
  }
347837
348485
  if (contentText !== undefined) {