@extend-ai/react-xlsx 0.19.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 (69) hide show
  1. package/README.md +2 -1
  2. package/dist/{chart-renderer-LHXMRBGR.cjs → chart-renderer-K2VM257E.cjs} +44 -39
  3. package/dist/chart-renderer-K2VM257E.cjs.map +1 -0
  4. package/dist/{chart-renderer-HVOEAQXK.cjs → chart-renderer-K6GORT3R.cjs} +44 -39
  5. package/dist/chart-renderer-K6GORT3R.cjs.map +1 -0
  6. package/dist/{chart-renderer-R2B4I2HL.js → chart-renderer-KGLAI4DN.js} +25 -20
  7. package/dist/chart-renderer-KGLAI4DN.js.map +1 -0
  8. package/dist/{chart-renderer-3K2VKB5I.js → chart-renderer-RXO7WP4Q.js} +25 -20
  9. package/dist/chart-renderer-RXO7WP4Q.js.map +1 -0
  10. package/dist/{chunk-ZIO47YMT.cjs → chunk-2MVEKDY2.cjs} +4 -4
  11. package/dist/{chunk-ZIO47YMT.cjs.map → chunk-2MVEKDY2.cjs.map} +1 -1
  12. package/dist/{chunk-3O2QY6LA.js → chunk-3JTCYAUX.js} +3 -3
  13. package/dist/{chunk-4VX5HTCF.cjs → chunk-54YBFWL3.cjs} +4 -4
  14. package/dist/{chunk-4VX5HTCF.cjs.map → chunk-54YBFWL3.cjs.map} +1 -1
  15. package/dist/{chunk-T5WZHPIN.cjs → chunk-AD4CGQN2.cjs} +2 -2
  16. package/dist/{chunk-T5WZHPIN.cjs.map → chunk-AD4CGQN2.cjs.map} +1 -1
  17. package/dist/{chunk-Y737JKUG.js → chunk-GXJO6CK6.js} +136 -33
  18. package/dist/chunk-GXJO6CK6.js.map +1 -0
  19. package/dist/{chunk-TYJLNPNE.cjs → chunk-HAHCVXCU.cjs} +922 -819
  20. package/dist/chunk-HAHCVXCU.cjs.map +1 -0
  21. package/dist/{chunk-E2VSYCP2.cjs → chunk-O3V2MCOC.cjs} +18 -2
  22. package/dist/chunk-O3V2MCOC.cjs.map +1 -0
  23. package/dist/{chunk-BAAMDEDS.js → chunk-VXBNYHW5.js} +18 -2
  24. package/dist/{chunk-BAAMDEDS.js.map → chunk-VXBNYHW5.js.map} +1 -1
  25. package/dist/{chunk-O7S3Y6II.js → chunk-WSQDFXDW.js} +3 -3
  26. package/dist/index.cjs +617 -530
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +5 -0
  29. package/dist/index.d.ts +5 -0
  30. package/dist/index.js +115 -28
  31. package/dist/index.js.map +1 -1
  32. package/dist/{internal-DSz8QMhK.d.cts → internal-trWFv9In.d.cts} +5 -0
  33. package/dist/{internal-DSz8QMhK.d.ts → internal-trWFv9In.d.ts} +5 -0
  34. package/dist/internal.cjs +4 -4
  35. package/dist/internal.d.cts +1 -1
  36. package/dist/internal.d.ts +1 -1
  37. package/dist/internal.js +2 -2
  38. package/dist/{region-map-geography-6TGXBY3V.cjs → region-map-geography-VEN5CPRS.cjs} +2 -2
  39. package/dist/{region-map-geography-6TGXBY3V.cjs.map → region-map-geography-VEN5CPRS.cjs.map} +1 -1
  40. package/dist/{spreadsheet-font-assets-4AHYDTAQ.cjs → spreadsheet-font-assets-6FKCVICP.cjs} +2 -2
  41. package/dist/{spreadsheet-font-assets-4AHYDTAQ.cjs.map → spreadsheet-font-assets-6FKCVICP.cjs.map} +1 -1
  42. package/dist/{surface-regl-MAPCPD7W.cjs → surface-regl-2NNG62KS.cjs} +18 -15
  43. package/dist/surface-regl-2NNG62KS.cjs.map +1 -0
  44. package/dist/{surface-regl-NWR5ZZ5D.js → surface-regl-7CDGGVDG.js} +10 -7
  45. package/dist/surface-regl-7CDGGVDG.js.map +1 -0
  46. package/dist/{surface-regl-PWTZWQQS.cjs → surface-regl-SUJ2TFZA.cjs} +18 -15
  47. package/dist/surface-regl-SUJ2TFZA.cjs.map +1 -0
  48. package/dist/{surface-regl-KW4JL325.js → surface-regl-TJUWTLAZ.js} +10 -7
  49. package/dist/surface-regl-TJUWTLAZ.js.map +1 -0
  50. package/dist/vanilla.cjs +4 -4
  51. package/dist/vanilla.d.cts +2 -2
  52. package/dist/vanilla.d.ts +2 -2
  53. package/dist/vanilla.js +2 -2
  54. package/dist/xlsx-worker.js +67 -1
  55. package/dist/xlsx-worker.js.map +1 -1
  56. package/package.json +1 -1
  57. package/dist/chart-renderer-3K2VKB5I.js.map +0 -1
  58. package/dist/chart-renderer-HVOEAQXK.cjs.map +0 -1
  59. package/dist/chart-renderer-LHXMRBGR.cjs.map +0 -1
  60. package/dist/chart-renderer-R2B4I2HL.js.map +0 -1
  61. package/dist/chunk-E2VSYCP2.cjs.map +0 -1
  62. package/dist/chunk-TYJLNPNE.cjs.map +0 -1
  63. package/dist/chunk-Y737JKUG.js.map +0 -1
  64. package/dist/surface-regl-KW4JL325.js.map +0 -1
  65. package/dist/surface-regl-MAPCPD7W.cjs.map +0 -1
  66. package/dist/surface-regl-NWR5ZZ5D.js.map +0 -1
  67. package/dist/surface-regl-PWTZWQQS.cjs.map +0 -1
  68. /package/dist/{chunk-3O2QY6LA.js.map → chunk-3JTCYAUX.js.map} +0 -0
  69. /package/dist/{chunk-O7S3Y6II.js.map → chunk-WSQDFXDW.js.map} +0 -0
