minerva-design 1.3.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 +9 -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 +7 -2
- package/dist/charts/canvas.d.ts +7 -2
- package/dist/charts/core.cjs +1 -1
- package/dist/charts/core.d.cts +7 -4
- package/dist/charts/core.d.ts +7 -4
- package/dist/charts/core.js +19 -8
- 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 +118 -68
- package/dist/charts/engine/canvas.js.map +1 -1
- package/dist/charts/engine/chart.cjs +1 -1
- 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 +307 -285
- 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.js +2 -2
- package/dist/charts/engine/color.js.map +1 -1
- package/dist/charts/engine/controller.cjs +1 -1
- package/dist/charts/engine/controller.cjs.map +1 -1
- package/dist/charts/engine/controller.d.cts +12 -3
- package/dist/charts/engine/controller.d.ts +12 -3
- package/dist/charts/engine/controller.js +359 -299
- package/dist/charts/engine/controller.js.map +1 -1
- package/dist/charts/engine/data.cjs +1 -1
- package/dist/charts/engine/data.cjs.map +1 -1
- package/dist/charts/engine/data.d.cts +6 -0
- package/dist/charts/engine/data.d.ts +6 -0
- package/dist/charts/engine/data.js +63 -49
- package/dist/charts/engine/data.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 +211 -54
- 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 +39 -1
- package/dist/charts/engine/model.d.ts +39 -1
- package/dist/charts/engine/model.js +212 -105
- 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 -2
- package/dist/charts/engine/overlay.d.ts +18 -2
- package/dist/charts/engine/overlay.js +132 -96
- 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 +249 -1
- package/dist/charts/engine/presets.d.ts +249 -1
- package/dist/charts/engine/presets.js +367 -29
- package/dist/charts/engine/presets.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/shaders.cjs +143 -1
- package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
- package/dist/charts/engine/renderers/shaders.d.cts +16 -0
- package/dist/charts/engine/renderers/shaders.d.ts +16 -0
- package/dist/charts/engine/renderers/shaders.js +139 -1
- package/dist/charts/engine/renderers/shaders.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 +59 -108
- package/dist/charts/engine/renderers/webgl2.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 +14 -4
- package/dist/charts/engine/scene.d.ts +14 -4
- package/dist/charts/engine/scene.js +292 -163
- 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 +1 -1
- package/dist/charts/engine/shapes/canvas.cjs.map +1 -1
- package/dist/charts/engine/shapes/canvas.d.cts +7 -0
- package/dist/charts/engine/shapes/canvas.d.ts +7 -0
- package/dist/charts/engine/shapes/canvas.js +22 -13
- package/dist/charts/engine/shapes/canvas.js.map +1 -1
- package/dist/charts/engine/shapes/chart.cjs +1 -1
- package/dist/charts/engine/shapes/chart.cjs.map +1 -1
- package/dist/charts/engine/shapes/chart.d.cts +3 -2
- package/dist/charts/engine/shapes/chart.d.ts +3 -2
- package/dist/charts/engine/shapes/chart.js +45 -26
- package/dist/charts/engine/shapes/chart.js.map +1 -1
- package/dist/charts/engine/shapes/draw.cjs +1 -1
- package/dist/charts/engine/shapes/draw.cjs.map +1 -1
- package/dist/charts/engine/shapes/draw.d.cts +3 -1
- package/dist/charts/engine/shapes/draw.d.ts +3 -1
- package/dist/charts/engine/shapes/draw.js +31 -18
- package/dist/charts/engine/shapes/draw.js.map +1 -1
- package/dist/charts/engine/shapes/funnel.cjs +1 -1
- package/dist/charts/engine/shapes/funnel.cjs.map +1 -1
- package/dist/charts/engine/shapes/funnel.js +3 -3
- package/dist/charts/engine/shapes/funnel.js.map +1 -1
- package/dist/charts/engine/shapes/gauge.cjs +1 -1
- package/dist/charts/engine/shapes/gauge.cjs.map +1 -1
- package/dist/charts/engine/shapes/gauge.js +132 -95
- package/dist/charts/engine/shapes/gauge.js.map +1 -1
- package/dist/charts/engine/shapes/hit.cjs +1 -1
- package/dist/charts/engine/shapes/hit.cjs.map +1 -1
- package/dist/charts/engine/shapes/hit.d.cts +3 -1
- package/dist/charts/engine/shapes/hit.d.ts +3 -1
- package/dist/charts/engine/shapes/hit.js +29 -8
- package/dist/charts/engine/shapes/hit.js.map +1 -1
- package/dist/charts/engine/shapes/index.d.cts +4 -1
- package/dist/charts/engine/shapes/index.d.ts +4 -1
- 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 +2 -2
- package/dist/charts/engine/shapes/layout.cjs.map +1 -1
- package/dist/charts/engine/shapes/layout.d.cts +8 -3
- package/dist/charts/engine/shapes/layout.d.ts +8 -3
- package/dist/charts/engine/shapes/layout.js +200 -113
- package/dist/charts/engine/shapes/layout.js.map +1 -1
- package/dist/charts/engine/shapes/pie.cjs +1 -1
- package/dist/charts/engine/shapes/pie.cjs.map +1 -1
- package/dist/charts/engine/shapes/pie.js +2 -2
- package/dist/charts/engine/shapes/pie.js.map +1 -1
- package/dist/charts/engine/shapes/radar.cjs +1 -1
- package/dist/charts/engine/shapes/radar.cjs.map +1 -1
- package/dist/charts/engine/shapes/radar.d.cts +2 -2
- package/dist/charts/engine/shapes/radar.d.ts +2 -2
- package/dist/charts/engine/shapes/radar.js +50 -49
- package/dist/charts/engine/shapes/radar.js.map +1 -1
- 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 +1 -1
- package/dist/charts/engine/shapes/runtime.cjs.map +1 -1
- package/dist/charts/engine/shapes/runtime.d.cts +9 -2
- package/dist/charts/engine/shapes/runtime.d.ts +9 -2
- package/dist/charts/engine/shapes/runtime.js +61 -51
- package/dist/charts/engine/shapes/runtime.js.map +1 -1
- 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 +1 -1
- package/dist/charts/engine/shapes/scene.cjs.map +1 -1
- package/dist/charts/engine/shapes/scene.d.cts +62 -8
- package/dist/charts/engine/shapes/scene.d.ts +62 -8
- package/dist/charts/engine/shapes/scene.js +33 -31
- package/dist/charts/engine/shapes/scene.js.map +1 -1
- 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 +1 -1
- package/dist/charts/engine/shapes/treemap.cjs.map +1 -1
- package/dist/charts/engine/shapes/treemap.js +2 -2
- package/dist/charts/engine/shapes/treemap.js.map +1 -1
- package/dist/charts/engine/shapes/types.d.cts +439 -12
- package/dist/charts/engine/shapes/types.d.ts +439 -12
- 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 +165 -14
- package/dist/charts/engine/types.d.ts +165 -14
- package/dist/charts/index.cjs +1 -1
- package/dist/charts/index.d.cts +7 -4
- package/dist/charts/index.d.ts +7 -4
- package/dist/charts/index.js +22 -11
- package/dist/charts/react/Chart.cjs +1 -1
- package/dist/charts/react/Chart.cjs.map +1 -1
- package/dist/charts/react/Chart.d.cts +4 -4
- package/dist/charts/react/Chart.d.ts +4 -4
- package/dist/charts/react/Chart.js +5 -1
- 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 +39 -1
- package/dist/charts/react/charts.d.ts +39 -1
- package/dist/charts/react/charts.js +303 -131
- 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 +1 -1
- package/dist/charts/react/shapes.cjs.map +1 -1
- package/dist/charts/react/shapes.d.cts +291 -9
- package/dist/charts/react/shapes.d.ts +291 -9
- package/dist/charts/react/shapes.js +280 -93
- package/dist/charts/react/shapes.js.map +1 -1
- 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 +132 -8
- package/dist/charts/react/types.d.ts +132 -8
- 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/controller.cjs +1 -1
- package/dist/native/charts/src/engine/controller.cjs.map +1 -1
- package/dist/native/charts/src/engine/controller.js +352 -292
- package/dist/native/charts/src/engine/controller.js.map +1 -1
- 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 +63 -49
- 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 +223 -116
- 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 +46 -23
- 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 +448 -33
- 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 +296 -167
- 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/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 +234 -217
- 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 +154 -84
- 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 +7517 -1856
- 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 +8 -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 +1433 -4478
- 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","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","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","ORDER","scenePrimitives","maxDots","limits","maxBars","column","out","series","end","curved","curvePoints","n","points","bottoms","d","decimateMinMax","nextBottom","k","j","xv","segments","bottomSegments","run","runBottom","yv","bv","half","rects","colors","merge","lastCol","ya","yb","col","pc","toCss","up","down","wicks","bodies","wickColors","bodyColors","step","c","open","color","hi","high","lo","low","hw","hh","inset","unpackColor","dots","colorOf","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, unpackColor } from \"./color\";\nimport { curvePoints } from \"./curve\";\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 legendShape,\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: 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(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(\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 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 /** Stacked areas: y pixel of the bottom edge under every point of `segments` */\n bottoms?: 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 /** CSS color of every rect (candlesticks, heatmap cells, colored bars); `color` otherwise */\n colors?: string[];\n /** Corner radius in pixels */\n radius?: 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 candlestick: 3,\n line: 4,\n scatter: 5,\n} as const;\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 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 > (plot.width * 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 const segments: number[][] = [];\n const bottomSegments: number[][] = [];\n let run: number[] = [];\n let runBottom: number[] = [];\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 if (run.length) {\n segments.push(run);\n bottomSegments.push(runBottom);\n }\n run = [];\n runBottom = [];\n continue;\n }\n run.push(sc.xToPx(xv), sc.yToPx(yv));\n if (bottoms) runBottom.push(sc.yToPx(bv));\n }\n if (run.length) {\n segments.push(run);\n bottomSegments.push(runBottom);\n }\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 });\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 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 < 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 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,\n ...(s.pointColors ? { colors } : {}),\n radius: s.radius,\n });\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 / 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 < plot.x || cx - half > plot.x + plot.width) 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: wicks,\n colors: wickColors,\n },\n {\n kind: \"bars\",\n seriesIndex: s.index,\n color: up,\n rects: 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 cx = sc.xToPx(x[i]);\n const cy = sc.yToPx(y[i]);\n if (\n cx + hw < plot.x ||\n cx - hw > plot.x + plot.width ||\n cy + hh < plot.y ||\n cy - hh > plot.y + plot.height\n )\n continue;\n rects.push(\n cx - hw + inset,\n cy - hh + inset,\n hw * 2 - inset * 2,\n hh * 2 - 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 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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"}
|
|
@@ -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;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]},
|
|
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","collectYCategories","seen","datas","ys","i","list","item","collectCategories","add","xs","finalize","xMin","xMax","yMin","yMax","sorted","prev","extra","count","xi","x","yi","y","high","h","low","l","valueMin","valueMax","empty","column","values","out","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 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\" | \"colors\" | \"labels\" | \"open\" | \"high\" | \"low\" | \"value\"\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 size?: ArrayLike<number>;\n open?: ArrayLike<number>;\n high?: ArrayLike<number>;\n low?: 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\" ? v : v === null || v === undefined ? NaN : Number(v);\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 yMin = Infinity;\n let yMax = -Infinity;\n let sorted = true;\n let prev = -Infinity;\n const { high, low, value } = extra;\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 (high) {\n const h = high[i];\n if (h > yMax) yMax = h;\n if (h < yMin) yMin = h;\n }\n if (low) {\n const l = low[i];\n if (l < yMin) yMin = l;\n if (l > yMax) yMax = l;\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 };\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 });\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 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 };\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 } 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 });\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":"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"}
|
|
@@ -12,6 +12,12 @@ export interface SeriesColumns {
|
|
|
12
12
|
low: Float64Array | null;
|
|
13
13
|
/** Heatmaps: values of the cells */
|
|
14
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;
|
|
15
21
|
count: number;
|
|
16
22
|
/** x is non-decreasing (binary search, decimation) */
|
|
17
23
|
sorted: boolean;
|
|
@@ -12,6 +12,12 @@ export interface SeriesColumns {
|
|
|
12
12
|
low: Float64Array | null;
|
|
13
13
|
/** Heatmaps: values of the cells */
|
|
14
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;
|
|
15
21
|
count: number;
|
|
16
22
|
/** x is non-decreasing (binary search, decimation) */
|
|
17
23
|
sorted: boolean;
|