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":"controller.js","names":["copyView","v","TAP_SLOP","TOUCH_SLOP","DOUBLE_TAP_MS","LEGEND_ROW","createChartController","options","config","themeInput","theme","createTheme","cache","hidden","listeners","model","view","zoomed","width","height","annotations","scene","sceneDirty","lastPlot","destroyed","hover","pointers","gesture","lastTap","emit","type","listener","event","invalidate","interaction","value","o","measure","text","font","size","weight","rebuild","buildModel","clampRange","base","minSpan","sameRange","resolveAnnotations","it","setHover","legendLayout","option","named","s","cfg","position","entries","x","row","w","legendHeight","tooltipLayout","tooltip","custom","result","content","tooltipContent","lines","line","boxW","boxH","left","anchorX","top","anchorY","computeScene","legend","legendTop","layout","layoutChart","labels","collectPointLabels","occupied","labelHeight","a","textBox","x0","x1","y0","y1","right","bottom","pos","pointLabels","placeLabels","t","next","crosshair","showsCrosshair","cx","hoverMarks","dotSize","rect","key","getScene","scales","changed","sameHover","hitAt","sc","hitTest","y","touch","inPlot","p","dataAt","plot","cy","setViewInternal","notify","zoomAt","zoomRange","factor","resetZoom","legendAt","e","toggleSeries","id","startPinch","b","paletteChanged","h","item","i","distance","midX","midY","start","createScales","shift","panRange","at","dx","dy","current","now","hit","set","visibleRange","sorted","count","range","lowerBound","scenePrimitives","maxDots","limits","maxBars","column","order","out","series","end","interleaved","n","decimateMinMax","segments","run","xv","yv","half","rects","merge","lastCol","ya","yb","col","k","dots","colors","colorOf","c","toCss","visible","px","py","cell","cols","owner"],"sources":["../../../../charts/src/engine/controller.ts"],"sourcesContent":["// createChartController: the platform-free chart. It owns the options, the\n// theme, the model, the visible range and the interactions (pointer / touch\n// gestures fed by the host) and describes what to draw (`getScene`). Hosts\n// only draw: createCanvasChart on any 2D context, the React Native charts\n// with views.\n\nimport { toCss } from \"./color\";\nimport { lowerBound } from \"./data\";\nimport { decimateMinMax } from \"./decimate\";\nimport { createScales, type Rect } from \"./layout\";\nimport { buildModel, type ChartModel, type DataCache } from \"./model\";\nimport {\n font,\n placeLabels,\n textBox,\n type PointLabel,\n type ResolvedAnnotation,\n} from \"./overlay\";\nimport {\n collectPointLabels,\n dotSize,\n hitTest,\n hoverMarks,\n layoutChart,\n resolveAnnotations,\n sameHover,\n showsCrosshair,\n tooltipContent,\n type ChartLayout,\n type HoverMark,\n type TooltipContent,\n} from \"./scene\";\nimport { createTheme, type ChartTheme, type ChartThemeInput } from \"./theme\";\nimport type {\n ChartEventMap,\n ChartHoverEvent,\n ChartHoverItem,\n ChartOptions,\n ChartPlotClickEvent,\n ChartRect,\n ChartView,\n} from \"./types\";\nimport {\n clampRange,\n panRange,\n sameRange,\n zoomRange,\n type Range,\n} from \"./viewport\";\n\n/** Events of a controller (no renderer events: hosts draw themselves) */\nexport type ChartControllerEventMap = Omit<ChartEventMap, \"renderer\">;\n\nexport interface ChartControllerConfig {\n options: ChartOptions;\n /** Colors and fonts (Minerva variables); light defaults when omitted */\n theme?: ChartThemeInput;\n /** Width in pixels of `text` drawn with the CSS `font` */\n measureText: (text: string, font: string) => number;\n /** Called when the scene changed and must be drawn again */\n onInvalidate?: () => void;\n}\n\nexport interface ChartLegendEntry {\n id: string;\n name: string;\n /** CSS color */\n color: string;\n shape: \"dot\" | \"line\" | \"square\";\n hidden: boolean;\n /** Hit / draw box of the entry, pixels of the chart */\n box: Rect;\n}\n\nexport interface ChartLegendLayout {\n entries: ChartLegendEntry[];\n position: \"top\" | \"bottom\";\n /** Whether a tap toggles the series */\n toggle: boolean;\n /** Height taken by the legend */\n height: number;\n}\n\nexport interface ChartTooltipLayout {\n /** Default content (`text` is set instead when `tooltip.render` returns a string) */\n content: TooltipContent;\n /** Lines of a custom string tooltip */\n text: string[] | null;\n /** Box of the tooltip, pixels of the chart */\n box: Rect;\n /** Line height used to lay the box out */\n lineHeight: number;\n padding: number;\n}\n\nexport interface ChartHoverLayout {\n event: ChartHoverEvent;\n marks: HoverMark[];\n /** X pixel of the guide line (`null` when hidden) */\n crosshairX: number | null;\n tooltip: ChartTooltipLayout | null;\n}\n\n/** Everything a host draws, in CSS pixels of the chart */\nexport interface ChartScene {\n width: number;\n height: number;\n theme: ChartTheme;\n model: ChartModel;\n view: ChartView;\n layout: ChartLayout;\n annotations: ResolvedAnnotation[];\n /** Labels of the dots that found a free slot */\n pointLabels: { label: PointLabel; box: Rect }[];\n legend: ChartLegendLayout | null;\n hover: ChartHoverLayout | null;\n /** Point being dragged (`interaction.dragPoints`) */\n dragging: { x: number; y: number; color: string; size: number } | null;\n}\n\nexport interface ChartPointerOptions {\n /** Pointer id (touch identifier); 0 by default */\n id?: number;\n /** Touch input: the tooltip follows the finger and stays after a tap */\n touch?: boolean;\n}\n\nexport interface ChartController {\n setOptions(options: ChartOptions): void;\n setTheme(theme: ChartThemeInput | undefined): void;\n /** Size of the chart in CSS pixels */\n setSize(width: number, height: number): void;\n /** What to draw (`null` until the size is known) */\n getScene(): ChartScene | null;\n pointerDown(x: number, y: number, options?: ChartPointerOptions): void;\n pointerMove(x: number, y: number, options?: ChartPointerOptions): void;\n pointerUp(x: number, y: number, options?: ChartPointerOptions): void;\n pointerCancel(options?: ChartPointerOptions): void;\n /** The mouse left the chart */\n pointerLeave(): void;\n /** Zooms around a pixel (factor < 1 zooms in) */\n zoomAt(x: number, y: number, factor: number): void;\n resetZoom(): void;\n getView(): ChartView;\n setView(view: Partial<ChartView>): void;\n /** Shows / hides a series (like a legend click) */\n toggleSeries(id: string): void;\n /** Hides the tooltip */\n clearHover(): void;\n getPlotRect(): ChartRect | null;\n toPixel(x: number, y: number): { x: number; y: number } | null;\n fromPixel(x: number, y: number): { x: number; y: number } | null;\n on<K extends keyof ChartControllerEventMap>(\n type: K,\n listener: (event: ChartControllerEventMap[K]) => void,\n ): () => void;\n destroy(): void;\n}\n\nconst copyView = (v: ChartView): ChartView => ({\n x: [v.x[0], v.x[1]],\n y: [v.y[0], v.y[1]],\n});\n\nconst TAP_SLOP = 6;\nconst TOUCH_SLOP = 10;\nconst DOUBLE_TAP_MS = 320;\nconst LEGEND_ROW = 20;\n\ninterface PointerState {\n x: number;\n y: number;\n startX: number;\n startY: number;\n touch: boolean;\n moved: boolean;\n}\n\nexport const createChartController = (\n config: ChartControllerConfig,\n): ChartController => {\n let options = config.options;\n let themeInput = config.theme;\n let theme = createTheme(themeInput, options.palette);\n const cache: DataCache = new Map();\n const hidden = new Set<string>();\n const listeners: {\n [K in keyof ChartControllerEventMap]?: Set<\n (event: ChartControllerEventMap[K]) => void\n >;\n } = {};\n let model: ChartModel;\n let view: ChartView = { x: [0, 1], y: [0, 1] };\n let zoomed = false;\n let width = 0;\n let height = 0;\n let annotations: ResolvedAnnotation[] = [];\n let scene: ChartScene | null = null;\n let sceneDirty = true;\n let lastPlot = \"\";\n let destroyed = false;\n\n let hover: { event: ChartHoverEvent; x: number; y: number } | null = null;\n const pointers = new Map<number, PointerState>();\n let gesture:\n | { kind: \"pan\"; view: ChartView; x: number; y: number }\n | {\n kind: \"pinch\";\n view: ChartView;\n distance: number;\n midX: number;\n midY: number;\n }\n | { kind: \"point\"; item: ChartHoverItem; x: number; y: number }\n | null = null;\n let lastTap = { time: 0, x: 0, y: 0 };\n\n const emit = <K extends keyof ChartControllerEventMap>(\n type: K,\n event: ChartControllerEventMap[K],\n ) => {\n listeners[type]?.forEach((listener) => listener(event));\n };\n\n const invalidate = () => {\n sceneDirty = true;\n if (!destroyed) config.onInvalidate?.();\n };\n\n const interaction = () => {\n const value = options.interaction;\n if (value === false) return null;\n const o = typeof value === \"object\" ? value : {};\n return {\n pan: o.pan ?? true,\n dragPoints: o.dragPoints ?? false,\n };\n };\n\n const measure = (text: string, size = theme.fontSize, weight = 400) =>\n config.measureText(text, font(theme, size, weight));\n\n const rebuild = () => {\n model = buildModel(options, theme, hidden, cache);\n const { base, minSpan } = model;\n if (!zoomed) {\n view = copyView(base);\n } else {\n view = {\n x: model.zoom.x ? clampRange(view.x, base.x, minSpan.x) : [...base.x],\n y: model.zoom.y ? clampRange(view.y, base.y, minSpan.y) : [...base.y],\n };\n zoomed = !sameRange(view.x, base.x) || !sameRange(view.y, base.y);\n }\n annotations = resolveAnnotations(options.annotations, theme);\n if (hover) {\n const stillThere = hover.event.items.every(\n (it) =>\n model.series[it.seriesIndex] &&\n !model.series[it.seriesIndex].hidden &&\n it.index < model.series[it.seriesIndex].cols.count,\n );\n if (!stillThere) setHover(null);\n }\n invalidate();\n };\n\n // --------------------------------------------------------------- legend\n\n const legendLayout = (): ChartLegendLayout | null => {\n const option = options.legend;\n const named = options.series.filter((s) => s.name).length;\n const show = option === undefined ? named > 1 : !!option;\n if (!show) return null;\n const cfg = typeof option === \"object\" ? option : {};\n const position = cfg.position === \"bottom\" ? \"bottom\" : \"top\";\n const entries: ChartLegendEntry[] = [];\n let x = 4;\n let row = 0;\n for (const s of model.series) {\n const w = 14 + measure(s.name, 12) + 8;\n if (x + w > width - 4 && x > 4) {\n x = 4;\n row++;\n }\n entries.push({\n id: s.id,\n name: s.name,\n color: s.colorCss,\n shape:\n s.type === \"scatter\" ? \"dot\" : s.type === \"line\" ? \"line\" : \"square\",\n hidden: s.hidden,\n box: { x, y: row * LEGEND_ROW, width: w, height: LEGEND_ROW },\n });\n x += w + 10;\n }\n const legendHeight = (row + 1) * LEGEND_ROW + 6;\n if (position === \"bottom\") {\n for (const e of entries) e.box.y += height - legendHeight + 6;\n }\n return {\n entries,\n position,\n toggle: cfg.toggle ?? true,\n height: legendHeight,\n };\n };\n\n // ---------------------------------------------------------------- scene\n\n const tooltipLayout = (\n event: ChartHoverEvent,\n anchorX: number,\n anchorY: number,\n ): ChartTooltipLayout | null => {\n const tooltip = options.tooltip;\n if (tooltip === false) return null;\n const custom = typeof tooltip === \"object\" ? tooltip.render : undefined;\n let text: string[] | null = null;\n if (custom) {\n const result = custom(event);\n if (result === null || result === \"\") return null;\n if (typeof result === \"string\") text = result.split(\"\\n\");\n }\n const content = tooltipContent(model, event, scene?.layout.yTicks ?? null);\n const lineHeight = 18;\n const padding = 8;\n let w = 0;\n let lines: number;\n if (text) {\n for (const line of text) w = Math.max(w, measure(line, 12));\n lines = text.length;\n } else {\n w = measure(content.title, 12, 600) + (content.titleColor ? 14 : 0);\n for (const row of content.rows) {\n w = Math.max(\n w,\n (row.color ? 14 : 0) +\n measure(row.name, 12) +\n 16 +\n measure(row.value, 12, 600),\n );\n }\n lines = 1 + content.rows.length;\n }\n const boxW = Math.ceil(Math.max(w, 96) + padding * 2 + 4);\n const boxH = lines * lineHeight + padding * 2;\n let left = anchorX + 14;\n if (left + boxW > width - 4) left = anchorX - 14 - boxW;\n left = Math.max(4, Math.min(left, width - boxW - 4));\n const top = Math.max(4, Math.min(anchorY - boxH / 2, height - boxH - 4));\n return {\n content,\n text,\n box: { x: left, y: top, width: boxW, height: boxH },\n lineHeight,\n padding,\n };\n };\n\n const computeScene = (): ChartScene | null => {\n if (width <= 0 || height <= 0) return null;\n const legend = legendLayout();\n const legendTop = legend?.position === \"top\" ? legend.height : 0;\n const layout = layoutChart({\n model,\n view,\n theme,\n width,\n height: height - (legend?.height ?? 0),\n padding: options.padding,\n top: legendTop,\n measure: (text) => measure(text),\n });\n const labels = collectPointLabels(model, view, layout.scales);\n const occupied: Rect[] = [];\n const labelHeight = theme.fontSize + 4;\n for (const a of annotations) {\n if (a.type === \"text\" && a.text) {\n occupied.push(\n textBox(\n a,\n layout.scales,\n measure(a.text, theme.fontSize, a.weight),\n labelHeight,\n ),\n );\n continue;\n }\n if (a.type !== \"rect\" || !a.label) continue;\n // keep the dot labels off the area titles (drawForeground does the same)\n const s = layout.scales;\n const x0 = a.x0 === undefined ? layout.plot.x : s.xToPx(a.x0);\n const x1 =\n a.x1 === undefined ? layout.plot.x + layout.plot.width : s.xToPx(a.x1);\n const y0 =\n a.y0 === undefined ? layout.plot.y + layout.plot.height : s.yToPx(a.y0);\n const y1 = a.y1 === undefined ? layout.plot.y : s.yToPx(a.y1);\n const w = measure(a.label, theme.fontSize + 1, 600);\n const left = Math.min(x0, x1);\n const right = Math.max(x0, x1);\n const top = Math.min(y0, y1);\n const bottom = Math.max(y0, y1);\n const pos = a.labelPosition;\n occupied.push({\n x: pos.endsWith(\"left\")\n ? left + 10\n : pos.endsWith(\"right\")\n ? right - 10 - w\n : (left + right - w) / 2,\n y: pos.startsWith(\"top\")\n ? top + 10\n : pos.startsWith(\"bottom\")\n ? bottom - 10 - labelHeight\n : (top + bottom - labelHeight) / 2,\n width: w,\n height: labelHeight,\n });\n }\n const pointLabels = placeLabels(\n labels,\n layout.plot,\n (t) => measure(t),\n labelHeight - 2,\n occupied,\n );\n const next: ChartScene = {\n width,\n height,\n theme,\n model,\n view: copyView(view),\n layout,\n annotations,\n pointLabels,\n legend,\n hover: null,\n dragging: null,\n };\n scene = next;\n if (hover) {\n const crosshair = showsCrosshair(model, hover.event, options.crosshair);\n const cx = layout.scales.xToPx(hover.event.items[0].x);\n next.hover = {\n event: hover.event,\n marks: hoverMarks(model, layout.scales, hover.event),\n crosshairX:\n crosshair &&\n cx >= layout.plot.x &&\n cx <= layout.plot.x + layout.plot.width\n ? cx\n : null,\n tooltip:\n gesture?.kind === \"pan\" || gesture?.kind === \"point\"\n ? null\n : tooltipLayout(hover.event, hover.x, hover.y),\n };\n }\n if (gesture?.kind === \"point\") {\n const s = model.series[gesture.item.seriesIndex];\n next.dragging = {\n x: gesture.x,\n y: gesture.y,\n color: gesture.item.color,\n size: (s ? dotSize(s, gesture.item.index) : 8) + 6,\n };\n }\n const rect = layout.plot;\n const key = `${rect.x},${rect.y},${rect.width},${rect.height}`;\n if (key !== lastPlot) {\n lastPlot = key;\n emit(\"layout\", { ...rect });\n }\n return next;\n };\n\n const getScene = () => {\n if (sceneDirty || !scene) {\n sceneDirty = false;\n scene = computeScene();\n }\n return scene;\n };\n\n // ---------------------------------------------------------- interaction\n\n const scales = () => getScene()?.layout.scales ?? null;\n\n const setHover = (\n next: { event: ChartHoverEvent; x: number; y: number } | null,\n ) => {\n const changed = !sameHover(hover?.event ?? null, next?.event ?? null);\n hover = next;\n invalidate();\n if (changed) emit(\"hover\", next ? next.event : null);\n };\n\n const hitAt = (x: number, y: number, touch: boolean) => {\n const sc = scales();\n return sc\n ? hitTest(model, sc, scene?.layout.xTicks ?? null, x, y, touch ? 8 : 0)\n : null;\n };\n\n const inPlot = (x: number, y: number) => {\n const p = scales()?.plot;\n return (\n !!p && x >= p.x && x <= p.x + p.width && y >= p.y && y <= p.y + p.height\n );\n };\n\n const dataAt = (x: number, y: number) => {\n const sc = scales();\n if (!sc) return null;\n const { plot } = sc;\n const cx = Math.max(plot.x, Math.min(plot.x + plot.width, x));\n const cy = Math.max(plot.y, Math.min(plot.y + plot.height, y));\n return { x: sc.pxToX(cx), y: sc.pxToY(cy) };\n };\n\n const setViewInternal = (next: ChartView, notify: boolean) => {\n const { base, minSpan } = model;\n view = {\n x: clampRange(next.x, base.x, minSpan.x),\n y: clampRange(next.y, base.y, minSpan.y),\n };\n zoomed = !sameRange(view.x, base.x) || !sameRange(view.y, base.y);\n if (notify) emit(\"zoom\", copyView(view));\n invalidate();\n };\n\n const zoomAt = (x: number, y: number, factor: number) => {\n const sc = scales();\n if (!sc || (!model.zoom.x && !model.zoom.y)) return;\n const next = copyView(view);\n if (model.zoom.x) next.x = zoomRange(view.x, sc.pxToX(x), factor);\n if (model.zoom.y) next.y = zoomRange(view.y, sc.pxToY(y), factor);\n setViewInternal(next, true);\n };\n\n const resetZoom = () => {\n if (!zoomed) return;\n setViewInternal(copyView(model.base), true);\n };\n\n const legendAt = (x: number, y: number) =>\n getScene()?.legend?.entries.find(\n (e) =>\n x >= e.box.x &&\n x <= e.box.x + e.box.width &&\n y >= e.box.y &&\n y <= e.box.y + e.box.height,\n ) ?? null;\n\n const toggleSeries = (id: string) => {\n if (hidden.has(id)) hidden.delete(id);\n else hidden.add(id);\n rebuild();\n };\n\n const startPinch = () => {\n const [a, b] = [...pointers.values()];\n gesture = {\n kind: \"pinch\",\n view: copyView(view),\n distance: Math.max(1, Math.hypot(a.x - b.x, a.y - b.y)),\n midX: (a.x + b.x) / 2,\n midY: (a.y + b.y) / 2,\n };\n setHover(null);\n };\n\n const pointerDown = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const touch = !!o.touch;\n pointers.set(id, { x, y, startX: x, startY: y, touch, moved: false });\n const it = interaction();\n if (pointers.size === 2) {\n if (it && (model.zoom.x || model.zoom.y) && gesture?.kind !== \"point\")\n startPinch();\n return;\n }\n if (pointers.size > 2 || !it) {\n if (!it && touch) {\n const event = hitAt(x, y, true);\n setHover(event ? { event, x, y } : null);\n }\n return;\n }\n if (it.dragPoints) {\n const item = hitAt(x, y, touch)?.items.find(\n (i) => model.series[i.seriesIndex].type === \"scatter\",\n );\n if (item) {\n gesture = { kind: \"point\", item, x, y };\n return;\n }\n }\n if (zoomed && it.pan && inPlot(x, y)) {\n gesture = { kind: \"pan\", view: copyView(view), x, y };\n return;\n }\n gesture = null;\n if (touch) {\n const event = hitAt(x, y, true);\n setHover(event ? { event, x, y } : null);\n }\n };\n\n const pointerMove = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const p = pointers.get(id);\n if (p) {\n p.x = x;\n p.y = y;\n if (\n !p.moved &&\n Math.hypot(x - p.startX, y - p.startY) >\n (p.touch ? TOUCH_SLOP : TAP_SLOP)\n )\n p.moved = true;\n }\n if (gesture?.kind === \"pinch\" && pointers.size >= 2) {\n const [a, b] = [...pointers.values()];\n const distance = Math.max(1, Math.hypot(a.x - b.x, a.y - b.y));\n const midX = (a.x + b.x) / 2;\n const midY = (a.y + b.y) / 2;\n const sc = scales();\n if (!sc) return;\n const start = createScales(\n sc.plot,\n gesture.view,\n model.x.reverse,\n model.y.reverse,\n );\n const factor = gesture.distance / distance;\n const next = copyView(gesture.view);\n if (model.zoom.x) {\n next.x = zoomRange(gesture.view.x, start.pxToX(gesture.midX), factor);\n const shift = (midX - gesture.midX) * start.xPerPx * factor;\n next.x = panRange(next.x, model.x.reverse ? shift : -shift);\n }\n if (model.zoom.y) {\n next.y = zoomRange(gesture.view.y, start.pxToY(gesture.midY), factor);\n const shift = (midY - gesture.midY) * start.yPerPx * factor;\n next.y = panRange(next.y, model.y.reverse ? -shift : shift);\n }\n setViewInternal(next, true);\n return;\n }\n if (gesture?.kind === \"point\" && p) {\n if (!p.moved) return;\n gesture.x = x;\n gesture.y = y;\n const at = dataAt(x, y);\n invalidate();\n if (at) emit(\"drag\", { item: gesture.item, x: at.x, y: at.y });\n return;\n }\n if (gesture?.kind === \"pan\" && p) {\n if (!p.moved) return;\n const sc = scales();\n if (!sc) return;\n const dx = x - gesture.x;\n const dy = y - gesture.y;\n const next = copyView(gesture.view);\n if (model.zoom.x)\n next.x = panRange(\n gesture.view.x,\n -dx * sc.xPerPx * (model.x.reverse ? -1 : 1),\n );\n if (model.zoom.y)\n next.y = panRange(\n gesture.view.y,\n dy * sc.yPerPx * (model.y.reverse ? -1 : 1),\n );\n setViewInternal(next, true);\n return;\n }\n if (pointers.size > 1) return;\n // mouse hover, or a finger scrubbing along the data\n if (!p || p.touch || !o.touch) {\n const event = hitAt(x, y, !!p?.touch || !!o.touch);\n if (event || !p?.touch) setHover(event ? { event, x, y } : null);\n }\n };\n\n const pointerUp = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const p = pointers.get(id);\n pointers.delete(id);\n const current = gesture;\n if (current?.kind === \"pinch\") {\n if (pointers.size < 2) gesture = null;\n return;\n }\n gesture = null;\n if (!p) return;\n if (current?.kind === \"point\") {\n if (p.moved) {\n const at = dataAt(x, y);\n invalidate();\n if (at) emit(\"drop\", { item: current.item, x: at.x, y: at.y });\n return;\n }\n } else if (current?.kind === \"pan\" && p.moved) {\n invalidate();\n return;\n }\n if (p.moved) {\n if (p.touch) invalidate();\n return;\n }\n // tap / click\n const now = Date.now();\n if (\n p.touch &&\n now - lastTap.time < DOUBLE_TAP_MS &&\n Math.hypot(x - lastTap.x, y - lastTap.y) < 24 &&\n zoomed\n ) {\n lastTap = { time: 0, x, y };\n resetZoom();\n return;\n }\n lastTap = { time: now, x, y };\n const legend = legendAt(x, y);\n if (legend) {\n if (getScene()?.legend?.toggle) toggleSeries(legend.id);\n return;\n }\n const hit = hitAt(x, y, p.touch);\n if (hit) {\n if (p.touch) setHover({ event: hit, x, y });\n emit(\"click\", hit);\n return;\n }\n if (p.touch) setHover(null);\n if (inPlot(x, y)) {\n const at = dataAt(x, y);\n if (at) emit(\"plotClick\", at as ChartPlotClickEvent);\n }\n };\n\n const pointerCancel = (o: ChartPointerOptions = {}) => {\n pointers.delete(o.id ?? 0);\n if (gesture?.kind === \"point\" || pointers.size < 2) gesture = null;\n invalidate();\n };\n\n model = buildModel(options, theme, hidden, cache);\n rebuild();\n\n return {\n setOptions(next) {\n if (destroyed) return;\n const paletteChanged =\n (next.palette ?? []).join() !== (options.palette ?? []).join();\n options = next;\n if (paletteChanged) theme = createTheme(themeInput, options.palette);\n rebuild();\n },\n setTheme(next) {\n if (destroyed) return;\n themeInput = next;\n theme = createTheme(themeInput, options.palette);\n rebuild();\n },\n setSize(w, h) {\n if (w === width && h === height) return;\n width = Math.max(0, w);\n height = Math.max(0, h);\n invalidate();\n },\n getScene,\n pointerDown,\n pointerMove,\n pointerUp,\n pointerCancel,\n pointerLeave() {\n if (!gesture && hover) setHover(null);\n },\n zoomAt,\n resetZoom,\n getView: () => copyView(view),\n setView(next) {\n if (destroyed) return;\n setViewInternal({ x: next.x ?? view.x, y: next.y ?? view.y }, false);\n },\n toggleSeries,\n clearHover() {\n if (hover) setHover(null);\n },\n getPlotRect() {\n const p = getScene()?.layout.plot;\n return p ? { ...p } : null;\n },\n toPixel(x, y) {\n const sc = scales();\n return sc ? { x: sc.xToPx(x), y: sc.yToPx(y) } : null;\n },\n fromPixel(x, y) {\n const sc = scales();\n return sc ? { x: sc.pxToX(x), y: sc.pxToY(y) } : null;\n },\n on(type, listener) {\n let set = listeners[type] as Set<typeof listener> | undefined;\n if (!set) {\n set = new Set();\n (listeners as Record<string, unknown>)[type] = set;\n }\n set.add(listener);\n return () => {\n set.delete(listener);\n };\n },\n destroy() {\n destroyed = true;\n pointers.clear();\n for (const key of Object.keys(listeners))\n delete (listeners as Record<string, unknown>)[key];\n },\n };\n};\n\n// ------------------------------------------------------------- primitives\n\n/** A polyline (pixels of the chart): interleaved x, y */\nexport interface ChartLinePrimitive {\n kind: \"line\";\n seriesIndex: number;\n color: string;\n width: number;\n /** Runs of points without gaps */\n segments: number[][];\n}\n\nexport interface ChartAreaPrimitive {\n kind: \"area\";\n seriesIndex: number;\n color: string;\n opacity: number;\n /** Y pixel of the baseline */\n baseline: number;\n segments: number[][];\n}\n\nexport interface ChartBarPrimitive {\n kind: \"bars\";\n seriesIndex: number;\n color: string;\n /** Interleaved x, y, width, height */\n rects: number[];\n}\n\nexport interface ChartDotPrimitive {\n kind: \"dots\";\n seriesIndex: number;\n opacity: number;\n /** Interleaved x, y, diameter */\n dots: number[];\n /** CSS color of every dot */\n colors: string[];\n}\n\nexport type ChartPrimitive =\n | ChartLinePrimitive\n | ChartAreaPrimitive\n | ChartBarPrimitive\n | ChartDotPrimitive;\n\nexport interface ChartPrimitiveOptions {\n /**\n * Upper bound of the dots drawn per series: above it the dots are merged\n * into one per occupied cell of their size\n * @default 4000\n */\n maxDots?: number;\n /**\n * Upper bound of the bars drawn per series: above it neighboring bars\n * sharing a pixel column are merged\n * @default 2000\n */\n maxBars?: number;\n /**\n * Width in pixels of the columns lines are decimated to (at most four\n * points per column); larger values mean fewer shapes\n * @default 1\n */\n columnWidth?: number;\n /** Size of the cells dots are merged into (the dot size by default) */\n dotCell?: number;\n}\n\nconst visibleRange = (\n x: Float64Array,\n count: number,\n sorted: boolean,\n range: Range,\n): [number, number] => {\n if (!sorted) return [0, count];\n const [a, b] = range[0] <= range[1] ? range : [range[1], range[0]];\n return [\n Math.max(0, lowerBound(x, count, a) - 1),\n Math.min(count, lowerBound(x, count, b) + 1),\n ];\n};\n\n/**\n * Data of a scene as simple shapes in pixels of the chart, for hosts\n * without a canvas (React Native views, SVG): lines are decimated to a few\n * points per pixel column and large point sets are merged per cell, so the\n * number of shapes stays bounded by the size of the chart.\n */\nexport const scenePrimitives = (\n scene: ChartScene,\n limits: ChartPrimitiveOptions = {},\n): ChartPrimitive[] => {\n const { model, view, layout } = scene;\n const sc = layout.scales;\n const { plot } = layout;\n const maxDots = limits.maxDots ?? 4000;\n const maxBars = limits.maxBars ?? 2000;\n const column = Math.max(1, limits.columnWidth ?? 1);\n const order = { area: 0, bar: 1, line: 2, scatter: 3 } as const;\n const out: ChartPrimitive[] = [];\n const series = model.series\n .filter((s) => !s.hidden && s.cols.count > 0)\n .sort((a, b) => order[a.type] - order[b.type] || a.index - b.index);\n for (const s of series) {\n const { x, y, count, sorted } = s.cols;\n if (s.type === \"line\" || s.type === \"area\") {\n const [start, end] = visibleRange(x, count, sorted, view.x);\n const interleaved = new Float64Array((end - start) * 2);\n for (let i = start; i < end; i++) {\n interleaved[(i - start) * 2] = x[i];\n interleaved[(i - start) * 2 + 1] = y[i];\n }\n const n = end - start;\n const line =\n sorted && n > (plot.width * 2) / column\n ? decimateMinMax(interleaved, 0, n, (v) => sc.xToPx(v) / column)\n : { points: interleaved, length: n };\n const segments: number[][] = [];\n let run: number[] = [];\n for (let i = 0; i < line.length; i++) {\n const xv = line.points[i * 2];\n const yv = line.points[i * 2 + 1];\n if (!Number.isFinite(xv) || !Number.isFinite(yv)) {\n if (run.length) segments.push(run);\n run = [];\n continue;\n }\n run.push(sc.xToPx(xv), sc.yToPx(yv));\n }\n if (run.length) segments.push(run);\n if (s.type === \"area\") {\n out.push({\n kind: \"area\",\n seriesIndex: s.index,\n color: s.colorCss,\n opacity: s.opacity,\n baseline: sc.yToPx(model.baseline),\n segments,\n });\n }\n out.push({\n kind: \"line\",\n seriesIndex: s.index,\n color: s.colorCss,\n width: s.type === \"area\" ? Math.min(s.lineWidth, 2) : s.lineWidth,\n segments,\n });\n continue;\n }\n if (s.type === \"bar\" && s.barBase && s.barTop) {\n const [start, end] = visibleRange(x, count, sorted, view.x);\n const half = Math.max(s.barHalfWidth / sc.xPerPx, 0.5);\n const rects: number[] = [];\n const merge = end - start > maxBars;\n let lastCol = NaN;\n for (let i = start; i < end; i++) {\n const a = s.barBase[i];\n const b = s.barTop[i];\n if (!Number.isFinite(a) || !Number.isFinite(b)) continue;\n const cx = sc.xToPx(x[i] + s.barOffset);\n if (cx + half < plot.x || cx - half > plot.x + plot.width) continue;\n const ya = sc.yToPx(a);\n const yb = sc.yToPx(b);\n const top = Math.min(ya, yb);\n const h = Math.max(1, Math.abs(ya - yb));\n const col = Math.floor(cx);\n if (merge && col === lastCol && rects.length) {\n // widen the previous bar of the same pixel column vertically\n const k = rects.length - 4;\n const bottom = Math.max(rects[k + 1] + rects[k + 3], top + h);\n rects[k + 1] = Math.min(rects[k + 1], top);\n rects[k + 3] = bottom - rects[k + 1];\n continue;\n }\n lastCol = col;\n rects.push(cx - half, top, half * 2, h);\n }\n out.push({\n kind: \"bars\",\n seriesIndex: s.index,\n color: s.colorCss,\n rects,\n });\n continue;\n }\n // scatter\n const dots: number[] = [];\n const colors: string[] = [];\n const colorOf = (i: number) => {\n const c = s.pointColors?.[i];\n return c ? toCss(c) : s.colorCss;\n };\n const visible: number[] = [];\n for (let i = 0; i < count; i++) {\n const xv = x[i];\n const yv = y[i];\n if (!Number.isFinite(xv) || !Number.isFinite(yv)) continue;\n const px = sc.xToPx(xv);\n const py = sc.yToPx(yv);\n if (\n px < plot.x ||\n px > plot.x + plot.width ||\n py < plot.y ||\n py > plot.y + plot.height\n )\n continue;\n visible.push(i);\n }\n if (visible.length > maxDots) {\n const cell = Math.max(2, limits.dotCell ?? s.pointSize * 0.8);\n const cols = Math.ceil(plot.width / cell) + 1;\n const owner = new Map<number, number>();\n for (const i of visible) {\n const cx = Math.floor((sc.xToPx(x[i]) - plot.x) / cell);\n const cy = Math.floor((sc.yToPx(y[i]) - plot.y) / cell);\n owner.set(cy * cols + cx, i);\n }\n for (const [key, i] of owner) {\n dots.push(\n plot.x + ((key % cols) + 0.5) * cell,\n plot.y + (Math.floor(key / cols) + 0.5) * cell,\n cell,\n );\n colors.push(colorOf(i));\n }\n } else {\n for (const i of visible) {\n dots.push(sc.xToPx(x[i]), sc.yToPx(y[i]), dotSize(s, i));\n colors.push(colorOf(i));\n }\n }\n out.push({\n kind: \"dots\",\n seriesIndex: s.index,\n opacity: s.opacity,\n dots,\n colors,\n });\n }\n return out;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"controller.js","names":["copyView","v","TAP_SLOP","TOUCH_SLOP","DOUBLE_TAP_MS","LEGEND_ROW","createChartController","options","config","themeInput","theme","createTheme","cache","hidden","listeners","model","view","zoomed","width","height","annotations","scene","sceneDirty","lastPlot","destroyed","hover","pointers","gesture","lastTap","emit","type","listener","event","invalidate","interaction","value","o","measure","text","font","size","weight","rebuild","buildModel","clampRange","base","minSpan","sameRange","resolveAnnotations","it","setHover","legendLayout","option","named","s","cfg","position","entries","x","row","w","legendShape","legendHeight","tooltipLayout","tooltip","custom","result","content","tooltipContent","lines","line","boxW","boxH","left","anchorX","top","anchorY","computeScene","legend","legendTop","layout","layoutChart","labels","collectPointLabels","occupied","labelHeight","a","textBox","r","rectOf","pos","pointLabels","placeLabels","t","next","guide","crosshairAt","horizontal","hoverMarks","dotSize","rect","key","getScene","scales","changed","sameHover","hitAt","sc","hitTest","y","touch","inPlot","p","dataAt","cx","plot","cy","toData","setViewInternal","notify","zoomAt","at","zoomRange","factor","resetZoom","legendAt","e","toggleSeries","id","startPinch","b","paletteChanged","h","item","i","distance","midX","midY","start","createScales","from","to","panRange","current","now","hit","toScreen","set","visibleRange","sorted","count","range","lowerBound","ORDER","toRects","along","out","k","scenePrimitives","maxDots","limits","maxBars","column","xLo","xHi","series","end","curved","curvePoints","bottom","n","points","bottoms","d","decimateMinMax","nextBottom","j","xv","band","segments","bottomSegments","lowerSegments","run","runBottom","runLower","flush","yv","bv","q","half","rects","colors","merge","lastCol","ya","yb","col","pc","toCss","boxPrimitives","up","down","wicks","bodies","wickColors","bodyColors","step","c","open","color","hi","high","lo","low","hw","hh","inset","screenRect","unpackColor","dots","colorOf","visible","screen","cell","cols","owner","lw","boxes","boxColors","lineColors","dotColors","vertical","across","thick","m","q1","q3","before","outliers","prims"],"sources":["../../../../charts/src/engine/controller.ts"],"sourcesContent":["// createChartController: the platform-free chart. It owns the options, the\n// theme, the model, the visible range and the interactions (pointer / touch\n// gestures fed by the host) and describes what to draw (`getScene`). Hosts\n// only draw: createCanvasChart on any 2D context, the React Native charts\n// with views.\n\nimport { toCss, unpackColor } from \"./color\";\nimport { curvePoints } from \"./curve\";\nimport { lowerBound } from \"./data\";\nimport { decimateMinMax } from \"./decimate\";\nimport {\n createScales,\n screenRect,\n toData,\n toScreen,\n type Rect,\n type Scales,\n} from \"./layout\";\nimport {\n buildModel,\n type ChartModel,\n type DataCache,\n type SeriesModel,\n} from \"./model\";\nimport {\n font,\n placeLabels,\n rectOf,\n textBox,\n type PointLabel,\n type ResolvedAnnotation,\n} from \"./overlay\";\nimport {\n collectPointLabels,\n crosshairAt,\n dotSize,\n hitTest,\n hoverMarks,\n layoutChart,\n legendShape,\n resolveAnnotations,\n sameHover,\n tooltipContent,\n type ChartLayout,\n type HoverMark,\n type TooltipContent,\n} from \"./scene\";\nimport { createTheme, type ChartTheme, type ChartThemeInput } from \"./theme\";\nimport type {\n ChartEventMap,\n ChartHoverEvent,\n ChartHoverItem,\n ChartOptions,\n ChartPlotClickEvent,\n ChartRect,\n ChartView,\n} from \"./types\";\nimport {\n clampRange,\n panRange,\n sameRange,\n zoomRange,\n type Range,\n} from \"./viewport\";\n\n/** Events of a controller (no renderer events: hosts draw themselves) */\nexport type ChartControllerEventMap = Omit<ChartEventMap, \"renderer\">;\n\nexport interface ChartControllerConfig {\n options: ChartOptions;\n /** Colors and fonts (Minerva variables); light defaults when omitted */\n theme?: ChartThemeInput;\n /** Width in pixels of `text` drawn with the CSS `font` */\n measureText: (text: string, font: string) => number;\n /** Called when the scene changed and must be drawn again */\n onInvalidate?: () => void;\n}\n\nexport interface ChartLegendEntry {\n id: string;\n name: string;\n /** CSS color */\n color: string;\n shape: \"dot\" | \"line\" | \"square\";\n hidden: boolean;\n /** Hit / draw box of the entry, pixels of the chart */\n box: Rect;\n}\n\nexport interface ChartLegendLayout {\n entries: ChartLegendEntry[];\n position: \"top\" | \"bottom\";\n /** Whether a tap toggles the series */\n toggle: boolean;\n /** Height taken by the legend */\n height: number;\n}\n\nexport interface ChartTooltipLayout {\n /** Default content (`text` is set instead when `tooltip.render` returns a string) */\n content: TooltipContent;\n /** Lines of a custom string tooltip */\n text: string[] | null;\n /** Box of the tooltip, pixels of the chart */\n box: Rect;\n /** Line height used to lay the box out */\n lineHeight: number;\n padding: number;\n}\n\nexport interface ChartHoverLayout {\n event: ChartHoverEvent;\n marks: HoverMark[];\n /** X pixel of the vertical guide line (`null` when hidden) */\n crosshairX: number | null;\n /** Y pixel of the horizontal guide line of horizontal charts (`null` when hidden) */\n crosshairY: number | null;\n tooltip: ChartTooltipLayout | null;\n}\n\n/** Everything a host draws, in CSS pixels of the chart */\nexport interface ChartScene {\n width: number;\n height: number;\n theme: ChartTheme;\n model: ChartModel;\n view: ChartView;\n layout: ChartLayout;\n annotations: ResolvedAnnotation[];\n /** Labels of the dots that found a free slot */\n pointLabels: { label: PointLabel; box: Rect }[];\n legend: ChartLegendLayout | null;\n hover: ChartHoverLayout | null;\n /** Point being dragged (`interaction.dragPoints`) */\n dragging: { x: number; y: number; color: string; size: number } | null;\n}\n\nexport interface ChartPointerOptions {\n /** Pointer id (touch identifier); 0 by default */\n id?: number;\n /** Touch input: the tooltip follows the finger and stays after a tap */\n touch?: boolean;\n}\n\nexport interface ChartController {\n setOptions(options: ChartOptions): void;\n setTheme(theme: ChartThemeInput | undefined): void;\n /** Size of the chart in CSS pixels */\n setSize(width: number, height: number): void;\n /** What to draw (`null` until the size is known) */\n getScene(): ChartScene | null;\n pointerDown(x: number, y: number, options?: ChartPointerOptions): void;\n pointerMove(x: number, y: number, options?: ChartPointerOptions): void;\n pointerUp(x: number, y: number, options?: ChartPointerOptions): void;\n pointerCancel(options?: ChartPointerOptions): void;\n /** The mouse left the chart */\n pointerLeave(): void;\n /** Zooms around a pixel (factor < 1 zooms in) */\n zoomAt(x: number, y: number, factor: number): void;\n resetZoom(): void;\n getView(): ChartView;\n setView(view: Partial<ChartView>): void;\n /** Shows / hides a series (like a legend click) */\n toggleSeries(id: string): void;\n /** Hides the tooltip */\n clearHover(): void;\n getPlotRect(): ChartRect | null;\n toPixel(x: number, y: number): { x: number; y: number } | null;\n fromPixel(x: number, y: number): { x: number; y: number } | null;\n on<K extends keyof ChartControllerEventMap>(\n type: K,\n listener: (event: ChartControllerEventMap[K]) => void,\n ): () => void;\n destroy(): void;\n}\n\nconst copyView = (v: ChartView): ChartView => ({\n x: [v.x[0], v.x[1]],\n y: [v.y[0], v.y[1]],\n});\n\nconst TAP_SLOP = 6;\nconst TOUCH_SLOP = 10;\nconst DOUBLE_TAP_MS = 320;\nconst LEGEND_ROW = 20;\n\ninterface PointerState {\n x: number;\n y: number;\n startX: number;\n startY: number;\n touch: boolean;\n moved: boolean;\n}\n\nexport const createChartController = (\n config: ChartControllerConfig,\n): ChartController => {\n let options = config.options;\n let themeInput = config.theme;\n let theme = createTheme(themeInput, options.palette);\n const cache: DataCache = new Map();\n const hidden = new Set<string>();\n const listeners: {\n [K in keyof ChartControllerEventMap]?: Set<\n (event: ChartControllerEventMap[K]) => void\n >;\n } = {};\n let model: ChartModel;\n let view: ChartView = { x: [0, 1], y: [0, 1] };\n let zoomed = false;\n let width = 0;\n let height = 0;\n let annotations: ResolvedAnnotation[] = [];\n let scene: ChartScene | null = null;\n let sceneDirty = true;\n let lastPlot = \"\";\n let destroyed = false;\n\n let hover: { event: ChartHoverEvent; x: number; y: number } | null = null;\n const pointers = new Map<number, PointerState>();\n let gesture:\n | { kind: \"pan\"; view: ChartView; x: number; y: number }\n | {\n kind: \"pinch\";\n view: ChartView;\n distance: number;\n midX: number;\n midY: number;\n }\n | { kind: \"point\"; item: ChartHoverItem; x: number; y: number }\n | null = null;\n let lastTap = { time: 0, x: 0, y: 0 };\n\n const emit = <K extends keyof ChartControllerEventMap>(\n type: K,\n event: ChartControllerEventMap[K],\n ) => {\n listeners[type]?.forEach((listener) => listener(event));\n };\n\n const invalidate = () => {\n sceneDirty = true;\n if (!destroyed) config.onInvalidate?.();\n };\n\n const interaction = () => {\n const value = options.interaction;\n if (value === false) return null;\n const o = typeof value === \"object\" ? value : {};\n return {\n pan: o.pan ?? true,\n dragPoints: o.dragPoints ?? false,\n };\n };\n\n const measure = (text: string, size = theme.fontSize, weight = 400) =>\n config.measureText(text, font(theme, size, weight));\n\n const rebuild = () => {\n model = buildModel(options, theme, hidden, cache);\n const { base, minSpan } = model;\n if (!zoomed) {\n view = copyView(base);\n } else {\n view = {\n x: model.zoom.x ? clampRange(view.x, base.x, minSpan.x) : [...base.x],\n y: model.zoom.y ? clampRange(view.y, base.y, minSpan.y) : [...base.y],\n };\n zoomed = !sameRange(view.x, base.x) || !sameRange(view.y, base.y);\n }\n annotations = resolveAnnotations(options.annotations, theme);\n if (hover) {\n const stillThere = hover.event.items.every(\n (it) =>\n model.series[it.seriesIndex] &&\n !model.series[it.seriesIndex].hidden &&\n it.index < model.series[it.seriesIndex].cols.count,\n );\n if (!stillThere) setHover(null);\n }\n invalidate();\n };\n\n // --------------------------------------------------------------- legend\n\n const legendLayout = (): ChartLegendLayout | null => {\n const option = options.legend;\n const named = options.series.filter((s) => s.name).length;\n const show = option === undefined ? named > 1 : !!option;\n if (!show) return null;\n const cfg = typeof option === \"object\" ? option : {};\n const position = cfg.position === \"bottom\" ? \"bottom\" : \"top\";\n const entries: ChartLegendEntry[] = [];\n let x = 4;\n let row = 0;\n for (const s of model.series) {\n const w = 14 + measure(s.name, 12) + 8;\n if (x + w > width - 4 && x > 4) {\n x = 4;\n row++;\n }\n entries.push({\n id: s.id,\n name: s.name,\n color: s.colorCss,\n shape: legendShape(s.type),\n hidden: s.hidden,\n box: { x, y: row * LEGEND_ROW, width: w, height: LEGEND_ROW },\n });\n x += w + 10;\n }\n const legendHeight = (row + 1) * LEGEND_ROW + 6;\n if (position === \"bottom\") {\n for (const e of entries) e.box.y += height - legendHeight + 6;\n }\n return {\n entries,\n position,\n toggle: cfg.toggle ?? true,\n height: legendHeight,\n };\n };\n\n // ---------------------------------------------------------------- scene\n\n const tooltipLayout = (\n event: ChartHoverEvent,\n anchorX: number,\n anchorY: number,\n ): ChartTooltipLayout | null => {\n const tooltip = options.tooltip;\n if (tooltip === false) return null;\n const custom = typeof tooltip === \"object\" ? tooltip.render : undefined;\n let text: string[] | null = null;\n if (custom) {\n const result = custom(event);\n if (result === null || result === \"\") return null;\n if (typeof result === \"string\") text = result.split(\"\\n\");\n }\n const content = tooltipContent(\n model,\n event,\n scene?.layout.yTicks ?? null,\n scene?.layout.y2Ticks ?? null,\n );\n const lineHeight = 18;\n const padding = 8;\n let w = 0;\n let lines: number;\n if (text) {\n for (const line of text) w = Math.max(w, measure(line, 12));\n lines = text.length;\n } else {\n w = measure(content.title, 12, 600) + (content.titleColor ? 14 : 0);\n for (const row of content.rows) {\n w = Math.max(\n w,\n (row.color ? 14 : 0) +\n measure(row.name, 12) +\n 16 +\n measure(row.value, 12, 600),\n );\n }\n lines = 1 + content.rows.length;\n }\n const boxW = Math.ceil(Math.max(w, 96) + padding * 2 + 4);\n const boxH = lines * lineHeight + padding * 2;\n let left = anchorX + 14;\n if (left + boxW > width - 4) left = anchorX - 14 - boxW;\n left = Math.max(4, Math.min(left, width - boxW - 4));\n const top = Math.max(4, Math.min(anchorY - boxH / 2, height - boxH - 4));\n return {\n content,\n text,\n box: { x: left, y: top, width: boxW, height: boxH },\n lineHeight,\n padding,\n };\n };\n\n const computeScene = (): ChartScene | null => {\n if (width <= 0 || height <= 0) return null;\n const legend = legendLayout();\n const legendTop = legend?.position === \"top\" ? legend.height : 0;\n const layout = layoutChart({\n model,\n view,\n theme,\n width,\n height: height - (legend?.height ?? 0),\n padding: options.padding,\n top: legendTop,\n measure: (text) => measure(text),\n });\n const labels = collectPointLabels(\n model,\n view,\n layout.scales,\n layout.yTicks,\n );\n const occupied: Rect[] = [];\n const labelHeight = theme.fontSize + 4;\n for (const a of annotations) {\n if (a.type === \"text\" && a.text) {\n occupied.push(\n textBox(\n a,\n layout.scales,\n measure(a.text, theme.fontSize, a.weight),\n labelHeight,\n ),\n );\n continue;\n }\n if (a.type !== \"rect\" || !a.label) continue;\n // keep the dot labels off the area titles (drawForeground does the same)\n const r = rectOf(a, layout.scales);\n if (r.width <= 0 || r.height <= 0) continue;\n const w = measure(a.label, theme.fontSize + 1, 600);\n const pos = a.labelPosition;\n occupied.push({\n x: pos.endsWith(\"left\")\n ? r.x + 10\n : pos.endsWith(\"right\")\n ? r.x + r.width - 10 - w\n : r.x + (r.width - w) / 2,\n y: pos.startsWith(\"top\")\n ? r.y + 10\n : pos.startsWith(\"bottom\")\n ? r.y + r.height - 10 - labelHeight\n : r.y + (r.height - labelHeight) / 2,\n width: w,\n height: labelHeight,\n });\n }\n const pointLabels = placeLabels(\n labels,\n layout.plot,\n (t) => measure(t),\n labelHeight - 2,\n occupied,\n );\n const next: ChartScene = {\n width,\n height,\n theme,\n model,\n view: copyView(view),\n layout,\n annotations,\n pointLabels,\n legend,\n hover: null,\n dragging: null,\n };\n scene = next;\n if (hover) {\n const guide = crosshairAt(\n model,\n layout.scales,\n hover.event,\n options.crosshair,\n );\n const horizontal = layout.scales.horizontal;\n next.hover = {\n event: hover.event,\n marks: hoverMarks(model, layout.scales, hover.event),\n crosshairX: horizontal ? null : guide,\n crosshairY: horizontal ? guide : null,\n tooltip:\n gesture?.kind === \"pan\" || gesture?.kind === \"point\"\n ? null\n : tooltipLayout(hover.event, hover.x, hover.y),\n };\n }\n if (gesture?.kind === \"point\") {\n const s = model.series[gesture.item.seriesIndex];\n next.dragging = {\n x: gesture.x,\n y: gesture.y,\n color: gesture.item.color,\n size: (s ? dotSize(s, gesture.item.index) : 8) + 6,\n };\n }\n const rect = layout.plot;\n const key = `${rect.x},${rect.y},${rect.width},${rect.height}`;\n if (key !== lastPlot) {\n lastPlot = key;\n emit(\"layout\", { ...rect });\n }\n return next;\n };\n\n const getScene = () => {\n if (sceneDirty || !scene) {\n sceneDirty = false;\n scene = computeScene();\n }\n return scene;\n };\n\n // ---------------------------------------------------------- interaction\n\n const scales = () => getScene()?.layout.scales ?? null;\n\n const setHover = (\n next: { event: ChartHoverEvent; x: number; y: number } | null,\n ) => {\n const changed = !sameHover(hover?.event ?? null, next?.event ?? null);\n hover = next;\n invalidate();\n if (changed) emit(\"hover\", next ? next.event : null);\n };\n\n const hitAt = (x: number, y: number, touch: boolean) => {\n const sc = scales();\n return sc\n ? hitTest(model, sc, scene?.layout.xTicks ?? null, x, y, touch ? 8 : 0)\n : null;\n };\n\n const inPlot = (x: number, y: number) => {\n const p = scales()?.plot;\n return (\n !!p && x >= p.x && x <= p.x + p.width && y >= p.y && y <= p.y + p.height\n );\n };\n\n const dataAt = (x: number, y: number) => {\n const sc = scales();\n if (!sc) return null;\n const { plot } = sc;\n const cx = Math.max(plot.x, Math.min(plot.x + plot.width, x));\n const cy = Math.max(plot.y, Math.min(plot.y + plot.height, y));\n return toData(sc, cx, cy);\n };\n\n const setViewInternal = (next: ChartView, notify: boolean) => {\n const { base, minSpan } = model;\n view = {\n x: clampRange(next.x, base.x, minSpan.x),\n y: clampRange(next.y, base.y, minSpan.y),\n };\n zoomed = !sameRange(view.x, base.x) || !sameRange(view.y, base.y);\n if (notify) emit(\"zoom\", copyView(view));\n invalidate();\n };\n\n const zoomAt = (x: number, y: number, factor: number) => {\n const sc = scales();\n if (!sc || (!model.zoom.x && !model.zoom.y)) return;\n const next = copyView(view);\n const at = toData(sc, x, y);\n if (model.zoom.x) next.x = zoomRange(view.x, at.x, factor);\n if (model.zoom.y) next.y = zoomRange(view.y, at.y, factor);\n setViewInternal(next, true);\n };\n\n const resetZoom = () => {\n if (!zoomed) return;\n setViewInternal(copyView(model.base), true);\n };\n\n const legendAt = (x: number, y: number) =>\n getScene()?.legend?.entries.find(\n (e) =>\n x >= e.box.x &&\n x <= e.box.x + e.box.width &&\n y >= e.box.y &&\n y <= e.box.y + e.box.height,\n ) ?? null;\n\n const toggleSeries = (id: string) => {\n if (hidden.has(id)) hidden.delete(id);\n else hidden.add(id);\n rebuild();\n };\n\n const startPinch = () => {\n const [a, b] = [...pointers.values()];\n gesture = {\n kind: \"pinch\",\n view: copyView(view),\n distance: Math.max(1, Math.hypot(a.x - b.x, a.y - b.y)),\n midX: (a.x + b.x) / 2,\n midY: (a.y + b.y) / 2,\n };\n setHover(null);\n };\n\n const pointerDown = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const touch = !!o.touch;\n pointers.set(id, { x, y, startX: x, startY: y, touch, moved: false });\n const it = interaction();\n if (pointers.size === 2) {\n if (it && (model.zoom.x || model.zoom.y) && gesture?.kind !== \"point\")\n startPinch();\n return;\n }\n if (pointers.size > 2 || !it) {\n if (!it && touch) {\n const event = hitAt(x, y, true);\n setHover(event ? { event, x, y } : null);\n }\n return;\n }\n if (it.dragPoints) {\n const item = hitAt(x, y, touch)?.items.find(\n (i) => model.series[i.seriesIndex].type === \"scatter\",\n );\n if (item) {\n gesture = { kind: \"point\", item, x, y };\n return;\n }\n }\n if (zoomed && it.pan && inPlot(x, y)) {\n gesture = { kind: \"pan\", view: copyView(view), x, y };\n return;\n }\n gesture = null;\n if (touch) {\n const event = hitAt(x, y, true);\n setHover(event ? { event, x, y } : null);\n }\n };\n\n const pointerMove = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const p = pointers.get(id);\n if (p) {\n p.x = x;\n p.y = y;\n if (\n !p.moved &&\n Math.hypot(x - p.startX, y - p.startY) >\n (p.touch ? TOUCH_SLOP : TAP_SLOP)\n )\n p.moved = true;\n }\n if (gesture?.kind === \"pinch\" && pointers.size >= 2) {\n const [a, b] = [...pointers.values()];\n const distance = Math.max(1, Math.hypot(a.x - b.x, a.y - b.y));\n const midX = (a.x + b.x) / 2;\n const midY = (a.y + b.y) / 2;\n const sc = scales();\n if (!sc) return;\n const start = createScales(\n sc.plot,\n gesture.view,\n model.x.reverse,\n model.y.reverse,\n model.horizontal,\n );\n const factor = gesture.distance / distance;\n const next = copyView(gesture.view);\n const from = toData(start, gesture.midX, gesture.midY);\n const to = toData(start, midX, midY);\n // the data under the first midpoint follows the fingers\n if (model.zoom.x) {\n next.x = zoomRange(gesture.view.x, from.x, factor);\n next.x = panRange(next.x, (from.x - to.x) * factor);\n }\n if (model.zoom.y) {\n next.y = zoomRange(gesture.view.y, from.y, factor);\n next.y = panRange(next.y, (from.y - to.y) * factor);\n }\n setViewInternal(next, true);\n return;\n }\n if (gesture?.kind === \"point\" && p) {\n if (!p.moved) return;\n gesture.x = x;\n gesture.y = y;\n const at = dataAt(x, y);\n invalidate();\n if (at) emit(\"drag\", { item: gesture.item, x: at.x, y: at.y });\n return;\n }\n if (gesture?.kind === \"pan\" && p) {\n if (!p.moved) return;\n const sc = scales();\n if (!sc) return;\n const next = copyView(gesture.view);\n const from = toData(sc, gesture.x, gesture.y);\n const to = toData(sc, x, y);\n if (model.zoom.x) next.x = panRange(gesture.view.x, from.x - to.x);\n if (model.zoom.y) next.y = panRange(gesture.view.y, from.y - to.y);\n setViewInternal(next, true);\n return;\n }\n if (pointers.size > 1) return;\n // mouse hover, or a finger scrubbing along the data\n if (!p || p.touch || !o.touch) {\n const event = hitAt(x, y, !!p?.touch || !!o.touch);\n if (event || !p?.touch) setHover(event ? { event, x, y } : null);\n }\n };\n\n const pointerUp = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const p = pointers.get(id);\n pointers.delete(id);\n const current = gesture;\n if (current?.kind === \"pinch\") {\n if (pointers.size < 2) gesture = null;\n return;\n }\n gesture = null;\n if (!p) return;\n if (current?.kind === \"point\") {\n if (p.moved) {\n const at = dataAt(x, y);\n invalidate();\n if (at) emit(\"drop\", { item: current.item, x: at.x, y: at.y });\n return;\n }\n } else if (current?.kind === \"pan\" && p.moved) {\n invalidate();\n return;\n }\n if (p.moved) {\n if (p.touch) invalidate();\n return;\n }\n // tap / click\n const now = Date.now();\n if (\n p.touch &&\n now - lastTap.time < DOUBLE_TAP_MS &&\n Math.hypot(x - lastTap.x, y - lastTap.y) < 24 &&\n zoomed\n ) {\n lastTap = { time: 0, x, y };\n resetZoom();\n return;\n }\n lastTap = { time: now, x, y };\n const legend = legendAt(x, y);\n if (legend) {\n if (getScene()?.legend?.toggle) toggleSeries(legend.id);\n return;\n }\n const hit = hitAt(x, y, p.touch);\n if (hit) {\n if (p.touch) setHover({ event: hit, x, y });\n emit(\"click\", hit);\n return;\n }\n if (p.touch) setHover(null);\n if (inPlot(x, y)) {\n const at = dataAt(x, y);\n if (at) emit(\"plotClick\", at as ChartPlotClickEvent);\n }\n };\n\n const pointerCancel = (o: ChartPointerOptions = {}) => {\n pointers.delete(o.id ?? 0);\n if (gesture?.kind === \"point\" || pointers.size < 2) gesture = null;\n invalidate();\n };\n\n model = buildModel(options, theme, hidden, cache);\n rebuild();\n\n return {\n setOptions(next) {\n if (destroyed) return;\n const paletteChanged =\n (next.palette ?? []).join() !== (options.palette ?? []).join();\n options = next;\n if (paletteChanged) theme = createTheme(themeInput, options.palette);\n rebuild();\n },\n setTheme(next) {\n if (destroyed) return;\n themeInput = next;\n theme = createTheme(themeInput, options.palette);\n rebuild();\n },\n setSize(w, h) {\n if (w === width && h === height) return;\n width = Math.max(0, w);\n height = Math.max(0, h);\n invalidate();\n },\n getScene,\n pointerDown,\n pointerMove,\n pointerUp,\n pointerCancel,\n pointerLeave() {\n if (!gesture && hover) setHover(null);\n },\n zoomAt,\n resetZoom,\n getView: () => copyView(view),\n setView(next) {\n if (destroyed) return;\n setViewInternal({ x: next.x ?? view.x, y: next.y ?? view.y }, false);\n },\n toggleSeries,\n clearHover() {\n if (hover) setHover(null);\n },\n getPlotRect() {\n const p = getScene()?.layout.plot;\n return p ? { ...p } : null;\n },\n toPixel(x, y) {\n const sc = scales();\n return sc ? toScreen(sc, x, y) : null;\n },\n fromPixel(x, y) {\n const sc = scales();\n return sc ? toData(sc, x, y) : null;\n },\n on(type, listener) {\n let set = listeners[type] as Set<typeof listener> | undefined;\n if (!set) {\n set = new Set();\n (listeners as Record<string, unknown>)[type] = set;\n }\n set.add(listener);\n return () => {\n set.delete(listener);\n };\n },\n destroy() {\n destroyed = true;\n pointers.clear();\n for (const key of Object.keys(listeners))\n delete (listeners as Record<string, unknown>)[key];\n },\n };\n};\n\n// ------------------------------------------------------------- primitives\n\n/** A polyline (pixels of the chart): interleaved x, y */\nexport interface ChartLinePrimitive {\n kind: \"line\";\n seriesIndex: number;\n color: string;\n width: number;\n /** Runs of points without gaps */\n segments: number[][];\n}\n\nexport interface ChartAreaPrimitive {\n kind: \"area\";\n seriesIndex: number;\n color: string;\n opacity: number;\n /** Y pixel of the baseline (x pixel when `horizontal`) */\n baseline: number;\n segments: number[][];\n /**\n * Stacked and range areas: y pixel (x pixel when `horizontal`) of the\n * bottom edge under every point of `segments`\n */\n bottoms?: number[][];\n /** Horizontal charts: the area is filled toward the left edge (`baseline` / `bottoms` are x pixels) */\n horizontal?: boolean;\n}\n\nexport interface ChartBarPrimitive {\n kind: \"bars\";\n seriesIndex: number;\n color: string;\n /** Interleaved x, y, width, height */\n rects: number[];\n /** CSS color of every rect (candlesticks, heatmap cells, colored bars); `color` otherwise */\n colors?: string[];\n /** Corner radius in pixels */\n radius?: number;\n /** Opacity of the fill (box plot boxes, translucent bars) */\n opacity?: number;\n}\n\nexport interface ChartDotPrimitive {\n kind: \"dots\";\n seriesIndex: number;\n opacity: number;\n /** Interleaved x, y, diameter */\n dots: number[];\n /** CSS color of every dot */\n colors: string[];\n}\n\nexport type ChartPrimitive =\n | ChartLinePrimitive\n | ChartAreaPrimitive\n | ChartBarPrimitive\n | ChartDotPrimitive;\n\nexport interface ChartPrimitiveOptions {\n /**\n * Upper bound of the dots drawn per series: above it the dots are merged\n * into one per occupied cell of their size\n * @default 4000\n */\n maxDots?: number;\n /**\n * Upper bound of the bars drawn per series: above it neighboring bars\n * sharing a pixel column are merged\n * @default 2000\n */\n maxBars?: number;\n /**\n * Width in pixels of the columns lines are decimated to (at most four\n * points per column); larger values mean fewer shapes\n * @default 1\n */\n columnWidth?: number;\n /** Size of the cells dots are merged into (the dot size by default) */\n dotCell?: number;\n}\n\nconst visibleRange = (\n x: Float64Array,\n count: number,\n sorted: boolean,\n range: Range,\n): [number, number] => {\n if (!sorted) return [0, count];\n const [a, b] = range[0] <= range[1] ? range : [range[1], range[0]];\n return [\n Math.max(0, lowerBound(x, count, a) - 1),\n Math.min(count, lowerBound(x, count, b) + 1),\n ];\n};\n\nconst ORDER = {\n heatmap: 0,\n area: 1,\n bar: 2,\n boxplot: 2,\n candlestick: 3,\n line: 4,\n scatter: 5,\n} as const;\n\n/**\n * Rectangles collected along the axes (`x` along the x axis, `y` along the\n * value axis) and turned into screen rects\n */\nconst toRects = (sc: Scales, along: number[]): number[] => {\n if (!sc.horizontal) return along;\n const out = new Array<number>(along.length);\n for (let k = 0; k < along.length; k += 4) {\n out[k] = along[k + 1];\n out[k + 1] = along[k];\n out[k + 2] = along[k + 3];\n out[k + 3] = along[k + 2];\n }\n return out;\n};\n\n/**\n * Data of a scene as simple shapes in pixels of the chart, for hosts\n * without a canvas (React Native views, SVG): lines are decimated to a few\n * points per pixel column and large point sets are merged per cell, so the\n * number of shapes stays bounded by the size of the chart.\n */\nexport const scenePrimitives = (\n scene: ChartScene,\n limits: ChartPrimitiveOptions = {},\n): ChartPrimitive[] => {\n const { model, view, layout } = scene;\n const sc = layout.scales;\n const { plot } = layout;\n const horizontal = sc.horizontal;\n const maxDots = limits.maxDots ?? 4000;\n const maxBars = limits.maxBars ?? 2000;\n const column = Math.max(1, limits.columnWidth ?? 1);\n // the x axis in pixels (along `xToPx`)\n const xLo = horizontal ? plot.y : plot.x;\n const xHi = xLo + (horizontal ? plot.height : plot.width);\n const out: ChartPrimitive[] = [];\n const series = model.series\n .filter((s) => !s.hidden && s.cols.count > 0)\n .sort((a, b) => ORDER[a.type] - ORDER[b.type] || a.index - b.index);\n for (const s of series) {\n const { x, y, count, sorted } = s.cols;\n if (s.type === \"line\" || s.type === \"area\") {\n const [start, end] = visibleRange(x, count, sorted, view.x);\n const top = s.stackTop ?? y;\n // curve first (in data space), then decimation; the stacked bottom\n // edge follows the same sampling\n const curved = curvePoints(x, top, start, end, s.curve);\n const bottom = s.stackBase\n ? curvePoints(x, s.stackBase, start, end, s.curve).points\n : null;\n let n = curved.length;\n let points = curved.points;\n let bottoms = bottom;\n if (sorted && n > ((xHi - xLo) * 2) / column) {\n if (bottom) {\n // keep the bottoms aligned with the kept tops (same x)\n const d = decimateMinMax(points, 0, n, (v) => sc.xToPx(v) / column);\n const next = new Float64Array(d.length * 2);\n const nextBottom = new Float64Array(d.length * 2);\n let k = 0;\n let j = 0;\n for (let i = 0; i < d.length; i++) {\n const xv = d.points[i * 2];\n while (j < n - 1 && points[j * 2] < xv) j++;\n next[k * 2] = xv;\n next[k * 2 + 1] = d.points[i * 2 + 1];\n nextBottom[k * 2] = xv;\n nextBottom[k * 2 + 1] = bottom[j * 2 + 1];\n k++;\n }\n points = next;\n bottoms = nextBottom;\n n = k;\n } else {\n const d = decimateMinMax(points, 0, n, (v) => sc.xToPx(v) / column);\n points = d.points;\n n = d.length;\n }\n }\n // range areas: a line on the lower edge too\n const band = s.type === \"area\" && !!s.cols.y0 && !!bottoms;\n const segments: number[][] = [];\n const bottomSegments: number[][] = [];\n const lowerSegments: number[][] = [];\n let run: number[] = [];\n let runBottom: number[] = [];\n let runLower: number[] = [];\n const flush = () => {\n if (run.length) {\n segments.push(run);\n bottomSegments.push(runBottom);\n if (band) lowerSegments.push(runLower);\n }\n run = [];\n runBottom = [];\n runLower = [];\n };\n for (let i = 0; i < n; i++) {\n const xv = points[i * 2];\n const yv = points[i * 2 + 1];\n const bv = bottoms ? bottoms[i * 2 + 1] : 0;\n if (\n !Number.isFinite(xv) ||\n !Number.isFinite(yv) ||\n !Number.isFinite(bv)\n ) {\n flush();\n continue;\n }\n const p = toScreen(sc, xv, yv);\n run.push(p.x, p.y);\n if (bottoms) runBottom.push(sc.yToPx(bv));\n if (band) {\n const q = toScreen(sc, xv, bv);\n runLower.push(q.x, q.y);\n }\n }\n flush();\n if (s.type === \"area\") {\n out.push({\n kind: \"area\",\n seriesIndex: s.index,\n color: s.colorCss,\n opacity: s.opacity,\n baseline: sc.yToPx(model.baseline),\n segments,\n ...(bottoms ? { bottoms: bottomSegments } : {}),\n ...(horizontal ? { horizontal: true } : {}),\n });\n }\n if (s.lineWidth > 0) {\n const width =\n s.type === \"area\" ? Math.min(s.lineWidth, 2) : s.lineWidth;\n out.push({\n kind: \"line\",\n seriesIndex: s.index,\n color: s.colorCss,\n width,\n segments,\n });\n if (band)\n out.push({\n kind: \"line\",\n seriesIndex: s.index,\n color: s.colorCss,\n width,\n segments: lowerSegments,\n });\n }\n continue;\n }\n if (s.type === \"bar\" && s.barBase && s.barTop) {\n const [start, end] = visibleRange(x, count, sorted, view.x);\n const half = Math.max(s.barHalfWidth / Math.abs(sc.xPerPx), 0.5);\n const rects: number[] = [];\n const colors: string[] = [];\n const merge = end - start > maxBars;\n let lastCol = NaN;\n for (let i = start; i < end; i++) {\n const a = s.barBase[i];\n const b = s.barTop[i];\n if (!Number.isFinite(a) || !Number.isFinite(b)) continue;\n const cx = sc.xToPx(x[i] + s.barOffset);\n if (cx + half < xLo || cx - half > xHi) continue;\n const ya = sc.yToPx(a);\n const yb = sc.yToPx(b);\n const top = Math.min(ya, yb);\n const h = Math.max(1, Math.abs(ya - yb));\n const col = Math.floor(cx);\n if (merge && col === lastCol && rects.length) {\n // widen the previous bar of the same pixel column along the values\n const k = rects.length - 4;\n const bottom = Math.max(rects[k + 1] + rects[k + 3], top + h);\n rects[k + 1] = Math.min(rects[k + 1], top);\n rects[k + 3] = bottom - rects[k + 1];\n continue;\n }\n lastCol = col;\n rects.push(cx - half, top, half * 2, h);\n const pc = s.pointColors?.[i];\n colors.push(pc ? toCss(pc) : s.colorCss);\n }\n out.push({\n kind: \"bars\",\n seriesIndex: s.index,\n color: s.colorCss,\n rects: toRects(sc, rects),\n ...(s.pointColors ? { colors } : {}),\n radius: s.radius,\n ...(s.opacity < 1 ? { opacity: s.opacity } : {}),\n });\n continue;\n }\n if (s.type === \"boxplot\") {\n out.push(...boxPrimitives(s, sc, view.x, xLo, xHi, maxBars));\n continue;\n }\n if (s.type === \"candlestick\") {\n const [start, end] = visibleRange(x, count, sorted, view.x);\n const { open, high, low } = s.cols;\n const half = Math.max(s.barHalfWidth / Math.abs(sc.xPerPx), 1);\n const up = toCss(s.upColor);\n const down = toCss(s.downColor);\n const wicks: number[] = [];\n const bodies: number[] = [];\n const wickColors: string[] = [];\n const bodyColors: string[] = [];\n const step = Math.max(1, Math.ceil((end - start) / maxBars));\n for (let i = start; i < end; i += step) {\n const c = y[i];\n const o = open ? open[i] : c;\n if (!Number.isFinite(c) || !Number.isFinite(o)) continue;\n const cx = sc.xToPx(x[i]);\n if (cx + half < xLo || cx - half > xHi) continue;\n const color = c < o ? down : up;\n const hi = sc.yToPx(high ? high[i] : Math.max(o, c));\n const lo = sc.yToPx(low ? low[i] : Math.min(o, c));\n wicks.push(cx - 0.5, Math.min(hi, lo), 1, Math.abs(lo - hi));\n wickColors.push(color);\n const ya = sc.yToPx(o);\n const yb = sc.yToPx(c);\n bodies.push(\n cx - half,\n Math.min(ya, yb),\n half * 2,\n Math.max(1, Math.abs(ya - yb)),\n );\n bodyColors.push(color);\n }\n out.push(\n {\n kind: \"bars\",\n seriesIndex: s.index,\n color: up,\n rects: toRects(sc, wicks),\n colors: wickColors,\n },\n {\n kind: \"bars\",\n seriesIndex: s.index,\n color: up,\n rects: toRects(sc, bodies),\n colors: bodyColors,\n radius: 1,\n },\n );\n continue;\n }\n if (s.type === \"heatmap\") {\n const hw = Math.abs(s.cellHalf.x / sc.xPerPx);\n const hh = Math.abs(s.cellHalf.y / sc.yPerPx);\n const rects: number[] = [];\n const colors: string[] = [];\n const inset = hw > 3 && hh > 3 ? 1 : 0;\n for (let i = 0; i < count && rects.length / 4 < maxBars * 4; i++) {\n const c = s.cellColors?.[i];\n if (!c) continue;\n const r = screenRect(\n sc,\n sc.xToPx(x[i]) - hw,\n sc.xToPx(x[i]) + hw,\n sc.yToPx(y[i]) - hh,\n sc.yToPx(y[i]) + hh,\n );\n if (\n r.x + r.width < plot.x ||\n r.x > plot.x + plot.width ||\n r.y + r.height < plot.y ||\n r.y > plot.y + plot.height\n )\n continue;\n rects.push(\n r.x + inset,\n r.y + inset,\n r.width - inset * 2,\n r.height - inset * 2,\n );\n colors.push(toCss(unpackColor(c)));\n }\n out.push({\n kind: \"bars\",\n seriesIndex: s.index,\n color: s.colorCss,\n rects,\n colors,\n radius: s.radius,\n });\n continue;\n }\n // scatter\n const dots: number[] = [];\n const colors: string[] = [];\n const colorOf = (i: number) => {\n const c = s.pointColors?.[i];\n return c ? toCss(c) : s.colorCss;\n };\n const visible: number[] = [];\n const screen: number[] = [];\n for (let i = 0; i < count; i++) {\n const xv = x[i];\n const yv = y[i];\n if (!Number.isFinite(xv) || !Number.isFinite(yv)) continue;\n const p = toScreen(sc, xv, yv);\n if (\n p.x < plot.x ||\n p.x > plot.x + plot.width ||\n p.y < plot.y ||\n p.y > plot.y + plot.height\n )\n continue;\n visible.push(i);\n screen.push(p.x, p.y);\n }\n if (visible.length > maxDots) {\n const cell = Math.max(2, limits.dotCell ?? s.pointSize * 0.8);\n const cols = Math.ceil(plot.width / cell) + 1;\n const owner = new Map<number, number>();\n visible.forEach((i, k) => {\n const cx = Math.floor((screen[k * 2] - plot.x) / cell);\n const cy = Math.floor((screen[k * 2 + 1] - plot.y) / cell);\n owner.set(cy * cols + cx, i);\n });\n for (const [key, i] of owner) {\n dots.push(\n plot.x + ((key % cols) + 0.5) * cell,\n plot.y + (Math.floor(key / cols) + 0.5) * cell,\n cell,\n );\n colors.push(colorOf(i));\n }\n } else {\n visible.forEach((i, k) => {\n dots.push(screen[k * 2], screen[k * 2 + 1], dotSize(s, i));\n colors.push(colorOf(i));\n });\n }\n out.push({\n kind: \"dots\",\n seriesIndex: s.index,\n opacity: s.opacity,\n dots,\n colors,\n });\n }\n return out;\n};\n\n/** Box plot shapes: translucent boxes, then whiskers, caps, edges and medians, then outliers */\nconst boxPrimitives = (\n s: SeriesModel,\n sc: Scales,\n range: Range,\n xLo: number,\n xHi: number,\n maxBars: number,\n): ChartPrimitive[] => {\n const { x, y, count, sorted, high, low, q1, q3, outliers } = s.cols;\n const [start, end] = visibleRange(x, count, sorted, range);\n const half = Math.max(s.barHalfWidth / Math.abs(sc.xPerPx), 1);\n const lw = Math.max(1, s.lineWidth);\n const boxes: number[] = [];\n const lines: number[] = [];\n const boxColors: string[] = [];\n const lineColors: string[] = [];\n const dots: number[] = [];\n const dotColors: string[] = [];\n const step = Math.max(1, Math.ceil((end - start) / maxBars));\n /** A line along the values (a whisker or a side) */\n const vertical = (cx: number, a: number, b: number) => {\n lines.push(cx - lw / 2, Math.min(a, b), lw, Math.abs(a - b));\n };\n /** A line across the box (an edge, a cap or the median) */\n const across = (cx: number, h: number, at: number, thick = lw) => {\n lines.push(cx - h, at - thick / 2, h * 2, thick);\n };\n for (let i = start; i < end; i += step) {\n const m = y[i];\n if (!Number.isFinite(m)) continue;\n const cx = sc.xToPx(x[i] + s.barOffset);\n if (cx + half < xLo || cx - half > xHi) continue;\n const pc = s.pointColors?.[i];\n const color = pc ? toCss(pc) : s.colorCss;\n const lo = sc.yToPx(low && Number.isFinite(low[i]) ? low[i] : m);\n const hi = sc.yToPx(high && Number.isFinite(high[i]) ? high[i] : m);\n const a = sc.yToPx(q1 && Number.isFinite(q1[i]) ? q1[i] : m);\n const b = sc.yToPx(q3 && Number.isFinite(q3[i]) ? q3[i] : m);\n const before = lines.length;\n boxes.push(cx - half, Math.min(a, b), half * 2, Math.abs(a - b));\n boxColors.push(color);\n vertical(cx, lo, a);\n vertical(cx, b, hi);\n vertical(cx - half, a, b);\n vertical(cx + half, a, b);\n across(cx, half / 2, lo);\n across(cx, half / 2, hi);\n across(cx, half, a);\n across(cx, half, b);\n across(cx, half, sc.yToPx(m), Math.max(2, lw * 1.6));\n for (let k = before; k < lines.length; k += 4) lineColors.push(color);\n const out = outliers?.[i];\n if (out) {\n for (const v of out) {\n const p = sc.horizontal\n ? { x: sc.yToPx(v), y: cx }\n : { x: cx, y: sc.yToPx(v) };\n dots.push(p.x, p.y, s.pointSize);\n dotColors.push(color);\n }\n }\n }\n const prims: ChartPrimitive[] = [\n {\n kind: \"bars\",\n seriesIndex: s.index,\n color: s.colorCss,\n rects: toRects(sc, boxes),\n colors: boxColors,\n opacity: s.opacity,\n },\n {\n kind: \"bars\",\n seriesIndex: s.index,\n color: s.colorCss,\n rects: toRects(sc, lines),\n colors: lineColors,\n },\n ];\n if (dots.length)\n prims.push({\n kind: \"dots\",\n seriesIndex: s.index,\n opacity: 0.85,\n dots,\n colors: dotColors,\n });\n return prims;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=5e4,t=(e,t,n,r,i)=>{let a=Math.max(0,r-n);if(i===`step`){let i=new Float64Array(a*4),o=new Uint32Array(a*2),s=0;for(let a=n;a<r;a++)a>n&&Number.isFinite(t[a-1])&&Number.isFinite(t[a])&&(i[s*2]=e[a],i[s*2+1]=t[a-1],o[s++]=a-1),i[s*2]=e[a],i[s*2+1]=t[a],o[s++]=a;return{points:i,source:o,length:s}}if(i!==`smooth`||a<3||a>5e4){let i=new Float64Array(a*2),o=new Uint32Array(a);for(let a=n;a<r;a++)i[(a-n)*2]=e[a],i[(a-n)*2+1]=t[a],o[a-n]=a;return{points:i,source:o,length:a}}let o=new Float64Array(a),s=i=>i>=n&&i<r&&Number.isFinite(t[i])&&Number.isFinite(e[i]),c=n=>{let r=e[n+1]-e[n];return r===0?0:(t[n+1]-t[n])/r};for(let t=n;t<r;t++){if(!s(t))continue;let r=s(t-1),i=s(t+1),a;if(r&&i){let n=c(t-1),r=c(t);if(n*r<=0)a=0;else{let i=e[t]-e[t-1],o=e[t+1]-e[t],s=2*o+i,c=o+2*i;a=(s+c)/(s/n+c/r)}}else a=i?c(t):r?c(t-1):0;o[t-n]=a}let l=new Float64Array((a-1)*10*2+2),u=new Uint32Array((a-1)*10+1),d=0;for(let i=n;i<r;i++){if(l[d*2]=e[i],l[d*2+1]=t[i],u[d++]=i,!s(i)||!s(i+1))continue;let r=e[i],a=t[i],c=e[i+1]-r,f=o[i-n]*c,p=o[i+1-n]*c,m=t[i+1];for(let e=1;e<10;e++){let t=e/10,n=t*t,o=n*t,s=(2*o-3*n+1)*a+(o-2*n+t)*f+(-2*o+3*n)*m+(o-n)*p;l[d*2]=r+c*t,l[d*2+1]=s,u[d++]=i}}return{points:l,source:u,length:d}};exports.SMOOTH_LIMIT=e,exports.curvePoints=t;
|
|
2
|
+
//# sourceMappingURL=curve.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curve.cjs","names":["SMOOTH_LIMIT","curvePoints","n","end","start","curve","points","source","length","i","y","x","tangents","valid","slope","dx","hasPrev","hasNext","m","a","b","ha","hb","w1","w2","x0","y0","h","m0","m1","y1","k","t2","t3","v"],"sources":["../../../../charts/src/engine/curve.ts"],"sourcesContent":["// Curves between the points of a line: monotone cubic (smooth, never\n// overshoots the data, passes through every point) and steps. The curve is\n// resampled in data space, so every backend draws it as a polyline.\n\nimport type { ChartCurve } from \"./types\";\n\n/** Smooth curves are resampled with this many segments between two points */\nexport const SMOOTH_STEPS = 10;\n/** Above this many points per series a smooth curve is drawn straight (it is invisible anyway) */\nexport const SMOOTH_LIMIT = 50000;\n\n/**\n * Points of the curve through `x[i], y[i]` (`i` in `[start, end)`), as\n * interleaved x, y, plus the index of the source point each output point\n * belongs to. Gaps (non-finite y) are kept.\n */\nexport const curvePoints = (\n x: ArrayLike<number>,\n y: ArrayLike<number>,\n start: number,\n end: number,\n curve: ChartCurve,\n): { points: Float64Array; source: Uint32Array; length: number } => {\n const n = Math.max(0, end - start);\n if (curve === \"step\") {\n const points = new Float64Array(n * 4);\n const source = new Uint32Array(n * 2);\n let length = 0;\n for (let i = start; i < end; i++) {\n const prevValid = i > start && Number.isFinite(y[i - 1]);\n if (prevValid && Number.isFinite(y[i])) {\n // horizontal run at the previous value, then the vertical jump\n points[length * 2] = x[i];\n points[length * 2 + 1] = y[i - 1];\n source[length++] = i - 1;\n }\n points[length * 2] = x[i];\n points[length * 2 + 1] = y[i];\n source[length++] = i;\n }\n return { points, source, length };\n }\n if (curve !== \"smooth\" || n < 3 || n > SMOOTH_LIMIT) {\n const points = new Float64Array(n * 2);\n const source = new Uint32Array(n);\n for (let i = start; i < end; i++) {\n points[(i - start) * 2] = x[i];\n points[(i - start) * 2 + 1] = y[i];\n source[i - start] = i;\n }\n return { points, source, length: n };\n }\n\n // Fritsch-Carlson tangents, per run of finite points\n const tangents = new Float64Array(n);\n const valid = (i: number) =>\n i >= start && i < end && Number.isFinite(y[i]) && Number.isFinite(x[i]);\n const slope = (i: number) => {\n const dx = x[i + 1] - x[i];\n return dx !== 0 ? (y[i + 1] - y[i]) / dx : 0;\n };\n for (let i = start; i < end; i++) {\n if (!valid(i)) continue;\n const hasPrev = valid(i - 1);\n const hasNext = valid(i + 1);\n let m: number;\n if (hasPrev && hasNext) {\n const a = slope(i - 1);\n const b = slope(i);\n if (a * b <= 0) {\n m = 0;\n } else {\n // weighted harmonic mean keeps the curve monotone between points\n const ha = x[i] - x[i - 1];\n const hb = x[i + 1] - x[i];\n const w1 = 2 * hb + ha;\n const w2 = hb + 2 * ha;\n m = (w1 + w2) / (w1 / a + w2 / b);\n }\n } else if (hasNext) {\n m = slope(i);\n } else if (hasPrev) {\n m = slope(i - 1);\n } else {\n m = 0;\n }\n tangents[i - start] = m;\n }\n\n const points = new Float64Array((n - 1) * SMOOTH_STEPS * 2 + 2);\n const source = new Uint32Array((n - 1) * SMOOTH_STEPS + 1);\n let length = 0;\n for (let i = start; i < end; i++) {\n points[length * 2] = x[i];\n points[length * 2 + 1] = y[i];\n source[length++] = i;\n if (!valid(i) || !valid(i + 1)) continue;\n const x0 = x[i];\n const y0 = y[i];\n const h = x[i + 1] - x0;\n const m0 = tangents[i - start] * h;\n const m1 = tangents[i + 1 - start] * h;\n const y1 = y[i + 1];\n for (let k = 1; k < SMOOTH_STEPS; k++) {\n const t = k / SMOOTH_STEPS;\n const t2 = t * t;\n const t3 = t2 * t;\n // cubic Hermite basis\n const v =\n (2 * t3 - 3 * t2 + 1) * y0 +\n (t3 - 2 * t2 + t) * m0 +\n (-2 * t3 + 3 * t2) * y1 +\n (t3 - t2) * m1;\n points[length * 2] = x0 + h * t;\n points[length * 2 + 1] = v;\n source[length++] = i;\n }\n }\n return { points, source, length };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ChartCurve } from './types.cjs';
|
|
2
|
+
/** Smooth curves are resampled with this many segments between two points */
|
|
3
|
+
export declare const SMOOTH_STEPS = 10;
|
|
4
|
+
/** Above this many points per series a smooth curve is drawn straight (it is invisible anyway) */
|
|
5
|
+
export declare const SMOOTH_LIMIT = 50000;
|
|
6
|
+
/**
|
|
7
|
+
* Points of the curve through `x[i], y[i]` (`i` in `[start, end)`), as
|
|
8
|
+
* interleaved x, y, plus the index of the source point each output point
|
|
9
|
+
* belongs to. Gaps (non-finite y) are kept.
|
|
10
|
+
*/
|
|
11
|
+
export declare const curvePoints: (x: ArrayLike<number>, y: ArrayLike<number>, start: number, end: number, curve: ChartCurve) => {
|
|
12
|
+
points: Float64Array;
|
|
13
|
+
source: Uint32Array;
|
|
14
|
+
length: number;
|
|
15
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ChartCurve } from './types.js';
|
|
2
|
+
/** Smooth curves are resampled with this many segments between two points */
|
|
3
|
+
export declare const SMOOTH_STEPS = 10;
|
|
4
|
+
/** Above this many points per series a smooth curve is drawn straight (it is invisible anyway) */
|
|
5
|
+
export declare const SMOOTH_LIMIT = 50000;
|
|
6
|
+
/**
|
|
7
|
+
* Points of the curve through `x[i], y[i]` (`i` in `[start, end)`), as
|
|
8
|
+
* interleaved x, y, plus the index of the source point each output point
|
|
9
|
+
* belongs to. Gaps (non-finite y) are kept.
|
|
10
|
+
*/
|
|
11
|
+
export declare const curvePoints: (x: ArrayLike<number>, y: ArrayLike<number>, start: number, end: number, curve: ChartCurve) => {
|
|
12
|
+
points: Float64Array;
|
|
13
|
+
source: Uint32Array;
|
|
14
|
+
length: number;
|
|
15
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
var e = 5e4, t = (e, t, n, r, i) => {
|
|
2
|
+
let a = Math.max(0, r - n);
|
|
3
|
+
if (i === "step") {
|
|
4
|
+
let i = new Float64Array(a * 4), o = new Uint32Array(a * 2), s = 0;
|
|
5
|
+
for (let a = n; a < r; a++) a > n && Number.isFinite(t[a - 1]) && Number.isFinite(t[a]) && (i[s * 2] = e[a], i[s * 2 + 1] = t[a - 1], o[s++] = a - 1), i[s * 2] = e[a], i[s * 2 + 1] = t[a], o[s++] = a;
|
|
6
|
+
return {
|
|
7
|
+
points: i,
|
|
8
|
+
source: o,
|
|
9
|
+
length: s
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
if (i !== "smooth" || a < 3 || a > 5e4) {
|
|
13
|
+
let i = new Float64Array(a * 2), o = new Uint32Array(a);
|
|
14
|
+
for (let a = n; a < r; a++) i[(a - n) * 2] = e[a], i[(a - n) * 2 + 1] = t[a], o[a - n] = a;
|
|
15
|
+
return {
|
|
16
|
+
points: i,
|
|
17
|
+
source: o,
|
|
18
|
+
length: a
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
let o = new Float64Array(a), s = (i) => i >= n && i < r && Number.isFinite(t[i]) && Number.isFinite(e[i]), c = (n) => {
|
|
22
|
+
let r = e[n + 1] - e[n];
|
|
23
|
+
return r === 0 ? 0 : (t[n + 1] - t[n]) / r;
|
|
24
|
+
};
|
|
25
|
+
for (let t = n; t < r; t++) {
|
|
26
|
+
if (!s(t)) continue;
|
|
27
|
+
let r = s(t - 1), i = s(t + 1), a;
|
|
28
|
+
if (r && i) {
|
|
29
|
+
let n = c(t - 1), r = c(t);
|
|
30
|
+
if (n * r <= 0) a = 0;
|
|
31
|
+
else {
|
|
32
|
+
let i = e[t] - e[t - 1], o = e[t + 1] - e[t], s = 2 * o + i, c = o + 2 * i;
|
|
33
|
+
a = (s + c) / (s / n + c / r);
|
|
34
|
+
}
|
|
35
|
+
} else a = i ? c(t) : r ? c(t - 1) : 0;
|
|
36
|
+
o[t - n] = a;
|
|
37
|
+
}
|
|
38
|
+
let l = new Float64Array((a - 1) * 10 * 2 + 2), u = new Uint32Array((a - 1) * 10 + 1), d = 0;
|
|
39
|
+
for (let i = n; i < r; i++) {
|
|
40
|
+
if (l[d * 2] = e[i], l[d * 2 + 1] = t[i], u[d++] = i, !s(i) || !s(i + 1)) continue;
|
|
41
|
+
let r = e[i], a = t[i], c = e[i + 1] - r, f = o[i - n] * c, p = o[i + 1 - n] * c, m = t[i + 1];
|
|
42
|
+
for (let e = 1; e < 10; e++) {
|
|
43
|
+
let t = e / 10, n = t * t, o = n * t, s = (2 * o - 3 * n + 1) * a + (o - 2 * n + t) * f + (-2 * o + 3 * n) * m + (o - n) * p;
|
|
44
|
+
l[d * 2] = r + c * t, l[d * 2 + 1] = s, u[d++] = i;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
points: l,
|
|
49
|
+
source: u,
|
|
50
|
+
length: d
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
//#endregion
|
|
54
|
+
export { e as SMOOTH_LIMIT, t as curvePoints };
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=curve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curve.js","names":["SMOOTH_LIMIT","curvePoints","n","end","start","curve","points","source","length","i","y","x","tangents","valid","slope","dx","hasPrev","hasNext","m","a","b","ha","hb","w1","w2","x0","y0","h","m0","m1","y1","k","t2","t3","v"],"sources":["../../../../charts/src/engine/curve.ts"],"sourcesContent":["// Curves between the points of a line: monotone cubic (smooth, never\n// overshoots the data, passes through every point) and steps. The curve is\n// resampled in data space, so every backend draws it as a polyline.\n\nimport type { ChartCurve } from \"./types\";\n\n/** Smooth curves are resampled with this many segments between two points */\nexport const SMOOTH_STEPS = 10;\n/** Above this many points per series a smooth curve is drawn straight (it is invisible anyway) */\nexport const SMOOTH_LIMIT = 50000;\n\n/**\n * Points of the curve through `x[i], y[i]` (`i` in `[start, end)`), as\n * interleaved x, y, plus the index of the source point each output point\n * belongs to. Gaps (non-finite y) are kept.\n */\nexport const curvePoints = (\n x: ArrayLike<number>,\n y: ArrayLike<number>,\n start: number,\n end: number,\n curve: ChartCurve,\n): { points: Float64Array; source: Uint32Array; length: number } => {\n const n = Math.max(0, end - start);\n if (curve === \"step\") {\n const points = new Float64Array(n * 4);\n const source = new Uint32Array(n * 2);\n let length = 0;\n for (let i = start; i < end; i++) {\n const prevValid = i > start && Number.isFinite(y[i - 1]);\n if (prevValid && Number.isFinite(y[i])) {\n // horizontal run at the previous value, then the vertical jump\n points[length * 2] = x[i];\n points[length * 2 + 1] = y[i - 1];\n source[length++] = i - 1;\n }\n points[length * 2] = x[i];\n points[length * 2 + 1] = y[i];\n source[length++] = i;\n }\n return { points, source, length };\n }\n if (curve !== \"smooth\" || n < 3 || n > SMOOTH_LIMIT) {\n const points = new Float64Array(n * 2);\n const source = new Uint32Array(n);\n for (let i = start; i < end; i++) {\n points[(i - start) * 2] = x[i];\n points[(i - start) * 2 + 1] = y[i];\n source[i - start] = i;\n }\n return { points, source, length: n };\n }\n\n // Fritsch-Carlson tangents, per run of finite points\n const tangents = new Float64Array(n);\n const valid = (i: number) =>\n i >= start && i < end && Number.isFinite(y[i]) && Number.isFinite(x[i]);\n const slope = (i: number) => {\n const dx = x[i + 1] - x[i];\n return dx !== 0 ? (y[i + 1] - y[i]) / dx : 0;\n };\n for (let i = start; i < end; i++) {\n if (!valid(i)) continue;\n const hasPrev = valid(i - 1);\n const hasNext = valid(i + 1);\n let m: number;\n if (hasPrev && hasNext) {\n const a = slope(i - 1);\n const b = slope(i);\n if (a * b <= 0) {\n m = 0;\n } else {\n // weighted harmonic mean keeps the curve monotone between points\n const ha = x[i] - x[i - 1];\n const hb = x[i + 1] - x[i];\n const w1 = 2 * hb + ha;\n const w2 = hb + 2 * ha;\n m = (w1 + w2) / (w1 / a + w2 / b);\n }\n } else if (hasNext) {\n m = slope(i);\n } else if (hasPrev) {\n m = slope(i - 1);\n } else {\n m = 0;\n }\n tangents[i - start] = m;\n }\n\n const points = new Float64Array((n - 1) * SMOOTH_STEPS * 2 + 2);\n const source = new Uint32Array((n - 1) * SMOOTH_STEPS + 1);\n let length = 0;\n for (let i = start; i < end; i++) {\n points[length * 2] = x[i];\n points[length * 2 + 1] = y[i];\n source[length++] = i;\n if (!valid(i) || !valid(i + 1)) continue;\n const x0 = x[i];\n const y0 = y[i];\n const h = x[i + 1] - x0;\n const m0 = tangents[i - start] * h;\n const m1 = tangents[i + 1 - start] * h;\n const y1 = y[i + 1];\n for (let k = 1; k < SMOOTH_STEPS; k++) {\n const t = k / SMOOTH_STEPS;\n const t2 = t * t;\n const t3 = t2 * t;\n // cubic Hermite basis\n const v =\n (2 * t3 - 3 * t2 + 1) * y0 +\n (t3 - 2 * t2 + t) * m0 +\n (-2 * t3 + 3 * t2) * y1 +\n (t3 - t2) * m1;\n points[length * 2] = x0 + h * t;\n points[length * 2 + 1] = v;\n source[length++] = i;\n }\n }\n return { points, source, length };\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=e=>typeof e==`object`&&!!e&&!(`length`in e)&&`y`in e,t=(e,t)=>(n,r)=>{if(typeof n==`number`)return n;if(n instanceof Date)return n.getTime();if(typeof n==`string`){if(e===`category`)return t(n);if(e===`time`)return Date.parse(n);let i=Number(n);return Number.isNaN(i)?r:i}return r},n=e=>typeof e==`number`?e:e==null?NaN:Number(e),r=t=>{let n=new Set,r=e=>{typeof e==`string`&&n.add(e)};for(let n of t){if(e(n)){let e=n.x;if(e&&!ArrayBuffer.isView(e))for(let t=0;t<e.length;t++)r(e[t]);continue}let t=n;for(let e=0;e<t.length;e++){let n=t[e];Array.isArray(n)?r(n[0]):n&&typeof n==`object`&&r(n.x)}}return[...n]},
|
|
1
|
+
var e=e=>typeof e==`object`&&!!e&&!(`length`in e)&&`y`in e,t=(e,t)=>(n,r)=>{if(typeof n==`number`)return n;if(n instanceof Date)return n.getTime();if(typeof n==`string`){if(e===`category`)return t(n);if(e===`time`)return Date.parse(n);let i=Number(n);return Number.isNaN(i)?r:i}return r},n=e=>typeof e==`number`?e:e==null?NaN:e instanceof Date?e.getTime():Number(e),r=(e,t,n)=>{if(!e)return;let r=e[t];r<n.min&&(n.min=r),r>n.max&&(n.max=r)},i=t=>{let n=new Set;for(let r of t){if(e(r)){let e=r.y;if(!ArrayBuffer.isView(e))for(let t=0;t<e.length;t++){let r=e[t];typeof r==`string`&&n.add(r)}continue}let t=r;for(let e=0;e<t.length;e++){let r=t[e],i=Array.isArray(r)?r[1]:r&&typeof r==`object`?r.y:void 0;typeof i==`string`&&n.add(i)}}return[...n]},a=t=>{let n=new Set,r=e=>{typeof e==`string`&&n.add(e)};for(let n of t){if(e(n)){let e=n.x;if(e&&!ArrayBuffer.isView(e))for(let t=0;t<e.length;t++)r(e[t]);continue}let t=n;for(let e=0;e<t.length;e++){let n=t[e];Array.isArray(n)?r(n[0]):n&&typeof n==`object`&&r(n.x)}}return[...n]},o=(e,t,n,i)=>{let a=1/0,o=-1/0,s=!0,c=-1/0,{high:l,low:u,value:d,y0:f,q1:p,q3:m,outliers:h}=i,g=1/0,_=-1/0,v={min:1/0,max:-1/0},y=!!(l||u||f||p||m||h);for(let i=0;i<n;i++){let n=e[i];if(!Number.isFinite(n)){t[i]=NaN;continue}n<c&&(s=!1),c=n;let d=t[i];if(Number.isFinite(d)&&(n<a&&(a=n),n>o&&(o=n),d<g&&(g=d),d>_&&(_=d),y)){v.min=g,v.max=_,r(l,i,v),r(u,i,v),r(f,i,v),r(p,i,v),r(m,i,v);let e=h?.[i];if(e)for(let t of e)t<v.min&&(v.min=t),t>v.max&&(v.max=t);g=v.min,_=v.max}}let b=1/0,x=-1/0;if(d)for(let e=0;e<n;e++){let t=d[e];Number.isFinite(t)&&(t<b&&(b=t),t>x&&(x=t))}let S=a>o;return{x:e,y:t,count:n,sorted:s,xMin:S?NaN:a,xMax:S?NaN:o,yMin:S?NaN:g,yMax:S?NaN:_,valueMin:b>x?NaN:b,valueMax:b>x?NaN:x,...i}},s=(e,t)=>{if(!e)return null;if(e instanceof Float64Array&&e.length>=t)return e.length===t?e:e.subarray(0,t);let r=new Float64Array(t);for(let i=0;i<t;i++)r[i]=n(e[i]);return r},c=(t,r,i=n)=>{let a={size:null,colors:null,labels:null,open:null,high:null,low:null,value:null,y0:null,q1:null,q3:null,outliers:null};if(e(t)){let e=t.y.length,c=new Float64Array(e),l=t.x;if(!l)for(let t=0;t<e;t++)c[t]=t;else if(ArrayBuffer.isView(l)&&l.length>=e)c.set(l.length===e?l:l.subarray(0,e));else for(let t=0;t<e;t++)c[t]=r(l[t],t);let u=t.y,d;if(ArrayBuffer.isView(u))d=new Float64Array(e),d.set(u);else{d=new Float64Array(e);for(let t=0;t<e;t++)d[t]=i(u[t])}let f=null;if(t.size){f=new Float32Array(e);for(let r=0;r<e;r++)f[r]=n(t.size[r])}return o(c,d,e,{...a,size:f,open:s(t.open,e),high:s(t.high,e),low:s(t.low,e),value:s(t.value,e),y0:s(t.y0,e),q1:s(t.q1,e),q3:s(t.q3,e)})}let c=t,l=c.length,u=new Float64Array(l),d=new Float64Array(l),f=null,p=null,m=null,h=null,g=null,_=null,v=null,y=null,b=null,x=null,S=null,C=()=>new Float64Array(l).fill(NaN);for(let e=0;e<l;e++){let t=c[e];if(t==null||typeof t==`number`)u[e]=e,d[e]=n(t);else if(Array.isArray(t))u[e]=r(t[0],e),d[e]=i(t[1]);else if(typeof t==`object`){let a=t;u[e]=a.x===void 0?e:r(a.x,e),d[e]=i(a.y),a.size!==void 0&&(f??(f=new Float32Array(l).fill(NaN)),f[e]=a.size),a.color!==void 0&&(p??(p=Array(l)),p[e]=a.color),a.label!==void 0&&(m??(m=Array(l)),m[e]=a.label),a.open!==void 0&&((h??(h=C()))[e]=n(a.open)),a.high!==void 0&&((g??(g=C()))[e]=n(a.high)),a.low!==void 0&&((_??(_=C()))[e]=n(a.low)),a.value!==void 0&&((v??(v=C()))[e]=n(a.value)),a.y0!==void 0&&((y??(y=C()))[e]=n(a.y0)),a.q1!==void 0&&((b??(b=C()))[e]=n(a.q1)),a.q3!==void 0&&((x??(x=C()))[e]=n(a.q3)),a.outliers!==void 0&&a.outliers.length&&(S??(S=Array(l)),S[e]=a.outliers)}else u[e]=e,d[e]=NaN}return o(u,d,l,{size:f,colors:p,labels:m,open:h,high:g,low:_,value:v,y0:y,q1:b,q3:x,outliers:S})},l=(e,t,n)=>{let r=0,i=t;for(;r<i;){let t=r+i>>>1;e[t]<n?r=t+1:i=t}return r},u=(e,t,n,r)=>{if(n===0)return-1;let i=l(e,n,r),a=i-1,o=i;for(;a>=0&&!Number.isFinite(t[a]);)a--;for(;o<n&&!Number.isFinite(t[o]);)o++;return a<0?o<n?o:-1:o>=n||r-e[a]<=e[o]-r?a:o};exports.collectCategories=a,exports.collectYCategories=i,exports.lowerBound=l,exports.nearestIndex=u,exports.normalizeData=c,exports.xResolver=t;
|
|
2
2
|
//# sourceMappingURL=data.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.cjs","names":["isColumns","data","xResolver","value","type","categoryIndex","n","index","toNumber","v","collectCategories","seen","add","datas","xs","i","list","item","finalize","xMin","xMax","yMin","yMax","sorted","prev","count","xi","x","yi","y","empty","extra","normalizeData","none","resolveX","size","colors","labels","d","lowerBound","lo","hi","mid","nearestIndex","left","right"],"sources":["../../../../charts/src/engine/data.ts"],"sourcesContent":["// Normalization of series data into columns (Float64Array).\n\nimport type { ChartAxisType, ChartSeriesData, ChartXValue } from \"./types\";\n\nexport interface SeriesColumns {\n x: Float64Array;\n /** NaN where the value is missing */\n y: Float64Array;\n size: Float32Array | null;\n colors: (string | undefined)[] | null;\n labels: (string | undefined)[] | null;\n count: number;\n /** x is non-decreasing (binary search, decimation) */\n sorted: boolean;\n /** Extent of the finite points (NaN when there is none) */\n xMin: number;\n xMax: number;\n yMin: number;\n yMax: number;\n}\n\ntype XResolver = (value: ChartXValue, index: number) => number;\n\nconst isColumns = (\n data: ChartSeriesData,\n): data is {\n x?: ArrayLike<number> | readonly ChartXValue[];\n y: ArrayLike<number> | readonly (number | null)[];\n size?: ArrayLike<number>;\n} =>\n typeof data === \"object\" &&\n data !== null &&\n !(\"length\" in data) &&\n \"y\" in data;\n\n/** Converts an x value to a number for the axis type */\nexport const xResolver = (\n type: ChartAxisType,\n categoryIndex: (name: string) => number,\n): XResolver => {\n return (value, index) => {\n if (typeof value === \"number\") return value;\n if (value instanceof Date) return value.getTime();\n if (typeof value === \"string\") {\n if (type === \"category\") return categoryIndex(value);\n if (type === \"time\") return Date.parse(value);\n const n = Number(value);\n return Number.isNaN(n) ? index : n;\n }\n return index;\n };\n};\n\nconst toNumber = (v: unknown): number =>\n typeof v === \"number\" ? v : v === null || v === undefined ? NaN : Number(v);\n\n/** Category names used by string x values, in order of appearance */\nexport const collectCategories = (\n datas: readonly ChartSeriesData[],\n): string[] => {\n const seen = new Set<string>();\n const add = (v: unknown) => {\n if (typeof v === \"string\") seen.add(v);\n };\n for (const data of datas) {\n if (isColumns(data)) {\n const xs = data.x;\n if (xs && !ArrayBuffer.isView(xs)) {\n for (let i = 0; i < xs.length; i++) add(xs[i]);\n }\n continue;\n }\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n if (Array.isArray(item)) add(item[0]);\n else if (item && typeof item === \"object\")\n add((item as { x?: unknown }).x);\n }\n }\n return [...seen];\n};\n\nconst finalize = (\n x: Float64Array,\n y: Float64Array,\n count: number,\n extra: Pick<SeriesColumns, \"size\" | \"colors\" | \"labels\">,\n): SeriesColumns => {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n let sorted = true;\n let prev = -Infinity;\n for (let i = 0; i < count; i++) {\n const xi = x[i];\n if (!Number.isFinite(xi)) {\n y[i] = NaN;\n continue;\n }\n if (xi < prev) sorted = false;\n prev = xi;\n const yi = y[i];\n if (!Number.isFinite(yi)) continue;\n if (xi < xMin) xMin = xi;\n if (xi > xMax) xMax = xi;\n if (yi < yMin) yMin = yi;\n if (yi > yMax) yMax = yi;\n }\n const empty = xMin > xMax;\n return {\n x,\n y,\n count,\n sorted,\n xMin: empty ? NaN : xMin,\n xMax: empty ? NaN : xMax,\n yMin: empty ? NaN : yMin,\n yMax: empty ? NaN : yMax,\n ...extra,\n };\n};\n\n/** Turns any supported data form into columns */\nexport const normalizeData = (\n data: ChartSeriesData,\n resolveX: XResolver,\n): SeriesColumns => {\n const none = { size: null, colors: null, labels: null };\n if (isColumns(data)) {\n const count = data.y.length;\n const x = new Float64Array(count);\n const y = new Float64Array(count);\n const xs = data.x;\n for (let i = 0; i < count; i++) {\n y[i] = toNumber(data.y[i]);\n x[i] = xs ? resolveX(xs[i] as ChartXValue, i) : i;\n }\n let size: Float32Array | null = null;\n if (data.size) {\n size = new Float32Array(count);\n for (let i = 0; i < count; i++) size[i] = toNumber(data.size[i]);\n }\n return finalize(x, y, count, { ...none, size });\n }\n\n const list = data as ArrayLike<unknown>;\n const count = list.length;\n const x = new Float64Array(count);\n const y = new Float64Array(count);\n let size: Float32Array | null = null;\n let colors: (string | undefined)[] | null = null;\n let labels: (string | undefined)[] | null = null;\n\n for (let i = 0; i < count; i++) {\n const item = list[i];\n if (item === null || item === undefined || typeof item === \"number\") {\n x[i] = i;\n y[i] = toNumber(item);\n } else if (Array.isArray(item)) {\n x[i] = resolveX(item[0] as ChartXValue, i);\n y[i] = toNumber(item[1]);\n } else if (typeof item === \"object\") {\n const d = item as {\n x?: ChartXValue;\n y?: number | null;\n size?: number;\n color?: string;\n label?: string;\n };\n x[i] = d.x === undefined ? i : resolveX(d.x, i);\n y[i] = toNumber(d.y);\n if (d.size !== undefined) {\n size ??= new Float32Array(count).fill(NaN);\n size[i] = d.size;\n }\n if (d.color !== undefined) {\n colors ??= new Array<string | undefined>(count);\n colors[i] = d.color;\n }\n if (d.label !== undefined) {\n labels ??= new Array<string | undefined>(count);\n labels[i] = d.label;\n }\n } else {\n x[i] = i;\n y[i] = NaN;\n }\n }\n return finalize(x, y, count, { size, colors, labels });\n};\n\n/** First index whose x is >= value (sorted x) */\nexport const lowerBound = (\n x: ArrayLike<number>,\n count: number,\n value: number,\n): number => {\n let lo = 0;\n let hi = count;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (x[mid] < value) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n};\n\n/** Index of the point with the closest x and a finite y (sorted x), -1 if none */\nexport const nearestIndex = (\n x: ArrayLike<number>,\n y: ArrayLike<number>,\n count: number,\n value: number,\n): number => {\n if (count === 0) return -1;\n const i = lowerBound(x, count, value);\n let left = i - 1;\n let right = i;\n while (left >= 0 && !Number.isFinite(y[left])) left--;\n while (right < count && !Number.isFinite(y[right])) right++;\n if (left < 0) return right < count ? right : -1;\n if (right >= count) return left;\n return value - x[left] <= x[right] - value ? left : right;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data.cjs","names":["isColumns","data","xResolver","value","type","categoryIndex","n","index","toNumber","v","widen","column","i","range","collectYCategories","seen","datas","ys","list","item","collectCategories","add","xs","finalize","xMin","xMax","sorted","prev","extra","yMin","yMax","more","high","low","y0","q1","q3","outliers","count","xi","x","yi","y","out","valueMin","valueMax","empty","values","normalizeData","none","resolveX","resolveY","size","colors","labels","open","nanColumn","d","lowerBound","lo","hi","mid","nearestIndex","left","right"],"sources":["../../../../charts/src/engine/data.ts"],"sourcesContent":["// Normalization of series data into columns (Float64Array).\n\nimport type { ChartAxisType, ChartSeriesData, ChartXValue } from \"./types\";\n\nexport interface SeriesColumns {\n x: Float64Array;\n /** NaN where the value is missing */\n y: Float64Array;\n size: Float32Array | null;\n colors: (string | undefined)[] | null;\n labels: (string | undefined)[] | null;\n /** Candlesticks: open / high / low (y is the close) */\n open: Float64Array | null;\n high: Float64Array | null;\n low: Float64Array | null;\n /** Heatmaps: values of the cells */\n value: Float64Array | null;\n /** Floating bars / range areas: starts (lower edges); NaN where missing */\n y0: Float64Array | null;\n /** Box plots: quartiles and outliers */\n q1: Float64Array | null;\n q3: Float64Array | null;\n outliers: (readonly number[] | undefined)[] | null;\n count: number;\n /** x is non-decreasing (binary search, decimation) */\n sorted: boolean;\n /** Extent of the finite points (NaN when there is none); high / low included */\n xMin: number;\n xMax: number;\n yMin: number;\n yMax: number;\n /** Extent of the finite `value`s (NaN when there is none) */\n valueMin: number;\n valueMax: number;\n}\n\ntype XResolver = (value: ChartXValue, index: number) => number;\n/** Converts a y value (a category name on category y axes) to a number */\nexport type YResolver = (value: unknown) => number;\n\ntype Extra = Pick<\n SeriesColumns,\n | \"size\"\n | \"colors\"\n | \"labels\"\n | \"open\"\n | \"high\"\n | \"low\"\n | \"value\"\n | \"y0\"\n | \"q1\"\n | \"q3\"\n | \"outliers\"\n>;\n\nconst isColumns = (\n data: ChartSeriesData,\n): data is {\n x?: ArrayLike<number> | readonly ChartXValue[];\n y: ArrayLike<number> | readonly (number | string | null)[];\n y0?: ArrayLike<number> | readonly (number | null)[];\n size?: ArrayLike<number>;\n open?: ArrayLike<number>;\n high?: ArrayLike<number>;\n low?: ArrayLike<number>;\n q1?: ArrayLike<number>;\n q3?: ArrayLike<number>;\n value?: ArrayLike<number> | readonly (number | null)[];\n} =>\n typeof data === \"object\" &&\n data !== null &&\n !(\"length\" in data) &&\n \"y\" in data;\n\n/** Converts an x value to a number for the axis type */\nexport const xResolver = (\n type: ChartAxisType,\n categoryIndex: (name: string) => number,\n): XResolver => {\n return (value, index) => {\n if (typeof value === \"number\") return value;\n if (value instanceof Date) return value.getTime();\n if (typeof value === \"string\") {\n if (type === \"category\") return categoryIndex(value);\n if (type === \"time\") return Date.parse(value);\n const n = Number(value);\n return Number.isNaN(n) ? index : n;\n }\n return index;\n };\n};\n\nconst toNumber = (v: unknown): number =>\n typeof v === \"number\"\n ? v\n : v === null || v === undefined\n ? NaN\n : v instanceof Date\n ? v.getTime()\n : Number(v);\n\n/** Includes the finite values of a column at `i` in an extent */\nconst widen = (\n column: Float64Array | null,\n i: number,\n range: { min: number; max: number },\n) => {\n if (!column) return;\n const v = column[i];\n if (v < range.min) range.min = v;\n if (v > range.max) range.max = v;\n};\n\n/** Category names used by string y values (heatmap rows), in order of appearance */\nexport const collectYCategories = (\n datas: readonly ChartSeriesData[],\n): string[] => {\n const seen = new Set<string>();\n for (const data of datas) {\n if (isColumns(data)) {\n const ys = data.y;\n if (!ArrayBuffer.isView(ys)) {\n for (let i = 0; i < ys.length; i++) {\n const v = ys[i];\n if (typeof v === \"string\") seen.add(v);\n }\n }\n continue;\n }\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n const v = Array.isArray(item)\n ? item[1]\n : item && typeof item === \"object\"\n ? (item as { y?: unknown }).y\n : undefined;\n if (typeof v === \"string\") seen.add(v);\n }\n }\n return [...seen];\n};\n\n/** Category names used by string x values, in order of appearance */\nexport const collectCategories = (\n datas: readonly ChartSeriesData[],\n): string[] => {\n const seen = new Set<string>();\n const add = (v: unknown) => {\n if (typeof v === \"string\") seen.add(v);\n };\n for (const data of datas) {\n if (isColumns(data)) {\n const xs = data.x;\n if (xs && !ArrayBuffer.isView(xs)) {\n for (let i = 0; i < xs.length; i++) add(xs[i]);\n }\n continue;\n }\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n if (Array.isArray(item)) add(item[0]);\n else if (item && typeof item === \"object\")\n add((item as { x?: unknown }).x);\n }\n }\n return [...seen];\n};\n\nconst finalize = (\n x: Float64Array,\n y: Float64Array,\n count: number,\n extra: Extra,\n): SeriesColumns => {\n let xMin = Infinity;\n let xMax = -Infinity;\n let sorted = true;\n let prev = -Infinity;\n const { high, low, value, y0, q1, q3, outliers } = extra;\n let yMin = Infinity;\n let yMax = -Infinity;\n const range = { min: Infinity, max: -Infinity };\n const more = !!(high || low || y0 || q1 || q3 || outliers);\n for (let i = 0; i < count; i++) {\n const xi = x[i];\n if (!Number.isFinite(xi)) {\n y[i] = NaN;\n continue;\n }\n if (xi < prev) sorted = false;\n prev = xi;\n const yi = y[i];\n if (!Number.isFinite(yi)) continue;\n if (xi < xMin) xMin = xi;\n if (xi > xMax) xMax = xi;\n if (yi < yMin) yMin = yi;\n if (yi > yMax) yMax = yi;\n if (more) {\n // comparisons with NaN are false: missing values are skipped\n range.min = yMin;\n range.max = yMax;\n widen(high, i, range);\n widen(low, i, range);\n widen(y0, i, range);\n widen(q1, i, range);\n widen(q3, i, range);\n const out = outliers?.[i];\n if (out) {\n for (const v of out) {\n if (v < range.min) range.min = v;\n if (v > range.max) range.max = v;\n }\n }\n yMin = range.min;\n yMax = range.max;\n }\n }\n let valueMin = Infinity;\n let valueMax = -Infinity;\n if (value) {\n for (let i = 0; i < count; i++) {\n const v = value[i];\n if (!Number.isFinite(v)) continue;\n if (v < valueMin) valueMin = v;\n if (v > valueMax) valueMax = v;\n }\n }\n const empty = xMin > xMax;\n return {\n x,\n y,\n count,\n sorted,\n xMin: empty ? NaN : xMin,\n xMax: empty ? NaN : xMax,\n yMin: empty ? NaN : yMin,\n yMax: empty ? NaN : yMax,\n valueMin: valueMin > valueMax ? NaN : valueMin,\n valueMax: valueMin > valueMax ? NaN : valueMax,\n ...extra,\n };\n};\n\nconst column = (\n values: ArrayLike<unknown> | undefined,\n count: number,\n): Float64Array | null => {\n if (!values) return null;\n if (values instanceof Float64Array && values.length >= count) {\n return values.length === count ? values : values.subarray(0, count);\n }\n const out = new Float64Array(count);\n for (let i = 0; i < count; i++) out[i] = toNumber(values[i]);\n return out;\n};\n\n/** Turns any supported data form into columns */\nexport const normalizeData = (\n data: ChartSeriesData,\n resolveX: XResolver,\n resolveY: YResolver = toNumber,\n): SeriesColumns => {\n const none: Extra = {\n size: null,\n colors: null,\n labels: null,\n open: null,\n high: null,\n low: null,\n value: null,\n y0: null,\n q1: null,\n q3: null,\n outliers: null,\n };\n if (isColumns(data)) {\n const count = data.y.length;\n const x = new Float64Array(count);\n const xs = data.x;\n if (!xs) {\n for (let i = 0; i < count; i++) x[i] = i;\n } else if (ArrayBuffer.isView(xs) && xs.length >= count) {\n // typed arrays: a plain copy (the hot path of large data sets)\n x.set(\n (xs.length === count\n ? xs\n : (xs as unknown as Float64Array).subarray(\n 0,\n count,\n )) as ArrayLike<number>,\n );\n } else {\n for (let i = 0; i < count; i++) x[i] = resolveX(xs[i] as ChartXValue, i);\n }\n const ys = data.y;\n let y: Float64Array;\n if (ArrayBuffer.isView(ys)) {\n // finalize writes NaN at invalid x: copy so the input is never changed\n y = new Float64Array(count);\n y.set(ys as ArrayLike<number>);\n } else {\n y = new Float64Array(count);\n for (let i = 0; i < count; i++) y[i] = resolveY(ys[i]);\n }\n let size: Float32Array | null = null;\n if (data.size) {\n size = new Float32Array(count);\n for (let i = 0; i < count; i++) size[i] = toNumber(data.size[i]);\n }\n return finalize(x, y, count, {\n ...none,\n size,\n open: column(data.open, count),\n high: column(data.high, count),\n low: column(data.low, count),\n value: column(data.value, count),\n y0: column(data.y0, count),\n q1: column(data.q1, count),\n q3: column(data.q3, count),\n });\n }\n\n const list = data as ArrayLike<unknown>;\n const count = list.length;\n const x = new Float64Array(count);\n const y = new Float64Array(count);\n let size: Float32Array | null = null;\n let colors: (string | undefined)[] | null = null;\n let labels: (string | undefined)[] | null = null;\n let open: Float64Array | null = null;\n let high: Float64Array | null = null;\n let low: Float64Array | null = null;\n let value: Float64Array | null = null;\n let y0: Float64Array | null = null;\n let q1: Float64Array | null = null;\n let q3: Float64Array | null = null;\n let outliers: (readonly number[] | undefined)[] | null = null;\n const nanColumn = () => new Float64Array(count).fill(NaN);\n\n for (let i = 0; i < count; i++) {\n const item = list[i];\n if (item === null || item === undefined || typeof item === \"number\") {\n x[i] = i;\n y[i] = toNumber(item);\n } else if (Array.isArray(item)) {\n x[i] = resolveX(item[0] as ChartXValue, i);\n y[i] = resolveY(item[1]);\n } else if (typeof item === \"object\") {\n const d = item as {\n x?: ChartXValue;\n y?: number | string | null;\n size?: number;\n color?: string;\n label?: string;\n open?: number;\n high?: number;\n low?: number;\n value?: number | null;\n y0?: number | Date | null;\n q1?: number;\n q3?: number;\n outliers?: readonly number[];\n };\n x[i] = d.x === undefined ? i : resolveX(d.x, i);\n y[i] = resolveY(d.y);\n if (d.size !== undefined) {\n size ??= new Float32Array(count).fill(NaN);\n size[i] = d.size;\n }\n if (d.color !== undefined) {\n colors ??= new Array<string | undefined>(count);\n colors[i] = d.color;\n }\n if (d.label !== undefined) {\n labels ??= new Array<string | undefined>(count);\n labels[i] = d.label;\n }\n if (d.open !== undefined) (open ??= nanColumn())[i] = toNumber(d.open);\n if (d.high !== undefined) (high ??= nanColumn())[i] = toNumber(d.high);\n if (d.low !== undefined) (low ??= nanColumn())[i] = toNumber(d.low);\n if (d.value !== undefined) (value ??= nanColumn())[i] = toNumber(d.value);\n if (d.y0 !== undefined) (y0 ??= nanColumn())[i] = toNumber(d.y0);\n if (d.q1 !== undefined) (q1 ??= nanColumn())[i] = toNumber(d.q1);\n if (d.q3 !== undefined) (q3 ??= nanColumn())[i] = toNumber(d.q3);\n if (d.outliers !== undefined && d.outliers.length) {\n outliers ??= new Array<readonly number[] | undefined>(count);\n outliers[i] = d.outliers;\n }\n } else {\n x[i] = i;\n y[i] = NaN;\n }\n }\n return finalize(x, y, count, {\n size,\n colors,\n labels,\n open,\n high,\n low,\n value,\n y0,\n q1,\n q3,\n outliers,\n });\n};\n\n/** First index whose x is >= value (sorted x) */\nexport const lowerBound = (\n x: ArrayLike<number>,\n count: number,\n value: number,\n): number => {\n let lo = 0;\n let hi = count;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (x[mid] < value) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n};\n\n/** Index of the point with the closest x and a finite y (sorted x), -1 if none */\nexport const nearestIndex = (\n x: ArrayLike<number>,\n y: ArrayLike<number>,\n count: number,\n value: number,\n): number => {\n if (count === 0) return -1;\n const i = lowerBound(x, count, value);\n let left = i - 1;\n let right = i;\n while (left >= 0 && !Number.isFinite(y[left])) left--;\n while (right < count && !Number.isFinite(y[right])) right++;\n if (left < 0) return right < count ? right : -1;\n if (right >= count) return left;\n return value - x[left] <= x[right] - value ? left : right;\n};\n"],"mappings":"AAuDA,IAAMA,EACJ,GAaA,OAAOC,GAAS,YAChBA,GACA,EAAE,WAAYA,IACd,MAAOA,EAGIC,GACX,EACA,KAEQ,EAAO,IAAU,CACvB,GAAI,OAAOC,GAAU,SAAU,OAAOA,EACtC,GAAIA,aAAiB,KAAM,OAAOA,EAAM,QAAQ,EAChD,GAAI,OAAOA,GAAU,SAAU,CAC7B,GAAIC,IAAS,WAAY,OAAOC,EAAcF,CAAK,EACnD,GAAIC,IAAS,OAAQ,OAAO,KAAK,MAAMD,CAAK,EAC5C,IAAMG,EAAI,OAAOH,CAAK,EACtB,OAAO,OAAO,MAAMG,CAAC,EAAIC,EAAQD,CACnC,CACA,OAAOC,CACT,EAGIC,EAAY,GAChB,OAAOC,GAAM,SACTA,EACAA,GAAM,KACJ,IACAA,aAAa,KACXA,EAAE,QAAQ,EACV,OAAOA,CAAC,EAGZC,GACJ,EACA,EACA,IACG,CACH,GAAI,CAACC,EAAQ,OACb,IAAMF,EAAIE,EAAOC,GACbH,EAAII,EAAM,MAAK,EAAM,IAAMJ,GAC3BA,EAAII,EAAM,MAAK,EAAM,IAAMJ,EACjC,EAGaK,EACX,GACa,CACb,IAAMC,EAAO,IAAI,IACjB,IAAK,IAAMd,KAAQe,EAAO,CACxB,GAAIhB,EAAUC,CAAI,EAAG,CACnB,IAAMgB,EAAKhB,EAAK,EAChB,GAAI,CAAC,YAAY,OAAOgB,CAAE,EACxB,IAAK,IAAIL,EAAI,EAAGA,EAAIK,EAAG,OAAQ,IAAK,CAClC,IAAMR,EAAIQ,EAAGL,GACT,OAAOH,GAAM,UAAUM,EAAK,IAAIN,CAAC,CACvC,CAEF,QACF,CACA,IAAMS,EAAOjB,EACb,IAAK,IAAIW,EAAI,EAAGA,EAAIM,EAAK,OAAQ,IAAK,CACpC,IAAMC,EAAOD,EAAKN,GACZH,EAAI,MAAM,QAAQU,CAAI,EACxBA,EAAK,GACLA,GAAQ,OAAOA,GAAS,SACrBA,EAAyB,EAC1B,IAAA,GACF,OAAOV,GAAM,UAAUM,EAAK,IAAIN,CAAC,CACvC,CACF,CACA,MAAO,CAAC,GAAGM,CAAI,CACjB,EAGaK,EACX,GACa,CACb,IAAML,EAAO,IAAI,IACXM,EAAO,GAAe,CACtB,OAAOZ,GAAM,UAAUM,EAAK,IAAIN,CAAC,CACvC,EACA,IAAK,IAAMR,KAAQe,EAAO,CACxB,GAAIhB,EAAUC,CAAI,EAAG,CACnB,IAAMqB,EAAKrB,EAAK,EAChB,GAAIqB,GAAM,CAAC,YAAY,OAAOA,CAAE,EAC9B,IAAK,IAAIV,EAAI,EAAGA,EAAIU,EAAG,OAAQ,IAAKD,EAAIC,EAAGV,EAAE,EAE/C,QACF,CACA,IAAMM,EAAOjB,EACb,IAAK,IAAIW,EAAI,EAAGA,EAAIM,EAAK,OAAQ,IAAK,CACpC,IAAMC,EAAOD,EAAKN,GACd,MAAM,QAAQO,CAAI,EAAGE,EAAIF,EAAK,EAAE,EAC3BA,GAAQ,OAAOA,GAAS,UAC/BE,EAAKF,EAAyB,CAAC,CACnC,CACF,CACA,MAAO,CAAC,GAAGJ,CAAI,CACjB,EAEMQ,GACJ,EACA,EACA,EACA,IACkB,CAClB,IAAIC,EAAO,IACPC,EAAO,KACPC,EAAS,GACTC,EAAO,KACL,CAAE,OAAM,MAAK,QAAO,KAAI,KAAI,KAAI,YAAaC,EAC/CC,EAAO,IACPC,EAAO,KACLjB,EAAQ,CAAE,IAAK,IAAU,IAAK,IAAU,EACxCkB,EAAO,CAAC,EAAEC,GAAQC,GAAOC,GAAMC,GAAMC,GAAMC,GACjD,IAAK,IAAI,EAAI,EAAG,EAAIC,EAAO,IAAK,CAC9B,IAAMC,EAAKC,EAAE,GACb,GAAI,CAAC,OAAO,SAASD,CAAE,EAAG,CACxB,EAAE,GAAK,IACP,QACF,CACIA,EAAKZ,IAAM,EAAS,IACxB,EAAOY,EACP,IAAME,EAAKC,EAAE,GACb,GAAK,OAAO,SAASD,CAAE,IACnBF,EAAKf,IAAM,EAAOe,GAClBA,EAAKd,IAAM,EAAOc,GAClBE,EAAKZ,IAAM,EAAOY,GAClBA,EAAKX,IAAM,EAAOW,GAClBV,GAAM,CAER,EAAM,IAAMF,EACZ,EAAM,IAAMC,EACZpB,EAAMsB,EAAM,EAAGnB,CAAK,EACpBH,EAAMuB,EAAK,EAAGpB,CAAK,EACnBH,EAAMwB,EAAI,EAAGrB,CAAK,EAClBH,EAAMyB,EAAI,EAAGtB,CAAK,EAClBH,EAAM0B,EAAI,EAAGvB,CAAK,EAClB,IAAM8B,EAAMN,IAAW,GACvB,GAAIM,EACF,IAAK,IAAMlC,KAAKkC,EACVlC,EAAII,EAAM,MAAK,EAAM,IAAMJ,GAC3BA,EAAII,EAAM,MAAK,EAAM,IAAMJ,GAGnC,EAAOI,EAAM,IACb,EAAOA,EAAM,GACf,CACF,CACA,IAAI+B,EAAW,IACXC,EAAW,KACf,GAAI1C,EACF,IAAK,IAAIS,EAAI,EAAGA,EAAI0B,EAAO,IAAK,CAC9B,IAAM7B,EAAIN,EAAMS,GACX,OAAO,SAASH,CAAC,IAClBA,EAAImC,IAAU,EAAWnC,GACzBA,EAAIoC,IAAU,EAAWpC,GAC/B,CAEF,IAAMqC,EAAQtB,EAAOC,EACrB,MAAO,CACL,IACA,IACA,QACA,SACA,KAAMqB,EAAQ,IAAMtB,EACpB,KAAMsB,EAAQ,IAAMrB,EACpB,KAAMqB,EAAQ,IAAMjB,EACpB,KAAMiB,EAAQ,IAAMhB,EACpB,SAAUc,EAAWC,EAAW,IAAMD,EACtC,SAAUA,EAAWC,EAAW,IAAMA,EACtC,GAAGjB,CACL,CACF,EAEMjB,GACJ,EACA,IACwB,CACxB,GAAI,CAACoC,EAAQ,OAAO,KACpB,GAAIA,aAAkB,cAAgBA,EAAO,QAAUT,EACrD,OAAOS,EAAO,SAAWT,EAAQS,EAASA,EAAO,SAAS,EAAGT,CAAK,EAEpE,IAAMK,EAAM,IAAI,aAAaL,CAAK,EAClC,IAAK,IAAI,EAAI,EAAG,EAAIA,EAAO,IAAK,EAAI,GAAK9B,EAASuC,EAAO,EAAE,EAC3D,OAAOJ,CACT,EAGaK,GACX,EACA,EACA,EAAsBxC,IACJ,CAClB,IAAMyC,EAAc,CAClB,KAAM,KACN,OAAQ,KACR,OAAQ,KACR,KAAM,KACN,KAAM,KACN,IAAK,KACL,MAAO,KACP,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,SAAU,IACZ,EACA,GAAIjD,EAAUC,CAAI,EAAG,CACnB,IAAMqC,EAAQrC,EAAK,EAAE,OACfuC,EAAI,IAAI,aAAaF,CAAK,EAC1BhB,EAAKrB,EAAK,EAChB,GAAI,CAACqB,EACH,IAAK,IAAIV,EAAI,EAAGA,EAAI0B,EAAO,IAAK,EAAE1B,GAAKA,OAClC,GAAI,YAAY,OAAOU,CAAE,GAAKA,EAAG,QAAUgB,EAEhDE,EAAE,IACClB,EAAG,SAAWgB,EACXhB,EACCA,EAA+B,SAC9B,EACAgB,CACF,CACN,OAEA,IAAK,IAAI1B,EAAI,EAAGA,EAAI0B,EAAO,IAAK,EAAE1B,GAAKsC,EAAS5B,EAAGV,GAAmBA,CAAC,EAEzE,IAAMK,EAAKhB,EAAK,EACZyC,EACJ,GAAI,YAAY,OAAOzB,CAAE,EAEvB,EAAI,IAAI,aAAaqB,CAAK,EAC1BI,EAAE,IAAIzB,CAAuB,MACxB,CACL,EAAI,IAAI,aAAaqB,CAAK,EAC1B,IAAK,IAAI1B,EAAI,EAAGA,EAAI0B,EAAO,IAAK,EAAE1B,GAAKuC,EAASlC,EAAGL,EAAE,CACvD,CACA,IAAIwC,EAA4B,KAChC,GAAInD,EAAK,KAAM,CACb,EAAO,IAAI,aAAaqC,CAAK,EAC7B,IAAK,IAAI1B,EAAI,EAAGA,EAAI0B,EAAO,IAAK,EAAK1B,GAAKJ,EAASP,EAAK,KAAKW,EAAE,CACjE,CACA,OAAOW,EAASiB,EAAGE,EAAGJ,EAAO,CAC3B,GAAGW,EACH,OACA,KAAMtC,EAAOV,EAAK,KAAMqC,CAAK,EAC7B,KAAM3B,EAAOV,EAAK,KAAMqC,CAAK,EAC7B,IAAK3B,EAAOV,EAAK,IAAKqC,CAAK,EAC3B,MAAO3B,EAAOV,EAAK,MAAOqC,CAAK,EAC/B,GAAI3B,EAAOV,EAAK,GAAIqC,CAAK,EACzB,GAAI3B,EAAOV,EAAK,GAAIqC,CAAK,EACzB,GAAI3B,EAAOV,EAAK,GAAIqC,CAAK,CAC3B,CAAC,CACH,CAEA,IAAMpB,EAAOjB,EACPqC,EAAQpB,EAAK,OACbsB,EAAI,IAAI,aAAaF,CAAK,EAC1BI,EAAI,IAAI,aAAaJ,CAAK,EAC5Bc,EAA4B,KAC5BC,EAAwC,KACxCC,EAAwC,KACxCC,EAA4B,KAC5BvB,EAA4B,KAC5BC,EAA2B,KAC3B9B,EAA6B,KAC7B+B,EAA0B,KAC1BC,EAA0B,KAC1BC,EAA0B,KAC1BC,EAAqD,KACnDmB,MAAkB,IAAI,aAAalB,CAAK,CAAC,CAAC,KAAK,GAAG,EAExD,IAAK,IAAI1B,EAAI,EAAGA,EAAI0B,EAAO,IAAK,CAC9B,IAAMnB,EAAOD,EAAKN,GAClB,GAAIO,GAAS,MAA8B,OAAOA,GAAS,SACzD,EAAEP,GAAKA,EACP,EAAEA,GAAKJ,EAASW,CAAI,OACf,GAAI,MAAM,QAAQA,CAAI,EAC3B,EAAEP,GAAKsC,EAAS/B,EAAK,GAAmBP,CAAC,EACzC,EAAEA,GAAKuC,EAAShC,EAAK,EAAE,OAClB,GAAI,OAAOA,GAAS,SAAU,CACnC,IAAMsC,EAAItC,EAeV,EAAEP,GAAK6C,EAAE,IAAM,IAAA,GAAY7C,EAAIsC,EAASO,EAAE,EAAG7C,CAAC,EAC9C,EAAEA,GAAKuC,EAASM,EAAE,CAAC,EACfA,EAAE,OAAS,IAAA,KACbL,IAAA,EAAS,IAAI,aAAad,CAAK,CAAC,CAAC,KAAK,GAAG,GACzC,EAAK1B,GAAK6C,EAAE,MAEVA,EAAE,QAAU,IAAA,KACdJ,IAAA,EAAe,MAA0Bf,CAAK,GAC9C,EAAO1B,GAAK6C,EAAE,OAEZA,EAAE,QAAU,IAAA,KACdH,IAAA,EAAe,MAA0BhB,CAAK,GAC9C,EAAO1B,GAAK6C,EAAE,OAEZA,EAAE,OAAS,IAAA,KAAW,CAACF,IAAA,EAASC,EAAU,GAAA,CAAG5C,GAAKJ,EAASiD,EAAE,IAAI,GACjEA,EAAE,OAAS,IAAA,KAAW,CAACzB,IAAA,EAASwB,EAAU,GAAA,CAAG5C,GAAKJ,EAASiD,EAAE,IAAI,GACjEA,EAAE,MAAQ,IAAA,KAAW,CAACxB,IAAA,EAAQuB,EAAU,GAAA,CAAG5C,GAAKJ,EAASiD,EAAE,GAAG,GAC9DA,EAAE,QAAU,IAAA,KAAW,CAACtD,IAAA,EAAUqD,EAAU,GAAA,CAAG5C,GAAKJ,EAASiD,EAAE,KAAK,GACpEA,EAAE,KAAO,IAAA,KAAW,CAACvB,IAAA,EAAOsB,EAAU,GAAA,CAAG5C,GAAKJ,EAASiD,EAAE,EAAE,GAC3DA,EAAE,KAAO,IAAA,KAAW,CAACtB,IAAA,EAAOqB,EAAU,GAAA,CAAG5C,GAAKJ,EAASiD,EAAE,EAAE,GAC3DA,EAAE,KAAO,IAAA,KAAW,CAACrB,IAAA,EAAOoB,EAAU,GAAA,CAAG5C,GAAKJ,EAASiD,EAAE,EAAE,GAC3DA,EAAE,WAAa,IAAA,IAAaA,EAAE,SAAS,SACzCpB,IAAA,EAAiB,MAAqCC,CAAK,GAC3D,EAAS1B,GAAK6C,EAAE,SAEpB,KACE,GAAE7C,GAAKA,EACP,EAAEA,GAAK,GAEX,CACA,OAAOW,EAASiB,EAAGE,EAAGJ,EAAO,CAC3B,OACA,SACA,SACA,OACA,OACA,MACA,QACA,KACA,KACA,KACA,UACF,CAAC,CACH,EAGaoB,GACX,EACA,EACA,IACW,CACX,IAAIC,EAAK,EACLC,EAAKtB,EACT,KAAOqB,EAAKC,GAAI,CACd,IAAMC,EAAOF,EAAKC,IAAQ,EACtBpB,EAAEqB,GAAO1D,EAAO,EAAK0D,EAAM,EAC1B,EAAKA,CACZ,CACA,OAAOF,CACT,EAGaG,GACX,EACA,EACA,EACA,IACW,CACX,GAAIxB,IAAU,EAAG,MAAO,GACxB,IAAM,EAAIoB,EAAWlB,EAAGF,EAAOnC,CAAK,EAChC4D,EAAO,EAAI,EACXC,EAAQ,EACZ,KAAOD,GAAQ,GAAK,CAAC,OAAO,SAASrB,EAAEqB,EAAK,GAAG,IAC/C,KAAOC,EAAQ1B,GAAS,CAAC,OAAO,SAASI,EAAEsB,EAAM,GAAG,IAGpD,OAFID,EAAO,EAAUC,EAAQ1B,EAAQ0B,EAAQ,GACzCA,GAAS1B,GACNnC,EAAQqC,EAAEuB,IAASvB,EAAEwB,GAAS7D,EADV4D,EACyBC,CACtD"}
|
|
@@ -6,22 +6,41 @@ export interface SeriesColumns {
|
|
|
6
6
|
size: Float32Array | null;
|
|
7
7
|
colors: (string | undefined)[] | null;
|
|
8
8
|
labels: (string | undefined)[] | null;
|
|
9
|
+
/** Candlesticks: open / high / low (y is the close) */
|
|
10
|
+
open: Float64Array | null;
|
|
11
|
+
high: Float64Array | null;
|
|
12
|
+
low: Float64Array | null;
|
|
13
|
+
/** Heatmaps: values of the cells */
|
|
14
|
+
value: Float64Array | null;
|
|
15
|
+
/** Floating bars / range areas: starts (lower edges); NaN where missing */
|
|
16
|
+
y0: Float64Array | null;
|
|
17
|
+
/** Box plots: quartiles and outliers */
|
|
18
|
+
q1: Float64Array | null;
|
|
19
|
+
q3: Float64Array | null;
|
|
20
|
+
outliers: (readonly number[] | undefined)[] | null;
|
|
9
21
|
count: number;
|
|
10
22
|
/** x is non-decreasing (binary search, decimation) */
|
|
11
23
|
sorted: boolean;
|
|
12
|
-
/** Extent of the finite points (NaN when there is none) */
|
|
24
|
+
/** Extent of the finite points (NaN when there is none); high / low included */
|
|
13
25
|
xMin: number;
|
|
14
26
|
xMax: number;
|
|
15
27
|
yMin: number;
|
|
16
28
|
yMax: number;
|
|
29
|
+
/** Extent of the finite `value`s (NaN when there is none) */
|
|
30
|
+
valueMin: number;
|
|
31
|
+
valueMax: number;
|
|
17
32
|
}
|
|
18
33
|
type XResolver = (value: ChartXValue, index: number) => number;
|
|
34
|
+
/** Converts a y value (a category name on category y axes) to a number */
|
|
35
|
+
export type YResolver = (value: unknown) => number;
|
|
19
36
|
/** Converts an x value to a number for the axis type */
|
|
20
37
|
export declare const xResolver: (type: ChartAxisType, categoryIndex: (name: string) => number) => XResolver;
|
|
38
|
+
/** Category names used by string y values (heatmap rows), in order of appearance */
|
|
39
|
+
export declare const collectYCategories: (datas: readonly ChartSeriesData[]) => string[];
|
|
21
40
|
/** Category names used by string x values, in order of appearance */
|
|
22
41
|
export declare const collectCategories: (datas: readonly ChartSeriesData[]) => string[];
|
|
23
42
|
/** Turns any supported data form into columns */
|
|
24
|
-
export declare const normalizeData: (data: ChartSeriesData, resolveX: XResolver) => SeriesColumns;
|
|
43
|
+
export declare const normalizeData: (data: ChartSeriesData, resolveX: XResolver, resolveY?: YResolver) => SeriesColumns;
|
|
25
44
|
/** First index whose x is >= value (sorted x) */
|
|
26
45
|
export declare const lowerBound: (x: ArrayLike<number>, count: number, value: number) => number;
|
|
27
46
|
/** Index of the point with the closest x and a finite y (sorted x), -1 if none */
|