@extend-ai/react-xlsx 0.20.0 → 0.20.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.
Files changed (44) hide show
  1. package/README.md +1 -0
  2. package/dist/{chart-renderer-AAVZ34BF.cjs → chart-renderer-K2VM257E.cjs} +5 -5
  3. package/dist/{chart-renderer-AAVZ34BF.cjs.map → chart-renderer-K2VM257E.cjs.map} +1 -1
  4. package/dist/{chart-renderer-NM5UVCTO.cjs → chart-renderer-K6GORT3R.cjs} +5 -5
  5. package/dist/{chart-renderer-NM5UVCTO.cjs.map → chart-renderer-K6GORT3R.cjs.map} +1 -1
  6. package/dist/{chunk-MCFUTO4J.cjs → chunk-2MVEKDY2.cjs} +4 -4
  7. package/dist/{chunk-MCFUTO4J.cjs.map → chunk-2MVEKDY2.cjs.map} +1 -1
  8. package/dist/{chunk-6K3NSKDJ.cjs → chunk-54YBFWL3.cjs} +4 -4
  9. package/dist/{chunk-6K3NSKDJ.cjs.map → chunk-54YBFWL3.cjs.map} +1 -1
  10. package/dist/{chunk-T5WZHPIN.cjs → chunk-AD4CGQN2.cjs} +2 -2
  11. package/dist/{chunk-T5WZHPIN.cjs.map → chunk-AD4CGQN2.cjs.map} +1 -1
  12. package/dist/{chunk-QN3D3JS2.js → chunk-GXJO6CK6.js} +123 -29
  13. package/dist/chunk-GXJO6CK6.js.map +1 -0
  14. package/dist/{chunk-2YBG7XQ3.cjs → chunk-HAHCVXCU.cjs} +910 -816
  15. package/dist/chunk-HAHCVXCU.cjs.map +1 -0
  16. package/dist/index.cjs +605 -527
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +3 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.js +102 -24
  21. package/dist/index.js.map +1 -1
  22. package/dist/{internal-DrXSHYJZ.d.cts → internal-trWFv9In.d.cts} +3 -0
  23. package/dist/{internal-DrXSHYJZ.d.ts → internal-trWFv9In.d.ts} +3 -0
  24. package/dist/internal.cjs +4 -4
  25. package/dist/internal.d.cts +1 -1
  26. package/dist/internal.d.ts +1 -1
  27. package/dist/internal.js +1 -1
  28. package/dist/{region-map-geography-6TGXBY3V.cjs → region-map-geography-VEN5CPRS.cjs} +2 -2
  29. package/dist/{region-map-geography-6TGXBY3V.cjs.map → region-map-geography-VEN5CPRS.cjs.map} +1 -1
  30. package/dist/{spreadsheet-font-assets-4AHYDTAQ.cjs → spreadsheet-font-assets-6FKCVICP.cjs} +2 -2
  31. package/dist/{spreadsheet-font-assets-4AHYDTAQ.cjs.map → spreadsheet-font-assets-6FKCVICP.cjs.map} +1 -1
  32. package/dist/{surface-regl-AY7JZVYY.cjs → surface-regl-2NNG62KS.cjs} +2 -2
  33. package/dist/{surface-regl-AY7JZVYY.cjs.map → surface-regl-2NNG62KS.cjs.map} +1 -1
  34. package/dist/{surface-regl-5Z6IVOID.cjs → surface-regl-SUJ2TFZA.cjs} +2 -2
  35. package/dist/{surface-regl-5Z6IVOID.cjs.map → surface-regl-SUJ2TFZA.cjs.map} +1 -1
  36. package/dist/vanilla.cjs +4 -4
  37. package/dist/vanilla.d.cts +2 -2
  38. package/dist/vanilla.d.ts +2 -2
  39. package/dist/vanilla.js +1 -1
  40. package/dist/xlsx-worker.js +67 -1
  41. package/dist/xlsx-worker.js.map +1 -1
  42. package/package.json +1 -1
  43. package/dist/chunk-2YBG7XQ3.cjs.map +0 -1
  44. package/dist/chunk-QN3D3JS2.js.map +0 -1
