@extend-ai/react-xlsx 0.20.1 → 0.20.2
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/dist/{chart-renderer-K2VM257E.cjs → chart-renderer-3QDNTMRN.cjs} +525 -603
- package/dist/chart-renderer-3QDNTMRN.cjs.map +1 -0
- package/dist/{chart-renderer-RXO7WP4Q.js → chart-renderer-7DTEXXG6.js} +19 -97
- package/dist/chart-renderer-7DTEXXG6.js.map +1 -0
- package/dist/{chart-renderer-KGLAI4DN.js → chart-renderer-F355CYSE.js} +13 -92
- package/dist/chart-renderer-F355CYSE.js.map +1 -0
- package/dist/{chart-renderer-K6GORT3R.cjs → chart-renderer-LGW4EH4M.cjs} +286 -365
- package/dist/chart-renderer-LGW4EH4M.cjs.map +1 -0
- package/dist/{chunk-WSQDFXDW.js → chunk-3LMOGW6A.js} +22 -6
- package/dist/chunk-3LMOGW6A.js.map +1 -0
- package/dist/chunk-A4S3AMON.js +108 -0
- package/dist/chunk-A4S3AMON.js.map +1 -0
- package/dist/chunk-AJT23BDP.js +111 -0
- package/dist/chunk-AJT23BDP.js.map +1 -0
- package/dist/{chunk-CJBI5F6V.cjs → chunk-AZWBTFJI.cjs} +12 -93
- package/dist/chunk-AZWBTFJI.cjs.map +1 -0
- package/dist/{chunk-54YBFWL3.cjs → chunk-D2UA4P6N.cjs} +14 -3
- package/dist/chunk-D2UA4P6N.cjs.map +1 -0
- package/dist/{chunk-GXJO6CK6.js → chunk-GXYDJPHM.js} +40 -12
- package/dist/chunk-GXYDJPHM.js.map +1 -0
- package/dist/chunk-IDNIGBUM.cjs +108 -0
- package/dist/chunk-IDNIGBUM.cjs.map +1 -0
- package/dist/{chunk-3JTCYAUX.js → chunk-IYGZTLDY.js} +14 -3
- package/dist/chunk-IYGZTLDY.js.map +1 -0
- package/dist/chunk-M55TBS4X.cjs +111 -0
- package/dist/chunk-M55TBS4X.cjs.map +1 -0
- package/dist/{chunk-2MVEKDY2.cjs → chunk-OCF75R75.cjs} +25 -9
- package/dist/chunk-OCF75R75.cjs.map +1 -0
- package/dist/{chunk-NBH72POD.js → chunk-PUI6QI4U.js} +11 -92
- package/dist/chunk-PUI6QI4U.js.map +1 -0
- package/dist/{chunk-HAHCVXCU.cjs → chunk-ZJ76CZAL.cjs} +787 -759
- package/dist/chunk-ZJ76CZAL.cjs.map +1 -0
- package/dist/index.cjs +22 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +22 -3
- package/dist/index.js.map +1 -1
- package/dist/{internal-trWFv9In.d.cts → internal-BJsg5os3.d.cts} +10 -0
- package/dist/{internal-trWFv9In.d.ts → internal-BJsg5os3.d.ts} +10 -0
- package/dist/internal.cjs +5 -4
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.d.cts +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.js +4 -3
- package/dist/preact-LICENSE.txt +21 -0
- package/dist/region-map-geography-24TXETDP.cjs +184 -0
- package/dist/region-map-geography-24TXETDP.cjs.map +1 -0
- package/dist/region-map-geography-OR6DHAF7.js +182 -0
- package/dist/region-map-geography-OR6DHAF7.js.map +1 -0
- package/dist/shared-chart-3STFRVWT.js +215 -0
- package/dist/shared-chart-3STFRVWT.js.map +1 -0
- package/dist/shared-chart-BFQNYOIQ.js +221 -0
- package/dist/shared-chart-BFQNYOIQ.js.map +1 -0
- package/dist/shared-chart-DVC5S2P6.cjs +222 -0
- package/dist/shared-chart-DVC5S2P6.cjs.map +1 -0
- package/dist/shared-chart-MFQSQG4K.cjs +216 -0
- package/dist/shared-chart-MFQSQG4K.cjs.map +1 -0
- package/dist/{surface-regl-2NNG62KS.cjs → surface-regl-BBJ6OIKK.cjs} +14 -12
- package/dist/surface-regl-BBJ6OIKK.cjs.map +1 -0
- package/dist/{surface-regl-TJUWTLAZ.js → surface-regl-R2N54JT2.js} +7 -5
- package/dist/{surface-regl-TJUWTLAZ.js.map → surface-regl-R2N54JT2.js.map} +1 -1
- package/dist/us-atlas-LICENSE.txt +13 -0
- package/dist/vanilla.cjs +5 -4
- package/dist/vanilla.cjs.map +1 -1
- package/dist/vanilla.d.cts +2 -2
- package/dist/vanilla.d.ts +2 -2
- package/dist/vanilla.js +4 -3
- package/dist/world-atlas-LICENSE.txt +13 -0
- package/dist/xlsx-worker.js +15 -0
- package/dist/xlsx-worker.js.map +1 -1
- package/package.json +7 -6
- package/dist/chart-renderer-K2VM257E.cjs.map +0 -1
- package/dist/chart-renderer-K6GORT3R.cjs.map +0 -1
- package/dist/chart-renderer-KGLAI4DN.js.map +0 -1
- package/dist/chart-renderer-RXO7WP4Q.js.map +0 -1
- package/dist/chunk-2MVEKDY2.cjs.map +0 -1
- package/dist/chunk-3JTCYAUX.js.map +0 -1
- package/dist/chunk-54YBFWL3.cjs.map +0 -1
- package/dist/chunk-CJBI5F6V.cjs.map +0 -1
- package/dist/chunk-GXJO6CK6.js.map +0 -1
- package/dist/chunk-HAHCVXCU.cjs.map +0 -1
- package/dist/chunk-NBH72POD.js.map +0 -1
- package/dist/chunk-WSQDFXDW.js.map +0 -1
- package/dist/region-map-geography-VEN5CPRS.cjs +0 -184
- package/dist/region-map-geography-VEN5CPRS.cjs.map +0 -1
- package/dist/region-map-geography-YD54DI3H.js +0 -182
- package/dist/region-map-geography-YD54DI3H.js.map +0 -1
- package/dist/surface-regl-2NNG62KS.cjs.map +0 -1
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkM55TBS4Xcjs = require('./chunk-M55TBS4X.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunkAZWBTFJIcjs = require('./chunk-AZWBTFJI.cjs');
|
|
13
|
+
require('./chunk-AD4CGQN2.cjs');
|
|
14
|
+
|
|
15
|
+
// src/shared-chart.tsx
|
|
16
|
+
var svgNamespace = "http://www.w3.org/2000/svg";
|
|
17
|
+
var allowedElements = /* @__PURE__ */ new Set([
|
|
18
|
+
"svg",
|
|
19
|
+
"g",
|
|
20
|
+
"defs",
|
|
21
|
+
"clipPath",
|
|
22
|
+
"rect",
|
|
23
|
+
"circle",
|
|
24
|
+
"ellipse",
|
|
25
|
+
"path",
|
|
26
|
+
"line",
|
|
27
|
+
"polyline",
|
|
28
|
+
"polygon",
|
|
29
|
+
"text",
|
|
30
|
+
"tspan",
|
|
31
|
+
"linearGradient",
|
|
32
|
+
"radialGradient",
|
|
33
|
+
"stop",
|
|
34
|
+
"pattern"
|
|
35
|
+
]);
|
|
36
|
+
var plainAttributes = /* @__PURE__ */ new Set([
|
|
37
|
+
"x",
|
|
38
|
+
"y",
|
|
39
|
+
"width",
|
|
40
|
+
"height",
|
|
41
|
+
"x1",
|
|
42
|
+
"x2",
|
|
43
|
+
"y1",
|
|
44
|
+
"y2",
|
|
45
|
+
"cx",
|
|
46
|
+
"cy",
|
|
47
|
+
"fx",
|
|
48
|
+
"fy",
|
|
49
|
+
"r",
|
|
50
|
+
"rx",
|
|
51
|
+
"ry",
|
|
52
|
+
"fr",
|
|
53
|
+
"viewBox",
|
|
54
|
+
"transform",
|
|
55
|
+
"d",
|
|
56
|
+
"points",
|
|
57
|
+
"font-family",
|
|
58
|
+
"font-weight",
|
|
59
|
+
"font-size",
|
|
60
|
+
"text-anchor",
|
|
61
|
+
"dominant-baseline",
|
|
62
|
+
"stroke-linecap",
|
|
63
|
+
"stroke-linejoin",
|
|
64
|
+
"stroke-width",
|
|
65
|
+
"stroke-dasharray",
|
|
66
|
+
"opacity",
|
|
67
|
+
"fill-opacity",
|
|
68
|
+
"stroke-opacity",
|
|
69
|
+
"fill-rule",
|
|
70
|
+
"shape-rendering",
|
|
71
|
+
"offset",
|
|
72
|
+
"stop-opacity",
|
|
73
|
+
"gradientUnits",
|
|
74
|
+
"gradientTransform",
|
|
75
|
+
"patternUnits",
|
|
76
|
+
"patternContentUnits",
|
|
77
|
+
"data-chart-kind",
|
|
78
|
+
"data-chart-series",
|
|
79
|
+
"data-chart-point",
|
|
80
|
+
"data-chart-x",
|
|
81
|
+
"data-chart-y"
|
|
82
|
+
]);
|
|
83
|
+
function safeChartSvg(markup, prefix) {
|
|
84
|
+
const svg = new DOMParser().parseFromString(markup, "image/svg+xml").documentElement;
|
|
85
|
+
if (svg.localName !== "svg" || svg.namespaceURI !== svgNamespace) return null;
|
|
86
|
+
for (const node of [svg, ...Array.from(svg.querySelectorAll("*"))]) {
|
|
87
|
+
if (node.namespaceURI !== svgNamespace || !allowedElements.has(node.localName)) return null;
|
|
88
|
+
for (const { name, value } of Array.from(node.attributes)) {
|
|
89
|
+
if (plainAttributes.has(name) || name === "xmlns") continue;
|
|
90
|
+
if (name === "id" && /^[\w-]+$/.test(value)) {
|
|
91
|
+
node.setAttribute(name, prefix + value);
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (name === "href" && /^(linearGradient|radialGradient)$/.test(node.localName) && /^#[\w-]+$/.test(value)) {
|
|
95
|
+
node.setAttribute(name, "#" + prefix + value.slice(1));
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
if (["fill", "stroke", "stop-color", "clip-path"].includes(name)) {
|
|
99
|
+
const local = /^url\(#([\w-]+)\)$/.exec(value);
|
|
100
|
+
if (local) {
|
|
101
|
+
node.setAttribute(name, "url(#" + prefix + local[1] + ")");
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (/^(?:#[\da-f]{3,8}|[a-z]+)$/i.test(value)) continue;
|
|
105
|
+
}
|
|
106
|
+
node.removeAttribute(name);
|
|
107
|
+
}
|
|
108
|
+
if (node.hasAttribute("data-chart-series")) {
|
|
109
|
+
node.setAttribute("data-xlsx-chart-series-index", node.getAttribute("data-chart-series"));
|
|
110
|
+
const point = node.getAttribute("data-chart-point");
|
|
111
|
+
if (point != null) node.setAttribute("data-xlsx-chart-point-index", point);
|
|
112
|
+
const kind = node.getAttribute("data-chart-kind");
|
|
113
|
+
if (kind === "bar") node.setAttribute("data-xlsx-chart-selection-mode", "seriesFirst");
|
|
114
|
+
if (kind === "legendEntry") node.setAttribute("data-xlsx-chart-element-kind", kind);
|
|
115
|
+
const style = node.style;
|
|
116
|
+
style.cursor = "pointer";
|
|
117
|
+
style.pointerEvents = "all";
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return svg;
|
|
121
|
+
}
|
|
122
|
+
function renderSharedChart(renderer, chart, source, width, height, prefix) {
|
|
123
|
+
try {
|
|
124
|
+
const svg = renderer.renderChart(source.xml, {
|
|
125
|
+
themeColors: source.themeColors,
|
|
126
|
+
themeOverrideXml: source.themeOverrideXml,
|
|
127
|
+
styleXml: source.styleXml,
|
|
128
|
+
colorStyleXml: source.colorStyleXml,
|
|
129
|
+
width,
|
|
130
|
+
height,
|
|
131
|
+
interactive: true,
|
|
132
|
+
spreadsheetDefaults: true,
|
|
133
|
+
fontFamily: chart.fontFamily,
|
|
134
|
+
data: {
|
|
135
|
+
title: chart.title,
|
|
136
|
+
series: chart.series.map((series) => ({
|
|
137
|
+
chartType: source.kind,
|
|
138
|
+
name: series.name,
|
|
139
|
+
points: Array.from({ length: Math.max(series.values.length, series.categories.length) }, (_2, index) => {
|
|
140
|
+
const value = series.values[index];
|
|
141
|
+
const label = series.categories[index];
|
|
142
|
+
return {
|
|
143
|
+
index,
|
|
144
|
+
value: value == null ? null : String(value),
|
|
145
|
+
categories: series.categories.length || _optionalChain([series, 'access', _3 => _3.categoriesRef, 'optionalAccess', _4 => _4.formula]) ? [{ level: 0, label: label == null ? "" : String(label) }] : []
|
|
146
|
+
};
|
|
147
|
+
})
|
|
148
|
+
}))
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
return svg ? safeChartSvg(svg, prefix) : null;
|
|
152
|
+
} catch (e) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function selectionHandles(svg, chartId, selected) {
|
|
157
|
+
if (!selected || selected.chartId !== chartId || selected.kind === "chart") return null;
|
|
158
|
+
return Array.from(svg.querySelectorAll("[data-chart-point]")).map((node, index) => {
|
|
159
|
+
if (Number(node.getAttribute("data-chart-series")) !== selected.seriesIndex || selected.kind === "point" && Number(node.getAttribute("data-chart-point")) !== selected.pointIndex) return null;
|
|
160
|
+
if (node.getAttribute("data-chart-kind") === "bar") {
|
|
161
|
+
return _chunkM55TBS4Xcjs.renderSelectionRectHandles.call(void 0,
|
|
162
|
+
String(index),
|
|
163
|
+
Number(node.getAttribute("x")),
|
|
164
|
+
Number(node.getAttribute("y")),
|
|
165
|
+
Number(node.getAttribute("width")),
|
|
166
|
+
Number(node.getAttribute("height"))
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
if (!node.hasAttribute("data-chart-x") || !node.hasAttribute("data-chart-y")) return null;
|
|
170
|
+
return _chunkM55TBS4Xcjs.renderSelectionRectHandles.call(void 0,
|
|
171
|
+
String(index),
|
|
172
|
+
Number(node.getAttribute("data-chart-x")) - 4,
|
|
173
|
+
Number(node.getAttribute("data-chart-y")) - 4,
|
|
174
|
+
8,
|
|
175
|
+
8
|
|
176
|
+
);
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
function SharedChartSvg(props) {
|
|
180
|
+
const { chart, rect, renderer, source, selectedChartElement, fallback } = props;
|
|
181
|
+
const id = _chunkAZWBTFJIcjs.g.call(void 0, );
|
|
182
|
+
const width = Math.max(1, rect.width);
|
|
183
|
+
const height = Math.max(1, rect.height);
|
|
184
|
+
const svg = _chunkAZWBTFJIcjs.T.call(void 0, () => renderSharedChart(
|
|
185
|
+
renderer,
|
|
186
|
+
chart,
|
|
187
|
+
source,
|
|
188
|
+
width,
|
|
189
|
+
height,
|
|
190
|
+
"oc-" + id.replace(/[^\w-]/g, "") + "-"
|
|
191
|
+
), [renderer, chart, source, width, height, id]);
|
|
192
|
+
const graphics = _chunkAZWBTFJIcjs.A.call(void 0, null);
|
|
193
|
+
_chunkAZWBTFJIcjs._.call(void 0, () => {
|
|
194
|
+
if (graphics.current && svg) graphics.current.replaceChildren(svg);
|
|
195
|
+
}, [svg]);
|
|
196
|
+
const handles = _chunkAZWBTFJIcjs.T.call(void 0,
|
|
197
|
+
() => svg && selectionHandles(svg, chart.id, selectedChartElement),
|
|
198
|
+
[svg, chart.id, selectedChartElement]
|
|
199
|
+
);
|
|
200
|
+
const { handlePointerDown, handleDoubleClick } = _chunkM55TBS4Xcjs.useChartEvents.call(void 0, props);
|
|
201
|
+
if (!svg) return /* @__PURE__ */ _chunkAZWBTFJIcjs.u.call(void 0, _chunkAZWBTFJIcjs.S, { children: fallback });
|
|
202
|
+
return /* @__PURE__ */ _chunkAZWBTFJIcjs.u.call(void 0,
|
|
203
|
+
"svg",
|
|
204
|
+
{
|
|
205
|
+
"aria-label": _nullishCoalesce(_nullishCoalesce(chart.title, () => ( chart.name)), () => ( "Chart")),
|
|
206
|
+
"data-xlsx-chart-renderer": "office-charts",
|
|
207
|
+
onDoubleClick: handleDoubleClick,
|
|
208
|
+
onPointerDown: handlePointerDown,
|
|
209
|
+
role: "img",
|
|
210
|
+
style: { display: "block", height: "100%", pointerEvents: "auto", width: "100%" },
|
|
211
|
+
viewBox: `0 0 ${width} ${height}`,
|
|
212
|
+
children: [
|
|
213
|
+
/* @__PURE__ */ _chunkAZWBTFJIcjs.u.call(void 0, "g", { ref: graphics }),
|
|
214
|
+
handles
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
exports.SharedChartSvg = SharedChartSvg;
|
|
222
|
+
//# sourceMappingURL=shared-chart-DVC5S2P6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/shared-chart-DVC5S2P6.cjs","../src/shared-chart.tsx"],"names":["_"],"mappings":"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","file":"/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/shared-chart-DVC5S2P6.cjs","sourcesContent":[null,"import * as React from \"react\";\nimport type { OfficeCharts } from \"@extend-ai/rust-office-charts\";\nimport { renderSelectionRectHandles, useChartEvents } from \"./chart-interaction\";\nimport type { ChartSvgProps } from \"./chart-renderer\";\nimport type { XlsxChart, XlsxChartRenderSource, XlsxChartElementSelection } from \"./types\";\n\nconst svgNamespace = \"http://www.w3.org/2000/svg\";\nconst allowedElements = new Set([\n \"svg\", \"g\", \"defs\", \"clipPath\", \"rect\", \"circle\", \"ellipse\", \"path\", \"line\", \"polyline\", \"polygon\",\n \"text\", \"tspan\", \"linearGradient\", \"radialGradient\", \"stop\", \"pattern\"\n]);\nconst plainAttributes = new Set([\n \"x\", \"y\", \"width\", \"height\", \"x1\", \"x2\", \"y1\", \"y2\", \"cx\", \"cy\", \"fx\", \"fy\", \"r\", \"rx\", \"ry\", \"fr\",\n \"viewBox\", \"transform\", \"d\", \"points\", \"font-family\", \"font-weight\", \"font-size\", \"text-anchor\",\n \"dominant-baseline\", \"stroke-linecap\", \"stroke-linejoin\", \"stroke-width\", \"stroke-dasharray\",\n \"opacity\", \"fill-opacity\", \"stroke-opacity\", \"fill-rule\", \"shape-rendering\", \"offset\", \"stop-opacity\",\n \"gradientUnits\", \"gradientTransform\", \"patternUnits\", \"patternContentUnits\",\n \"data-chart-kind\", \"data-chart-series\", \"data-chart-point\", \"data-chart-x\", \"data-chart-y\"\n]);\n\nfunction safeChartSvg(markup: string, prefix: string) {\n const svg = new DOMParser().parseFromString(markup, \"image/svg+xml\").documentElement;\n if (svg.localName !== \"svg\" || svg.namespaceURI !== svgNamespace) return null;\n\n // Only local paint servers and inert geometry can enter the document.\n for (const node of [svg, ...Array.from(svg.querySelectorAll(\"*\"))]) {\n if (node.namespaceURI !== svgNamespace || !allowedElements.has(node.localName)) return null;\n for (const { name, value } of Array.from(node.attributes)) {\n if (plainAttributes.has(name) || name === \"xmlns\") continue;\n if (name === \"id\" && /^[\\w-]+$/.test(value)) {\n node.setAttribute(name, prefix + value);\n continue;\n }\n if (name === \"href\" && /^(linearGradient|radialGradient)$/.test(node.localName) && /^#[\\w-]+$/.test(value)) {\n node.setAttribute(name, \"#\" + prefix + value.slice(1));\n continue;\n }\n if ([\"fill\", \"stroke\", \"stop-color\", \"clip-path\"].includes(name)) {\n const local = /^url\\(#([\\w-]+)\\)$/.exec(value);\n if (local) {\n node.setAttribute(name, \"url(#\" + prefix + local[1] + \")\");\n continue;\n }\n if (/^(?:#[\\da-f]{3,8}|[a-z]+)$/i.test(value)) continue;\n }\n node.removeAttribute(name);\n }\n\n if (node.hasAttribute(\"data-chart-series\")) {\n node.setAttribute(\"data-xlsx-chart-series-index\", node.getAttribute(\"data-chart-series\")!);\n const point = node.getAttribute(\"data-chart-point\");\n if (point != null) node.setAttribute(\"data-xlsx-chart-point-index\", point);\n const kind = node.getAttribute(\"data-chart-kind\");\n if (kind === \"bar\") node.setAttribute(\"data-xlsx-chart-selection-mode\", \"seriesFirst\");\n if (kind === \"legendEntry\") node.setAttribute(\"data-xlsx-chart-element-kind\", kind);\n const style = (node as SVGElement).style;\n style.cursor = \"pointer\";\n style.pointerEvents = \"all\";\n }\n }\n return svg;\n}\n\nfunction renderSharedChart(renderer: OfficeCharts, chart: XlsxChart, source: XlsxChartRenderSource, width: number, height: number, prefix: string) {\n try {\n const svg = renderer.renderChart(source.xml, {\n themeColors: source.themeColors,\n themeOverrideXml: source.themeOverrideXml,\n styleXml: source.styleXml,\n colorStyleXml: source.colorStyleXml,\n width, height,\n interactive: true,\n spreadsheetDefaults: true,\n fontFamily: chart.fontFamily,\n data: {\n title: chart.title,\n series: chart.series.map((series) => ({\n chartType: source.kind,\n name: series.name,\n points: Array.from({ length: Math.max(series.values.length, series.categories.length) }, (_, index) => {\n const value = series.values[index];\n const label = series.categories[index];\n return {\n index,\n value: value == null ? null : String(value),\n categories: series.categories.length || series.categoriesRef?.formula\n ? [{ level: 0, label: label == null ? \"\" : String(label) }]\n : []\n };\n })\n }))\n }\n });\n return svg ? safeChartSvg(svg, prefix) : null;\n } catch {\n return null;\n }\n}\n\nfunction selectionHandles(svg: Element, chartId: string, selected: XlsxChartElementSelection | null | undefined) {\n if (!selected || selected.chartId !== chartId || selected.kind === \"chart\") return null;\n return Array.from(svg.querySelectorAll(\"[data-chart-point]\")).map((node, index) => {\n if (Number(node.getAttribute(\"data-chart-series\")) !== selected.seriesIndex\n || (selected.kind === \"point\" && Number(node.getAttribute(\"data-chart-point\")) !== selected.pointIndex)) return null;\n if (node.getAttribute(\"data-chart-kind\") === \"bar\") {\n return renderSelectionRectHandles(String(index), Number(node.getAttribute(\"x\")), Number(node.getAttribute(\"y\")),\n Number(node.getAttribute(\"width\")), Number(node.getAttribute(\"height\")));\n }\n if (!node.hasAttribute(\"data-chart-x\") || !node.hasAttribute(\"data-chart-y\")) return null;\n return renderSelectionRectHandles(String(index), Number(node.getAttribute(\"data-chart-x\")) - 4,\n Number(node.getAttribute(\"data-chart-y\")) - 4, 8, 8);\n });\n}\n\nexport function SharedChartSvg(props: ChartSvgProps & {\n source: XlsxChartRenderSource;\n renderer: OfficeCharts;\n fallback: React.ReactNode;\n}) {\n const { chart, rect, renderer, source, selectedChartElement, fallback } = props;\n const id = React.useId();\n const width = Math.max(1, rect.width);\n const height = Math.max(1, rect.height);\n const svg = React.useMemo(() => renderSharedChart(renderer, chart, source, width, height,\n \"oc-\" + id.replace(/[^\\w-]/g, \"\") + \"-\"), [renderer, chart, source, width, height, id]);\n const graphics = React.useRef<SVGGElement>(null);\n React.useLayoutEffect(() => {\n if (graphics.current && svg) graphics.current.replaceChildren(svg);\n }, [svg]);\n const handles = React.useMemo(() => svg && selectionHandles(svg, chart.id, selectedChartElement),\n [svg, chart.id, selectedChartElement]);\n const { handlePointerDown, handleDoubleClick } = useChartEvents(props);\n if (!svg) return <>{fallback}</>;\n return (\n <svg\n aria-label={chart.title ?? chart.name ?? \"Chart\"}\n data-xlsx-chart-renderer=\"office-charts\"\n onDoubleClick={handleDoubleClick}\n onPointerDown={handlePointerDown}\n role=\"img\"\n style={{ display: \"block\", height: \"100%\", pointerEvents: \"auto\", width: \"100%\" }}\n viewBox={`0 0 ${width} ${height}`}\n >\n <g ref={graphics} />\n {handles}\n </svg>\n );\n}\n"]}
|
|
@@ -0,0 +1,216 @@
|
|
|
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; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkIDNIGBUMcjs = require('./chunk-IDNIGBUM.cjs');
|
|
5
|
+
require('./chunk-AD4CGQN2.cjs');
|
|
6
|
+
|
|
7
|
+
// src/shared-chart.tsx
|
|
8
|
+
var _react = require('react'); var React = _interopRequireWildcard(_react);
|
|
9
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
10
|
+
var svgNamespace = "http://www.w3.org/2000/svg";
|
|
11
|
+
var allowedElements = /* @__PURE__ */ new Set([
|
|
12
|
+
"svg",
|
|
13
|
+
"g",
|
|
14
|
+
"defs",
|
|
15
|
+
"clipPath",
|
|
16
|
+
"rect",
|
|
17
|
+
"circle",
|
|
18
|
+
"ellipse",
|
|
19
|
+
"path",
|
|
20
|
+
"line",
|
|
21
|
+
"polyline",
|
|
22
|
+
"polygon",
|
|
23
|
+
"text",
|
|
24
|
+
"tspan",
|
|
25
|
+
"linearGradient",
|
|
26
|
+
"radialGradient",
|
|
27
|
+
"stop",
|
|
28
|
+
"pattern"
|
|
29
|
+
]);
|
|
30
|
+
var plainAttributes = /* @__PURE__ */ new Set([
|
|
31
|
+
"x",
|
|
32
|
+
"y",
|
|
33
|
+
"width",
|
|
34
|
+
"height",
|
|
35
|
+
"x1",
|
|
36
|
+
"x2",
|
|
37
|
+
"y1",
|
|
38
|
+
"y2",
|
|
39
|
+
"cx",
|
|
40
|
+
"cy",
|
|
41
|
+
"fx",
|
|
42
|
+
"fy",
|
|
43
|
+
"r",
|
|
44
|
+
"rx",
|
|
45
|
+
"ry",
|
|
46
|
+
"fr",
|
|
47
|
+
"viewBox",
|
|
48
|
+
"transform",
|
|
49
|
+
"d",
|
|
50
|
+
"points",
|
|
51
|
+
"font-family",
|
|
52
|
+
"font-weight",
|
|
53
|
+
"font-size",
|
|
54
|
+
"text-anchor",
|
|
55
|
+
"dominant-baseline",
|
|
56
|
+
"stroke-linecap",
|
|
57
|
+
"stroke-linejoin",
|
|
58
|
+
"stroke-width",
|
|
59
|
+
"stroke-dasharray",
|
|
60
|
+
"opacity",
|
|
61
|
+
"fill-opacity",
|
|
62
|
+
"stroke-opacity",
|
|
63
|
+
"fill-rule",
|
|
64
|
+
"shape-rendering",
|
|
65
|
+
"offset",
|
|
66
|
+
"stop-opacity",
|
|
67
|
+
"gradientUnits",
|
|
68
|
+
"gradientTransform",
|
|
69
|
+
"patternUnits",
|
|
70
|
+
"patternContentUnits",
|
|
71
|
+
"data-chart-kind",
|
|
72
|
+
"data-chart-series",
|
|
73
|
+
"data-chart-point",
|
|
74
|
+
"data-chart-x",
|
|
75
|
+
"data-chart-y"
|
|
76
|
+
]);
|
|
77
|
+
function safeChartSvg(markup, prefix) {
|
|
78
|
+
const svg = new DOMParser().parseFromString(markup, "image/svg+xml").documentElement;
|
|
79
|
+
if (svg.localName !== "svg" || svg.namespaceURI !== svgNamespace) return null;
|
|
80
|
+
for (const node of [svg, ...Array.from(svg.querySelectorAll("*"))]) {
|
|
81
|
+
if (node.namespaceURI !== svgNamespace || !allowedElements.has(node.localName)) return null;
|
|
82
|
+
for (const { name, value } of Array.from(node.attributes)) {
|
|
83
|
+
if (plainAttributes.has(name) || name === "xmlns") continue;
|
|
84
|
+
if (name === "id" && /^[\w-]+$/.test(value)) {
|
|
85
|
+
node.setAttribute(name, prefix + value);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (name === "href" && /^(linearGradient|radialGradient)$/.test(node.localName) && /^#[\w-]+$/.test(value)) {
|
|
89
|
+
node.setAttribute(name, "#" + prefix + value.slice(1));
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (["fill", "stroke", "stop-color", "clip-path"].includes(name)) {
|
|
93
|
+
const local = /^url\(#([\w-]+)\)$/.exec(value);
|
|
94
|
+
if (local) {
|
|
95
|
+
node.setAttribute(name, "url(#" + prefix + local[1] + ")");
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
if (/^(?:#[\da-f]{3,8}|[a-z]+)$/i.test(value)) continue;
|
|
99
|
+
}
|
|
100
|
+
node.removeAttribute(name);
|
|
101
|
+
}
|
|
102
|
+
if (node.hasAttribute("data-chart-series")) {
|
|
103
|
+
node.setAttribute("data-xlsx-chart-series-index", node.getAttribute("data-chart-series"));
|
|
104
|
+
const point = node.getAttribute("data-chart-point");
|
|
105
|
+
if (point != null) node.setAttribute("data-xlsx-chart-point-index", point);
|
|
106
|
+
const kind = node.getAttribute("data-chart-kind");
|
|
107
|
+
if (kind === "bar") node.setAttribute("data-xlsx-chart-selection-mode", "seriesFirst");
|
|
108
|
+
if (kind === "legendEntry") node.setAttribute("data-xlsx-chart-element-kind", kind);
|
|
109
|
+
const style = node.style;
|
|
110
|
+
style.cursor = "pointer";
|
|
111
|
+
style.pointerEvents = "all";
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return svg;
|
|
115
|
+
}
|
|
116
|
+
function renderSharedChart(renderer, chart, source, width, height, prefix) {
|
|
117
|
+
try {
|
|
118
|
+
const svg = renderer.renderChart(source.xml, {
|
|
119
|
+
themeColors: source.themeColors,
|
|
120
|
+
themeOverrideXml: source.themeOverrideXml,
|
|
121
|
+
styleXml: source.styleXml,
|
|
122
|
+
colorStyleXml: source.colorStyleXml,
|
|
123
|
+
width,
|
|
124
|
+
height,
|
|
125
|
+
interactive: true,
|
|
126
|
+
spreadsheetDefaults: true,
|
|
127
|
+
fontFamily: chart.fontFamily,
|
|
128
|
+
data: {
|
|
129
|
+
title: chart.title,
|
|
130
|
+
series: chart.series.map((series) => ({
|
|
131
|
+
chartType: source.kind,
|
|
132
|
+
name: series.name,
|
|
133
|
+
points: Array.from({ length: Math.max(series.values.length, series.categories.length) }, (_, index) => {
|
|
134
|
+
const value = series.values[index];
|
|
135
|
+
const label = series.categories[index];
|
|
136
|
+
return {
|
|
137
|
+
index,
|
|
138
|
+
value: value == null ? null : String(value),
|
|
139
|
+
categories: series.categories.length || _optionalChain([series, 'access', _2 => _2.categoriesRef, 'optionalAccess', _3 => _3.formula]) ? [{ level: 0, label: label == null ? "" : String(label) }] : []
|
|
140
|
+
};
|
|
141
|
+
})
|
|
142
|
+
}))
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
return svg ? safeChartSvg(svg, prefix) : null;
|
|
146
|
+
} catch (e) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function selectionHandles(svg, chartId, selected) {
|
|
151
|
+
if (!selected || selected.chartId !== chartId || selected.kind === "chart") return null;
|
|
152
|
+
return Array.from(svg.querySelectorAll("[data-chart-point]")).map((node, index) => {
|
|
153
|
+
if (Number(node.getAttribute("data-chart-series")) !== selected.seriesIndex || selected.kind === "point" && Number(node.getAttribute("data-chart-point")) !== selected.pointIndex) return null;
|
|
154
|
+
if (node.getAttribute("data-chart-kind") === "bar") {
|
|
155
|
+
return _chunkIDNIGBUMcjs.renderSelectionRectHandles.call(void 0,
|
|
156
|
+
String(index),
|
|
157
|
+
Number(node.getAttribute("x")),
|
|
158
|
+
Number(node.getAttribute("y")),
|
|
159
|
+
Number(node.getAttribute("width")),
|
|
160
|
+
Number(node.getAttribute("height"))
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
if (!node.hasAttribute("data-chart-x") || !node.hasAttribute("data-chart-y")) return null;
|
|
164
|
+
return _chunkIDNIGBUMcjs.renderSelectionRectHandles.call(void 0,
|
|
165
|
+
String(index),
|
|
166
|
+
Number(node.getAttribute("data-chart-x")) - 4,
|
|
167
|
+
Number(node.getAttribute("data-chart-y")) - 4,
|
|
168
|
+
8,
|
|
169
|
+
8
|
|
170
|
+
);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
function SharedChartSvg(props) {
|
|
174
|
+
const { chart, rect, renderer, source, selectedChartElement, fallback } = props;
|
|
175
|
+
const id = React.useId();
|
|
176
|
+
const width = Math.max(1, rect.width);
|
|
177
|
+
const height = Math.max(1, rect.height);
|
|
178
|
+
const svg = React.useMemo(() => renderSharedChart(
|
|
179
|
+
renderer,
|
|
180
|
+
chart,
|
|
181
|
+
source,
|
|
182
|
+
width,
|
|
183
|
+
height,
|
|
184
|
+
"oc-" + id.replace(/[^\w-]/g, "") + "-"
|
|
185
|
+
), [renderer, chart, source, width, height, id]);
|
|
186
|
+
const graphics = React.useRef(null);
|
|
187
|
+
React.useLayoutEffect(() => {
|
|
188
|
+
if (graphics.current && svg) graphics.current.replaceChildren(svg);
|
|
189
|
+
}, [svg]);
|
|
190
|
+
const handles = React.useMemo(
|
|
191
|
+
() => svg && selectionHandles(svg, chart.id, selectedChartElement),
|
|
192
|
+
[svg, chart.id, selectedChartElement]
|
|
193
|
+
);
|
|
194
|
+
const { handlePointerDown, handleDoubleClick } = _chunkIDNIGBUMcjs.useChartEvents.call(void 0, props);
|
|
195
|
+
if (!svg) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: fallback });
|
|
196
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
197
|
+
"svg",
|
|
198
|
+
{
|
|
199
|
+
"aria-label": _nullishCoalesce(_nullishCoalesce(chart.title, () => ( chart.name)), () => ( "Chart")),
|
|
200
|
+
"data-xlsx-chart-renderer": "office-charts",
|
|
201
|
+
onDoubleClick: handleDoubleClick,
|
|
202
|
+
onPointerDown: handlePointerDown,
|
|
203
|
+
role: "img",
|
|
204
|
+
style: { display: "block", height: "100%", pointerEvents: "auto", width: "100%" },
|
|
205
|
+
viewBox: `0 0 ${width} ${height}`,
|
|
206
|
+
children: [
|
|
207
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "g", { ref: graphics }),
|
|
208
|
+
handles
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
exports.SharedChartSvg = SharedChartSvg;
|
|
216
|
+
//# sourceMappingURL=shared-chart-MFQSQG4K.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/shared-chart-MFQSQG4K.cjs","../src/shared-chart.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/shared-chart-MFQSQG4K.cjs","sourcesContent":[null,"import * as React from \"react\";\nimport type { OfficeCharts } from \"@extend-ai/rust-office-charts\";\nimport { renderSelectionRectHandles, useChartEvents } from \"./chart-interaction\";\nimport type { ChartSvgProps } from \"./chart-renderer\";\nimport type { XlsxChart, XlsxChartRenderSource, XlsxChartElementSelection } from \"./types\";\n\nconst svgNamespace = \"http://www.w3.org/2000/svg\";\nconst allowedElements = new Set([\n \"svg\", \"g\", \"defs\", \"clipPath\", \"rect\", \"circle\", \"ellipse\", \"path\", \"line\", \"polyline\", \"polygon\",\n \"text\", \"tspan\", \"linearGradient\", \"radialGradient\", \"stop\", \"pattern\"\n]);\nconst plainAttributes = new Set([\n \"x\", \"y\", \"width\", \"height\", \"x1\", \"x2\", \"y1\", \"y2\", \"cx\", \"cy\", \"fx\", \"fy\", \"r\", \"rx\", \"ry\", \"fr\",\n \"viewBox\", \"transform\", \"d\", \"points\", \"font-family\", \"font-weight\", \"font-size\", \"text-anchor\",\n \"dominant-baseline\", \"stroke-linecap\", \"stroke-linejoin\", \"stroke-width\", \"stroke-dasharray\",\n \"opacity\", \"fill-opacity\", \"stroke-opacity\", \"fill-rule\", \"shape-rendering\", \"offset\", \"stop-opacity\",\n \"gradientUnits\", \"gradientTransform\", \"patternUnits\", \"patternContentUnits\",\n \"data-chart-kind\", \"data-chart-series\", \"data-chart-point\", \"data-chart-x\", \"data-chart-y\"\n]);\n\nfunction safeChartSvg(markup: string, prefix: string) {\n const svg = new DOMParser().parseFromString(markup, \"image/svg+xml\").documentElement;\n if (svg.localName !== \"svg\" || svg.namespaceURI !== svgNamespace) return null;\n\n // Only local paint servers and inert geometry can enter the document.\n for (const node of [svg, ...Array.from(svg.querySelectorAll(\"*\"))]) {\n if (node.namespaceURI !== svgNamespace || !allowedElements.has(node.localName)) return null;\n for (const { name, value } of Array.from(node.attributes)) {\n if (plainAttributes.has(name) || name === \"xmlns\") continue;\n if (name === \"id\" && /^[\\w-]+$/.test(value)) {\n node.setAttribute(name, prefix + value);\n continue;\n }\n if (name === \"href\" && /^(linearGradient|radialGradient)$/.test(node.localName) && /^#[\\w-]+$/.test(value)) {\n node.setAttribute(name, \"#\" + prefix + value.slice(1));\n continue;\n }\n if ([\"fill\", \"stroke\", \"stop-color\", \"clip-path\"].includes(name)) {\n const local = /^url\\(#([\\w-]+)\\)$/.exec(value);\n if (local) {\n node.setAttribute(name, \"url(#\" + prefix + local[1] + \")\");\n continue;\n }\n if (/^(?:#[\\da-f]{3,8}|[a-z]+)$/i.test(value)) continue;\n }\n node.removeAttribute(name);\n }\n\n if (node.hasAttribute(\"data-chart-series\")) {\n node.setAttribute(\"data-xlsx-chart-series-index\", node.getAttribute(\"data-chart-series\")!);\n const point = node.getAttribute(\"data-chart-point\");\n if (point != null) node.setAttribute(\"data-xlsx-chart-point-index\", point);\n const kind = node.getAttribute(\"data-chart-kind\");\n if (kind === \"bar\") node.setAttribute(\"data-xlsx-chart-selection-mode\", \"seriesFirst\");\n if (kind === \"legendEntry\") node.setAttribute(\"data-xlsx-chart-element-kind\", kind);\n const style = (node as SVGElement).style;\n style.cursor = \"pointer\";\n style.pointerEvents = \"all\";\n }\n }\n return svg;\n}\n\nfunction renderSharedChart(renderer: OfficeCharts, chart: XlsxChart, source: XlsxChartRenderSource, width: number, height: number, prefix: string) {\n try {\n const svg = renderer.renderChart(source.xml, {\n themeColors: source.themeColors,\n themeOverrideXml: source.themeOverrideXml,\n styleXml: source.styleXml,\n colorStyleXml: source.colorStyleXml,\n width, height,\n interactive: true,\n spreadsheetDefaults: true,\n fontFamily: chart.fontFamily,\n data: {\n title: chart.title,\n series: chart.series.map((series) => ({\n chartType: source.kind,\n name: series.name,\n points: Array.from({ length: Math.max(series.values.length, series.categories.length) }, (_, index) => {\n const value = series.values[index];\n const label = series.categories[index];\n return {\n index,\n value: value == null ? null : String(value),\n categories: series.categories.length || series.categoriesRef?.formula\n ? [{ level: 0, label: label == null ? \"\" : String(label) }]\n : []\n };\n })\n }))\n }\n });\n return svg ? safeChartSvg(svg, prefix) : null;\n } catch {\n return null;\n }\n}\n\nfunction selectionHandles(svg: Element, chartId: string, selected: XlsxChartElementSelection | null | undefined) {\n if (!selected || selected.chartId !== chartId || selected.kind === \"chart\") return null;\n return Array.from(svg.querySelectorAll(\"[data-chart-point]\")).map((node, index) => {\n if (Number(node.getAttribute(\"data-chart-series\")) !== selected.seriesIndex\n || (selected.kind === \"point\" && Number(node.getAttribute(\"data-chart-point\")) !== selected.pointIndex)) return null;\n if (node.getAttribute(\"data-chart-kind\") === \"bar\") {\n return renderSelectionRectHandles(String(index), Number(node.getAttribute(\"x\")), Number(node.getAttribute(\"y\")),\n Number(node.getAttribute(\"width\")), Number(node.getAttribute(\"height\")));\n }\n if (!node.hasAttribute(\"data-chart-x\") || !node.hasAttribute(\"data-chart-y\")) return null;\n return renderSelectionRectHandles(String(index), Number(node.getAttribute(\"data-chart-x\")) - 4,\n Number(node.getAttribute(\"data-chart-y\")) - 4, 8, 8);\n });\n}\n\nexport function SharedChartSvg(props: ChartSvgProps & {\n source: XlsxChartRenderSource;\n renderer: OfficeCharts;\n fallback: React.ReactNode;\n}) {\n const { chart, rect, renderer, source, selectedChartElement, fallback } = props;\n const id = React.useId();\n const width = Math.max(1, rect.width);\n const height = Math.max(1, rect.height);\n const svg = React.useMemo(() => renderSharedChart(renderer, chart, source, width, height,\n \"oc-\" + id.replace(/[^\\w-]/g, \"\") + \"-\"), [renderer, chart, source, width, height, id]);\n const graphics = React.useRef<SVGGElement>(null);\n React.useLayoutEffect(() => {\n if (graphics.current && svg) graphics.current.replaceChildren(svg);\n }, [svg]);\n const handles = React.useMemo(() => svg && selectionHandles(svg, chart.id, selectedChartElement),\n [svg, chart.id, selectedChartElement]);\n const { handlePointerDown, handleDoubleClick } = useChartEvents(props);\n if (!svg) return <>{fallback}</>;\n return (\n <svg\n aria-label={chart.title ?? chart.name ?? \"Chart\"}\n data-xlsx-chart-renderer=\"office-charts\"\n onDoubleClick={handleDoubleClick}\n onPointerDown={handlePointerDown}\n role=\"img\"\n style={{ display: \"block\", height: \"100%\", pointerEvents: \"auto\", width: \"100%\" }}\n viewBox={`0 0 ${width} ${height}`}\n >\n <g ref={graphics} />\n {handles}\n </svg>\n );\n}\n"]}
|
|
@@ -12,12 +12,14 @@ var _chunkO3V2MCOCcjs = require('./chunk-O3V2MCOC.cjs');
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
var _chunk5ERNVHSOcjs = require('./chunk-5ERNVHSO.cjs');
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
|
|
22
|
+
var _chunkAZWBTFJIcjs = require('./chunk-AZWBTFJI.cjs');
|
|
21
23
|
require('./chunk-AD4CGQN2.cjs');
|
|
22
24
|
|
|
23
25
|
// src/surface-regl.tsx
|
|
@@ -114,7 +116,7 @@ function resolveSurfaceBandPaletteColor(chart, palette, domain, value) {
|
|
|
114
116
|
if (explicitFill) return explicitFill;
|
|
115
117
|
const themeColors = _optionalChain([chart, 'access', _25 => _25.raw, 'optionalAccess', _26 => _26.builtinThemeColors]);
|
|
116
118
|
const paletteCount = Math.trunc((domain.safeMax - domain.minValue) / (domain.ticks[1] - domain.ticks[0])) + 1;
|
|
117
|
-
const builtinColor = themeColors ?
|
|
119
|
+
const builtinColor = themeColors ? _chunk5ERNVHSOcjs.resolveBuiltinChartColor.call(void 0, _chunk5ERNVHSOcjs.getBuiltinChartColor.call(void 0, chart.chartStyleId, bandIndex % paletteCount, paletteCount), themeColors) : void 0;
|
|
118
120
|
if (builtinColor) return builtinColor;
|
|
119
121
|
const stops = getSurfaceColorStops(chart, palette);
|
|
120
122
|
if (stops.length === 0) {
|
|
@@ -145,7 +147,7 @@ function resolveSurfaceWireframeColor(chart, palette, domain, value) {
|
|
|
145
147
|
const bandIndex = resolveSurfaceBandIndex(domain, value);
|
|
146
148
|
const themeColors = _optionalChain([chart, 'access', _29 => _29.raw, 'optionalAccess', _30 => _30.builtinThemeColors]);
|
|
147
149
|
const paletteCount = Math.trunc((domain.safeMax - domain.minValue) / (domain.ticks[1] - domain.ticks[0])) + 1;
|
|
148
|
-
const builtinLine = themeColors ?
|
|
150
|
+
const builtinLine = themeColors ? _chunk5ERNVHSOcjs.resolveBuiltinChartColor.call(void 0, _chunk5ERNVHSOcjs.getBuiltinChartSurfaceLine.call(void 0, chart.chartStyleId, bandIndex, paletteCount), themeColors) : void 0;
|
|
149
151
|
return _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(resolveSurfaceBandFormatColor(chart, "bandFormatLineColors", bandIndex), () => ( resolveExplicitSurfaceSeriesColor(chart, "line"))), () => ( builtinLine)), () => ( resolveSurfaceBandPaletteColor(chart, palette, domain, value)));
|
|
150
152
|
}
|
|
151
153
|
function colorToRgba(color, alpha = 1) {
|
|
@@ -481,7 +483,7 @@ function buildSurfaceMesh(chart, palette, layout) {
|
|
|
481
483
|
wallPositions: new Float32Array(wallPositions)
|
|
482
484
|
};
|
|
483
485
|
}
|
|
484
|
-
var MemoSurfaceChartComposite =
|
|
486
|
+
var MemoSurfaceChartComposite = _chunkAZWBTFJIcjs.N.call(void 0, function MemoSurfaceChartComposite2({
|
|
485
487
|
background,
|
|
486
488
|
borderColor,
|
|
487
489
|
chart,
|
|
@@ -493,11 +495,11 @@ var MemoSurfaceChartComposite = _chunkCJBI5F6Vcjs.N.call(void 0, function MemoSu
|
|
|
493
495
|
palette,
|
|
494
496
|
fallback
|
|
495
497
|
}) {
|
|
496
|
-
const canvasRef =
|
|
497
|
-
const [ready, setReady] =
|
|
498
|
-
const [failed, setFailed] =
|
|
498
|
+
const canvasRef = _chunkAZWBTFJIcjs.A.call(void 0, null);
|
|
499
|
+
const [ready, setReady] = _chunkAZWBTFJIcjs.d.call(void 0, false);
|
|
500
|
+
const [failed, setFailed] = _chunkAZWBTFJIcjs.d.call(void 0, false);
|
|
499
501
|
const isContour = isContourSurfaceChart(chart);
|
|
500
|
-
|
|
502
|
+
_chunkAZWBTFJIcjs.h.call(void 0, () => {
|
|
501
503
|
if (isContour) {
|
|
502
504
|
setReady(false);
|
|
503
505
|
setFailed(false);
|
|
@@ -674,7 +676,7 @@ var MemoSurfaceChartComposite = _chunkCJBI5F6Vcjs.N.call(void 0, function MemoSu
|
|
|
674
676
|
palette
|
|
675
677
|
]);
|
|
676
678
|
const shouldRenderFallback = isContour || failed || !ready;
|
|
677
|
-
return /* @__PURE__ */
|
|
679
|
+
return /* @__PURE__ */ _chunkAZWBTFJIcjs.u.call(void 0,
|
|
678
680
|
"div",
|
|
679
681
|
{
|
|
680
682
|
"aria-label": _nullishCoalesce(_nullishCoalesce(chart.title, () => ( chart.name)), () => ( "Chart")),
|
|
@@ -691,7 +693,7 @@ var MemoSurfaceChartComposite = _chunkCJBI5F6Vcjs.N.call(void 0, function MemoSu
|
|
|
691
693
|
width: "100%"
|
|
692
694
|
},
|
|
693
695
|
children: [
|
|
694
|
-
/* @__PURE__ */
|
|
696
|
+
/* @__PURE__ */ _chunkAZWBTFJIcjs.u.call(void 0,
|
|
695
697
|
"canvas",
|
|
696
698
|
{
|
|
697
699
|
ref: canvasRef,
|
|
@@ -704,7 +706,7 @@ var MemoSurfaceChartComposite = _chunkCJBI5F6Vcjs.N.call(void 0, function MemoSu
|
|
|
704
706
|
}
|
|
705
707
|
}
|
|
706
708
|
),
|
|
707
|
-
/* @__PURE__ */
|
|
709
|
+
/* @__PURE__ */ _chunkAZWBTFJIcjs.u.call(void 0,
|
|
708
710
|
"svg",
|
|
709
711
|
{
|
|
710
712
|
onDoubleClick,
|
|
@@ -724,4 +726,4 @@ var MemoSurfaceChartComposite = _chunkCJBI5F6Vcjs.N.call(void 0, function MemoSu
|
|
|
724
726
|
|
|
725
727
|
|
|
726
728
|
exports.MemoSurfaceChartComposite = MemoSurfaceChartComposite;
|
|
727
|
-
//# sourceMappingURL=surface-regl-
|
|
729
|
+
//# sourceMappingURL=surface-regl-BBJ6OIKK.cjs.map
|