@extend-ai/react-xlsx 0.18.1 → 0.20.0

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 (72) hide show
  1. package/README.md +154 -6
  2. package/dist/chart-renderer-AAVZ34BF.cjs +5048 -0
  3. package/dist/chart-renderer-AAVZ34BF.cjs.map +1 -0
  4. package/dist/{chart-renderer-HQSQHDCB.js → chart-renderer-KGLAI4DN.js} +25 -20
  5. package/dist/chart-renderer-KGLAI4DN.js.map +1 -0
  6. package/dist/{chart-renderer-ZUWRNNZT.cjs → chart-renderer-NM5UVCTO.cjs} +44 -39
  7. package/dist/chart-renderer-NM5UVCTO.cjs.map +1 -0
  8. package/dist/chart-renderer-RXO7WP4Q.js +5047 -0
  9. package/dist/chart-renderer-RXO7WP4Q.js.map +1 -0
  10. package/dist/chunk-2YBG7XQ3.cjs +26981 -0
  11. package/dist/chunk-2YBG7XQ3.cjs.map +1 -0
  12. package/dist/chunk-3JTCYAUX.js +50 -0
  13. package/dist/{chunk-OZLJPZUX.js.map → chunk-3JTCYAUX.js.map} +1 -1
  14. package/dist/chunk-6K3NSKDJ.cjs +50 -0
  15. package/dist/chunk-6K3NSKDJ.cjs.map +1 -0
  16. package/dist/chunk-CJBI5F6V.cjs +816 -0
  17. package/dist/chunk-CJBI5F6V.cjs.map +1 -0
  18. package/dist/{chunk-WFQGZI2Z.cjs → chunk-MCFUTO4J.cjs} +12 -8
  19. package/dist/chunk-MCFUTO4J.cjs.map +1 -0
  20. package/dist/chunk-NBH72POD.js +816 -0
  21. package/dist/chunk-NBH72POD.js.map +1 -0
  22. package/dist/{chunk-E2VSYCP2.cjs → chunk-O3V2MCOC.cjs} +18 -2
  23. package/dist/chunk-O3V2MCOC.cjs.map +1 -0
  24. package/dist/chunk-QN3D3JS2.js +26978 -0
  25. package/dist/chunk-QN3D3JS2.js.map +1 -0
  26. package/dist/{chunk-FO6MIHX4.cjs → chunk-T5WZHPIN.cjs} +2 -2
  27. package/dist/{chunk-FO6MIHX4.cjs.map → chunk-T5WZHPIN.cjs.map} +1 -1
  28. package/dist/{chunk-BAAMDEDS.js → chunk-VXBNYHW5.js} +18 -2
  29. package/dist/{chunk-BAAMDEDS.js.map → chunk-VXBNYHW5.js.map} +1 -1
  30. package/dist/{chunk-OZLJPZUX.js → chunk-WSQDFXDW.js} +10 -6
  31. package/dist/chunk-WSQDFXDW.js.map +1 -0
  32. package/dist/index.cjs +600 -11270
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +5 -14
  35. package/dist/index.d.ts +5 -14
  36. package/dist/index.js +479 -11149
  37. package/dist/index.js.map +1 -1
  38. package/dist/internal-DrXSHYJZ.d.cts +1498 -0
  39. package/dist/internal-DrXSHYJZ.d.ts +1498 -0
  40. package/dist/internal.cjs +24 -0
  41. package/dist/internal.cjs.map +1 -0
  42. package/dist/internal.d.cts +3 -0
  43. package/dist/internal.d.ts +3 -0
  44. package/dist/internal.js +23 -0
  45. package/dist/internal.js.map +1 -0
  46. package/dist/{region-map-geography-5E5SVPGS.cjs → region-map-geography-6TGXBY3V.cjs} +2 -2
  47. package/dist/{region-map-geography-5E5SVPGS.cjs.map → region-map-geography-6TGXBY3V.cjs.map} +1 -1
  48. package/dist/{spreadsheet-font-assets-7QMV43XD.cjs → spreadsheet-font-assets-4AHYDTAQ.cjs} +2 -2
  49. package/dist/{spreadsheet-font-assets-7QMV43XD.cjs.map → spreadsheet-font-assets-4AHYDTAQ.cjs.map} +1 -1
  50. package/dist/{surface-regl-WVLW3SEA.cjs → surface-regl-5Z6IVOID.cjs} +18 -15
  51. package/dist/surface-regl-5Z6IVOID.cjs.map +1 -0
  52. package/dist/{surface-regl-NWR5ZZ5D.js → surface-regl-7CDGGVDG.js} +10 -7
  53. package/dist/surface-regl-7CDGGVDG.js.map +1 -0
  54. package/dist/surface-regl-AY7JZVYY.cjs +727 -0
  55. package/dist/surface-regl-AY7JZVYY.cjs.map +1 -0
  56. package/dist/surface-regl-TJUWTLAZ.js +726 -0
  57. package/dist/surface-regl-TJUWTLAZ.js.map +1 -0
  58. package/dist/vanilla.cjs +20 -0
  59. package/dist/vanilla.cjs.map +1 -0
  60. package/dist/vanilla.d.cts +9 -0
  61. package/dist/vanilla.d.ts +9 -0
  62. package/dist/vanilla.js +19 -0
  63. package/dist/vanilla.js.map +1 -0
  64. package/dist/xlsx-worker.js +2888 -34
  65. package/dist/xlsx-worker.js.map +1 -1
  66. package/package.json +23 -3
  67. package/dist/chart-renderer-HQSQHDCB.js.map +0 -1
  68. package/dist/chart-renderer-ZUWRNNZT.cjs.map +0 -1
  69. package/dist/chunk-E2VSYCP2.cjs.map +0 -1
  70. package/dist/chunk-WFQGZI2Z.cjs.map +0 -1
  71. package/dist/surface-regl-NWR5ZZ5D.js.map +0 -1
  72. package/dist/surface-regl-WVLW3SEA.cjs.map +0 -1
