@extend-ai/react-xlsx 0.14.0 → 0.14.1

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.
@@ -4697,6 +4697,60 @@ function parseA1RangeReference2(reference) {
4697
4697
  }
4698
4698
  return normalizeRange({ end, start });
4699
4699
  }
4700
+ function resolveWorkbookReference(targetWorkbook, defaultWorkbookSheetIndex, rawReference, resolvingNamedRange = false) {
4701
+ const reference = rawReference.trim().replace(/^=/, "");
4702
+ if (!reference) {
4703
+ return null;
4704
+ }
4705
+ let workbookSheetIndex = defaultWorkbookSheetIndex;
4706
+ let rangeReference = reference;
4707
+ const bangIndex = reference.lastIndexOf("!");
4708
+ if (bangIndex >= 0) {
4709
+ let sheetName = reference.slice(0, bangIndex).trim();
4710
+ rangeReference = reference.slice(bangIndex + 1).trim();
4711
+ if (sheetName.startsWith("'") && sheetName.endsWith("'")) {
4712
+ sheetName = sheetName.slice(1, -1).replace(/''/g, "'");
4713
+ }
4714
+ const resolvedSheetIndex = targetWorkbook.sheetIndex(sheetName);
4715
+ if (resolvedSheetIndex === void 0) {
4716
+ return null;
4717
+ }
4718
+ workbookSheetIndex = resolvedSheetIndex;
4719
+ } else if (!resolvingNamedRange) {
4720
+ const namedRange = targetWorkbook.getNamedRange(reference);
4721
+ if (namedRange) {
4722
+ return resolveWorkbookReference(targetWorkbook, defaultWorkbookSheetIndex, namedRange, true);
4723
+ }
4724
+ }
4725
+ const range = parseA1RangeReference2(rangeReference.replace(/\$/g, ""));
4726
+ if (!range || workbookSheetIndex < 0 || workbookSheetIndex >= targetWorkbook.sheetCount) {
4727
+ return null;
4728
+ }
4729
+ try {
4730
+ return {
4731
+ range,
4732
+ worksheet: targetWorkbook.getSheet(workbookSheetIndex)
4733
+ };
4734
+ } catch {
4735
+ return null;
4736
+ }
4737
+ }
4738
+ function resolveFormControlItems(targetWorkbook, workbookSheetIndex, control) {
4739
+ if (control.kind !== "dropdown" && control.kind !== "listbox" || !control.inputRange) {
4740
+ return [];
4741
+ }
4742
+ const source = resolveWorkbookReference(targetWorkbook, workbookSheetIndex, control.inputRange);
4743
+ if (!source) {
4744
+ return [];
4745
+ }
4746
+ const items = [];
4747
+ for (let row = source.range.start.row; row <= source.range.end.row; row += 1) {
4748
+ for (let col = source.range.start.col; col <= source.range.end.col; col += 1) {
4749
+ items.push(source.worksheet.getFormattedValueAt(row, col));
4750
+ }
4751
+ }
4752
+ return items;
4753
+ }
4700
4754
  function parseWorksheetFreezePanes(worksheet) {
4701
4755
  const rawFreezePanes = worksheet.freezePanes;
4702
4756
  const row = typeof rawFreezePanes?.row === "number" && rawFreezePanes.row >= 0 ? rawFreezePanes.row : null;
@@ -5017,7 +5071,12 @@ async function loadWorkbook(buffer, skipXmlParsing = false, showHiddenSheets = f
5017
5071
  activeWorkbook = result.workbook;
5018
5072
  }
5019
5073
  const nextWorkbook = activeWorkbook;
5020
- formControlsByWorkbookSheetIndex = collectWorkbookFormControls(nextWorkbook);
5074
+ formControlsByWorkbookSheetIndex = collectWorkbookFormControls(nextWorkbook).map(
5075
+ (controls, workbookSheetIndex) => controls.map((control) => ({
5076
+ ...control,
5077
+ items: resolveFormControlItems(nextWorkbook, workbookSheetIndex, control)
5078
+ }))
5079
+ );
5021
5080
  const shouldUseFastStructureParse = bytes.byteLength >= FAST_STRUCTURE_PARSE_THRESHOLD_BYTES && totalFormulas <= FORMULA_COUNT_THRESHOLD;
5022
5081
  const structureAssets = effectiveSkipXmlParsing || shouldUseFastStructureParse || !canParseXmlInWorker() ? null : parseWorkbookStructureAssets(bytes, {
5023
5082
  includeCachedFormulaValues: true