@superdoc-dev/cli 0.3.0-next.14 → 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 +441 -163
  2. package/package.json +6 -6
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-B6j-v0cn.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];
@@ -47061,14 +47070,27 @@ function getFontFamilyValue$1(attributes, docx) {
47061
47070
  return SuperConverter.toCssFontFamily(resolved, docx);
47062
47071
  }
47063
47072
  function getHighLightValue$1(attributes) {
47064
- const fill = attributes["w:fill"];
47065
- if (fill && fill !== "auto")
47073
+ const fill = normalizeHighlightHex(attributes?.["w:fill"]);
47074
+ if (fill)
47066
47075
  return `#${fill}`;
47067
- if (attributes?.["w:val"] === "none")
47076
+ const value = attributes?.["w:val"];
47077
+ if (value === "none")
47068
47078
  return "transparent";
47069
- if (isValidHexColor(attributes?.["w:val"]))
47070
- return `#${attributes["w:val"]}`;
47071
- return getHexColorFromDocxSystem(attributes?.["w:val"]) || null;
47079
+ const normalizedValue = normalizeHighlightHex(value);
47080
+ if (normalizedValue)
47081
+ return `#${normalizedValue}`;
47082
+ return getHexColorFromDocxSystem(value) || null;
47083
+ }
47084
+ function normalizeHighlightHex(rawValue) {
47085
+ if (typeof rawValue !== "string")
47086
+ return null;
47087
+ const trimmedValue = rawValue.trim();
47088
+ if (!trimmedValue || trimmedValue.toLowerCase() === "auto")
47089
+ return null;
47090
+ const normalizedValue = normalizeHexColor(trimmedValue);
47091
+ if (!normalizedValue || !isValidHexColor(normalizedValue))
47092
+ return null;
47093
+ return normalizedValue;
47072
47094
  }
47073
47095
  function normalizeToggleValue(value) {
47074
47096
  if (value == null)
@@ -47878,10 +47900,11 @@ function encode$48(params, encodedAttrs) {
47878
47900
  }
47879
47901
  function decode$50(params, decodedAttrs) {
47880
47902
  const translated = translateTableCell(params);
47881
- if (decodedAttrs && Object.keys(decodedAttrs).length)
47903
+ const filteredDecodedAttrs = stripUnsupportedTableIdentityAttributes(decodedAttrs);
47904
+ if (Object.keys(filteredDecodedAttrs).length)
47882
47905
  translated.attributes = {
47883
47906
  ...translated.attributes || {},
47884
- ...decodedAttrs
47907
+ ...filteredDecodedAttrs
47885
47908
  };
47886
47909
  return translated;
47887
47910
  }
@@ -55505,7 +55528,7 @@ function getFormattingStateAtPos(state, pos, editor, options = {}) {
55505
55528
  const resolvedRunProperties = resolvedFromSelection?.resolvedRunProperties ?? inlineRunProperties;
55506
55529
  const styleRunProperties = resolvedFromSelection?.styleRunProperties ?? null;
55507
55530
  const resolvedMarksFromProperties = createMarksFromRunProperties(state, resolvedRunProperties, editor);
55508
- resolvedMarks.push(...resolvedMarksFromProperties.length ? resolvedMarksFromProperties : inlineMarks);
55531
+ resolvedMarks.push(...mergeResolvedMarksWithInlineFallback(resolvedMarksFromProperties, inlineMarks));
55509
55532
  if (storedMarks && includeCursorMarksWithStoredMarks)
55510
55533
  resolvedMarks.push(...cursorMarks);
55511
55534
  return {
@@ -55536,14 +55559,25 @@ function aggregateFormattingSegments(state, editor, segments) {
55536
55559
  const resolvedRunProperties = intersectRunProperties(segments.map((segment) => segment.resolvedRunProperties));
55537
55560
  const inlineRunProperties = intersectRunProperties(segments.map((segment) => segment.inlineRunProperties));
55538
55561
  const styleRunProperties = intersectRunProperties(segments.map((segment) => segment.styleRunProperties));
55562
+ const resolvedMarks = createMarksFromRunProperties(state, resolvedRunProperties, editor);
55563
+ const inlineMarks = createMarksFromRunProperties(state, inlineRunProperties, editor);
55539
55564
  return {
55540
- resolvedMarks: createMarksFromRunProperties(state, resolvedRunProperties, editor),
55541
- inlineMarks: createMarksFromRunProperties(state, inlineRunProperties, editor),
55565
+ resolvedMarks: mergeResolvedMarksWithInlineFallback(resolvedMarks, inlineMarks),
55566
+ inlineMarks,
55542
55567
  resolvedRunProperties,
55543
55568
  inlineRunProperties,
55544
55569
  styleRunProperties
55545
55570
  };
55546
55571
  }
55572
+ function mergeResolvedMarksWithInlineFallback(resolvedMarks, inlineMarks) {
55573
+ if (!resolvedMarks.length)
55574
+ return inlineMarks;
55575
+ if (!inlineMarks.length)
55576
+ return resolvedMarks;
55577
+ const resolvedMarkNames = new Set(resolvedMarks.map((mark) => mark.type.name));
55578
+ const missingInlineMarks = inlineMarks.filter((mark) => !resolvedMarkNames.has(mark.type.name));
55579
+ return [...resolvedMarks, ...missingInlineMarks];
55580
+ }
55547
55581
  function intersectRunProperties(runPropertiesList) {
55548
55582
  const filtered = runPropertiesList.filter((props) => props && typeof props === "object");
55549
55583
  if (filtered.length === 0)
@@ -64329,50 +64363,103 @@ function toIdentityValue(value) {
64329
64363
  if (typeof value === "number" && Number.isFinite(value))
64330
64364
  return String(value);
64331
64365
  }
64332
- function resolvePrimaryBlockIdentity(node3) {
64366
+ function getBlockIdentityAttrs(node3) {
64333
64367
  if (!node3 || typeof node3 !== "object")
64334
- return;
64335
- const attrPriority = BLOCK_IDENTITY_ATTRS[node3.type];
64336
- if (!attrPriority)
64337
- 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 [];
64338
64375
  const attrs = typeof node3.attrs === "object" && node3.attrs ? node3.attrs : {};
64376
+ const identityEntries = [];
64339
64377
  for (const attr of attrPriority) {
64340
64378
  const value = toIdentityValue(attrs[attr]);
64341
64379
  if (value)
64342
- return {
64343
- id: value,
64344
- source: attr
64345
- };
64380
+ identityEntries.push({
64381
+ attr,
64382
+ value
64383
+ });
64346
64384
  }
64385
+ return identityEntries;
64347
64386
  }
64348
- function nextUniqueDocxId(usedIds) {
64349
- let id = generateDocxRandomId();
64350
- while (usedIds.has(id))
64351
- id = generateDocxRandomId();
64352
- 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));
64353
64404
  }
64354
- function dedupeBlockIdentitiesInNode(node3, usedIds) {
64405
+ function collectExplicitBlockIdentities(node3, reservedIds) {
64355
64406
  if (!node3 || typeof node3 !== "object")
64356
64407
  return;
64357
- const identity = resolvePrimaryBlockIdentity(node3);
64358
- if (identity)
64359
- if (usedIds.has(identity.id)) {
64360
- const replacementId = nextUniqueDocxId(usedIds);
64361
- node3.attrs = {
64362
- ...node3.attrs,
64363
- [identity.source]: replacementId
64364
- };
64365
- usedIds.add(replacementId);
64366
- } else
64367
- 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
+ }
64368
64452
  if (Array.isArray(node3.content))
64369
- node3.content.forEach((child) => dedupeBlockIdentitiesInNode(child, usedIds));
64453
+ node3.content.forEach((child) => normalizeBlockIdentitiesInNode(child, seenIds, allocateDocxId));
64370
64454
  }
64371
64455
  function normalizeDuplicateBlockIdentitiesInContent(content$2 = []) {
64372
64456
  if (!Array.isArray(content$2) || content$2.length === 0)
64373
64457
  return content$2;
64374
- const usedIds = /* @__PURE__ */ new Set;
64375
- 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));
64376
64463
  return content$2;
64377
64464
  }
64378
64465
  function patchNumberingDefinitions(docx) {
@@ -68539,7 +68626,7 @@ var isRegExp = (value) => {
68539
68626
  consumed: 1
68540
68627
  };
68541
68628
  }
68542
- }), 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) => {
68543
68630
  if (value == null)
68544
68631
  return;
68545
68632
  const strValue = String(value);
@@ -79202,7 +79289,7 @@ var isRegExp = (value) => {
79202
79289
  }
79203
79290
  return {
79204
79291
  name: "w:tbl",
79205
- attributes: decodedAttrs || {},
79292
+ attributes: stripUnsupportedTableIdentityAttributes(decodedAttrs),
79206
79293
  elements
79207
79294
  };
79208
79295
  }, config$23, translator$8, encode$40 = (attributes) => {
@@ -81408,7 +81495,7 @@ var isRegExp = (value) => {
81408
81495
  nodes: [translator$3.encode(params)],
81409
81496
  consumed: 1
81410
81497
  };
81411
- }, 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) => {
81412
81499
  if (!numberingXml?.elements?.length)
81413
81500
  return null;
81414
81501
  return numberingXml.elements.find((el) => el?.name === "w:numbering") || numberingXml.elements[0] || null;
@@ -82435,7 +82522,7 @@ var isRegExp = (value) => {
82435
82522
  state.kern = kernNode.attributes["w:val"];
82436
82523
  }
82437
82524
  }, SuperConverter;