@@ -1,8 +1,8 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.15_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.31_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js
2
2
  var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
3
3
  var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
4
4
 
5
5
 
6
6
 
7
7
  exports.importMetaUrl = importMetaUrl;
8
- //# sourceMappingURL=chunk-FO6MIHX4.cjs.map
8
+ //# sourceMappingURL=chunk-T5WZHPIN.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/chunk-FO6MIHX4.cjs","../../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.15_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js"],"names":[],"mappings":"AAAA;ACKA,IAAM,iBAAA,EAAmB,CAAA,EAAA,GACvB,OAAO,SAAA,IAAa,YAAA,EAChB,IAAI,GAAA,CAAI,CAAA,KAAA,EAAQ,UAAU,CAAA,CAAA;AAK8B;ADT4B;AACA;AACA;AACA","file":"/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/chunk-FO6MIHX4.cjs","sourcesContent":[null,"// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n"]}
1
+ {"version":3,"sources":["/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/chunk-T5WZHPIN.cjs","../../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.31_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js"],"names":[],"mappings":"AAAA;ACKA,IAAM,iBAAA,EAAmB,CAAA,EAAA,GACvB,OAAO,SAAA,IAAa,YAAA,EAChB,IAAI,GAAA,CAAI,CAAA,KAAA,EAAQ,UAAU,CAAA,CAAA;AAK8B;ADT4B;AACA;AACA;AACA","file":"/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/chunk-T5WZHPIN.cjs","sourcesContent":[null,"// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n"]}
@@ -90,6 +90,22 @@ function surfaceBandEdges(polygon, triangle) {
90
90
  return onDiagonal(from) && onDiagonal(to) || from.x === to.x && from.y === to.y ? [] : [[from, to]];
91
91
  });
92
92
  }
93
+ function groupSurfaceBandEdges(polygon, triangle, band, lower, wireframe) {
94
+ const edges = surfaceBandEdges(polygon, triangle);
95
+ const currentEdges = [];
96
+ const lowerBoundaryEdges = [];
97
+ for (const edge of edges) {
98
+ if (wireframe && band > 0 && edge[0].value === lower && edge[1].value === lower) {
99
+ lowerBoundaryEdges.push(edge);
100
+ } else {
101
+ currentEdges.push(edge);
102
+ }
103
+ }
104
+ return [
105
+ ...currentEdges.length > 0 ? [{ band, edges: currentEdges }] : [],
106
+ ...lowerBoundaryEdges.length > 0 ? [{ band: band - 1, edges: lowerBoundaryEdges }] : []
107
+ ];
108
+ }
93
109
 