package/dist/vanilla.cjs CHANGED
@@ -5,10 +5,10 @@
5
5
 
6
6
 
7
7
 
8
- var _chunk2YBG7XQ3cjs = require('./chunk-2YBG7XQ3.cjs');
9
- require('./chunk-MCFUTO4J.cjs');
8
+ var _chunkHAHCVXCUcjs = require('./chunk-HAHCVXCU.cjs');
9
+ require('./chunk-2MVEKDY2.cjs');
10
10
  require('./chunk-CJBI5F6V.cjs');
11
- require('./chunk-T5WZHPIN.cjs');
11
+ require('./chunk-AD4CGQN2.cjs');
12
12
 
13
13
 
14
14
 
@@ -16,5 +16,5 @@ require('./chunk-T5WZHPIN.cjs');
16
16
 
17
17
 
18
18
 
19
- exports.XlsxFileSizeLimitExceededError = _chunk2YBG7XQ3cjs.XlsxFileSizeLimitExceededError; exports.XlsxViewer = _chunk2YBG7XQ3cjs.XlsxViewer; exports.createXlsxViewer = _chunk2YBG7XQ3cjs.createXlsxViewer; exports.initWasm = _chunk2YBG7XQ3cjs.initWasm; exports.parseXlsxRange = _chunk2YBG7XQ3cjs.parseXlsxRange; exports.setWasmSource = _chunk2YBG7XQ3cjs.setWasmSource;
19
+ exports.XlsxFileSizeLimitExceededError = _chunkHAHCVXCUcjs.XlsxFileSizeLimitExceededError; exports.XlsxViewer = _chunkHAHCVXCUcjs.XlsxViewer; exports.createXlsxViewer = _chunkHAHCVXCUcjs.createXlsxViewer; exports.initWasm = _chunkHAHCVXCUcjs.initWasm; exports.parseXlsxRange = _chunkHAHCVXCUcjs.parseXlsxRange; exports.setWasmSource = _chunkHAHCVXCUcjs.setWasmSource;
20
20
  //# sourceMappingURL=vanilla.cjs.map
