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

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 +389 -147
  2. package/package.json +8 -8
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()];
64401
+ }
64402
+ function shouldSynthesizeParaId(node3) {
64403
+ return Boolean(node3 && typeof node3 === "object" && SYNTHETIC_PARA_ID_TYPES.has(node3.type));
64377
64404
  }
64378
- function dedupeBlockIdentitiesInNode(node3, usedIds) {
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-Bdp40qhn.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 = {
@@ -153933,14 +154044,15 @@ function resolveListItem(editor, address2) {
153933
154044
  function getLiveDocumentCounts(editor) {
153934
154045
  const currentDoc = editor.state.doc;
153935
154046
  const cached = liveDocumentCountsCache.get(editor);
154047
+ const pages = countPages(editor);
153936
154048
  if (cached && cached.doc === currentDoc)
153937
- return cloneLiveDocumentCounts(cached.counts);
154049
+ return cloneLiveDocumentCounts(cached.counts, pages);
153938
154050
  const counts = computeLiveDocumentCounts(editor);
153939
154051
  liveDocumentCountsCache.set(editor, {
153940
154052
  doc: currentDoc,
153941
154053
  counts
153942
154054
  });
153943
- return cloneLiveDocumentCounts(counts);
154055
+ return cloneLiveDocumentCounts(counts, pages);
153944
154056
  }
153945
154057
  function computeLiveDocumentCounts(editor) {
153946
154058
  const text5 = getTextAdapter(editor, {});
@@ -153961,8 +154073,11 @@ function computeLiveDocumentCounts(editor) {
153961
154073
  lists: countLists(editor, blockIndex)
153962
154074
  };
153963
154075
  }
153964
- function cloneLiveDocumentCounts(counts) {
153965
- return { ...counts };
154076
+ function cloneLiveDocumentCounts(counts, pages) {
154077
+ return pages != null ? {
154078
+ ...counts,
154079
+ pages
154080
+ } : { ...counts };
153966
154081
  }
153967
154082
  function countWordsFromText(text5) {
153968
154083
  const matches2 = text5.trim().match(/\S+/g);
@@ -154063,6 +154178,9 @@ function resolveVisibleListLevel(item) {
154063
154178
  return item.level;
154064
154179
  return item.path && item.path.length > 0 ? item.path.length - 1 : undefined;
154065
154180
  }
154181
+ function countPages(editor) {
154182
+ return editor.currentTotalPages;
154183
+ }
154066
154184
  function clampHeadingLevel(value) {
154067
154185
  if (typeof value !== "number" || !Number.isFinite(value))
154068
154186
  return 1;
@@ -159940,7 +160058,7 @@ function collectTopLevelBlocks(editor) {
159940
160058
  const nodeType = mapBlockNodeType(child);
159941
160059
  const pos = offset$1;
159942
160060
  if (nodeType) {
159943
- const nodeId = resolveBlockNodeId(child, pos, nodeType);
160061
+ const nodeId = resolveBlockNodeId(child, pos, nodeType, [i4]);
159944
160062
  if (nodeId)
159945
160063
  results.push({
159946
160064
  node: child,
@@ -162078,6 +162196,9 @@ function toTableFailure(code7, message, details) {
162078
162196
  }
162079
162197
  };
162080
162198
  }
162199
+ function generateDocxHexId() {
162200
+ return Array.from({ length: DOCX_HEX_ID_LENGTH }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
162201
+ }
162081
162202
  function findSettingsRoot(part) {
162082
162203
  if (part.name === "w:settings")
162083
162204
  return part;
@@ -162151,16 +162272,13 @@ function setOddEvenHeadersFooters(settingsRoot, enabled) {
162151
162272
  settingsRoot.elements = elements.filter((entry) => entry.name !== "w:evenAndOddHeaders");
162152
162273
  return hadFlag !== hasOddEvenHeadersFooters(settingsRoot);
162153
162274
  }
162154
- function generateParaId() {
162155
- return Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
162156
- }
162157
162275
  function createSeparatorParagraph(schema) {
162158
162276
  const paragraphType = schema.nodes.paragraph;
162159
162277
  if (!paragraphType)
162160
162278
  return null;
162161
162279
  const separatorAttrs = {
162162
162280
  sdBlockId: v4_default(),
162163
- paraId: generateParaId()
162281
+ paraId: generateDocxHexId()
162164
162282
  };
162165
162283
  return paragraphType.createAndFill(separatorAttrs) ?? paragraphType.createAndFill();
162166
162284
  }
@@ -163313,22 +163431,15 @@ function tablesConvertFromTextAdapter(editor, input2, options) {
163313
163431
  const text5 = cells[c] ?? "";
163314
163432
  const content3 = text5 ? schema.text(text5) : undefined;
163315
163433
  const para = schema.nodes.paragraph.createAndFill(null, content3);
163316
- tableCells.push(schema.nodes.tableCell.createAndFill({
163317
- sdBlockId: v4_default(),
163318
- paraId: generateParaId()
163319
- }, para));
163434
+ tableCells.push(schema.nodes.tableCell.createAndFill({ sdBlockId: v4_default() }, para));
163320
163435
  }
163321
163436
  tableRows.push(schema.nodes.tableRow.createAndFill({
163322
163437
  sdBlockId: v4_default(),
163323
- paraId: generateParaId()
163438
+ paraId: generateDocxHexId()
163324
163439
  }, tableCells));
163325
163440
  }
163326
163441
  const tableId = v4_default();
163327
- const tableParaId = generateParaId();
163328
- const tableNode = schema.nodes.table.create({
163329
- sdBlockId: tableId,
163330
- paraId: tableParaId
163331
- }, tableRows);
163442
+ const tableNode = schema.nodes.table.create({ sdBlockId: tableId }, tableRows);
163332
163443
  const startPos = paragraphs[0].pos;
163333
163444
  const lastP = paragraphs[paragraphs.length - 1];
163334
163445
  const endPos = lastP.pos + lastP.node.nodeSize;
@@ -163456,10 +163567,7 @@ function tablesInsertCellAdapter(editor, input2, options) {
163456
163567
  return toTableFailure("INVALID_TARGET", "Cell insertion with shiftRight is not supported for merged cells in this version.");
163457
163568
  const makeEmptyCell = (preferHeader = false) => {
163458
163569
  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();
163570
+ return candidateType.createAndFill({ sdBlockId: v4_default() }) ?? candidateType.createAndFill();
163463
163571
  };
163464
163572
  const overflowRowCells = [];
163465
163573
  for (let col = 0;col < map$12.width; col++) {
@@ -163470,7 +163578,7 @@ function tablesInsertCellAdapter(editor, input2, options) {
163470
163578
  const overflowRowAttrs = {
163471
163579
  ...tableNode.child(Math.max(0, map$12.height - 1)).attrs ?? {},
163472
163580
  sdBlockId: v4_default(),
163473
- paraId: generateParaId()
163581
+ paraId: generateDocxHexId()
163474
163582
  };
163475
163583
  const overflowRow = schema.nodes.tableRow.createAndFill(overflowRowAttrs, overflowRowCells) ?? schema.nodes.tableRow.create(overflowRowAttrs, overflowRowCells);
163476
163584
  if (!overflowRow)
@@ -164439,13 +164547,11 @@ function createTableAdapter(editor, input2, options) {
164439
164547
  };
164440
164548
  }
164441
164549
  const tableId = v4_default();
164442
- const paraId = generateParaId();
164443
164550
  if (!insertTableAt$1({
164444
164551
  pos: insertAt,
164445
164552
  rows: input2.rows,
164446
164553
  columns: input2.columns,
164447
164554
  sdBlockId: tableId,
164448
- paraId,
164449
164555
  tracked: mode === "tracked"
164450
164556
  }))
164451
164557
  return {
@@ -205632,7 +205738,7 @@ var Node$13 = class Node$14 {
205632
205738
  console.warn("Failed to initialize developer tools:", error);
205633
205739
  }
205634
205740
  }
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) => {
205741
+ }, 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
205742
  if (!run2 || typeof run2 !== "object")
205637
205743
  return false;
205638
205744
  return typeof run2.src === "string";
@@ -205651,7 +205757,7 @@ var Node$13 = class Node$14 {
205651
205757
  return;
205652
205758
  const candidate = run2.pmEnd;
205653
205759
  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) => {
205760
+ }, 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
205761
  if (!path2.includes(".")) {
205656
205762
  target[path2] = value;
205657
205763
  return;
@@ -220827,7 +220933,10 @@ var Node$13 = class Node$14 {
220827
220933
  for (let index2 = 0;index2 < rowsCount; index2++) {
220828
220934
  const isHeader = withHeaderRow && index2 === 0;
220829
220935
  const cellsToInsert = isHeader ? headerCells : cells;
220830
- const rowAttrs = isHeader ? { tableRowProperties: { repeatHeader: true } } : null;
220936
+ const rowAttrs = {
220937
+ ...isHeader ? { tableRowProperties: { repeatHeader: true } } : {},
220938
+ paraId: generateDocxHexId()
220939
+ };
220831
220940
  rows.push(types3.tableRow.createChecked(rowAttrs, cellsToInsert));
220832
220941
  }
220833
220942
  return types3.table.createChecked(tableAttrsOverride, rows);
@@ -224673,9 +224782,9 @@ var Node$13 = class Node$14 {
224673
224782
  return false;
224674
224783
  return Boolean(checker(attrs));
224675
224784
  }, SuperToolbar, ICONS, TEXTS, tableActionsOptions;
224676
- var init_src_bFMQreny_es = __esm(() => {
224785
+ var init_src_Bdp40qhn_es = __esm(() => {
224677
224786
  init_rolldown_runtime_B2q5OVn9_es();
224678
- init_SuperConverter_ClF1lbF9_es();
224787
+ init_SuperConverter_hvBoS9gB_es();
224679
224788
  init_jszip_ChlR43oI_es();
224680
224789
  init_uuid_qzgm05fK_es();
224681
224790
  init_constants_ep1_Gwqi_es();
@@ -231601,6 +231710,11 @@ function print() { __p += __j.call(arguments, '') }
231601
231710
  "spanning",
231602
231711
  "code"
231603
231712
  ];
231713
+ TABLE_LIKE_PREFIX = {
231714
+ table: "table-auto",
231715
+ tableCell: "cell-auto"
231716
+ };
231717
+ 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
231718
  DocumentApiAdapterError = class DocumentApiAdapterError2 extends Error {
231605
231719
  constructor(code7, message, details) {
231606
231720
  super(message);
@@ -248397,7 +248511,7 @@ function print() { __p += __j.call(arguments, '') }
248397
248511
  }
248398
248512
  return true;
248399
248513
  },
248400
- insertTableAt: ({ pos, rows, columns, sdBlockId, paraId, tracked } = {}) => ({ tr, state, dispatch, editor }) => {
248514
+ insertTableAt: ({ pos, rows, columns, sdBlockId, tracked } = {}) => ({ tr, state, dispatch, editor }) => {
248401
248515
  const tableType = state.schema.nodes.table;
248402
248516
  const tableRowType = state.schema.nodes.tableRow;
248403
248517
  const tableCellType = state.schema.nodes.tableCell;
@@ -248410,22 +248524,18 @@ function print() { __p += __j.call(arguments, '') }
248410
248524
  if (!Number.isInteger(columns) || columns < 1)
248411
248525
  return false;
248412
248526
  try {
248413
- const genParaId = () => Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
248414
248527
  const widths = computeColumnWidths(editor, columns);
248415
248528
  const rowNodes = [];
248416
248529
  for (let r$1 = 0;r$1 < rows; r$1++) {
248417
248530
  const cellNodes = [];
248418
248531
  for (let c = 0;c < columns; c++) {
248419
- const cellAttrs = {
248420
- paraId: genParaId(),
248421
- ...widths ? { colwidth: [widths[c]] } : {}
248422
- };
248532
+ const cellAttrs = widths ? { colwidth: [widths[c]] } : {};
248423
248533
  const cell2 = tableCellType.createAndFill(cellAttrs);
248424
248534
  if (!cell2)
248425
248535
  return false;
248426
248536
  cellNodes.push(cell2);
248427
248537
  }
248428
- const row2 = tableRowType.createChecked(null, cellNodes);
248538
+ const row2 = tableRowType.createChecked({ paraId: generateDocxHexId() }, cellNodes);
248429
248539
  rowNodes.push(row2);
248430
248540
  }
248431
248541
  const resolved = normalizeNewTableAttrs(editor);
@@ -248433,8 +248543,7 @@ function print() { __p += __j.call(arguments, '') }
248433
248543
  ...resolved.tableStyleId ? { tableStyleId: resolved.tableStyleId } : {},
248434
248544
  ...resolved.borders ? { borders: resolved.borders } : {},
248435
248545
  ...resolved.tableProperties ? { tableProperties: resolved.tableProperties } : {},
248436
- ...sdBlockId ? { sdBlockId } : {},
248437
- ...paraId ? { paraId } : {}
248546
+ ...sdBlockId ? { sdBlockId } : {}
248438
248547
  };
248439
248548
  const tableNode = tableType.createChecked(tableAttrs, rowNodes);
248440
248549
  if (dispatch) {
@@ -248442,7 +248551,7 @@ function print() { __p += __j.call(arguments, '') }
248442
248551
  const makeSep = () => {
248443
248552
  const attrs = {
248444
248553
  sdBlockId: v4_default(),
248445
- paraId: genParaId()
248554
+ paraId: generateDocxHexId()
248446
248555
  };
248447
248556
  return state.schema.nodes.paragraph.createAndFill(attrs);
248448
248557
  };
@@ -257761,8 +257870,8 @@ var init_zipper_DqXT7uTa_es = __esm(() => {
257761
257870
 
257762
257871
  // ../../packages/superdoc/dist/super-editor.es.js
257763
257872
  var init_super_editor_es = __esm(() => {
257764
- init_src_bFMQreny_es();
257765
- init_SuperConverter_ClF1lbF9_es();
257873
+ init_src_Bdp40qhn_es();
257874
+ init_SuperConverter_hvBoS9gB_es();
257766
257875
  init_jszip_ChlR43oI_es();
257767
257876
  init_xml_js_BtmJ6bNs_es();
257768
257877
  init_constants_ep1_Gwqi_es();
@@ -257825,6 +257934,48 @@ function resolvePublicTocNodeId2(node3, pos) {
257825
257934
  return buildFallbackTocNodeId2(node3, pos);
257826
257935
  }
257827
257936
 
257937
+ // ../../packages/super-editor/src/document-api-adapters/helpers/table-node-id.ts
257938
+ function stableHash3(input2) {
257939
+ let hash2 = 2166136261;
257940
+ for (let index2 = 0;index2 < input2.length; index2 += 1) {
257941
+ hash2 ^= input2.charCodeAt(index2);
257942
+ hash2 = Math.imul(hash2, 16777619);
257943
+ }
257944
+ return (hash2 >>> 0).toString(16).padStart(8, "0");
257945
+ }
257946
+ function toTableLikeBlockNodeType2(nodeType) {
257947
+ if (nodeType === "table")
257948
+ return "table";
257949
+ if (nodeType === "tableCell")
257950
+ return "tableCell";
257951
+ return;
257952
+ }
257953
+ function serializeTraversalPath2(path2, pos) {
257954
+ if (Array.isArray(path2) && path2.length > 0) {
257955
+ return `path:${path2.join(".")}`;
257956
+ }
257957
+ return `pos:${pos}`;
257958
+ }
257959
+ function isVolatileRuntimeBlockId2(id2) {
257960
+ return typeof id2 === "string" && UUID_LIKE_PATTERN2.test(id2);
257961
+ }
257962
+ function buildFallbackTableNodeId2(nodeType, pos, path2) {
257963
+ const tableLikeType = toTableLikeBlockNodeType2(nodeType);
257964
+ if (!tableLikeType)
257965
+ return;
257966
+ const prefix2 = TABLE_LIKE_PREFIX2[tableLikeType];
257967
+ const source = serializeTraversalPath2(path2, pos);
257968
+ return `${prefix2}-${stableHash3(`${tableLikeType}:${source}`)}`;
257969
+ }
257970
+ var TABLE_LIKE_PREFIX2, UUID_LIKE_PATTERN2;
257971
+ var init_table_node_id = __esm(() => {
257972
+ TABLE_LIKE_PREFIX2 = {
257973
+ table: "table-auto",
257974
+ tableCell: "cell-auto"
257975
+ };
257976
+ 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;
257977
+ });
257978
+
257828
257979
  // ../../packages/super-editor/src/document-api-adapters/errors.ts
257829
257980
  var DocumentApiAdapterError3;
257830
257981
  var init_errors3 = __esm(() => {
@@ -257892,7 +258043,17 @@ function mapBlockNodeType2(node3) {
257892
258043
  return;
257893
258044
  }
257894
258045
  }
257895
- function resolveBlockNodeId2(node3, pos, nodeType) {
258046
+ function resolveLegacyTableIdentity2(attrs) {
258047
+ return toId2(attrs.paraId) ?? toId2(attrs.blockId) ?? toId2(attrs.id) ?? toId2(attrs.uuid);
258048
+ }
258049
+ function resolveRuntimeTableIdentity2(nodeType, attrs, pos, path2) {
258050
+ const sdBlockId = toId2(attrs.sdBlockId);
258051
+ if (sdBlockId && !isVolatileRuntimeBlockId2(sdBlockId)) {
258052
+ return sdBlockId;
258053
+ }
258054
+ return buildFallbackTableNodeId2(nodeType, pos, path2);
258055
+ }
258056
+ function resolveBlockNodeId2(node3, pos, nodeType, path2) {
257896
258057
  if (node3.type.name === "paragraph") {
257897
258058
  const attrs2 = node3.attrs;
257898
258059
  return toId2(attrs2?.paraId) ?? toId2(attrs2?.sdBlockId);
@@ -257902,9 +258063,12 @@ function resolveBlockNodeId2(node3, pos, nodeType) {
257902
258063
  }
257903
258064
  const attrs = node3.attrs ?? {};
257904
258065
  const typeName = node3.type.name;
257905
- if (typeName === "table" || typeName === "tableRow" || typeName === "tableCell" || typeName === "tableHeader") {
258066
+ if (typeName === "tableRow") {
257906
258067
  return toId2(attrs.paraId) ?? toId2(attrs.sdBlockId) ?? toId2(attrs.blockId) ?? toId2(attrs.id) ?? toId2(attrs.uuid);
257907
258068
  }
258069
+ if (typeName === "table" || typeName === "tableCell" || typeName === "tableHeader") {
258070
+ return resolveLegacyTableIdentity2(attrs) ?? resolveRuntimeTableIdentity2(nodeType, attrs, pos, path2);
258071
+ }
257908
258072
  return toId2(attrs.blockId) ?? toId2(attrs.id) ?? toId2(attrs.paraId) ?? toId2(attrs.uuid) ?? toId2(attrs.sdBlockId);
257909
258073
  }
257910
258074
  function toBlockAddress2(candidate) {
@@ -257927,6 +258091,8 @@ function buildBlockIndex2(editor) {
257927
258091
  const candidates = [];
257928
258092
  const byId = new Map;
257929
258093
  const ambiguous = new Set;
258094
+ const pathByNode = new WeakMap;
258095
+ pathByNode.set(editor.state.doc, []);
257930
258096
  function registerKey(key2, candidate) {
257931
258097
  if (byId.has(key2)) {
257932
258098
  ambiguous.add(key2);
@@ -257935,11 +258101,16 @@ function buildBlockIndex2(editor) {
257935
258101
  byId.set(key2, candidate);
257936
258102
  }
257937
258103
  }
257938
- editor.state.doc.descendants((node3, pos) => {
258104
+ editor.state.doc.descendants((node3, pos, parent, index2) => {
258105
+ const parentPath = parent ? pathByNode.get(parent) ?? [] : [];
258106
+ const path2 = typeof index2 === "number" && Number.isInteger(index2) && index2 >= 0 ? [...parentPath, index2] : undefined;
258107
+ if (path2) {
258108
+ pathByNode.set(node3, path2);
258109
+ }
257939
258110
  const nodeType = mapBlockNodeType2(node3);
257940
258111
  if (!nodeType)
257941
258112
  return;
257942
- const nodeId = resolveBlockNodeId2(node3, pos, nodeType);
258113
+ const nodeId = resolveBlockNodeId2(node3, pos, nodeType, path2);
257943
258114
  if (!nodeId)
257944
258115
  return;
257945
258116
  const candidate = {
@@ -258034,6 +258205,7 @@ function findBlockByPos2(index2, pos) {
258034
258205
  }
258035
258206
  var SUPPORTED_BLOCK_NODE_TYPES, ALIAS_ELIGIBLE_TYPES2;
258036
258207
  var init_node_address_resolver = __esm(() => {
258208
+ init_table_node_id();
258037
258209
  init_errors3();
258038
258210
  SUPPORTED_BLOCK_NODE_TYPES = new Set([
258039
258211
  "paragraph",
@@ -280842,6 +281014,15 @@ function createStrictTogglePropertyHandler2(xmlName, sdName = null) {
280842
281014
  }
280843
281015
  };
280844
281016
  }
281017
+ function stripUnsupportedTableIdentityAttributes2(attrs) {
281018
+ if (!attrs || typeof attrs !== "object")
281019
+ return {};
281020
+ const filteredAttrs = { ...attrs };
281021
+ for (const attrName of UNSUPPORTED_TABLE_IDENTITY_ATTRS2) {
281022
+ delete filteredAttrs[attrName];
281023
+ }
281024
+ return filteredAttrs;
281025
+ }
280845
281026
  function createMeasurementPropertyHandler2(xmlName, sdName = null) {
280846
281027
  if (!sdName)
280847
281028
  sdName = xmlName.split(":")[1];
@@ -281088,7 +281269,7 @@ var generateV2HandlerEntity2 = (handlerName, translator2) => ({
281088
281269
  consumed: 1
281089
281270
  };
281090
281271
  }
281091
- }), createSingleIntegerPropertyHandler2 = (xmlName, sdName = null) => createSingleAttrPropertyHandler2(xmlName, sdName, "w:val", parseInteger2, integerToString2), parseMeasurementValue2 = (value, type) => {
281272
+ }), createSingleIntegerPropertyHandler2 = (xmlName, sdName = null) => createSingleAttrPropertyHandler2(xmlName, sdName, "w:val", parseInteger2, integerToString2), UNSUPPORTED_TABLE_IDENTITY_ATTRS2, parseMeasurementValue2 = (value, type) => {
281092
281273
  if (value == null)
281093
281274
  return;
281094
281275
  const strValue = String(value);
@@ -281126,6 +281307,7 @@ var init_utils = __esm(() => {
281126
281307
  init_node_translator2();
281127
281308
  init_src();
281128
281309
  init_import_diagnostics();
281310
+ UNSUPPORTED_TABLE_IDENTITY_ATTRS2 = ["w14:paraId", "w14:textId"];
281129
281311
  });
281130
281312
 
281131
281313
  // ../../packages/super-editor/src/core/super-converter/v3/handlers/w/nsid/nsid-translator.js
@@ -291677,8 +291859,9 @@ function encode32(params3, encodedAttrs) {
291677
291859
  }
291678
291860
  function decode33(params3, decodedAttrs) {
291679
291861
  const translated = translateTableCell2(params3);
291680
- if (decodedAttrs && Object.keys(decodedAttrs).length) {
291681
- translated.attributes = { ...translated.attributes || {}, ...decodedAttrs };
291862
+ const filteredDecodedAttrs = stripUnsupportedTableIdentityAttributes2(decodedAttrs);
291863
+ if (Object.keys(filteredDecodedAttrs).length) {
291864
+ translated.attributes = { ...translated.attributes || {}, ...filteredDecodedAttrs };
291682
291865
  }
291683
291866
  return translated;
291684
291867
  }
@@ -313418,7 +313601,7 @@ var validXmlAttributes10, XML_NODE_NAME17 = "w:tbl", SD_NODE_NAME13 = "table", I
313418
313601
  }
313419
313602
  return {
313420
313603
  name: "w:tbl",
313421
- attributes: decodedAttrs || {},
313604
+ attributes: stripUnsupportedTableIdentityAttributes2(decodedAttrs),
313422
313605
  elements
313423
313606
  };
313424
313607
  }, config17, translator172;
@@ -318157,56 +318340,113 @@ function toIdentityValue2(value) {
318157
318340
  return String(value);
318158
318341
  return;
318159
318342
  }
318160
- function resolvePrimaryBlockIdentity2(node4) {
318343
+ function getBlockIdentityAttrs2(node4) {
318161
318344
  if (!node4 || typeof node4 !== "object")
318162
- return;
318163
- const attrPriority = BLOCK_IDENTITY_ATTRS2[node4.type];
318164
- if (!attrPriority)
318165
- return;
318345
+ return [];
318346
+ return BLOCK_IDENTITY_ATTRS2[node4.type] ?? [];
318347
+ }
318348
+ function getExplicitIdentityEntries2(node4) {
318349
+ const attrPriority = getBlockIdentityAttrs2(node4);
318350
+ if (attrPriority.length === 0)
318351
+ return [];
318166
318352
  const attrs = typeof node4.attrs === "object" && node4.attrs ? node4.attrs : {};
318353
+ const identityEntries = [];
318167
318354
  for (const attr of attrPriority) {
318168
318355
  const value = toIdentityValue2(attrs[attr]);
318169
- if (value)
318170
- return { id: value, source: attr };
318356
+ if (value) {
318357
+ identityEntries.push({ attr, value });
318358
+ }
318171
318359
  }
318172
- return;
318360
+ return identityEntries;
318173
318361
  }
318174
- function nextUniqueDocxId2(usedIds) {
318175
- let id2 = generateDocxRandomId2();
318176
- while (usedIds.has(id2)) {
318177
- id2 = generateDocxRandomId2();
318362
+ function groupIdentityEntriesByValue2(identityEntries) {
318363
+ const groupsByValue = new Map;
318364
+ for (const entry of identityEntries) {
318365
+ const existingGroup = groupsByValue.get(entry.value);
318366
+ if (existingGroup) {
318367
+ existingGroup.attrs.push(entry.attr);
318368
+ continue;
318369
+ }
318370
+ groupsByValue.set(entry.value, {
318371
+ value: entry.value,
318372
+ attrs: [entry.attr]
318373
+ });
318178
318374
  }
318179
- return id2;
318375
+ return [...groupsByValue.values()];
318376
+ }
318377
+ function shouldSynthesizeParaId2(node4) {
318378
+ return Boolean(node4 && typeof node4 === "object" && SYNTHETIC_PARA_ID_TYPES2.has(node4.type));
318180
318379
  }
318181
- function dedupeBlockIdentitiesInNode2(node4, usedIds) {
318380
+ function collectExplicitBlockIdentities2(node4, reservedIds) {
318182
318381
  if (!node4 || typeof node4 !== "object")
318183
318382
  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);
318383
+ const identityEntries = getExplicitIdentityEntries2(node4);
318384
+ for (const { value } of groupIdentityEntriesByValue2(identityEntries)) {
318385
+ reservedIds.add(value);
318386
+ }
318387
+ if (Array.isArray(node4.content)) {
318388
+ node4.content.forEach((child) => collectExplicitBlockIdentities2(child, reservedIds));
318389
+ }
318390
+ }
318391
+ function createDeterministicDocxIdAllocator2(reservedIds) {
318392
+ let nextValue = 1;
318393
+ return () => {
318394
+ while (nextValue <= MAX_DOCX_ID2) {
318395
+ const id2 = nextValue.toString(16).toUpperCase().padStart(DOCX_ID_LENGTH2, "0");
318396
+ nextValue += 1;
318397
+ if (reservedIds.has(id2))
318398
+ continue;
318399
+ reservedIds.add(id2);
318400
+ return id2;
318192
318401
  }
318402
+ throw new Error("Unable to allocate a unique synthetic DOCX block id.");
318403
+ };
318404
+ }
318405
+ function setBlockIdentity2(node4, attrName, value) {
318406
+ node4.attrs = { ...node4.attrs ?? {}, [attrName]: value };
318407
+ }
318408
+ function normalizeBlockIdentitiesInNode2(node4, seenIds, allocateDocxId) {
318409
+ if (!node4 || typeof node4 !== "object")
318410
+ return;
318411
+ const identityEntries = getExplicitIdentityEntries2(node4);
318412
+ const groupedIdentities = groupIdentityEntriesByValue2(identityEntries);
318413
+ if (groupedIdentities.length > 0) {
318414
+ for (const identityGroup of groupedIdentities) {
318415
+ if (seenIds.has(identityGroup.value)) {
318416
+ const replacementId = allocateDocxId();
318417
+ for (const attr of identityGroup.attrs) {
318418
+ setBlockIdentity2(node4, attr, replacementId);
318419
+ }
318420
+ seenIds.add(replacementId);
318421
+ } else {
318422
+ seenIds.add(identityGroup.value);
318423
+ }
318424
+ }
318425
+ } else if (shouldSynthesizeParaId2(node4)) {
318426
+ const syntheticParaId = allocateDocxId();
318427
+ setBlockIdentity2(node4, "paraId", syntheticParaId);
318428
+ seenIds.add(syntheticParaId);
318193
318429
  }
318194
318430
  if (Array.isArray(node4.content)) {
318195
- node4.content.forEach((child) => dedupeBlockIdentitiesInNode2(child, usedIds));
318431
+ node4.content.forEach((child) => normalizeBlockIdentitiesInNode2(child, seenIds, allocateDocxId));
318196
318432
  }
318197
318433
  }
318198
318434
  function normalizeDuplicateBlockIdentitiesInContent2(content4 = []) {
318199
318435
  if (!Array.isArray(content4) || content4.length === 0)
318200
318436
  return content4;
318201
- const usedIds = new Set;
318202
- content4.forEach((node4) => dedupeBlockIdentitiesInNode2(node4, usedIds));
318437
+ const reservedIds = new Set;
318438
+ content4.forEach((node4) => collectExplicitBlockIdentities2(node4, reservedIds));
318439
+ const allocateDocxId = createDeterministicDocxIdAllocator2(reservedIds);
318440
+ const seenIds = new Set;
318441
+ content4.forEach((node4) => normalizeBlockIdentitiesInNode2(node4, seenIds, allocateDocxId));
318203
318442
  return content4;
318204
318443
  }
318205
- var PARAGRAPH_IDENTITY_ATTRS2, TABLE_IDENTITY_ATTRS2, DEFAULT_BLOCK_IDENTITY_ATTRS2, BLOCK_IDENTITY_ATTRS2;
318444
+ 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
318445
  var init_normalizeDuplicateBlockIdentitiesInContent = __esm(() => {
318207
318446
  PARAGRAPH_IDENTITY_ATTRS2 = ["sdBlockId", "paraId"];
318208
318447
  TABLE_IDENTITY_ATTRS2 = ["sdBlockId", "paraId", "blockId"];
318209
318448
  DEFAULT_BLOCK_IDENTITY_ATTRS2 = ["sdBlockId", "blockId", "paraId"];
318449
+ SYNTHETIC_PARA_ID_TYPES2 = new Set(["paragraph", "tableRow"]);
318210
318450
  BLOCK_IDENTITY_ATTRS2 = {
318211
318451
  paragraph: PARAGRAPH_IDENTITY_ATTRS2,
318212
318452
  heading: DEFAULT_BLOCK_IDENTITY_ATTRS2,
@@ -328174,12 +328414,13 @@ var init_list_item_resolver = __esm(() => {
328174
328414
  function getLiveDocumentCounts2(editor) {
328175
328415
  const currentDoc = editor.state.doc;
328176
328416
  const cached = liveDocumentCountsCache2.get(editor);
328417
+ const pages = countPages2(editor);
328177
328418
  if (cached && cached.doc === currentDoc) {
328178
- return cloneLiveDocumentCounts2(cached.counts);
328419
+ return cloneLiveDocumentCounts2(cached.counts, pages);
328179
328420
  }
328180
328421
  const counts = computeLiveDocumentCounts2(editor);
328181
328422
  liveDocumentCountsCache2.set(editor, { doc: currentDoc, counts });
328182
- return cloneLiveDocumentCounts2(counts);
328423
+ return cloneLiveDocumentCounts2(counts, pages);
328183
328424
  }
328184
328425
  function computeLiveDocumentCounts2(editor) {
328185
328426
  const text9 = getTextAdapter2(editor, {});
@@ -328200,8 +328441,8 @@ function computeLiveDocumentCounts2(editor) {
328200
328441
  lists: countLists2(editor, blockIndex)
328201
328442
  };
328202
328443
  }
328203
- function cloneLiveDocumentCounts2(counts) {
328204
- return { ...counts };
328444
+ function cloneLiveDocumentCounts2(counts, pages) {
328445
+ return pages != null ? { ...counts, pages } : { ...counts };
328205
328446
  }
328206
328447
  function countWordsFromText2(text9) {
328207
328448
  const matches3 = text9.trim().match(/\S+/g);
@@ -328306,6 +328547,9 @@ function resolveVisibleListLevel2(item) {
328306
328547
  }
328307
328548
  return item.path && item.path.length > 0 ? item.path.length - 1 : undefined;
328308
328549
  }
328550
+ function countPages2(editor) {
328551
+ return editor.currentTotalPages;
328552
+ }
328309
328553
  var FIELD_LIKE_SDT_TYPES2, liveDocumentCountsCache2;
328310
328554
  var init_live_document_counts = __esm(() => {
328311
328555
  init_index_cache();
@@ -334754,7 +334998,7 @@ function collectTopLevelBlocks2(editor) {
334754
334998
  const nodeType = mapBlockNodeType2(child);
334755
334999
  const pos = offset2;
334756
335000
  if (nodeType) {
334757
- const nodeId = resolveBlockNodeId2(child, pos, nodeType);
335001
+ const nodeId = resolveBlockNodeId2(child, pos, nodeType, [i5]);
334758
335002
  if (nodeId) {
334759
335003
  results.push({ node: child, pos, end: pos + child.nodeSize, nodeType, nodeId });
334760
335004
  }
@@ -336872,6 +337116,12 @@ var init_table_target_resolver = __esm(() => {
336872
337116
  init_errors3();
336873
337117
  });
336874
337118
 
337119
+ // ../../packages/super-editor/src/utils/generateDocxHexId.js
337120
+ function generateDocxHexId2() {
337121
+ return Array.from({ length: DOCX_HEX_ID_LENGTH2 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
337122
+ }
337123
+ var DOCX_HEX_ID_LENGTH2 = 8;
337124
+
336875
337125
  // ../../packages/super-editor/src/document-api-adapters/document-settings.ts
336876
337126
  function findSettingsRoot2(part) {
336877
337127
  if (part.name === "w:settings")
@@ -336950,16 +337200,13 @@ function setOddEvenHeadersFooters2(settingsRoot, enabled) {
336950
337200
  var SETTINGS_PART_PATH2 = "word/settings.xml";
336951
337201
 
336952
337202
  // ../../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
337203
  function createSeparatorParagraph2(schema) {
336957
337204
  const paragraphType = schema.nodes.paragraph;
336958
337205
  if (!paragraphType)
336959
337206
  return null;
336960
337207
  const separatorAttrs = {
336961
337208
  sdBlockId: v42(),
336962
- paraId: generateParaId2()
337209
+ paraId: generateDocxHexId2()
336963
337210
  };
336964
337211
  return paragraphType.createAndFill(separatorAttrs) ?? paragraphType.createAndFill();
336965
337212
  }
@@ -338114,18 +338361,16 @@ function tablesConvertFromTextAdapter2(editor, input2, options) {
338114
338361
  const content5 = text9 ? schema.text(text9) : undefined;
338115
338362
  const para = schema.nodes.paragraph.createAndFill(null, content5);
338116
338363
  tableCells.push(schema.nodes.tableCell.createAndFill({
338117
- sdBlockId: v42(),
338118
- paraId: generateParaId2()
338364
+ sdBlockId: v42()
338119
338365
  }, para));
338120
338366
  }
338121
338367
  tableRows.push(schema.nodes.tableRow.createAndFill({
338122
338368
  sdBlockId: v42(),
338123
- paraId: generateParaId2()
338369
+ paraId: generateDocxHexId2()
338124
338370
  }, tableCells));
338125
338371
  }
338126
338372
  const tableId = v42();
338127
- const tableParaId = generateParaId2();
338128
- const tableNode = schema.nodes.table.create({ sdBlockId: tableId, paraId: tableParaId }, tableRows);
338373
+ const tableNode = schema.nodes.table.create({ sdBlockId: tableId }, tableRows);
338129
338374
  const startPos = paragraphs[0].pos;
338130
338375
  const lastP = paragraphs[paragraphs.length - 1];
338131
338376
  const endPos = lastP.pos + lastP.node.nodeSize;
@@ -338266,8 +338511,7 @@ function tablesInsertCellAdapter2(editor, input2, options) {
338266
338511
  const makeEmptyCell = (preferHeader = false) => {
338267
338512
  const candidateType = preferHeader ? schema.nodes.tableHeader ?? schema.nodes.tableCell : schema.nodes.tableCell;
338268
338513
  return candidateType.createAndFill({
338269
- sdBlockId: v42(),
338270
- paraId: generateParaId2()
338514
+ sdBlockId: v42()
338271
338515
  }) ?? candidateType.createAndFill();
338272
338516
  };
338273
338517
  const overflowRowCells = [];
@@ -338280,7 +338524,7 @@ function tablesInsertCellAdapter2(editor, input2, options) {
338280
338524
  const overflowRowAttrs = {
338281
338525
  ...templateRowAttrs,
338282
338526
  sdBlockId: v42(),
338283
- paraId: generateParaId2()
338527
+ paraId: generateDocxHexId2()
338284
338528
  };
338285
338529
  const overflowRow = schema.nodes.tableRow.createAndFill(overflowRowAttrs, overflowRowCells) ?? schema.nodes.tableRow.create(overflowRowAttrs, overflowRowCells);
338286
338530
  if (!overflowRow) {
@@ -339232,13 +339476,11 @@ function createTableAdapter2(editor, input2, options) {
339232
339476
  };
339233
339477
  }
339234
339478
  const tableId = v42();
339235
- const paraId = generateParaId2();
339236
339479
  const didApply = insertTableAt2({
339237
339480
  pos: insertAt,
339238
339481
  rows: input2.rows,
339239
339482
  columns: input2.columns,
339240
339483
  sdBlockId: tableId,
339241
- paraId,
339242
339484
  tracked: mode === "tracked"
339243
339485
  });
339244
339486
  if (!didApply) {
@@ -344900,7 +345142,7 @@ var init_toc_wrappers = __esm(() => {
344900
345142
  });
344901
345143
 
344902
345144
  // ../../packages/super-editor/src/document-api-adapters/helpers/toc-entry-node-id.ts
344903
- function stableHash3(input2) {
345145
+ function stableHash4(input2) {
344904
345146
  let hash2 = 2166136261;
344905
345147
  for (let index3 = 0;index3 < input2.length; index3 += 1) {
344906
345148
  hash2 ^= input2.charCodeAt(index3);
@@ -344910,7 +345152,7 @@ function stableHash3(input2) {
344910
345152
  }
344911
345153
  function resolvePublicTcEntryNodeId2(node4, pos) {
344912
345154
  const instruction = typeof node4.attrs?.instruction === "string" ? node4.attrs.instruction : "";
344913
- return `tc-entry-${stableHash3(`${pos}:${instruction}`)}`;
345155
+ return `tc-entry-${stableHash4(`${pos}:${instruction}`)}`;
344914
345156
  }
344915
345157
 
344916
345158
  // ../../packages/super-editor/src/document-api-adapters/helpers/toc-entry-resolver.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superdoc-dev/cli",
3
- "version": "0.3.0-next.15",
3
+ "version": "0.3.0-next.16",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "superdoc": "./dist/index.js"
@@ -20,21 +20,21 @@
20
20
  "@types/bun": "^1.3.8",
21
21
  "@types/node": "22.19.2",
22
22
  "typescript": "^5.9.2",
23
+ "@superdoc/document-api": "0.0.1",
23
24
  "@superdoc/pm-adapter": "0.0.0",
24
25
  "@superdoc/super-editor": "0.0.1",
25
- "superdoc": "1.19.0",
26
- "@superdoc/document-api": "0.0.1"
26
+ "superdoc": "1.19.0"
27
27
  },
28
28
  "module": "src/index.ts",
29
29
  "publishConfig": {
30
30
  "access": "public"
31
31
  },
32
32
  "optionalDependencies": {
33
- "@superdoc-dev/cli-darwin-arm64": "0.3.0-next.15",
34
- "@superdoc-dev/cli-darwin-x64": "0.3.0-next.15",
35
- "@superdoc-dev/cli-linux-x64": "0.3.0-next.15",
36
- "@superdoc-dev/cli-linux-arm64": "0.3.0-next.15",
37
- "@superdoc-dev/cli-windows-x64": "0.3.0-next.15"
33
+ "@superdoc-dev/cli-darwin-arm64": "0.3.0-next.16",
34
+ "@superdoc-dev/cli-linux-x64": "0.3.0-next.16",
35
+ "@superdoc-dev/cli-linux-arm64": "0.3.0-next.16",
36
+ "@superdoc-dev/cli-windows-x64": "0.3.0-next.16",
37
+ "@superdoc-dev/cli-darwin-x64": "0.3.0-next.16"
38
38
  },
39
39
  "scripts": {
40
40
  "dev": "bun run src/index.ts",