94
110
  export {
95
111
  surfaceNormal,
@@ -99,6 +115,6 @@ export {
99
115
  normalizeSurfaceValue,
100
116
  triangulateSurfaceQuad,
101
117
  clipSurfaceBand,
102
- surfaceBandEdges
118
+ groupSurfaceBandEdges
103
119
  };
104
- //# sourceMappingURL=chunk-BAAMDEDS.js.map
120
+ //# sourceMappingURL=chunk-VXBNYHW5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/surface-lighting.ts","../src/surface-geometry.ts"],"sourcesContent":["export type SurfaceVector = { x: number; y: number; z: number };\n\nexport function surfaceNormal(a: SurfaceVector, b: SurfaceVector, c: SurfaceVector): SurfaceVector {\n const ux = b.x - a.x;\n const uy = b.y - a.y;\n const uz = b.z - a.z;\n const vx = c.x - a.x;\n const vy = c.y - a.y;\n const vz = c.z - a.z;\n const x = uy * vz - uz * vy;\n const y = uz * vx - ux * vz;\n const z = ux * vy - uy * vx;\n const length = Math.hypot(x, y, z) || 1;\n return { x: x / length, y: y / length, z: z / length };\n}\n\nexport function transformSurfaceNormal(normal: SurfaceVector, rotX: number, rotY: number, rightAngleAxes = false): SurfaceVector {\n const xAngle = rightAngleAxes ? 0 : rotX * Math.PI / 180;\n const yAngle = rightAngleAxes ? 0 : rotY * Math.PI / 180;\n const cx = Math.cos(xAngle);\n const sx = Math.sin(xAngle);\n const cy = Math.cos(yAngle);\n const sy = Math.sin(yAngle);\n const x = -cy * normal.x + sy * normal.z;\n const y = sy * sx * normal.x + cx * normal.y + cy * sx * normal.z;\n const z = sy * cx * normal.x - sx * normal.y + cy * cx * normal.z;\n const facing = rightAngleAxes\n ? z - x * Math.sin(rotY * Math.PI / 180) - y * Math.sin(rotX * Math.PI / 180)\n : z;\n const length = (Math.hypot(x, y, z) || 1) * (facing > 0 ? -1 : 1);\n return { x: x / length, y: y / length, z: z / length };\n}\n\nexport function shadeSurfaceMatteColor(color: string, normal: SurfaceVector) {\n const hex = color.replace(/^#/, \"\");\n if (!/^[0-9a-f]{6}$/i.test(hex)) return color;\n const diffuse = Math.max(0, Math.min(1, (normal.x + normal.y - normal.z) / Math.sqrt(3)));\n const intensity = 0.4 + 0.75 * diffuse;\n return `#${[0, 2, 4].map((offset) => Math.min(255, Math.floor(Number.parseInt(hex.slice(offset, offset + 2), 16) * intensity)).toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\n","import type { XlsxChartAxis } from \"./types\";\n\nexport type SurfaceBandPoint = { x: number; y: number; value: number };\n\nexport function surfaceHeightRatio(heightPercent: number | undefined, plot: { width: number; height: number }) {\n return heightPercent != null && Number.isFinite(heightPercent) && heightPercent > 0\n ? heightPercent / 100\n : plot.height / Math.max(1, plot.width);\n}\n\nexport function surfaceDataRatios(rows: number, columns: number, betweenCategories: boolean, heightPercent: number | undefined, depthPercent: number | undefined, plot: { width: number; height: number }) {\n const columnCount = Math.max(1, columns);\n const dataFraction = betweenCategories && columnCount > 1 ? (columnCount - 1) / columnCount : 1;\n return {\n height: Math.floor((columnCount + Math.max(1, rows) - (betweenCategories ? 0 : 1)) / 2) / columnCount / dataFraction * surfaceHeightRatio(heightPercent, plot),\n depth: Math.max(0.01, Math.max(1, rows) / columnCount * (depthPercent ?? 100) / 100) / dataFraction\n };\n}\n\nexport function scaleSurfaceValue(value: number, axis?: XlsxChartAxis | null) {\n const scaled = axis?.logBase != null && axis.logBase > 1\n ? Math.log(Math.max(Number.MIN_VALUE, value)) / Math.log(axis.logBase)\n : value;\n return axis?.orientation === \"maxMin\" ? -scaled : scaled;\n}\n\nexport function normalizeSurfaceValue(value: number, min: number, max: number, axis?: XlsxChartAxis | null) {\n const start = scaleSurfaceValue(min, axis);\n const end = scaleSurfaceValue(max, axis);\n const lower = Math.min(start, end);\n const span = Math.abs(end - start);\n return span > 0 ? (scaleSurfaceValue(value, axis) - lower) / span : 0.5;\n}\n\nexport function triangulateSurfaceQuad<T extends { value: number }>(corners: [T, T, T, T], axis?: XlsxChartAxis | null): Array<[T, T, T]> {\n const heights = corners.map((point) => -scaleSurfaceValue(point.value, axis));\n return heights[0] * 0.5 + heights[2] * 0.5 > heights[1] * 0.5 + heights[3] * 0.5\n ? [[corners[3], corners[0], corners[1]], [corners[1], corners[2], corners[3]]]\n : [[corners[2], corners[3], corners[0]], [corners[0], corners[1], corners[2]]];\n}\n\nexport function clipSurfaceBand(points: SurfaceBandPoint[], threshold: number, keepAbove: boolean, axis?: XlsxChartAxis | null, includeBoundary = true) {\n const result: SurfaceBandPoint[] = [];\n points.forEach((end, index) => {\n const start = points[(index + points.length - 1) % points.length];\n const startInside = keepAbove ? start.value >= threshold : start.value <= threshold;\n const endInside = keepAbove ? end.value >= threshold : end.value <= threshold;\n if (startInside !== endInside) {\n const startValue = scaleSurfaceValue(start.value, axis);\n const ratio = (scaleSurfaceValue(threshold, axis) - startValue) / (scaleSurfaceValue(end.value, axis) - startValue);\n result.push({ value: threshold, x: start.x + (end.x - start.x) * ratio, y: start.y + (end.y - start.y) * ratio });\n }\n if (endInside) {\n result.push(end);\n }\n });\n return !includeBoundary && result.every((point) => point.value === threshold) ? [] : result;\n}\n\nexport function surfaceBandEdges(polygon: SurfaceBandPoint[], triangle: [SurfaceBandPoint, SurfaceBandPoint, SurfaceBandPoint]) {\n const start = triangle[2];\n const end = triangle[0];\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const tolerance = 1e-9 * Math.max(1, dx * dx + dy * dy);\n const onDiagonal = (point: SurfaceBandPoint) => Math.abs((point.x - start.x) * dy - (point.y - start.y) * dx) <= tolerance;\n return polygon.flatMap((from, index): Array<[SurfaceBandPoint, SurfaceBandPoint]> => {\n const to = polygon[(index + 1) % polygon.length];\n return (onDiagonal(from) && onDiagonal(to)) || (from.x === to.x && from.y === to.y)\n ? []\n : [[from, to]];\n });\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/surface-lighting.ts","../src/surface-geometry.ts"],"sourcesContent":["export type SurfaceVector = { x: number; y: number; z: number };\n\nexport function surfaceNormal(a: SurfaceVector, b: SurfaceVector, c: SurfaceVector): SurfaceVector {\n const ux = b.x - a.x;\n const uy = b.y - a.y;\n const uz = b.z - a.z;\n const vx = c.x - a.x;\n const vy = c.y - a.y;\n const vz = c.z - a.z;\n const x = uy * vz - uz * vy;\n const y = uz * vx - ux * vz;\n const z = ux * vy - uy * vx;\n const length = Math.hypot(x, y, z) || 1;\n return { x: x / length, y: y / length, z: z / length };\n}\n\nexport function transformSurfaceNormal(normal: SurfaceVector, rotX: number, rotY: number, rightAngleAxes = false): SurfaceVector {\n const xAngle = rightAngleAxes ? 0 : rotX * Math.PI / 180;\n const yAngle = rightAngleAxes ? 0 : rotY * Math.PI / 180;\n const cx = Math.cos(xAngle);\n const sx = Math.sin(xAngle);\n const cy = Math.cos(yAngle);\n const sy = Math.sin(yAngle);\n const x = -cy * normal.x + sy * normal.z;\n const y = sy * sx * normal.x + cx * normal.y + cy * sx * normal.z;\n const z = sy * cx * normal.x - sx * normal.y + cy * cx * normal.z;\n const facing = rightAngleAxes\n ? z - x * Math.sin(rotY * Math.PI / 180) - y * Math.sin(rotX * Math.PI / 180)\n : z;\n const length = (Math.hypot(x, y, z) || 1) * (facing > 0 ? -1 : 1);\n return { x: x / length, y: y / length, z: z / length };\n}\n\nexport function shadeSurfaceMatteColor(color: string, normal: SurfaceVector) {\n const hex = color.replace(/^#/, \"\");\n if (!/^[0-9a-f]{6}$/i.test(hex)) return color;\n const diffuse = Math.max(0, Math.min(1, (normal.x + normal.y - normal.z) / Math.sqrt(3)));\n const intensity = 0.4 + 0.75 * diffuse;\n return `#${[0, 2, 4].map((offset) => Math.min(255, Math.floor(Number.parseInt(hex.slice(offset, offset + 2), 16) * intensity)).toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\n","import type { XlsxChartAxis } from \"./types\";\n\nexport type SurfaceBandPoint = { x: number; y: number; value: number };\n\nexport function surfaceHeightRatio(heightPercent: number | undefined, plot: { width: number; height: number }) {\n return heightPercent != null && Number.isFinite(heightPercent) && heightPercent > 0\n ? heightPercent / 100\n : plot.height / Math.max(1, plot.width);\n}\n\nexport function surfaceDataRatios(rows: number, columns: number, betweenCategories: boolean, heightPercent: number | undefined, depthPercent: number | undefined, plot: { width: number; height: number }) {\n const columnCount = Math.max(1, columns);\n const dataFraction = betweenCategories && columnCount > 1 ? (columnCount - 1) / columnCount : 1;\n return {\n height: Math.floor((columnCount + Math.max(1, rows) - (betweenCategories ? 0 : 1)) / 2) / columnCount / dataFraction * surfaceHeightRatio(heightPercent, plot),\n depth: Math.max(0.01, Math.max(1, rows) / columnCount * (depthPercent ?? 100) / 100) / dataFraction\n };\n}\n\nexport function scaleSurfaceValue(value: number, axis?: XlsxChartAxis | null) {\n const scaled = axis?.logBase != null && axis.logBase > 1\n ? Math.log(Math.max(Number.MIN_VALUE, value)) / Math.log(axis.logBase)\n : value;\n return axis?.orientation === \"maxMin\" ? -scaled : scaled;\n}\n\nexport function normalizeSurfaceValue(value: number, min: number, max: number, axis?: XlsxChartAxis | null) {\n const start = scaleSurfaceValue(min, axis);\n const end = scaleSurfaceValue(max, axis);\n const lower = Math.min(start, end);\n const span = Math.abs(end - start);\n return span > 0 ? (scaleSurfaceValue(value, axis) - lower) / span : 0.5;\n}\n\nexport function triangulateSurfaceQuad<T extends { value: number }>(corners: [T, T, T, T], axis?: XlsxChartAxis | null): Array<[T, T, T]> {\n const heights = corners.map((point) => -scaleSurfaceValue(point.value, axis));\n return heights[0] * 0.5 + heights[2] * 0.5 > heights[1] * 0.5 + heights[3] * 0.5\n ? [[corners[3], corners[0], corners[1]], [corners[1], corners[2], corners[3]]]\n : [[corners[2], corners[3], corners[0]], [corners[0], corners[1], corners[2]]];\n}\n\nexport function clipSurfaceBand(points: SurfaceBandPoint[], threshold: number, keepAbove: boolean, axis?: XlsxChartAxis | null, includeBoundary = true) {\n const result: SurfaceBandPoint[] = [];\n points.forEach((end, index) => {\n const start = points[(index + points.length - 1) % points.length];\n const startInside = keepAbove ? start.value >= threshold : start.value <= threshold;\n const endInside = keepAbove ? end.value >= threshold : end.value <= threshold;\n if (startInside !== endInside) {\n const startValue = scaleSurfaceValue(start.value, axis);\n const ratio = (scaleSurfaceValue(threshold, axis) - startValue) / (scaleSurfaceValue(end.value, axis) - startValue);\n result.push({ value: threshold, x: start.x + (end.x - start.x) * ratio, y: start.y + (end.y - start.y) * ratio });\n }\n if (endInside) {\n result.push(end);\n }\n });\n return !includeBoundary && result.every((point) => point.value === threshold) ? [] : result;\n}\n\nexport function surfaceBandEdges(polygon: SurfaceBandPoint[], triangle: [SurfaceBandPoint, SurfaceBandPoint, SurfaceBandPoint]) {\n const start = triangle[2];\n const end = triangle[0];\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const tolerance = 1e-9 * Math.max(1, dx * dx + dy * dy);\n const onDiagonal = (point: SurfaceBandPoint) => Math.abs((point.x - start.x) * dy - (point.y - start.y) * dx) <= tolerance;\n return polygon.flatMap((from, index): Array<[SurfaceBandPoint, SurfaceBandPoint]> => {\n const to = polygon[(index + 1) % polygon.length];\n return (onDiagonal(from) && onDiagonal(to)) || (from.x === to.x && from.y === to.y)\n ? []\n : [[from, to]];\n });\n}\n\nexport function groupSurfaceBandEdges(\n polygon: SurfaceBandPoint[],\n triangle: [SurfaceBandPoint, SurfaceBandPoint, SurfaceBandPoint],\n band: number,\n lower: number,\n wireframe: boolean\n) {\n const edges = surfaceBandEdges(polygon, triangle);\n const currentEdges: typeof edges = [];\n const lowerBoundaryEdges: typeof edges = [];\n for (const edge of edges) {\n if (wireframe && band > 0 && edge[0].value === lower && edge[1].value === lower) {\n lowerBoundaryEdges.push(edge);\n } else {\n currentEdges.push(edge);\n }\n }\n return [\n ...(currentEdges.length > 0 ? [{ band, edges: currentEdges }] : []),\n ...(lowerBoundaryEdges.length > 0 ? [{ band: band - 1, edges: lowerBoundaryEdges }] : [])\n ];\n}\n"],"mappings":";AAEO,SAAS,cAAc,GAAkB,GAAkB,GAAiC;AACjG,QAAM,KAAK,EAAE,IAAI,EAAE;AACnB,QAAM,KAAK,EAAE,IAAI,EAAE;AACnB,QAAM,KAAK,EAAE,IAAI,EAAE;AACnB,QAAM,KAAK,EAAE,IAAI,EAAE;AACnB,QAAM,KAAK,EAAE,IAAI,EAAE;AACnB,QAAM,KAAK,EAAE,IAAI,EAAE;AACnB,QAAM,IAAI,KAAK,KAAK,KAAK;AACzB,QAAM,IAAI,KAAK,KAAK,KAAK;AACzB,QAAM,IAAI,KAAK,KAAK,KAAK;AACzB,QAAM,SAAS,KAAK,MAAM,GAAG,GAAG,CAAC,KAAK;AACtC,SAAO,EAAE,GAAG,IAAI,QAAQ,GAAG,IAAI,QAAQ,GAAG,IAAI,OAAO;AACvD;AAEO,SAAS,uBAAuB,QAAuB,MAAc,MAAc,iBAAiB,OAAsB;AAC/H,QAAM,SAAS,iBAAiB,IAAI,OAAO,KAAK,KAAK;AACrD,QAAM,SAAS,iBAAiB,IAAI,OAAO,KAAK,KAAK;AACrD,QAAM,KAAK,KAAK,IAAI,MAAM;AAC1B,QAAM,KAAK,KAAK,IAAI,MAAM;AAC1B,QAAM,KAAK,KAAK,IAAI,MAAM;AAC1B,QAAM,KAAK,KAAK,IAAI,MAAM;AAC1B,QAAM,IAAI,CAAC,KAAK,OAAO,IAAI,KAAK,OAAO;AACvC,QAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO;AAChE,QAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO;AAChE,QAAM,SAAS,iBACX,IAAI,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,GAAG,IAC1E;AACJ,QAAM,UAAU,KAAK,MAAM,GAAG,GAAG,CAAC,KAAK,MAAM,SAAS,IAAI,KAAK;AAC/D,SAAO,EAAE,GAAG,IAAI,QAAQ,GAAG,IAAI,QAAQ,GAAG,IAAI,OAAO;AACvD;AAEO,SAAS,uBAAuB,OAAe,QAAuB;AAC3E,QAAM,MAAM,MAAM,QAAQ,MAAM,EAAE;AAClC,MAAI,CAAC,iBAAiB,KAAK,GAAG,EAAG,QAAO;AACxC,QAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;AACxF,QAAM,YAAY,MAAM,OAAO;AAC/B,SAAO,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI,KAAK,KAAK,MAAM,OAAO,SAAS,IAAI,MAAM,QAAQ,SAAS,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AACxK;;;ACnCO,SAAS,mBAAmB,eAAmC,MAAyC;AAC7G,SAAO,iBAAiB,QAAQ,OAAO,SAAS,aAAa,KAAK,gBAAgB,IAC9E,gBAAgB,MAChB,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,KAAK;AAC1C;AAEO,SAAS,kBAAkB,MAAc,SAAiB,mBAA4B,eAAmC,cAAkC,MAAyC;AACzM,QAAM,cAAc,KAAK,IAAI,GAAG,OAAO;AACvC,QAAM,eAAe,qBAAqB,cAAc,KAAK,cAAc,KAAK,cAAc;AAC9F,SAAO;AAAA,IACL,QAAQ,KAAK,OAAO,cAAc,KAAK,IAAI,GAAG,IAAI,KAAK,oBAAoB,IAAI,MAAM,CAAC,IAAI,cAAc,eAAe,mBAAmB,eAAe,IAAI;AAAA,IAC7J,OAAO,KAAK,IAAI,MAAM,KAAK,IAAI,GAAG,IAAI,IAAI,eAAe,gBAAgB,OAAO,GAAG,IAAI;AAAA,EACzF;AACF;AAEO,SAAS,kBAAkB,OAAe,MAA6B;AAC5E,QAAM,SAAS,MAAM,WAAW,QAAQ,KAAK,UAAU,IACnD,KAAK,IAAI,KAAK,IAAI,OAAO,WAAW,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,OAAO,IACnE;AACJ,SAAO,MAAM,gBAAgB,WAAW,CAAC,SAAS;AACpD;AAEO,SAAS,sBAAsB,OAAe,KAAa,KAAa,MAA6B;AAC1G,QAAM,QAAQ,kBAAkB,KAAK,IAAI;AACzC,QAAM,MAAM,kBAAkB,KAAK,IAAI;AACvC,QAAM,QAAQ,KAAK,IAAI,OAAO,GAAG;AACjC,QAAM,OAAO,KAAK,IAAI,MAAM,KAAK;AACjC,SAAO,OAAO,KAAK,kBAAkB,OAAO,IAAI,IAAI,SAAS,OAAO;AACtE;AAEO,SAAS,uBAAoD,SAAuB,MAA+C;AACxI,QAAM,UAAU,QAAQ,IAAI,CAAC,UAAU,CAAC,kBAAkB,MAAM,OAAO,IAAI,CAAC;AAC5E,SAAO,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,MACzE,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAC3E,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AACjF;AAEO,SAAS,gBAAgB,QAA4B,WAAmB,WAAoB,MAA6B,kBAAkB,MAAM;AACtJ,QAAM,SAA6B,CAAC;AACpC,SAAO,QAAQ,CAAC,KAAK,UAAU;AAC7B,UAAM,QAAQ,QAAQ,QAAQ,OAAO,SAAS,KAAK,OAAO,MAAM;AAChE,UAAM,cAAc,YAAY,MAAM,SAAS,YAAY,MAAM,SAAS;AAC1E,UAAM,YAAY,YAAY,IAAI,SAAS,YAAY,IAAI,SAAS;AACpE,QAAI,gBAAgB,WAAW;AAC7B,YAAM,aAAa,kBAAkB,MAAM,OAAO,IAAI;AACtD,YAAM,SAAS,kBAAkB,WAAW,IAAI,IAAI,eAAe,kBAAkB,IAAI,OAAO,IAAI,IAAI;AACxG,aAAO,KAAK,EAAE,OAAO,WAAW,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,OAAO,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC;AAAA,IAClH;AACA,QAAI,WAAW;AACb,aAAO,KAAK,GAAG;AAAA,IACjB;AAAA,EACF,CAAC;AACD,SAAO,CAAC,mBAAmB,OAAO,MAAM,CAAC,UAAU,MAAM,UAAU,SAAS,IAAI,CAAC,IAAI;AACvF;AAEO,SAAS,iBAAiB,SAA6B,UAAkE;AAC9H,QAAM,QAAQ,SAAS,CAAC;AACxB,QAAM,MAAM,SAAS,CAAC;AACtB,QAAM,KAAK,IAAI,IAAI,MAAM;AACzB,QAAM,KAAK,IAAI,IAAI,MAAM;AACzB,QAAM,YAAY,OAAO,KAAK,IAAI,GAAG,KAAK,KAAK,KAAK,EAAE;AACtD,QAAM,aAAa,CAAC,UAA4B,KAAK,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,IAAI,MAAM,KAAK,EAAE,KAAK;AACjH,SAAO,QAAQ,QAAQ,CAAC,MAAM,UAAuD;AACnF,UAAM,KAAK,SAAS,QAAQ,KAAK,QAAQ,MAAM;AAC/C,WAAQ,WAAW,IAAI,KAAK,WAAW,EAAE,KAAO,KAAK,MAAM,GAAG,KAAK,KAAK,MAAM,GAAG,IAC7E,CAAC,IACD,CAAC,CAAC,MAAM,EAAE,CAAC;AAAA,EACjB,CAAC;AACH;AAEO,SAAS,sBACd,SACA,UACA,MACA,OACA,WACA;AACA,QAAM,QAAQ,iBAAiB,SAAS,QAAQ;AAChD,QAAM,eAA6B,CAAC;AACpC,QAAM,qBAAmC,CAAC;AAC1C,aAAW,QAAQ,OAAO;AACxB,QAAI,aAAa,OAAO,KAAK,KAAK,CAAC,EAAE,UAAU,SAAS,KAAK,CAAC,EAAE,UAAU,OAAO;AAC/E,yBAAmB,KAAK,IAAI;AAAA,IAC9B,OAAO;AACL,mBAAa,KAAK,IAAI;AAAA,IACxB;AAAA,EACF;AACA,SAAO;AAAA,IACL,GAAI,aAAa,SAAS,IAAI,CAAC,EAAE,MAAM,OAAO,aAAa,CAAC,IAAI,CAAC;AAAA,IACjE,GAAI,mBAAmB,SAAS,IAAI,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAC;AAAA,EACzF;AACF;","names":[]}
@@ -1,8 +1,12 @@
1
+ import {
2
+ C2 as C,
3
+ h
4
+ } from "./chunk-NBH72POD.js";
5
+
1
6
  // src/use-chart-module.ts
2
- import * as React from "react";
3
7
  function useChartModule(resource) {
4
- const snapshot = React.useSyncExternalStore(resource.subscribe, resource.getSnapshot, resource.getServerSnapshot);
5
- React.useEffect(() => {
8
+ const snapshot = C(resource.subscribe, resource.getSnapshot, resource.getServerSnapshot);
9
+ h(() => {
6
10
  void resource.load().catch(() => {
7
11
  });
8
12
  }, [resource]);
@@ -38,9 +42,9 @@ function createChartModule(importModule) {
38
42
  }
39
43
  };
40
44
  }
41
- var chartRenderer = createChartModule(() => import("./chart-renderer-HQSQHDCB.js"));
45
+ var chartRenderer = createChartModule(() => import("./chart-renderer-RXO7WP4Q.js"));
42
46
  var regionMapResources = createChartModule(() => import("./region-map-geography-YD54DI3H.js"));
43
- var surfaceRenderer = createChartModule(() => import("./surface-regl-NWR5ZZ5D.js"));
47
+ var surfaceRenderer = createChartModule(() => import("./surface-regl-TJUWTLAZ.js"));
44
48
  function preloadChartRenderers(chartsBySheet) {
45
49
  let hasCharts = false;
46
50
  let hasMaps = false;
@@ -67,4 +71,4 @@ export {
67
71
  surfaceRenderer,
68
72
  preloadChartRenderers
69
73
  };
70
- //# sourceMappingURL=chunk-OZLJPZUX.js.map
74
+ //# sourceMappingURL=chunk-WSQDFXDW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/use-chart-module.ts","../src/chart-loader.ts"],"sourcesContent":["import * as React from \"react\";\nimport type { ChartModule } from \"./chart-loader\";\n\nexport function useChartModule<T>(resource: ChartModule<T>) {\n const snapshot = React.useSyncExternalStore(resource.subscribe, resource.getSnapshot, resource.getServerSnapshot);\n React.useEffect(() => {\n void resource.load().catch(() => {});\n }, [resource]);\n if (snapshot.error) throw snapshot.error;\n return snapshot.module;\n}\n","import type { XlsxChart } from \"./types\";\n\ntype ModuleSnapshot<T> = { module: T | null; error: unknown };\n\nexport type ChartModule<T> = {\n load: () => Promise<T>;\n getSnapshot: () => ModuleSnapshot<T>;\n getServerSnapshot: () => ModuleSnapshot<T>;\n subscribe: (listener: () => void) => () => void;\n};\n\nfunction createChartModule<T>(importModule: () => Promise<T>): ChartModule<T> {\n const initialSnapshot: ModuleSnapshot<T> = { module: null, error: null };\n let snapshot = initialSnapshot;\n let promise: Promise<T> | undefined;\n const listeners = new Set<() => void>();\n const publish = (next: ModuleSnapshot<T>) => {\n snapshot = next;\n listeners.forEach((listener) => listener());\n };\n\n return {\n load: () => promise ??= importModule().then((module) => {\n publish({ module, error: null });\n return module;\n }, (error: unknown) => {\n publish({ module: null, error: error instanceof Error ? error : new Error(\"Unable to load chart module.\") });\n throw error;\n }),\n getSnapshot: () => snapshot,\n getServerSnapshot: () => initialSnapshot,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => { listeners.delete(listener); };\n }\n };\n}\n\nexport const chartRenderer = createChartModule(() => import(\"./chart-renderer\"));\nexport const regionMapResources = createChartModule(() => import(\"./region-map-geography\"));\nexport const surfaceRenderer = createChartModule(() => import(\"./surface-regl\"));\n\nexport function preloadChartRenderers(chartsBySheet: readonly (readonly XlsxChart[])[]) {\n let hasCharts = false;\n let hasMaps = false;\n let hasSurfaces = false;\n for (const charts of chartsBySheet) {\n for (const chart of charts) {\n hasCharts = true;\n hasMaps ||= chart.chartType === \"RegionMap\";\n hasSurfaces ||= chart.chartType === \"Surface\";\n }\n }\n\n if (hasCharts) void chartRenderer.load().catch(() => {});\n if (hasMaps) void regionMapResources.load().catch(() => {});\n if (hasSurfaces) void surfaceRenderer.load().catch(() => {});\n}\n"],"mappings":";;;;;;AAGO,SAAS,eAAkB,UAA0B;AAC1D,QAAM,WAAiB,EAAqB,SAAS,WAAW,SAAS,aAAa,SAAS,iBAAiB;AAChH,EAAM,EAAU,MAAM;AACpB,SAAK,SAAS,KAAK,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACrC,GAAG,CAAC,QAAQ,CAAC;AACb,MAAI,SAAS,MAAO,OAAM,SAAS;AACnC,SAAO,SAAS;AAClB;;;ACCA,SAAS,kBAAqB,cAAgD;AAC5E,QAAM,kBAAqC,EAAE,QAAQ,MAAM,OAAO,KAAK;AACvE,MAAI,WAAW;AACf,MAAI;AACJ,QAAM,YAAY,oBAAI,IAAgB;AACtC,QAAM,UAAU,CAAC,SAA4B;AAC3C,eAAW;AACX,cAAU,QAAQ,CAAC,aAAa,SAAS,CAAC;AAAA,EAC5C;AAEA,SAAO;AAAA,IACL,MAAM,MAAM,YAAY,aAAa,EAAE,KAAK,CAAC,WAAW;AACtD,cAAQ,EAAE,QAAQ,OAAO,KAAK,CAAC;AAC/B,aAAO;AAAA,IACT,GAAG,CAAC,UAAmB;AACrB,cAAQ,EAAE,QAAQ,MAAM,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,8BAA8B,EAAE,CAAC;AAC3G,YAAM;AAAA,IACR,CAAC;AAAA,IACD,aAAa,MAAM;AAAA,IACnB,mBAAmB,MAAM;AAAA,IACzB,WAAW,CAAC,aAAa;AACvB,gBAAU,IAAI,QAAQ;AACtB,aAAO,MAAM;AAAE,kBAAU,OAAO,QAAQ;AAAA,MAAG;AAAA,IAC7C;AAAA,EACF;AACF;AAEO,IAAM,gBAAgB,kBAAkB,MAAM,OAAO,8BAAkB,CAAC;AACxE,IAAM,qBAAqB,kBAAkB,MAAM,OAAO,oCAAwB,CAAC;AACnF,IAAM,kBAAkB,kBAAkB,MAAM,OAAO,4BAAgB,CAAC;AAExE,SAAS,sBAAsB,eAAkD;AACtF,MAAI,YAAY;AAChB,MAAI,UAAU;AACd,MAAI,cAAc;AAClB,aAAW,UAAU,eAAe;AAClC,eAAW,SAAS,QAAQ;AAC1B,kBAAY;AACZ,kBAAY,MAAM,cAAc;AAChC,sBAAgB,MAAM,cAAc;AAAA,IACtC;AAAA,EACF;AAEA,MAAI,UAAW,MAAK,cAAc,KAAK,EAAE,MAAM,MAAM;AAAA,EAAC,CAAC;AACvD,MAAI,QAAS,MAAK,mBAAmB,KAAK,EAAE,MAAM,MAAM;AAAA,EAAC,CAAC;AAC1D,MAAI,YAAa,MAAK,gBAAgB,KAAK,EAAE,MAAM,MAAM;AAAA,EAAC,CAAC;AAC7D;","names":[]}