minerva-design 1.2.0 → 1.4.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/CHANGELOG.md +16 -0
- package/README.md +21 -21
- package/custom-elements.json +13630 -4757
- package/dist/angular/fesm2022/minerva-angular.mjs +6872 -172
- package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
- package/dist/angular/types/minerva-angular.d.ts +2240 -0
- package/dist/charts/canvas.d.cts +10 -2
- package/dist/charts/canvas.d.ts +10 -2
- package/dist/charts/core.cjs +1 -1
- package/dist/charts/core.d.cts +9 -3
- package/dist/charts/core.d.ts +9 -3
- package/dist/charts/core.js +19 -6
- package/dist/charts/engine/axis.cjs +1 -1
- package/dist/charts/engine/axis.cjs.map +1 -1
- package/dist/charts/engine/axis.js +6 -6
- package/dist/charts/engine/axis.js.map +1 -1
- package/dist/charts/engine/canvas.cjs +1 -1
- package/dist/charts/engine/canvas.cjs.map +1 -1
- package/dist/charts/engine/canvas.d.cts +11 -1
- package/dist/charts/engine/canvas.d.ts +11 -1
- package/dist/charts/engine/canvas.js +161 -99
- package/dist/charts/engine/canvas.js.map +1 -1
- package/dist/charts/engine/chart.cjs +1 -2
- package/dist/charts/engine/chart.cjs.map +1 -1
- package/dist/charts/engine/chart.d.cts +1 -1
- package/dist/charts/engine/chart.d.ts +1 -1
- package/dist/charts/engine/chart.js +390 -349
- package/dist/charts/engine/chart.js.map +1 -1
- package/dist/charts/engine/color.cjs +1 -1
- package/dist/charts/engine/color.cjs.map +1 -1
- package/dist/charts/engine/color.d.cts +17 -0
- package/dist/charts/engine/color.d.ts +17 -0
- package/dist/charts/engine/color.js +27 -3
- package/dist/charts/engine/color.js.map +1 -1
- package/dist/charts/engine/controller.cjs +2 -2
- package/dist/charts/engine/controller.cjs.map +1 -1
- package/dist/charts/engine/controller.d.cts +17 -2
- package/dist/charts/engine/controller.d.ts +17 -2
- package/dist/charts/engine/controller.js +404 -280
- package/dist/charts/engine/controller.js.map +1 -1
- package/dist/charts/engine/curve.cjs +2 -0
- package/dist/charts/engine/curve.cjs.map +1 -0
- package/dist/charts/engine/curve.d.cts +15 -0
- package/dist/charts/engine/curve.d.ts +15 -0
- package/dist/charts/engine/curve.js +56 -0
- package/dist/charts/engine/curve.js.map +1 -0
- package/dist/charts/engine/data.cjs +1 -1
- package/dist/charts/engine/data.cjs.map +1 -1
- package/dist/charts/engine/data.d.cts +21 -2
- package/dist/charts/engine/data.d.ts +21 -2
- package/dist/charts/engine/data.js +117 -43
- package/dist/charts/engine/data.js.map +1 -1
- package/dist/charts/engine/dom.cjs +1 -1
- package/dist/charts/engine/dom.cjs.map +1 -1
- package/dist/charts/engine/dom.d.cts +5 -3
- package/dist/charts/engine/dom.d.ts +5 -3
- package/dist/charts/engine/dom.js +27 -22
- package/dist/charts/engine/dom.js.map +1 -1
- package/dist/charts/engine/format.cjs +1 -1
- package/dist/charts/engine/format.cjs.map +1 -1
- package/dist/charts/engine/format.d.cts +21 -6
- package/dist/charts/engine/format.d.ts +21 -6
- package/dist/charts/engine/format.js +46 -21
- package/dist/charts/engine/format.js.map +1 -1
- package/dist/charts/engine/items.cjs +1 -1
- package/dist/charts/engine/items.cjs.map +1 -1
- package/dist/charts/engine/items.js +290 -62
- package/dist/charts/engine/items.js.map +1 -1
- package/dist/charts/engine/labels.cjs +2 -0
- package/dist/charts/engine/labels.cjs.map +1 -0
- package/dist/charts/engine/labels.d.cts +13 -0
- package/dist/charts/engine/labels.d.ts +13 -0
- package/dist/charts/engine/labels.js +74 -0
- package/dist/charts/engine/labels.js.map +1 -0
- package/dist/charts/engine/layout.cjs +1 -1
- package/dist/charts/engine/layout.cjs.map +1 -1
- package/dist/charts/engine/layout.d.cts +34 -2
- package/dist/charts/engine/layout.d.ts +34 -2
- package/dist/charts/engine/layout.js +53 -12
- package/dist/charts/engine/layout.js.map +1 -1
- package/dist/charts/engine/locale.cjs +2 -0
- package/dist/charts/engine/locale.cjs.map +1 -0
- package/dist/charts/engine/locale.d.cts +33 -0
- package/dist/charts/engine/locale.d.ts +33 -0
- package/dist/charts/engine/locale.js +68 -0
- package/dist/charts/engine/locale.js.map +1 -0
- package/dist/charts/engine/model.cjs +1 -1
- package/dist/charts/engine/model.cjs.map +1 -1
- package/dist/charts/engine/model.d.cts +68 -3
- package/dist/charts/engine/model.d.ts +68 -3
- package/dist/charts/engine/model.js +332 -108
- package/dist/charts/engine/model.js.map +1 -1
- package/dist/charts/engine/orderbook/book.cjs +2 -0
- package/dist/charts/engine/orderbook/book.cjs.map +1 -0
- package/dist/charts/engine/orderbook/book.d.cts +28 -0
- package/dist/charts/engine/orderbook/book.d.ts +28 -0
- package/dist/charts/engine/orderbook/book.js +134 -0
- package/dist/charts/engine/orderbook/book.js.map +1 -0
- package/dist/charts/engine/orderbook/depth.cjs +2 -0
- package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
- package/dist/charts/engine/orderbook/depth.d.cts +7 -0
- package/dist/charts/engine/orderbook/depth.d.ts +7 -0
- package/dist/charts/engine/orderbook/depth.js +413 -0
- package/dist/charts/engine/orderbook/depth.js.map +1 -0
- package/dist/charts/engine/orderbook/format.cjs +2 -0
- package/dist/charts/engine/orderbook/format.cjs.map +1 -0
- package/dist/charts/engine/orderbook/format.d.cts +48 -0
- package/dist/charts/engine/orderbook/format.d.ts +48 -0
- package/dist/charts/engine/orderbook/format.js +65 -0
- package/dist/charts/engine/orderbook/format.js.map +1 -0
- package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
- package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
- package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
- package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
- package/dist/charts/engine/orderbook/heatmap.js +703 -0
- package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
- package/dist/charts/engine/orderbook/host.cjs +2 -0
- package/dist/charts/engine/orderbook/host.cjs.map +1 -0
- package/dist/charts/engine/orderbook/host.d.cts +50 -0
- package/dist/charts/engine/orderbook/host.d.ts +50 -0
- package/dist/charts/engine/orderbook/host.js +161 -0
- package/dist/charts/engine/orderbook/host.js.map +1 -0
- package/dist/charts/engine/orderbook/index.cjs +1 -0
- package/dist/charts/engine/orderbook/index.d.cts +6 -0
- package/dist/charts/engine/orderbook/index.d.ts +6 -0
- package/dist/charts/engine/orderbook/index.js +6 -0
- package/dist/charts/engine/orderbook/ladder.cjs +2 -0
- package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
- package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
- package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
- package/dist/charts/engine/orderbook/ladder.js +341 -0
- package/dist/charts/engine/orderbook/ladder.js.map +1 -0
- package/dist/charts/engine/orderbook/tape.cjs +2 -0
- package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
- package/dist/charts/engine/orderbook/tape.d.cts +6 -0
- package/dist/charts/engine/orderbook/tape.d.ts +6 -0
- package/dist/charts/engine/orderbook/tape.js +450 -0
- package/dist/charts/engine/orderbook/tape.js.map +1 -0
- package/dist/charts/engine/orderbook/types.d.cts +735 -0
- package/dist/charts/engine/orderbook/types.d.ts +735 -0
- package/dist/charts/engine/overlay.cjs +1 -1
- package/dist/charts/engine/overlay.cjs.map +1 -1
- package/dist/charts/engine/overlay.d.cts +18 -0
- package/dist/charts/engine/overlay.d.ts +18 -0
- package/dist/charts/engine/overlay.js +138 -102
- package/dist/charts/engine/overlay.js.map +1 -1
- package/dist/charts/engine/presets.cjs +2 -2
- package/dist/charts/engine/presets.cjs.map +1 -1
- package/dist/charts/engine/presets.d.cts +319 -5
- package/dist/charts/engine/presets.d.ts +319 -5
- package/dist/charts/engine/presets.js +463 -38
- package/dist/charts/engine/presets.js.map +1 -1
- package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
- package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
- package/dist/charts/engine/renderers/canvas2d.js +149 -111
- package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
- package/dist/charts/engine/renderers/detect.cjs +1 -1
- package/dist/charts/engine/renderers/detect.cjs.map +1 -1
- package/dist/charts/engine/renderers/detect.js +18 -15
- package/dist/charts/engine/renderers/detect.js.map +1 -1
- package/dist/charts/engine/renderers/gl.cjs +2 -0
- package/dist/charts/engine/renderers/gl.cjs.map +1 -0
- package/dist/charts/engine/renderers/gl.d.cts +21 -0
- package/dist/charts/engine/renderers/gl.d.ts +21 -0
- package/dist/charts/engine/renderers/gl.js +56 -0
- package/dist/charts/engine/renderers/gl.js.map +1 -0
- package/dist/charts/engine/renderers/range.cjs +1 -1
- package/dist/charts/engine/renderers/range.cjs.map +1 -1
- package/dist/charts/engine/renderers/range.js +4 -4
- package/dist/charts/engine/renderers/range.js.map +1 -1
- package/dist/charts/engine/renderers/shaders.cjs +180 -20
- package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
- package/dist/charts/engine/renderers/shaders.d.cts +18 -2
- package/dist/charts/engine/renderers/shaders.d.ts +18 -2
- package/dist/charts/engine/renderers/shaders.js +176 -20
- package/dist/charts/engine/renderers/shaders.js.map +1 -1
- package/dist/charts/engine/renderers/types.cjs.map +1 -1
- package/dist/charts/engine/renderers/types.d.cts +11 -4
- package/dist/charts/engine/renderers/types.d.ts +11 -4
- package/dist/charts/engine/renderers/types.js.map +1 -1
- package/dist/charts/engine/renderers/webgl.cjs +2 -0
- package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
- package/dist/charts/engine/renderers/webgl.d.cts +4 -0
- package/dist/charts/engine/renderers/webgl.d.ts +4 -0
- package/dist/charts/engine/renderers/webgl.js +133 -0
- package/dist/charts/engine/renderers/webgl.js.map +1 -0
- package/dist/charts/engine/renderers/webgl2.cjs +1 -1
- package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
- package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
- package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
- package/dist/charts/engine/renderers/webgl2.js +62 -90
- package/dist/charts/engine/renderers/webgl2.js.map +1 -1
- package/dist/charts/engine/renderers/webgpu.cjs +1 -1
- package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
- package/dist/charts/engine/renderers/webgpu.js +18 -15
- package/dist/charts/engine/renderers/webgpu.js.map +1 -1
- package/dist/charts/engine/scale.cjs +1 -1
- package/dist/charts/engine/scale.cjs.map +1 -1
- package/dist/charts/engine/scale.js +1 -1
- package/dist/charts/engine/scale.js.map +1 -1
- package/dist/charts/engine/scene.cjs +1 -1
- package/dist/charts/engine/scene.cjs.map +1 -1
- package/dist/charts/engine/scene.d.cts +32 -9
- package/dist/charts/engine/scene.d.ts +32 -9
- package/dist/charts/engine/scene.js +363 -122
- package/dist/charts/engine/scene.js.map +1 -1
- package/dist/charts/engine/shapes/bullet.cjs +2 -0
- package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
- package/dist/charts/engine/shapes/bullet.d.cts +6 -0
- package/dist/charts/engine/shapes/bullet.d.ts +6 -0
- package/dist/charts/engine/shapes/bullet.js +255 -0
- package/dist/charts/engine/shapes/bullet.js.map +1 -0
- package/dist/charts/engine/shapes/calendar.cjs +2 -0
- package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
- package/dist/charts/engine/shapes/calendar.d.cts +38 -0
- package/dist/charts/engine/shapes/calendar.d.ts +38 -0
- package/dist/charts/engine/shapes/calendar.js +369 -0
- package/dist/charts/engine/shapes/calendar.js.map +1 -0
- package/dist/charts/engine/shapes/canvas.cjs +2 -0
- package/dist/charts/engine/shapes/canvas.cjs.map +1 -0
- package/dist/charts/engine/shapes/canvas.d.cts +65 -0
- package/dist/charts/engine/shapes/canvas.d.ts +65 -0
- package/dist/charts/engine/shapes/canvas.js +168 -0
- package/dist/charts/engine/shapes/canvas.js.map +1 -0
- package/dist/charts/engine/shapes/chart.cjs +2 -0
- package/dist/charts/engine/shapes/chart.cjs.map +1 -0
- package/dist/charts/engine/shapes/chart.d.cts +7 -0
- package/dist/charts/engine/shapes/chart.d.ts +7 -0
- package/dist/charts/engine/shapes/chart.js +292 -0
- package/dist/charts/engine/shapes/chart.js.map +1 -0
- package/dist/charts/engine/shapes/draw.cjs +2 -0
- package/dist/charts/engine/shapes/draw.cjs.map +1 -0
- package/dist/charts/engine/shapes/draw.d.cts +22 -0
- package/dist/charts/engine/shapes/draw.d.ts +22 -0
- package/dist/charts/engine/shapes/draw.js +165 -0
- package/dist/charts/engine/shapes/draw.js.map +1 -0
- package/dist/charts/engine/shapes/funnel.cjs +2 -0
- package/dist/charts/engine/shapes/funnel.cjs.map +1 -0
- package/dist/charts/engine/shapes/funnel.d.cts +6 -0
- package/dist/charts/engine/shapes/funnel.d.ts +6 -0
- package/dist/charts/engine/shapes/funnel.js +149 -0
- package/dist/charts/engine/shapes/funnel.js.map +1 -0
- package/dist/charts/engine/shapes/gauge.cjs +2 -0
- package/dist/charts/engine/shapes/gauge.cjs.map +1 -0
- package/dist/charts/engine/shapes/gauge.d.cts +7 -0
- package/dist/charts/engine/shapes/gauge.d.ts +7 -0
- package/dist/charts/engine/shapes/gauge.js +210 -0
- package/dist/charts/engine/shapes/gauge.js.map +1 -0
- package/dist/charts/engine/shapes/hit.cjs +2 -0
- package/dist/charts/engine/shapes/hit.cjs.map +1 -0
- package/dist/charts/engine/shapes/hit.d.cts +30 -0
- package/dist/charts/engine/shapes/hit.d.ts +30 -0
- package/dist/charts/engine/shapes/hit.js +145 -0
- package/dist/charts/engine/shapes/hit.js.map +1 -0
- package/dist/charts/engine/shapes/index.d.cts +12 -0
- package/dist/charts/engine/shapes/index.d.ts +12 -0
- package/dist/charts/engine/shapes/labels.cjs +2 -0
- package/dist/charts/engine/shapes/labels.cjs.map +1 -0
- package/dist/charts/engine/shapes/labels.d.cts +14 -0
- package/dist/charts/engine/shapes/labels.d.ts +14 -0
- package/dist/charts/engine/shapes/labels.js +146 -0
- package/dist/charts/engine/shapes/labels.js.map +1 -0
- package/dist/charts/engine/shapes/layout.cjs +3 -0
- package/dist/charts/engine/shapes/layout.cjs.map +1 -0
- package/dist/charts/engine/shapes/layout.d.cts +93 -0
- package/dist/charts/engine/shapes/layout.d.ts +93 -0
- package/dist/charts/engine/shapes/layout.js +353 -0
- package/dist/charts/engine/shapes/layout.js.map +1 -0
- package/dist/charts/engine/shapes/pie.cjs +2 -0
- package/dist/charts/engine/shapes/pie.cjs.map +1 -0
- package/dist/charts/engine/shapes/pie.d.cts +20 -0
- package/dist/charts/engine/shapes/pie.d.ts +20 -0
- package/dist/charts/engine/shapes/pie.js +302 -0
- package/dist/charts/engine/shapes/pie.js.map +1 -0
- package/dist/charts/engine/shapes/radar.cjs +2 -0
- package/dist/charts/engine/shapes/radar.cjs.map +1 -0
- package/dist/charts/engine/shapes/radar.d.cts +8 -0
- package/dist/charts/engine/shapes/radar.d.ts +8 -0
- package/dist/charts/engine/shapes/radar.js +198 -0
- package/dist/charts/engine/shapes/radar.js.map +1 -0
- package/dist/charts/engine/shapes/radialBar.cjs +2 -0
- package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
- package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
- package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
- package/dist/charts/engine/shapes/radialBar.js +155 -0
- package/dist/charts/engine/shapes/radialBar.js.map +1 -0
- package/dist/charts/engine/shapes/runtime.cjs +2 -0
- package/dist/charts/engine/shapes/runtime.cjs.map +1 -0
- package/dist/charts/engine/shapes/runtime.d.cts +36 -0
- package/dist/charts/engine/shapes/runtime.d.ts +36 -0
- package/dist/charts/engine/shapes/runtime.js +107 -0
- package/dist/charts/engine/shapes/runtime.js.map +1 -0
- package/dist/charts/engine/shapes/sankey.cjs +2 -0
- package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
- package/dist/charts/engine/shapes/sankey.d.cts +29 -0
- package/dist/charts/engine/shapes/sankey.d.ts +29 -0
- package/dist/charts/engine/shapes/sankey.js +372 -0
- package/dist/charts/engine/shapes/sankey.js.map +1 -0
- package/dist/charts/engine/shapes/scene.cjs +2 -0
- package/dist/charts/engine/shapes/scene.cjs.map +1 -0
- package/dist/charts/engine/shapes/scene.d.cts +311 -0
- package/dist/charts/engine/shapes/scene.d.ts +311 -0
- package/dist/charts/engine/shapes/scene.js +125 -0
- package/dist/charts/engine/shapes/scene.js.map +1 -0
- package/dist/charts/engine/shapes/sunburst.cjs +2 -0
- package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
- package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
- package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
- package/dist/charts/engine/shapes/sunburst.js +261 -0
- package/dist/charts/engine/shapes/sunburst.js.map +1 -0
- package/dist/charts/engine/shapes/treemap.cjs +2 -0
- package/dist/charts/engine/shapes/treemap.cjs.map +1 -0
- package/dist/charts/engine/shapes/treemap.d.cts +14 -0
- package/dist/charts/engine/shapes/treemap.d.ts +14 -0
- package/dist/charts/engine/shapes/treemap.js +213 -0
- package/dist/charts/engine/shapes/treemap.js.map +1 -0
- package/dist/charts/engine/shapes/types.d.cts +719 -0
- package/dist/charts/engine/shapes/types.d.ts +719 -0
- package/dist/charts/engine/signature.cjs +2 -0
- package/dist/charts/engine/signature.cjs.map +1 -0
- package/dist/charts/engine/signature.d.cts +9 -0
- package/dist/charts/engine/signature.d.ts +9 -0
- package/dist/charts/engine/signature.js +13 -0
- package/dist/charts/engine/signature.js.map +1 -0
- package/dist/charts/engine/theme.cjs +1 -1
- package/dist/charts/engine/theme.cjs.map +1 -1
- package/dist/charts/engine/theme.d.cts +10 -1
- package/dist/charts/engine/theme.d.ts +10 -1
- package/dist/charts/engine/theme.js +40 -16
- package/dist/charts/engine/theme.js.map +1 -1
- package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
- package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
- package/dist/charts/engine/three-d/canvas2d.d.cts +4 -0
- package/dist/charts/engine/three-d/canvas2d.d.ts +4 -0
- package/dist/charts/engine/three-d/canvas2d.js +104 -0
- package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
- package/dist/charts/engine/three-d/chart.cjs +2 -0
- package/dist/charts/engine/three-d/chart.cjs.map +1 -0
- package/dist/charts/engine/three-d/chart.d.cts +15 -0
- package/dist/charts/engine/three-d/chart.d.ts +15 -0
- package/dist/charts/engine/three-d/chart.js +621 -0
- package/dist/charts/engine/three-d/chart.js.map +1 -0
- package/dist/charts/engine/three-d/colormap.cjs +2 -0
- package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
- package/dist/charts/engine/three-d/colormap.d.cts +16 -0
- package/dist/charts/engine/three-d/colormap.d.ts +16 -0
- package/dist/charts/engine/three-d/colormap.js +166 -0
- package/dist/charts/engine/three-d/colormap.js.map +1 -0
- package/dist/charts/engine/three-d/contours.cjs +2 -0
- package/dist/charts/engine/three-d/contours.cjs.map +1 -0
- package/dist/charts/engine/three-d/contours.d.cts +7 -0
- package/dist/charts/engine/three-d/contours.d.ts +7 -0
- package/dist/charts/engine/three-d/contours.js +47 -0
- package/dist/charts/engine/three-d/contours.js.map +1 -0
- package/dist/charts/engine/three-d/detect.cjs +2 -0
- package/dist/charts/engine/three-d/detect.cjs.map +1 -0
- package/dist/charts/engine/three-d/detect.d.cts +11 -0
- package/dist/charts/engine/three-d/detect.d.ts +11 -0
- package/dist/charts/engine/three-d/detect.js +35 -0
- package/dist/charts/engine/three-d/detect.js.map +1 -0
- package/dist/charts/engine/three-d/dom.cjs +2 -0
- package/dist/charts/engine/three-d/dom.cjs.map +1 -0
- package/dist/charts/engine/three-d/dom.d.cts +21 -0
- package/dist/charts/engine/three-d/dom.d.ts +21 -0
- package/dist/charts/engine/three-d/dom.js +98 -0
- package/dist/charts/engine/three-d/dom.js.map +1 -0
- package/dist/charts/engine/three-d/geometry.cjs +2 -0
- package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
- package/dist/charts/engine/three-d/geometry.d.cts +76 -0
- package/dist/charts/engine/three-d/geometry.d.ts +76 -0
- package/dist/charts/engine/three-d/geometry.js +529 -0
- package/dist/charts/engine/three-d/geometry.js.map +1 -0
- package/dist/charts/engine/three-d/hover.cjs +2 -0
- package/dist/charts/engine/three-d/hover.cjs.map +1 -0
- package/dist/charts/engine/three-d/hover.d.cts +25 -0
- package/dist/charts/engine/three-d/hover.d.ts +25 -0
- package/dist/charts/engine/three-d/hover.js +131 -0
- package/dist/charts/engine/three-d/hover.js.map +1 -0
- package/dist/charts/engine/three-d/index.cjs +1 -0
- package/dist/charts/engine/three-d/index.d.cts +2 -0
- package/dist/charts/engine/three-d/index.d.ts +2 -0
- package/dist/charts/engine/three-d/index.js +2 -0
- package/dist/charts/engine/three-d/labels.cjs +2 -0
- package/dist/charts/engine/three-d/labels.cjs.map +1 -0
- package/dist/charts/engine/three-d/labels.d.cts +23 -0
- package/dist/charts/engine/three-d/labels.d.ts +23 -0
- package/dist/charts/engine/three-d/labels.js +136 -0
- package/dist/charts/engine/three-d/labels.js.map +1 -0
- package/dist/charts/engine/three-d/math.cjs +2 -0
- package/dist/charts/engine/three-d/math.cjs.map +1 -0
- package/dist/charts/engine/three-d/math.d.cts +84 -0
- package/dist/charts/engine/three-d/math.d.ts +84 -0
- package/dist/charts/engine/three-d/math.js +150 -0
- package/dist/charts/engine/three-d/math.js.map +1 -0
- package/dist/charts/engine/three-d/model.cjs +2 -0
- package/dist/charts/engine/three-d/model.cjs.map +1 -0
- package/dist/charts/engine/three-d/model.d.cts +130 -0
- package/dist/charts/engine/three-d/model.d.ts +130 -0
- package/dist/charts/engine/three-d/model.js +277 -0
- package/dist/charts/engine/three-d/model.js.map +1 -0
- package/dist/charts/engine/three-d/overlay.cjs +2 -0
- package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
- package/dist/charts/engine/three-d/overlay.d.cts +72 -0
- package/dist/charts/engine/three-d/overlay.d.ts +72 -0
- package/dist/charts/engine/three-d/overlay.js +197 -0
- package/dist/charts/engine/three-d/overlay.js.map +1 -0
- package/dist/charts/engine/three-d/pick.cjs +2 -0
- package/dist/charts/engine/three-d/pick.cjs.map +1 -0
- package/dist/charts/engine/three-d/pick.d.cts +52 -0
- package/dist/charts/engine/three-d/pick.d.ts +52 -0
- package/dist/charts/engine/three-d/pick.js +220 -0
- package/dist/charts/engine/three-d/pick.js.map +1 -0
- package/dist/charts/engine/three-d/render-types.cjs +2 -0
- package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
- package/dist/charts/engine/three-d/render-types.d.cts +82 -0
- package/dist/charts/engine/three-d/render-types.d.ts +82 -0
- package/dist/charts/engine/three-d/render-types.js +13 -0
- package/dist/charts/engine/three-d/render-types.js.map +1 -0
- package/dist/charts/engine/three-d/shaders.cjs +276 -0
- package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
- package/dist/charts/engine/three-d/shaders.d.cts +26 -0
- package/dist/charts/engine/three-d/shaders.d.ts +26 -0
- package/dist/charts/engine/three-d/shaders.js +191 -0
- package/dist/charts/engine/three-d/shaders.js.map +1 -0
- package/dist/charts/engine/three-d/sort.cjs +2 -0
- package/dist/charts/engine/three-d/sort.cjs.map +1 -0
- package/dist/charts/engine/three-d/sort.d.cts +18 -0
- package/dist/charts/engine/three-d/sort.d.ts +18 -0
- package/dist/charts/engine/three-d/sort.js +71 -0
- package/dist/charts/engine/three-d/sort.js.map +1 -0
- package/dist/charts/engine/three-d/types.d.cts +588 -0
- package/dist/charts/engine/three-d/types.d.ts +588 -0
- package/dist/charts/engine/three-d/webgl.cjs +2 -0
- package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
- package/dist/charts/engine/three-d/webgl.d.cts +10 -0
- package/dist/charts/engine/three-d/webgl.d.ts +10 -0
- package/dist/charts/engine/three-d/webgl.js +130 -0
- package/dist/charts/engine/three-d/webgl.js.map +1 -0
- package/dist/charts/engine/three-d/webgpu.cjs +2 -0
- package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
- package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
- package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
- package/dist/charts/engine/three-d/webgpu.js +249 -0
- package/dist/charts/engine/three-d/webgpu.js.map +1 -0
- package/dist/charts/engine/time.cjs +1 -1
- package/dist/charts/engine/time.cjs.map +1 -1
- package/dist/charts/engine/time.d.cts +13 -4
- package/dist/charts/engine/time.d.ts +13 -4
- package/dist/charts/engine/time.js +156 -91
- package/dist/charts/engine/time.js.map +1 -1
- package/dist/charts/engine/trading/chart.cjs +2 -0
- package/dist/charts/engine/trading/chart.cjs.map +1 -0
- package/dist/charts/engine/trading/chart.d.cts +3 -0
- package/dist/charts/engine/trading/chart.d.ts +3 -0
- package/dist/charts/engine/trading/chart.js +1507 -0
- package/dist/charts/engine/trading/chart.js.map +1 -0
- package/dist/charts/engine/trading/drawings.cjs +2 -0
- package/dist/charts/engine/trading/drawings.cjs.map +1 -0
- package/dist/charts/engine/trading/drawings.d.cts +57 -0
- package/dist/charts/engine/trading/drawings.d.ts +57 -0
- package/dist/charts/engine/trading/drawings.js +160 -0
- package/dist/charts/engine/trading/drawings.js.map +1 -0
- package/dist/charts/engine/trading/format.cjs +2 -0
- package/dist/charts/engine/trading/format.cjs.map +1 -0
- package/dist/charts/engine/trading/format.d.cts +60 -0
- package/dist/charts/engine/trading/format.d.ts +60 -0
- package/dist/charts/engine/trading/format.js +131 -0
- package/dist/charts/engine/trading/format.js.map +1 -0
- package/dist/charts/engine/trading/geometry.cjs +2 -0
- package/dist/charts/engine/trading/geometry.cjs.map +1 -0
- package/dist/charts/engine/trading/geometry.d.cts +55 -0
- package/dist/charts/engine/trading/geometry.d.ts +55 -0
- package/dist/charts/engine/trading/geometry.js +131 -0
- package/dist/charts/engine/trading/geometry.js.map +1 -0
- package/dist/charts/engine/trading/index.cjs +1 -0
- package/dist/charts/engine/trading/index.d.cts +3 -0
- package/dist/charts/engine/trading/index.d.ts +3 -0
- package/dist/charts/engine/trading/index.js +3 -0
- package/dist/charts/engine/trading/indicators.cjs +2 -0
- package/dist/charts/engine/trading/indicators.cjs.map +1 -0
- package/dist/charts/engine/trading/indicators.d.cts +105 -0
- package/dist/charts/engine/trading/indicators.d.ts +105 -0
- package/dist/charts/engine/trading/indicators.js +268 -0
- package/dist/charts/engine/trading/indicators.js.map +1 -0
- package/dist/charts/engine/trading/labels.cjs +2 -0
- package/dist/charts/engine/trading/labels.cjs.map +1 -0
- package/dist/charts/engine/trading/labels.d.cts +7 -0
- package/dist/charts/engine/trading/labels.d.ts +7 -0
- package/dist/charts/engine/trading/labels.js +91 -0
- package/dist/charts/engine/trading/labels.js.map +1 -0
- package/dist/charts/engine/trading/scale.cjs +2 -0
- package/dist/charts/engine/trading/scale.cjs.map +1 -0
- package/dist/charts/engine/trading/scale.d.cts +46 -0
- package/dist/charts/engine/trading/scale.d.ts +46 -0
- package/dist/charts/engine/trading/scale.js +100 -0
- package/dist/charts/engine/trading/scale.js.map +1 -0
- package/dist/charts/engine/trading/store.cjs +2 -0
- package/dist/charts/engine/trading/store.cjs.map +1 -0
- package/dist/charts/engine/trading/store.d.cts +62 -0
- package/dist/charts/engine/trading/store.d.ts +62 -0
- package/dist/charts/engine/trading/store.js +129 -0
- package/dist/charts/engine/trading/store.js.map +1 -0
- package/dist/charts/engine/trading/studies.cjs +2 -0
- package/dist/charts/engine/trading/studies.cjs.map +1 -0
- package/dist/charts/engine/trading/studies.d.cts +52 -0
- package/dist/charts/engine/trading/studies.d.ts +52 -0
- package/dist/charts/engine/trading/studies.js +254 -0
- package/dist/charts/engine/trading/studies.js.map +1 -0
- package/dist/charts/engine/trading/types.d.cts +656 -0
- package/dist/charts/engine/trading/types.d.ts +656 -0
- package/dist/charts/engine/types.d.cts +227 -15
- package/dist/charts/engine/types.d.ts +227 -15
- package/dist/charts/index.cjs +1 -1
- package/dist/charts/index.d.cts +7 -2
- package/dist/charts/index.d.ts +7 -2
- package/dist/charts/index.js +22 -8
- package/dist/charts/react/Chart.cjs +1 -1
- package/dist/charts/react/Chart.cjs.map +1 -1
- package/dist/charts/react/Chart.d.cts +11 -4
- package/dist/charts/react/Chart.d.ts +11 -4
- package/dist/charts/react/Chart.js +70 -47
- package/dist/charts/react/Chart.js.map +1 -1
- package/dist/charts/react/charts.cjs +1 -1
- package/dist/charts/react/charts.cjs.map +1 -1
- package/dist/charts/react/charts.d.cts +48 -2
- package/dist/charts/react/charts.d.ts +48 -2
- package/dist/charts/react/charts.js +371 -76
- package/dist/charts/react/charts.js.map +1 -1
- package/dist/charts/react/orderbook.cjs +2 -0
- package/dist/charts/react/orderbook.cjs.map +1 -0
- package/dist/charts/react/orderbook.d.cts +142 -0
- package/dist/charts/react/orderbook.d.ts +142 -0
- package/dist/charts/react/orderbook.js +182 -0
- package/dist/charts/react/orderbook.js.map +1 -0
- package/dist/charts/react/shapes.cjs +2 -0
- package/dist/charts/react/shapes.cjs.map +1 -0
- package/dist/charts/react/shapes.d.cts +537 -0
- package/dist/charts/react/shapes.d.ts +537 -0
- package/dist/charts/react/shapes.js +429 -0
- package/dist/charts/react/shapes.js.map +1 -0
- package/dist/charts/react/three-d.cjs +2 -0
- package/dist/charts/react/three-d.cjs.map +1 -0
- package/dist/charts/react/three-d.d.cts +151 -0
- package/dist/charts/react/three-d.d.ts +151 -0
- package/dist/charts/react/three-d.js +154 -0
- package/dist/charts/react/three-d.js.map +1 -0
- package/dist/charts/react/trading.cjs +2 -0
- package/dist/charts/react/trading.cjs.map +1 -0
- package/dist/charts/react/trading.d.cts +93 -0
- package/dist/charts/react/trading.d.ts +93 -0
- package/dist/charts/react/trading.js +95 -0
- package/dist/charts/react/trading.js.map +1 -0
- package/dist/charts/react/types.d.cts +200 -7
- package/dist/charts/react/types.d.ts +200 -7
- package/dist/core/contracts.cjs +1 -1
- package/dist/core/contracts.cjs.map +1 -1
- package/dist/core/contracts.js +1 -1
- package/dist/core/contracts.js.map +1 -1
- package/dist/native/charts/src/canvas.cjs +1 -1
- package/dist/native/charts/src/canvas.js +9 -3
- package/dist/native/charts/src/engine/axis.cjs +1 -1
- package/dist/native/charts/src/engine/axis.cjs.map +1 -1
- package/dist/native/charts/src/engine/axis.js +6 -6
- package/dist/native/charts/src/engine/axis.js.map +1 -1
- package/dist/native/charts/src/engine/color.cjs +1 -1
- package/dist/native/charts/src/engine/color.cjs.map +1 -1
- package/dist/native/charts/src/engine/color.js +12 -3
- package/dist/native/charts/src/engine/color.js.map +1 -1
- package/dist/native/charts/src/engine/controller.cjs +2 -2
- package/dist/native/charts/src/engine/controller.cjs.map +1 -1
- package/dist/native/charts/src/engine/controller.js +418 -294
- package/dist/native/charts/src/engine/controller.js.map +1 -1
- package/dist/native/charts/src/engine/curve.cjs +2 -0
- package/dist/native/charts/src/engine/curve.cjs.map +1 -0
- package/dist/native/charts/src/engine/curve.js +56 -0
- package/dist/native/charts/src/engine/curve.js.map +1 -0
- package/dist/native/charts/src/engine/data.cjs +1 -1
- package/dist/native/charts/src/engine/data.cjs.map +1 -1
- package/dist/native/charts/src/engine/data.js +117 -43
- package/dist/native/charts/src/engine/data.js.map +1 -1
- package/dist/native/charts/src/engine/format.cjs +1 -1
- package/dist/native/charts/src/engine/format.cjs.map +1 -1
- package/dist/native/charts/src/engine/format.js +46 -21
- package/dist/native/charts/src/engine/format.js.map +1 -1
- package/dist/native/charts/src/engine/labels.cjs +2 -0
- package/dist/native/charts/src/engine/labels.cjs.map +1 -0
- package/dist/native/charts/src/engine/labels.js +74 -0
- package/dist/native/charts/src/engine/labels.js.map +1 -0
- package/dist/native/charts/src/engine/layout.cjs +1 -1
- package/dist/native/charts/src/engine/layout.cjs.map +1 -1
- package/dist/native/charts/src/engine/layout.js +53 -12
- package/dist/native/charts/src/engine/layout.js.map +1 -1
- package/dist/native/charts/src/engine/locale.cjs +2 -0
- package/dist/native/charts/src/engine/locale.cjs.map +1 -0
- package/dist/native/charts/src/engine/locale.js +60 -0
- package/dist/native/charts/src/engine/locale.js.map +1 -0
- package/dist/native/charts/src/engine/model.cjs +1 -1
- package/dist/native/charts/src/engine/model.cjs.map +1 -1
- package/dist/native/charts/src/engine/model.js +335 -111
- package/dist/native/charts/src/engine/model.js.map +1 -1
- package/dist/native/charts/src/engine/overlay.cjs +1 -1
- package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
- package/dist/native/charts/src/engine/overlay.js +54 -31
- package/dist/native/charts/src/engine/overlay.js.map +1 -1
- package/dist/native/charts/src/engine/presets.cjs +2 -2
- package/dist/native/charts/src/engine/presets.cjs.map +1 -1
- package/dist/native/charts/src/engine/presets.js +456 -34
- package/dist/native/charts/src/engine/presets.js.map +1 -1
- package/dist/native/charts/src/engine/scale.cjs +1 -1
- package/dist/native/charts/src/engine/scale.cjs.map +1 -1
- package/dist/native/charts/src/engine/scale.js +1 -1
- package/dist/native/charts/src/engine/scale.js.map +1 -1
- package/dist/native/charts/src/engine/scene.cjs +1 -1
- package/dist/native/charts/src/engine/scene.cjs.map +1 -1
- package/dist/native/charts/src/engine/scene.js +369 -128
- package/dist/native/charts/src/engine/scene.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
- package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/calendar.js +364 -0
- package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
- package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/draw.js +165 -0
- package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
- package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
- package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/hit.js +106 -0
- package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/labels.js +146 -0
- package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
- package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/layout.js +331 -0
- package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/pie.js +302 -0
- package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/radar.js +198 -0
- package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
- package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
- package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
- package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/scene.js +125 -0
- package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
- package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
- package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
- package/dist/native/charts/src/engine/theme.cjs.map +1 -1
- package/dist/native/charts/src/engine/theme.js.map +1 -1
- package/dist/native/charts/src/engine/time.cjs +1 -1
- package/dist/native/charts/src/engine/time.cjs.map +1 -1
- package/dist/native/charts/src/engine/time.js +156 -91
- package/dist/native/charts/src/engine/time.js.map +1 -1
- package/dist/native/components/Chart/ChartBase.cjs +1 -1
- package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
- package/dist/native/components/Chart/ChartBase.d.cts +1 -1
- package/dist/native/components/Chart/ChartBase.d.ts +1 -1
- package/dist/native/components/Chart/ChartBase.js +110 -107
- package/dist/native/components/Chart/ChartBase.js.map +1 -1
- package/dist/native/components/Chart/charts.cjs +1 -1
- package/dist/native/components/Chart/charts.cjs.map +1 -1
- package/dist/native/components/Chart/charts.d.cts +6 -1
- package/dist/native/components/Chart/charts.d.ts +6 -1
- package/dist/native/components/Chart/charts.js +53 -29
- package/dist/native/components/Chart/charts.js.map +1 -1
- package/dist/native/components/Chart/index.cjs +1 -1
- package/dist/native/components/Chart/index.d.cts +1 -1
- package/dist/native/components/Chart/index.d.ts +1 -1
- package/dist/native/components/Chart/index.js +2 -2
- package/dist/native/components/Chart/scene.cjs +1 -1
- package/dist/native/components/Chart/scene.cjs.map +1 -1
- package/dist/native/components/Chart/scene.js +244 -215
- package/dist/native/components/Chart/scene.js.map +1 -1
- package/dist/native/components/Chart/types.d.cts +26 -3
- package/dist/native/components/Chart/types.d.ts +26 -3
- package/dist/native/components/Charts/charts.cjs +2 -0
- package/dist/native/components/Charts/charts.cjs.map +1 -0
- package/dist/native/components/Charts/charts.d.cts +41 -0
- package/dist/native/components/Charts/charts.d.ts +41 -0
- package/dist/native/components/Charts/charts.js +338 -0
- package/dist/native/components/Charts/charts.js.map +1 -0
- package/dist/native/components/Charts/index.cjs +1 -0
- package/dist/native/components/Charts/index.d.cts +2 -0
- package/dist/native/components/Charts/index.d.ts +2 -0
- package/dist/native/components/Charts/index.js +2 -0
- package/dist/native/components/Charts/types.d.cts +144 -0
- package/dist/native/components/Charts/types.d.ts +144 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.js +271 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
- package/dist/native/components/ShapeChart/charts.cjs +2 -0
- package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
- package/dist/native/components/ShapeChart/charts.d.cts +38 -0
- package/dist/native/components/ShapeChart/charts.d.ts +38 -0
- package/dist/native/components/ShapeChart/charts.js +387 -0
- package/dist/native/components/ShapeChart/charts.js.map +1 -0
- package/dist/native/components/ShapeChart/draw.cjs +2 -0
- package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
- package/dist/native/components/ShapeChart/draw.d.cts +4 -0
- package/dist/native/components/ShapeChart/draw.d.ts +4 -0
- package/dist/native/components/ShapeChart/draw.js +104 -0
- package/dist/native/components/ShapeChart/draw.js.map +1 -0
- package/dist/native/components/ShapeChart/geometry.cjs +2 -0
- package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
- package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
- package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
- package/dist/native/components/ShapeChart/geometry.js +602 -0
- package/dist/native/components/ShapeChart/geometry.js.map +1 -0
- package/dist/native/components/ShapeChart/index.cjs +1 -0
- package/dist/native/components/ShapeChart/index.d.cts +2 -0
- package/dist/native/components/ShapeChart/index.d.ts +2 -0
- package/dist/native/components/ShapeChart/index.js +2 -0
- package/dist/native/components/ShapeChart/recorder.cjs +2 -0
- package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
- package/dist/native/components/ShapeChart/recorder.d.cts +106 -0
- package/dist/native/components/ShapeChart/recorder.d.ts +106 -0
- package/dist/native/components/ShapeChart/recorder.js +574 -0
- package/dist/native/components/ShapeChart/recorder.js.map +1 -0
- package/dist/native/components/ShapeChart/types.d.cts +509 -0
- package/dist/native/components/ShapeChart/types.d.ts +509 -0
- package/dist/native/index.cjs +1 -1
- package/dist/native/index.d.cts +2 -0
- package/dist/native/index.d.ts +2 -0
- package/dist/native/index.js +14 -10
- package/dist/native/manifest.d.cts +6 -4
- package/dist/native/manifest.d.ts +6 -4
- package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
- package/dist/native/source/components/Chart/charts.tsx +42 -6
- package/dist/native/source/components/Chart/index.ts +1 -0
- package/dist/native/source/components/Chart/scene.tsx +204 -100
- package/dist/native/source/components/Chart/types.ts +31 -1
- package/dist/native/source/components/Charts/charts.tsx +493 -0
- package/dist/native/source/components/Charts/index.ts +14 -0
- package/dist/native/source/components/Charts/types.ts +207 -0
- package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +484 -0
- package/dist/native/source/components/ShapeChart/charts.tsx +605 -0
- package/dist/native/source/components/ShapeChart/draw.tsx +170 -0
- package/dist/native/source/components/ShapeChart/geometry.ts +1185 -0
- package/dist/native/source/components/ShapeChart/index.ts +15 -0
- package/dist/native/source/components/ShapeChart/recorder.ts +830 -0
- package/dist/native/source/components/ShapeChart/types.ts +564 -0
- package/dist/native/source/index.ts +2 -0
- package/dist/native/source/manifest.ts +30 -4
- package/dist/taro/charts.d.ts +209 -4
- package/dist/taro/index.d.ts +1 -0
- package/dist/taro/index.js +8032 -1891
- package/dist/taro/manifest.d.ts +1 -0
- package/dist/taro/shape-charts.d.ts +537 -0
- package/dist/uni/AreaChart.vue +68 -0
- package/dist/uni/AreaChart.vue.d.ts +120 -0
- package/dist/uni/Badge.vue.d.ts +1 -1
- package/dist/uni/BoxPlotChart.vue +66 -0
- package/dist/uni/BoxPlotChart.vue.d.ts +102 -0
- package/dist/uni/BubbleChart.vue +68 -0
- package/dist/uni/BubbleChart.vue.d.ts +106 -0
- package/dist/uni/BulletChart.vue +86 -0
- package/dist/uni/BulletChart.vue.d.ts +110 -0
- package/dist/uni/CalendarHeatmap.vue +92 -0
- package/dist/uni/CalendarHeatmap.vue.d.ts +129 -0
- package/dist/uni/CandlestickChart.vue +66 -0
- package/dist/uni/CandlestickChart.vue.d.ts +100 -0
- package/dist/uni/DonutChart.vue +72 -0
- package/dist/uni/DonutChart.vue.d.ts +114 -0
- package/dist/uni/FunnelChart.vue +67 -0
- package/dist/uni/FunnelChart.vue.d.ts +104 -0
- package/dist/uni/GanttChart.vue +67 -0
- package/dist/uni/GanttChart.vue.d.ts +123 -0
- package/dist/uni/GaugeChart.vue +77 -0
- package/dist/uni/GaugeChart.vue.d.ts +123 -0
- package/dist/uni/HeatmapChart.vue +66 -0
- package/dist/uni/HeatmapChart.vue.d.ts +114 -0
- package/dist/uni/HistogramChart.vue +66 -0
- package/dist/uni/HistogramChart.vue.d.ts +121 -0
- package/dist/uni/HorizontalBarChart.vue +68 -0
- package/dist/uni/HorizontalBarChart.vue.d.ts +127 -0
- package/dist/uni/Input.vue.d.ts +1 -1
- package/dist/uni/MixedChart.vue +68 -0
- package/dist/uni/MixedChart.vue.d.ts +106 -0
- package/dist/uni/NumberInput.vue.d.ts +1 -1
- package/dist/uni/PieChart.vue +72 -0
- package/dist/uni/PieChart.vue.d.ts +114 -0
- package/dist/uni/RadarChart.vue +67 -0
- package/dist/uni/RadarChart.vue.d.ts +110 -0
- package/dist/uni/RadialBarChart.vue +90 -0
- package/dist/uni/RadialBarChart.vue.d.ts +132 -0
- package/dist/uni/RangeAreaChart.vue +68 -0
- package/dist/uni/RangeAreaChart.vue.d.ts +102 -0
- package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
- package/dist/uni/SankeyChart.vue +88 -0
- package/dist/uni/SankeyChart.vue.d.ts +121 -0
- package/dist/uni/ShapeChart.vue +73 -0
- package/dist/uni/ShapeChart.vue.d.ts +54 -0
- package/dist/uni/Sparkline.vue +58 -0
- package/dist/uni/Sparkline.vue.d.ts +77 -0
- package/dist/uni/SunburstChart.vue +90 -0
- package/dist/uni/SunburstChart.vue.d.ts +114 -0
- package/dist/uni/Textarea.vue.d.ts +1 -1
- package/dist/uni/TimePicker.vue.d.ts +1 -1
- package/dist/uni/TreemapChart.vue +65 -0
- package/dist/uni/TreemapChart.vue.d.ts +100 -0
- package/dist/uni/WaterfallChart.vue +66 -0
- package/dist/uni/WaterfallChart.vue.d.ts +125 -0
- package/dist/uni/chart-types.d.ts +216 -2
- package/dist/uni/chart-types.js +174 -0
- package/dist/uni/charts-canvas.js +10 -3
- package/dist/uni/index.d.ts +26 -1
- package/dist/uni/index.js +26 -1
- package/dist/uni/manifest.d.ts +272 -0
- package/dist/uni/manifest.js +387 -0
- package/dist/uni/named-chart-options.d.ts +88 -0
- package/dist/uni/named-chart-options.js +156 -0
- package/dist/uni/shape-chart-canvas.d.ts +51 -0
- package/dist/uni/shape-chart-canvas.js +342 -0
- package/dist/uni/shape-chart-types.d.ts +381 -0
- package/dist/uni/shape-chart-types.js +261 -0
- package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
- package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
- package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
- package/dist/vue/components/Chart/BarChart.vue.js +7 -0
- package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +112 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
- package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
- package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
- package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
- package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
- package/dist/vue/components/Chart/Chart.vue.js +7 -0
- package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
- package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
- package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
- package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
- package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
- package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
- package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GanttChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
- package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +98 -0
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
- package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +125 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
- package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
- package/dist/vue/components/Chart/LineChart.vue.js +7 -0
- package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
- package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
- package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
- package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
- package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
- package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
- package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +128 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
- package/dist/vue/components/Chart/PieChart.vue.js +7 -0
- package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
- package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
- package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
- package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
- package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
- package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
- package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
- package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
- package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
- package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
- package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
- package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
- package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
- package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +114 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
- package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TradingChart.vue.d.ts +160 -0
- package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
- package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
- package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
- package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
- package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/cartesian.d.ts +47 -0
- package/dist/vue/components/Chart/cartesian.js +56 -0
- package/dist/vue/components/Chart/cartesian.js.map +1 -0
- package/dist/vue/components/Chart/engine.d.ts +35 -0
- package/dist/vue/components/Chart/engine.js +35 -0
- package/dist/vue/components/Chart/engine.js.map +1 -0
- package/dist/vue/components/Chart/index.d.ts +41 -0
- package/dist/vue/components/Chart/index.js +40 -0
- package/dist/vue/components/Chart/orderbook.d.ts +359 -0
- package/dist/vue/components/Chart/orderbook.js +126 -0
- package/dist/vue/components/Chart/orderbook.js.map +1 -0
- package/dist/vue/components/Chart/props.d.ts +188 -0
- package/dist/vue/components/Chart/props.js +92 -0
- package/dist/vue/components/Chart/props.js.map +1 -0
- package/dist/vue/components/Chart/shape.d.ts +41 -0
- package/dist/vue/components/Chart/shape.js +42 -0
- package/dist/vue/components/Chart/shape.js.map +1 -0
- package/dist/vue/components/Chart/three-d.d.ts +106 -0
- package/dist/vue/components/Chart/three-d.js +88 -0
- package/dist/vue/components/Chart/three-d.js.map +1 -0
- package/dist/vue/components/Chart/trading.d.ts +105 -0
- package/dist/vue/components/Chart/trading.js +55 -0
- package/dist/vue/components/Chart/trading.js.map +1 -0
- package/dist/vue/components/Chart/types.d.ts +137 -0
- package/dist/vue/global.d.ts +38 -0
- package/dist/vue/groups/charts.d.ts +1 -0
- package/dist/vue/groups/charts.js +87 -0
- package/dist/vue/groups/charts.js.map +1 -0
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.js +63 -23
- package/dist/vue/plugin.js +12 -10
- package/dist/vue/plugin.js.map +1 -1
- package/dist/weapp/area-chart/index.js +1 -0
- package/dist/weapp/area-chart/index.json +1 -0
- package/dist/weapp/area-chart/index.wxml +1 -0
- package/dist/weapp/area-chart/index.wxss +1 -0
- package/dist/weapp/box-plot-chart/index.js +1 -0
- package/dist/weapp/box-plot-chart/index.json +1 -0
- package/dist/weapp/box-plot-chart/index.wxml +1 -0
- package/dist/weapp/box-plot-chart/index.wxss +1 -0
- package/dist/weapp/bubble-chart/index.js +1 -0
- package/dist/weapp/bubble-chart/index.json +1 -0
- package/dist/weapp/bubble-chart/index.wxml +1 -0
- package/dist/weapp/bubble-chart/index.wxss +1 -0
- package/dist/weapp/bullet-chart/index.js +1 -0
- package/dist/weapp/bullet-chart/index.json +1 -0
- package/dist/weapp/bullet-chart/index.wxml +1 -0
- package/dist/weapp/bullet-chart/index.wxss +1 -0
- package/dist/weapp/calendar-heatmap/index.js +1 -0
- package/dist/weapp/calendar-heatmap/index.json +1 -0
- package/dist/weapp/calendar-heatmap/index.wxml +1 -0
- package/dist/weapp/calendar-heatmap/index.wxss +1 -0
- package/dist/weapp/candlestick-chart/index.js +1 -0
- package/dist/weapp/candlestick-chart/index.json +1 -0
- package/dist/weapp/candlestick-chart/index.wxml +1 -0
- package/dist/weapp/candlestick-chart/index.wxss +1 -0
- package/dist/weapp/charts/canvas.js +11436 -0
- package/dist/weapp/charts/core.d.ts +2 -0
- package/dist/weapp/charts/core.js +41 -0
- package/dist/weapp/controls.js +1428 -3732
- package/dist/weapp/donut-chart/index.js +1 -0
- package/dist/weapp/donut-chart/index.json +1 -0
- package/dist/weapp/donut-chart/index.wxml +1 -0
- package/dist/weapp/donut-chart/index.wxss +1 -0
- package/dist/weapp/funnel-chart/index.js +1 -0
- package/dist/weapp/funnel-chart/index.json +1 -0
- package/dist/weapp/funnel-chart/index.wxml +1 -0
- package/dist/weapp/funnel-chart/index.wxss +1 -0
- package/dist/weapp/gantt-chart/index.js +1 -0
- package/dist/weapp/gantt-chart/index.json +1 -0
- package/dist/weapp/gantt-chart/index.wxml +1 -0
- package/dist/weapp/gantt-chart/index.wxss +1 -0
- package/dist/weapp/gauge-chart/index.js +1 -0
- package/dist/weapp/gauge-chart/index.json +1 -0
- package/dist/weapp/gauge-chart/index.wxml +1 -0
- package/dist/weapp/gauge-chart/index.wxss +1 -0
- package/dist/weapp/heatmap-chart/index.js +1 -0
- package/dist/weapp/heatmap-chart/index.json +1 -0
- package/dist/weapp/heatmap-chart/index.wxml +1 -0
- package/dist/weapp/heatmap-chart/index.wxss +1 -0
- package/dist/weapp/histogram-chart/index.js +1 -0
- package/dist/weapp/histogram-chart/index.json +1 -0
- package/dist/weapp/histogram-chart/index.wxml +1 -0
- package/dist/weapp/histogram-chart/index.wxss +1 -0
- package/dist/weapp/horizontal-bar-chart/index.js +1 -0
- package/dist/weapp/horizontal-bar-chart/index.json +1 -0
- package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
- package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
- package/dist/weapp/mixed-chart/index.js +1 -0
- package/dist/weapp/mixed-chart/index.json +1 -0
- package/dist/weapp/mixed-chart/index.wxml +1 -0
- package/dist/weapp/mixed-chart/index.wxss +1 -0
- package/dist/weapp/pie-chart/index.js +1 -0
- package/dist/weapp/pie-chart/index.json +1 -0
- package/dist/weapp/pie-chart/index.wxml +1 -0
- package/dist/weapp/pie-chart/index.wxss +1 -0
- package/dist/weapp/radar-chart/index.js +1 -0
- package/dist/weapp/radar-chart/index.json +1 -0
- package/dist/weapp/radar-chart/index.wxml +1 -0
- package/dist/weapp/radar-chart/index.wxss +1 -0
- package/dist/weapp/radial-bar-chart/index.js +1 -0
- package/dist/weapp/radial-bar-chart/index.json +1 -0
- package/dist/weapp/radial-bar-chart/index.wxml +1 -0
- package/dist/weapp/radial-bar-chart/index.wxss +1 -0
- package/dist/weapp/range-area-chart/index.js +1 -0
- package/dist/weapp/range-area-chart/index.json +1 -0
- package/dist/weapp/range-area-chart/index.wxml +1 -0
- package/dist/weapp/range-area-chart/index.wxss +1 -0
- package/dist/weapp/sankey-chart/index.js +1 -0
- package/dist/weapp/sankey-chart/index.json +1 -0
- package/dist/weapp/sankey-chart/index.wxml +1 -0
- package/dist/weapp/sankey-chart/index.wxss +1 -0
- package/dist/weapp/shape-chart/index.js +1 -0
- package/dist/weapp/shape-chart/index.json +1 -0
- package/dist/weapp/shape-chart/index.wxml +1 -0
- package/dist/weapp/shape-chart/index.wxss +1 -0
- package/dist/weapp/sparkline/index.js +1 -0
- package/dist/weapp/sparkline/index.json +1 -0
- package/dist/weapp/sparkline/index.wxml +1 -0
- package/dist/weapp/sparkline/index.wxss +1 -0
- package/dist/weapp/sunburst-chart/index.js +1 -0
- package/dist/weapp/sunburst-chart/index.json +1 -0
- package/dist/weapp/sunburst-chart/index.wxml +1 -0
- package/dist/weapp/sunburst-chart/index.wxss +1 -0
- package/dist/weapp/treemap-chart/index.js +1 -0
- package/dist/weapp/treemap-chart/index.json +1 -0
- package/dist/weapp/treemap-chart/index.wxml +1 -0
- package/dist/weapp/treemap-chart/index.wxss +1 -0
- package/dist/weapp/types.d.ts +466 -0
- package/dist/weapp/waterfall-chart/index.js +1 -0
- package/dist/weapp/waterfall-chart/index.json +1 -0
- package/dist/weapp/waterfall-chart/index.wxml +1 -0
- package/dist/weapp/waterfall-chart/index.wxss +1 -0
- package/dist/web-components/components/chart/chart.d.ts +58 -0
- package/dist/web-components/components/chart/chart.js +55 -0
- package/dist/web-components/components/chart/chart.js.map +1 -0
- package/dist/web-components/components/chart/charts.d.ts +252 -0
- package/dist/web-components/components/chart/charts.js +201 -0
- package/dist/web-components/components/chart/charts.js.map +1 -0
- package/dist/web-components/components/chart/engine-element.d.ts +53 -0
- package/dist/web-components/components/chart/engine-element.js +77 -0
- package/dist/web-components/components/chart/engine-element.js.map +1 -0
- package/dist/web-components/components/chart/extended.d.ts +224 -0
- package/dist/web-components/components/chart/extended.js +183 -0
- package/dist/web-components/components/chart/extended.js.map +1 -0
- package/dist/web-components/components/chart/series.d.ts +7 -0
- package/dist/web-components/components/chart/series.js +14 -0
- package/dist/web-components/components/chart/series.js.map +1 -0
- package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
- package/dist/web-components/components/chart/shape-chart.js +161 -0
- package/dist/web-components/components/chart/shape-chart.js.map +1 -0
- package/dist/web-components/components/chart/shapes-extended.d.ts +162 -0
- package/dist/web-components/components/chart/shapes-extended.js +156 -0
- package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
- package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
- package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
- package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
- package/dist/web-components/components/order-book/order-book.d.ts +165 -0
- package/dist/web-components/components/order-book/order-book.js +174 -0
- package/dist/web-components/components/order-book/order-book.js.map +1 -0
- package/dist/web-components/components/trading-chart/trading-chart.d.ts +96 -0
- package/dist/web-components/components/trading-chart/trading-chart.js +96 -0
- package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
- package/dist/web-components/elements/chart-3d.d.ts +2 -0
- package/dist/web-components/elements/chart-3d.js +13 -0
- package/dist/web-components/elements/chart-3d.js.map +1 -0
- package/dist/web-components/elements/chart.d.ts +7 -0
- package/dist/web-components/elements/chart.js +43 -0
- package/dist/web-components/elements/chart.js.map +1 -0
- package/dist/web-components/elements/order-book.d.ts +2 -0
- package/dist/web-components/elements/order-book.js +13 -0
- package/dist/web-components/elements/order-book.js.map +1 -0
- package/dist/web-components/elements/trading-chart.d.ts +2 -0
- package/dist/web-components/elements/trading-chart.js +8 -0
- package/dist/web-components/elements/trading-chart.js.map +1 -0
- package/dist/web-components/html-custom-data.json +1192 -29
- package/dist/web-components/types/react.d.ts +435 -0
- package/dist/web-components/types/solid.d.ts +321 -0
- package/dist/web-components/types/svelte.d.ts +321 -0
- package/dist/web-components/types/vue.d.ts +359 -0
- package/package.json +113 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","names":["withSeriesType","series","s","type","stack","lineSeries","area","barSeries","stacked","scatterSeries","DEFAULT_QUADRANT_COLORS","DIVIDER","splits","x0","x1","config","y0","y1","quadrantOf","right","x","xs","y","ys","quadrantCenter","visualRight","corner","quadrantChartOptions","reverseX","color","p","left","rect","xa","xb","ya","yb","position","ends","visualLeft","texts","annotations","base","showTicks","interaction","item","event","region"],"sources":["../../../../charts/src/engine/presets.ts"],"sourcesContent":["// Option presets of the chart components, shared by every platform (React,\n// mini-programs, React Native): they turn component props into engine\n// options.\n\nimport type {\n ChartAnnotation,\n ChartInteractionOptions,\n ChartOptions,\n ChartSeries,\n ChartSeriesType,\n} from \"./types\";\n\n/** Gives the series without a `type` the type of the component */\nexport const withSeriesType = (\n series: readonly ChartSeries[],\n type: ChartSeriesType,\n stack?: string,\n): ChartSeries[] =>\n series.map((s) => ({\n ...s,\n type: s.type ?? type,\n ...(stack !== undefined && (s.type ?? type) === \"bar\"\n ? { stack: s.stack ?? stack }\n : {}),\n }));\n\n/** Series of a LineChart (`area` fills them) */\nexport const lineSeries = (series: readonly ChartSeries[], area = false) =>\n withSeriesType(series, area ? \"area\" : \"line\");\n\n/** Series of a BarChart (`stacked` stacks them) */\nexport const barSeries = (series: readonly ChartSeries[], stacked = false) =>\n withSeriesType(series, \"bar\", stacked ? \"stack\" : undefined);\n\n/** Series of a ScatterChart */\nexport const scatterSeries = (series: readonly ChartSeries[]) =>\n withSeriesType(series, \"scatter\");\n\n/** A point of a QuadrantChart */\nexport interface QuadrantPoint {\n /** Position on the horizontal axis */\n x: number;\n /** Position on the vertical axis */\n y: number;\n /** Text drawn next to the dot and shown in the tooltip */\n label?: string;\n /** Dot color (any CSS color); the color of its quadrant by default */\n color?: string;\n /** Dot diameter in pixels */\n size?: number;\n}\n\n/** Title and color of a quadrant */\nexport interface QuadrantRegion {\n /** Title drawn in the outer corner of the quadrant */\n label?: string;\n /** Background tint and default dot color (any CSS color) */\n color?: string;\n}\n\n/** The four quadrants of a QuadrantChart */\nexport interface QuadrantRegions {\n topLeft?: QuadrantRegion;\n topRight?: QuadrantRegion;\n bottomLeft?: QuadrantRegion;\n bottomRight?: QuadrantRegion;\n}\n\n/** A quadrant, as seen on screen */\nexport type QuadrantCorner = keyof QuadrantRegions;\n\n/** Texts at the four ends of the dividers, inside the plot */\nexport interface QuadrantAxisLabels {\n top?: string;\n bottom?: string;\n left?: string;\n right?: string;\n}\n\n/** Settings of a quadrant matrix (the props of QuadrantChart) */\nexport interface QuadrantConfig {\n /** Points to place */\n points: readonly QuadrantPoint[];\n /**\n * Range of the horizontal axis\n * @default [0, 10]\n */\n xDomain?: [number, number];\n /**\n * Range of the vertical axis\n * @default [0, 10]\n */\n yDomain?: [number, number];\n /** X value of the vertical divider (the middle of `xDomain` by default) */\n xSplit?: number;\n /** Y value of the horizontal divider (the middle of `yDomain` by default) */\n ySplit?: number;\n /** Titles and colors of the quadrants */\n quadrants?: QuadrantRegions;\n /** Title of the horizontal axis */\n xLabel?: string;\n /** Title of the vertical axis */\n yLabel?: string;\n /** Texts at the ends of the dividers, drawn inside the plot (e.g. \"Important\" at the top) */\n axisLabels?: QuadrantAxisLabels;\n /**\n * Shows the numeric ticks of the axes; `false` keeps only the matrix\n * @default true\n */\n showTicks?: boolean;\n /** Reverses the horizontal axis (e.g. \"urgent\" on the left) */\n reverseX?: boolean;\n /**\n * Draws the labels next to the dots (overlapping labels are skipped)\n * @default true\n */\n showLabels?: boolean;\n /**\n * Dot diameter in pixels\n * @default 12\n */\n pointSize?: number;\n /** Name of the points in the tooltip */\n name?: string;\n /** Lets the user drag the dots (`drag` / `drop` events) */\n draggable?: boolean;\n}\n\nexport const DEFAULT_QUADRANT_COLORS: Required<Record<QuadrantCorner, string>> =\n {\n topLeft: \"var(--danger-color, #ef4444)\",\n topRight: \"var(--primary-color, #4f46e5)\",\n bottomLeft: \"var(--warning-color, #f59e0b)\",\n bottomRight: \"var(--text-secondary-color, #64748b)\",\n };\n\nconst DIVIDER = \"var(--border-strong-color, var(--border-color, #cbd5e1))\";\n\nconst splits = (config: QuadrantConfig) => {\n const [x0, x1] = config.xDomain ?? [0, 10];\n const [y0, y1] = config.yDomain ?? [0, 10];\n return {\n x0,\n x1,\n y0,\n y1,\n xs: config.xSplit ?? (x0 + x1) / 2,\n ys: config.ySplit ?? (y0 + y1) / 2,\n };\n};\n\n/** Quadrant of a data position, as seen on screen */\nexport const quadrantOf = (\n config: Pick<\n QuadrantConfig,\n \"xDomain\" | \"yDomain\" | \"xSplit\" | \"ySplit\" | \"reverseX\"\n >,\n x: number,\n y: number,\n): QuadrantCorner => {\n const { xs, ys } = splits(config as QuadrantConfig);\n const right = config.reverseX ? x < xs : x >= xs;\n const top = y >= ys;\n return top\n ? right\n ? \"topRight\"\n : \"topLeft\"\n : right\n ? \"bottomRight\"\n : \"bottomLeft\";\n};\n\n/** Center of a quadrant in data coordinates */\nexport const quadrantCenter = (\n config: Pick<\n QuadrantConfig,\n \"xDomain\" | \"yDomain\" | \"xSplit\" | \"ySplit\" | \"reverseX\"\n >,\n corner: QuadrantCorner,\n): { x: number; y: number } => {\n const { x0, x1, y0, y1, xs, ys } = splits(config as QuadrantConfig);\n const visualRight = corner.endsWith(\"Right\");\n const dataHigh = config.reverseX ? !visualRight : visualRight;\n return {\n x: dataHigh ? (xs + x1) / 2 : (x0 + xs) / 2,\n y: corner.startsWith(\"top\") ? (ys + y1) / 2 : (y0 + ys) / 2,\n };\n};\n\n/** Engine options of a quadrant matrix */\nexport const quadrantChartOptions = (\n config: QuadrantConfig,\n base: Omit<ChartOptions, \"series\"> = {},\n): ChartOptions => {\n const { x0, x1, y0, y1, xs, ys } = splits(config);\n const reverseX = !!config.reverseX;\n const color = (corner: QuadrantCorner) =>\n config.quadrants?.[corner]?.color ?? DEFAULT_QUADRANT_COLORS[corner];\n\n const series: ChartSeries[] = [\n {\n type: \"scatter\",\n name: config.name ?? \"\",\n pointSize: config.pointSize ?? 12,\n showLabels: config.showLabels ?? true,\n opacity: 0.9,\n data: config.points.map((p) => ({\n x: p.x,\n y: p.y,\n label: p.label,\n size: p.size,\n color: p.color ?? color(quadrantOf(config, p.x, p.y)),\n })),\n },\n ];\n\n // visual left / right -> data ranges\n const left: [number, number] = reverseX ? [xs, x1] : [x0, xs];\n const right: [number, number] = reverseX ? [x0, xs] : [xs, x1];\n const rect = (\n corner: QuadrantCorner,\n [xa, xb]: [number, number],\n [ya, yb]: [number, number],\n position: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\",\n ): ChartAnnotation => ({\n type: \"rect\",\n x0: xa,\n x1: xb,\n y0: ya,\n y1: yb,\n color: color(corner),\n opacity: 0.07,\n label: config.quadrants?.[corner]?.label,\n labelPosition: position,\n });\n const ends = config.axisLabels ?? {};\n const visualLeft = reverseX ? x1 : x0;\n const visualRight = reverseX ? x0 : x1;\n const texts: ChartAnnotation[] = [\n ...(ends.top\n ? [{ type: \"text\", x: xs, y: y1, text: ends.top, anchor: \"top\" } as const]\n : []),\n ...(ends.bottom\n ? [\n {\n type: \"text\",\n x: xs,\n y: y0,\n text: ends.bottom,\n anchor: \"bottom\",\n } as const,\n ]\n : []),\n ...(ends.left\n ? [\n {\n type: \"text\",\n x: visualLeft,\n y: ys,\n text: ends.left,\n anchor: \"left\",\n } as const,\n ]\n : []),\n ...(ends.right\n ? [\n {\n type: \"text\",\n x: visualRight,\n y: ys,\n text: ends.right,\n anchor: \"right\",\n } as const,\n ]\n : []),\n ];\n\n const annotations: ChartAnnotation[] = [\n rect(\"topLeft\", left, [ys, y1], \"top-left\"),\n rect(\"topRight\", right, [ys, y1], \"top-right\"),\n rect(\"bottomLeft\", left, [y0, ys], \"bottom-left\"),\n rect(\"bottomRight\", right, [y0, ys], \"bottom-right\"),\n { type: \"line\", axis: \"x\", value: xs, dash: [], color: DIVIDER },\n { type: \"line\", axis: \"y\", value: ys, dash: [], color: DIVIDER },\n ...texts,\n ...(base.annotations ?? []),\n ];\n\n const showTicks = config.showTicks ?? true;\n const interaction: boolean | ChartInteractionOptions =\n base.interaction === false\n ? false\n : {\n zoom: false,\n ...(typeof base.interaction === \"object\" ? base.interaction : {}),\n ...(config.draggable ? { dragPoints: true } : {}),\n };\n\n return {\n ...base,\n series,\n annotations,\n tooltip:\n base.tooltip ??\n (showTicks\n ? undefined\n : {\n render: (event) => {\n const item = event.items[0];\n if (!item) return null;\n const region =\n config.quadrants?.[quadrantOf(config, item.x, item.y)]?.label;\n return [item.label ?? config.name ?? \"\", region ?? \"\"]\n .filter(Boolean)\n .join(\"\\n\");\n },\n }),\n xAxis: {\n min: x0,\n max: x1,\n title: config.xLabel,\n reverse: reverseX,\n nice: false,\n grid: false,\n tickCount: 4,\n visible: showTicks || !!config.xLabel,\n ...(showTicks ? {} : { format: () => \"\" }),\n },\n yAxis: {\n min: y0,\n max: y1,\n title: config.yLabel,\n nice: false,\n grid: false,\n tickCount: 4,\n visible: showTicks || !!config.yLabel,\n ...(showTicks ? {} : { format: () => \"\" }),\n },\n legend: base.legend ?? false,\n padding:\n base.padding ??\n (showTicks ? undefined : { top: 4, right: 4, bottom: 4, left: 4 }),\n interaction,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"presets.js","names":["PRESET_LABELS","presetLabels","localeLabels","locale","withSeriesType","series","t","s","type","stack","curve","lineSeries","area","extra","areaSeries","barSeries","stacked","labels","scatterSeries","candlestickSeries","heatmapChartOptions","numericX","config","c","numericY","base","sparklineOptions","DEFAULT_QUADRANT_COLORS","DIVIDER","splits","x0","x1","y0","y1","quadrantOf","right","x","xs","y","ys","quadrantCenter","visualRight","corner","quadrantChartOptions","reverseX","color","p","left","rect","xa","xb","ya","yb","position","ends","visualLeft","texts","annotations","showTicks","interaction","item","event","region","sortedFinite","n","i","values","out","k","v","quantileOf","sorted","at","lo","hi","quantiles","ps","SPREAD_SAMPLE","binValues","min","max","options","span","rule","sturges","count","stride","sample","width","start","tickStep","end","counts","total","edges","histogramSeries","bins","resolveLocale","format","formatEdge","value","a","b","numberFormat","boxplotStats","q1","median","q3","sum","whisker","low","high","outliers","reach","from","to","j","upper","boxplotData","groups","g","boxplotSeries","waterfallSeries","up","down","running","data","steps","step","bubbleSeries","minSize","maxSize","valuesOf","list","top","sizeOf","size","points","d","THEMED","FALLBACK","paletteColor","fallback","themed","time","ganttSeries","names","taskName","tasks","colorOf","formatProgress","share","progress","milestones","pad","rangeAreaSeries"],"sources":["../../../../charts/src/engine/presets.ts"],"sourcesContent":["// Option presets of the chart components, shared by every platform (React,\n// mini-programs, React Native): they turn component props into engine\n// options.\n\nimport {\n localeLabels,\n numberFormat,\n resolveLocale,\n type LabelDictionary,\n} from \"./locale\";\nimport { tickStep } from \"./scale\";\nimport type {\n ChartAnnotation,\n ChartCurve,\n ChartInteractionOptions,\n ChartOptions,\n ChartPointDatum,\n ChartSeries,\n ChartSeriesType,\n ChartXValue,\n} from \"./types\";\n\n/** Default series names of the presets */\ninterface PresetLabels {\n value: string;\n values: string;\n count: string;\n change: string;\n tasks: string;\n progress: string;\n milestones: string;\n}\n\nconst PRESET_LABELS: LabelDictionary<PresetLabels> = {\n en: {\n value: \"Value\",\n values: \"Values\",\n count: \"Count\",\n change: \"Change\",\n tasks: \"Tasks\",\n progress: \"Progress\",\n milestones: \"Milestones\",\n },\n zh: {\n value: \"数值\",\n values: \"数值\",\n count: \"数量\",\n change: \"变化\",\n tasks: \"任务\",\n progress: \"进度\",\n milestones: \"里程碑\",\n },\n ja: {\n value: \"値\",\n values: \"値\",\n count: \"件数\",\n change: \"増減\",\n tasks: \"タスク\",\n progress: \"進捗\",\n milestones: \"マイルストーン\",\n },\n fr: {\n value: \"Valeur\",\n values: \"Valeurs\",\n count: \"Effectif\",\n change: \"Variation\",\n tasks: \"Tâches\",\n progress: \"Avancement\",\n milestones: \"Jalons\",\n },\n};\n\n/** Default series names of the presets in a locale (the page language by default) */\nexport const presetLabels = (locale?: string): PresetLabels =>\n localeLabels(PRESET_LABELS, locale);\n\n/** Gives the series without a `type` the type of the component */\nexport const withSeriesType = (\n series: readonly ChartSeries[],\n type: ChartSeriesType,\n stack?: string,\n curve?: ChartCurve,\n): ChartSeries[] =>\n series.map((s) => {\n const t = s.type ?? type;\n return {\n ...s,\n type: t,\n ...(stack !== undefined && t === type ? { stack: s.stack ?? stack } : {}),\n ...(curve !== undefined && (t === \"line\" || t === \"area\")\n ? { curve: s.curve ?? curve }\n : {}),\n };\n });\n\n/** Options of the line-like components */\nexport interface LineSeriesOptions {\n /** Stacks the series on top of each other */\n stacked?: boolean;\n /** Shape of the lines */\n curve?: ChartCurve;\n}\n\n/** Series of a LineChart (`area` fills them) */\nexport const lineSeries = (\n series: readonly ChartSeries[],\n area = false,\n extra: LineSeriesOptions = {},\n) =>\n withSeriesType(\n series,\n area ? \"area\" : \"line\",\n extra.stacked ? \"stack\" : undefined,\n extra.curve,\n );\n\n/** Series of an AreaChart */\nexport const areaSeries = (\n series: readonly ChartSeries[],\n extra: LineSeriesOptions = {},\n) => lineSeries(series, true, extra);\n\n/** Series of a BarChart (`stacked` stacks them, `labels` shows the values) */\nexport const barSeries = (\n series: readonly ChartSeries[],\n stacked = false,\n labels = false,\n) =>\n withSeriesType(series, \"bar\", stacked ? \"stack\" : undefined).map((s) =>\n labels && s.type === \"bar\" ? { ...s, showLabels: s.showLabels ?? true } : s,\n );\n\n/** Series of a ScatterChart */\nexport const scatterSeries = (series: readonly ChartSeries[]) =>\n withSeriesType(series, \"scatter\");\n\n/** Series of a CandlestickChart */\nexport const candlestickSeries = (series: readonly ChartSeries[]) =>\n withSeriesType(series, \"candlestick\");\n\n/** A cell of a HeatmapChart */\nexport interface HeatmapCell {\n /** Column: a category name (or a number on a numeric axis) */\n x: string | number;\n /** Row: a category name (or a number on a numeric axis) */\n y: string | number;\n /** Value mapped to the color scale; `null` leaves the cell empty */\n value: number | null;\n}\n\n/** Settings of a heatmap (the props of HeatmapChart) */\nexport interface HeatmapConfig {\n /** Cells */\n data: readonly HeatmapCell[];\n /** Column names in order (collected from the data when omitted) */\n xCategories?: readonly string[];\n /** Row names from bottom to top (collected from the data when omitted) */\n yCategories?: readonly string[];\n /** Colors from the lowest to the highest value; a ramp of the first palette color by default */\n colorScale?: readonly string[];\n /** Values at the ends of the color scale; the data range by default */\n valueRange?: readonly [number, number];\n /** Name of the value in the tooltip */\n name?: string;\n /** Corner radius of the cells, in pixels */\n radius?: number;\n /** Formats the values in the tooltip */\n format?: (value: number) => string;\n}\n\n/** Engine options of a heatmap */\nexport const heatmapChartOptions = (\n config: HeatmapConfig,\n base: Partial<ChartOptions> = {},\n): ChartOptions => {\n const numericX = config.data.some((c) => typeof c.x === \"number\");\n const numericY = config.data.some((c) => typeof c.y === \"number\");\n return {\n ...base,\n series: [\n {\n id: \"heatmap\",\n name: config.name ?? presetLabels(base.locale).value,\n type: \"heatmap\",\n data: config.data.map((c) => ({ x: c.x, y: c.y, value: c.value })),\n colorScale: config.colorScale,\n valueRange: config.valueRange,\n radius: config.radius,\n format: config.format,\n },\n ],\n xAxis: {\n ...(numericX\n ? {}\n : { type: \"category\" as const, categories: config.xCategories }),\n grid: false,\n ...base.xAxis,\n },\n yAxis: {\n ...(numericY\n ? {}\n : { type: \"category\" as const, categories: config.yCategories }),\n grid: false,\n ...base.yAxis,\n },\n legend: base.legend ?? false,\n interaction: base.interaction ?? { zoom: false },\n tooltip: base.tooltip ?? { mode: \"nearest\" },\n };\n};\n\n/** Settings of a sparkline (the props of Sparkline) */\nexport interface SparklineConfig {\n /** Values (or `[x, y]` pairs, typed arrays, ...) */\n data: ChartSeries[\"data\"];\n /**\n * How the values are drawn\n * @default \"line\"\n */\n type?: \"line\" | \"area\" | \"bar\";\n /** Color (any CSS color); the first palette color by default */\n color?: string;\n /**\n * Shape of the line\n * @default \"smooth\"\n */\n curve?: ChartCurve;\n /** Name shown in the tooltip */\n name?: string;\n /** Draws a reference line at this value (e.g. a target or the average) */\n reference?: number;\n /** Formats the value in the tooltip */\n format?: (value: number) => string;\n}\n\n/** Engine options of a sparkline: no axes, no legend, a tooltip only */\nexport const sparklineOptions = (\n config: SparklineConfig,\n base: Partial<ChartOptions> = {},\n): ChartOptions => {\n const type = config.type ?? \"line\";\n return {\n ...base,\n series: [\n {\n id: \"sparkline\",\n name: config.name ?? presetLabels(base.locale).value,\n type,\n data: config.data,\n color: config.color,\n curve: type === \"bar\" ? undefined : (config.curve ?? \"smooth\"),\n lineWidth: 1.5,\n opacity: type === \"area\" ? 0.22 : undefined,\n radius: type === \"bar\" ? 1.5 : undefined,\n format: config.format,\n },\n ],\n xAxis: { visible: false, grid: false, ...base.xAxis },\n yAxis: { visible: false, grid: false, nice: false, ...base.yAxis },\n legend: false,\n padding: base.padding ?? { top: 4, right: 4, bottom: 4, left: 4 },\n interaction: base.interaction ?? { zoom: false },\n annotations:\n config.reference !== undefined\n ? [\n ...(base.annotations ?? []),\n {\n type: \"line\",\n axis: \"y\",\n value: config.reference,\n dash: [2, 3],\n },\n ]\n : base.annotations,\n };\n};\n\n/** A point of a QuadrantChart */\nexport interface QuadrantPoint {\n /** Position on the horizontal axis */\n x: number;\n /** Position on the vertical axis */\n y: number;\n /** Text drawn next to the dot and shown in the tooltip */\n label?: string;\n /** Dot color (any CSS color); the color of its quadrant by default */\n color?: string;\n /** Dot diameter in pixels */\n size?: number;\n}\n\n/** Title and color of a quadrant */\nexport interface QuadrantRegion {\n /** Title drawn in the outer corner of the quadrant */\n label?: string;\n /** Background tint and default dot color (any CSS color) */\n color?: string;\n}\n\n/** The four quadrants of a QuadrantChart */\nexport interface QuadrantRegions {\n topLeft?: QuadrantRegion;\n topRight?: QuadrantRegion;\n bottomLeft?: QuadrantRegion;\n bottomRight?: QuadrantRegion;\n}\n\n/** A quadrant, as seen on screen */\nexport type QuadrantCorner = keyof QuadrantRegions;\n\n/** Texts at the four ends of the dividers, inside the plot */\nexport interface QuadrantAxisLabels {\n top?: string;\n bottom?: string;\n left?: string;\n right?: string;\n}\n\n/** Settings of a quadrant matrix (the props of QuadrantChart) */\nexport interface QuadrantConfig {\n /** Points to place */\n points: readonly QuadrantPoint[];\n /**\n * Range of the horizontal axis\n * @default [0, 10]\n */\n xDomain?: [number, number];\n /**\n * Range of the vertical axis\n * @default [0, 10]\n */\n yDomain?: [number, number];\n /** X value of the vertical divider (the middle of `xDomain` by default) */\n xSplit?: number;\n /** Y value of the horizontal divider (the middle of `yDomain` by default) */\n ySplit?: number;\n /** Titles and colors of the quadrants */\n quadrants?: QuadrantRegions;\n /** Title of the horizontal axis */\n xLabel?: string;\n /** Title of the vertical axis */\n yLabel?: string;\n /** Texts at the ends of the dividers, drawn inside the plot (e.g. \"Important\" at the top) */\n axisLabels?: QuadrantAxisLabels;\n /**\n * Shows the numeric ticks of the axes; `false` keeps only the matrix\n * @default true\n */\n showTicks?: boolean;\n /** Reverses the horizontal axis (e.g. \"urgent\" on the left) */\n reverseX?: boolean;\n /**\n * Draws the labels next to the dots (overlapping labels are skipped)\n * @default true\n */\n showLabels?: boolean;\n /**\n * Dot diameter in pixels\n * @default 12\n */\n pointSize?: number;\n /** Name of the points in the tooltip */\n name?: string;\n /** Lets the user drag the dots (`drag` / `drop` events) */\n draggable?: boolean;\n}\n\nexport const DEFAULT_QUADRANT_COLORS: Required<Record<QuadrantCorner, string>> =\n {\n topLeft: \"var(--danger-color, #ef4444)\",\n topRight: \"var(--primary-color, #4f46e5)\",\n bottomLeft: \"var(--warning-color, #f59e0b)\",\n bottomRight: \"var(--text-secondary-color, #64748b)\",\n };\n\nconst DIVIDER = \"var(--border-strong-color, var(--border-color, #cbd5e1))\";\n\nconst splits = (config: QuadrantConfig) => {\n const [x0, x1] = config.xDomain ?? [0, 10];\n const [y0, y1] = config.yDomain ?? [0, 10];\n return {\n x0,\n x1,\n y0,\n y1,\n xs: config.xSplit ?? (x0 + x1) / 2,\n ys: config.ySplit ?? (y0 + y1) / 2,\n };\n};\n\n/** Quadrant of a data position, as seen on screen */\nexport const quadrantOf = (\n config: Pick<\n QuadrantConfig,\n \"xDomain\" | \"yDomain\" | \"xSplit\" | \"ySplit\" | \"reverseX\"\n >,\n x: number,\n y: number,\n): QuadrantCorner => {\n const { xs, ys } = splits(config as QuadrantConfig);\n const right = config.reverseX ? x < xs : x >= xs;\n const top = y >= ys;\n return top\n ? right\n ? \"topRight\"\n : \"topLeft\"\n : right\n ? \"bottomRight\"\n : \"bottomLeft\";\n};\n\n/** Center of a quadrant in data coordinates */\nexport const quadrantCenter = (\n config: Pick<\n QuadrantConfig,\n \"xDomain\" | \"yDomain\" | \"xSplit\" | \"ySplit\" | \"reverseX\"\n >,\n corner: QuadrantCorner,\n): { x: number; y: number } => {\n const { x0, x1, y0, y1, xs, ys } = splits(config as QuadrantConfig);\n const visualRight = corner.endsWith(\"Right\");\n const dataHigh = config.reverseX ? !visualRight : visualRight;\n return {\n x: dataHigh ? (xs + x1) / 2 : (x0 + xs) / 2,\n y: corner.startsWith(\"top\") ? (ys + y1) / 2 : (y0 + ys) / 2,\n };\n};\n\n/** Engine options of a quadrant matrix */\nexport const quadrantChartOptions = (\n config: QuadrantConfig,\n base: Omit<ChartOptions, \"series\"> = {},\n): ChartOptions => {\n const { x0, x1, y0, y1, xs, ys } = splits(config);\n const reverseX = !!config.reverseX;\n const color = (corner: QuadrantCorner) =>\n config.quadrants?.[corner]?.color ?? DEFAULT_QUADRANT_COLORS[corner];\n\n const series: ChartSeries[] = [\n {\n type: \"scatter\",\n name: config.name ?? \"\",\n pointSize: config.pointSize ?? 12,\n showLabels: config.showLabels ?? true,\n opacity: 0.9,\n data: config.points.map((p) => ({\n x: p.x,\n y: p.y,\n label: p.label,\n size: p.size,\n color: p.color ?? color(quadrantOf(config, p.x, p.y)),\n })),\n },\n ];\n\n // visual left / right -> data ranges\n const left: [number, number] = reverseX ? [xs, x1] : [x0, xs];\n const right: [number, number] = reverseX ? [x0, xs] : [xs, x1];\n const rect = (\n corner: QuadrantCorner,\n [xa, xb]: [number, number],\n [ya, yb]: [number, number],\n position: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\",\n ): ChartAnnotation => ({\n type: \"rect\",\n x0: xa,\n x1: xb,\n y0: ya,\n y1: yb,\n color: color(corner),\n opacity: 0.07,\n label: config.quadrants?.[corner]?.label,\n labelPosition: position,\n });\n const ends = config.axisLabels ?? {};\n const visualLeft = reverseX ? x1 : x0;\n const visualRight = reverseX ? x0 : x1;\n const texts: ChartAnnotation[] = [\n ...(ends.top\n ? [{ type: \"text\", x: xs, y: y1, text: ends.top, anchor: \"top\" } as const]\n : []),\n ...(ends.bottom\n ? [\n {\n type: \"text\",\n x: xs,\n y: y0,\n text: ends.bottom,\n anchor: \"bottom\",\n } as const,\n ]\n : []),\n ...(ends.left\n ? [\n {\n type: \"text\",\n x: visualLeft,\n y: ys,\n text: ends.left,\n anchor: \"left\",\n } as const,\n ]\n : []),\n ...(ends.right\n ? [\n {\n type: \"text\",\n x: visualRight,\n y: ys,\n text: ends.right,\n anchor: \"right\",\n } as const,\n ]\n : []),\n ];\n\n const annotations: ChartAnnotation[] = [\n rect(\"topLeft\", left, [ys, y1], \"top-left\"),\n rect(\"topRight\", right, [ys, y1], \"top-right\"),\n rect(\"bottomLeft\", left, [y0, ys], \"bottom-left\"),\n rect(\"bottomRight\", right, [y0, ys], \"bottom-right\"),\n { type: \"line\", axis: \"x\", value: xs, dash: [], color: DIVIDER },\n { type: \"line\", axis: \"y\", value: ys, dash: [], color: DIVIDER },\n ...texts,\n ...(base.annotations ?? []),\n ];\n\n const showTicks = config.showTicks ?? true;\n const interaction: boolean | ChartInteractionOptions =\n base.interaction === false\n ? false\n : {\n zoom: false,\n ...(typeof base.interaction === \"object\" ? base.interaction : {}),\n ...(config.draggable ? { dragPoints: true } : {}),\n };\n\n return {\n ...base,\n series,\n annotations,\n tooltip:\n base.tooltip ??\n (showTicks\n ? undefined\n : {\n render: (event) => {\n const item = event.items[0];\n if (!item) return null;\n const region =\n config.quadrants?.[quadrantOf(config, item.x, item.y)]?.label;\n return [item.label ?? config.name ?? \"\", region ?? \"\"]\n .filter(Boolean)\n .join(\"\\n\");\n },\n }),\n xAxis: {\n min: x0,\n max: x1,\n title: config.xLabel,\n reverse: reverseX,\n nice: false,\n grid: false,\n tickCount: 4,\n visible: showTicks || !!config.xLabel,\n ...(showTicks ? {} : { format: () => \"\" }),\n },\n yAxis: {\n min: y0,\n max: y1,\n title: config.yLabel,\n nice: false,\n grid: false,\n tickCount: 4,\n visible: showTicks || !!config.yLabel,\n ...(showTicks ? {} : { format: () => \"\" }),\n },\n legend: base.legend ?? false,\n padding:\n base.padding ??\n (showTicks ? undefined : { top: 4, right: 4, bottom: 4, left: 4 }),\n interaction,\n };\n};\n\n// ------------------------------------------------------------- statistics\n\n/** Finite values of a list, as a sorted typed array */\nconst sortedFinite = (values: ArrayLike<number>): Float64Array => {\n let n = 0;\n for (let i = 0; i < values.length; i++) if (Number.isFinite(values[i])) n++;\n const out = new Float64Array(n);\n let k = 0;\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n if (Number.isFinite(v)) out[k++] = v;\n }\n return out.sort();\n};\n\n/** Quantile `p` (0-1) of sorted values, linearly interpolated (NumPy / Excel) */\nconst quantileOf = (sorted: ArrayLike<number>, p: number): number => {\n const n = sorted.length;\n if (!n) return NaN;\n const at = Math.min(1, Math.max(0, p)) * (n - 1);\n const lo = Math.floor(at);\n const hi = Math.min(n - 1, lo + 1);\n return sorted[lo] + (sorted[hi] - sorted[lo]) * (at - lo);\n};\n\n/**\n * Quantiles of values (`[0.5, 0.95, 0.99]` gives the median, p95 and p99),\n * linearly interpolated like NumPy and Excel; non-finite values are ignored\n */\nexport const quantiles = (\n values: ArrayLike<number>,\n ps: readonly number[],\n): number[] => {\n const sorted = sortedFinite(values);\n return ps.map((p) => quantileOf(sorted, p));\n};\n\n/** How the bins of a histogram are chosen: a count, or a rule */\nexport type HistogramBinning =\n number | \"auto\" | \"sturges\" | \"freedman-diaconis\";\n\n/** Options of `binValues` */\nexport interface BinOptions {\n /**\n * Number of bins, or the rule choosing it: `sturges` (log2 n + 1, for\n * small normal-ish samples), `freedman-diaconis` (bin width from the\n * interquartile range, robust to outliers); `auto` uses Freedman-Diaconis\n * and Sturges when the spread is zero\n * @default \"auto\"\n */\n bins?: HistogramBinning;\n /** Range covered by the bins (values outside are not counted); the data range by default */\n domain?: readonly [number, number];\n /**\n * Rounds the bin width to 1, 2 or 5 × 10^k and aligns the edges on it\n * @default true\n */\n nice?: boolean;\n}\n\n/** Bins of a histogram */\nexport interface HistogramBins {\n /** Edges of the bins: one more than the bins */\n edges: number[];\n /** Number of values in every bin */\n counts: number[];\n /** Width of a bin */\n width: number;\n /** Number of values counted (finite, inside the domain) */\n total: number;\n}\n\n/** At most this many values are sorted to estimate the spread (Freedman-Diaconis) */\nconst SPREAD_SAMPLE = 100_000;\n\n/**\n * Counts values into bins of equal width: linear in the number of values\n * (a million samples take a few milliseconds; the spread of large samples\n * is estimated on an even subsample)\n */\nexport const binValues = (\n values: ArrayLike<number>,\n options: BinOptions = {},\n): HistogramBins => {\n let n = 0;\n let min = Infinity;\n let max = -Infinity;\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n if (!Number.isFinite(v)) continue;\n n++;\n if (v < min) min = v;\n if (v > max) max = v;\n }\n let [lo, hi] = options.domain ?? [min, max];\n if (!n || !Number.isFinite(lo) || !Number.isFinite(hi)) {\n return { edges: [0, 1], counts: [0], width: 1, total: 0 };\n }\n if (lo > hi) [lo, hi] = [hi, lo];\n if (hi === lo) {\n lo -= 0.5;\n hi += 0.5;\n }\n const span = hi - lo;\n const rule = options.bins ?? \"auto\";\n const sturges = Math.ceil(Math.log2(n)) + 1;\n let count: number;\n if (typeof rule === \"number\") {\n count = Math.round(rule);\n } else if (rule === \"sturges\") {\n count = sturges;\n } else {\n // Freedman-Diaconis: width = 2 IQR / n^(1/3)\n const stride = Math.max(1, Math.floor(values.length / SPREAD_SAMPLE));\n const sample: number[] = [];\n for (let i = 0; i < values.length; i += stride) {\n const v = values[i];\n if (Number.isFinite(v)) sample.push(v);\n }\n const sorted = Float64Array.from(sample).sort();\n const iqr = quantileOf(sorted, 0.75) - quantileOf(sorted, 0.25);\n const width = (2 * iqr) / Math.cbrt(n);\n count = width > 0 ? Math.ceil(span / width) : sturges;\n }\n count = Math.max(1, Math.min(1000, count || 1));\n let width = span / count;\n let start = lo;\n if (options.nice ?? true) {\n width = tickStep(lo, hi, count) || width;\n start = Math.floor(lo / width + 1e-9) * width;\n count = Math.max(1, Math.ceil((hi - start) / width - 1e-9));\n }\n const end = start + count * width;\n const counts = new Array<number>(count).fill(0);\n let total = 0;\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n if (!(v >= start && v <= end)) continue;\n // the last bin includes its right edge\n const k = Math.min(count - 1, Math.floor((v - start) / width));\n counts[k]++;\n total++;\n }\n const edges: number[] = [];\n for (let k = 0; k <= count; k++)\n edges.push(Number((start + k * width).toPrecision(12)));\n return { edges, counts, width, total };\n};\n\n/** Options of `histogramSeries` */\nexport interface HistogramSeriesOptions extends BinOptions {\n /** Name of the series (legend, tooltip) */\n name?: string;\n /** Bar color (any CSS color) */\n color?: string;\n /** Formats the edges of the bins in the tooltip */\n format?: (value: number) => string;\n /** Bins already computed (`binValues`): `values` are then ignored */\n binned?: HistogramBins;\n /**\n * Locale of the default name and of the bin edges\n * @default the page language\n */\n locale?: string;\n}\n\n/** Bar series of a histogram: one touching bar per bin, labelled with its range */\nexport const histogramSeries = (\n values: ArrayLike<number>,\n options: HistogramSeriesOptions = {},\n): ChartSeries => {\n const bins = options.binned ?? binValues(values, options);\n const locale = resolveLocale(options.locale);\n const format =\n options.format ?? ((value: number) => formatEdge(value, locale));\n return {\n id: \"histogram\",\n name: options.name ?? presetLabels(locale).count,\n type: \"bar\",\n color: options.color,\n barWidth: 1,\n radius: 1,\n data: bins.counts.map((count, k) => {\n const a = bins.edges[k] ?? 0;\n const b = bins.edges[k + 1] ?? a;\n return {\n x: (a + b) / 2,\n y: count,\n label: `${format(a)} – ${format(b)}`,\n };\n }),\n };\n};\n\nconst formatEdge = (value: number, locale: string) =>\n numberFormat(locale, { maximumSignificantDigits: 6 }).format(value);\n\n/** Options of `boxplotStats` */\nexport interface BoxplotStatsOptions {\n /**\n * Reach of the whiskers in interquartile ranges beyond the box (Tukey:\n * 1.5); `\"minmax\"` extends them to the extremes (no outliers)\n * @default 1.5\n */\n whisker?: number | \"minmax\";\n}\n\n/** Five-number summary of a sample, with the outliers */\nexport interface BoxplotStats {\n /** Lower whisker: the smallest value within reach */\n low: number;\n /** First quartile */\n q1: number;\n median: number;\n /** Third quartile */\n q3: number;\n /** Upper whisker: the largest value within reach */\n high: number;\n /** Values beyond the whiskers */\n outliers: number[];\n min: number;\n max: number;\n mean: number;\n /** Number of finite values */\n count: number;\n}\n\n/** Quartiles, whiskers (Tukey's 1.5 IQR by default) and outliers of raw values */\nexport const boxplotStats = (\n values: ArrayLike<number>,\n options: BoxplotStatsOptions = {},\n): BoxplotStats => {\n const sorted = sortedFinite(values);\n const n = sorted.length;\n if (!n) {\n return {\n low: NaN,\n q1: NaN,\n median: NaN,\n q3: NaN,\n high: NaN,\n outliers: [],\n min: NaN,\n max: NaN,\n mean: NaN,\n count: 0,\n };\n }\n const q1 = quantileOf(sorted, 0.25);\n const median = quantileOf(sorted, 0.5);\n const q3 = quantileOf(sorted, 0.75);\n const min = sorted[0];\n const max = sorted[n - 1];\n let sum = 0;\n for (let i = 0; i < n; i++) sum += sorted[i];\n const whisker = options.whisker ?? 1.5;\n let low = min;\n let high = max;\n const outliers: number[] = [];\n if (whisker !== \"minmax\") {\n const reach = (q3 - q1) * whisker;\n const from = q1 - reach;\n const to = q3 + reach;\n let i = 0;\n while (i < n && sorted[i] < from) outliers.push(sorted[i++]);\n low = i < n ? sorted[i] : q1;\n let j = n - 1;\n const upper: number[] = [];\n while (j >= 0 && sorted[j] > to) upper.push(sorted[j--]);\n high = j >= 0 ? sorted[j] : q3;\n outliers.push(...upper.reverse());\n }\n return {\n low: Math.min(low, q1),\n q1,\n median,\n q3,\n high: Math.max(high, q3),\n outliers,\n min,\n max,\n mean: sum / n,\n count: n,\n };\n};\n\n/** A sample of a box plot */\nexport interface BoxplotGroup {\n /** Category (or position) of the box */\n x: ChartXValue;\n /** Raw values: their quartiles, whiskers and outliers are computed */\n values: ArrayLike<number>;\n /** Color of the box (any CSS color) */\n color?: string;\n}\n\n/** Box plot data of raw samples (one datum per group) */\nexport const boxplotData = (\n groups: readonly BoxplotGroup[],\n options: BoxplotStatsOptions = {},\n): ChartPointDatum[] =>\n groups.map((g) => {\n const s = boxplotStats(g.values, options);\n return {\n x: g.x,\n y: Number.isFinite(s.median) ? s.median : null,\n low: s.low,\n q1: s.q1,\n q3: s.q3,\n high: s.high,\n outliers: s.outliers,\n ...(g.color ? { color: g.color } : {}),\n };\n });\n\n/** Series of a BoxPlotChart */\nexport const boxplotSeries = (series: readonly ChartSeries[]) =>\n withSeriesType(series, \"boxplot\");\n\n// ---------------------------------------------------------------- waterfall\n\n/** A bar of a waterfall chart */\nexport interface WaterfallStep {\n /** Category name of the bar */\n label: string;\n /** Change (positive or negative); ignored by totals */\n value?: number;\n /**\n * `subtotal` and `total` bars show the running total, from zero\n * @default \"change\"\n */\n kind?: \"change\" | \"subtotal\" | \"total\";\n /** Color of this bar (any CSS color) */\n color?: string;\n}\n\n/** Options of `waterfallSeries` */\nexport interface WaterfallOptions {\n /** Name of the series (tooltip) */\n name?: string;\n /** Color of the increases @default the success color */\n upColor?: string;\n /** Color of the decreases @default the danger color */\n downColor?: string;\n /** Color of the totals and subtotals @default the primary color */\n totalColor?: string;\n /**\n * Value the first change starts from\n * @default 0\n */\n start?: number;\n /**\n * Writes the change (or the total) at the end of every bar\n * @default false\n */\n labels?: boolean;\n /** Formats the values (labels, tooltip) */\n format?: (value: number) => string;\n /**\n * Locale of the default name\n * @default the page language\n */\n locale?: string;\n}\n\n/**\n * Floating bar series of a waterfall (bridge) chart: every change starts\n * where the previous one ended; totals and subtotals start from zero\n */\nexport const waterfallSeries = (\n steps: readonly WaterfallStep[],\n options: WaterfallOptions = {},\n): ChartSeries => {\n const up = options.upColor ?? \"var(--success-color, #16a34a)\";\n const down = options.downColor ?? \"var(--danger-color, #dc2626)\";\n const total = options.totalColor ?? \"var(--primary-color, #4f46e5)\";\n let running = options.start ?? 0;\n const data: ChartPointDatum[] = steps.map((step) => {\n if (step.kind === \"total\" || step.kind === \"subtotal\") {\n return { x: step.label, y: running, color: step.color ?? total };\n }\n const value = step.value ?? 0;\n const from = running;\n running += value;\n return {\n x: step.label,\n y0: from,\n y: running,\n color: step.color ?? (value >= 0 ? up : down),\n };\n });\n return {\n id: \"waterfall\",\n name: options.name ?? presetLabels(options.locale).change,\n type: \"bar\",\n color: total,\n data,\n showLabels: options.labels ?? false,\n format: options.format,\n };\n};\n\n// ------------------------------------------------------------------ bubbles\n\n/** Options of `bubbleSeries` */\nexport interface BubbleOptions {\n /**\n * Diameter in pixels of the smallest bubbles\n * @default 6\n */\n minSize?: number;\n /**\n * Diameter in pixels of the largest value\n * @default 48\n */\n maxSize?: number;\n /** Value drawn with `maxSize` (share a scale between charts); the largest value by default */\n maxValue?: number;\n}\n\n/**\n * Scatter series whose dots are sized by the `value` of their points: the\n * area of a bubble is proportional to its value (diameter ∝ √value), the\n * scale is shared by every series. Points are drawn from the largest to\n * the smallest, so small bubbles stay on top (hover indexes refer to that\n * order).\n */\nexport const bubbleSeries = (\n series: readonly ChartSeries[],\n options: BubbleOptions = {},\n): ChartSeries[] => {\n const minSize = options.minSize ?? 6;\n const maxSize = options.maxSize ?? 48;\n const valuesOf = (data: ChartSeries[\"data\"]): ArrayLike<number> | null => {\n if (typeof data !== \"object\" || data === null) return null;\n if (!(\"length\" in data)) {\n const v = (data as { value?: ArrayLike<number> }).value;\n return v ?? null;\n }\n const list = data as ArrayLike<unknown>;\n const out = new Float64Array(list.length).fill(NaN);\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n if (item && typeof item === \"object\" && !Array.isArray(item)) {\n const v = (item as { value?: unknown }).value;\n if (typeof v === \"number\") out[i] = v;\n }\n }\n return out;\n };\n let top = options.maxValue ?? 0;\n if (options.maxValue === undefined) {\n for (const s of series) {\n const values = valuesOf(s.data);\n if (!values) continue;\n for (let i = 0; i < values.length; i++) {\n const v = Math.abs(values[i]);\n if (v > top) top = v;\n }\n }\n }\n const sizeOf = (v: number) =>\n Number.isFinite(v) && top > 0\n ? Math.max(minSize, maxSize * Math.sqrt(Math.min(1, Math.abs(v) / top)))\n : minSize;\n return series.map((s) => {\n const base: ChartSeries = {\n ...s,\n type: s.type ?? \"scatter\",\n opacity: s.opacity ?? 0.68,\n };\n if (base.type !== \"scatter\") return base;\n const data = s.data;\n if (typeof data === \"object\" && data !== null && !(\"length\" in data)) {\n const values = (data as { value?: ArrayLike<number> }).value;\n if (!values) return base;\n const size = new Float32Array(values.length);\n for (let i = 0; i < values.length; i++) size[i] = sizeOf(values[i]);\n return { ...base, data: { ...data, size } };\n }\n const list = data as ArrayLike<unknown>;\n const points: ChartPointDatum[] = [];\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n if (!item || typeof item !== \"object\" || Array.isArray(item)) continue;\n const d = item as ChartPointDatum;\n points.push({\n ...d,\n size: d.size ?? sizeOf(typeof d.value === \"number\" ? d.value : NaN),\n });\n }\n points.sort((a, b) => (b.size ?? 0) - (a.size ?? 0));\n return { ...base, data: points };\n });\n};\n\n// -------------------------------------------------------------------- gantt\n\n/** A task (or milestone) of a Gantt chart */\nexport interface GanttTask {\n /** Row name (unique) */\n name: string;\n /** Start (a timestamp or a date) */\n start: number | Date;\n /** End; omitted for milestones */\n end?: number | Date;\n /** Share done, 0-1: drawn as a solid bar over the task */\n progress?: number;\n /** Group (phase, team): a color and a legend entry per group */\n group?: string;\n /** Color of the task (any CSS color); the color of its group by default */\n color?: string;\n /** Draws a dot at `start` instead of a bar */\n milestone?: boolean;\n}\n\n/** Options of `ganttSeries` */\nexport interface GanttOptions {\n /** Colors of the groups in order of appearance (any CSS colors); the chart palette by default */\n colors?: readonly string[];\n /**\n * Name of the tasks without a group\n * @default \"Tasks\" (in the `locale`)\n */\n taskName?: string;\n /**\n * Name of the progress bars (legend, tooltip)\n * @default \"Progress\" (in the `locale`)\n */\n progressName?: string;\n /**\n * Name of the milestones (legend, tooltip)\n * @default \"Milestones\" (in the `locale`)\n */\n milestoneName?: string;\n /** Formats the progress shares (tooltip) @default \"60%\" */\n formatProgress?: (share: number) => string;\n /**\n * Locale of the default names and of the progress shares\n * @default the page language\n */\n locale?: string;\n}\n\n/** Series of a Gantt chart and the row names in order */\nexport interface GanttSeries {\n series: ChartSeries[];\n /** Task names from top to bottom (the `categories` of the x axis) */\n categories: string[];\n /** Time range of the tasks with a small margin (the `min` / `max` of the value axis) */\n domain: [number, number];\n}\n\nconst THEMED = [\n \"--primary-color\",\n \"--success-color\",\n \"--warning-color\",\n \"--danger-color\",\n \"--info-color\",\n];\nconst FALLBACK = [\n \"#4f46e5\",\n \"#10b981\",\n \"#f59e0b\",\n \"#ef4444\",\n \"#0ea5e9\",\n \"#8b5cf6\",\n \"#14b8a6\",\n \"#f97316\",\n];\n\n/** Color `k` of the chart palette as a CSS color (theme variables first) */\nexport const paletteColor = (k: number): string => {\n const i = k % 8;\n const fallback = FALLBACK[i] ?? \"#4f46e5\";\n const themed = THEMED[i];\n return themed\n ? `var(--chart-series-${i + 1}, var(${themed}, ${fallback}))`\n : `var(--chart-series-${i + 1}, ${fallback})`;\n};\n\nconst time = (v: number | Date | undefined) =>\n v instanceof Date ? v.getTime() : v === undefined ? NaN : v;\n\n/**\n * Floating bar series of a Gantt chart (horizontal, on a time axis): a\n * translucent bar per task with its progress drawn over it, one series per\n * group, and the milestones as dots\n */\nexport const ganttSeries = (\n tasks: readonly GanttTask[],\n options: GanttOptions = {},\n): GanttSeries => {\n const locale = resolveLocale(options.locale);\n const names = presetLabels(locale);\n const taskName = options.taskName ?? names.tasks;\n const groups: string[] = [];\n for (const t of tasks) {\n const g = t.group ?? taskName;\n if (!t.milestone && !groups.includes(g)) groups.push(g);\n }\n const colorOf = (g: string) => {\n const k = Math.max(0, groups.indexOf(g));\n return options.colors?.[k] ?? paletteColor(k);\n };\n const formatProgress =\n options.formatProgress ??\n ((share: number) =>\n numberFormat(locale, {\n style: \"percent\",\n maximumFractionDigits: 0,\n }).format(share));\n const series: ChartSeries[] = groups.map((g) => ({\n id: `gantt:${g}`,\n name: g,\n type: \"bar\",\n stack: \"gantt\",\n color: colorOf(g),\n opacity: 0.3,\n barWidth: 0.62,\n radius: 4,\n data: tasks\n .filter((t) => !t.milestone && (t.group ?? taskName) === g)\n .map((t) => ({\n x: t.name,\n y0: time(t.start),\n y: time(t.end ?? t.start),\n ...(t.color ? { color: t.color } : {}),\n })),\n }));\n const progress = tasks.filter(\n (t) => !t.milestone && t.progress !== undefined && t.progress > 0,\n );\n if (progress.length) {\n series.push({\n id: \"gantt:progress\",\n name: options.progressName ?? names.progress,\n type: \"bar\",\n stack: \"gantt\",\n // every bar has the color of its task: a neutral legend swatch\n color: \"var(--text-secondary-color, #6b7280)\",\n radius: 4,\n data: progress.map((t) => {\n const start = time(t.start);\n const end = time(t.end ?? t.start);\n const share = Math.min(1, Math.max(0, t.progress ?? 0));\n return {\n x: t.name,\n y0: start,\n y: start + (end - start) * share,\n label: formatProgress(share),\n color: t.color ?? colorOf(t.group ?? taskName),\n };\n }),\n });\n }\n const milestones = tasks.filter((t) => t.milestone);\n if (milestones.length) {\n series.push({\n id: \"gantt:milestones\",\n name: options.milestoneName ?? names.milestones,\n type: \"scatter\",\n color: \"var(--text-color, #1f2937)\",\n pointSize: 13,\n opacity: 1,\n data: milestones.map((t) => ({\n x: t.name,\n y: time(t.start),\n ...(t.color ? { color: t.color } : {}),\n })),\n });\n }\n let lo = Infinity;\n let hi = -Infinity;\n for (const t of tasks) {\n for (const v of [time(t.start), time(t.end ?? t.start)]) {\n if (v < lo) lo = v;\n if (v > hi) hi = v;\n }\n }\n // room for the milestone dots at the ends\n const pad = Number.isFinite(hi - lo) ? Math.max((hi - lo) * 0.025, 1) : 0;\n return {\n series,\n categories: tasks.map((t) => t.name),\n domain: Number.isFinite(lo) ? [lo - pad, hi + pad] : [0, 1],\n };\n};\n\n// -------------------------------------------------------------- range areas\n\n/** Series of a RangeAreaChart: bands between `y0` and `y` (thin edges) */\nexport const rangeAreaSeries = (\n series: readonly ChartSeries[],\n curve?: ChartCurve,\n) =>\n withSeriesType(series, \"area\", undefined, curve).map((s) =>\n s.type === \"area\" ? { ...s, lineWidth: s.lineWidth ?? 1.5 } : s,\n );\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./types.cjs"),
|
|
1
|
+
const e=require("../color.cjs"),t=require("./types.cjs"),n=require("../decimate.cjs");var r=2e4,i=(e,t)=>`rgba(${Math.round(e[0]*255)},${Math.round(e[1]*255)},${Math.round(e[2]*255)},${e[3]*t})`,a=e=>!Number.isFinite(e)||Math.abs(e)>=15e37,o=(e,t,n,r=2)=>{let i=0,a=t;for(;i<a;){let t=i+a>>>1;e[t*r]<n?i=t+1:a=t}return i},s=(e,t,n,r)=>{let i=new Float64Array(Math.max(0,n-t)*3),o=0,s=t=>{i[o*3]=e[t*3],i[o*3+1]=e[t*3+1],i[o*3+2]=e[t*3+2],o++},c=NaN,l=-1,u=-1,d=-1,f=-1,p=()=>{if(l<0)return;let e=[l,u,d,f].sort((e,t)=>e-t),t=-1;for(let n of e)n!==t&&s(n),t=n;l=-1};for(let i=t;i<n;i++){let t=e[i*3+1];if(a(e[i*3])||a(t)||a(e[i*3+2])){p(),c=NaN,s(i);continue}let n=Math.floor(r(e[i*3]));n!==c||l<0?(p(),c=n,l=u=d=f=i):(t<e[u*3+1]&&(u=i),t>e[d*3+1]&&(d=i),f=i)}return p(),{points:i,length:o}},c=(r,c)=>{let l=null,u=e=>{let{xScale:t,xOffset:n,yScale:r,yOffset:i}=e.transform,a=e.width,o=e.height;return{px:e=>((e*t+n)*.5+.5)*a,py:e=>(1-((e*r+i)*.5+.5))*o,xRange:()=>{let e=(-1-n)/t,r=(1-n)/t;return e<r?[e,r]:[r,e]}}},d=(e,r)=>{if(!e.sorted||e.count<=r.width*2)return{points:e.points,length:e.count};let i=u(r),[a,s]=i.xRange(),c=Math.max(0,o(e.points,e.count,a)-1),l=Math.min(e.count,o(e.points,e.count,s)+1),d=n.decimateMinMax(e.points,c,l,i.px,t.GAP*.5);return{points:d.points,length:d.length}},f=(e,t)=>{let n=u(t),{points:o,length:s}=d(e,t);r.beginPath();let c=!1;for(let e=0;e<s;e++){let t=o[e*2],i=o[e*2+1];if(a(t)||a(i)){c=!1;continue}c?r.lineTo(n.px(t),n.py(i)):r.moveTo(n.px(t),n.py(i)),c=!0}r.lineWidth=e.width*t.dpr,r.lineJoin=`round`,r.lineCap=`round`,r.strokeStyle=i(e.color,1),r.stroke()},p=(e,t)=>{let n=u(t),c=e.points,l=e.count;if(e.sorted&&e.count>t.width*2){let[t,r]=n.xRange(),i=Math.max(0,o(e.points,e.count,t,3)-1),a=Math.min(e.count,o(e.points,e.count,r,3)+1);({points:c,length:l}=s(e.points,i,a,n.px))}let d=r.createLinearGradient(0,0,0,t.height);d.addColorStop(0,i(e.color,e.opacity)),d.addColorStop(1,i(e.color,e.opacity*.25)),r.fillStyle=d,r.beginPath();let f=-1,p=e=>{if(!(f<0)){for(let t=e-1;t>=f;t--)r.lineTo(n.px(c[t*3]),n.py(c[t*3+2]));r.closePath(),f=-1}};for(let e=0;e<l;e++){let t=c[e*3],i=c[e*3+1];if(a(t)||a(i)||a(c[e*3+2])){p(e);continue}f<0?(f=e,r.moveTo(n.px(t),n.py(i))):r.lineTo(n.px(t),n.py(i))}p(l),r.fill()},m=(t,n)=>{let o=u(n),s=n.dpr,c=t.minHalf*s,l=Math.abs(t.halfWidth*n.transform.xScale)*.5*n.width,d=t.radius*s,f=new Float32Array(t.instances,0,t.count*4),p=new Uint32Array(t.instances,0,t.count*4),[m,h]=o.xRange(),g=Math.abs(t.halfWidth),_=new Map;for(let e=0;e<t.count;e++){let t=f[e*4];if(a(t)||a(f[e*4+1])||a(f[e*4+2])||t<m-g||t>h+g)continue;let n=p[e*4+3],r=_.get(n);r||_.set(n,r=[]),r.push(e)}let v=typeof r.roundRect==`function`;for(let[n,a]of _){r.fillStyle=i(e.unpackColor(n),1),r.beginPath();for(let e of a){let n=o.px(f[e*4]),i=o.py(f[e*4+1]),a=o.py(f[e*4+2]),u=Math.abs(i-a)/2,p=Math.min(1,Math.max(0,(Math.min(l,u)-3*s)/(2*s))),m=t.inset*s*p-(t.inset>0?.5*(1-p):0),h=Math.max(l-m,.5,c),g=Math.max(u-m,c);if(g<=0)continue;let _=(i+a)/2,y=Math.min(d,h,g);y>.5&&v?r.roundRect(n-h,_-g,h*2,g*2,y):r.rect(n-h,_-g,h*2,g*2)}r.fill()}},h=(t,n)=>{let o=u(n),s=n.width,c=n.height,l=new Float32Array(t.instances,0,t.count*4),d=new Uint32Array(t.instances,0,t.count*4),f=0;for(let e=0;e<Math.min(t.count,64);e++)f=Math.max(f,l[e*4+2]);f=Math.max(1,Math.round((f||2)*n.dpr*.8));let p=Math.ceil(s/f),m=Math.ceil(c/f),h=new Int32Array(p*m).fill(-1);for(let e=0;e<t.count;e++){let t=l[e*4],n=l[e*4+1];if(a(t)||a(n)||!(l[e*4+2]>0))continue;let r=Math.floor(o.px(t)/f),i=Math.floor(o.py(n)/f);r<0||i<0||r>=p||i>=m||(h[i*p+r]=e)}let g=new Map;for(let e=0;e<h.length;e++){let t=h[e];if(t<0)continue;let n=d[t*4+3],r=g.get(n);r||g.set(n,r=[]),r.push(e)}for(let[n,a]of g){r.fillStyle=i(e.unpackColor(n),Math.max(t.opacity,.6));for(let e of a)r.fillRect(e%p*f,Math.floor(e/p)*f,f,f)}},g=(e,t)=>{let n=u(t),i=t.width,o=t.height;if(l??(l=c?.()??null),!l){h(e,t);return}l.width=i,l.height=o;let s=l.getContext(`2d`);if(!s)return;let d=s.createImageData(i,o),f=d.data,p=new Float32Array(e.instances,0,e.count*4),m=new Uint32Array(e.instances,0,e.count*4);for(let r=0;r<e.count;r++){let s=p[r*4],c=p[r*4+1],l=p[r*4+2];if(a(s)||a(c)||!(l>0))continue;let u=n.px(s),d=n.py(c),h=Math.max(1,Math.round(l*t.dpr*.8)),g=Math.round(u-h/2),_=Math.round(d-h/2),v=m[r*4+3],y=(v>>>24&255)/255*Math.max(e.opacity,.6),b=v&255,x=v>>>8&255,S=v>>>16&255;for(let e=Math.max(0,_);e<Math.min(o,_+h);e++)for(let t=Math.max(0,g);t<Math.min(i,g+h);t++){let n=(e*i+t)*4,r=f[n+3]/255,a=y+r*(1-y);f[n]=(b*y+f[n]*r*(1-y))/a,f[n+1]=(x*y+f[n+1]*r*(1-y))/a,f[n+2]=(S*y+f[n+2]*r*(1-y))/a,f[n+3]=a*255}}s.putImageData(d,0,0),r.drawImage(l,0,0)},_=(t,n)=>{if(t.count>2e4){g(t,n);return}let o=u(n),s=new Float32Array(t.instances,0,t.count*4),c=new Uint32Array(t.instances,0,t.count*4),l=new Map;for(let e=0;e<t.count;e++){let t=c[e*4+3],n=l.get(t);n||l.set(t,n=[]),n.push(e)}let d=t.stroke*n.dpr;for(let[c,u]of l){let l=e.unpackColor(c);r.beginPath();for(let e of u){let t=s[e*4],i=s[e*4+1],c=s[e*4+2];if(a(t)||a(i)||!(c>0))continue;let l=o.px(t),u=o.py(i),d=c*n.dpr/2;r.moveTo(l+d,u),r.arc(l,u,d,0,Math.PI*2)}if(r.fillStyle=i(l,t.opacity),r.fill(),d>0){r.beginPath();for(let e of u){let t=s[e*4],i=s[e*4+1],c=s[e*4+2];if(a(t)||a(i)||!(c>0))continue;let l=Math.max(0,c*n.dpr/2-d/2),u=o.px(t),f=o.py(i);r.moveTo(u+l,f),r.arc(u,f,l,0,Math.PI*2)}r.lineWidth=d,r.strokeStyle=i(l,1),r.stroke()}}};return{paint(e,t,n=0,i=0){r.save(),r.setTransform(1,0,0,1,n,i),r.beginPath(),r.rect(0,0,t.width,t.height),r.clip();for(let n of e)switch(n.kind){case`line`:n.count>1&&f(n,t);break;case`area`:n.count>1&&p(n,t);break;case`bar`:m(n,t);break;default:_(n,t)}r.restore()},destroy(){l=null}}},l=e=>{let t=e.getContext(`2d`);if(!t)return null;let n=c(t,()=>typeof document>`u`?null:document.createElement(`canvas`));return{kind:`canvas2d`,canvas:e,resize(t,n){e.width=Math.max(1,t),e.height=Math.max(1,n)},render(r,i){t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,e.width,e.height),n.paint(r,i)},destroy(){n.destroy(),e.width=0,e.height=0}}};exports.SCATTER_PIXEL_THRESHOLD=r,exports.createCanvas2dPainter=c,exports.createCanvas2dRenderer=l;
|
|
2
2
|
//# sourceMappingURL=canvas2d.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas2d.cjs","names":["decimateMinMax","GAP","require_types","require_decimate","SCATTER_PIXEL_THRESHOLD","rgba","c","alpha","unpack","packed","isGap","v","lowerBoundX","lo","hi","count","mid","points","value","createCanvas2dPainter","scratch","mapper","frame","w","h","x","xScale","xOffset","y","yScale","yOffset","a","b","visiblePoints","item","m","x0","x1","start","end","result","drawLine","ctx","pen","i","length","drawArea","base","gradient","runStart","lastX","close","px","drawBars","half","r","y0","y1","cx","top","height","radius","drawScatterCells","f","u","cell","cols","rows","owner","cy","groups","list","cells","drawScatterPixels","scratchCanvas","sctx","image","data","size","s","g","py","o","da","outA","drawScatter","stroke","color","left","items","createCanvas2dRenderer","canvas","painter","width"],"sources":["../../../../../charts/src/engine/renderers/canvas2d.ts"],"sourcesContent":["// Canvas2D backend: the fallback without GPU. Lines are decimated to a few\n// points per pixel column and very large scatter sets are written pixel by\n// pixel, so it stays usable with large data sets.\n\nimport { decimateMinMax } from \"../decimate\";\nimport type { Rgba } from \"../color\";\nimport {\n GAP,\n type ChartRenderer,\n type RenderFrame,\n type RenderItem,\n type ScatterItem,\n} from \"./types\";\n\n/** Scatter sets above this size are rasterized through ImageData */\nexport const SCATTER_PIXEL_THRESHOLD = 20000;\n\nconst rgba = (c: Rgba, alpha: number) =>\n `rgba(${Math.round(c[0] * 255)},${Math.round(c[1] * 255)},${Math.round(c[2] * 255)},${c[3] * alpha})`;\n\nconst unpack = (packed: number): Rgba => [\n (packed & 0xff) / 255,\n ((packed >>> 8) & 0xff) / 255,\n ((packed >>> 16) & 0xff) / 255,\n ((packed >>> 24) & 0xff) / 255,\n];\n\nconst isGap = (v: number) => !Number.isFinite(v) || Math.abs(v) >= GAP * 0.5;\n\n/** First point index whose relative x is >= value (sorted, interleaved) */\nconst lowerBoundX = (points: Float32Array, count: number, value: number) => {\n let lo = 0;\n let hi = count;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (points[mid * 2] < value) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n};\n\nexport interface Canvas2dPainter {\n /**\n * Draws the items in a `frame.width` x `frame.height` device-pixel area\n * whose top-left corner is at (`left`, `top`) device pixels; nothing is\n * cleared\n */\n paint(\n items: readonly RenderItem[],\n frame: RenderFrame,\n left?: number,\n top?: number,\n ): void;\n destroy(): void;\n}\n\n/**\n * Data layer drawn with any 2D context (browser canvases, mini-program\n * canvases, OffscreenCanvas). `scratchCanvas` creates the canvas used to\n * rasterize very large scatter sets; without it they are drawn as one\n * square per occupied pixel cell.\n */\nexport const createCanvas2dPainter = (\n ctx: CanvasRenderingContext2D,\n scratchCanvas?: () => HTMLCanvasElement | null,\n): Canvas2dPainter => {\n let scratch: HTMLCanvasElement | null = null;\n\n const mapper = (frame: RenderFrame) => {\n const { xScale, xOffset, yScale, yOffset } = frame.transform;\n const w = frame.width;\n const h = frame.height;\n return {\n px: (x: number) => ((x * xScale + xOffset) * 0.5 + 0.5) * w,\n py: (y: number) => (1 - ((y * yScale + yOffset) * 0.5 + 0.5)) * h,\n /** Visible relative x range */\n xRange: (): [number, number] => {\n const a = (-1 - xOffset) / xScale;\n const b = (1 - xOffset) / xScale;\n return a < b ? [a, b] : [b, a];\n },\n };\n };\n\n /** Points actually drawn: decimated when there are many per pixel */\n const visiblePoints = (\n item: Extract<RenderItem, { kind: \"line\" | \"area\" }>,\n frame: RenderFrame,\n ): { points: ArrayLike<number>; length: number } => {\n if (!item.sorted || item.count <= frame.width * 2) {\n return { points: item.points, length: item.count };\n }\n const m = mapper(frame);\n const [x0, x1] = m.xRange();\n const start = Math.max(0, lowerBoundX(item.points, item.count, x0) - 1);\n const end = Math.min(\n item.count,\n lowerBoundX(item.points, item.count, x1) + 1,\n );\n const result = decimateMinMax(item.points, start, end, m.px, GAP * 0.5);\n return { points: result.points, length: result.length };\n };\n\n const drawLine = (\n item: Extract<RenderItem, { kind: \"line\" }>,\n frame: RenderFrame,\n ) => {\n const m = mapper(frame);\n const { points, length } = visiblePoints(item, frame);\n ctx.beginPath();\n let pen = false;\n for (let i = 0; i < length; i++) {\n const x = points[i * 2];\n const y = points[i * 2 + 1];\n if (isGap(x) || isGap(y)) {\n pen = false;\n continue;\n }\n if (pen) ctx.lineTo(m.px(x), m.py(y));\n else ctx.moveTo(m.px(x), m.py(y));\n pen = true;\n }\n ctx.lineWidth = item.width * frame.dpr;\n ctx.lineJoin = \"round\";\n ctx.lineCap = \"round\";\n ctx.strokeStyle = rgba(item.color, 1);\n ctx.stroke();\n };\n\n const drawArea = (\n item: Extract<RenderItem, { kind: \"area\" }>,\n frame: RenderFrame,\n ) => {\n const m = mapper(frame);\n const { points, length } = visiblePoints(item, frame);\n const base = m.py(item.baseline);\n const gradient = ctx.createLinearGradient(0, 0, 0, base);\n gradient.addColorStop(0, rgba(item.color, item.opacity));\n gradient.addColorStop(1, rgba(item.color, item.opacity * 0.3));\n ctx.fillStyle = gradient;\n ctx.beginPath();\n let runStart = -1;\n let lastX = 0;\n const close = () => {\n if (runStart < 0) return;\n ctx.lineTo(lastX, base);\n ctx.closePath();\n runStart = -1;\n };\n for (let i = 0; i < length; i++) {\n const x = points[i * 2];\n const y = points[i * 2 + 1];\n if (isGap(x) || isGap(y)) {\n close();\n continue;\n }\n const px = m.px(x);\n if (runStart < 0) {\n runStart = i;\n ctx.moveTo(px, base);\n }\n ctx.lineTo(px, m.py(y));\n lastX = px;\n }\n close();\n ctx.fill();\n };\n\n const drawBars = (\n item: Extract<RenderItem, { kind: \"bar\" }>,\n frame: RenderFrame,\n ) => {\n const m = mapper(frame);\n const half = Math.max(\n Math.abs(item.halfWidth * frame.transform.xScale) * 0.5 * frame.width,\n 0.5,\n );\n const r = item.radius * frame.dpr;\n ctx.fillStyle = rgba(item.color, 1);\n ctx.beginPath();\n const v = item.instances;\n for (let i = 0; i < item.count; i++) {\n const x = v[i * 3];\n const y0 = v[i * 3 + 1];\n const y1 = v[i * 3 + 2];\n if (isGap(x) || isGap(y0) || isGap(y1)) continue;\n const cx = m.px(x);\n const a = m.py(y0);\n const b = m.py(y1);\n const top = Math.min(a, b);\n const height = Math.abs(a - b);\n const radius = Math.min(r, half, height / 2);\n if (radius > 0.5 && typeof ctx.roundRect === \"function\") {\n ctx.roundRect(cx - half, top, half * 2, height, radius);\n } else {\n ctx.rect(cx - half, top, half * 2, height);\n }\n }\n ctx.fill();\n };\n\n /** One square per occupied cell (the last point of a cell wins, like the GPU) */\n const drawScatterCells = (item: ScatterItem, frame: RenderFrame) => {\n const m = mapper(frame);\n const w = frame.width;\n const h = frame.height;\n const f = new Float32Array(item.instances, 0, item.count * 4);\n const u = new Uint32Array(item.instances, 0, item.count * 4);\n let cell = 0;\n for (let i = 0; i < Math.min(item.count, 64); i++)\n cell = Math.max(cell, f[i * 4 + 2]);\n cell = Math.max(1, Math.round((cell || 2) * frame.dpr * 0.8));\n const cols = Math.ceil(w / cell);\n const rows = Math.ceil(h / cell);\n const owner = new Int32Array(cols * rows).fill(-1);\n for (let i = 0; i < item.count; i++) {\n const x = f[i * 4];\n const y = f[i * 4 + 1];\n if (isGap(x) || isGap(y) || !(f[i * 4 + 2] > 0)) continue;\n const cx = Math.floor(m.px(x) / cell);\n const cy = Math.floor(m.py(y) / cell);\n if (cx < 0 || cy < 0 || cx >= cols || cy >= rows) continue;\n owner[cy * cols + cx] = i;\n }\n const groups = new Map<number, number[]>();\n for (let c = 0; c < owner.length; c++) {\n const i = owner[c];\n if (i < 0) continue;\n const packed = u[i * 4 + 3];\n let list = groups.get(packed);\n if (!list) groups.set(packed, (list = []));\n list.push(c);\n }\n for (const [packed, cells] of groups) {\n ctx.fillStyle = rgba(unpack(packed), Math.max(item.opacity, 0.6));\n for (const c of cells) {\n ctx.fillRect(\n (c % cols) * cell,\n Math.floor(c / cols) * cell,\n cell,\n cell,\n );\n }\n }\n };\n\n const drawScatterPixels = (item: ScatterItem, frame: RenderFrame) => {\n const m = mapper(frame);\n const w = frame.width;\n const h = frame.height;\n scratch ??= scratchCanvas?.() ?? null;\n if (!scratch) {\n drawScatterCells(item, frame);\n return;\n }\n scratch.width = w;\n scratch.height = h;\n const sctx = scratch.getContext(\"2d\");\n if (!sctx) return;\n const image = sctx.createImageData(w, h);\n const data = image.data;\n const f = new Float32Array(item.instances, 0, item.count * 4);\n const u = new Uint32Array(item.instances, 0, item.count * 4);\n for (let i = 0; i < item.count; i++) {\n const x = f[i * 4];\n const y = f[i * 4 + 1];\n const size = f[i * 4 + 2];\n if (isGap(x) || isGap(y) || !(size > 0)) continue;\n const cx = m.px(x);\n const cy = m.py(y);\n const s = Math.max(1, Math.round(size * frame.dpr * 0.8));\n const x0 = Math.round(cx - s / 2);\n const y0 = Math.round(cy - s / 2);\n const packed = u[i * 4 + 3];\n const alpha =\n (((packed >>> 24) & 0xff) / 255) * Math.max(item.opacity, 0.6);\n const r = packed & 0xff;\n const g = (packed >>> 8) & 0xff;\n const b = (packed >>> 16) & 0xff;\n for (let py = Math.max(0, y0); py < Math.min(h, y0 + s); py++) {\n for (let px = Math.max(0, x0); px < Math.min(w, x0 + s); px++) {\n const o = (py * w + px) * 4;\n const da = data[o + 3] / 255;\n const outA = alpha + da * (1 - alpha);\n // straight-alpha \"over\"\n data[o] = (r * alpha + data[o] * da * (1 - alpha)) / outA;\n data[o + 1] = (g * alpha + data[o + 1] * da * (1 - alpha)) / outA;\n data[o + 2] = (b * alpha + data[o + 2] * da * (1 - alpha)) / outA;\n data[o + 3] = outA * 255;\n }\n }\n }\n sctx.putImageData(image, 0, 0);\n ctx.drawImage(scratch, 0, 0);\n };\n\n const drawScatter = (item: ScatterItem, frame: RenderFrame) => {\n if (item.count > SCATTER_PIXEL_THRESHOLD) {\n drawScatterPixels(item, frame);\n return;\n }\n const m = mapper(frame);\n const f = new Float32Array(item.instances, 0, item.count * 4);\n const u = new Uint32Array(item.instances, 0, item.count * 4);\n const groups = new Map<number, number[]>();\n for (let i = 0; i < item.count; i++) {\n const packed = u[i * 4 + 3];\n let list = groups.get(packed);\n if (!list) groups.set(packed, (list = []));\n list.push(i);\n }\n const stroke = item.stroke * frame.dpr;\n for (const [packed, list] of groups) {\n const color = unpack(packed);\n ctx.beginPath();\n for (const i of list) {\n const x = f[i * 4];\n const y = f[i * 4 + 1];\n const size = f[i * 4 + 2];\n if (isGap(x) || isGap(y) || !(size > 0)) continue;\n const cx = m.px(x);\n const cy = m.py(y);\n const r = (size * frame.dpr) / 2;\n ctx.moveTo(cx + r, cy);\n ctx.arc(cx, cy, r, 0, Math.PI * 2);\n }\n ctx.fillStyle = rgba(color, item.opacity);\n ctx.fill();\n if (stroke > 0) {\n ctx.beginPath();\n for (const i of list) {\n const x = f[i * 4];\n const y = f[i * 4 + 1];\n const size = f[i * 4 + 2];\n if (isGap(x) || isGap(y) || !(size > 0)) continue;\n const r = Math.max(0, (size * frame.dpr) / 2 - stroke / 2);\n const cx = m.px(x);\n const cy = m.py(y);\n ctx.moveTo(cx + r, cy);\n ctx.arc(cx, cy, r, 0, Math.PI * 2);\n }\n ctx.lineWidth = stroke;\n ctx.strokeStyle = rgba(color, 1);\n ctx.stroke();\n }\n }\n };\n\n return {\n paint(items, frame, left = 0, top = 0) {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, left, top);\n ctx.beginPath();\n ctx.rect(0, 0, frame.width, frame.height);\n ctx.clip();\n for (const item of items) {\n switch (item.kind) {\n case \"line\":\n if (item.count > 1) drawLine(item, frame);\n break;\n case \"area\":\n if (item.count > 1) drawArea(item, frame);\n break;\n case \"bar\":\n drawBars(item, frame);\n break;\n default:\n drawScatter(item, frame);\n break;\n }\n }\n ctx.restore();\n },\n destroy() {\n scratch = null;\n },\n };\n};\n\nexport const createCanvas2dRenderer = (\n canvas: HTMLCanvasElement,\n): ChartRenderer | null => {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return null;\n const painter = createCanvas2dPainter(ctx, () =>\n typeof document === \"undefined\" ? null : document.createElement(\"canvas\"),\n );\n return {\n kind: \"canvas2d\",\n canvas,\n resize(width, height) {\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n },\n render(items, frame) {\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n painter.paint(items, frame);\n },\n destroy() {\n painter.destroy();\n canvas.width = 0;\n canvas.height = 0;\n },\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canvas2d.cjs","names":["decimateMinMax","GAP","unpack","require_color","require_types","require_decimate","SCATTER_PIXEL_THRESHOLD","rgba","c","alpha","isGap","v","lowerBoundX","lo","hi","count","mid","points","stride","value","decimateArea","out","end","start","length","push","i","col","first","min","max","last","flush","picks","a","b","prev","y","column","createCanvas2dPainter","scratch","mapper","frame","w","h","x","xScale","xOffset","yScale","yOffset","visiblePoints","item","m","x0","x1","result","drawLine","ctx","pen","drawArea","gradient","runStart","close","k","drawBars","dpr","minHalf","rawHalf","r","u","pad","groups","packed","list","rounded","cx","rawHh","fade","inset","half","hh","cy","radius","drawScatterCells","f","cell","cols","rows","owner","cells","drawScatterPixels","scratchCanvas","sctx","image","data","size","s","y0","g","py","px","o","da","outA","drawScatter","stroke","color","left","top","items","createCanvas2dRenderer","canvas","painter","width","height"],"sources":["../../../../../charts/src/engine/renderers/canvas2d.ts"],"sourcesContent":["// Canvas2D backend: the fallback without GPU. Lines are decimated to a few\n// points per pixel column and very large scatter sets are written pixel by\n// pixel, so it stays usable with large data sets.\n\nimport { decimateMinMax } from \"../decimate\";\nimport { unpackColor as unpack, type Rgba } from \"../color\";\nimport {\n AREA_STRIDE,\n GAP,\n type AreaItem,\n type BarItem,\n type ChartRenderer,\n type RenderFrame,\n type RenderItem,\n type ScatterItem,\n} from \"./types\";\n\n/** Scatter sets above this size are rasterized through ImageData */\nexport const SCATTER_PIXEL_THRESHOLD = 20000;\n\nconst rgba = (c: Rgba, alpha: number) =>\n `rgba(${Math.round(c[0] * 255)},${Math.round(c[1] * 255)},${Math.round(c[2] * 255)},${c[3] * alpha})`;\n\nconst isGap = (v: number) => !Number.isFinite(v) || Math.abs(v) >= GAP * 0.5;\n\n/** First point index whose relative x is >= value (sorted, interleaved) */\nconst lowerBoundX = (\n points: Float32Array,\n count: number,\n value: number,\n stride = 2,\n) => {\n let lo = 0;\n let hi = count;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (points[mid * stride] < value) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n};\n\n/**\n * Min-max decimation of area points (x, top, bottom): per pixel column the\n * first, lowest, highest and last tops are kept with their bottoms\n */\nconst decimateArea = (\n points: Float32Array,\n start: number,\n end: number,\n column: (x: number) => number,\n): { points: Float64Array; length: number } => {\n const out = new Float64Array(Math.max(0, end - start) * AREA_STRIDE);\n let length = 0;\n const push = (i: number) => {\n out[length * 3] = points[i * 3];\n out[length * 3 + 1] = points[i * 3 + 1];\n out[length * 3 + 2] = points[i * 3 + 2];\n length++;\n };\n let col = NaN;\n let first = -1;\n let min = -1;\n let max = -1;\n let last = -1;\n const flush = () => {\n if (first < 0) return;\n const picks = [first, min, max, last].sort((a, b) => a - b);\n let prev = -1;\n for (const i of picks) {\n if (i !== prev) push(i);\n prev = i;\n }\n first = -1;\n };\n for (let i = start; i < end; i++) {\n const y = points[i * 3 + 1];\n if (isGap(points[i * 3]) || isGap(y) || isGap(points[i * 3 + 2])) {\n flush();\n col = NaN;\n push(i);\n continue;\n }\n const c = Math.floor(column(points[i * 3]));\n if (c !== col || first < 0) {\n flush();\n col = c;\n first = min = max = last = i;\n } else {\n if (y < points[min * 3 + 1]) min = i;\n if (y > points[max * 3 + 1]) max = i;\n last = i;\n }\n }\n flush();\n return { points: out, length };\n};\n\nexport interface Canvas2dPainter {\n /**\n * Draws the items in a `frame.width` x `frame.height` device-pixel area\n * whose top-left corner is at (`left`, `top`) device pixels; nothing is\n * cleared\n */\n paint(\n items: readonly RenderItem[],\n frame: RenderFrame,\n left?: number,\n top?: number,\n ): void;\n destroy(): void;\n}\n\n/**\n * Data layer drawn with any 2D context (browser canvases, mini-program\n * canvases, OffscreenCanvas). `scratchCanvas` creates the canvas used to\n * rasterize very large scatter sets; without it they are drawn as one\n * square per occupied pixel cell.\n */\nexport const createCanvas2dPainter = (\n ctx: CanvasRenderingContext2D,\n scratchCanvas?: () => HTMLCanvasElement | null,\n): Canvas2dPainter => {\n let scratch: HTMLCanvasElement | null = null;\n\n const mapper = (frame: RenderFrame) => {\n const { xScale, xOffset, yScale, yOffset } = frame.transform;\n const w = frame.width;\n const h = frame.height;\n return {\n px: (x: number) => ((x * xScale + xOffset) * 0.5 + 0.5) * w,\n py: (y: number) => (1 - ((y * yScale + yOffset) * 0.5 + 0.5)) * h,\n /** Visible relative x range */\n xRange: (): [number, number] => {\n const a = (-1 - xOffset) / xScale;\n const b = (1 - xOffset) / xScale;\n return a < b ? [a, b] : [b, a];\n },\n };\n };\n\n /** Points actually drawn: decimated when there are many per pixel */\n const visiblePoints = (\n item: Extract<RenderItem, { kind: \"line\" }>,\n frame: RenderFrame,\n ): { points: ArrayLike<number>; length: number } => {\n if (!item.sorted || item.count <= frame.width * 2) {\n return { points: item.points, length: item.count };\n }\n const m = mapper(frame);\n const [x0, x1] = m.xRange();\n const start = Math.max(0, lowerBoundX(item.points, item.count, x0) - 1);\n const end = Math.min(\n item.count,\n lowerBoundX(item.points, item.count, x1) + 1,\n );\n const result = decimateMinMax(item.points, start, end, m.px, GAP * 0.5);\n return { points: result.points, length: result.length };\n };\n\n const drawLine = (\n item: Extract<RenderItem, { kind: \"line\" }>,\n frame: RenderFrame,\n ) => {\n const m = mapper(frame);\n const { points, length } = visiblePoints(item, frame);\n ctx.beginPath();\n let pen = false;\n for (let i = 0; i < length; i++) {\n const x = points[i * 2];\n const y = points[i * 2 + 1];\n if (isGap(x) || isGap(y)) {\n pen = false;\n continue;\n }\n if (pen) ctx.lineTo(m.px(x), m.py(y));\n else ctx.moveTo(m.px(x), m.py(y));\n pen = true;\n }\n ctx.lineWidth = item.width * frame.dpr;\n ctx.lineJoin = \"round\";\n ctx.lineCap = \"round\";\n ctx.strokeStyle = rgba(item.color, 1);\n ctx.stroke();\n };\n\n const drawArea = (item: AreaItem, frame: RenderFrame) => {\n const m = mapper(frame);\n let points: ArrayLike<number> = item.points;\n let length = item.count;\n if (item.sorted && item.count > frame.width * 2) {\n const [x0, x1] = m.xRange();\n const start = Math.max(\n 0,\n lowerBoundX(item.points, item.count, x0, AREA_STRIDE) - 1,\n );\n const end = Math.min(\n item.count,\n lowerBoundX(item.points, item.count, x1, AREA_STRIDE) + 1,\n );\n ({ points, length } = decimateArea(item.points, start, end, m.px));\n }\n const gradient = ctx.createLinearGradient(0, 0, 0, frame.height);\n gradient.addColorStop(0, rgba(item.color, item.opacity));\n gradient.addColorStop(1, rgba(item.color, item.opacity * 0.25));\n ctx.fillStyle = gradient;\n ctx.beginPath();\n // each run without gaps: along the tops, back along the bottoms\n let runStart = -1;\n const close = (end: number) => {\n if (runStart < 0) return;\n for (let k = end - 1; k >= runStart; k--) {\n ctx.lineTo(m.px(points[k * 3]), m.py(points[k * 3 + 2]));\n }\n ctx.closePath();\n runStart = -1;\n };\n for (let i = 0; i < length; i++) {\n const x = points[i * 3];\n const y = points[i * 3 + 1];\n if (isGap(x) || isGap(y) || isGap(points[i * 3 + 2])) {\n close(i);\n continue;\n }\n if (runStart < 0) {\n runStart = i;\n ctx.moveTo(m.px(x), m.py(y));\n } else {\n ctx.lineTo(m.px(x), m.py(y));\n }\n }\n close(length);\n ctx.fill();\n };\n\n const drawBars = (item: BarItem, frame: RenderFrame) => {\n const m = mapper(frame);\n const dpr = frame.dpr;\n const minHalf = item.minHalf * dpr;\n const rawHalf =\n Math.abs(item.halfWidth * frame.transform.xScale) * 0.5 * frame.width;\n const r = item.radius * dpr;\n const f = new Float32Array(item.instances, 0, item.count * 4);\n const u = new Uint32Array(item.instances, 0, item.count * 4);\n const [x0, x1] = m.xRange();\n const pad = Math.abs(item.halfWidth);\n // one path per color\n const groups = new Map<number, number[]>();\n for (let i = 0; i < item.count; i++) {\n const x = f[i * 4];\n if (isGap(x) || isGap(f[i * 4 + 1]) || isGap(f[i * 4 + 2])) continue;\n if (x < x0 - pad || x > x1 + pad) continue;\n const packed = u[i * 4 + 3];\n let list = groups.get(packed);\n if (!list) groups.set(packed, (list = []));\n list.push(i);\n }\n const rounded = typeof ctx.roundRect === \"function\";\n for (const [packed, list] of groups) {\n ctx.fillStyle = rgba(unpack(packed), 1);\n ctx.beginPath();\n for (const i of list) {\n const cx = m.px(f[i * 4]);\n const a = m.py(f[i * 4 + 1]);\n const b = m.py(f[i * 4 + 2]);\n const rawHh = Math.abs(a - b) / 2;\n // the gap between cells fades out on small cells (like the shaders)\n const fade = Math.min(\n 1,\n Math.max(0, (Math.min(rawHalf, rawHh) - 3 * dpr) / (2 * dpr)),\n );\n const inset =\n item.inset * dpr * fade - (item.inset > 0 ? 0.5 * (1 - fade) : 0);\n const half = Math.max(rawHalf - inset, 0.5, minHalf);\n const hh = Math.max(rawHh - inset, minHalf);\n if (hh <= 0) continue;\n const cy = (a + b) / 2;\n const radius = Math.min(r, half, hh);\n if (radius > 0.5 && rounded) {\n ctx.roundRect(cx - half, cy - hh, half * 2, hh * 2, radius);\n } else {\n ctx.rect(cx - half, cy - hh, half * 2, hh * 2);\n }\n }\n ctx.fill();\n }\n };\n\n /** One square per occupied cell (the last point of a cell wins, like the GPU) */\n const drawScatterCells = (item: ScatterItem, frame: RenderFrame) => {\n const m = mapper(frame);\n const w = frame.width;\n const h = frame.height;\n const f = new Float32Array(item.instances, 0, item.count * 4);\n const u = new Uint32Array(item.instances, 0, item.count * 4);\n let cell = 0;\n for (let i = 0; i < Math.min(item.count, 64); i++)\n cell = Math.max(cell, f[i * 4 + 2]);\n cell = Math.max(1, Math.round((cell || 2) * frame.dpr * 0.8));\n const cols = Math.ceil(w / cell);\n const rows = Math.ceil(h / cell);\n const owner = new Int32Array(cols * rows).fill(-1);\n for (let i = 0; i < item.count; i++) {\n const x = f[i * 4];\n const y = f[i * 4 + 1];\n if (isGap(x) || isGap(y) || !(f[i * 4 + 2] > 0)) continue;\n const cx = Math.floor(m.px(x) / cell);\n const cy = Math.floor(m.py(y) / cell);\n if (cx < 0 || cy < 0 || cx >= cols || cy >= rows) continue;\n owner[cy * cols + cx] = i;\n }\n const groups = new Map<number, number[]>();\n for (let c = 0; c < owner.length; c++) {\n const i = owner[c];\n if (i < 0) continue;\n const packed = u[i * 4 + 3];\n let list = groups.get(packed);\n if (!list) groups.set(packed, (list = []));\n list.push(c);\n }\n for (const [packed, cells] of groups) {\n ctx.fillStyle = rgba(unpack(packed), Math.max(item.opacity, 0.6));\n for (const c of cells) {\n ctx.fillRect(\n (c % cols) * cell,\n Math.floor(c / cols) * cell,\n cell,\n cell,\n );\n }\n }\n };\n\n const drawScatterPixels = (item: ScatterItem, frame: RenderFrame) => {\n const m = mapper(frame);\n const w = frame.width;\n const h = frame.height;\n scratch ??= scratchCanvas?.() ?? null;\n if (!scratch) {\n drawScatterCells(item, frame);\n return;\n }\n scratch.width = w;\n scratch.height = h;\n const sctx = scratch.getContext(\"2d\");\n if (!sctx) return;\n const image = sctx.createImageData(w, h);\n const data = image.data;\n const f = new Float32Array(item.instances, 0, item.count * 4);\n const u = new Uint32Array(item.instances, 0, item.count * 4);\n for (let i = 0; i < item.count; i++) {\n const x = f[i * 4];\n const y = f[i * 4 + 1];\n const size = f[i * 4 + 2];\n if (isGap(x) || isGap(y) || !(size > 0)) continue;\n const cx = m.px(x);\n const cy = m.py(y);\n const s = Math.max(1, Math.round(size * frame.dpr * 0.8));\n const x0 = Math.round(cx - s / 2);\n const y0 = Math.round(cy - s / 2);\n const packed = u[i * 4 + 3];\n const alpha =\n (((packed >>> 24) & 0xff) / 255) * Math.max(item.opacity, 0.6);\n const r = packed & 0xff;\n const g = (packed >>> 8) & 0xff;\n const b = (packed >>> 16) & 0xff;\n for (let py = Math.max(0, y0); py < Math.min(h, y0 + s); py++) {\n for (let px = Math.max(0, x0); px < Math.min(w, x0 + s); px++) {\n const o = (py * w + px) * 4;\n const da = data[o + 3] / 255;\n const outA = alpha + da * (1 - alpha);\n // straight-alpha \"over\"\n data[o] = (r * alpha + data[o] * da * (1 - alpha)) / outA;\n data[o + 1] = (g * alpha + data[o + 1] * da * (1 - alpha)) / outA;\n data[o + 2] = (b * alpha + data[o + 2] * da * (1 - alpha)) / outA;\n data[o + 3] = outA * 255;\n }\n }\n }\n sctx.putImageData(image, 0, 0);\n ctx.drawImage(scratch, 0, 0);\n };\n\n const drawScatter = (item: ScatterItem, frame: RenderFrame) => {\n if (item.count > SCATTER_PIXEL_THRESHOLD) {\n drawScatterPixels(item, frame);\n return;\n }\n const m = mapper(frame);\n const f = new Float32Array(item.instances, 0, item.count * 4);\n const u = new Uint32Array(item.instances, 0, item.count * 4);\n const groups = new Map<number, number[]>();\n for (let i = 0; i < item.count; i++) {\n const packed = u[i * 4 + 3];\n let list = groups.get(packed);\n if (!list) groups.set(packed, (list = []));\n list.push(i);\n }\n const stroke = item.stroke * frame.dpr;\n for (const [packed, list] of groups) {\n const color = unpack(packed);\n ctx.beginPath();\n for (const i of list) {\n const x = f[i * 4];\n const y = f[i * 4 + 1];\n const size = f[i * 4 + 2];\n if (isGap(x) || isGap(y) || !(size > 0)) continue;\n const cx = m.px(x);\n const cy = m.py(y);\n const r = (size * frame.dpr) / 2;\n ctx.moveTo(cx + r, cy);\n ctx.arc(cx, cy, r, 0, Math.PI * 2);\n }\n ctx.fillStyle = rgba(color, item.opacity);\n ctx.fill();\n if (stroke > 0) {\n ctx.beginPath();\n for (const i of list) {\n const x = f[i * 4];\n const y = f[i * 4 + 1];\n const size = f[i * 4 + 2];\n if (isGap(x) || isGap(y) || !(size > 0)) continue;\n const r = Math.max(0, (size * frame.dpr) / 2 - stroke / 2);\n const cx = m.px(x);\n const cy = m.py(y);\n ctx.moveTo(cx + r, cy);\n ctx.arc(cx, cy, r, 0, Math.PI * 2);\n }\n ctx.lineWidth = stroke;\n ctx.strokeStyle = rgba(color, 1);\n ctx.stroke();\n }\n }\n };\n\n return {\n paint(items, frame, left = 0, top = 0) {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, left, top);\n ctx.beginPath();\n ctx.rect(0, 0, frame.width, frame.height);\n ctx.clip();\n for (const item of items) {\n switch (item.kind) {\n case \"line\":\n if (item.count > 1) drawLine(item, frame);\n break;\n case \"area\":\n if (item.count > 1) drawArea(item, frame);\n break;\n case \"bar\":\n drawBars(item, frame);\n break;\n default:\n drawScatter(item, frame);\n break;\n }\n }\n ctx.restore();\n },\n destroy() {\n scratch = null;\n },\n };\n};\n\nexport const createCanvas2dRenderer = (\n canvas: HTMLCanvasElement,\n): ChartRenderer | null => {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return null;\n const painter = createCanvas2dPainter(ctx, () =>\n typeof document === \"undefined\" ? null : document.createElement(\"canvas\"),\n );\n return {\n kind: \"canvas2d\",\n canvas,\n resize(width, height) {\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n },\n render(items, frame) {\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n painter.paint(items, frame);\n },\n destroy() {\n painter.destroy();\n canvas.width = 0;\n canvas.height = 0;\n },\n };\n};\n"],"mappings":"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"}
|