@@ -1,5 +1,5 @@
1
- import { X as XlsxParsedRange } from './internal-DrXSHYJZ.cjs';
2
- export { U as UseXlsxViewerControllerOptions, a as UseXlsxViewerThumbnailsOptions, b as XlsxActiveCellOverlayRenderProps, c as XlsxCellAddress, d as XlsxCellAlignmentInput, e as XlsxCellBorderEdgeInput, f as XlsxCellBorderStyleInput, g as XlsxCellFillStyleInput, h as XlsxCellFontStyleInput, i as XlsxCellGradientStopInput, j as XlsxCellNumberFormatInput, k as XlsxCellProtectionInput, l as XlsxCellRange, m as XlsxCellStyleColorInput, n as XlsxCellStyleInput, o as XlsxChart, p as XlsxChartAxis, q as XlsxChartDataLabels, r as XlsxChartElementSelection, s as XlsxChartLegend, t as XlsxChartPointDataLabel, u as XlsxChartPointStyle, v as XlsxChartReference, w as XlsxChartSeries, x as XlsxChartTypeGroup, y as XlsxChartWall, z as XlsxChartsheet, A as XlsxClipboardData, B as XlsxConditionalColorScaleRule, C as XlsxConditionalDataBarRule, D as XlsxConditionalFormatIcon, E as XlsxConditionalFormatRule, F as XlsxConditionalFormatValueObject, G as XlsxConditionalIconSetRule, H as XlsxConditionalStyledRule, I as XlsxContextMenuAction, J as XlsxContextMenuActionId, K as XlsxContextMenuContext, L as XlsxDataValidation, M as XlsxDrawingLayout, N as XlsxFileSizeLimitExceededError, O as XlsxFormControl, P as XlsxFormControlActionEvent, Q as XlsxFormControlCaption, R as XlsxFormControlCaptionInput, S as XlsxFormControlCaptionRun, T as XlsxFormControlChangeEvent, V as XlsxFormControlInput, W as XlsxFormControlKind, Y as XlsxFormControlKindInput, Z as XlsxFormControlPatch, _ as XlsxFormControlSelectionMode, $ as XlsxFormControlState, a0 as XlsxFormulaTarget, a1 as XlsxFreezePanes, a2 as XlsxHighlightRangeOptions, a3 as XlsxImage, a4 as XlsxImageAnchor, a5 as XlsxImageMarker, a6 as XlsxImageRect, a7 as XlsxImageResizeHandlePosition, a8 as XlsxMergeMode, a9 as XlsxRangeHighlight, aa as XlsxResolvedCellStyle, ab as XlsxShape, ac as XlsxShapeFill, ad as XlsxShapeParagraph, ae as XlsxShapeStroke, af as XlsxShapeTextBox, ag as XlsxShapeTextRun, ah as XlsxSheetData, ai as XlsxSheetThumbnail, aj as XlsxSheetThumbnailResolution, ak as XlsxSheetVisibility, al as XlsxSparkline, am as XlsxTable, an as XlsxTableColumn, ao as XlsxTableSortDirection, ap as XlsxTableSortState, aq as XlsxTableStyleDefinition, ar as XlsxTableStyleInfo, as as XlsxThemePalette, at as XlsxVanillaCellStyleContext, au as XlsxVanillaChartLoadingRenderProps, av as XlsxVanillaContent, aw as XlsxVanillaContextMenuRenderProps, ax as XlsxVanillaFileTooLargeRenderProps, ay as XlsxVanillaFormControlRenderProps, az as XlsxVanillaImageRenderProps, aA as XlsxVanillaStyle, aB as XlsxVanillaViewer, aC as XlsxVanillaViewerOptions, aD as XlsxViewer, aE as XlsxViewerCharts, aF as XlsxViewerController, aG as XlsxViewerEditing, aH as XlsxViewerImages, aI as XlsxViewerSelection, aJ as XlsxViewerTables, aK as XlsxViewerThumbnails, aL as XlsxViewerZoom, aM as XlsxWasmSource, aN as XlsxWorkbookTab, aO as createXlsxViewer, aP as initWasm, aQ as setWasmSource } from './internal-DrXSHYJZ.cjs';
1
+ import { X as XlsxParsedRange } from './internal-trWFv9In.cjs';
2
+ export { U as UseXlsxViewerControllerOptions, a as UseXlsxViewerThumbnailsOptions, b as XlsxActiveCellOverlayRenderProps, c as XlsxCellAddress, d as XlsxCellAlignmentInput, e as XlsxCellBorderEdgeInput, f as XlsxCellBorderStyleInput, g as XlsxCellFillStyleInput, h as XlsxCellFontStyleInput, i as XlsxCellGradientStopInput, j as XlsxCellNumberFormatInput, k as XlsxCellProtectionInput, l as XlsxCellRange, m as XlsxCellStyleColorInput, n as XlsxCellStyleInput, o as XlsxChart, p as XlsxChartAxis, q as XlsxChartDataLabels, r as XlsxChartElementSelection, s as XlsxChartLegend, t as XlsxChartPointDataLabel, u as XlsxChartPointStyle, v as XlsxChartReference, w as XlsxChartSeries, x as XlsxChartTypeGroup, y as XlsxChartWall, z as XlsxChartsheet, A as XlsxClipboardData, B as XlsxConditionalColorScaleRule, C as XlsxConditionalDataBarRule, D as XlsxConditionalFormatIcon, E as XlsxConditionalFormatRule, F as XlsxConditionalFormatValueObject, G as XlsxConditionalIconSetRule, H as XlsxConditionalStyledRule, I as XlsxContextMenuAction, J as XlsxContextMenuActionId, K as XlsxContextMenuContext, L as XlsxDataValidation, M as XlsxDrawingLayout, N as XlsxFileSizeLimitExceededError, O as XlsxFormControl, P as XlsxFormControlActionEvent, Q as XlsxFormControlCaption, R as XlsxFormControlCaptionInput, S as XlsxFormControlCaptionRun, T as XlsxFormControlChangeEvent, V as XlsxFormControlInput, W as XlsxFormControlKind, Y as XlsxFormControlKindInput, Z as XlsxFormControlPatch, _ as XlsxFormControlSelectionMode, $ as XlsxFormControlState, a0 as XlsxFormulaTarget, a1 as XlsxFreezePanes, a2 as XlsxHighlightRangeOptions, a3 as XlsxImage, a4 as XlsxImageAnchor, a5 as XlsxImageMarker, a6 as XlsxImageRect, a7 as XlsxImageResizeHandlePosition, a8 as XlsxMergeMode, a9 as XlsxRangeHighlight, aa as XlsxResolvedCellStyle, ab as XlsxShape, ac as XlsxShapeFill, ad as XlsxShapeParagraph, ae as XlsxShapeStroke, af as XlsxShapeTextBox, ag as XlsxShapeTextRun, ah as XlsxSheetData, ai as XlsxSheetThumbnail, aj as XlsxSheetThumbnailResolution, ak as XlsxSheetVisibility, al as XlsxSparkline, am as XlsxTable, an as XlsxTableColumn, ao as XlsxTableSortDirection, ap as XlsxTableSortState, aq as XlsxTableStyleDefinition, ar as XlsxTableStyleInfo, as as XlsxThemePalette, at as XlsxVanillaCellStyleContext, au as XlsxVanillaChartLoadingRenderProps, av as XlsxVanillaContent, aw as XlsxVanillaContextMenuRenderProps, ax as XlsxVanillaFileTooLargeRenderProps, ay as XlsxVanillaFormControlRenderProps, az as XlsxVanillaImageRenderProps, aA as XlsxVanillaStyle, aB as XlsxVanillaViewer, aC as XlsxVanillaViewerOptions, aD as XlsxViewer, aE as XlsxViewerCharts, aF as XlsxViewerController, aG as XlsxViewerEditing, aH as XlsxViewerImages, aI as XlsxViewerSelection, aJ as XlsxViewerTables, aK as XlsxViewerThumbnails, aL as XlsxViewerZoom, aM as XlsxWasmSource, aN as XlsxWorkbookTab, aO as createXlsxViewer, aP as initWasm, aQ as setWasmSource } from './internal-trWFv9In.cjs';
3
3
  import '@dukelib/sheets-wasm';
