@extend-ai/react-docx 0.8.1 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -188,6 +188,10 @@ function __wbg_get_imports() {
188
188
  const ret = Object.create(getObject(arg0));
189
189
  return addHeapObject(ret);
190
190
  },
191
+ __wbg_from_8a57180716c586ee: function(arg0) {
192
+ const ret = Array.from(getObject(arg0));
193
+ return addHeapObject(ret);
194
+ },
191
195
  __wbg_get_52a8a619f7b88df6: function() {
192
196
  return handleError(function(arg0, arg1) {
193
197
  const ret = Reflect.get(getObject(arg0), getObject(arg1));
@@ -234,6 +238,10 @@ function __wbg_get_imports() {
234
238
  const ret = getObject(arg0).length;
235
239
  return ret;
236
240
  },
241
+ __wbg_new_0b303268aa395a38: function() {
242
+ const ret = new Array();
243
+ return addHeapObject(ret);
244
+ },
237
245
  __wbg_new_20b778a4c5c691c3: function() {
238
246
  const ret = new Object();
239
247
  return addHeapObject(ret);
@@ -255,6 +263,10 @@ function __wbg_get_imports() {
255
263
  __wbg_prototypesetcall_956c7493c68e29b4: function(arg0, arg1, arg2) {
256
264
  Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), getObject(arg2));
257
265
  },
266
+ __wbg_push_ceb8ef046afb2041: function(arg0, arg1) {
267
+ const ret = getObject(arg0).push(getObject(arg1));
268
+ return ret;
269
+ },
258
270
  __wbg_set_a6ba3ac0e634b822: function() {
259
271
  return handleError(function(arg0, arg1, arg2) {
260
272
  const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));
@@ -595,7 +607,11 @@ function wasmPackageToMaps(raw) {
595
607
  for (const [name, asset] of Object.entries(raw.binaryAssets ?? {})) {
596
608
  binaryAssets.set(name, toUint8Array(asset));
597
609
  }
598
- return { parts, binaryAssets };
610
+ return {
611
+ parts,
612
+ binaryAssets,
613
+ warnings: Array.isArray(raw.warnings) ? [...raw.warnings] : []
614
+ };
599
615
  }
600
616
  function mapsToWasmPackage(input) {
601
617
  const parts = {};
@@ -609,7 +625,11 @@ function mapsToWasmPackage(input) {
609
625
  for (const [name, asset] of input.binaryAssets.entries()) {
610
626
  binaryAssets[name] = asset;
611
627
  }
612
- return { parts, binaryAssets };
628
+ return {
629
+ parts,
630
+ binaryAssets,
631
+ ...input.warnings && input.warnings.length > 0 ? { warnings: [...input.warnings] } : {}
632
+ };
613
633
  }
614
634
  async function wasmParseDocx(bytes) {
615
635
  await initWasm();
@@ -656,8 +676,8 @@ __export(src_exports, {
656
676
  });
657
677
  async function parseDocx(input) {
658
678
  const wasmPackage = await wasmParseDocx(input);
659
- const { parts, binaryAssets } = wasmPackageToMaps(wasmPackage);
660
- return { parts, binaryAssets };
679
+ const { parts, binaryAssets, warnings } = wasmPackageToMaps(wasmPackage);
680
+ return { parts, binaryAssets, ...warnings.length > 0 ? { warnings } : {} };
661
681
  }
662
682
  async function packageToArrayBuffer(pkg) {
663
683
  return wasmPackageToArrayBuffer(mapsToWasmPackage(pkg));
@@ -684,7 +704,8 @@ function withPart(pkg, part) {
684
704
  parts.set(part.name, part);
685
705
  return {
686
706
  parts,
687
- binaryAssets: new Map(pkg.binaryAssets)
707
+ binaryAssets: new Map(pkg.binaryAssets),
708
+ ...pkg.warnings && pkg.warnings.length > 0 ? { warnings: [...pkg.warnings] } : {}
688
709
  };
689
710
  }
690
711
  var WORD_MAIN_NS, DEFAULT_DOCUMENT_XML, DEFAULT_CONTENT_TYPES_XML, DEFAULT_ROOT_RELS_XML, DEFAULT_DOCUMENT_RELS_XML;
@@ -1310,7 +1331,8 @@ __export(src_exports2, {
1310
1331
  async function buildDocModel(pkg) {
1311
1332
  const wasmPackage = mapsToWasmPackage({
1312
1333
  parts: pkg.parts,
1313
- binaryAssets: pkg.binaryAssets
1334
+ binaryAssets: pkg.binaryAssets,
1335
+ warnings: pkg.warnings
1314
1336
  });
1315
1337
  const model = await wasmBuildDocModelFromPackage(wasmPackage);
1316
1338
  return normalizeDocModel(model);
@@ -16572,14 +16594,53 @@ function resolveListParagraphIndent(paragraph, numberingDefinitions) {
16572
16594
  hangingTwips: nextHangingTwips
16573
16595
  };
16574
16596
  }
16575
- function resolveNumberingMarkerBoxWidthPx(paragraph, numberingDefinitions, numberingLabel) {
16597
+ function numberingIndentCandidateWidthPx(paragraph, numberingDefinitions) {
16576
16598
  const resolvedIndent = resolveListParagraphIndent(
16577
16599
  paragraph,
16578
16600
  numberingDefinitions
16579
16601
  );
16580
16602
  const hangingIndentPx = twipsToSignedPixels(resolvedIndent?.hangingTwips);
16581
16603
  const firstLineIndentPx = twipsToSignedPixels(resolvedIndent?.firstLineTwips);
16582
- const candidateWidthPx = Number.isFinite(hangingIndentPx) && Math.abs(hangingIndentPx) > 0 ? Math.abs(hangingIndentPx) : Number.isFinite(firstLineIndentPx) && firstLineIndentPx < 0 ? Math.abs(firstLineIndentPx) : void 0;
16604
+ return Number.isFinite(hangingIndentPx) && Math.abs(hangingIndentPx) > 0 ? Math.abs(hangingIndentPx) : Number.isFinite(firstLineIndentPx) && firstLineIndentPx < 0 ? Math.abs(firstLineIndentPx) : void 0;
16605
+ }
16606
+ function resolvedNumberingLevelForParagraph(paragraph, numberingDefinitions) {
16607
+ const numbering = paragraph.style?.numbering;
16608
+ if (!numberingDefinitions || !numbering || !Number.isFinite(numbering.numId) || numbering.numId <= 0) {
16609
+ return void 0;
16610
+ }
16611
+ const effectiveNumId = effectiveNumberingNumIdForParagraph(paragraph, numberingDefinitions) ?? numbering.numId;
16612
+ return findNumberingLevelDefinition(
16613
+ numberingDefinitions,
16614
+ effectiveNumId,
16615
+ Math.max(0, Math.round(numbering.ilvl ?? 0))
16616
+ );
16617
+ }
16618
+ function numberingTabAdvanceWidthPx(paragraph, numberingDefinitions, numberingLabel) {
16619
+ if (!numberingLabel?.text || numberingLabel.imageSrc || isTableOfContentsParagraph(paragraph)) {
16620
+ return void 0;
16621
+ }
16622
+ const level = resolvedNumberingLevelForParagraph(
16623
+ paragraph,
16624
+ numberingDefinitions
16625
+ );
16626
+ const suffix = level?.suffix ?? "tab";
16627
+ if (suffix !== "tab") {
16628
+ return void 0;
16629
+ }
16630
+ const labelWidthPx = Math.ceil(
16631
+ measureTextWidthPx2(
16632
+ numberingLabel.text.replace(/\t/g, " ").replace(/\u00a0/g, " "),
16633
+ numberingLabel.style,
16634
+ paragraphBaseFontSizePx(paragraph)
16635
+ )
16636
+ );
16637
+ return (Math.floor(labelWidthPx / DEFAULT_TAB_STOP_PX) + 1) * DEFAULT_TAB_STOP_PX;
16638
+ }
16639
+ function resolveNumberingMarkerBoxWidthPx(paragraph, numberingDefinitions, numberingLabel) {
16640
+ const candidateWidthPx = numberingIndentCandidateWidthPx(
16641
+ paragraph,
16642
+ numberingDefinitions
16643
+ );
16583
16644
  const labelTextForWidth = numberingLabel?.imageSrc ? numberingLabel.trailingText ?? "" : numberingLabel?.text ?? "";
16584
16645
  const normalizedLabelTextForWidth = labelTextForWidth.replace(/\t/g, " ").replace(/\u00a0/g, " ");
16585
16646
  const measuredLabelWidthPx = normalizedLabelTextForWidth.length > 0 ? Math.ceil(
@@ -16605,6 +16666,18 @@ function resolveNumberingMarkerBoxWidthPx(paragraph, numberingDefinitions, numbe
16605
16666
  tocMarkerTargetWidthPx
16606
16667
  );
16607
16668
  if (!Number.isFinite(candidateWidthPx) || candidateWidthPx < 8) {
16669
+ const tabAdvanceWidthPx = numberingTabAdvanceWidthPx(
16670
+ paragraph,
16671
+ numberingDefinitions,
16672
+ numberingLabel
16673
+ );
16674
+ if (tabAdvanceWidthPx !== void 0) {
16675
+ return clampNumber(
16676
+ Math.round(Math.max(tabAdvanceWidthPx, minimumVisualWidthPx)),
16677
+ 8,
16678
+ 220
16679
+ );
16680
+ }
16608
16681
  return minimumVisualWidthPx > 0 ? clampNumber(Math.round(minimumVisualWidthPx), 8, 220) : void 0;
16609
16682
  }
16610
16683
  return Math.max(
@@ -16619,11 +16692,16 @@ function numberingMarkerStyle(paragraph, numberingDefinitions, numberingLabel, b
16619
16692
  numberingLabel
16620
16693
  );
16621
16694
  const markerGapPx = isTableOfContentsParagraph(paragraph) ? 6 : markerBoxWidthPx ? 0 : 2;
16695
+ const tabSynthesized = markerBoxWidthPx !== void 0 && numberingIndentCandidateWidthPx(paragraph, numberingDefinitions) === void 0 && numberingTabAdvanceWidthPx(
16696
+ paragraph,
16697
+ numberingDefinitions,
16698
+ numberingLabel
16699
+ ) !== void 0;
16622
16700
  return {
16623
16701
  ...baseStyle ?? {},
16624
16702
  display: "inline-flex",
16625
16703
  alignItems: "baseline",
16626
- justifyContent: "flex-end",
16704
+ justifyContent: tabSynthesized ? "flex-start" : "flex-end",
16627
16705
  verticalAlign: "baseline",
16628
16706
  width: markerBoxWidthPx ? `${markerBoxWidthPx}px` : void 0,
16629
16707
  minWidth: markerBoxWidthPx ? `${markerBoxWidthPx}px` : "1.1em",
@@ -19646,40 +19724,157 @@ function numberToLetters(value) {
19646
19724
  if (!Number.isFinite(value) || value <= 0) {
19647
19725
  return "";
19648
19726
  }
19649
- let remaining = Math.floor(value);
19650
- let output = "";
19651
- while (remaining > 0) {
19652
- const offset = (remaining - 1) % 26;
19653
- output = String.fromCharCode(65 + offset) + output;
19654
- remaining = Math.floor((remaining - 1) / 26);
19727
+ const rounded = Math.floor(value);
19728
+ const letter = String.fromCharCode(65 + (rounded - 1) % 26);
19729
+ return letter.repeat(Math.floor((rounded - 1) / 26) + 1);
19730
+ }
19731
+ var CARDINAL_ONES = [
19732
+ "zero",
19733
+ "one",
19734
+ "two",
19735
+ "three",
19736
+ "four",
19737
+ "five",
19738
+ "six",
19739
+ "seven",
19740
+ "eight",
19741
+ "nine",
19742
+ "ten",
19743
+ "eleven",
19744
+ "twelve",
19745
+ "thirteen",
19746
+ "fourteen",
19747
+ "fifteen",
19748
+ "sixteen",
19749
+ "seventeen",
19750
+ "eighteen",
19751
+ "nineteen"
19752
+ ];
19753
+ var CARDINAL_TENS = [
19754
+ "",
19755
+ "",
19756
+ "twenty",
19757
+ "thirty",
19758
+ "forty",
19759
+ "fifty",
19760
+ "sixty",
19761
+ "seventy",
19762
+ "eighty",
19763
+ "ninety"
19764
+ ];
19765
+ var ORDINAL_ONES = [
19766
+ "zeroth",
19767
+ "first",
19768
+ "second",
19769
+ "third",
19770
+ "fourth",
19771
+ "fifth",
19772
+ "sixth",
19773
+ "seventh",
19774
+ "eighth",
19775
+ "ninth",
19776
+ "tenth",
19777
+ "eleventh",
19778
+ "twelfth",
19779
+ "thirteenth",
19780
+ "fourteenth",
19781
+ "fifteenth",
19782
+ "sixteenth",
19783
+ "seventeenth",
19784
+ "eighteenth",
19785
+ "nineteenth"
19786
+ ];
19787
+ var ORDINAL_TENS = [
19788
+ "",
19789
+ "",
19790
+ "twentieth",
19791
+ "thirtieth",
19792
+ "fortieth",
19793
+ "fiftieth",
19794
+ "sixtieth",
19795
+ "seventieth",
19796
+ "eightieth",
19797
+ "ninetieth"
19798
+ ];
19799
+ function numberToCardinalText(value) {
19800
+ if (value < 20) {
19801
+ return CARDINAL_ONES[value];
19802
+ }
19803
+ if (value < 100) {
19804
+ const tens = Math.floor(value / 10);
19805
+ const ones = value % 10;
19806
+ return ones === 0 ? CARDINAL_TENS[tens] : `${CARDINAL_TENS[tens]}-${CARDINAL_ONES[ones]}`;
19807
+ }
19808
+ if (value < 1e3) {
19809
+ const hundreds = Math.floor(value / 100);
19810
+ const rest = value % 100;
19811
+ const head = `${CARDINAL_ONES[hundreds]} hundred`;
19812
+ return rest === 0 ? head : `${head} ${numberToCardinalText(rest)}`;
19813
+ }
19814
+ return String(value);
19815
+ }
19816
+ function numberToOrdinalText(value) {
19817
+ if (value < 20) {
19818
+ return ORDINAL_ONES[value];
19819
+ }
19820
+ if (value < 100) {
19821
+ const tens = Math.floor(value / 10);
19822
+ const ones = value % 10;
19823
+ return ones === 0 ? ORDINAL_TENS[tens] : `${CARDINAL_TENS[tens]}-${ORDINAL_ONES[ones]}`;
19824
+ }
19825
+ if (value < 1e3) {
19826
+ const hundreds = Math.floor(value / 100);
19827
+ const rest = value % 100;
19828
+ return rest === 0 ? `${CARDINAL_ONES[hundreds]} hundredth` : `${CARDINAL_ONES[hundreds]} hundred ${numberToOrdinalText(rest)}`;
19829
+ }
19830
+ return String(value);
19831
+ }
19832
+ function numberToOrdinalDigits(value) {
19833
+ const mod100 = value % 100;
19834
+ if (mod100 >= 11 && mod100 <= 13) {
19835
+ return `${value}th`;
19836
+ }
19837
+ switch (value % 10) {
19838
+ case 1:
19839
+ return `${value}st`;
19840
+ case 2:
19841
+ return `${value}nd`;
19842
+ case 3:
19843
+ return `${value}rd`;
19844
+ default:
19845
+ return `${value}th`;
19655
19846
  }
19656
- return output;
19657
19847
  }
19658
19848
  function formatNumberingCounter(format, value) {
19659
- if (!Number.isFinite(value) || value <= 0) {
19849
+ if (!Number.isFinite(value) || value < 0) {
19660
19850
  return "";
19661
19851
  }
19852
+ const rounded = Math.round(value);
19662
19853
  switch ((format ?? "decimal").toLowerCase()) {
19663
19854
  case "decimal":
19664
- return String(value);
19855
+ return String(rounded);
19856
+ case "decimalzero":
19857
+ return rounded < 10 ? `0${rounded}` : String(rounded);
19665
19858
  case "upperroman":
19666
- return numberToRoman(value);
19859
+ return rounded === 0 ? String(rounded) : numberToRoman(rounded);
19667
19860
  case "lowerroman":
19668
- return numberToRoman(value).toLowerCase();
19861
+ return rounded === 0 ? String(rounded) : numberToRoman(rounded).toLowerCase();
19669
19862
  case "upperletter":
19670
- return numberToLetters(value);
19863
+ return rounded === 0 ? String(rounded) : numberToLetters(rounded);
19671
19864
  case "lowerletter":
19672
- return numberToLetters(value).toLowerCase();
19865
+ return rounded === 0 ? String(rounded) : numberToLetters(rounded).toLowerCase();
19673
19866
  case "ordinal":
19867
+ return numberToOrdinalDigits(rounded);
19674
19868
  case "cardinaltext":
19869
+ return numberToCardinalText(rounded);
19675
19870
  case "ordinaltext":
19676
- return String(value);
19871
+ return numberToOrdinalText(rounded);
19677
19872
  case "bullet":
19678
19873
  return "\u2022";
19679
19874
  case "none":
19680
19875
  return "";
19681
19876
  default:
19682
- return String(value);
19877
+ return String(rounded);
19683
19878
  }
19684
19879
  }
19685
19880
  function formatPageFieldValue(value, format) {
@@ -19794,10 +19989,10 @@ function numberingStartValue(numbering, numId, ilvl) {
19794
19989
  const instance = numbering.instances.find((item) => item.numId === numId);
19795
19990
  const override = instance?.levelStartOverrides?.[String(ilvl)];
19796
19991
  if (Number.isFinite(override)) {
19797
- return Math.max(1, Math.round(override));
19992
+ return Math.max(0, Math.round(override));
19798
19993
  }
19799
19994
  const level = findNumberingLevelDefinition(numbering, numId, ilvl);
19800
- if (Number.isFinite(level?.start) && level?.start > 0) {
19995
+ if (Number.isFinite(level?.start) && level?.start >= 0) {
19801
19996
  return Math.round(level?.start);
19802
19997
  }
19803
19998
  return 1;
@@ -19868,14 +20063,27 @@ function buildParagraphNumberingLabels(model) {
19868
20063
  if (!template || template.trim().length === 0) {
19869
20064
  return;
19870
20065
  }
20066
+ const restartTriggerCeiling = (levelIndex) => {
20067
+ const rawRestart = findNumberingLevelDefinition(
20068
+ numbering,
20069
+ numId,
20070
+ levelIndex
20071
+ )?.lvlRestart;
20072
+ if (rawRestart === void 0 || !Number.isFinite(rawRestart) || Math.round(rawRestart) > levelIndex) {
20073
+ return levelIndex - 1;
20074
+ }
20075
+ const restart = Math.round(rawRestart);
20076
+ return restart <= 0 ? -1 : restart - 1;
20077
+ };
20078
+ const currentRestartCeiling = restartTriggerCeiling(ilvl);
19871
20079
  const counters = countersByNumId.get(numId) ?? [];
19872
20080
  const sharedAbstractCounters = Number.isFinite(abstractNumId) ? abstractCountersByAbstractNumId.get(abstractNumId) ?? [] : void 0;
19873
20081
  let parentCountersChanged = false;
19874
20082
  for (let index = 0; index < ilvl; index += 1) {
19875
- const abstractCounterValue = sharedAbstractCounters && Number.isFinite(sharedAbstractCounters[index]) ? Math.max(1, Math.round(sharedAbstractCounters[index])) : void 0;
20083
+ const abstractCounterValue = sharedAbstractCounters && Number.isFinite(sharedAbstractCounters[index]) ? Math.max(0, Math.round(sharedAbstractCounters[index])) : void 0;
19876
20084
  if (abstractCounterValue !== void 0) {
19877
20085
  const previousCounter = counters[index];
19878
- if (!Number.isFinite(previousCounter) || Math.max(1, Math.round(previousCounter)) !== abstractCounterValue) {
20086
+ if ((!Number.isFinite(previousCounter) || Math.max(0, Math.round(previousCounter)) !== abstractCounterValue) && index <= currentRestartCeiling) {
19879
20087
  parentCountersChanged = true;
19880
20088
  }
19881
20089
  counters[index] = abstractCounterValue;
@@ -19888,7 +20096,9 @@ function buildParagraphNumberingLabels(model) {
19888
20096
  const currentValue = parentCountersChanged ? void 0 : counters[ilvl];
19889
20097
  counters[ilvl] = Number.isFinite(currentValue) ? currentValue + 1 : numberingStartValue(numbering, numId, ilvl);
19890
20098
  for (let index = ilvl + 1; index < counters.length; index += 1) {
19891
- counters[index] = void 0;
20099
+ if (ilvl <= restartTriggerCeiling(index)) {
20100
+ counters[index] = void 0;
20101
+ }
19892
20102
  }
19893
20103
  countersByNumId.set(numId, counters);
19894
20104
  if (sharedAbstractCounters && Number.isFinite(abstractNumId)) {
@@ -19896,7 +20106,9 @@ function buildParagraphNumberingLabels(model) {
19896
20106
  sharedAbstractCounters[index] = counters[index];
19897
20107
  }
19898
20108
  for (let index = ilvl + 1; index < sharedAbstractCounters.length; index += 1) {
19899
- sharedAbstractCounters[index] = void 0;
20109
+ if (ilvl <= restartTriggerCeiling(index)) {
20110
+ sharedAbstractCounters[index] = void 0;
20111
+ }
19900
20112
  }
19901
20113
  abstractCountersByAbstractNumId.set(
19902
20114
  abstractNumId,
@@ -19906,12 +20118,8 @@ function buildParagraphNumberingLabels(model) {
19906
20118
  const label = template.replaceAll(/%(\d+)/g, (_, rawLevel) => {
19907
20119
  const levelIndex = Math.max(0, Number(rawLevel) - 1);
19908
20120
  const levelValue = counters[levelIndex];
19909
- const safeValue = Number.isFinite(levelValue) ? Math.max(1, Math.round(levelValue)) : numberingStartValue(numbering, numId, levelIndex);
19910
- const levelFormat = findNumberingLevelDefinition(
19911
- numbering,
19912
- numId,
19913
- levelIndex
19914
- )?.format;
20121
+ const safeValue = Number.isFinite(levelValue) ? Math.max(0, Math.round(levelValue)) : numberingStartValue(numbering, numId, levelIndex);
20122
+ const levelFormat = level?.isLgl ? "decimal" : findNumberingLevelDefinition(numbering, numId, levelIndex)?.format;
19915
20123
  return formatNumberingCounter(levelFormat, safeValue);
19916
20124
  });
19917
20125
  if (!label || label.trim().length === 0) {