82438
- var init_SuperConverter_B6j_v0cn_es = __esm(() => {
82525
+ var init_SuperConverter_hvBoS9gB_es = __esm(() => {
82439
82526
  init_rolldown_runtime_B2q5OVn9_es();
82440
82527
  init_jszip_ChlR43oI_es();
82441
82528
  init_xml_js_BtmJ6bNs_es();
@@ -85529,8 +85616,8 @@ var init_SuperConverter_B6j_v0cn_es = __esm(() => {
85529
85616
  },
85530
85617
  info: {
85531
85618
  memberPath: "info",
85532
- description: "Return document summary info including word, character, paragraph, heading, table, image, comment, tracked-change, SDT-field, and list counts, plus outline and capabilities.",
85533
- 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.",
85534
85621
  requiresDocumentContext: true,
85535
85622
  metadata: readOperation2(),
85536
85623
  referenceDocPath: "info.mdx",
@@ -91613,7 +91700,8 @@ var init_SuperConverter_B6j_v0cn_es = __esm(() => {
91613
91700
  comments: { type: "integer" },
91614
91701
  trackedChanges: { type: "integer" },
91615
91702
  sdtFields: { type: "integer" },
91616
- lists: { type: "integer" }
91703
+ lists: { type: "integer" },
91704
+ pages: { type: "integer" }
91617
91705
  }, [
91618
91706
  "words",
91619
91707
  "characters",
@@ -95755,6 +95843,7 @@ var init_SuperConverter_B6j_v0cn_es = __esm(() => {
95755
95843
  "authorities"
95756
95844
  ];
95757
95845
  _buffers = /* @__PURE__ */ new Map;
95846
+ UNSUPPORTED_TABLE_IDENTITY_ATTRS = ["w14:paraId", "w14:textId"];
95758
95847
  translator$41 = NodeTranslator.from(createStrictTogglePropertyHandler("w:b", "bold"));
95759
95848
  translator$45 = NodeTranslator.from(createSingleBooleanPropertyHandler("w:bCs", "boldCs"));
95760
95849
  translator$43 = NodeTranslator.from(createBorderPropertyHandler("w:bdr", "borders"));
@@ -116723,6 +116812,7 @@ var init_SuperConverter_B6j_v0cn_es = __esm(() => {
116723
116812
  "blockId",
116724
116813
  "paraId"
116725
116814
  ];
116815
+ SYNTHETIC_PARA_ID_TYPES = new Set(["paragraph", "tableRow"]);
116726
116816
  BLOCK_IDENTITY_ATTRS = {
116727
116817
  paragraph: PARAGRAPH_IDENTITY_ATTRS,
116728
116818
  heading: DEFAULT_BLOCK_IDENTITY_ATTRS,
@@ -144232,7 +144322,7 @@ var init_remark_gfm_CjV8kaUy_es = __esm(() => {
144232
144322
  init_remark_gfm_z_sDF4ss_es();
144233
144323
  });
144234
144324
 
144235
- // ../../packages/superdoc/dist/chunks/src-C7UQVkf5.es.js
144325
+ // ../../packages/superdoc/dist/chunks/src-Bdp40qhn.es.js
144236
144326
  function deleteProps(obj, propOrProps) {
144237
144327
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
144238
144328
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -147141,7 +147231,7 @@ function normalizeExcerpt(text5) {
147141
147231
  const trimmed = text5.replace(/\s+/g, " ").trim();
147142
147232
  return trimmed.length ? trimmed : undefined;
147143
147233
  }
147144
- function stableHash$1(input2) {
147234
+ function stableHash$2(input2) {
147145
147235
  let hash$3 = 2166136261;
147146
147236
  for (let index2 = 0;index2 < input2.length; index2 += 1) {
147147
147237
  hash$3 ^= input2.charCodeAt(index2);
@@ -147150,11 +147240,39 @@ function stableHash$1(input2) {
147150
147240
  return (hash$3 >>> 0).toString(16).padStart(8, "0");
147151
147241
  }
147152
147242
  function buildFallbackTocNodeId(node3, pos) {
147153
- 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 : ""}`)}`;
147154
147244
  }
147155
147245
  function resolvePublicTocNodeId(node3, pos) {
147156
147246
  return buildFallbackTocNodeId(node3, pos);
147157
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
+ }
147158
147276
  function isListItem$1(attrs) {
147159
147277
  const numbering = attrs?.paragraphProperties?.numberingProperties;
147160
147278
  if (numbering && (numbering.numId != null || numbering.ilvl != null))
@@ -147204,7 +147322,16 @@ function mapBlockNodeType(node3) {
147204
147322
  return;
147205
147323
  }
147206
147324
  }
147207
- 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) {
147208
147335
  if (node3.type.name === "paragraph") {
147209
147336
  const attrs$1 = node3.attrs;
147210
147337
  return toId(attrs$1?.paraId) ?? toId(attrs$1?.sdBlockId);
@@ -147213,8 +147340,10 @@ function resolveBlockNodeId(node3, pos, nodeType) {
147213
147340
  return resolvePublicTocNodeId(node3, pos);
147214
147341
  const attrs = node3.attrs ?? {};
147215
147342
  const typeName = node3.type.name;
147216
- if (typeName === "table" || typeName === "tableRow" || typeName === "tableCell" || typeName === "tableHeader")
147343
+ if (typeName === "tableRow")
147217
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);
147218
147347
  return toId(attrs.blockId) ?? toId(attrs.id) ?? toId(attrs.paraId) ?? toId(attrs.uuid) ?? toId(attrs.sdBlockId);
147219
147348
  }
147220
147349
  function toBlockAddress(candidate) {
@@ -147235,6 +147364,8 @@ function buildBlockIndex(editor) {
147235
147364
  const candidates = [];
147236
147365
  const byId = /* @__PURE__ */ new Map;
147237
147366
  const ambiguous = /* @__PURE__ */ new Set;
147367
+ const pathByNode = /* @__PURE__ */ new WeakMap;
147368
+ pathByNode.set(editor.state.doc, []);
147238
147369
  function registerKey(key$1, candidate) {
147239
147370
  if (byId.has(key$1)) {
147240
147371
  ambiguous.add(key$1);
@@ -147242,11 +147373,15 @@ function buildBlockIndex(editor) {
147242
147373
  } else if (!ambiguous.has(key$1))
147243
147374
  byId.set(key$1, candidate);
147244
147375
  }
147245
- 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);
147246
147381
  const nodeType = mapBlockNodeType(node3);
147247
147382
  if (!nodeType)
147248
147383
  return;
147249
- const nodeId = resolveBlockNodeId(node3, pos, nodeType);
147384
+ const nodeId = resolveBlockNodeId(node3, pos, nodeType, path2);
147250
147385
  if (!nodeId)
147251
147386
  return;
147252
147387
  const candidate = {
@@ -153909,14 +154044,15 @@ function resolveListItem(editor, address2) {
153909
154044
  function getLiveDocumentCounts(editor) {
153910
154045
  const currentDoc = editor.state.doc;
153911
154046
  const cached = liveDocumentCountsCache.get(editor);
154047
+ const pages = countPages(editor);
153912
154048
  if (cached && cached.doc === currentDoc)
153913
- return cloneLiveDocumentCounts(cached.counts);
154049
+ return cloneLiveDocumentCounts(cached.counts, pages);
153914
154050
  const counts = computeLiveDocumentCounts(editor);
153915
154051
  liveDocumentCountsCache.set(editor, {
153916
154052
  doc: currentDoc,
153917
154053
  counts
153918
154054
  });
153919
- return cloneLiveDocumentCounts(counts);
154055
+ return cloneLiveDocumentCounts(counts, pages);
153920
154056
  }
153921
154057
  function computeLiveDocumentCounts(editor) {
153922
154058
  const text5 = getTextAdapter(editor, {});
@@ -153937,8 +154073,11 @@ function computeLiveDocumentCounts(editor) {
153937
154073
  lists: countLists(editor, blockIndex)
153938
154074
  };
153939
154075
  }
153940
- function cloneLiveDocumentCounts(counts) {
153941
- return { ...counts };
154076
+ function cloneLiveDocumentCounts(counts, pages) {
154077
+ return pages != null ? {
154078
+ ...counts,
154079
+ pages
154080
+ } : { ...counts };
153942
154081
  }
153943
154082
  function countWordsFromText(text5) {
153944
154083
  const matches2 = text5.trim().match(/\S+/g);
@@ -154039,6 +154178,9 @@ function resolveVisibleListLevel(item) {
154039
154178
  return item.level;
154040
154179
  return item.path && item.path.length > 0 ? item.path.length - 1 : undefined;
154041
154180
  }
154181
+ function countPages(editor) {
154182
+ return editor.currentTotalPages;
154183
+ }
154042
154184
  function clampHeadingLevel(value) {
154043
154185
  if (typeof value !== "number" || !Number.isFinite(value))
154044
154186
  return 1;
@@ -159916,7 +160058,7 @@ function collectTopLevelBlocks(editor) {
159916
160058
  const nodeType = mapBlockNodeType(child);
159917
160059
  const pos = offset$1;
159918
160060
  if (nodeType) {
159919
- const nodeId = resolveBlockNodeId(child, pos, nodeType);
160061
+ const nodeId = resolveBlockNodeId(child, pos, nodeType, [i4]);
159920
160062
  if (nodeId)
159921
160063
  results.push({
159922
160064
  node: child,
@@ -162054,6 +162196,9 @@ function toTableFailure(code7, message, details) {
162054
162196
  }
162055
162197
  };
162056
162198
  }
162199
+ function generateDocxHexId() {
162200
+ return Array.from({ length: DOCX_HEX_ID_LENGTH }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
162201
+ }
162057
162202
  function findSettingsRoot(part) {
162058
162203
  if (part.name === "w:settings")
162059
162204
  return part;
@@ -162127,16 +162272,13 @@ function setOddEvenHeadersFooters(settingsRoot, enabled) {
162127
162272
  settingsRoot.elements = elements.filter((entry) => entry.name !== "w:evenAndOddHeaders");
162128
162273
  return hadFlag !== hasOddEvenHeadersFooters(settingsRoot);
162129
162274
  }
162130
- function generateParaId() {
162131
- return Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
162132
- }
162133
162275
  function createSeparatorParagraph(schema) {
162134
162276
  const paragraphType = schema.nodes.paragraph;
162135
162277
  if (!paragraphType)
162136
162278
  return null;
162137
162279
  const separatorAttrs = {
162138
162280
  sdBlockId: v4_default(),
162139
- paraId: generateParaId()
162281
+ paraId: generateDocxHexId()
162140
162282
  };
162141
162283
  return paragraphType.createAndFill(separatorAttrs) ?? paragraphType.createAndFill();
162142
162284
  }
@@ -163289,22 +163431,15 @@ function tablesConvertFromTextAdapter(editor, input2, options) {
163289
163431
  const text5 = cells[c] ?? "";
163290
163432
  const content3 = text5 ? schema.text(text5) : undefined;
163291
163433
  const para = schema.nodes.paragraph.createAndFill(null, content3);
163292
- tableCells.push(schema.nodes.tableCell.createAndFill({
163293
- sdBlockId: v4_default(),
163294
- paraId: generateParaId()
163295
- }, para));
163434
+ tableCells.push(schema.nodes.tableCell.createAndFill({ sdBlockId: v4_default() }, para));
163296
163435
  }
163297
163436
  tableRows.push(schema.nodes.tableRow.createAndFill({
163298
163437
  sdBlockId: v4_default(),
163299
- paraId: generateParaId()
163438
+ paraId: generateDocxHexId()
163300
163439
  }, tableCells));
163301
163440
  }
163302
163441
  const tableId = v4_default();
163303
- const tableParaId = generateParaId();
163304
- const tableNode = schema.nodes.table.create({
163305
- sdBlockId: tableId,
163306
- paraId: tableParaId
163307
- }, tableRows);
163442
+ const tableNode = schema.nodes.table.create({ sdBlockId: tableId }, tableRows);
163308
163443
  const startPos = paragraphs[0].pos;
163309
163444
  const lastP = paragraphs[paragraphs.length - 1];
163310
163445
  const endPos = lastP.pos + lastP.node.nodeSize;
@@ -163432,10 +163567,7 @@ function tablesInsertCellAdapter(editor, input2, options) {
163432
163567
  return toTableFailure("INVALID_TARGET", "Cell insertion with shiftRight is not supported for merged cells in this version.");
163433
163568
  const makeEmptyCell = (preferHeader = false) => {
163434
163569
  const candidateType = preferHeader ? schema.nodes.tableHeader ?? schema.nodes.tableCell : schema.nodes.tableCell;
163435
- return candidateType.createAndFill({
163436
- sdBlockId: v4_default(),
163437
- paraId: generateParaId()
163438
- }) ?? candidateType.createAndFill();
163570
+ return candidateType.createAndFill({ sdBlockId: v4_default() }) ?? candidateType.createAndFill();
163439
163571
  };
163440
163572
  const overflowRowCells = [];
163441
163573
  for (let col = 0;col < map$12.width; col++) {
@@ -163446,7 +163578,7 @@ function tablesInsertCellAdapter(editor, input2, options) {
163446
163578
  const overflowRowAttrs = {
163447
163579
  ...tableNode.child(Math.max(0, map$12.height - 1)).attrs ?? {},
163448
163580
  sdBlockId: v4_default(),
163449
- paraId: generateParaId()
163581
+ paraId: generateDocxHexId()
163450
163582
  };
163451
163583
  const overflowRow = schema.nodes.tableRow.createAndFill(overflowRowAttrs, overflowRowCells) ?? schema.nodes.tableRow.create(overflowRowAttrs, overflowRowCells);
163452
163584
  if (!overflowRow)
@@ -164415,13 +164547,11 @@ function createTableAdapter(editor, input2, options) {
164415
164547
  };
164416
164548
  }
164417
164549
  const tableId = v4_default();
164418
- const paraId = generateParaId();
164419
164550
  if (!insertTableAt$1({
164420
164551
  pos: insertAt,
164421
164552
  rows: input2.rows,
164422
164553
  columns: input2.columns,
164423
164554
  sdBlockId: tableId,
164424
- paraId,
164425
164555
  tracked: mode === "tracked"
164426
164556
  }))
164427
164557
  return {
@@ -205608,7 +205738,7 @@ var Node$13 = class Node$14 {
205608
205738
  console.warn("Failed to initialize developer tools:", error);
205609
205739
  }
205610
205740
  }
205611
- }, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,UEsDBBQAAAAIAAAAIQAykW9XXgEAAKUFAAATABwAW0NvbnRlbnRfVHlwZXNdLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1lMtqwzAQRfeF/oPRNthKuiilxMmij2UbaPoBijRORPVCmrz+vuM4NaWkMeSxMcgz994zQsxwvLEmW0FM2ruSDYo+y8BJr7Sbl+xz+po/sCyhcEoY76BkW0hsPLq9GU63AVJGapdKtkAMj5wnuQArUuEDOKpUPlqBdIxzHoT8EnPgd/3+PZfeITjMsfZgo+EzVGJpMHvZ0O+GJIJJLHtqGuuskokQjJYCqc5XTv1JyfcJBSl3PWmhQ+pRA+MHE+rK/wF73TtdTdQKsomI+CYsdfG1j4orL5eWlMVxmwOcvqq0hFZfu4XoJaREd25N0Vas0K7XxeGWdgaRlJcHaa07IRJuDaTLEzS+3fGASIJrAOydOxHWMPu4GsUv806QinKnYmbg8hitdScE0hqA5js4m2NncyySOifRh0RrJZ4w9s/eqNU5DRwgoj7+6tpEsj57PqhXkgJ1IJvvluzoG1BLAwQKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAcAGRvY1Byb3BzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhACEYr1llAQAAxQIAABAAHABkb2NQcm9wcy9hcHAueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ1STU/DMAy9I/Efqt63dBwmNHlBaAhx4GPSCpyjxG0j0iRKson9e5wVSoEbOdnP9st7TuDqvTfFAUPUzq7LxbwqC7TSKW3bdflc384uyyImYZUwzuK6PGIsr/j5GWyD8xiSxlgQhY3rskvJrxiLssNexDmVLVUaF3qRKA0tc02jJd44ue/RJnZRVUuG7wmtQjXzI2E5MK4O6b+kysmsL77UR098HGrsvREJ+WOeNHPlUg9sRKF2SZha98grgscEtqLFyBfAhgBeXVAx9wwBbDoRhEy0vwxOMrj23mgpEu2VP2gZXHRNKp5OYos8DWzaAmRgh3IfdDpmqmkK99ri6YIhIFVBtEH47gROMthJYXBD1nkjTERg3wBsXO+FJTo2RsT3Fp997W7yFj5HfoITi686dTsvJP4yO8FhRygqUj8KGAG4o8cIJrPTrG1RffX8LeT1vQy/ki+W84rOaV9fGLkevwv/AFBLAwQUAAAACAAAACEACvOn+GYBAADtAgAAEQAcAGRvY1Byb3BzL2NvcmUueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ2SXU+DMBSG7038D6T3UGBqDAGWTLMrZ0yc0XhX27Otjn6k7cb27y0wmMRdeXc+nvP29G3z6UFUwR6M5UoWKIliFICkinG5LtDbch7eo8A6IhmplIQCHcGiaXl9lVOdUWXgxSgNxnGwgVeSNqO6QBvndIaxpRsQxEaekL65UkYQ51OzxprQLVkDTuP4DgtwhBFHcCMY6kERnSQZHST1zlStAKMYKhAgncVJlOAz68AIe3Gg7fwiBXdHDRfRvjnQB8sHsK7rqJ60qN8/wR+Lp9f2qiGXjVcUUJkzmjnuKihzfA59ZHdf30BdVx4SH1MDxClTPnO6DWZgJKlapq83jm/hWCvDrJ8eZR5jYKnh2vl37LRHBU9XxLqFf9gVBzY7jo/5224mDOx58y/KtCWGND+Z3K0GLPDmZJ2Vfed98vC4nKMyjdObMEnD5G6Zpll8m8XxZ7PdaP4sKE4L/FuxF+gMGn/Q8gdQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAYAHABfcmVscy9VVAkAA4Yc7WiHHO1odXgLAAEE9QEAAAQUAAAAUEsDBBQAAAAIAAAAIQAekRq36QAAAE4CAAALABwAX3JlbHMvLnJlbHNVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAArZLBasMwDEDvg/2D0b1R2sEYo04vY9DbGNkHCFtJTBPb2GrX/v082NgCXelhR8vS05PQenOcRnXglF3wGpZVDYq9Cdb5XsNb+7x4AJWFvKUxeNZw4gyb5vZm/cojSSnKg4tZFYrPGgaR+IiYzcAT5SpE9uWnC2kiKc/UYySzo55xVdf3mH4zoJkx1dZqSFt7B6o9Rb6GHbrOGX4KZj+xlzMtkI/C3rJdxFTqk7gyjWop9SwabDAvJZyRYqwKGvC80ep6o7+nxYmFLAmhCYkv+3xmXBJa/ueK5hk/Nu8hWbRf4W8bnF1B8wFQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAHAB3b3JkL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAHAB3b3JkL2ZvbnRUYWJsZS54bWxVVAkAA54c7WieHO1odXgLAAEE9QEAAAQUAAAAvZPBbqMwEIbvlfoOlu8NhpA0RSFV222kvexh1T6AY0ywFtvI44Tk7dcYiBSyuy3tqiCEGf75mPnHLO8PskR7bkBoleJwQjDiiulMqG2KX1/WNwuMwFKV0VIrnuIjB3y/ur5a1kmulQXk8hUkkqW4sLZKggBYwSWFia64ci9zbSS17tFsA0nNr111w7SsqBUbUQp7DCJC5vj6CrmjZZn3oHSeC8a/abaTXFkPCQwvHVYrKEQFZ8j6Pcham6wymnEA170sW6ikQp2zwviCJgUzGnRuJ663rjbPc4yQ+JUsB5TZOEr0Z8qc8cM40KIDBS7zAiaycbD5CSayIexjZQ0p2W4UJ5r2FTW3Jn0IhMxmxThmP8GgyaWWFhSKCywf1+/sxDxKNwgkWfJ9q7Shm9KR3CZDbosgD0btZJobaieO+j6Qdwiv2mK6nxLViaLSUV6E5IB+8Br91JKqXtZJK6o08NCp97RMMWkanZMpmZHYXZFbxTg4T2EFNcDtKYUMBTmVojz2743/6kBSCcuKXrGnRjQdD0Ugtk6ygw1J8TMhJHper3EbCVP85CK3i9ljF4maSvxx10WmpwhpIsxz/GPYcpjnnDT915dB6+Bf/HzSOyO4aRx908tb59+d97TxMv60l1Jn3PzbzFwcePYRJ+PpVzv54MZevunho9uPsfewPT/rIdQC4P/sx4evdrFfwuo3UEsDBBQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABwAd29yZC9kb2N1bWVudC54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAApZZbb9sgFMffJ+07WH5v8S1OYjWttGab+jCpWrcPQIDEqAYsILd9+h3s+LJ5qxz3CXPg/PjDORxz93AShXdg2nAlV354G/gek0RRLncr/+ePLzcL3zMWS4oLJdnKPzPjP9x//HB3zKgie8Gk9QAhTXYsycrPrS0zhAzJmcDmVnCilVFbe0uUQGq75YSho9IURUEYVF+lVoQZA+s9YnnAxr/gyGkcjWp8BGcHTBDJsbbs1DHCqyEztESLISiaAIIdRuEQFV+NSpFTNQAlk0CgakCaTSP9Y3PpNFI0JM2nkeIhaTGNNEgnMUxwVTIJg1ulBbbQ1TsksH7dlzcALrHlG15wewZmkDYYzOXrBEXg1RJETK8mzJFQlBUxbShq5e+1zC7+N62/k57V/pem9WDFuGVhuSViJ1sY2/jqMWdXu68vhaU6NaRZAeeopMl52VYHMZUGg3kDObx1AAdR+G1lC0detf+VtnUdhg44Rv4ldqKolb9NDIMR0XSI1mOMhD/XbJQIyOBu4UlH0zvccGTxaQDRAJASNvJn0TAWFwYi3e12HD7yWjWctOVw2uNME9MD0P1ViChudLjGufdYhlqaX4drYoScL7Y4xybvE9l1G5y1uLPonXe5e9+l+qrVvuxo/H20p668HuV1GwzSvyNYmveJeclxCVVXkOxpJ5XGmwIUwVXz4LZ4VQS8Ol1d49U3wGti7VUJ5Lmq5d/DO22j6Nm1JQwkWYk1foI0T8JlmqTz0K+s8Jezzhoks+VivpyBNYM3If0OJkiveD3/1JqetTPGYZA8fm6Na7bF+8IOpz/3JiMnwzBin/VYfiV89/ILBqFihVGUBG4iJHQ4W8A3qid8w45oFRTWMKmnaL7LbdfdKGuV6PoF2/ZGc4Ypg3XnUdXdKmV73d3eVt3LckQVBqymxITVcyozvIe/aheSrOCSPXNLQGWcVqOo2Xf1WUcEdU/o+99QSwMEFAAAAAgAAAAhAMrnZYorBAAAvgwAABEAHAB3b3JkL3NldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1V22PmzgQ/n7S/QfE58uG1ySLmq3yervV5lqVre6zAZNYa2Nkm03T0/33GwwO9BZVSav9hJln5pnxeGYM795/ZdR6wUISXsxt98axLVykPCPFfm5/edqOZrYlFSoyRHmB5/YJS/v93e+/vTtGEisFatICikJGLJ3bB6XKaDyW6QEzJG94iQsAcy4YUvAq9mOGxHNVjlLOSqRIQihRp7HnOBO7peFzuxJF1FKMGEkFlzxXtUnE85ykuH0YC3GJ38ZkzdOK4UJpj2OBKcTAC3kgpTRs7GfZADwYkpcfbeKFUaN3dJ0LtnvkIjtbXBJebVAKnmIp4YAYNQGSonMcvCI6+74B3+0WNRWYu45e9SMPryPwXhFMUvz1Oo5ZyzEGyz4Pya7jmZx5SNbj+blgegRZdRWF55s46kdt3uOSmcoO19GZMxrXtkihA5KHPiO+boPhme7EunxLekkFNtAjSQQSp375sTR62BdcoIRCOFCGFlSSpaOzmqOsH1ZTHZbJg6WTa9/B1PnGObOOUYlFCq0HI8tz7HENQMHzPFZIAVEkS0ypnmEpxQj8HqO9QAymj5FomwznqKLqCSWx4iUovSDY3tRQpgckUKqwiEuUAtuKF0pwavQy/hdXK5hkAhqttdBzrVvFzYwEiwIx2PB3c2/HM1xHVgly+cnYxrsb9l3+3xGHmS5Ihp/qRMfqRPEWgo/JN7wosg+VVAQY9fT7hQh+FAAuas8foTSeTiXeYqQqSNMbOdMnsaWk3BEhuHgoMqiNN3NG8hwLcECg1nZQPkTwo87zPUYZXKVv5LeS+G9Qhs70n6Asn5dcKc7uT+UBcv1rJ6nrfdwvX/ggyKRZfOZcnVVhbPnr6bKJtEYvQXzXCVabQWTibN1hm0XgO/4gsnLXbjCMhLPlaggJboOJuxhCJqG3CcIhZLH0Zv5sCFku3Wk4iKxW/srfDiIbZz28n83Km04HY9vees7tpj2d9kxYVH9qfBJmVTe2xRqLFWKJIMja1R8j41ojEc9LUhg8wTClcR+Jq8SAo1EDSIYo3UKJGcBp5BmR5Rrnek13SOw73lZDDEphyn44c9VTG4s/Ba/KBj0KVDYNa1TcIGgtSaEeCTNyWSWxsSrgXulBVZF9fBE6T116jpGCBtCD7xHpRtK6uBh9idtGoyKumwTvUFk2vZbs3blNyf6g3Lo9FLxl8M2qX5K912KexrwG0y8orXcG2u2ik3lG1tPzjczvZIGRBZ0sNLKwk02MbFLLDjBdBVx1z9D2ZlnLc04pP+LsvsNficwlmBI48fjEku5uu2kwSiTMoRKuQcWFwf7QmBtEGU8f6vs6aOT+YhGuF860gUN9fSo9qiC1n3G+RBJnLWZMw8b0n8nEmbjuajYKZpvb0WYaBKOZu7wdTafO1PW3rufPnH/bPjA/Hnf/AVBLAwQUAAAACAAAACEA24Vsw30EAACXHQAAEgAcAHdvcmQvbnVtYmVyaW5nLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAADNmc1u4zYQx+8F+g6CgB4Tifq2sM4iySZFFttF0U3RMy3RlhB+CBRlx9d9mT5CH2tfoaRkyXLkxJIctz4pJjk/zQxnyL+dDx+fCdaWiOcpo1MdXJq6hmjE4pQupvqfj/cXga7lAtIYYkbRVF+jXP949fNPH1YhLcgMcblQkwyah6ssmuqJEFloGHmUIALzS5JGnOVsLi4jRgw2n6cRMlaMx4ZlArP8K+MsQnkuObeQLmGub3DRcz9azOFKGiugY0QJ5AI9bxlgMMQ1JkbQBVkjQDJCC3RR9mCUZyivOiBnFEh61SG540h7gvPGkawuyR9HsrukYBypU06kW+AsQ1ROzhknUMiPfGEQyJ+K7EKCMyjSWYpTsZZM06sxMKVPIzySVg2B2PFggm8QFiNsxzWFTfWC03Bjf9HYK9fDyn7zaCwQ7vda+bqJgZ4FzkVty/vkrjL/xKKCICrKrBkcYZlHRvMkzZrTgYylycmkhizfSsCSYL052UDPVnvtaPtUbcMW2Mf9zd4RXHn+NhGYPXZTIRqLPi7svrP2hMgK3r54VGpayQU9D58aYHUAXoR6XhY1I9gwjGjb3YqT9myrmuM1nDRuccY50wLExSCEZdd+qIcyb7HyWMTJMFy9R4ayhQImME/aRDQsQLfBrUkr39niuKb6lbMi29LS42gP2+N1RYcFaHovdzDLj3PmWwIzeeqSKHxYUMbhDEuPZKtpslu0cge0qlzVQ6s6QKv3WisLSFOnln4lhRqc5YLDSHwtiLbz6UFWuxR8khlyJFUeV4OVprueC8RvOIJPaomi0Fy9LVxCeQUAD1jejenrhpohBRbpF7RE+HGdoXpNsp7xNP5NzWE1V60VJMP1Chfc3Tp3ZlDN4KWaSOWjcioUGZb3remYE9M0QelD6WPjRGUnZeg9aQZnBcZINMRHeQfVUz++/9OMf47qUYzmm+XZ71w9UqrCVMNT3bdKTxJIF6Ugtj1TrTWaxXzzuGdU5Cq5eZTKOvy2JjOGS9NrmbedgZRKcIzmUGZmAyspRunYy0yATibsckTeZ/JSXCK14ujMsKF5AY4zLjG3rOAp4tpXtGpl58VolHcXDsua1cma+/5Z+/H976F5s4A3Lm9/ydXqO1neytru2LAE2Xsa7AQJGtxwVhD83x3nnGXHyTycdce5Z9pxjj3yCH/vjvPOtONcc+RR/n4d559lx7n+yLP6P+q44Ew7znNGHuHHd5yxo24PSl8wRvq6gW8C++b6OOl7d+c5wL91+kjf+57bGKMoJRDv3cdfwOU7a9+echVMRhYlZivEvyAh92J/RNbgiA6p1p5aEtwcE9IfjEC6PyJ7X0Q8XSQDBCUIeoTUVX/3I0N6s+acwTt0SP71VGynKzp3cEiHhFtPOXWyovOGF11HU/Uquq4AOknR+YN36JAC6ilaTld0wfCQDmiXnoriZEU3GV50HVnxStF1NQAt737auvPVD2dhXJQ/q5WDMlTHn3jWy5/LHpprv34X3cO09jGdwHWB7wDwOhO0mUbrH6pX/wJQSwMEFAAAAAgAAAAhAL5+dmJWAQAA0AMAABQAHAB3b3JkL3dlYlNldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAACd01FvwiAQAOD3JfsPhHelumlMYzVZFpe9LEu2/QAKV0sGXAO46n79aLWuiy92T0DLfbnjYLneG02+wHmFNqOTcUIJWIFS2W1GP943owUlPnAruUYLGT2Ap+vV7c2yTmvI3yCEuNOTqFifGpHRMoQqZcyLEgz3Y6zAxp8FOsNDXLotM9x97qqRQFPxoHKlVTiwaZLM6Ylx1yhYFErAI4qdARvaeOZARxGtL1XlO62+RqvRycqhAO9jPUYfPcOVPTOT+wvIKOHQYxHGsZhTRi0VwydJOzP6F5gNA6YXwFzAfpixOBksRvYdJYc587OjZM/5XzI9QO4GEdO7Lo9maMJ7lpdBlsO4rkesieWBl9yXfRGGFTg7cwfTnLcR6fPWouO5jlK8QSReAtLC5NiFZiDHxpKuBNKeC13FJ4ZVUEZ9wwbdg8Pag2PNZ6411q8vT3HB/rzD1Q9QSwMEFAAAAAgAAAAhAD+v4WZfDwAADaYAAA8AHAB3b3JkL3N0eWxlcy54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA3Z1tc9s2Esff38x9B45e9V6ksp5lT92O7STnzCWpWzvX1xAJWaj5oCOpOO6nPwB8EKUlKC64UdRMZlqL4v4I4L+7xIIU+dMvXwLf+czjREThZW/w41nP4aEbeSJ8vOx9enj7at5zkpSFHvOjkF/2XnjS++Xnf/7jp+eLJH3xeeJIQJhcBO5lb5Wm64t+P3FXPGDJj9Gah/LLZRQHLJUf48d+wOKnzfqVGwVrloqF8EX60h+enU17OSZuQ4mWS+Hy15G7CXiYavt+zH1JjMJkJdZJQXtuQ3uOYm8dRy5PEtnpwM94ARNhiRmMASgQbhwl0TL9UXYmb5FGSfPBmf4r8LeACQ4wBICpy7/gGPOc0ZeWVY7wcJxpyRFehWPXmArA26AQw1HRDvU/ZV5hJV7qrXC4QqO+smUpW7FkVSVyXAcnJe4lUOMduBfvHsMoZgtfkqQHOdIJHA12MhXU/5xMWKfogqPHpfezjC4vcl/zJdv4aaI+xndx/jH/pP/3NgrTxHm+YIkrxGXvKhZMDvHzBWdJepUI9iBbLg8fCNmS26swEerLlfqjsrObXPYeRCBD+SN/dn6PAhY6P1xH3otzc/+vXl8d6InHodzzM/Mve8NsU/JXuWFcbLlJ9rf5LHwstvHw1af7ausqmxbCk01i8av7K204GF/44pGlm1g2S33ShCwRxd6N7Db/km5k++XO/Xw8+vujtC4/ZXvtDalMGDJ93GdZTH7Ll+8j94l796n84rJ31ss2fnp3F4solpnqsnd+nm+854G4FZ7Hw8qO4Up4/I8VDz8l3Ntu/+2tzjb5BjfahPLv0WyqZfYT780Xl69V7pLfhkzp9VEZaG02Yntwbf6/AjbIB7jOfsWZSuDOYB9xjkYMlUVS6W09c7PX9wH6QKNjHWh8rANNjnWg6bEONDvWgebHOtD51z6QCD2Z3wf1hwHUQxxDNKI5hmBDcwyxhOYYQgXNMUQCmmNwdDTH4MdojsFNEZw0ck1eWHH2kcHbm7mHzxF23MOnBDvu4TOAHfdwwrfjHs7vdtzD6dyOezh723EPJ2s8N5tqOe9kmIVp5yhbRlEaRil31PS0M42FkqWrWhqeOunxmKSTBJgss+Un4s40l+nPhz1k0u18nqqCzomWzlI8quKkc8N5+Jn70Zo7zPMkjxAYc1k+GUbExqdjvuQxD11O6dh0UF+E3Ak3wYLAN9fskYzFQ494+AoiSVIoHZpt0pUKEkHg1AFz44hgzsLI8sN7kXQfKwVxrje+z4lYH2lcTLO61wYa07000JjulYHGdC8MKppRDVFOIxqpnEY0YDmNaNwy/6Qat5xGNG45jWjcclr3cXsQqc/3Zx2D9mt3N36UUCS8e/EY6vXTzqR8zdS5YzF7jNl65ahl54MzLfRx9JLzA8U5rSRRzeu1i6hVZxFuug/oDo0quEoeUXiVPKIAK3ndQ+yDnCarCdotTT1zv1mktUHbviq4Z/4mm9B2jzaWdvewbQC8FXFCFgb1WAIP/qims7dEU71tK7s3bMvqHlb7WYm0eTmSoJV+5D7RpOHblzWPZVn21Jn0NvL96Jl7dMT7NI4yX6uG/HDYOuTfBOsVS0QCEO1P9cUdDM4Htu7coTufiZBGtzevAiZ8h24Gcfvw4b3zEK1VmakGhgZ4HaVpFJAx85XAH/7gi3/RNPBKFsHhC1Fvr4iWhzTsRhCcZDJS5BGR5DRThILkHKp5/+Evi4jFHg3tLubZTUMpJyLes2DtU8WWzIvPMv8QzIY0778sFmpdiCqoHkhglWXDZLP4k7vdU93HyCFZGfp1k+r1Rz3V7X61dwfXfZqwg+s+RdBqytOD8l+Czu7gund2B0fV2RufJYkwXkK15lF1t+BR97d78ZfzIj+KlxufbgALINkIFkCyIYz8TRAmlD3WPMIOax51fwldRvMIluQ079+x8MjE0DAqJTSMSgYNo9JAw0gF6H6HTgXW/TadCqz7vToZjGgKUIFR+Rnp6Z/oKk8FRuVnGkblZxpG5WcaRuVno9cOXy7lJJjuFFNBUvlcBUl3oglTHqyjmMUvRMg3Pn9kBAukGe0ujpbq1yRRmN3ETTGd3SxSysl2hqMS+Q++IGuaYlG2i2BFlPl+FBGtrW1PONpy9961Q2b65xydm3DnM5evIt/jsaFPjfXy/Zq5Ai6dtr9Y8l48rlLnflWu9lcx07ODlkXBvmN2+IB1Yz4dNl5m8sQmKBoKf0wxHbU3HgLj8WHj7Uxix3LS0hIec3rYcjtL3rGctbSEx5y3tBwBy6Z4eM3ip1pHmDX5T1njGZxv1nhhvjCuPWyTI5WWdS44a/KinVBxrlxXXS2A6rSLGbN9u+Ax22OiyEzBhJOZ0jquzIimAPudfxZJ7Rr1gevf5d0TIO+PW2fO3zZRCi5TD9v/qOudnDiFCXdqOaP2F652sox5HFunGzOidd4xI1onIDOiVSYymqNSkpnSOjeZEa2TlBmBzlbwjIDLVtAel62gvU22ghSbbNVhFmBGtJ4OmBHoQIUIdKB2mCmYEahABeZWgQop6ECFCHSgQgQ6UOEEDBeo0B4XqNDeJlAhxSZQIQUdqBCBDlSIQAcqRKADFSLQgWo5tzeaWwUqpKADFSLQgQoR6EAddwxUaI8LVGhvE6iQYhOokIIOVIhABypEoAMVItCBChHoQIUIVKACc6tAhRR0oEIEOlAhAh2ok46BCu1xgQrtbQIVUmwCFVLQgQoR6ECFCHSgQgQ6UCECHagQgQpUYG4VqJCCDlSIQAcqRKADddoxUKE9LlChvU2gQopNoEIKOlAhAh2oEIEOVIhABypEoAMVIlCBCsytAhVS0IEKEehAhYgm/8wvUZpusx/gVz2Nd+wjfueTNer36k+5d9ZQ26OKVplZ7X+LcB1FT07tDw9Ho/YQsfBFpJeoDZfVq9wZ+sLnrzfNv/Bp8RiPtl3Jfwuhr5kC+LitJVhTGTe5fNUSFHnjJk+vWoJZ57gp+1YtwWlw3JR0dVwWN6XI0xEwbkozFeOBwbwpW1fM4RA35eiKIRzhpsxcMYQD3JSPK4YTRyXnfetJy3GalveXAkKTO1YIMzOhyS2hVsa1/daimQlt1TMT2spoJqD0NGLwwppRaIXNKDupYZhhpbYPVDMBKzUkWEkNMPZSQ5S11BBlJzVMjFipIQErtX1yNhOspAYYe6khylpqiLKTGp7KsFJDAlZqSMBK3fGEbMTYSw1R1lJDlJ3UcHKHlRoSsFJDAlZqSLCSGmDspYYoa6khyk5qUCWjpYYErNSQgJUaEqykBhh7qSHKWmqIapJar6LYV0sVc9wkrGKIOyFXDHHJuWJoUS1VrC2rpQrBslqCWtlVS1XR7Kqlqnp21VJVRrtqCehpVy3VCmtXLdUqbFctmaXGVUt1UtsHql21VCc1rloySo2rlhqlxlVLjVLjqiWz1LhqqU5qXLVUJ7V9crarloxS46qlRqlx1VKj1LhqySw1rlqqkxpXLdVJjauW6qTueEK2q5YapcZVS41S46ols9S4aqlOaly1VCc1rlqqkxpXLRmlxlVLjVLjqqVGqXHVkllqXLVUJzWuWqqTGlct1UmNq5aMUuOqpUapcdVSo9S4aumDNBEEj4C6D1icOnTPi7tlySpl3R9O+CmMeRL5n7nn0Hb1PaqX/eed118ptn6dn9w/lWOmnoBe+bmSlz0BNgfqHd955WuqlLFqiZO/5yvfrBucX67NjqgNDxyqhOfXigcAv325lT7Cgsle/RrWHTxUD0as2a4cotheHOZmxeLs262rFvuc7/fl+SJO1Avcsq/Pzoaj0evZdbbXOns12xPn64/y+P3ig9SHJ/pTkv2AVpov1DPF5AiMpvq3V2yZ8viyN8+jNsqe2vT+s18eKZcuP0btW+CKV76xPyuvfNt/H5z68k2+TX2vXwlXa+kmaWXztfBE1jhXRXnZrrfj2VT7ht5ZZ4DLHtPxv92sbkpR9xm8zQjbF8gVF5urL5AbF30tXu1m4zxDo/MMKZ1n2MJ5tmGZ7bcTlF/ZvQYt3WvwfbrXaAjdK9vW0b1GRvcaUbrX6Dtxr2Gzex1yomO4ynAOXSXb1tFVxkZXGVO6yvjEXWVe9ZSx0VNGX8dTRPbfm4TEbzp6xMToERNKj5h8Hx4xPs3c0dEHpkYfmFL6wPTEfcAs++ToiWByrv7tO4F609LWBR6EeoPv1ZTAA2ZGD5hResDsb+sB0yME/pE1nxs1n1NqPj8pzaGys6PH9nCm/rXR+TXFnO/cqPM5pc7nJ67z/AgRTK+sKweVufkD1Q3rX/mLkcon++jXIu1rbnh7kkGvQTu9zO1O1SpsQ5v1Km3jwl3+sHaTQ7X2qHThZ1LLP96FyqGe83fYZy31vrBeseMN9/0PLNs7Wpt39fkyzb4dnM1rvl9kr4Qw2sf62oER0N9tTL/shHm8s5dE5j9qMa6T6keGweHOHiXWcaRb+rC7SeTQ6OXe/fbtrIHut/K2WG51tnlmL3HVxoEpXQ0OpCpz8vle1qO6LHciJR02SjokknSIO/t8/wp3WXFEKjxqVHhEpPDoayn8d1/0Q6o1blRrTKTW+NTUOvbCG1KVSaMqEyJVJqemysnpMG3UYUqkw/TUdDjqahRSklmjJDMiSWanJslpiTBvFGFOJML81EQ46koOUpLzRknOiSQ5PzVJvslyWvZgi/2xzrZSrKNpUtMi2iAv2FBrZNtF7r0L4656fcWXdMP8/En6jctjxyyBtk3W3XpV9PuJx+XgbifLZXqcwunzhDgRbiWqdYOu4VbxJbP6p1m2Hl+z+iAtX6K9L1D5BUWoFrDGaB1YRGu4CbI/hA/vhyq/BDE9mB64Je+bTECAVwwm36Lm3RHL5BZdQ3fXvczecOJzxq8sWX3MZq8B2Fcm20oRrZrUFKpDmztrD92ANige3venW3BUEcvj2khtmGSOz9S/NhpS18PbgasVp2vMVBQ2a3IwYI46cvUOrC6fbN+rsT9We6/dOOTRcChGYwv3FPpSl7pQpZ6R12LO19Jdyk7nD44rn2a3323wuDuco9R4BOqEetg7jnifVT4W9Ylu920oFAmverimvDeyKSjW117lAqneL5GelL9X+y91j5yTZUeuJ61OPuyW6+PlpdSvfKT+tmeHfhgxKjJ7NcbmU90afWU3+0SS/L/peijwo0bX7Xo62AmSAx57cnHfmCO3z9Y0DeB2j65Zsrjmh8qSi+yo+WglMqn4N2xNM3ZgSjmpH9Hir+Tn/wNQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL3RoZW1lL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAHAB3b3JkL3RoZW1lL3RoZW1lMS54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA7VlPb9s2FL8P2HcgdHf1x5IsBXUL/23XJm3RpB16ZGRaYkyJAkknMYoCQ3vaZcCAbthlwG47DMMKrMCKXfZhCrTYug8xSnZs0abatE23AksMxCL5e48/vvf4+ExdvHycEnCIGMc0axv2BcsAKIvoCGdx27izN2wEBuACZiNIaIbaxgxx4/KlTz+5CLdEglIEpHzGt2DbSITIt0yTR7Ib8gs0R5kcG1OWQiGbLDZHDB5JvSkxHcvyzRTizAAZTKXam+MxjhDYK1Qal06UD4j8lwledESE7UbljFWJEjua2MUXn/EeYeAQkrYh5xnRoz10LAxAIBdyoG1Y5Z9hXrpoLoWIqJGtyA3Lv4XcQmA0cUo5Fu8vBa2BE7j2Ur8z17+JGwTFZ6mvBMAokiu1N7C251uBs8BWQPNHje6wZTdVfEV/c1N/6HcdV8E3V3h3c43DcND3FLy7wnsb+I7ldMOmgvdWeH8D7w46LWeg4EtQQnA22UT7rSDwF+glZEzJVS089H2r1V/AVyizEl1z+UzUxVoKDygbSkDpXChwBsQsR2MYSVwnF5SDPuY5gTMD5DCjXHZbjm3LwHMtZ/kpLQ63EKxIz7sivtFV8AE8YjgXbeOa1GpUIC+ePXv+8Onzh789f/To+cNfwDaOE6GRuwqzuCr36sev//7+C/DXrz+8evyNHs+r+Jc/f/ny9z9ep14otL598vLpkxffffXnT4818A6D+1X4Hk4RBzfQEbhNU7lAzQRon72dxF4CcVWik8UcZrCQ0aAHIlHQN2aQQA2ui1Q73mUyXeiAV6YHCuHdhE0F1gCvJ6kC3KGUdCnTrul6MVfVCtMs1k/OplXcbQgPdXP31rw8mOYy7rFOZS9BCs1bRLocxihDAhRjdIKQRuwexopdd3DEKKdjAe5h0IVYa5I9vC/0QldxKv0y0xGU/lZss3MXdCnRqe+jQxUp9wYkOpWIKGa8AqcCplrGMCVV5DYUiY7k7oxFisG5kJ6OEaFgMEKc62RusplC9zqUeUvr9h0yS1UkE3iiQ25DSqvIPp30EpjmWs44S6rYz/hEhigEt6jQkqDqDina0g8wq3X3XYzE2+3tOzIN6QOkGJky3ZZAVN2PMzKGSKe8w1IlxXYY1kZHdxorob2NEIFHcIQQuPOZDk9zqid9LZFZ5SrS2eYaVGO1aGeIy1qpKG40jsVcCdldFNMaPjuztcQzg1kKWZ3mGxM1ZAb7TG5GXbySaKKkUsyKTasncZOn8FRabyVQCauizfXxOmPZ2+4xKXPwDjLorWVkYj+1bfYgQfqA2YMYbOvSrRSZ6kWK7VSKTbVyY3XTrtxgrhU9Kc7eUAH9N5XPB6t5zr7aqUso6zVOHW69sulRNsIff2HTh9PsFpJnyXldc17X/B/rmrr9fF7NnFcz59XMv1bNrAoYs3rZU2pJa29+xpiQXTEjaJuXpQ+Xe380lJ1loxRaXjTliXxcTKfgYgbLZ8Co+ByLZDeBuZzGLmeI+UJ1zEFOuSyfjFrdZfE1TXfoaHGPZ5/cbUoBKFb9lrfsl6WamPf6rdVF6FJ92Yp5lYBXKj09icpkKommhkSreToStnVWLEINi8B+HQuz4hV5OAFYXIt77pyRDDcZ0qPCT3P5E++euafrjKku29EsL3TPzNMKiUq4qSQqYZjIw2O9+4x9HYZ6VztaGq3gQ/ja3MwNJFNb4EjuuaYn1UQwbxtj+bNJPqa51MeLTAVJnLWNSCwM/S6ZJWdc9CFP5rByaL7+FAvEAMGpjPWqG0i24mY7LevjJRdaH5/lzHUno/EYRaKmZ9WUY3Ml2tH3BBcNOpWkd5PREdgnU3YbSkN5Lbsw4AhzsbTmCLNKcK+suJauFltReQO02qKQ5AlcnCjVZD6Hl89LOpV1lEzXV2XqTLgfD8/i1H2z0FrSrDlAWrVZ7MMd8hVWTT0rT5vrwsB6/Snx/gdChVqgp9bUU6s7O86wIKhM59fYzan15nueButRa1bqyrK18XKb7h/IyO/LanVKBJ9fkB3L8rt38lpyngnK3pPscizAlOG2cd/yOm7P8XoNK/AGDbfpWo3A6zQbHc9r2gPPtvpd54E0ikhS25vPPZQ/9sls8e6+7N94f5+elNoXIpqatKyDzVK4fH9vO/Xv7wGWlrnvO8OwGXb9RtjsDBtuvxs0wp7fbfT9Xqs/7Pe8IBw+MMBhCXY7zZ7rD4KGb/d6Dde3CvpB2Gi5jtNxW51g4HYeLGwtV37yfWLektelfwBQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL19yZWxzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhALO+ix3+AAAAtgMAABwAHAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQJAAMw0M4SiBztaHV4CwABBPUBAAAEFAAAAK2TzWrDMBCE74W+g9h7LTttQwmRcymBXFv3AWR7/UP1Y6RNWr99RUoShwbTg44zYme+hdV6860VO6DzvTUCsiQFhqaydW9aAR/F9uEFmCdpaqmsQQEjetjk93frN1SSwpDv+sGzkGK8gI5oWHHuqw619Ikd0ISXxjotKUjX8kFWn7JFvkjTJXfTDMivMtmuFuB29SOwYhzwP9m2afoKX22112joRgX3SBQ28yFTuhZJwMlJQhbw2wiLqAg0KpwCHPVcfRaz3ux1iS5sfCE4W3MQy5gQFGbxAnCUv2Y2x/Ack6GxhgpZqgnH2ZqDeIoJ8YXl+5+TnJgnEH712/IfUEsBAh4DFAAAAAgAAAAhADKRb1deAQAApQUAABMAGAAAAAAAAQAAAKSBAAAAAFtDb250ZW50X1R5cGVzXS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UGrAQAAZG9jUHJvcHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhACEYr1llAQAAxQIAABAAGAAAAAAAAQAAAKSB7gEAAGRvY1Byb3BzL2FwcC54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEACvOn+GYBAADtAgAAEQAYAAAAAAABAAAApIGdAwAAZG9jUHJvcHMvY29yZS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UFOBQAAX3JlbHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAB6RGrfpAAAATgIAAAsAGAAAAAAAAQAAAKSBjgUAAF9yZWxzLy5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1BvAYAAHdvcmQvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAGAAAAAAAAQAAAKSB+wYAAHdvcmQvZm9udFRhYmxlLnhtbFVUBQADnhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABgAAAAAAAEAAACkgVcJAAB3b3JkL2RvY3VtZW50LnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDK52WKKwQAAL4MAAARABgAAAAAAAEAAACkgXcMAAB3b3JkL3NldHRpbmdzLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDbhWzDfQQAAJcdAAASABgAAAAAAAEAAACkge0QAAB3b3JkL251bWJlcmluZy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAvn52YlYBAADQAwAAFAAYAAAAAAABAAAApIG2FQAAd29yZC93ZWJTZXR0aW5ncy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAP6/hZl8PAAANpgAADwAYAAAAAAABAAAApIFaFwAAd29yZC9zdHlsZXMueG1sVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BAicAAHdvcmQvdGhlbWUvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAGAAAAAAAAQAAAKSBRycAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJNkTVsAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQTEuAAB3b3JkL19yZWxzL1VUBQADhhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCzvosd/gAAALYDAAAcABgAAAAAAAEAAACkgXYuAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsFBgAAAAARABEAqQUAAMovAAAAAA==`, 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) => {
205612
205742
  if (!run2 || typeof run2 !== "object")
205613
205743
  return false;
205614
205744
  return typeof run2.src === "string";
@@ -205627,7 +205757,7 @@ var Node$13 = class Node$14 {
205627
205757
  return;
205628
205758
  const candidate = run2.pmEnd;
205629
205759
  return typeof candidate === "number" ? candidate : undefined;
205630
- }, 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) => {
205631
205761
  if (!path2.includes(".")) {
205632
205762
  target[path2] = value;
205633
205763
  return;
@@ -220803,7 +220933,10 @@ var Node$13 = class Node$14 {
220803
220933
  for (let index2 = 0;index2 < rowsCount; index2++) {
220804
220934
  const isHeader = withHeaderRow && index2 === 0;
220805
220935
  const cellsToInsert = isHeader ? headerCells : cells;
220806
- const rowAttrs = isHeader ? { tableRowProperties: { repeatHeader: true } } : null;
220936
+ const rowAttrs = {
220937
+ ...isHeader ? { tableRowProperties: { repeatHeader: true } } : {},
220938
+ paraId: generateDocxHexId()
220939
+ };
220807
220940
  rows.push(types3.tableRow.createChecked(rowAttrs, cellsToInsert));
220808
220941
  }
220809
220942
  return types3.table.createChecked(tableAttrsOverride, rows);
@@ -224649,9 +224782,9 @@ var Node$13 = class Node$14 {
224649
224782
  return false;
224650
224783
  return Boolean(checker(attrs));
224651
224784
  }, SuperToolbar, ICONS, TEXTS, tableActionsOptions;
224652
- var init_src_C7UQVkf5_es = __esm(() => {
224785
+ var init_src_Bdp40qhn_es = __esm(() => {
224653
224786
  init_rolldown_runtime_B2q5OVn9_es();
224654
- init_SuperConverter_B6j_v0cn_es();
224787
+ init_SuperConverter_hvBoS9gB_es();
224655
224788
  init_jszip_ChlR43oI_es();
224656
224789
  init_uuid_qzgm05fK_es();
224657
224790
  init_constants_ep1_Gwqi_es();
@@ -231577,6 +231710,11 @@ function print() { __p += __j.call(arguments, '') }
231577
231710
  "spanning",
231578
231711
  "code"
231579
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;
231580
231718
  DocumentApiAdapterError = class DocumentApiAdapterError2 extends Error {
231581
231719
  constructor(code7, message, details) {
231582
231720
  super(message);
@@ -248373,7 +248511,7 @@ function print() { __p += __j.call(arguments, '') }
248373
248511
  }
248374
248512
  return true;
248375
248513
  },
248376
- insertTableAt: ({ pos, rows, columns, sdBlockId, paraId, tracked } = {}) => ({ tr, state, dispatch, editor }) => {
248514
+ insertTableAt: ({ pos, rows, columns, sdBlockId, tracked } = {}) => ({ tr, state, dispatch, editor }) => {
248377
248515
  const tableType = state.schema.nodes.table;
248378
248516
  const tableRowType = state.schema.nodes.tableRow;
248379
248517
  const tableCellType = state.schema.nodes.tableCell;
@@ -248386,22 +248524,18 @@ function print() { __p += __j.call(arguments, '') }
248386
248524
  if (!Number.isInteger(columns) || columns < 1)
248387
248525
  return false;
248388
248526
  try {
248389
- const genParaId = () => Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
248390
248527
  const widths = computeColumnWidths(editor, columns);
248391
248528
  const rowNodes = [];
248392
248529
  for (let r$1 = 0;r$1 < rows; r$1++) {
248393
248530
  const cellNodes = [];
248394
248531
  for (let c = 0;c < columns; c++) {
248395
- const cellAttrs = {
248396
- paraId: genParaId(),
248397
- ...widths ? { colwidth: [widths[c]] } : {}
248398
- };
248532
+ const cellAttrs = widths ? { colwidth: [widths[c]] } : {};
248399
248533
  const cell2 = tableCellType.createAndFill(cellAttrs);
248400
248534
  if (!cell2)
248401
248535
  return false;
248402
248536
  cellNodes.push(cell2);
248403
248537
  }
248404
- const row2 = tableRowType.createChecked(null, cellNodes);
248538
+ const row2 = tableRowType.createChecked({ paraId: generateDocxHexId() }, cellNodes);
248405
248539
  rowNodes.push(row2);
248406
248540
  }
248407
248541
  const resolved = normalizeNewTableAttrs(editor);
@@ -248409,8 +248543,7 @@ function print() { __p += __j.call(arguments, '') }
248409
248543
  ...resolved.tableStyleId ? { tableStyleId: resolved.tableStyleId } : {},
248410
248544
  ...resolved.borders ? { borders: resolved.borders } : {},
248411
248545
  ...resolved.tableProperties ? { tableProperties: resolved.tableProperties } : {},
248412
- ...sdBlockId ? { sdBlockId } : {},
248413
- ...paraId ? { paraId } : {}
248546
+ ...sdBlockId ? { sdBlockId } : {}
248414
248547
  };
248415
248548
  const tableNode = tableType.createChecked(tableAttrs, rowNodes);
248416
248549
  if (dispatch) {
@@ -248418,7 +248551,7 @@ function print() { __p += __j.call(arguments, '') }
248418
248551
  const makeSep = () => {
248419
248552
  const attrs = {
248420
248553
  sdBlockId: v4_default(),
248421
- paraId: genParaId()
248554
+ paraId: generateDocxHexId()
248422
248555
  };
248423
248556
  return state.schema.nodes.paragraph.createAndFill(attrs);
248424
248557
  };
@@ -257737,8 +257870,8 @@ var init_zipper_DqXT7uTa_es = __esm(() => {
257737
257870
 
257738
257871
  // ../../packages/superdoc/dist/super-editor.es.js
257739
257872
  var init_super_editor_es = __esm(() => {
257740
- init_src_C7UQVkf5_es();
257741
- init_SuperConverter_B6j_v0cn_es();
257873
+ init_src_Bdp40qhn_es();
257874
+ init_SuperConverter_hvBoS9gB_es();
257742
257875
  init_jszip_ChlR43oI_es();
257743
257876
  init_xml_js_BtmJ6bNs_es();
257744
257877
  init_constants_ep1_Gwqi_es();
@@ -257801,6 +257934,48 @@ function resolvePublicTocNodeId2(node3, pos) {
257801
257934
  return buildFallbackTocNodeId2(node3, pos);
257802
257935
  }
257803
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
+
257804
257979
  // ../../packages/super-editor/src/document-api-adapters/errors.ts
257805
257980
  var DocumentApiAdapterError3;
257806
257981
  var init_errors3 = __esm(() => {
@@ -257868,7 +258043,17 @@ function mapBlockNodeType2(node3) {
257868
258043
  return;
257869
258044
  }
257870
258045
  }
257871
- 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) {
257872
258057
  if (node3.type.name === "paragraph") {
257873
258058
  const attrs2 = node3.attrs;
257874
258059
  return toId2(attrs2?.paraId) ?? toId2(attrs2?.sdBlockId);
@@ -257878,9 +258063,12 @@ function resolveBlockNodeId2(node3, pos, nodeType) {
257878
258063
  }
257879
258064
  const attrs = node3.attrs ?? {};
257880
258065
  const typeName = node3.type.name;
257881
- if (typeName === "table" || typeName === "tableRow" || typeName === "tableCell" || typeName === "tableHeader") {
258066
+ if (typeName === "tableRow") {
257882
258067
  return toId2(attrs.paraId) ?? toId2(attrs.sdBlockId) ?? toId2(attrs.blockId) ?? toId2(attrs.id) ?? toId2(attrs.uuid);
257883
258068
  }
258069
+ if (typeName === "table" || typeName === "tableCell" || typeName === "tableHeader") {
258070
+ return resolveLegacyTableIdentity2(attrs) ?? resolveRuntimeTableIdentity2(nodeType, attrs, pos, path2);
258071
+ }
257884
258072
  return toId2(attrs.blockId) ?? toId2(attrs.id) ?? toId2(attrs.paraId) ?? toId2(attrs.uuid) ?? toId2(attrs.sdBlockId);
257885
258073
  }
257886
258074
  function toBlockAddress2(candidate) {
@@ -257903,6 +258091,8 @@ function buildBlockIndex2(editor) {
257903
258091
  const candidates = [];
257904
258092
  const byId = new Map;
257905
258093
  const ambiguous = new Set;
258094
+ const pathByNode = new WeakMap;
258095
+ pathByNode.set(editor.state.doc, []);
257906
258096
  function registerKey(key2, candidate) {
257907
258097
  if (byId.has(key2)) {
257908
258098
  ambiguous.add(key2);
@@ -257911,11 +258101,16 @@ function buildBlockIndex2(editor) {
257911
258101
  byId.set(key2, candidate);
257912
258102
  }
257913
258103
  }
257914
- 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
+ }
257915
258110
  const nodeType = mapBlockNodeType2(node3);
257916
258111
  if (!nodeType)
257917
258112
  return;
257918
- const nodeId = resolveBlockNodeId2(node3, pos, nodeType);
258113
+ const nodeId = resolveBlockNodeId2(node3, pos, nodeType, path2);
257919
258114
  if (!nodeId)
257920
258115
  return;
257921
258116
  const candidate = {
@@ -258010,6 +258205,7 @@ function findBlockByPos2(index2, pos) {
258010
258205
  }
258011
258206
  var SUPPORTED_BLOCK_NODE_TYPES, ALIAS_ELIGIBLE_TYPES2;
258012
258207
  var init_node_address_resolver = __esm(() => {
258208
+ init_table_node_id();
258013
258209
  init_errors3();
258014
258210
  SUPPORTED_BLOCK_NODE_TYPES = new Set([
258015
258211
  "paragraph",
@@ -280818,6 +281014,15 @@ function createStrictTogglePropertyHandler2(xmlName, sdName = null) {
280818
281014
  }
280819
281015
  };
280820
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
+ }
280821
281026
  function createMeasurementPropertyHandler2(xmlName, sdName = null) {
280822
281027
  if (!sdName)
280823
281028
  sdName = xmlName.split(":")[1];
@@ -281064,7 +281269,7 @@ var generateV2HandlerEntity2 = (handlerName, translator2) => ({
281064
281269
  consumed: 1
281065
281270
  };
281066
281271
  }
281067
- }), 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) => {
281068
281273
  if (value == null)
281069
281274
  return;
281070
281275
  const strValue = String(value);
@@ -281102,6 +281307,7 @@ var init_utils = __esm(() => {
281102
281307
  init_node_translator2();
281103
281308
  init_src();
281104
281309
  init_import_diagnostics();
281310
+ UNSUPPORTED_TABLE_IDENTITY_ATTRS2 = ["w14:paraId", "w14:textId"];
281105
281311
  });
281106
281312
 
281107
281313
  // ../../packages/super-editor/src/core/super-converter/v3/handlers/w/nsid/nsid-translator.js
@@ -291653,8 +291859,9 @@ function encode32(params3, encodedAttrs) {
291653
291859
  }
291654
291860
  function decode33(params3, decodedAttrs) {
291655
291861
  const translated = translateTableCell2(params3);
291656
- if (decodedAttrs && Object.keys(decodedAttrs).length) {
291657
- translated.attributes = { ...translated.attributes || {}, ...decodedAttrs };
291862
+ const filteredDecodedAttrs = stripUnsupportedTableIdentityAttributes2(decodedAttrs);
291863
+ if (Object.keys(filteredDecodedAttrs).length) {
291864
+ translated.attributes = { ...translated.attributes || {}, ...filteredDecodedAttrs };
291658
291865
  }
291659
291866
  return translated;
291660
291867
  }
@@ -313394,7 +313601,7 @@ var validXmlAttributes10, XML_NODE_NAME17 = "w:tbl", SD_NODE_NAME13 = "table", I
313394
313601
  }
313395
313602
  return {
313396
313603
  name: "w:tbl",
313397
- attributes: decodedAttrs || {},
313604
+ attributes: stripUnsupportedTableIdentityAttributes2(decodedAttrs),
313398
313605
  elements
313399
313606
  };
313400
313607
  }, config17, translator172;
@@ -318133,56 +318340,113 @@ function toIdentityValue2(value) {
318133
318340
  return String(value);
318134
318341
  return;
318135
318342
  }
318136
- function resolvePrimaryBlockIdentity2(node4) {
318343
+ function getBlockIdentityAttrs2(node4) {
318137
318344
  if (!node4 || typeof node4 !== "object")
318138
- return;
318139
- const attrPriority = BLOCK_IDENTITY_ATTRS2[node4.type];
318140
- if (!attrPriority)
318141
- 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 [];
318142
318352
  const attrs = typeof node4.attrs === "object" && node4.attrs ? node4.attrs : {};
318353
+ const identityEntries = [];
318143
318354
  for (const attr of attrPriority) {
318144
318355
  const value = toIdentityValue2(attrs[attr]);
318145
- if (value)
318146
- return { id: value, source: attr };
318356
+ if (value) {
318357
+ identityEntries.push({ attr, value });
318358
+ }
318147
318359
  }
318148
- return;
318360
+ return identityEntries;
318149
318361
  }
318150
- function nextUniqueDocxId2(usedIds) {
318151
- let id2 = generateDocxRandomId2();
318152
- while (usedIds.has(id2)) {
318153
- 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
+ });
318154
318374
  }
318155
- 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));
318156
318379
  }
318157
- function dedupeBlockIdentitiesInNode2(node4, usedIds) {
318380
+ function collectExplicitBlockIdentities2(node4, reservedIds) {
318158
318381
  if (!node4 || typeof node4 !== "object")
318159
318382
  return;
318160
- const identity = resolvePrimaryBlockIdentity2(node4);
318161
- if (identity) {
318162
- if (usedIds.has(identity.id)) {
318163
- const replacementId = nextUniqueDocxId2(usedIds);
318164
- node4.attrs = { ...node4.attrs, [identity.source]: replacementId };
318165
- usedIds.add(replacementId);
318166
- } else {
318167
- 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;
318168
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);
318169
318429
  }
318170
318430
  if (Array.isArray(node4.content)) {
318171
- node4.content.forEach((child) => dedupeBlockIdentitiesInNode2(child, usedIds));
318431
+ node4.content.forEach((child) => normalizeBlockIdentitiesInNode2(child, seenIds, allocateDocxId));
318172
318432
  }
318173
318433
  }
318174
318434
  function normalizeDuplicateBlockIdentitiesInContent2(content4 = []) {
318175
318435
  if (!Array.isArray(content4) || content4.length === 0)
318176
318436
  return content4;
318177
- const usedIds = new Set;
318178
- 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));
318179
318442
  return content4;
318180
318443
  }
318181
- 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;
318182
318445
  var init_normalizeDuplicateBlockIdentitiesInContent = __esm(() => {
318183
318446
  PARAGRAPH_IDENTITY_ATTRS2 = ["sdBlockId", "paraId"];
318184
318447
  TABLE_IDENTITY_ATTRS2 = ["sdBlockId", "paraId", "blockId"];
318185
318448
  DEFAULT_BLOCK_IDENTITY_ATTRS2 = ["sdBlockId", "blockId", "paraId"];
318449
+ SYNTHETIC_PARA_ID_TYPES2 = new Set(["paragraph", "tableRow"]);
318186
318450
  BLOCK_IDENTITY_ATTRS2 = {
318187
318451
  paragraph: PARAGRAPH_IDENTITY_ATTRS2,
318188
318452
  heading: DEFAULT_BLOCK_IDENTITY_ATTRS2,
@@ -323304,20 +323568,32 @@ function getFontFamilyValue3(attributes, docx) {
323304
323568
  return SuperConverter3.toCssFontFamily(resolved, docx);
323305
323569
  }
323306
323570
  function getHighLightValue3(attributes) {
323307
- const fill = attributes["w:fill"];
323308
- if (fill && fill !== "auto")
323571
+ const fill = normalizeHighlightHex2(attributes?.["w:fill"]);
323572
+ if (fill)
323309
323573
  return `#${fill}`;
323310
- if (attributes?.["w:val"] === "none")
323574
+ const value = attributes?.["w:val"];
323575
+ if (value === "none")
323311
323576
  return "transparent";
323312
- if (isValidHexColor3(attributes?.["w:val"]))
323313
- return `#${attributes["w:val"]}`;
323314
- return getHexColorFromDocxSystem2(attributes?.["w:val"]) || null;
323577
+ const normalizedValue = normalizeHighlightHex2(value);
323578
+ if (normalizedValue)
323579
+ return `#${normalizedValue}`;
323580
+ return getHexColorFromDocxSystem2(value) || null;
323581
+ }
323582
+ function normalizeHighlightHex2(rawValue) {
323583
+ if (typeof rawValue !== "string")
323584
+ return null;
323585
+ const trimmedValue = rawValue.trim();
323586
+ if (!trimmedValue || trimmedValue.toLowerCase() === "auto")
323587
+ return null;
323588
+ const normalizedValue = normalizeHexColor3(trimmedValue);
323589
+ if (!normalizedValue || !isValidHexColor3(normalizedValue))
323590
+ return null;
323591
+ return normalizedValue;
323315
323592
  }
323316
323593
  var getToCssFontFamily2 = () => {
323317
323594
  return SuperConverter3.toCssFontFamily;
323318
323595
  };
323319
323596
  var init_styles3 = __esm(() => {
323320
- init_helpers();
323321
323597
  init_helpers();
323322
323598
  init_SuperConverter();
323323
323599
  init_ooxml();
@@ -328138,12 +328414,13 @@ var init_list_item_resolver = __esm(() => {
328138
328414
  function getLiveDocumentCounts2(editor) {
328139
328415
  const currentDoc = editor.state.doc;
328140
328416
  const cached = liveDocumentCountsCache2.get(editor);
328417
+ const pages = countPages2(editor);
328141
328418
  if (cached && cached.doc === currentDoc) {
328142
- return cloneLiveDocumentCounts2(cached.counts);
328419
+ return cloneLiveDocumentCounts2(cached.counts, pages);
328143
328420
  }
328144
328421
  const counts = computeLiveDocumentCounts2(editor);
328145
328422
  liveDocumentCountsCache2.set(editor, { doc: currentDoc, counts });
328146
- return cloneLiveDocumentCounts2(counts);
328423
+ return cloneLiveDocumentCounts2(counts, pages);
328147
328424
  }
328148
328425
  function computeLiveDocumentCounts2(editor) {
328149
328426
  const text9 = getTextAdapter2(editor, {});
@@ -328164,8 +328441,8 @@ function computeLiveDocumentCounts2(editor) {
328164
328441
  lists: countLists2(editor, blockIndex)
328165
328442
  };
328166
328443
  }
328167
- function cloneLiveDocumentCounts2(counts) {
328168
- return { ...counts };
328444
+ function cloneLiveDocumentCounts2(counts, pages) {
328445
+ return pages != null ? { ...counts, pages } : { ...counts };
328169
328446
  }
328170
328447
  function countWordsFromText2(text9) {
328171
328448
  const matches3 = text9.trim().match(/\S+/g);
@@ -328270,6 +328547,9 @@ function resolveVisibleListLevel2(item) {
328270
328547
  }
328271
328548
  return item.path && item.path.length > 0 ? item.path.length - 1 : undefined;
328272
328549
  }
328550
+ function countPages2(editor) {
328551
+ return editor.currentTotalPages;
328552
+ }
328273
328553
  var FIELD_LIKE_SDT_TYPES2, liveDocumentCountsCache2;
328274
328554
  var init_live_document_counts = __esm(() => {
328275
328555
  init_index_cache();
@@ -334718,7 +334998,7 @@ function collectTopLevelBlocks2(editor) {
334718
334998
  const nodeType = mapBlockNodeType2(child);
334719
334999
  const pos = offset2;
334720
335000
  if (nodeType) {
334721
- const nodeId = resolveBlockNodeId2(child, pos, nodeType);
335001
+ const nodeId = resolveBlockNodeId2(child, pos, nodeType, [i5]);
334722
335002
  if (nodeId) {
334723
335003
  results.push({ node: child, pos, end: pos + child.nodeSize, nodeType, nodeId });
334724
335004
  }
@@ -336836,6 +337116,12 @@ var init_table_target_resolver = __esm(() => {
336836
337116
  init_errors3();
336837
337117
  });
336838
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
+
336839
337125
  // ../../packages/super-editor/src/document-api-adapters/document-settings.ts
336840
337126
  function findSettingsRoot2(part) {
336841
337127
  if (part.name === "w:settings")
@@ -336914,16 +337200,13 @@ function setOddEvenHeadersFooters2(settingsRoot, enabled) {
336914
337200
  var SETTINGS_PART_PATH2 = "word/settings.xml";
336915
337201
 
336916
337202
  // ../../packages/super-editor/src/document-api-adapters/tables-adapter.ts
336917
- function generateParaId2() {
336918
- return Array.from({ length: 8 }, () => Math.floor(Math.random() * 16).toString(16)).join("").toUpperCase();
336919
- }
336920
337203
  function createSeparatorParagraph2(schema) {
336921
337204
  const paragraphType = schema.nodes.paragraph;
336922
337205
  if (!paragraphType)
336923
337206
  return null;
336924
337207
  const separatorAttrs = {
336925
337208
  sdBlockId: v42(),
336926
- paraId: generateParaId2()
337209
+ paraId: generateDocxHexId2()
336927
337210
  };
336928
337211
  return paragraphType.createAndFill(separatorAttrs) ?? paragraphType.createAndFill();
336929
337212
  }
@@ -338078,18 +338361,16 @@ function tablesConvertFromTextAdapter2(editor, input2, options) {
338078
338361
  const content5 = text9 ? schema.text(text9) : undefined;
338079
338362
  const para = schema.nodes.paragraph.createAndFill(null, content5);
338080
338363
  tableCells.push(schema.nodes.tableCell.createAndFill({
338081
- sdBlockId: v42(),
338082
- paraId: generateParaId2()
338364
+ sdBlockId: v42()
338083
338365
  }, para));
338084
338366
  }
338085
338367
  tableRows.push(schema.nodes.tableRow.createAndFill({
338086
338368
  sdBlockId: v42(),
338087
- paraId: generateParaId2()
338369
+ paraId: generateDocxHexId2()
338088
338370
  }, tableCells));
338089
338371
  }
338090
338372
  const tableId = v42();
338091
- const tableParaId = generateParaId2();
338092
- const tableNode = schema.nodes.table.create({ sdBlockId: tableId, paraId: tableParaId }, tableRows);
338373
+ const tableNode = schema.nodes.table.create({ sdBlockId: tableId }, tableRows);
338093
338374
  const startPos = paragraphs[0].pos;
338094
338375
  const lastP = paragraphs[paragraphs.length - 1];
338095
338376
  const endPos = lastP.pos + lastP.node.nodeSize;
@@ -338230,8 +338511,7 @@ function tablesInsertCellAdapter2(editor, input2, options) {
338230
338511
  const makeEmptyCell = (preferHeader = false) => {
338231
338512
  const candidateType = preferHeader ? schema.nodes.tableHeader ?? schema.nodes.tableCell : schema.nodes.tableCell;
338232
338513
  return candidateType.createAndFill({
338233
- sdBlockId: v42(),
338234
- paraId: generateParaId2()
338514
+ sdBlockId: v42()
338235
338515
  }) ?? candidateType.createAndFill();
338236
338516
  };
338237
338517
  const overflowRowCells = [];
@@ -338244,7 +338524,7 @@ function tablesInsertCellAdapter2(editor, input2, options) {
338244
338524
  const overflowRowAttrs = {
338245
338525
  ...templateRowAttrs,
338246
338526
  sdBlockId: v42(),
338247
- paraId: generateParaId2()
338527
+ paraId: generateDocxHexId2()
338248
338528
  };
338249
338529
  const overflowRow = schema.nodes.tableRow.createAndFill(overflowRowAttrs, overflowRowCells) ?? schema.nodes.tableRow.create(overflowRowAttrs, overflowRowCells);
338250
338530
  if (!overflowRow) {
@@ -339196,13 +339476,11 @@ function createTableAdapter2(editor, input2, options) {
339196
339476
  };
339197
339477
  }
339198
339478
  const tableId = v42();
339199
- const paraId = generateParaId2();
339200
339479
  const didApply = insertTableAt2({
339201
339480
  pos: insertAt,
339202
339481
  rows: input2.rows,
339203
339482
  columns: input2.columns,
339204
339483
  sdBlockId: tableId,
339205
- paraId,
339206
339484
  tracked: mode === "tracked"
339207
339485
  });
339208
339486
  if (!didApply) {
@@ -344864,7 +345142,7 @@ var init_toc_wrappers = __esm(() => {
344864
345142
  });
344865
345143
 
344866
345144
  // ../../packages/super-editor/src/document-api-adapters/helpers/toc-entry-node-id.ts
344867
- function stableHash3(input2) {
345145
+ function stableHash4(input2) {
344868
345146
  let hash2 = 2166136261;
344869
345147
  for (let index3 = 0;index3 < input2.length; index3 += 1) {
344870
345148
  hash2 ^= input2.charCodeAt(index3);
@@ -344874,7 +345152,7 @@ function stableHash3(input2) {
344874
345152
  }
344875
345153
  function resolvePublicTcEntryNodeId2(node4, pos) {
344876
345154
  const instruction = typeof node4.attrs?.instruction === "string" ? node4.attrs.instruction : "";
344877
- return `tc-entry-${stableHash3(`${pos}:${instruction}`)}`;
345155
+ return `tc-entry-${stableHash4(`${pos}:${instruction}`)}`;
344878
345156
  }
344879
345157
 
344880
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.14",
3
+ "version": "0.3.0-next.16",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "superdoc": "./dist/index.js"
@@ -30,11 +30,11 @@
30
30
  "access": "public"
31
31
  },
32
32
  "optionalDependencies": {
33
- "@superdoc-dev/cli-darwin-arm64": "0.3.0-next.14",
34
- "@superdoc-dev/cli-linux-x64": "0.3.0-next.14",
35
- "@superdoc-dev/cli-darwin-x64": "0.3.0-next.14",
36
- "@superdoc-dev/cli-linux-arm64": "0.3.0-next.14",
37
- "@superdoc-dev/cli-windows-x64": "0.3.0-next.14"
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",