@extend-ai/react-xlsx 0.18.1 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +154 -6
- package/dist/chart-renderer-AAVZ34BF.cjs +5048 -0
- package/dist/chart-renderer-AAVZ34BF.cjs.map +1 -0
- package/dist/{chart-renderer-HQSQHDCB.js → chart-renderer-KGLAI4DN.js} +25 -20
- package/dist/chart-renderer-KGLAI4DN.js.map +1 -0
- package/dist/{chart-renderer-ZUWRNNZT.cjs → chart-renderer-NM5UVCTO.cjs} +44 -39
- package/dist/chart-renderer-NM5UVCTO.cjs.map +1 -0
- package/dist/chart-renderer-RXO7WP4Q.js +5047 -0
- package/dist/chart-renderer-RXO7WP4Q.js.map +1 -0
- package/dist/chunk-2YBG7XQ3.cjs +26981 -0
- package/dist/chunk-2YBG7XQ3.cjs.map +1 -0
- package/dist/chunk-3JTCYAUX.js +50 -0
- package/dist/{chunk-OZLJPZUX.js.map → chunk-3JTCYAUX.js.map} +1 -1
- package/dist/chunk-6K3NSKDJ.cjs +50 -0
- package/dist/chunk-6K3NSKDJ.cjs.map +1 -0
- package/dist/chunk-CJBI5F6V.cjs +816 -0
- package/dist/chunk-CJBI5F6V.cjs.map +1 -0
- package/dist/{chunk-WFQGZI2Z.cjs → chunk-MCFUTO4J.cjs} +12 -8
- package/dist/chunk-MCFUTO4J.cjs.map +1 -0
- package/dist/chunk-NBH72POD.js +816 -0
- package/dist/chunk-NBH72POD.js.map +1 -0
- package/dist/{chunk-E2VSYCP2.cjs → chunk-O3V2MCOC.cjs} +18 -2
- package/dist/chunk-O3V2MCOC.cjs.map +1 -0
- package/dist/chunk-QN3D3JS2.js +26978 -0
- package/dist/chunk-QN3D3JS2.js.map +1 -0
- package/dist/{chunk-FO6MIHX4.cjs → chunk-T5WZHPIN.cjs} +2 -2
- package/dist/{chunk-FO6MIHX4.cjs.map → chunk-T5WZHPIN.cjs.map} +1 -1
- 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-OZLJPZUX.js → chunk-WSQDFXDW.js} +10 -6
- package/dist/chunk-WSQDFXDW.js.map +1 -0
- package/dist/index.cjs +600 -11270
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -14
- package/dist/index.d.ts +5 -14
- package/dist/index.js +479 -11149
- package/dist/index.js.map +1 -1
- package/dist/internal-DrXSHYJZ.d.cts +1498 -0
- package/dist/internal-DrXSHYJZ.d.ts +1498 -0
- package/dist/internal.cjs +24 -0
- package/dist/internal.cjs.map +1 -0
- package/dist/internal.d.cts +3 -0
- package/dist/internal.d.ts +3 -0
- package/dist/internal.js +23 -0
- package/dist/internal.js.map +1 -0
- package/dist/{region-map-geography-5E5SVPGS.cjs → region-map-geography-6TGXBY3V.cjs} +2 -2
- package/dist/{region-map-geography-5E5SVPGS.cjs.map → region-map-geography-6TGXBY3V.cjs.map} +1 -1
- package/dist/{spreadsheet-font-assets-7QMV43XD.cjs → spreadsheet-font-assets-4AHYDTAQ.cjs} +2 -2
- package/dist/{spreadsheet-font-assets-7QMV43XD.cjs.map → spreadsheet-font-assets-4AHYDTAQ.cjs.map} +1 -1
- package/dist/{surface-regl-WVLW3SEA.cjs → surface-regl-5Z6IVOID.cjs} +18 -15
- 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-AY7JZVYY.cjs +727 -0
- package/dist/surface-regl-AY7JZVYY.cjs.map +1 -0
- package/dist/surface-regl-TJUWTLAZ.js +726 -0
- package/dist/surface-regl-TJUWTLAZ.js.map +1 -0
- package/dist/vanilla.cjs +20 -0
- package/dist/vanilla.cjs.map +1 -0
- package/dist/vanilla.d.cts +9 -0
- package/dist/vanilla.d.ts +9 -0
- package/dist/vanilla.js +19 -0
- package/dist/vanilla.js.map +1 -0
- package/dist/xlsx-worker.js +2888 -34
- package/dist/xlsx-worker.js.map +1 -1
- package/package.json +23 -3
- package/dist/chart-renderer-HQSQHDCB.js.map +0 -1
- package/dist/chart-renderer-ZUWRNNZT.cjs.map +0 -1
- package/dist/chunk-E2VSYCP2.cjs.map +0 -1
- package/dist/chunk-WFQGZI2Z.cjs.map +0 -1
- package/dist/surface-regl-NWR5ZZ5D.js.map +0 -1
- package/dist/surface-regl-WVLW3SEA.cjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-T5WZHPIN.cjs');
|
|
2
2
|
|
|
3
3
|
// src/fonts/carlito-cyrillic-ext-400-italic.woff2
|
|
4
4
|
var carlito_cyrillic_ext_400_italic_default = "data:font/woff2;base64,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";
|
|
@@ -118,4 +118,4 @@ var spreadsheetFontFaces = [
|
|
|
118
118
|
|
|
119
119
|
|
|
120
120
|
exports.spreadsheetFontFaces = spreadsheetFontFaces;
|
|
121
|
-
//# sourceMappingURL=spreadsheet-font-assets-
|
|
121
|
+
//# sourceMappingURL=spreadsheet-font-assets-4AHYDTAQ.cjs.map
|
package/dist/{spreadsheet-font-assets-7QMV43XD.cjs.map → spreadsheet-font-assets-4AHYDTAQ.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/spreadsheet-font-assets-7QMV43XD.cjs","../src/spreadsheet-font-assets.ts"],"names":[],"mappings":"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","file":"/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/spreadsheet-font-assets-7QMV43XD.cjs","sourcesContent":[null,"import font0 from \"./fonts/carlito-cyrillic-ext-400-italic.woff2\";\nimport font1 from \"./fonts/carlito-cyrillic-400-italic.woff2\";\nimport font2 from \"./fonts/carlito-greek-ext-400-italic.woff2\";\nimport font3 from \"./fonts/carlito-greek-400-italic.woff2\";\nimport font4 from \"./fonts/carlito-vietnamese-400-italic.woff2\";\nimport font5 from \"./fonts/carlito-latin-ext-400-italic.woff2\";\nimport font6 from \"./fonts/carlito-latin-400-italic.woff2\";\nimport font7 from \"./fonts/carlito-cyrillic-ext-700-italic.woff2\";\nimport font8 from \"./fonts/carlito-cyrillic-700-italic.woff2\";\nimport font9 from \"./fonts/carlito-greek-ext-700-italic.woff2\";\nimport font10 from \"./fonts/carlito-greek-700-italic.woff2\";\nimport font11 from \"./fonts/carlito-vietnamese-700-italic.woff2\";\nimport font12 from \"./fonts/carlito-latin-ext-700-italic.woff2\";\nimport font13 from \"./fonts/carlito-latin-700-italic.woff2\";\nimport font14 from \"./fonts/carlito-cyrillic-ext-400-normal.woff2\";\nimport font15 from \"./fonts/carlito-cyrillic-400-normal.woff2\";\nimport font16 from \"./fonts/carlito-greek-ext-400-normal.woff2\";\nimport font17 from \"./fonts/carlito-greek-400-normal.woff2\";\nimport font18 from \"./fonts/carlito-vietnamese-400-normal.woff2\";\nimport font19 from \"./fonts/carlito-latin-ext-400-normal.woff2\";\nimport font20 from \"./fonts/carlito-latin-400-normal.woff2\";\nimport font21 from \"./fonts/carlito-cyrillic-ext-700-normal.woff2\";\nimport font22 from \"./fonts/carlito-cyrillic-700-normal.woff2\";\nimport font23 from \"./fonts/carlito-greek-ext-700-normal.woff2\";\nimport font24 from \"./fonts/carlito-greek-700-normal.woff2\";\nimport font25 from \"./fonts/carlito-vietnamese-700-normal.woff2\";\nimport font26 from \"./fonts/carlito-latin-ext-700-normal.woff2\";\nimport font27 from \"./fonts/carlito-latin-700-normal.woff2\";\n\nexport const spreadsheetFontFaces = [\n { source: font0, style: \"italic\", weight: \"400\", unicodeRange: \"U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\" },\n { source: font1, style: \"italic\", weight: \"400\", unicodeRange: \"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\" },\n { source: font2, style: \"italic\", weight: \"400\", unicodeRange: \"U+1F00-1FFF\" },\n { source: font3, style: \"italic\", weight: \"400\", unicodeRange: \"U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF\" },\n { source: font4, style: \"italic\", weight: \"400\", unicodeRange: \"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB\" },\n { source: font5, style: \"italic\", weight: \"400\", unicodeRange: \"U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF\" },\n { source: font6, style: \"italic\", weight: \"400\", unicodeRange: \"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\" },\n { source: font7, style: \"italic\", weight: \"700\", unicodeRange: \"U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\" },\n { source: font8, style: \"italic\", weight: \"700\", unicodeRange: \"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\" },\n { source: font9, style: \"italic\", weight: \"700\", unicodeRange: \"U+1F00-1FFF\" },\n { source: font10, style: \"italic\", weight: \"700\", unicodeRange: \"U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF\" },\n { source: font11, style: \"italic\", weight: \"700\", unicodeRange: \"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB\" },\n { source: font12, style: \"italic\", weight: \"700\", unicodeRange: \"U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF\" },\n { source: font13, style: \"italic\", weight: \"700\", unicodeRange: \"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\" },\n { source: font14, style: \"normal\", weight: \"400\", unicodeRange: \"U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\" },\n { source: font15, style: \"normal\", weight: \"400\", unicodeRange: \"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\" },\n { source: font16, style: \"normal\", weight: \"400\", unicodeRange: \"U+1F00-1FFF\" },\n { source: font17, style: \"normal\", weight: \"400\", unicodeRange: \"U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF\" },\n { source: font18, style: \"normal\", weight: \"400\", unicodeRange: \"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB\" },\n { source: font19, style: \"normal\", weight: \"400\", unicodeRange: \"U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF\" },\n { source: font20, style: \"normal\", weight: \"400\", unicodeRange: \"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\" },\n { source: font21, style: \"normal\", weight: \"700\", unicodeRange: \"U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\" },\n { source: font22, style: \"normal\", weight: \"700\", unicodeRange: \"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\" },\n { source: font23, style: \"normal\", weight: \"700\", unicodeRange: \"U+1F00-1FFF\" },\n { source: font24, style: \"normal\", weight: \"700\", unicodeRange: \"U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF\" },\n { source: font25, style: \"normal\", weight: \"700\", unicodeRange: \"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB\" },\n { source: font26, style: \"normal\", weight: \"700\", unicodeRange: \"U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF\" },\n { source: font27, style: \"normal\", weight: \"700\", unicodeRange: \"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\" },\n];\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/spreadsheet-font-assets-4AHYDTAQ.cjs","../src/spreadsheet-font-assets.ts"],"names":[],"mappings":"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","file":"/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/spreadsheet-font-assets-4AHYDTAQ.cjs","sourcesContent":[null,"import font0 from \"./fonts/carlito-cyrillic-ext-400-italic.woff2\";\nimport font1 from \"./fonts/carlito-cyrillic-400-italic.woff2\";\nimport font2 from \"./fonts/carlito-greek-ext-400-italic.woff2\";\nimport font3 from \"./fonts/carlito-greek-400-italic.woff2\";\nimport font4 from \"./fonts/carlito-vietnamese-400-italic.woff2\";\nimport font5 from \"./fonts/carlito-latin-ext-400-italic.woff2\";\nimport font6 from \"./fonts/carlito-latin-400-italic.woff2\";\nimport font7 from \"./fonts/carlito-cyrillic-ext-700-italic.woff2\";\nimport font8 from \"./fonts/carlito-cyrillic-700-italic.woff2\";\nimport font9 from \"./fonts/carlito-greek-ext-700-italic.woff2\";\nimport font10 from \"./fonts/carlito-greek-700-italic.woff2\";\nimport font11 from \"./fonts/carlito-vietnamese-700-italic.woff2\";\nimport font12 from \"./fonts/carlito-latin-ext-700-italic.woff2\";\nimport font13 from \"./fonts/carlito-latin-700-italic.woff2\";\nimport font14 from \"./fonts/carlito-cyrillic-ext-400-normal.woff2\";\nimport font15 from \"./fonts/carlito-cyrillic-400-normal.woff2\";\nimport font16 from \"./fonts/carlito-greek-ext-400-normal.woff2\";\nimport font17 from \"./fonts/carlito-greek-400-normal.woff2\";\nimport font18 from \"./fonts/carlito-vietnamese-400-normal.woff2\";\nimport font19 from \"./fonts/carlito-latin-ext-400-normal.woff2\";\nimport font20 from \"./fonts/carlito-latin-400-normal.woff2\";\nimport font21 from \"./fonts/carlito-cyrillic-ext-700-normal.woff2\";\nimport font22 from \"./fonts/carlito-cyrillic-700-normal.woff2\";\nimport font23 from \"./fonts/carlito-greek-ext-700-normal.woff2\";\nimport font24 from \"./fonts/carlito-greek-700-normal.woff2\";\nimport font25 from \"./fonts/carlito-vietnamese-700-normal.woff2\";\nimport font26 from \"./fonts/carlito-latin-ext-700-normal.woff2\";\nimport font27 from \"./fonts/carlito-latin-700-normal.woff2\";\n\nexport const spreadsheetFontFaces = [\n { source: font0, style: \"italic\", weight: \"400\", unicodeRange: \"U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\" },\n { source: font1, style: \"italic\", weight: \"400\", unicodeRange: \"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\" },\n { source: font2, style: \"italic\", weight: \"400\", unicodeRange: \"U+1F00-1FFF\" },\n { source: font3, style: \"italic\", weight: \"400\", unicodeRange: \"U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF\" },\n { source: font4, style: \"italic\", weight: \"400\", unicodeRange: \"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB\" },\n { source: font5, style: \"italic\", weight: \"400\", unicodeRange: \"U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF\" },\n { source: font6, style: \"italic\", weight: \"400\", unicodeRange: \"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\" },\n { source: font7, style: \"italic\", weight: \"700\", unicodeRange: \"U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\" },\n { source: font8, style: \"italic\", weight: \"700\", unicodeRange: \"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\" },\n { source: font9, style: \"italic\", weight: \"700\", unicodeRange: \"U+1F00-1FFF\" },\n { source: font10, style: \"italic\", weight: \"700\", unicodeRange: \"U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF\" },\n { source: font11, style: \"italic\", weight: \"700\", unicodeRange: \"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB\" },\n { source: font12, style: \"italic\", weight: \"700\", unicodeRange: \"U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF\" },\n { source: font13, style: \"italic\", weight: \"700\", unicodeRange: \"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\" },\n { source: font14, style: \"normal\", weight: \"400\", unicodeRange: \"U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\" },\n { source: font15, style: \"normal\", weight: \"400\", unicodeRange: \"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\" },\n { source: font16, style: \"normal\", weight: \"400\", unicodeRange: \"U+1F00-1FFF\" },\n { source: font17, style: \"normal\", weight: \"400\", unicodeRange: \"U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF\" },\n { source: font18, style: \"normal\", weight: \"400\", unicodeRange: \"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB\" },\n { source: font19, style: \"normal\", weight: \"400\", unicodeRange: \"U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF\" },\n { source: font20, style: \"normal\", weight: \"400\", unicodeRange: \"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\" },\n { source: font21, style: \"normal\", weight: \"700\", unicodeRange: \"U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\" },\n { source: font22, style: \"normal\", weight: \"700\", unicodeRange: \"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\" },\n { source: font23, style: \"normal\", weight: \"700\", unicodeRange: \"U+1F00-1FFF\" },\n { source: font24, style: \"normal\", weight: \"700\", unicodeRange: \"U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF\" },\n { source: font25, style: \"normal\", weight: \"700\", unicodeRange: \"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB\" },\n { source: font26, style: \"normal\", weight: \"700\", unicodeRange: \"U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF\" },\n { source: font27, style: \"normal\", weight: \"700\", unicodeRange: \"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\" },\n];\n"]}
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkO3V2MCOCcjs = require('./chunk-O3V2MCOC.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
var _chunk5ERNVHSOcjs = require('./chunk-5ERNVHSO.cjs');
|
|
16
|
-
require('./chunk-
|
|
16
|
+
require('./chunk-T5WZHPIN.cjs');
|
|
17
17
|
|
|
18
18
|
// src/surface-regl.tsx
|
|
19
19
|
var _regl = require('regl'); var _regl2 = _interopRequireDefault(_regl);
|
|
@@ -160,7 +160,7 @@ function normalizeSurfaceY(row, rows) {
|
|
|
160
160
|
return rows <= 1 ? 0 : (row / (rows - 1) - 0.5) * 2;
|
|
161
161
|
}
|
|
162
162
|
function normalizeSurfaceZ(value, domain, heightExtent, axis) {
|
|
163
|
-
return -(
|
|
163
|
+
return -(_chunkO3V2MCOCcjs.normalizeSurfaceValue.call(void 0, value, domain.minValue, domain.safeMax, axis) - 0.5) * heightExtent;
|
|
164
164
|
}
|
|
165
165
|
function projectCartesian3dPoint(x, y, z, rotXRad, rotYRad, usePerspective, perspectiveStrength, rightAngleAxes) {
|
|
166
166
|
if (rightAngleAxes) {
|
|
@@ -224,7 +224,7 @@ function buildSurfaceMesh(chart, palette, layout) {
|
|
|
224
224
|
const rotY = (_nullishCoalesce(_optionalChain([chart, 'access', _33 => _33.view3d, 'optionalAccess', _34 => _34.rotY]), () => ( 30))) * (Math.PI / 180);
|
|
225
225
|
const usePerspective = !isContour && _optionalChain([chart, 'access', _35 => _35.view3d, 'optionalAccess', _36 => _36.rAngAx]) === false;
|
|
226
226
|
const perspectiveStrength = clamp((_nullishCoalesce(_optionalChain([chart, 'access', _37 => _37.view3d, 'optionalAccess', _38 => _38.perspective]), () => ( (usePerspective ? 30 : 0)))) / 100, 0, 1);
|
|
227
|
-
const ratios =
|
|
227
|
+
const ratios = _chunkO3V2MCOCcjs.surfaceDataRatios.call(void 0, rows, cols, _optionalChain([chart, 'access', _39 => _39.valueAxis, 'optionalAccess', _40 => _40.crossBetween]) !== "midCat", _optionalChain([chart, 'access', _41 => _41.view3d, 'optionalAccess', _42 => _42.heightPercent]), _optionalChain([chart, 'access', _43 => _43.view3d, 'optionalAccess', _44 => _44.depthPercent]), layout);
|
|
228
228
|
const depthScale = ratios.depth;
|
|
229
229
|
const heightExtent = 2 * ratios.height;
|
|
230
230
|
const usesFlatMaterial = chart.surfaceMaterial === "flat";
|
|
@@ -274,7 +274,7 @@ function buildSurfaceMesh(chart, palette, layout) {
|
|
|
274
274
|
if (p00 == null || p10 == null || p01 == null || p11 == null) {
|
|
275
275
|
continue;
|
|
276
276
|
}
|
|
277
|
-
const triangles =
|
|
277
|
+
const triangles = _chunkO3V2MCOCcjs.triangulateSurfaceQuad.call(void 0, [
|
|
278
278
|
{ value: p00, x: columnIndex, y: rowIndex },
|
|
279
279
|
{ value: p10, x: columnIndex + 1, y: rowIndex },
|
|
280
280
|
{ value: p11, x: columnIndex + 1, y: rowIndex + 1 },
|
|
@@ -284,7 +284,7 @@ function buildSurfaceMesh(chart, palette, layout) {
|
|
|
284
284
|
for (let band = 0; band < domain.ticks.length - 1; band += 1) {
|
|
285
285
|
const lower = domain.ticks[band];
|
|
286
286
|
const upper = domain.ticks[band + 1];
|
|
287
|
-
const polygon =
|
|
287
|
+
const polygon = _chunkO3V2MCOCcjs.clipSurfaceBand.call(void 0, _chunkO3V2MCOCcjs.clipSurfaceBand.call(void 0, triangle, lower, true, chart.valueAxis, band === 0), upper, false, chart.valueAxis);
|
|
288
288
|
if (polygon.length < 3) continue;
|
|
289
289
|
const bandColor = resolveSurfaceBandColor(chart, palette, domain, (lower + upper) / 2);
|
|
290
290
|
if (!isWireframe && bandColor !== "transparent") {
|
|
@@ -295,10 +295,13 @@ function buildSurfaceMesh(chart, palette, layout) {
|
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
|
-
const
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
298
|
+
for (const group of _chunkO3V2MCOCcjs.groupSurfaceBandEdges.call(void 0, polygon, triangle, band, lower, isWireframe)) {
|
|
299
|
+
const edgeMidpoint = (domain.ticks[group.band] + domain.ticks[group.band + 1]) / 2;
|
|
300
|
+
const color = resolveSurfaceWireframeColor(chart, palette, domain, edgeMidpoint);
|
|
301
|
+
if (color !== "transparent") {
|
|
302
|
+
for (const [from, to] of group.edges) {
|
|
303
|
+
contourLines.push({ color, from: projectPoint(from.x, from.y, from.value), to: projectPoint(to.x, to.y, to.value) });
|
|
304
|
+
}
|
|
302
305
|
}
|
|
303
306
|
}
|
|
304
307
|
}
|
|
@@ -426,8 +429,8 @@ function buildSurfaceMesh(chart, palette, layout) {
|
|
|
426
429
|
const wallColors = [];
|
|
427
430
|
for (const triangle of wallTriangles) {
|
|
428
431
|
const world = triangle.points.map((point) => ({ x: point.worldX, y: point.worldY, z: -point.worldZ }));
|
|
429
|
-
const normal =
|
|
430
|
-
const rgba = colorToRgba(usesFlatMaterial ? triangle.color :
|
|
432
|
+
const normal = _chunkO3V2MCOCcjs.transformSurfaceNormal.call(void 0, _chunkO3V2MCOCcjs.surfaceNormal.call(void 0, world[0], world[1], world[2]), _nullishCoalesce(_optionalChain([chart, 'access', _101 => _101.view3d, 'optionalAccess', _102 => _102.rotX]), () => ( 25)), _nullishCoalesce(_optionalChain([chart, 'access', _103 => _103.view3d, 'optionalAccess', _104 => _104.rotY]), () => ( 30)), _optionalChain([chart, 'access', _105 => _105.view3d, 'optionalAccess', _106 => _106.rAngAx]) !== false);
|
|
433
|
+
const rgba = colorToRgba(usesFlatMaterial ? triangle.color : _chunkO3V2MCOCcjs.shadeSurfaceMatteColor.call(void 0, triangle.color, normal), 1);
|
|
431
434
|
for (const point of triangle.points) {
|
|
432
435
|
const clip = toClipPoint(point);
|
|
433
436
|
wallPositions.push(clip.x, clip.y, clip.z);
|
|
@@ -442,8 +445,8 @@ function buildSurfaceMesh(chart, palette, layout) {
|
|
|
442
445
|
continue;
|
|
443
446
|
}
|
|
444
447
|
const world = [left, middle, right].map((vertex) => ({ x: vertex.point.worldX, y: vertex.point.worldY, z: -vertex.point.worldZ }));
|
|
445
|
-
const normal =
|
|
446
|
-
const shaded = colorToRgba(usesFlatMaterial ? left.bandColor :
|
|
448
|
+
const normal = _chunkO3V2MCOCcjs.transformSurfaceNormal.call(void 0, _chunkO3V2MCOCcjs.surfaceNormal.call(void 0, world[0], world[1], world[2]), _nullishCoalesce(_optionalChain([chart, 'access', _107 => _107.view3d, 'optionalAccess', _108 => _108.rotX]), () => ( 25)), _nullishCoalesce(_optionalChain([chart, 'access', _109 => _109.view3d, 'optionalAccess', _110 => _110.rotY]), () => ( 30)), _optionalChain([chart, 'access', _111 => _111.view3d, 'optionalAccess', _112 => _112.rAngAx]) !== false);
|
|
449
|
+
const shaded = colorToRgba(usesFlatMaterial ? left.bandColor : _chunkO3V2MCOCcjs.shadeSurfaceMatteColor.call(void 0, left.bandColor, normal), 1);
|
|
447
450
|
[left, middle, right].forEach((vertex) => {
|
|
448
451
|
const clip = toClipPoint(vertex.point);
|
|
449
452
|
fillPositions.push(clip.x, clip.y, clip.z);
|
|
@@ -718,4 +721,4 @@ var MemoSurfaceChartComposite = React.memo(function MemoSurfaceChartComposite2({
|
|
|
718
721
|
|
|
719
722
|
|
|
720
723
|
exports.MemoSurfaceChartComposite = MemoSurfaceChartComposite;
|
|
721
|
-
//# sourceMappingURL=surface-regl-
|
|
724
|
+
//# sourceMappingURL=surface-regl-5Z6IVOID.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/surface-regl-5Z6IVOID.cjs","../src/surface-regl.tsx"],"names":["MemoSurfaceChartComposite"],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACA;AChBA,wEAAuB;AACvB,2EAAuB;AAw0BjB,+CAAA;AAhwBN,SAAS,KAAA,CAAM,KAAA,EAAe,GAAA,EAAa,GAAA,EAAa;AACtD,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AAC3C;AAEA,SAAS,UAAA,CAAW,KAAA,EAAgB;AAClC,EAAA,GAAA,CAAI,OAAO,MAAA,IAAU,SAAA,GAAY,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,EAAG;AACvD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,GAAA,CAAI,OAAO,MAAA,IAAU,QAAA,EAAU;AAC7B,IAAA,MAAM,WAAA,EAAa,KAAA,CAAM,IAAA,CAAK,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AAChD,IAAA,GAAA,CAAI,CAAC,UAAA,EAAY;AACf,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,MAAM,OAAA,EAAS,MAAA,CAAO,UAAU,CAAA;AAChC,IAAA,OAAO,MAAA,CAAO,QAAA,CAAS,MAAM,EAAA,EAAI,OAAA,EAAS,IAAA;AAAA,EAC5C;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,aAAA,CAAc,KAAA,EAAe;AACpC,EAAA,MAAM,MAAA,EAAQ,oBAAA,CAAqB,IAAA,CAAK,KAAK,CAAA;AAC7C,EAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,IAC9C,KAAA,EAAO,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,IAC/C,GAAA,EAAK,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EAAG,EAAE;AAAA,EAC/C,CAAA;AACF;AAyBA,SAAS,uBAAA,CAAwB,KAAA,EAAkB,OAAA,EAAuC;AACxF,EAAA,4GAAO,KAAA,qBAAM,iBAAA,4BAAA,CAAoB,CAAC,GAAA,0BAC7B,KAAA,qBAAM,MAAA,qBAAO,CAAC,CAAA,6BAAG,SAAA,0BACjB,KAAA,qBAAM,MAAA,qBAAO,CAAC,CAAA,6BAAG,aAAA,UACjB,KAAA,CAAM,eAAA,UACN,KAAA,CAAM,WAAA,UACN,OAAA,CAAQ,MAAA;AACf;AAEA,SAAS,gCAAA,CAAiC,KAAA,EAAgB;AACxD,EAAA,GAAA,CAAI,OAAO,MAAA,IAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,QAAA,EAAU,KAAA,CAAM,IAAA,CAAK,CAAA;AAC3B,EAAA,GAAA,CAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,WAAA,EAAa,OAAA,CAAQ,UAAA,CAAW,GAAG,EAAA,EAAI,OAAA,CAAQ,KAAA,CAAM,CAAC,EAAA,EAAI,OAAA;AAChE,EAAA,OAAO,gBAAA,CAAiB,IAAA,CAAK,UAAU,EAAA,EAAI,CAAA,CAAA,EAAI,UAAA,CAAW,WAAA,CAAY,CAAC,CAAA,EAAA;AACzE;AAEoF;AACnD,EAAA;AAC8B,EAAA;AAE3B,EAAA;AAEW,EAAA;AAC/C;AAEyE;AACH,EAAA;AAC9B,EAAA;AACmD,EAAA;AACrB,EAAA;AACtE;AAEkE;AAG3D,EAAA;AAG2B,EAAA;AACvB,IAAA;AACT,EAAA;AACuE,EAAA;AAGA,EAAA;AAG/B,EAAA;AACA,EAAA;AACoB,EAAA;AAC/B,EAAA;AACiC,EAAA;AAC/B,EAAA;AAC8B,EAAA;AACQ,EAAA;AAGE,EAAA;AACZ,EAAA;AACF,EAAA;AAChC,EAAA;AACuC,EAAA;AACzB,IAAA;AACvC,EAAA;AACmD,EAAA;AAC5C,EAAA;AACL,IAAA;AACA,IAAA;AACA,IAAA;AACmE,IAAA;AACrE,EAAA;AACF;AAEyH;AAChE,EAAA;AACI,EAAA;AACjC,EAAA;AAC0C,EAAA;AAC3C,EAAA;AACM,EAAA;AACuC,EAAA;AACV,EAAA;AACnC,EAAA;AACwB,EAAA;AACzB,EAAA;AACuB,IAAA;AAC/C,EAAA;AACoE,EAAA;AACtE;AAEuE;AAChD,EAAA;AACqC,EAAA;AACjB,IAAA;AACS,IAAA;AACvC,MAAA;AACT,IAAA;AACF,EAAA;AACmC,EAAA;AACrC;AAEkH;AAC7C,EAAA;AACrE;AAE0H;AAC1F,EAAA;AACiC,EAAA;AACR,EAAA;AACQ,EAAA;AACjE;AAEuH;AAC9D,EAAA;AACxB,EAAA;AACuC,EAAA;AACX,EAAA;AACS,EAAA;AAItE;AAE+C;AACE,EAAA;AAChB,EAAA;AACrB,EAAA;AACoB,IAAA;AAC9B,EAAA;AAC6D,EAAA;AAC/D;AAEyD;AACA,EAAA;AACzD;AAEsD;AACA,EAAA;AACtD;AAEsH;AAC7C,EAAA;AACzE;AAQE;AAIoB,EAAA;AACmD,IAAA;AACvE,EAAA;AAC6B,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACH,EAAA;AACC,EAAA;AACA,EAAA;AACA,EAAA;AAEM,EAAA;AAE1B,EAAA;AACE,IAAA;AACC,IAAA;AACA,IAAA;AACV,EAAA;AACF;AAEkF;AACzE,EAAA;AACF,IAAA;AACH,IAAA;AACF,EAAA;AACF;AAEmF;AAC1E,EAAA;AACF,IAAA;AACkB,IAAA;AACvB,EAAA;AACF;AAEiD;AACoB,EAAA;AAG9B,EAAA;AAC5B,IAAA;AACT,EAAA;AACuC,EAAA;AAC9B,IAAA;AACT,EAAA;AACuD,EAAA;AACzD;AAEiH;AACrF,EAAA;AAC6C,EAAA;AAC7C,EAAA;AACjB,IAAA;AACT,EAAA;AAE4B,EAAA;AAES,EAAA;AACxB,EAAA;AACJ,IAAA;AACT,EAAA;AAC6C,EAAA;AACL,EAAA;AACD,EAAA;AACQ,EAAA;AAC2C,EAAA;AACH,EAAA;AAClC,EAAA;AACA,EAAA;AACS,EAAA;AACG,EAAA;AACH,EAAA;AACpC,EAAA;AACM,EAAA;AACmB,EAAA;AACgB,EAAA;AACjB,EAAA;AACA,EAAA;AACN,EAAA;AACyC,EAAA;AACtC,IAAA;AAC9B,IAAA;AACN,MAAA;AACE,QAAA;AACP,QAAA;AACmC,QAAA;AAC3B,QAAA;AACL,QAAA;AAC2B,QAAA;AAChC,MAAA;AACF,IAAA;AACoE,IAAA;AACtB,IAAA;AACoB,IAAA;AAC3D,IAAA;AACY,MAAA;AACjB,MAAA;AACA,MAAA;AACA,MAAA;AACa,MAAA;AACA,MAAA;AACf,IAAA;AACF,EAAA;AACmH,EAAA;AACnG,IAAA;AACe,MAAA;AACA,MAAA;AAC7B,IAAA;AACF,EAAA;AACiF,EAAA;AAC7C,IAAA;AACpC,EAAA;AAE2D,EAAA;AACW,IAAA;AACxB,MAAA;AACI,MAAA;AACA,MAAA;AACI,MAAA;AACY,MAAA;AAC5D,QAAA;AACF,MAAA;AACyC,MAAA;AACG,QAAA;AACI,QAAA;AACI,QAAA;AACJ,QAAA;AAC9B,MAAA;AACgB,MAAA;AAC8B,QAAA;AAC7B,UAAA;AACI,UAAA;AACuB,UAAA;AAClC,UAAA;AACkC,UAAA;AACT,UAAA;AACa,YAAA;AACA,cAAA;AACF,gBAAA;AACJ,gBAAA;AACpD,cAAA;AACF,YAAA;AACF,UAAA;AAC6D,UAAA;AACG,YAAA;AACH,YAAA;AAC9B,YAAA;AACW,cAAA;AACkB,gBAAA;AACxD,cAAA;AACF,YAAA;AACF,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AAEoE,EAAA;AACL,EAAA;AAChD,EAAA;AACwD,IAAA;AACA,IAAA;AACA,IAAA;AACL,IAAA;AACR,IAAA;AACc,MAAA;AACtE,IAAA;AAC6D,IAAA;AAC3D,MAAA;AACoE,QAAA;AACJ,QAAA;AAC9D,QAAA;AACF,MAAA;AACF,IAAA;AAC6D,IAAA;AAC3D,MAAA;AACiE,QAAA;AACJ,QAAA;AAC3D,QAAA;AACF,MAAA;AACF,IAAA;AACK,EAAA;AACwB,IAAA;AACL,IAAA;AAC2C,IAAA;AACf,IAAA;AACa,IAAA;AAC/D,MAAA;AACyD,QAAA;AACO,QAAA;AACI,QAAA;AACJ,QAAA;AAC9D,QAAA;AACF,MAAA;AACF,IAAA;AACwD,IAAA;AACtD,MAAA;AACgE,QAAA;AACI,QAAA;AACD,QAAA;AACJ,QAAA;AAC7D,QAAA;AACF,MAAA;AACF,IAAA;AACwD,IAAA;AACtD,MAAA;AACmE,QAAA;AACH,QAAA;AACP,QAAA;AACS,QAAA;AAChE,QAAA;AACF,MAAA;AACF,IAAA;AACqE,IAAA;AACV,MAAA;AACS,QAAA;AAClE,MAAA;AACyD,MAAA;AACS,QAAA;AAClE,MAAA;AACF,IAAA;AACgE,IAAA;AACR,MAAA;AACS,QAAA;AAC/D,MAAA;AACyD,MAAA;AACG,QAAA;AAC5D,MAAA;AACF,IAAA;AACsE,IAAA;AACd,MAAA;AACM,QAAA;AAC5D,MAAA;AACyD,MAAA;AACE,QAAA;AAC3D,MAAA;AACF,IAAA;AACF,EAAA;AAEkB,EAAA;AAC4B,IAAA;AACU,IAAA;AACH,IAAA;AACG,IAAA;AACxD,EAAA;AAC4B,EAAA;AACnB,IAAA;AACT,EAAA;AAE0D,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACQ,EAAA;AACA,EAAA;AAC/C,EAAA;AAC6B,IAAA;AACC,IAAA;AACjD,EAAA;AACuD,EAAA;AACA,EAAA;AACpB,EAAA;AACA,EAAA;AAC2B,EAAA;AACA,EAAA;AACf,EAAA;AACZ,IAAA;AACA,IAAA;AAC1B,IAAA;AAC6B,MAAA;AACC,MAAA;AAC4B,MAAA;AACjE,IAAA;AACF,EAAA;AAEiC,EAAA;AACH,EAAA;AACG,EAAA;AACH,EAAA;AACQ,EAAA;AAC8B,IAAA;AACG,IAAA;AACR,IAAA;AACxB,IAAA;AACL,MAAA;AACW,MAAA;AACS,MAAA;AACpD,IAAA;AACF,EAAA;AAC6D,EAAA;AAC5B,IAAA;AACM,IAAA;AACD,IAAA;AACJ,IAAA;AAC9B,MAAA;AACF,IAAA;AAC+D,IAAA;AACM,IAAA;AACN,IAAA;AACrB,IAAA;AACH,MAAA;AACI,MAAA;AACiB,MAAA;AAC3D,IAAA;AACH,EAAA;AAEiC,EAAA;AACH,EAAA;AACF,EAAA;AACQ,IAAA;AACJ,IAAA;AACQ,IAAA;AACkC,IAAA;AACF,IAAA;AACvE,EAAA;AAC8B,EAAA;AACK,IAAA;AACJ,IAAA;AACQ,IAAA;AACkC,IAAA;AACF,IAAA;AACvE,EAAA;AAEM,EAAA;AACkC,IAAA;AACM,IAAA;AACN,IAAA;AACM,IAAA;AACN,IAAA;AACM,IAAA;AAC/C,EAAA;AACF;AAE6DA;AAC3D,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACwB;AACqC,EAAA;AACf,EAAA;AACE,EAAA;AACH,EAAA;AAEvB,EAAA;AACL,IAAA;AACC,MAAA;AACC,MAAA;AACf,MAAA;AACF,IAAA;AACyB,IAAA;AACZ,IAAA;AACX,MAAA;AACF,IAAA;AACgB,IAAA;AACyC,IAAA;AAE/B,IAAA;AACpB,MAAA;AACmD,QAAA;AACzC,QAAA;AACM,UAAA;AACA,YAAA;AACA,YAAA;AAChB,UAAA;AACA,UAAA;AACF,QAAA;AACuC,QAAA;AACkB,QAAA;AACE,QAAA;AACjC,QAAA;AACZ,UAAA;AACH,YAAA;AACI,YAAA;AACJ,YAAA;AACa,YAAA;AACtB,UAAA;AACA,UAAA;AACD,QAAA;AAEgB,QAAA;AACC,UAAA;AACG,YAAA;AACG,YAAA;AAClB,UAAA;AACO,UAAA;AACG,YAAA;AACF,YAAA;AACI,cAAA;AACE,cAAA;AACF,cAAA;AACE,cAAA;AACZ,YAAA;AACF,UAAA;AACoC,UAAA;AAC7B,UAAA;AACG,YAAA;AACV,UAAA;AACM,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA;AAOK,UAAA;AACL,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA;AAWR,QAAA;AAEa,QAAA;AACC,UAAA;AACG,YAAA;AACG,YAAA;AAClB,UAAA;AACO,UAAA;AACG,YAAA;AACF,YAAA;AACI,cAAA;AACE,cAAA;AACF,cAAA;AACE,cAAA;AACZ,YAAA;AACF,UAAA;AACoC,UAAA;AAC7B,UAAA;AACG,YAAA;AACF,YAAA;AACR,UAAA;AACM,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA;AAOK,UAAA;AACL,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA;AAWR,QAAA;AAEa,QAAA;AACC,UAAA;AACG,YAAA;AACG,YAAA;AAClB,UAAA;AACO,UAAA;AACG,YAAA;AACF,YAAA;AACI,cAAA;AACE,cAAA;AACF,cAAA;AACE,cAAA;AACZ,YAAA;AACF,UAAA;AACoC,UAAA;AAC7B,UAAA;AACG,YAAA;AACF,YAAA;AACR,UAAA;AACM,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA;AAOK,UAAA;AACA,UAAA;AACL,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA;AAWR,QAAA;AAEgD,QAAA;AACtC,wBAAA;AACA,wBAAA;AACA,wBAAA;AACE,QAAA;AACD,UAAA;AACE,UAAA;AACjB,QAAA;AACM,MAAA;AACU,QAAA;AACA,UAAA;AACA,UAAA;AAChB,QAAA;AACF,MAAA;AACF,IAAA;AAEc,IAAA;AACC,IAAA;AACH,IAAA;AAEC,IAAA;AACC,MAAA;AACU,sBAAA;AACxB,IAAA;AACC,EAAA;AACD,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACD,EAAA;AAEoD,EAAA;AAGnD,EAAA;AAAC,IAAA;AAAA,IAAA;AAC0C,MAAA;AACpC,MAAA;AACE,MAAA;AACL,QAAA;AAC6D,QAAA;AAClD,QAAA;AACX,QAAA;AACQ,QAAA;AACE,QAAA;AACK,QAAA;AACL,QAAA;AACH,QAAA;AACT,MAAA;AAEA,MAAA;AAAA,wBAAA;AAAC,UAAA;AAAA,UAAA;AACM,YAAA;AACE,YAAA;AACoC,cAAA;AACjC,cAAA;AACD,cAAA;AACG,cAAA;AACH,cAAA;AACT,YAAA;AAAA,UAAA;AACF,QAAA;AACA,wBAAA;AAAC,UAAA;AAAA,UAAA;AACC,YAAA;AACA,YAAA;AACqD,YAAA;AACR,YAAA;AAE5C,YAAA;AAAkC,cAAA;AAClC,cAAA;AAAA,YAAA;AAAA,UAAA;AACH,QAAA;AAAA,MAAA;AAAA,IAAA;AACF,EAAA;AAIuB;ADjJ+C;AACA;AACA","file":"/home/runner/work/react-xlsx/react-xlsx/packages/react-xlsx/dist/surface-regl-5Z6IVOID.cjs","sourcesContent":[null,"import { getBuiltinChartColor, getBuiltinChartSurfaceLine, resolveBuiltinChartColor } from \"./builtin-chart-styles\";\nimport createREGL from \"regl\";\nimport * as React from \"react\";\nimport { shadeSurfaceMatteColor, surfaceNormal, transformSurfaceNormal } from \"./surface-lighting\";\nimport { clipSurfaceBand, groupSurfaceBandEdges, normalizeSurfaceValue, surfaceDataRatios, triangulateSurfaceQuad } from \"./surface-geometry\";\nimport type { XlsxChart } from \"./types\";\n\ntype SurfacePalette = {\n border: string;\n mutedText: string;\n surface: string;\n text: string;\n};\n\ntype SurfaceLayout = {\n height: number;\n plot: {\n height: number;\n left: number;\n top: number;\n width: number;\n };\n width: number;\n};\n\ntype SurfaceCompositeProps = {\n background: string;\n borderColor: string;\n chart: XlsxChart;\n fontFamily: string;\n layout: SurfaceLayout;\n onDoubleClick?: React.MouseEventHandler<SVGSVGElement>;\n onPointerDown?: React.PointerEventHandler<SVGSVGElement>;\n overlay: React.ReactNode;\n palette: SurfacePalette;\n fallback: React.ReactNode;\n};\n\ntype SurfaceDomain = {\n maxValue: number;\n minValue: number;\n safeMax: number;\n ticks: number[];\n};\n\ntype SurfacePoint3D = {\n depth: number;\n worldX: number;\n worldY: number;\n worldZ: number;\n x: number;\n y: number;\n};\n\ntype SurfaceVertex = {\n bandColor: string;\n point: SurfacePoint3D;\n value: number;\n};\n\ntype SolidSurfaceTriangle = {\n color: string;\n points: [SurfacePoint3D, SurfacePoint3D, SurfacePoint3D];\n};\n\ntype SurfaceScene = {\n fillColors: Float32Array;\n fillPositions: Float32Array;\n lineColors: Float32Array;\n linePositions: Float32Array;\n wallColors: Float32Array;\n wallPositions: Float32Array;\n};\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction safeNumber(value: unknown) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n const normalized = value.trim().replace(/,/g, \"\");\n if (!normalized) {\n return null;\n }\n const parsed = Number(normalized);\n return Number.isFinite(parsed) ? parsed : null;\n }\n return null;\n}\n\nfunction parseRgbColor(color: string) {\n const match = /^#?([0-9a-f]{6})$/i.exec(color);\n if (!match) {\n return null;\n }\n return {\n blue: Number.parseInt(match[1].slice(4, 6), 16),\n green: Number.parseInt(match[1].slice(2, 4), 16),\n red: Number.parseInt(match[1].slice(0, 2), 16)\n };\n}\n\nfunction mixRgbColor(color: string, mixWith: string, ratio: number) {\n const base = parseRgbColor(color);\n const target = parseRgbColor(mixWith);\n if (!base || !target) {\n return color;\n }\n const clamped = clamp(ratio, 0, 1);\n const mixChannel = (left: number, right: number) => Math.round(left + (right - left) * clamped);\n return `#${[\n mixChannel(base.red, target.red),\n mixChannel(base.green, target.green),\n mixChannel(base.blue, target.blue)\n ].map((value) => value.toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\n\nfunction lightenColor(color: string, ratio: number) {\n return mixRgbColor(color, \"#ffffff\", ratio);\n}\n\nfunction darkenColor(color: string, ratio: number) {\n return mixRgbColor(color, \"#000000\", ratio);\n}\n\nfunction resolveSurfaceBaseColor(chart: XlsxChart, palette: Pick<SurfacePalette, \"text\">) {\n return chart.chartColorPalette?.[0]\n ?? chart.series[0]?.color\n ?? chart.series[0]?.lineColor\n ?? chart.axisLineColor\n ?? chart.textColor\n ?? palette.text;\n}\n\nfunction normalizeSurfaceRendererHexColor(value: unknown) {\n if (typeof value !== \"string\") {\n return null;\n }\n const trimmed = value.trim();\n if (!trimmed) {\n return null;\n }\n const normalized = trimmed.startsWith(\"#\") ? trimmed.slice(1) : trimmed;\n return /^[0-9a-f]{6}$/i.test(normalized) ? `#${normalized.toLowerCase()}` : null;\n}\n\nfunction resolveExplicitSurfaceSeriesColor(chart: XlsxChart, kind: \"fill\" | \"line\") {\n const shape = chart.series[0]?.shapeProperties;\n if (kind === \"fill\" ? shape?.xmlFillHidden === true : shape?.xmlLineHidden === true) return \"transparent\";\n const color = kind === \"fill\"\n ? shape?.xmlFillColor ?? shape?.solidFillHex\n : shape?.xmlLineColor ?? shape?.lineColorHex;\n return normalizeSurfaceRendererHexColor(color);\n}\n\nfunction getSurfaceColorStops(chart: XlsxChart, palette: SurfacePalette) {\n const explicitFill = resolveExplicitSurfaceSeriesColor(chart, \"fill\");\n if (explicitFill) return [explicitFill];\n const colors = (chart.chartColorPalette ?? []).filter((value): value is string => typeof value === \"string\" && value.length > 0);\n return colors.length > 0 ? colors : [resolveSurfaceBaseColor(chart, palette)];\n}\n\nfunction getSurfaceDomain(chart: XlsxChart): SurfaceDomain | null {\n const numericValues = chart.series.flatMap((series) => (\n series.values\n .map((value) => safeNumber(value))\n .filter((value): value is number => value != null)\n ));\n if (numericValues.length === 0) {\n return null;\n }\n const explicitMin = typeof chart.valueAxis?.min === \"number\" && Number.isFinite(chart.valueAxis.min)\n ? chart.valueAxis.min\n : null;\n const explicitMax = typeof chart.valueAxis?.max === \"number\" && Number.isFinite(chart.valueAxis.max)\n ? chart.valueAxis.max\n : null;\n const rawMin = Math.min(...numericValues);\n const rawMax = Math.max(...numericValues);\n const spanBase = Math.max(1e-6, rawMax - Math.min(0, rawMin));\n const roughStep = spanBase / 5;\n const magnitude = Math.pow(10, Math.floor(Math.log10(Math.max(roughStep, 1e-6))));\n const normalized = roughStep / magnitude;\n const niceStep = normalized <= 1 ? 1 : normalized <= 2 ? 2 : normalized <= 5 ? 5 : 10;\n const step = typeof chart.valueAxis?.majorUnit === \"number\" && chart.valueAxis.majorUnit > 0\n ? chart.valueAxis.majorUnit\n : niceStep * magnitude;\n const minValue = explicitMin ?? (rawMin >= 0 ? 0 : Math.floor(rawMin / step) * step);\n const maxValue = explicitMax ?? Math.ceil(rawMax / step) * step;\n const safeMax = maxValue <= minValue ? minValue + step : maxValue;\n const ticks: number[] = [];\n for (let current = minValue; current <= safeMax + step * 0.001; current += step) {\n ticks.push(Number(current.toFixed(8)));\n }\n const boundedTicks = [...new Set([...ticks.filter((tick) => tick < safeMax), safeMax])];\n return {\n maxValue,\n minValue,\n safeMax,\n ticks: boundedTicks.length >= 2 ? boundedTicks : [minValue, safeMax]\n };\n}\n\nfunction resolveSurfaceBandPaletteColor(chart: XlsxChart, palette: SurfacePalette, domain: SurfaceDomain, value: number) {\n const bandIndex = resolveSurfaceBandIndex(domain, value);\n const explicitColor = resolveSurfaceBandFormatColor(chart, \"bandFormatColors\", bandIndex);\n if (explicitColor) return explicitColor;\n const explicitFill = resolveExplicitSurfaceSeriesColor(chart, \"fill\");\n if (explicitFill) return explicitFill;\n const themeColors = chart.raw?.builtinThemeColors as Record<number, string> | undefined;\n const paletteCount = Math.trunc((domain.safeMax - domain.minValue) / (domain.ticks[1] - domain.ticks[0])) + 1;\n const builtinColor = themeColors ? resolveBuiltinChartColor(getBuiltinChartColor(chart.chartStyleId, bandIndex % paletteCount, paletteCount), themeColors) : undefined;\n if (builtinColor) return builtinColor;\n const stops = getSurfaceColorStops(chart, palette);\n if (stops.length === 0) {\n return resolveSurfaceBaseColor(chart, palette);\n }\n return stops[Math.min(stops.length - 1, Math.max(0, bandIndex))] ?? stops[stops.length - 1] ?? resolveSurfaceBaseColor(chart, palette);\n}\n\nfunction resolveSurfaceBandIndex(domain: SurfaceDomain, value: number) {\n const ticks = domain.ticks;\n for (let index = 0; index < ticks.length - 1; index += 1) {\n const end = ticks[index + 1] ?? domain.safeMax;\n if (value <= end || index === ticks.length - 2) {\n return index;\n }\n }\n return Math.max(0, ticks.length - 2);\n}\n\nfunction resolveSurfaceBandColor(chart: XlsxChart, palette: SurfacePalette, domain: SurfaceDomain, value: number) {\n return resolveSurfaceBandPaletteColor(chart, palette, domain, value);\n}\n\nfunction resolveSurfaceBandFormatColor(chart: XlsxChart, key: \"bandFormatColors\" | \"bandFormatLineColors\", index: number) {\n const colors = chart.raw?.[key];\n if (!colors || typeof colors !== \"object\" || !Object.prototype.hasOwnProperty.call(colors, index)) return null;\n const color = (colors as Record<number, unknown>)[index];\n return typeof color === \"string\" && color.length > 0 ? color : null;\n}\n\nfunction resolveSurfaceWireframeColor(chart: XlsxChart, palette: SurfacePalette, domain: SurfaceDomain, value: number) {\n const bandIndex = resolveSurfaceBandIndex(domain, value);\n const themeColors = chart.raw?.builtinThemeColors as Record<number, string> | undefined;\n const paletteCount = Math.trunc((domain.safeMax - domain.minValue) / (domain.ticks[1] - domain.ticks[0])) + 1;\n const builtinLine = themeColors ? resolveBuiltinChartColor(getBuiltinChartSurfaceLine(chart.chartStyleId, bandIndex, paletteCount), themeColors) : undefined;\n return resolveSurfaceBandFormatColor(chart, \"bandFormatLineColors\", bandIndex)\n ?? resolveExplicitSurfaceSeriesColor(chart, \"line\")\n ?? builtinLine\n ?? resolveSurfaceBandPaletteColor(chart, palette, domain, value);\n}\n\nfunction colorToRgba(color: string, alpha = 1) {\n if (color === \"transparent\") return [0, 0, 0, 0] as const;\n const rgb = parseRgbColor(color);\n if (!rgb) {\n return [0.1, 0.1, 0.1, alpha] as const;\n }\n return [rgb.red / 255, rgb.green / 255, rgb.blue / 255, alpha] as const;\n}\n\nfunction normalizeSurfaceX(column: number, cols: number) {\n return cols <= 1 ? 0 : ((column / (cols - 1)) - 0.5) * 2;\n}\n\nfunction normalizeSurfaceY(row: number, rows: number) {\n return rows <= 1 ? 0 : ((row / (rows - 1)) - 0.5) * 2;\n}\n\nfunction normalizeSurfaceZ(value: number, domain: SurfaceDomain, heightExtent: number, axis?: XlsxChart[\"valueAxis\"]) {\n return -(normalizeSurfaceValue(value, domain.minValue, domain.safeMax, axis) - 0.5) * heightExtent;\n}\n\nfunction projectCartesian3dPoint(\n x: number,\n y: number,\n z: number,\n rotXRad: number,\n rotYRad: number,\n usePerspective: boolean,\n perspectiveStrength: number,\n rightAngleAxes: boolean\n) {\n if (rightAngleAxes) {\n return { depth: z, x: x + z * Math.sin(rotYRad), y: y - z * Math.sin(rotXRad) };\n }\n const cosX = Math.cos(rotXRad);\n const sinX = Math.sin(rotXRad);\n const cosY = Math.cos(rotYRad);\n const sinY = Math.sin(rotYRad);\n const x1 = x * cosY + z * sinY;\n const z1 = -x * sinY + z * cosY;\n const y1 = y * cosX - z1 * sinX;\n const z2 = y * sinX + z1 * cosX;\n const perspective = usePerspective\n ? 1 / Math.max(0.18, 1 + z2 * (0.24 + perspectiveStrength * 0.5))\n : 1;\n return {\n depth: z2,\n x: x1 * perspective,\n y: y1 * perspective\n };\n}\n\nfunction withProjectedDepth(point: SurfacePoint3D, depth: number): SurfacePoint3D {\n return {\n ...point,\n depth\n };\n}\n\nfunction nudgeProjectedDepth(point: SurfacePoint3D, delta: number): SurfacePoint3D {\n return {\n ...point,\n depth: point.depth + delta\n };\n}\n\nfunction isContourSurfaceChart(chart: XlsxChart) {\n const rawChartType = chart.raw && typeof chart.raw === \"object\" && typeof chart.raw.xmlChartType === \"string\"\n ? chart.raw.xmlChartType\n : \"\";\n if (rawChartType === \"surfaceChart\") {\n return true;\n }\n if (rawChartType === \"surface3DChart\") {\n return false;\n }\n return chart.chartType === \"Surface\" && chart.is3d !== true;\n}\n\nfunction buildSurfaceMesh(chart: XlsxChart, palette: SurfacePalette, layout: SurfaceLayout): SurfaceScene | null {\n const rows = chart.series.length;\n const cols = chart.series.reduce((max, series) => Math.max(max, series.values.length), 0);\n if (rows < 2 || cols < 2) {\n return null;\n }\n const matrix = chart.series.map((series) => (\n Array.from({ length: cols }, (_, columnIndex) => safeNumber(series.values[columnIndex]))\n ));\n const domain = getSurfaceDomain(chart);\n if (!domain) {\n return null;\n }\n const isContour = isContourSurfaceChart(chart);\n const isWireframe = chart.wireframe === true;\n const fillVertices: SurfaceVertex[] = [];\n const wallTriangles: SolidSurfaceTriangle[] = [];\n const contourLines: Array<{ color: string; from: SurfacePoint3D; to: SurfacePoint3D }> = [];\n const meshLines: Array<{ color: string; from: SurfacePoint3D; to: SurfacePoint3D }> = [];\n const rotX = (chart.view3d?.rotX ?? 25) * (Math.PI / 180);\n const rotY = (chart.view3d?.rotY ?? 30) * (Math.PI / 180);\n const usePerspective = !isContour && chart.view3d?.rAngAx === false;\n const perspectiveStrength = clamp((chart.view3d?.perspective ?? (usePerspective ? 30 : 0)) / 100, 0, 1);\n const ratios = surfaceDataRatios(rows, cols, chart.valueAxis?.crossBetween !== \"midCat\", chart.view3d?.heightPercent, chart.view3d?.depthPercent, layout);\n const depthScale = ratios.depth;\n const heightExtent = 2 * ratios.height;\n const usesFlatMaterial = chart.surfaceMaterial === \"flat\";\n const wallLineColor = chart.valueAxis?.majorGridlineColor ?? chart.backWall?.lineColor ?? chart.sideWall?.lineColor ?? chart.floor?.lineColor ?? chart.axisLineColor ?? \"#a6a6a6\";\n const backWallFill = chart.backWall?.fillColor ?? \"#d9d9df\";\n const sideWallFill = chart.sideWall?.fillColor ?? \"#d5d7dc\";\n const floorFill = chart.floor?.fillColor ?? \"#d0d2d8\";\n const projectPoint = (column: number, row: number, value: number): SurfacePoint3D => {\n const worldX = normalizeSurfaceX(column, cols);\n if (isContour) {\n return {\n depth: 0,\n worldX,\n worldY: normalizeSurfaceY(row, rows),\n worldZ: 0,\n x: worldX,\n y: normalizeSurfaceY(row, rows)\n };\n }\n const worldY = normalizeSurfaceZ(value, domain, heightExtent, chart.valueAxis);\n const worldZ = normalizeSurfaceY(row, rows) * depthScale;\n const projected = projectCartesian3dPoint(worldX, worldY, worldZ, rotX, rotY, usePerspective, perspectiveStrength, chart.view3d?.rAngAx !== false);\n return {\n depth: projected.depth,\n worldX,\n worldY,\n worldZ,\n x: projected.x,\n y: projected.y\n };\n };\n const addWallQuad = (a: SurfacePoint3D, b: SurfacePoint3D, c: SurfacePoint3D, d: SurfacePoint3D, color: string) => {\n wallTriangles.push(\n { color, points: [a, b, c] },\n { color, points: [a, c, d] }\n );\n };\n const addMeshLine = (from: SurfacePoint3D, to: SurfacePoint3D, color: string) => {\n meshLines.push({ color, from, to });\n };\n\n for (let rowIndex = 0; rowIndex < rows - 1; rowIndex += 1) {\n for (let columnIndex = 0; columnIndex < cols - 1; columnIndex += 1) {\n const p00 = matrix[rowIndex]?.[columnIndex];\n const p10 = matrix[rowIndex]?.[columnIndex + 1];\n const p01 = matrix[rowIndex + 1]?.[columnIndex];\n const p11 = matrix[rowIndex + 1]?.[columnIndex + 1];\n if (p00 == null || p10 == null || p01 == null || p11 == null) {\n continue;\n }\n const triangles = triangulateSurfaceQuad([\n { value: p00, x: columnIndex, y: rowIndex },\n { value: p10, x: columnIndex + 1, y: rowIndex },\n { value: p11, x: columnIndex + 1, y: rowIndex + 1 },\n { value: p01, x: columnIndex, y: rowIndex + 1 }\n ], chart.valueAxis);\n for (const triangle of triangles) {\n for (let band = 0; band < domain.ticks.length - 1; band += 1) {\n const lower = domain.ticks[band];\n const upper = domain.ticks[band + 1];\n const polygon = clipSurfaceBand(clipSurfaceBand(triangle, lower, true, chart.valueAxis, band === 0), upper, false, chart.valueAxis);\n if (polygon.length < 3) continue;\n const bandColor = resolveSurfaceBandColor(chart, palette, domain, (lower + upper) / 2);\n if (!isWireframe && bandColor !== \"transparent\") {\n for (let index = 1; index < polygon.length - 1; index += 1) {\n for (const vertex of [polygon[0], polygon[index], polygon[index + 1]]) {\n const point = projectPoint(vertex.x, vertex.y, vertex.value);\n fillVertices.push({ bandColor, point: isContour ? withProjectedDepth(point, 0.08) : point, value: vertex.value });\n }\n }\n }\n for (const group of groupSurfaceBandEdges(polygon, triangle, band, lower, isWireframe)) {\n const edgeMidpoint = (domain.ticks[group.band] + domain.ticks[group.band + 1]) / 2;\n const color = resolveSurfaceWireframeColor(chart, palette, domain, edgeMidpoint);\n if (color !== \"transparent\") {\n for (const [from, to] of group.edges) {\n contourLines.push({ color, from: projectPoint(from.x, from.y, from.value), to: projectPoint(to.x, to.y, to.value) });\n }\n }\n }\n }\n }\n }\n }\n\n const columnSkip = Math.max(1, chart.categoryAxis?.tickMarkSkip ?? 1);\n const rowSkip = Math.max(1, chart.seriesAxis?.tickMarkSkip ?? 1);\n if (isContour) {\n const topLeft = withProjectedDepth(projectPoint(0, 0, domain.minValue), -0.12);\n const topRight = withProjectedDepth(projectPoint(cols - 1, 0, domain.minValue), -0.12);\n const bottomRight = withProjectedDepth(projectPoint(cols - 1, rows - 1, domain.minValue), -0.12);\n const bottomLeft = withProjectedDepth(projectPoint(0, rows - 1, domain.minValue), -0.12);\n if (chart.backWall?.hidden !== true && backWallFill !== \"transparent\") {\n addWallQuad(topLeft, topRight, bottomRight, bottomLeft, backWallFill);\n }\n for (let columnIndex = 0; columnIndex < cols; columnIndex += columnSkip) {\n addMeshLine(\n withProjectedDepth(projectPoint(columnIndex, 0, domain.minValue), 0.04),\n withProjectedDepth(projectPoint(columnIndex, rows - 1, domain.minValue), 0.04),\n wallLineColor\n );\n }\n for (let rowIndex = 0; rowIndex < rows; rowIndex += rowSkip) {\n addMeshLine(\n withProjectedDepth(projectPoint(0, rowIndex, domain.minValue), 0.04),\n withProjectedDepth(projectPoint(cols - 1, rowIndex, domain.minValue), 0.04),\n wallLineColor\n );\n }\n } else {\n const minPlaneValue = domain.minValue;\n const wallDepthOffset = 0;\n const backRow = chart.view3d?.rAngAx !== false || Math.cos(rotX) * Math.cos(rotY) >= 0 ? rows - 1 : 0;\n const sideColumn = Math.sin(rotY) >= 0 ? 0 : cols - 1;\n if (chart.floor?.hidden !== true && floorFill !== \"transparent\") {\n addWallQuad(\n nudgeProjectedDepth(projectPoint(0, 0, minPlaneValue), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(cols - 1, 0, minPlaneValue), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(cols - 1, rows - 1, minPlaneValue), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(0, rows - 1, minPlaneValue), wallDepthOffset),\n floorFill\n );\n }\n if (chart.backWall?.hidden !== true && backWallFill !== \"transparent\") {\n addWallQuad(\n nudgeProjectedDepth(projectPoint(0, backRow, domain.safeMax), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(cols - 1, backRow, domain.safeMax), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(cols - 1, backRow, minPlaneValue), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(0, backRow, minPlaneValue), wallDepthOffset),\n backWallFill\n );\n }\n if (chart.sideWall?.hidden !== true && sideWallFill !== \"transparent\") {\n addWallQuad(\n nudgeProjectedDepth(projectPoint(sideColumn, 0, domain.safeMax), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(sideColumn, rows - 1, domain.safeMax), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(sideColumn, rows - 1, minPlaneValue), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(sideColumn, 0, minPlaneValue), wallDepthOffset),\n sideWallFill\n );\n }\n for (const tick of chart.valueAxis?.majorGridlines ? domain.ticks : []) {\n if (chart.backWall?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(0, backRow, tick), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(cols - 1, backRow, tick), wallDepthOffset * 0.75), wallLineColor);\n }\n if (chart.sideWall?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(sideColumn, 0, tick), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(sideColumn, rows - 1, tick), wallDepthOffset * 0.75), wallLineColor);\n }\n }\n for (let columnIndex = 0; chart.categoryAxis?.majorGridlines && columnIndex < cols; columnIndex += columnSkip) {\n if (chart.floor?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(columnIndex, 0, minPlaneValue), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(columnIndex, rows - 1, minPlaneValue), wallDepthOffset * 0.75), wallLineColor);\n }\n if (chart.backWall?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(columnIndex, backRow, minPlaneValue), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(columnIndex, backRow, domain.safeMax), wallDepthOffset * 0.75), wallLineColor);\n }\n }\n for (let rowIndex = 0; chart.seriesAxis?.majorGridlines && rowIndex < rows; rowIndex += rowSkip) {\n if (chart.floor?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(0, rowIndex, minPlaneValue), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(cols - 1, rowIndex, minPlaneValue), wallDepthOffset * 0.75), wallLineColor);\n }\n if (chart.sideWall?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(sideColumn, rowIndex, minPlaneValue), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(sideColumn, rowIndex, domain.safeMax), wallDepthOffset * 0.75), wallLineColor);\n }\n }\n }\n\n const allPoints = [\n ...fillVertices.map((vertex) => vertex.point),\n ...wallTriangles.flatMap((triangle) => triangle.points),\n ...meshLines.flatMap((line) => [line.from, line.to]),\n ...contourLines.flatMap((line) => [line.from, line.to])\n ];\n if (allPoints.length === 0) {\n return null;\n }\n\n const minX = Math.min(...allPoints.map((point) => point.x));\n const maxX = Math.max(...allPoints.map((point) => point.x));\n const minY = Math.min(...allPoints.map((point) => point.y));\n const maxY = Math.max(...allPoints.map((point) => point.y));\n const minDepth = Math.min(...allPoints.map((point) => point.depth));\n const maxDepth = Math.max(...allPoints.map((point) => point.depth));\n const scale = Math.min(\n layout.plot.width / Math.max(0.25, maxX - minX),\n layout.plot.height / Math.max(0.25, maxY - minY)\n );\n const centerX = layout.plot.left + layout.plot.width / 2;\n const centerY = layout.plot.top + layout.plot.height / 2;\n const centerRawX = (minX + maxX) / 2;\n const centerRawY = (minY + maxY) / 2;\n const toScreenX = (x: number) => centerX + (x - centerRawX) * scale;\n const toScreenY = (y: number) => centerY + (y - centerRawY) * scale;\n const toClipPoint = (point: SurfacePoint3D) => {\n const screenX = toScreenX(point.x);\n const screenY = toScreenY(point.y);\n return {\n x: (screenX / layout.width) * 2 - 1,\n y: 1 - (screenY / layout.height) * 2,\n z: clamp(((point.depth - minDepth) / Math.max(1e-6, maxDepth - minDepth)) * 2 - 1, -1, 1)\n };\n };\n\n const fillPositions: number[] = [];\n const fillColors: number[] = [];\n const wallPositions: number[] = [];\n const wallColors: number[] = [];\n for (const triangle of wallTriangles) {\n const world = triangle.points.map(point => ({ x: point.worldX, y: point.worldY, z: -point.worldZ }));\n const normal = transformSurfaceNormal(surfaceNormal(world[0], world[1], world[2]), chart.view3d?.rotX ?? 25, chart.view3d?.rotY ?? 30, chart.view3d?.rAngAx !== false);\n const rgba = colorToRgba(usesFlatMaterial ? triangle.color : shadeSurfaceMatteColor(triangle.color, normal), 1);\n for (const point of triangle.points) {\n const clip = toClipPoint(point);\n wallPositions.push(clip.x, clip.y, clip.z);\n wallColors.push(rgba[0], rgba[1], rgba[2], rgba[3]);\n }\n }\n for (let index = 0; index < fillVertices.length; index += 3) {\n const left = fillVertices[index];\n const middle = fillVertices[index + 1];\n const right = fillVertices[index + 2];\n if (!left || !middle || !right) {\n continue;\n }\n const world = [left, middle, right].map(vertex => ({ x: vertex.point.worldX, y: vertex.point.worldY, z: -vertex.point.worldZ }));\n const normal = transformSurfaceNormal(surfaceNormal(world[0], world[1], world[2]), chart.view3d?.rotX ?? 25, chart.view3d?.rotY ?? 30, chart.view3d?.rAngAx !== false);\n const shaded = colorToRgba(usesFlatMaterial ? left.bandColor : shadeSurfaceMatteColor(left.bandColor, normal), 1);\n [left, middle, right].forEach((vertex) => {\n const clip = toClipPoint(vertex.point);\n fillPositions.push(clip.x, clip.y, clip.z);\n fillColors.push(shaded[0], shaded[1], shaded[2], shaded[3]);\n });\n }\n\n const linePositions: number[] = [];\n const lineColors: number[] = [];\n meshLines.forEach((line) => {\n const from = toClipPoint(line.from);\n const to = toClipPoint(line.to);\n const rgba = colorToRgba(line.color, 1);\n linePositions.push(from.x, from.y, from.z - 0.00001, to.x, to.y, to.z - 0.00001);\n lineColors.push(rgba[0], rgba[1], rgba[2], rgba[3], rgba[0], rgba[1], rgba[2], rgba[3]);\n });\n contourLines.forEach((line) => {\n const from = toClipPoint(line.from);\n const to = toClipPoint(line.to);\n const rgba = colorToRgba(line.color, 1);\n linePositions.push(from.x, from.y, from.z - 0.00001, to.x, to.y, to.z - 0.00001);\n lineColors.push(rgba[0], rgba[1], rgba[2], rgba[3], rgba[0], rgba[1], rgba[2], rgba[3]);\n });\n\n return {\n fillColors: new Float32Array(fillColors),\n fillPositions: new Float32Array(fillPositions),\n lineColors: new Float32Array(lineColors),\n linePositions: new Float32Array(linePositions),\n wallColors: new Float32Array(wallColors),\n wallPositions: new Float32Array(wallPositions)\n };\n}\n\nexport const MemoSurfaceChartComposite = React.memo(function MemoSurfaceChartComposite({\n background,\n borderColor,\n chart,\n fontFamily,\n layout,\n onDoubleClick,\n onPointerDown,\n overlay,\n palette,\n fallback\n}: SurfaceCompositeProps) {\n const canvasRef = React.useRef<HTMLCanvasElement | null>(null);\n const [ready, setReady] = React.useState(false);\n const [failed, setFailed] = React.useState(false);\n const isContour = isContourSurfaceChart(chart);\n\n React.useEffect(() => {\n if (isContour) {\n setReady(false);\n setFailed(false);\n return;\n }\n const canvas = canvasRef.current;\n if (!canvas) {\n return;\n }\n let cancelled = false;\n let reglInstance: ReturnType<typeof createREGL> | null = null;\n\n const drawSurface = () => {\n try {\n const scene = buildSurfaceMesh(chart, palette, layout);\n if (!scene) {\n if (!cancelled) {\n setFailed(true);\n setReady(false);\n }\n return;\n }\n const dpr = window.devicePixelRatio || 1;\n canvas.width = Math.max(1, Math.round(layout.width * dpr));\n canvas.height = Math.max(1, Math.round(layout.height * dpr));\n reglInstance = createREGL({\n attributes: {\n alpha: true,\n antialias: true,\n depth: true,\n premultipliedAlpha: true\n },\n canvas\n });\n const fillCommand = scene.fillPositions.length > 0\n ? reglInstance({\n attributes: {\n color: scene.fillColors,\n position: scene.fillPositions\n },\n blend: {\n enable: true,\n func: {\n dstRGB: \"one minus src alpha\",\n dstAlpha: \"one minus src alpha\",\n srcRGB: \"src alpha\",\n srcAlpha: \"src alpha\"\n }\n },\n count: scene.fillPositions.length / 3,\n depth: {\n enable: true\n },\n frag: `\n precision mediump float;\n varying vec4 vColor;\n void main() {\n gl_FragColor = vColor;\n }\n `,\n primitive: \"triangles\",\n vert: `\n precision mediump float;\n attribute vec3 position;\n attribute vec4 color;\n varying vec4 vColor;\n void main() {\n gl_Position = vec4(position, 1.0);\n vColor = color;\n }\n `\n })\n : null;\n const wallCommand = scene.wallPositions.length > 0\n ? reglInstance({\n attributes: {\n color: scene.wallColors,\n position: scene.wallPositions\n },\n blend: {\n enable: true,\n func: {\n dstRGB: \"one minus src alpha\",\n dstAlpha: \"one minus src alpha\",\n srcRGB: \"src alpha\",\n srcAlpha: \"src alpha\"\n }\n },\n count: scene.wallPositions.length / 3,\n depth: {\n enable: true,\n func: \"lequal\"\n },\n frag: `\n precision mediump float;\n varying vec4 vColor;\n void main() {\n gl_FragColor = vColor;\n }\n `,\n primitive: \"triangles\",\n vert: `\n precision mediump float;\n attribute vec3 position;\n attribute vec4 color;\n varying vec4 vColor;\n void main() {\n gl_Position = vec4(position, 1.0);\n vColor = color;\n }\n `\n })\n : null;\n const lineCommand = scene.linePositions.length > 0\n ? reglInstance({\n attributes: {\n color: scene.lineColors,\n position: scene.linePositions\n },\n blend: {\n enable: true,\n func: {\n dstRGB: \"one minus src alpha\",\n dstAlpha: \"one minus src alpha\",\n srcRGB: \"src alpha\",\n srcAlpha: \"src alpha\"\n }\n },\n count: scene.linePositions.length / 3,\n depth: {\n enable: true,\n func: \"lequal\"\n },\n frag: `\n precision mediump float;\n varying vec4 vColor;\n void main() {\n gl_FragColor = vColor;\n }\n `,\n lineWidth: 1,\n primitive: \"lines\",\n vert: `\n precision mediump float;\n attribute vec3 position;\n attribute vec4 color;\n varying vec4 vColor;\n void main() {\n gl_Position = vec4(position, 1.0);\n vColor = color;\n }\n `\n })\n : null;\n\n reglInstance.clear({ color: [0, 0, 0, 0], depth: 1 });\n wallCommand?.();\n fillCommand?.();\n lineCommand?.();\n if (!cancelled) {\n setReady(true);\n setFailed(false);\n }\n } catch {\n if (!cancelled) {\n setReady(false);\n setFailed(true);\n }\n }\n };\n\n setReady(false);\n setFailed(false);\n drawSurface();\n\n return () => {\n cancelled = true;\n reglInstance?.destroy();\n };\n }, [\n chart,\n isContour,\n layout,\n palette\n ]);\n\n const shouldRenderFallback = isContour || failed || !ready;\n\n return (\n <div\n aria-label={chart.title ?? chart.name ?? \"Chart\"}\n role=\"img\"\n style={{\n background,\n border: borderColor.trim().toLowerCase() === \"transparent\" ? \"none\" : `1px solid ${borderColor}`,\n boxSizing: \"border-box\",\n fontFamily,\n height: \"100%\",\n overflow: \"hidden\",\n pointerEvents: \"auto\",\n position: \"relative\",\n width: \"100%\"\n }}\n >\n <canvas\n ref={canvasRef}\n style={{\n display: shouldRenderFallback ? \"none\" : \"block\",\n height: \"100%\",\n inset: 0,\n position: \"absolute\",\n width: \"100%\"\n }}\n />\n <svg\n onDoubleClick={onDoubleClick}\n onPointerDown={onPointerDown}\n style={{ display: \"block\", height: \"100%\", inset: 0, position: \"absolute\", width: \"100%\" }}\n viewBox={`0 0 ${layout.width} ${layout.height}`}\n >\n {shouldRenderFallback ? fallback : null}\n {overlay}\n </svg>\n </div>\n );\n}, (prev, next) => (\n prev.chart === next.chart\n && prev.palette === next.palette\n && prev.background === next.background\n && prev.borderColor === next.borderColor\n && prev.fontFamily === next.fontFamily\n && prev.onDoubleClick === next.onDoubleClick\n && prev.onPointerDown === next.onPointerDown\n && prev.layout.width === next.layout.width\n && prev.layout.height === next.layout.height\n && prev.layout.plot.left === next.layout.plot.left\n && prev.layout.plot.top === next.layout.plot.top\n && prev.layout.plot.width === next.layout.plot.width\n && prev.layout.plot.height === next.layout.plot.height\n && prev.overlay === next.overlay\n && prev.fallback === next.fallback\n));\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
clipSurfaceBand,
|
|
3
|
+
groupSurfaceBandEdges,
|
|
3
4
|
normalizeSurfaceValue,
|
|
4
5
|
shadeSurfaceMatteColor,
|
|
5
|
-
surfaceBandEdges,
|
|
6
6
|
surfaceDataRatios,
|
|
7
7
|
surfaceNormal,
|
|
8
8
|
transformSurfaceNormal,
|
|
9
9
|
triangulateSurfaceQuad
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-VXBNYHW5.js";
|
|
11
11
|
import {
|
|
12
12
|
getBuiltinChartColor,
|
|
13
13
|
getBuiltinChartSurfaceLine,
|
|
@@ -294,10 +294,13 @@ function buildSurfaceMesh(chart, palette, layout) {
|
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
|
-
const
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
297
|
+
for (const group of groupSurfaceBandEdges(polygon, triangle, band, lower, isWireframe)) {
|
|
298
|
+
const edgeMidpoint = (domain.ticks[group.band] + domain.ticks[group.band + 1]) / 2;
|
|
299
|
+
const color = resolveSurfaceWireframeColor(chart, palette, domain, edgeMidpoint);
|
|
300
|
+
if (color !== "transparent") {
|
|
301
|
+
for (const [from, to] of group.edges) {
|
|
302
|
+
contourLines.push({ color, from: projectPoint(from.x, from.y, from.value), to: projectPoint(to.x, to.y, to.value) });
|
|
303
|
+
}
|
|
301
304
|
}
|
|
302
305
|
}
|
|
303
306
|
}
|
|
@@ -717,4 +720,4 @@ var MemoSurfaceChartComposite = React.memo(function MemoSurfaceChartComposite2({
|
|
|
717
720
|
export {
|
|
718
721
|
MemoSurfaceChartComposite
|
|
719
722
|
};
|
|
720
|
-
//# sourceMappingURL=surface-regl-
|
|
723
|
+
//# sourceMappingURL=surface-regl-7CDGGVDG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/surface-regl.tsx"],"sourcesContent":["import { getBuiltinChartColor, getBuiltinChartSurfaceLine, resolveBuiltinChartColor } from \"./builtin-chart-styles\";\nimport createREGL from \"regl\";\nimport * as React from \"react\";\nimport { shadeSurfaceMatteColor, surfaceNormal, transformSurfaceNormal } from \"./surface-lighting\";\nimport { clipSurfaceBand, groupSurfaceBandEdges, normalizeSurfaceValue, surfaceDataRatios, triangulateSurfaceQuad } from \"./surface-geometry\";\nimport type { XlsxChart } from \"./types\";\n\ntype SurfacePalette = {\n border: string;\n mutedText: string;\n surface: string;\n text: string;\n};\n\ntype SurfaceLayout = {\n height: number;\n plot: {\n height: number;\n left: number;\n top: number;\n width: number;\n };\n width: number;\n};\n\ntype SurfaceCompositeProps = {\n background: string;\n borderColor: string;\n chart: XlsxChart;\n fontFamily: string;\n layout: SurfaceLayout;\n onDoubleClick?: React.MouseEventHandler<SVGSVGElement>;\n onPointerDown?: React.PointerEventHandler<SVGSVGElement>;\n overlay: React.ReactNode;\n palette: SurfacePalette;\n fallback: React.ReactNode;\n};\n\ntype SurfaceDomain = {\n maxValue: number;\n minValue: number;\n safeMax: number;\n ticks: number[];\n};\n\ntype SurfacePoint3D = {\n depth: number;\n worldX: number;\n worldY: number;\n worldZ: number;\n x: number;\n y: number;\n};\n\ntype SurfaceVertex = {\n bandColor: string;\n point: SurfacePoint3D;\n value: number;\n};\n\ntype SolidSurfaceTriangle = {\n color: string;\n points: [SurfacePoint3D, SurfacePoint3D, SurfacePoint3D];\n};\n\ntype SurfaceScene = {\n fillColors: Float32Array;\n fillPositions: Float32Array;\n lineColors: Float32Array;\n linePositions: Float32Array;\n wallColors: Float32Array;\n wallPositions: Float32Array;\n};\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction safeNumber(value: unknown) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n const normalized = value.trim().replace(/,/g, \"\");\n if (!normalized) {\n return null;\n }\n const parsed = Number(normalized);\n return Number.isFinite(parsed) ? parsed : null;\n }\n return null;\n}\n\nfunction parseRgbColor(color: string) {\n const match = /^#?([0-9a-f]{6})$/i.exec(color);\n if (!match) {\n return null;\n }\n return {\n blue: Number.parseInt(match[1].slice(4, 6), 16),\n green: Number.parseInt(match[1].slice(2, 4), 16),\n red: Number.parseInt(match[1].slice(0, 2), 16)\n };\n}\n\nfunction mixRgbColor(color: string, mixWith: string, ratio: number) {\n const base = parseRgbColor(color);\n const target = parseRgbColor(mixWith);\n if (!base || !target) {\n return color;\n }\n const clamped = clamp(ratio, 0, 1);\n const mixChannel = (left: number, right: number) => Math.round(left + (right - left) * clamped);\n return `#${[\n mixChannel(base.red, target.red),\n mixChannel(base.green, target.green),\n mixChannel(base.blue, target.blue)\n ].map((value) => value.toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\n\nfunction lightenColor(color: string, ratio: number) {\n return mixRgbColor(color, \"#ffffff\", ratio);\n}\n\nfunction darkenColor(color: string, ratio: number) {\n return mixRgbColor(color, \"#000000\", ratio);\n}\n\nfunction resolveSurfaceBaseColor(chart: XlsxChart, palette: Pick<SurfacePalette, \"text\">) {\n return chart.chartColorPalette?.[0]\n ?? chart.series[0]?.color\n ?? chart.series[0]?.lineColor\n ?? chart.axisLineColor\n ?? chart.textColor\n ?? palette.text;\n}\n\nfunction normalizeSurfaceRendererHexColor(value: unknown) {\n if (typeof value !== \"string\") {\n return null;\n }\n const trimmed = value.trim();\n if (!trimmed) {\n return null;\n }\n const normalized = trimmed.startsWith(\"#\") ? trimmed.slice(1) : trimmed;\n return /^[0-9a-f]{6}$/i.test(normalized) ? `#${normalized.toLowerCase()}` : null;\n}\n\nfunction resolveExplicitSurfaceSeriesColor(chart: XlsxChart, kind: \"fill\" | \"line\") {\n const shape = chart.series[0]?.shapeProperties;\n if (kind === \"fill\" ? shape?.xmlFillHidden === true : shape?.xmlLineHidden === true) return \"transparent\";\n const color = kind === \"fill\"\n ? shape?.xmlFillColor ?? shape?.solidFillHex\n : shape?.xmlLineColor ?? shape?.lineColorHex;\n return normalizeSurfaceRendererHexColor(color);\n}\n\nfunction getSurfaceColorStops(chart: XlsxChart, palette: SurfacePalette) {\n const explicitFill = resolveExplicitSurfaceSeriesColor(chart, \"fill\");\n if (explicitFill) return [explicitFill];\n const colors = (chart.chartColorPalette ?? []).filter((value): value is string => typeof value === \"string\" && value.length > 0);\n return colors.length > 0 ? colors : [resolveSurfaceBaseColor(chart, palette)];\n}\n\nfunction getSurfaceDomain(chart: XlsxChart): SurfaceDomain | null {\n const numericValues = chart.series.flatMap((series) => (\n series.values\n .map((value) => safeNumber(value))\n .filter((value): value is number => value != null)\n ));\n if (numericValues.length === 0) {\n return null;\n }\n const explicitMin = typeof chart.valueAxis?.min === \"number\" && Number.isFinite(chart.valueAxis.min)\n ? chart.valueAxis.min\n : null;\n const explicitMax = typeof chart.valueAxis?.max === \"number\" && Number.isFinite(chart.valueAxis.max)\n ? chart.valueAxis.max\n : null;\n const rawMin = Math.min(...numericValues);\n const rawMax = Math.max(...numericValues);\n const spanBase = Math.max(1e-6, rawMax - Math.min(0, rawMin));\n const roughStep = spanBase / 5;\n const magnitude = Math.pow(10, Math.floor(Math.log10(Math.max(roughStep, 1e-6))));\n const normalized = roughStep / magnitude;\n const niceStep = normalized <= 1 ? 1 : normalized <= 2 ? 2 : normalized <= 5 ? 5 : 10;\n const step = typeof chart.valueAxis?.majorUnit === \"number\" && chart.valueAxis.majorUnit > 0\n ? chart.valueAxis.majorUnit\n : niceStep * magnitude;\n const minValue = explicitMin ?? (rawMin >= 0 ? 0 : Math.floor(rawMin / step) * step);\n const maxValue = explicitMax ?? Math.ceil(rawMax / step) * step;\n const safeMax = maxValue <= minValue ? minValue + step : maxValue;\n const ticks: number[] = [];\n for (let current = minValue; current <= safeMax + step * 0.001; current += step) {\n ticks.push(Number(current.toFixed(8)));\n }\n const boundedTicks = [...new Set([...ticks.filter((tick) => tick < safeMax), safeMax])];\n return {\n maxValue,\n minValue,\n safeMax,\n ticks: boundedTicks.length >= 2 ? boundedTicks : [minValue, safeMax]\n };\n}\n\nfunction resolveSurfaceBandPaletteColor(chart: XlsxChart, palette: SurfacePalette, domain: SurfaceDomain, value: number) {\n const bandIndex = resolveSurfaceBandIndex(domain, value);\n const explicitColor = resolveSurfaceBandFormatColor(chart, \"bandFormatColors\", bandIndex);\n if (explicitColor) return explicitColor;\n const explicitFill = resolveExplicitSurfaceSeriesColor(chart, \"fill\");\n if (explicitFill) return explicitFill;\n const themeColors = chart.raw?.builtinThemeColors as Record<number, string> | undefined;\n const paletteCount = Math.trunc((domain.safeMax - domain.minValue) / (domain.ticks[1] - domain.ticks[0])) + 1;\n const builtinColor = themeColors ? resolveBuiltinChartColor(getBuiltinChartColor(chart.chartStyleId, bandIndex % paletteCount, paletteCount), themeColors) : undefined;\n if (builtinColor) return builtinColor;\n const stops = getSurfaceColorStops(chart, palette);\n if (stops.length === 0) {\n return resolveSurfaceBaseColor(chart, palette);\n }\n return stops[Math.min(stops.length - 1, Math.max(0, bandIndex))] ?? stops[stops.length - 1] ?? resolveSurfaceBaseColor(chart, palette);\n}\n\nfunction resolveSurfaceBandIndex(domain: SurfaceDomain, value: number) {\n const ticks = domain.ticks;\n for (let index = 0; index < ticks.length - 1; index += 1) {\n const end = ticks[index + 1] ?? domain.safeMax;\n if (value <= end || index === ticks.length - 2) {\n return index;\n }\n }\n return Math.max(0, ticks.length - 2);\n}\n\nfunction resolveSurfaceBandColor(chart: XlsxChart, palette: SurfacePalette, domain: SurfaceDomain, value: number) {\n return resolveSurfaceBandPaletteColor(chart, palette, domain, value);\n}\n\nfunction resolveSurfaceBandFormatColor(chart: XlsxChart, key: \"bandFormatColors\" | \"bandFormatLineColors\", index: number) {\n const colors = chart.raw?.[key];\n if (!colors || typeof colors !== \"object\" || !Object.prototype.hasOwnProperty.call(colors, index)) return null;\n const color = (colors as Record<number, unknown>)[index];\n return typeof color === \"string\" && color.length > 0 ? color : null;\n}\n\nfunction resolveSurfaceWireframeColor(chart: XlsxChart, palette: SurfacePalette, domain: SurfaceDomain, value: number) {\n const bandIndex = resolveSurfaceBandIndex(domain, value);\n const themeColors = chart.raw?.builtinThemeColors as Record<number, string> | undefined;\n const paletteCount = Math.trunc((domain.safeMax - domain.minValue) / (domain.ticks[1] - domain.ticks[0])) + 1;\n const builtinLine = themeColors ? resolveBuiltinChartColor(getBuiltinChartSurfaceLine(chart.chartStyleId, bandIndex, paletteCount), themeColors) : undefined;\n return resolveSurfaceBandFormatColor(chart, \"bandFormatLineColors\", bandIndex)\n ?? resolveExplicitSurfaceSeriesColor(chart, \"line\")\n ?? builtinLine\n ?? resolveSurfaceBandPaletteColor(chart, palette, domain, value);\n}\n\nfunction colorToRgba(color: string, alpha = 1) {\n if (color === \"transparent\") return [0, 0, 0, 0] as const;\n const rgb = parseRgbColor(color);\n if (!rgb) {\n return [0.1, 0.1, 0.1, alpha] as const;\n }\n return [rgb.red / 255, rgb.green / 255, rgb.blue / 255, alpha] as const;\n}\n\nfunction normalizeSurfaceX(column: number, cols: number) {\n return cols <= 1 ? 0 : ((column / (cols - 1)) - 0.5) * 2;\n}\n\nfunction normalizeSurfaceY(row: number, rows: number) {\n return rows <= 1 ? 0 : ((row / (rows - 1)) - 0.5) * 2;\n}\n\nfunction normalizeSurfaceZ(value: number, domain: SurfaceDomain, heightExtent: number, axis?: XlsxChart[\"valueAxis\"]) {\n return -(normalizeSurfaceValue(value, domain.minValue, domain.safeMax, axis) - 0.5) * heightExtent;\n}\n\nfunction projectCartesian3dPoint(\n x: number,\n y: number,\n z: number,\n rotXRad: number,\n rotYRad: number,\n usePerspective: boolean,\n perspectiveStrength: number,\n rightAngleAxes: boolean\n) {\n if (rightAngleAxes) {\n return { depth: z, x: x + z * Math.sin(rotYRad), y: y - z * Math.sin(rotXRad) };\n }\n const cosX = Math.cos(rotXRad);\n const sinX = Math.sin(rotXRad);\n const cosY = Math.cos(rotYRad);\n const sinY = Math.sin(rotYRad);\n const x1 = x * cosY + z * sinY;\n const z1 = -x * sinY + z * cosY;\n const y1 = y * cosX - z1 * sinX;\n const z2 = y * sinX + z1 * cosX;\n const perspective = usePerspective\n ? 1 / Math.max(0.18, 1 + z2 * (0.24 + perspectiveStrength * 0.5))\n : 1;\n return {\n depth: z2,\n x: x1 * perspective,\n y: y1 * perspective\n };\n}\n\nfunction withProjectedDepth(point: SurfacePoint3D, depth: number): SurfacePoint3D {\n return {\n ...point,\n depth\n };\n}\n\nfunction nudgeProjectedDepth(point: SurfacePoint3D, delta: number): SurfacePoint3D {\n return {\n ...point,\n depth: point.depth + delta\n };\n}\n\nfunction isContourSurfaceChart(chart: XlsxChart) {\n const rawChartType = chart.raw && typeof chart.raw === \"object\" && typeof chart.raw.xmlChartType === \"string\"\n ? chart.raw.xmlChartType\n : \"\";\n if (rawChartType === \"surfaceChart\") {\n return true;\n }\n if (rawChartType === \"surface3DChart\") {\n return false;\n }\n return chart.chartType === \"Surface\" && chart.is3d !== true;\n}\n\nfunction buildSurfaceMesh(chart: XlsxChart, palette: SurfacePalette, layout: SurfaceLayout): SurfaceScene | null {\n const rows = chart.series.length;\n const cols = chart.series.reduce((max, series) => Math.max(max, series.values.length), 0);\n if (rows < 2 || cols < 2) {\n return null;\n }\n const matrix = chart.series.map((series) => (\n Array.from({ length: cols }, (_, columnIndex) => safeNumber(series.values[columnIndex]))\n ));\n const domain = getSurfaceDomain(chart);\n if (!domain) {\n return null;\n }\n const isContour = isContourSurfaceChart(chart);\n const isWireframe = chart.wireframe === true;\n const fillVertices: SurfaceVertex[] = [];\n const wallTriangles: SolidSurfaceTriangle[] = [];\n const contourLines: Array<{ color: string; from: SurfacePoint3D; to: SurfacePoint3D }> = [];\n const meshLines: Array<{ color: string; from: SurfacePoint3D; to: SurfacePoint3D }> = [];\n const rotX = (chart.view3d?.rotX ?? 25) * (Math.PI / 180);\n const rotY = (chart.view3d?.rotY ?? 30) * (Math.PI / 180);\n const usePerspective = !isContour && chart.view3d?.rAngAx === false;\n const perspectiveStrength = clamp((chart.view3d?.perspective ?? (usePerspective ? 30 : 0)) / 100, 0, 1);\n const ratios = surfaceDataRatios(rows, cols, chart.valueAxis?.crossBetween !== \"midCat\", chart.view3d?.heightPercent, chart.view3d?.depthPercent, layout);\n const depthScale = ratios.depth;\n const heightExtent = 2 * ratios.height;\n const usesFlatMaterial = chart.surfaceMaterial === \"flat\";\n const wallLineColor = chart.valueAxis?.majorGridlineColor ?? chart.backWall?.lineColor ?? chart.sideWall?.lineColor ?? chart.floor?.lineColor ?? chart.axisLineColor ?? \"#a6a6a6\";\n const backWallFill = chart.backWall?.fillColor ?? \"#d9d9df\";\n const sideWallFill = chart.sideWall?.fillColor ?? \"#d5d7dc\";\n const floorFill = chart.floor?.fillColor ?? \"#d0d2d8\";\n const projectPoint = (column: number, row: number, value: number): SurfacePoint3D => {\n const worldX = normalizeSurfaceX(column, cols);\n if (isContour) {\n return {\n depth: 0,\n worldX,\n worldY: normalizeSurfaceY(row, rows),\n worldZ: 0,\n x: worldX,\n y: normalizeSurfaceY(row, rows)\n };\n }\n const worldY = normalizeSurfaceZ(value, domain, heightExtent, chart.valueAxis);\n const worldZ = normalizeSurfaceY(row, rows) * depthScale;\n const projected = projectCartesian3dPoint(worldX, worldY, worldZ, rotX, rotY, usePerspective, perspectiveStrength, chart.view3d?.rAngAx !== false);\n return {\n depth: projected.depth,\n worldX,\n worldY,\n worldZ,\n x: projected.x,\n y: projected.y\n };\n };\n const addWallQuad = (a: SurfacePoint3D, b: SurfacePoint3D, c: SurfacePoint3D, d: SurfacePoint3D, color: string) => {\n wallTriangles.push(\n { color, points: [a, b, c] },\n { color, points: [a, c, d] }\n );\n };\n const addMeshLine = (from: SurfacePoint3D, to: SurfacePoint3D, color: string) => {\n meshLines.push({ color, from, to });\n };\n\n for (let rowIndex = 0; rowIndex < rows - 1; rowIndex += 1) {\n for (let columnIndex = 0; columnIndex < cols - 1; columnIndex += 1) {\n const p00 = matrix[rowIndex]?.[columnIndex];\n const p10 = matrix[rowIndex]?.[columnIndex + 1];\n const p01 = matrix[rowIndex + 1]?.[columnIndex];\n const p11 = matrix[rowIndex + 1]?.[columnIndex + 1];\n if (p00 == null || p10 == null || p01 == null || p11 == null) {\n continue;\n }\n const triangles = triangulateSurfaceQuad([\n { value: p00, x: columnIndex, y: rowIndex },\n { value: p10, x: columnIndex + 1, y: rowIndex },\n { value: p11, x: columnIndex + 1, y: rowIndex + 1 },\n { value: p01, x: columnIndex, y: rowIndex + 1 }\n ], chart.valueAxis);\n for (const triangle of triangles) {\n for (let band = 0; band < domain.ticks.length - 1; band += 1) {\n const lower = domain.ticks[band];\n const upper = domain.ticks[band + 1];\n const polygon = clipSurfaceBand(clipSurfaceBand(triangle, lower, true, chart.valueAxis, band === 0), upper, false, chart.valueAxis);\n if (polygon.length < 3) continue;\n const bandColor = resolveSurfaceBandColor(chart, palette, domain, (lower + upper) / 2);\n if (!isWireframe && bandColor !== \"transparent\") {\n for (let index = 1; index < polygon.length - 1; index += 1) {\n for (const vertex of [polygon[0], polygon[index], polygon[index + 1]]) {\n const point = projectPoint(vertex.x, vertex.y, vertex.value);\n fillVertices.push({ bandColor, point: isContour ? withProjectedDepth(point, 0.08) : point, value: vertex.value });\n }\n }\n }\n for (const group of groupSurfaceBandEdges(polygon, triangle, band, lower, isWireframe)) {\n const edgeMidpoint = (domain.ticks[group.band] + domain.ticks[group.band + 1]) / 2;\n const color = resolveSurfaceWireframeColor(chart, palette, domain, edgeMidpoint);\n if (color !== \"transparent\") {\n for (const [from, to] of group.edges) {\n contourLines.push({ color, from: projectPoint(from.x, from.y, from.value), to: projectPoint(to.x, to.y, to.value) });\n }\n }\n }\n }\n }\n }\n }\n\n const columnSkip = Math.max(1, chart.categoryAxis?.tickMarkSkip ?? 1);\n const rowSkip = Math.max(1, chart.seriesAxis?.tickMarkSkip ?? 1);\n if (isContour) {\n const topLeft = withProjectedDepth(projectPoint(0, 0, domain.minValue), -0.12);\n const topRight = withProjectedDepth(projectPoint(cols - 1, 0, domain.minValue), -0.12);\n const bottomRight = withProjectedDepth(projectPoint(cols - 1, rows - 1, domain.minValue), -0.12);\n const bottomLeft = withProjectedDepth(projectPoint(0, rows - 1, domain.minValue), -0.12);\n if (chart.backWall?.hidden !== true && backWallFill !== \"transparent\") {\n addWallQuad(topLeft, topRight, bottomRight, bottomLeft, backWallFill);\n }\n for (let columnIndex = 0; columnIndex < cols; columnIndex += columnSkip) {\n addMeshLine(\n withProjectedDepth(projectPoint(columnIndex, 0, domain.minValue), 0.04),\n withProjectedDepth(projectPoint(columnIndex, rows - 1, domain.minValue), 0.04),\n wallLineColor\n );\n }\n for (let rowIndex = 0; rowIndex < rows; rowIndex += rowSkip) {\n addMeshLine(\n withProjectedDepth(projectPoint(0, rowIndex, domain.minValue), 0.04),\n withProjectedDepth(projectPoint(cols - 1, rowIndex, domain.minValue), 0.04),\n wallLineColor\n );\n }\n } else {\n const minPlaneValue = domain.minValue;\n const wallDepthOffset = 0;\n const backRow = chart.view3d?.rAngAx !== false || Math.cos(rotX) * Math.cos(rotY) >= 0 ? rows - 1 : 0;\n const sideColumn = Math.sin(rotY) >= 0 ? 0 : cols - 1;\n if (chart.floor?.hidden !== true && floorFill !== \"transparent\") {\n addWallQuad(\n nudgeProjectedDepth(projectPoint(0, 0, minPlaneValue), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(cols - 1, 0, minPlaneValue), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(cols - 1, rows - 1, minPlaneValue), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(0, rows - 1, minPlaneValue), wallDepthOffset),\n floorFill\n );\n }\n if (chart.backWall?.hidden !== true && backWallFill !== \"transparent\") {\n addWallQuad(\n nudgeProjectedDepth(projectPoint(0, backRow, domain.safeMax), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(cols - 1, backRow, domain.safeMax), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(cols - 1, backRow, minPlaneValue), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(0, backRow, minPlaneValue), wallDepthOffset),\n backWallFill\n );\n }\n if (chart.sideWall?.hidden !== true && sideWallFill !== \"transparent\") {\n addWallQuad(\n nudgeProjectedDepth(projectPoint(sideColumn, 0, domain.safeMax), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(sideColumn, rows - 1, domain.safeMax), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(sideColumn, rows - 1, minPlaneValue), wallDepthOffset),\n nudgeProjectedDepth(projectPoint(sideColumn, 0, minPlaneValue), wallDepthOffset),\n sideWallFill\n );\n }\n for (const tick of chart.valueAxis?.majorGridlines ? domain.ticks : []) {\n if (chart.backWall?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(0, backRow, tick), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(cols - 1, backRow, tick), wallDepthOffset * 0.75), wallLineColor);\n }\n if (chart.sideWall?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(sideColumn, 0, tick), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(sideColumn, rows - 1, tick), wallDepthOffset * 0.75), wallLineColor);\n }\n }\n for (let columnIndex = 0; chart.categoryAxis?.majorGridlines && columnIndex < cols; columnIndex += columnSkip) {\n if (chart.floor?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(columnIndex, 0, minPlaneValue), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(columnIndex, rows - 1, minPlaneValue), wallDepthOffset * 0.75), wallLineColor);\n }\n if (chart.backWall?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(columnIndex, backRow, minPlaneValue), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(columnIndex, backRow, domain.safeMax), wallDepthOffset * 0.75), wallLineColor);\n }\n }\n for (let rowIndex = 0; chart.seriesAxis?.majorGridlines && rowIndex < rows; rowIndex += rowSkip) {\n if (chart.floor?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(0, rowIndex, minPlaneValue), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(cols - 1, rowIndex, minPlaneValue), wallDepthOffset * 0.75), wallLineColor);\n }\n if (chart.sideWall?.hidden !== true && wallLineColor !== \"transparent\") {\n addMeshLine(nudgeProjectedDepth(projectPoint(sideColumn, rowIndex, minPlaneValue), wallDepthOffset * 0.75), nudgeProjectedDepth(projectPoint(sideColumn, rowIndex, domain.safeMax), wallDepthOffset * 0.75), wallLineColor);\n }\n }\n }\n\n const allPoints = [\n ...fillVertices.map((vertex) => vertex.point),\n ...wallTriangles.flatMap((triangle) => triangle.points),\n ...meshLines.flatMap((line) => [line.from, line.to]),\n ...contourLines.flatMap((line) => [line.from, line.to])\n ];\n if (allPoints.length === 0) {\n return null;\n }\n\n const minX = Math.min(...allPoints.map((point) => point.x));\n const maxX = Math.max(...allPoints.map((point) => point.x));\n const minY = Math.min(...allPoints.map((point) => point.y));\n const maxY = Math.max(...allPoints.map((point) => point.y));\n const minDepth = Math.min(...allPoints.map((point) => point.depth));\n const maxDepth = Math.max(...allPoints.map((point) => point.depth));\n const scale = Math.min(\n layout.plot.width / Math.max(0.25, maxX - minX),\n layout.plot.height / Math.max(0.25, maxY - minY)\n );\n const centerX = layout.plot.left + layout.plot.width / 2;\n const centerY = layout.plot.top + layout.plot.height / 2;\n const centerRawX = (minX + maxX) / 2;\n const centerRawY = (minY + maxY) / 2;\n const toScreenX = (x: number) => centerX + (x - centerRawX) * scale;\n const toScreenY = (y: number) => centerY + (y - centerRawY) * scale;\n const toClipPoint = (point: SurfacePoint3D) => {\n const screenX = toScreenX(point.x);\n const screenY = toScreenY(point.y);\n return {\n x: (screenX / layout.width) * 2 - 1,\n y: 1 - (screenY / layout.height) * 2,\n z: clamp(((point.depth - minDepth) / Math.max(1e-6, maxDepth - minDepth)) * 2 - 1, -1, 1)\n };\n };\n\n const fillPositions: number[] = [];\n const fillColors: number[] = [];\n const wallPositions: number[] = [];\n const wallColors: number[] = [];\n for (const triangle of wallTriangles) {\n const world = triangle.points.map(point => ({ x: point.worldX, y: point.worldY, z: -point.worldZ }));\n const normal = transformSurfaceNormal(surfaceNormal(world[0], world[1], world[2]), chart.view3d?.rotX ?? 25, chart.view3d?.rotY ?? 30, chart.view3d?.rAngAx !== false);\n const rgba = colorToRgba(usesFlatMaterial ? triangle.color : shadeSurfaceMatteColor(triangle.color, normal), 1);\n for (const point of triangle.points) {\n const clip = toClipPoint(point);\n wallPositions.push(clip.x, clip.y, clip.z);\n wallColors.push(rgba[0], rgba[1], rgba[2], rgba[3]);\n }\n }\n for (let index = 0; index < fillVertices.length; index += 3) {\n const left = fillVertices[index];\n const middle = fillVertices[index + 1];\n const right = fillVertices[index + 2];\n if (!left || !middle || !right) {\n continue;\n }\n const world = [left, middle, right].map(vertex => ({ x: vertex.point.worldX, y: vertex.point.worldY, z: -vertex.point.worldZ }));\n const normal = transformSurfaceNormal(surfaceNormal(world[0], world[1], world[2]), chart.view3d?.rotX ?? 25, chart.view3d?.rotY ?? 30, chart.view3d?.rAngAx !== false);\n const shaded = colorToRgba(usesFlatMaterial ? left.bandColor : shadeSurfaceMatteColor(left.bandColor, normal), 1);\n [left, middle, right].forEach((vertex) => {\n const clip = toClipPoint(vertex.point);\n fillPositions.push(clip.x, clip.y, clip.z);\n fillColors.push(shaded[0], shaded[1], shaded[2], shaded[3]);\n });\n }\n\n const linePositions: number[] = [];\n const lineColors: number[] = [];\n meshLines.forEach((line) => {\n const from = toClipPoint(line.from);\n const to = toClipPoint(line.to);\n const rgba = colorToRgba(line.color, 1);\n linePositions.push(from.x, from.y, from.z - 0.00001, to.x, to.y, to.z - 0.00001);\n lineColors.push(rgba[0], rgba[1], rgba[2], rgba[3], rgba[0], rgba[1], rgba[2], rgba[3]);\n });\n contourLines.forEach((line) => {\n const from = toClipPoint(line.from);\n const to = toClipPoint(line.to);\n const rgba = colorToRgba(line.color, 1);\n linePositions.push(from.x, from.y, from.z - 0.00001, to.x, to.y, to.z - 0.00001);\n lineColors.push(rgba[0], rgba[1], rgba[2], rgba[3], rgba[0], rgba[1], rgba[2], rgba[3]);\n });\n\n return {\n fillColors: new Float32Array(fillColors),\n fillPositions: new Float32Array(fillPositions),\n lineColors: new Float32Array(lineColors),\n linePositions: new Float32Array(linePositions),\n wallColors: new Float32Array(wallColors),\n wallPositions: new Float32Array(wallPositions)\n };\n}\n\nexport const MemoSurfaceChartComposite = React.memo(function MemoSurfaceChartComposite({\n background,\n borderColor,\n chart,\n fontFamily,\n layout,\n onDoubleClick,\n onPointerDown,\n overlay,\n palette,\n fallback\n}: SurfaceCompositeProps) {\n const canvasRef = React.useRef<HTMLCanvasElement | null>(null);\n const [ready, setReady] = React.useState(false);\n const [failed, setFailed] = React.useState(false);\n const isContour = isContourSurfaceChart(chart);\n\n React.useEffect(() => {\n if (isContour) {\n setReady(false);\n setFailed(false);\n return;\n }\n const canvas = canvasRef.current;\n if (!canvas) {\n return;\n }\n let cancelled = false;\n let reglInstance: ReturnType<typeof createREGL> | null = null;\n\n const drawSurface = () => {\n try {\n const scene = buildSurfaceMesh(chart, palette, layout);\n if (!scene) {\n if (!cancelled) {\n setFailed(true);\n setReady(false);\n }\n return;\n }\n const dpr = window.devicePixelRatio || 1;\n canvas.width = Math.max(1, Math.round(layout.width * dpr));\n canvas.height = Math.max(1, Math.round(layout.height * dpr));\n reglInstance = createREGL({\n attributes: {\n alpha: true,\n antialias: true,\n depth: true,\n premultipliedAlpha: true\n },\n canvas\n });\n const fillCommand = scene.fillPositions.length > 0\n ? reglInstance({\n attributes: {\n color: scene.fillColors,\n position: scene.fillPositions\n },\n blend: {\n enable: true,\n func: {\n dstRGB: \"one minus src alpha\",\n dstAlpha: \"one minus src alpha\",\n srcRGB: \"src alpha\",\n srcAlpha: \"src alpha\"\n }\n },\n count: scene.fillPositions.length / 3,\n depth: {\n enable: true\n },\n frag: `\n precision mediump float;\n varying vec4 vColor;\n void main() {\n gl_FragColor = vColor;\n }\n `,\n primitive: \"triangles\",\n vert: `\n precision mediump float;\n attribute vec3 position;\n attribute vec4 color;\n varying vec4 vColor;\n void main() {\n gl_Position = vec4(position, 1.0);\n vColor = color;\n }\n `\n })\n : null;\n const wallCommand = scene.wallPositions.length > 0\n ? reglInstance({\n attributes: {\n color: scene.wallColors,\n position: scene.wallPositions\n },\n blend: {\n enable: true,\n func: {\n dstRGB: \"one minus src alpha\",\n dstAlpha: \"one minus src alpha\",\n srcRGB: \"src alpha\",\n srcAlpha: \"src alpha\"\n }\n },\n count: scene.wallPositions.length / 3,\n depth: {\n enable: true,\n func: \"lequal\"\n },\n frag: `\n precision mediump float;\n varying vec4 vColor;\n void main() {\n gl_FragColor = vColor;\n }\n `,\n primitive: \"triangles\",\n vert: `\n precision mediump float;\n attribute vec3 position;\n attribute vec4 color;\n varying vec4 vColor;\n void main() {\n gl_Position = vec4(position, 1.0);\n vColor = color;\n }\n `\n })\n : null;\n const lineCommand = scene.linePositions.length > 0\n ? reglInstance({\n attributes: {\n color: scene.lineColors,\n position: scene.linePositions\n },\n blend: {\n enable: true,\n func: {\n dstRGB: \"one minus src alpha\",\n dstAlpha: \"one minus src alpha\",\n srcRGB: \"src alpha\",\n srcAlpha: \"src alpha\"\n }\n },\n count: scene.linePositions.length / 3,\n depth: {\n enable: true,\n func: \"lequal\"\n },\n frag: `\n precision mediump float;\n varying vec4 vColor;\n void main() {\n gl_FragColor = vColor;\n }\n `,\n lineWidth: 1,\n primitive: \"lines\",\n vert: `\n precision mediump float;\n attribute vec3 position;\n attribute vec4 color;\n varying vec4 vColor;\n void main() {\n gl_Position = vec4(position, 1.0);\n vColor = color;\n }\n `\n })\n : null;\n\n reglInstance.clear({ color: [0, 0, 0, 0], depth: 1 });\n wallCommand?.();\n fillCommand?.();\n lineCommand?.();\n if (!cancelled) {\n setReady(true);\n setFailed(false);\n }\n } catch {\n if (!cancelled) {\n setReady(false);\n setFailed(true);\n }\n }\n };\n\n setReady(false);\n setFailed(false);\n drawSurface();\n\n return () => {\n cancelled = true;\n reglInstance?.destroy();\n };\n }, [\n chart,\n isContour,\n layout,\n palette\n ]);\n\n const shouldRenderFallback = isContour || failed || !ready;\n\n return (\n <div\n aria-label={chart.title ?? chart.name ?? \"Chart\"}\n role=\"img\"\n style={{\n background,\n border: borderColor.trim().toLowerCase() === \"transparent\" ? \"none\" : `1px solid ${borderColor}`,\n boxSizing: \"border-box\",\n fontFamily,\n height: \"100%\",\n overflow: \"hidden\",\n pointerEvents: \"auto\",\n position: \"relative\",\n width: \"100%\"\n }}\n >\n <canvas\n ref={canvasRef}\n style={{\n display: shouldRenderFallback ? \"none\" : \"block\",\n height: \"100%\",\n inset: 0,\n position: \"absolute\",\n width: \"100%\"\n }}\n />\n <svg\n onDoubleClick={onDoubleClick}\n onPointerDown={onPointerDown}\n style={{ display: \"block\", height: \"100%\", inset: 0, position: \"absolute\", width: \"100%\" }}\n viewBox={`0 0 ${layout.width} ${layout.height}`}\n >\n {shouldRenderFallback ? fallback : null}\n {overlay}\n </svg>\n </div>\n );\n}, (prev, next) => (\n prev.chart === next.chart\n && prev.palette === next.palette\n && prev.background === next.background\n && prev.borderColor === next.borderColor\n && prev.fontFamily === next.fontFamily\n && prev.onDoubleClick === next.onDoubleClick\n && prev.onPointerDown === next.onPointerDown\n && prev.layout.width === next.layout.width\n && prev.layout.height === next.layout.height\n && prev.layout.plot.left === next.layout.plot.left\n && prev.layout.plot.top === next.layout.plot.top\n && prev.layout.plot.width === next.layout.plot.width\n && prev.layout.plot.height === next.layout.plot.height\n && prev.overlay === next.overlay\n && prev.fallback === next.fallback\n));\n"],"mappings":"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","names":["MemoSurfaceChartComposite"]}
|