@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.
- package/README.md +2 -1
- package/dist/{chart-renderer-LHXMRBGR.cjs → chart-renderer-K2VM257E.cjs} +44 -39
- package/dist/chart-renderer-K2VM257E.cjs.map +1 -0
- package/dist/{chart-renderer-HVOEAQXK.cjs → chart-renderer-K6GORT3R.cjs} +44 -39
- package/dist/chart-renderer-K6GORT3R.cjs.map +1 -0
- package/dist/{chart-renderer-R2B4I2HL.js → chart-renderer-KGLAI4DN.js} +25 -20
- package/dist/chart-renderer-KGLAI4DN.js.map +1 -0
- package/dist/{chart-renderer-3K2VKB5I.js → chart-renderer-RXO7WP4Q.js} +25 -20
- package/dist/chart-renderer-RXO7WP4Q.js.map +1 -0
- package/dist/{chunk-ZIO47YMT.cjs → chunk-2MVEKDY2.cjs} +4 -4
- package/dist/{chunk-ZIO47YMT.cjs.map → chunk-2MVEKDY2.cjs.map} +1 -1
- package/dist/{chunk-3O2QY6LA.js → chunk-3JTCYAUX.js} +3 -3
- package/dist/{chunk-4VX5HTCF.cjs → chunk-54YBFWL3.cjs} +4 -4
- package/dist/{chunk-4VX5HTCF.cjs.map → chunk-54YBFWL3.cjs.map} +1 -1
- package/dist/{chunk-T5WZHPIN.cjs → chunk-AD4CGQN2.cjs} +2 -2
- package/dist/{chunk-T5WZHPIN.cjs.map → chunk-AD4CGQN2.cjs.map} +1 -1
- package/dist/{chunk-Y737JKUG.js → chunk-GXJO6CK6.js} +136 -33
- package/dist/chunk-GXJO6CK6.js.map +1 -0
- package/dist/{chunk-TYJLNPNE.cjs → chunk-HAHCVXCU.cjs} +922 -819
- package/dist/chunk-HAHCVXCU.cjs.map +1 -0
- package/dist/{chunk-E2VSYCP2.cjs → chunk-O3V2MCOC.cjs} +18 -2
- package/dist/chunk-O3V2MCOC.cjs.map +1 -0
- package/dist/{chunk-BAAMDEDS.js → chunk-VXBNYHW5.js} +18 -2
- package/dist/{chunk-BAAMDEDS.js.map → chunk-VXBNYHW5.js.map} +1 -1
- package/dist/{chunk-O7S3Y6II.js → chunk-WSQDFXDW.js} +3 -3
- package/dist/index.cjs +617 -530
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +115 -28
- package/dist/index.js.map +1 -1
- package/dist/{internal-DSz8QMhK.d.cts → internal-trWFv9In.d.cts} +5 -0
- package/dist/{internal-DSz8QMhK.d.ts → internal-trWFv9In.d.ts} +5 -0
- package/dist/internal.cjs +4 -4
- package/dist/internal.d.cts +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.js +2 -2
- package/dist/{region-map-geography-6TGXBY3V.cjs → region-map-geography-VEN5CPRS.cjs} +2 -2
- package/dist/{region-map-geography-6TGXBY3V.cjs.map → region-map-geography-VEN5CPRS.cjs.map} +1 -1
- package/dist/{spreadsheet-font-assets-4AHYDTAQ.cjs → spreadsheet-font-assets-6FKCVICP.cjs} +2 -2
- package/dist/{spreadsheet-font-assets-4AHYDTAQ.cjs.map → spreadsheet-font-assets-6FKCVICP.cjs.map} +1 -1
- package/dist/{surface-regl-MAPCPD7W.cjs → surface-regl-2NNG62KS.cjs} +18 -15
- package/dist/surface-regl-2NNG62KS.cjs.map +1 -0
- package/dist/{surface-regl-NWR5ZZ5D.js → surface-regl-7CDGGVDG.js} +10 -7
- package/dist/surface-regl-7CDGGVDG.js.map +1 -0
- package/dist/{surface-regl-PWTZWQQS.cjs → surface-regl-SUJ2TFZA.cjs} +18 -15
- package/dist/surface-regl-SUJ2TFZA.cjs.map +1 -0
- package/dist/{surface-regl-KW4JL325.js → surface-regl-TJUWTLAZ.js} +10 -7
- package/dist/surface-regl-TJUWTLAZ.js.map +1 -0
- package/dist/vanilla.cjs +4 -4
- package/dist/vanilla.d.cts +2 -2
- package/dist/vanilla.d.ts +2 -2
- package/dist/vanilla.js +2 -2
- package/dist/xlsx-worker.js +67 -1
- package/dist/xlsx-worker.js.map +1 -1
- package/package.json +1 -1
- package/dist/chart-renderer-3K2VKB5I.js.map +0 -1
- package/dist/chart-renderer-HVOEAQXK.cjs.map +0 -1
- package/dist/chart-renderer-LHXMRBGR.cjs.map +0 -1
- package/dist/chart-renderer-R2B4I2HL.js.map +0 -1
- package/dist/chunk-E2VSYCP2.cjs.map +0 -1
- package/dist/chunk-TYJLNPNE.cjs.map +0 -1
- package/dist/chunk-Y737JKUG.js.map +0 -1
- package/dist/surface-regl-KW4JL325.js.map +0 -1
- package/dist/surface-regl-MAPCPD7W.cjs.map +0 -1
- package/dist/surface-regl-NWR5ZZ5D.js.map +0 -1
- package/dist/surface-regl-PWTZWQQS.cjs.map +0 -1
- /package/dist/{chunk-3O2QY6LA.js.map → chunk-3JTCYAUX.js.map} +0 -0
- /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.
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
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":"AAAA;ACEO,SAAS,aAAA,CAAc,CAAA,EAAkB,CAAA,EAAkB,CAAA,EAAiC;AACjG,EAAA,MAAM,GAAA,EAAK,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,CAAA;AACnB,EAAA,MAAM,GAAA,EAAK,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,CAAA;AACnB,EAAA,MAAM,GAAA,EAAK,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,CAAA;AACnB,EAAA,MAAM,GAAA,EAAK,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,CAAA;AACnB,EAAA,MAAM,GAAA,EAAK,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,CAAA;AACnB,EAAA,MAAM,GAAA,EAAK,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,CAAA;AACnB,EAAA,MAAM,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA;AACzB,EAAA,MAAM,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA;AACzB,EAAA,MAAM,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA;AACzB,EAAA,MAAM,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,CAAA,EAAG,CAAC,EAAA,GAAK,CAAA;AACtC,EAAA,OAAO,EAAE,CAAA,EAAG,EAAA,EAAI,MAAA,EAAQ,CAAA,EAAG,EAAA,EAAI,MAAA,EAAQ,CAAA,EAAG,EAAA,EAAI,OAAO,CAAA;AACvD;AAEO,SAAS,sBAAA,CAAuB,MAAA,EAAuB,IAAA,EAAc,IAAA,EAAc,eAAA,EAAiB,KAAA,EAAsB;AAC/H,EAAA,MAAM,OAAA,EAAS,eAAA,EAAiB,EAAA,EAAI,KAAA,EAAO,IAAA,CAAK,GAAA,EAAK,GAAA;AACrD,EAAA,MAAM,OAAA,EAAS,eAAA,EAAiB,EAAA,EAAI,KAAA,EAAO,IAAA,CAAK,GAAA,EAAK,GAAA;AACrD,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAC1B,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAC1B,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAC1B,EAAA,MAAM,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAC1B,EAAA,MAAM,EAAA,EAAI,CAAC,GAAA,EAAK,MAAA,CAAO,EAAA,EAAI,GAAA,EAAK,MAAA,CAAO,CAAA;AACvC,EAAA,MAAM,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,MAAA,CAAO,EAAA,EAAI,GAAA,EAAK,MAAA,CAAO,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,MAAA,CAAO,CAAA;AAChE,EAAA,MAAM,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,MAAA,CAAO,EAAA,EAAI,GAAA,EAAK,MAAA,CAAO,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,MAAA,CAAO,CAAA;AAChE,EAAA,MAAM,OAAA,EAAS,eAAA,EACX,EAAA,EAAI,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,IAAA,CAAK,GAAA,EAAK,GAAG,EAAA,EAAI,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,IAAA,CAAK,GAAA,EAAK,GAAG,EAAA,EAC1E,CAAA;AACJ,EAAA,MAAM,OAAA,EAAA,CAAU,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,CAAA,EAAG,CAAC,EAAA,GAAK,CAAA,EAAA,EAAA,CAAM,OAAA,EAAS,EAAA,EAAI,CAAA,EAAA,EAAK,CAAA,CAAA;AAC/D,EAAA,OAAO,EAAE,CAAA,EAAG,EAAA,EAAI,MAAA,EAAQ,CAAA,EAAG,EAAA,EAAI,MAAA,EAAQ,CAAA,EAAG,EAAA,EAAI,OAAO,CAAA;AACvD;AAEO,SAAS,sBAAA,CAAuB,KAAA,EAAe,MAAA,EAAuB;AAC3E,EAAA,MAAM,IAAA,EAAM,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AAClC,EAAA,GAAA,CAAI,CAAC,gBAAA,CAAiB,IAAA,CAAK,GAAG,CAAA,EAAG,OAAO,KAAA;AACxC,EAAA,MAAM,QAAA,EAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAI,MAAA,CAAO,EAAA,EAAI,MAAA,CAAO,EAAA,EAAI,MAAA,CAAO,CAAA,EAAA,EAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA;AACxF,EAAA,MAAM,UAAA,EAAY,IAAA,EAAM,KAAA,EAAO,OAAA;AAC/B,EAAA,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,MAAA,EAAA,GAAW,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,OAAA,EAAS,CAAC,CAAA,EAAG,EAAE,EAAA,EAAI,SAAS,CAAC,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC,CAAA,CAAA;AACxK;ADJyK;AACA;AEhC1D;AAGrE,EAAA;AAC1C;AAE2M;AAClK,EAAA;AACuD,EAAA;AACvF,EAAA;AACwJ,IAAA;AACtE,IAAA;AACzF,EAAA;AACF;AAE8E;AAGxE,EAAA;AAC8C,EAAA;AACpD;AAE4G;AACjE,EAAA;AACF,EAAA;AACN,EAAA;AACA,EAAA;AACmC,EAAA;AACtE;AAE0I;AAC5D,EAAA;AAGtE,EAAA;AACR;AAEwJ;AAClH,EAAA;AACL,EAAA;AACmC,IAAA;AACU,IAAA;AACN,IAAA;AACrC,IAAA;AACyB,MAAA;AACkD,MAAA;AACQ,MAAA;AAClH,IAAA;AACe,IAAA;AACE,MAAA;AACjB,IAAA;AACD,EAAA;AACoF,EAAA;AACvF;AAEgI;AACtG,EAAA;AACF,EAAA;AACG,EAAA;AACA,EAAA;AAC6B,EAAA;AAC2D,EAAA;AAC5B,EAAA;AACpC,IAAA;AAGhC,IAAA;AAChB,EAAA;AACH;AAQE;AACgD,EAAA;AACZ,EAAA;AACM,EAAA;AAChB,EAAA;AACyD,IAAA;AACnD,MAAA;AACvB,IAAA;AACiB,MAAA;AACxB,IAAA;AACF,EAAA;AACO,EAAA;AAC4D,IAAA;AACsB,IAAA;AACzF,EAAA;AACF;AFayK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","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
|
-
|
|
118
|
+
groupSurfaceBandEdges
|
|
103
119
|
};
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
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":[]}
|
|
@@ -42,9 +42,9 @@ function createChartModule(importModule) {
|
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
|
-
var chartRenderer = createChartModule(() => import("./chart-renderer-
|
|
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-
|
|
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-
|
|
74
|
+
//# sourceMappingURL=chunk-WSQDFXDW.js.map
|