@extend-ai/react-xlsx 0.19.0 → 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.
- package/README.md +1 -1
- package/dist/{chart-renderer-LHXMRBGR.cjs → chart-renderer-AAVZ34BF.cjs} +43 -38
- package/dist/chart-renderer-AAVZ34BF.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-HVOEAQXK.cjs → chart-renderer-NM5UVCTO.cjs} +43 -38
- package/dist/chart-renderer-NM5UVCTO.cjs.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-TYJLNPNE.cjs → chunk-2YBG7XQ3.cjs} +17 -8
- package/dist/chunk-2YBG7XQ3.cjs.map +1 -0
- package/dist/{chunk-3O2QY6LA.js → chunk-3JTCYAUX.js} +3 -3
- package/dist/{chunk-4VX5HTCF.cjs → chunk-6K3NSKDJ.cjs} +3 -3
- package/dist/{chunk-4VX5HTCF.cjs.map → chunk-6K3NSKDJ.cjs.map} +1 -1
- package/dist/{chunk-ZIO47YMT.cjs → chunk-MCFUTO4J.cjs} +3 -3
- package/dist/{chunk-ZIO47YMT.cjs.map → chunk-MCFUTO4J.cjs.map} +1 -1
- package/dist/{chunk-E2VSYCP2.cjs → chunk-O3V2MCOC.cjs} +18 -2
- package/dist/chunk-O3V2MCOC.cjs.map +1 -0
- package/dist/{chunk-Y737JKUG.js → chunk-QN3D3JS2.js} +14 -5
- package/dist/chunk-QN3D3JS2.js.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 +13 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +13 -4
- package/dist/index.js.map +1 -1
- package/dist/{internal-DSz8QMhK.d.cts → internal-DrXSHYJZ.d.cts} +2 -0
- package/dist/{internal-DSz8QMhK.d.ts → internal-DrXSHYJZ.d.ts} +2 -0
- package/dist/internal.cjs +3 -3
- package/dist/internal.d.cts +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.js +2 -2
- package/dist/{surface-regl-PWTZWQQS.cjs → surface-regl-5Z6IVOID.cjs} +17 -14
- package/dist/surface-regl-5Z6IVOID.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-MAPCPD7W.cjs → surface-regl-AY7JZVYY.cjs} +17 -14
- package/dist/surface-regl-AY7JZVYY.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 +3 -3
- package/dist/vanilla.d.cts +2 -2
- package/dist/vanilla.d.ts +2 -2
- package/dist/vanilla.js +2 -2
- 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
|
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":"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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-
|
|
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
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2;require('./chunk-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2;require('./chunk-6K3NSKDJ.cjs');
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
@@ -9997,12 +9997,19 @@ function useXlsxViewerController(options) {
|
|
|
9997
9997
|
downloadUrl(src, displayFileName);
|
|
9998
9998
|
}
|
|
9999
9999
|
}, [displayFileName, file, src]);
|
|
10000
|
-
const
|
|
10000
|
+
const getXlsxBytes = React.useCallback(() => {
|
|
10001
10001
|
if (!workbook) {
|
|
10002
|
+
return null;
|
|
10003
|
+
}
|
|
10004
|
+
return createSavedWorkbookBytes(workbook);
|
|
10005
|
+
}, [createSavedWorkbookBytes, workbook]);
|
|
10006
|
+
const exportXlsx = React.useCallback(() => {
|
|
10007
|
+
const bytes = getXlsxBytes();
|
|
10008
|
+
if (!bytes) {
|
|
10002
10009
|
return;
|
|
10003
10010
|
}
|
|
10004
|
-
downloadBytes(
|
|
10005
|
-
}, [
|
|
10011
|
+
downloadBytes(bytes, `${fileStem(displayFileName)}.xlsx`, XLSX_MIME_TYPE);
|
|
10012
|
+
}, [displayFileName, getXlsxBytes]);
|
|
10006
10013
|
const exportCsv = React.useCallback(() => {
|
|
10007
10014
|
if (!workbook) {
|
|
10008
10015
|
return;
|
|
@@ -11119,6 +11126,7 @@ function useXlsxViewerController(options) {
|
|
|
11119
11126
|
download,
|
|
11120
11127
|
exportCsv,
|
|
11121
11128
|
exportXlsx,
|
|
11129
|
+
getXlsxBytes,
|
|
11122
11130
|
error,
|
|
11123
11131
|
fillSelection,
|
|
11124
11132
|
formControls,
|
|
@@ -11242,6 +11250,7 @@ function useXlsxViewerController(options) {
|
|
|
11242
11250
|
error,
|
|
11243
11251
|
exportCsv,
|
|
11244
11252
|
exportXlsx,
|
|
11253
|
+
getXlsxBytes,
|
|
11245
11254
|
file,
|
|
11246
11255
|
fillSelection,
|
|
11247
11256
|
formControls,
|