4
4
  import 'csstype';
5
5
 
package/dist/vanilla.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { X as XlsxParsedRange } from './internal-DrXSHYJZ.js';
2
- export { U as UseXlsxViewerControllerOptions, a as UseXlsxViewerThumbnailsOptions, b as XlsxActiveCellOverlayRenderProps, c as XlsxCellAddress, d as XlsxCellAlignmentInput, e as XlsxCellBorderEdgeInput, f as XlsxCellBorderStyleInput, g as XlsxCellFillStyleInput, h as XlsxCellFontStyleInput, i as XlsxCellGradientStopInput, j as XlsxCellNumberFormatInput, k as XlsxCellProtectionInput, l as XlsxCellRange, m as XlsxCellStyleColorInput, n as XlsxCellStyleInput, o as XlsxChart, p as XlsxChartAxis, q as XlsxChartDataLabels, r as XlsxChartElementSelection, s as XlsxChartLegend, t as XlsxChartPointDataLabel, u as XlsxChartPointStyle, v as XlsxChartReference, w as XlsxChartSeries, x as XlsxChartTypeGroup, y as XlsxChartWall, z as XlsxChartsheet, A as XlsxClipboardData, B as XlsxConditionalColorScaleRule, C as XlsxConditionalDataBarRule, D as XlsxConditionalFormatIcon, E as XlsxConditionalFormatRule, F as XlsxConditionalFormatValueObject, G as XlsxConditionalIconSetRule, H as XlsxConditionalStyledRule, I as XlsxContextMenuAction, J as XlsxContextMenuActionId, K as XlsxContextMenuContext, L as XlsxDataValidation, M as XlsxDrawingLayout, N as XlsxFileSizeLimitExceededError, O as XlsxFormControl, P as XlsxFormControlActionEvent, Q as XlsxFormControlCaption, R as XlsxFormControlCaptionInput, S as XlsxFormControlCaptionRun, T as XlsxFormControlChangeEvent, V as XlsxFormControlInput, W as XlsxFormControlKind, Y as XlsxFormControlKindInput, Z as XlsxFormControlPatch, _ as XlsxFormControlSelectionMode, $ as XlsxFormControlState, a0 as XlsxFormulaTarget, a1 as XlsxFreezePanes, a2 as XlsxHighlightRangeOptions, a3 as XlsxImage, a4 as XlsxImageAnchor, a5 as XlsxImageMarker, a6 as XlsxImageRect, a7 as XlsxImageResizeHandlePosition, a8 as XlsxMergeMode, a9 as XlsxRangeHighlight, aa as XlsxResolvedCellStyle, ab as XlsxShape, ac as XlsxShapeFill, ad as XlsxShapeParagraph, ae as XlsxShapeStroke, af as XlsxShapeTextBox, ag as XlsxShapeTextRun, ah as XlsxSheetData, ai as XlsxSheetThumbnail, aj as XlsxSheetThumbnailResolution, ak as XlsxSheetVisibility, al as XlsxSparkline, am as XlsxTable, an as XlsxTableColumn, ao as XlsxTableSortDirection, ap as XlsxTableSortState, aq as XlsxTableStyleDefinition, ar as XlsxTableStyleInfo, as as XlsxThemePalette, at as XlsxVanillaCellStyleContext, au as XlsxVanillaChartLoadingRenderProps, av as XlsxVanillaContent, aw as XlsxVanillaContextMenuRenderProps, ax as XlsxVanillaFileTooLargeRenderProps, ay as XlsxVanillaFormControlRenderProps, az as XlsxVanillaImageRenderProps, aA as XlsxVanillaStyle, aB as XlsxVanillaViewer, aC as XlsxVanillaViewerOptions, aD as XlsxViewer, aE as XlsxViewerCharts, aF as XlsxViewerController, aG as XlsxViewerEditing, aH as XlsxViewerImages, aI as XlsxViewerSelection, aJ as XlsxViewerTables, aK as XlsxViewerThumbnails, aL as XlsxViewerZoom, aM as XlsxWasmSource, aN as XlsxWorkbookTab, aO as createXlsxViewer, aP as initWasm, aQ as setWasmSource } from './internal-DrXSHYJZ.js';
1
+ import { X as XlsxParsedRange } from './internal-trWFv9In.js';
2
+ export { U as UseXlsxViewerControllerOptions, a as UseXlsxViewerThumbnailsOptions, b as XlsxActiveCellOverlayRenderProps, c as XlsxCellAddress, d as XlsxCellAlignmentInput, e as XlsxCellBorderEdgeInput, f as XlsxCellBorderStyleInput, g as XlsxCellFillStyleInput, h as XlsxCellFontStyleInput, i as XlsxCellGradientStopInput, j as XlsxCellNumberFormatInput, k as XlsxCellProtectionInput, l as XlsxCellRange, m as XlsxCellStyleColorInput, n as XlsxCellStyleInput, o as XlsxChart, p as XlsxChartAxis, q as XlsxChartDataLabels, r as XlsxChartElementSelection, s as XlsxChartLegend, t as XlsxChartPointDataLabel, u as XlsxChartPointStyle, v as XlsxChartReference, w as XlsxChartSeries, x as XlsxChartTypeGroup, y as XlsxChartWall, z as XlsxChartsheet, A as XlsxClipboardData, B as XlsxConditionalColorScaleRule, C as XlsxConditionalDataBarRule, D as XlsxConditionalFormatIcon, E as XlsxConditionalFormatRule, F as XlsxConditionalFormatValueObject, G as XlsxConditionalIconSetRule, H as XlsxConditionalStyledRule, I as XlsxContextMenuAction, J as XlsxContextMenuActionId, K as XlsxContextMenuContext, L as XlsxDataValidation, M as XlsxDrawingLayout, N as XlsxFileSizeLimitExceededError, O as XlsxFormControl, P as XlsxFormControlActionEvent, Q as XlsxFormControlCaption, R as XlsxFormControlCaptionInput, S as XlsxFormControlCaptionRun, T as XlsxFormControlChangeEvent, V as XlsxFormControlInput, W as XlsxFormControlKind, Y as XlsxFormControlKindInput, Z as XlsxFormControlPatch, _ as XlsxFormControlSelectionMode, $ as XlsxFormControlState, a0 as XlsxFormulaTarget, a1 as XlsxFreezePanes, a2 as XlsxHighlightRangeOptions, a3 as XlsxImage, a4 as XlsxImageAnchor, a5 as XlsxImageMarker, a6 as XlsxImageRect, a7 as XlsxImageResizeHandlePosition, a8 as XlsxMergeMode, a9 as XlsxRangeHighlight, aa as XlsxResolvedCellStyle, ab as XlsxShape, ac as XlsxShapeFill, ad as XlsxShapeParagraph, ae as XlsxShapeStroke, af as XlsxShapeTextBox, ag as XlsxShapeTextRun, ah as XlsxSheetData, ai as XlsxSheetThumbnail, aj as XlsxSheetThumbnailResolution, ak as XlsxSheetVisibility, al as XlsxSparkline, am as XlsxTable, an as XlsxTableColumn, ao as XlsxTableSortDirection, ap as XlsxTableSortState, aq as XlsxTableStyleDefinition, ar as XlsxTableStyleInfo, as as XlsxThemePalette, at as XlsxVanillaCellStyleContext, au as XlsxVanillaChartLoadingRenderProps, av as XlsxVanillaContent, aw as XlsxVanillaContextMenuRenderProps, ax as XlsxVanillaFileTooLargeRenderProps, ay as XlsxVanillaFormControlRenderProps, az as XlsxVanillaImageRenderProps, aA as XlsxVanillaStyle, aB as XlsxVanillaViewer, aC as XlsxVanillaViewerOptions, aD as XlsxViewer, aE as XlsxViewerCharts, aF as XlsxViewerController, aG as XlsxViewerEditing, aH as XlsxViewerImages, aI as XlsxViewerSelection, aJ as XlsxViewerTables, aK as XlsxViewerThumbnails, aL as XlsxViewerZoom, aM as XlsxWasmSource, aN as XlsxWorkbookTab, aO as createXlsxViewer, aP as initWasm, aQ as setWasmSource } from './internal-trWFv9In.js';
3
3
  import '@dukelib/sheets-wasm';