@@ -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
 
95
111
 
@@ -100,5 +116,5 @@ function surfaceBandEdges(polygon, triangle) {
100
116
 
101
117
 
102
118
 
103
- exports.surfaceNormal = surfaceNormal; exports.transformSurfaceNormal = transformSurfaceNormal; exports.shadeSurfaceMatteColor = shadeSurfaceMatteColor; exports.surfaceDataRatios = surfaceDataRatios; exports.normalizeSurfaceValue = normalizeSurfaceValue; exports.triangulateSurfaceQuad = triangulateSurfaceQuad; exports.clipSurfaceBand = clipSurfaceBand; exports.surfaceBandEdges = surfaceBandEdges;
104
- //# sourceMappingURL=chunk-E2VSYCP2.cjs.map
119
+ exports.surfaceNormal = surfaceNormal; exports.transformSurfaceNormal = transformSurfaceNormal; exports.shadeSurfaceMatteColor = shadeSurfaceMatteColor; exports.surfaceDataRatios = surfaceDataRatios; exports.normalizeSurfaceValue = normalizeSurfaceValue; exports.triangulateSurfaceQuad = triangulateSurfaceQuad; exports.clipSurfaceBand = clipSurfaceBand; exports.groupSurfaceBandEdges = groupSurfaceBandEdges;
120
+ //# sourceMappingURL=chunk-O3V2MCOC.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/chunk-O3V2MCOC.cjs","../src/surface-lighting.ts","../src/surface-geometry.ts"],"names":[],"mappings":"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","file":"/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/chunk-O3V2MCOC.cjs","sourcesContent":[null,"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"]}
@@ -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":"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","names":[]}
@@ -42,9 +42,9 @@ function createChartModule(importModule) {
42
42
  }
43
43
  };
44
44
  }
45
- var chartRenderer = createChartModule(() => import("./chart-renderer-3K2VKB5I.js"));
45
+ var chartRenderer = createChartModule(() => import("./chart-renderer-RXO7WP4Q.js"));
46
46
  var regionMapResources = createChartModule(() => import("./region-map-geography-YD54DI3H.js"));
47
- var surfaceRenderer = createChartModule(() => import("./surface-regl-KW4JL325.js"));
47
+ var surfaceRenderer = createChartModule(() => import("./surface-regl-TJUWTLAZ.js"));
48
48
  function preloadChartRenderers(chartsBySheet) {
49
49
  let hasCharts = false;
50
50
  let hasMaps = false;
@@ -71,4 +71,4 @@ export {
71
71
  surfaceRenderer,
72
72
  preloadChartRenderers
73
73
  };
74
- //# sourceMappingURL=chunk-O7S3Y6II.js.map
74
+ //# sourceMappingURL=chunk-WSQDFXDW.js.map