4
4
  import 'csstype';
5
5
 
package/dist/vanilla.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  initWasm,
6
6
  parseXlsxRange,
7
7
  setWasmSource
8
- } from "./chunk-QN3D3JS2.js";
8
+ } from "./chunk-GXJO6CK6.js";
9
9
  import "./chunk-WSQDFXDW.js";
10
10
  import "./chunk-NBH72POD.js";
11
11
  export {
@@ -2382,6 +2382,71 @@ var init_duke_sheets_wasm = __esm({
2382
2382
  }
2383
2383
  });
2384
2384
 
2385
+ // src/number-locale.ts
2386
+ var separators = /* @__PURE__ */ new Map();
2387
+ function localizeCellNumber(worksheet, row, col, text, locale = "en-US") {
2388
+ if (locale === "en-US" || !text) return text;
2389
+ const value = worksheet.getCalculatedValueAt(row, col);
2390
+ try {
2391
+ if (!value.is_number) return text;
2392
+ } finally {
2393
+ value.free();
2394
+ }
2395
+ const style = worksheet.getCellStyleAt(row, col);
2396
+ const format = style?.numberFormat;
2397
+ if (format?.isDateFormat) return text;
2398
+ let symbols = separators.get(locale);
2399
+ if (!symbols) {
2400
+ const parts = new Intl.NumberFormat(locale).formatToParts(12345.6);
2401
+ symbols = {
2402
+ decimal: parts.find((part) => part.type === "decimal")?.value ?? ".",
2403
+ group: parts.find((part) => part.type === "group")?.value ?? ","
2404
+ };
2405
+ if (separators.size >= 100) separators.clear();
2406
+ separators.set(locale, symbols);
2407
+ }
2408
+ if (symbols.decimal === "." && symbols.group === ",") return text;
2409
+ const protectedPositions = /* @__PURE__ */ new Set();
2410
+ const code = format?.formatString ?? "";
2411
+ const literalPattern = /"[^"]*"|\\.|\[[^\]]*\]/g;
2412
+ const firstPlaceholder = code.replace(literalPattern, (token) => " ".repeat(token.length)).search(/[0#?]/);
2413
+ const literals = [...code.matchAll(literalPattern)];
2414
+ let suffixEnd = text.length;
2415
+ let prefixStart = 0;
2416
+ const protect = (token, suffix) => {
2417
+ const literal = token.startsWith('"') ? token.slice(1, -1) : token.startsWith("\\") ? token.slice(1) : token.startsWith("[$") ? token.slice(2, -1).split("-")[0] : "";
2418
+ if (!literal) return;
2419
+ const offset = suffix ? text.lastIndexOf(literal, suffixEnd - literal.length) : text.indexOf(literal, prefixStart);
2420
+ if (offset >= 0) {
2421
+ for (let i = offset; i < offset + literal.length; i++) protectedPositions.add(i);
2422
+ if (suffix) suffixEnd = offset;
2423
+ else prefixStart = offset + literal.length;
2424
+ }
2425
+ };
2426
+ for (const token of literals.filter((token2) => token2.index < firstPlaceholder)) protect(token[0], false);
2427
+ for (const token of literals.filter((token2) => token2.index >= firstPlaceholder).reverse()) protect(token[0], true);
2428
+ return text.replace(
2429
+ /\d[\d,]*(?:\.\d*)?|\.\d+/g,
2430
+ (number, offset) => number.replace(/[.,]/g, (separator, index) => protectedPositions.has(offset + index) ? separator : separator === "." ? symbols.decimal : symbols.group)
2431
+ );
2432
+ }
2433
+ function localizeRows(worksheet, rows, locale = "en-US") {
2434
+ if (locale === "en-US" || !Array.isArray(rows)) return;
2435
+ for (const row of rows) {
2436
+ for (const cell of row.cells ?? []) {
2437
+ if (!cell.isMergedSecondary && typeof cell.value === "string") {
2438
+ const value = worksheet.getCalculatedValueAt(row.index, cell.col);
2439
+ try {
2440
+ cell.numericValue = value.is_number ? value.asNumber() : null;
2441
+ } finally {
2442
+ value.free();
2443
+ }
2444
+ cell.value = localizeCellNumber(worksheet, row.index, cell.col, cell.value, locale);
2445
+ }
2446
+ }
2447
+ }
2448
+ }
2449
+
2385
2450
  // ../../node_modules/.pnpm/fflate@0.8.3/node_modules/fflate/esm/browser.js
2386
2451
  var u8 = Uint8Array;
2387
2452
  var u16 = Uint16Array;
@@ -8280,7 +8345,7 @@ async function handleMessage(message) {
8280
8345
  const targetSheet = sheets.find((sheet) => sheet.workbookSheetIndex === message.payload.workbookSheetIndex) ?? null;
8281
8346
  const worksheet = workbook.getSheet(message.payload.workbookSheetIndex);
8282
8347
  return {
8283
- displayValue: getCellDisplayValue(worksheet, message.payload.row, message.payload.col, targetSheet),
8348
+ displayValue: localizeCellNumber(worksheet, message.payload.row, message.payload.col, getCellDisplayValue(worksheet, message.payload.row, message.payload.col, targetSheet), message.payload.locale),
8284
8349
  formula: worksheet.getFormulaAt(message.payload.row, message.payload.col) ?? ""
8285
8350
  };
8286
8351
  }
@@ -8306,6 +8371,7 @@ async function handleMessage(message) {
8306
8371
  }
8307
8372
  }
8308
8373
  }
8374
+ localizeRows(worksheet, rows, message.payload.locale);
8309
8375
  return rows;
8310
8376
  }
8311
8377
  default: