minerva-design 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +21 -21
- package/custom-elements.json +13630 -4757
- package/dist/angular/fesm2022/minerva-angular.mjs +6872 -172
- package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
- package/dist/angular/types/minerva-angular.d.ts +2240 -0
- package/dist/charts/canvas.d.cts +10 -2
- package/dist/charts/canvas.d.ts +10 -2
- package/dist/charts/core.cjs +1 -1
- package/dist/charts/core.d.cts +9 -3
- package/dist/charts/core.d.ts +9 -3
- package/dist/charts/core.js +19 -6
- package/dist/charts/engine/axis.cjs +1 -1
- package/dist/charts/engine/axis.cjs.map +1 -1
- package/dist/charts/engine/axis.js +6 -6
- package/dist/charts/engine/axis.js.map +1 -1
- package/dist/charts/engine/canvas.cjs +1 -1
- package/dist/charts/engine/canvas.cjs.map +1 -1
- package/dist/charts/engine/canvas.d.cts +11 -1
- package/dist/charts/engine/canvas.d.ts +11 -1
- package/dist/charts/engine/canvas.js +161 -99
- package/dist/charts/engine/canvas.js.map +1 -1
- package/dist/charts/engine/chart.cjs +1 -2
- package/dist/charts/engine/chart.cjs.map +1 -1
- package/dist/charts/engine/chart.d.cts +1 -1
- package/dist/charts/engine/chart.d.ts +1 -1
- package/dist/charts/engine/chart.js +390 -349
- package/dist/charts/engine/chart.js.map +1 -1
- package/dist/charts/engine/color.cjs +1 -1
- package/dist/charts/engine/color.cjs.map +1 -1
- package/dist/charts/engine/color.d.cts +17 -0
- package/dist/charts/engine/color.d.ts +17 -0
- package/dist/charts/engine/color.js +27 -3
- package/dist/charts/engine/color.js.map +1 -1
- package/dist/charts/engine/controller.cjs +2 -2
- package/dist/charts/engine/controller.cjs.map +1 -1
- package/dist/charts/engine/controller.d.cts +17 -2
- package/dist/charts/engine/controller.d.ts +17 -2
- package/dist/charts/engine/controller.js +404 -280
- package/dist/charts/engine/controller.js.map +1 -1
- package/dist/charts/engine/curve.cjs +2 -0
- package/dist/charts/engine/curve.cjs.map +1 -0
- package/dist/charts/engine/curve.d.cts +15 -0
- package/dist/charts/engine/curve.d.ts +15 -0
- package/dist/charts/engine/curve.js +56 -0
- package/dist/charts/engine/curve.js.map +1 -0
- package/dist/charts/engine/data.cjs +1 -1
- package/dist/charts/engine/data.cjs.map +1 -1
- package/dist/charts/engine/data.d.cts +21 -2
- package/dist/charts/engine/data.d.ts +21 -2
- package/dist/charts/engine/data.js +117 -43
- package/dist/charts/engine/data.js.map +1 -1
- package/dist/charts/engine/dom.cjs +1 -1
- package/dist/charts/engine/dom.cjs.map +1 -1
- package/dist/charts/engine/dom.d.cts +5 -3
- package/dist/charts/engine/dom.d.ts +5 -3
- package/dist/charts/engine/dom.js +27 -22
- package/dist/charts/engine/dom.js.map +1 -1
- package/dist/charts/engine/format.cjs +1 -1
- package/dist/charts/engine/format.cjs.map +1 -1
- package/dist/charts/engine/format.d.cts +21 -6
- package/dist/charts/engine/format.d.ts +21 -6
- package/dist/charts/engine/format.js +46 -21
- package/dist/charts/engine/format.js.map +1 -1
- package/dist/charts/engine/items.cjs +1 -1
- package/dist/charts/engine/items.cjs.map +1 -1
- package/dist/charts/engine/items.js +290 -62
- package/dist/charts/engine/items.js.map +1 -1
- package/dist/charts/engine/labels.cjs +2 -0
- package/dist/charts/engine/labels.cjs.map +1 -0
- package/dist/charts/engine/labels.d.cts +13 -0
- package/dist/charts/engine/labels.d.ts +13 -0
- package/dist/charts/engine/labels.js +74 -0
- package/dist/charts/engine/labels.js.map +1 -0
- package/dist/charts/engine/layout.cjs +1 -1
- package/dist/charts/engine/layout.cjs.map +1 -1
- package/dist/charts/engine/layout.d.cts +34 -2
- package/dist/charts/engine/layout.d.ts +34 -2
- package/dist/charts/engine/layout.js +53 -12
- package/dist/charts/engine/layout.js.map +1 -1
- package/dist/charts/engine/locale.cjs +2 -0
- package/dist/charts/engine/locale.cjs.map +1 -0
- package/dist/charts/engine/locale.d.cts +33 -0
- package/dist/charts/engine/locale.d.ts +33 -0
- package/dist/charts/engine/locale.js +68 -0
- package/dist/charts/engine/locale.js.map +1 -0
- package/dist/charts/engine/model.cjs +1 -1
- package/dist/charts/engine/model.cjs.map +1 -1
- package/dist/charts/engine/model.d.cts +68 -3
- package/dist/charts/engine/model.d.ts +68 -3
- package/dist/charts/engine/model.js +332 -108
- package/dist/charts/engine/model.js.map +1 -1
- package/dist/charts/engine/orderbook/book.cjs +2 -0
- package/dist/charts/engine/orderbook/book.cjs.map +1 -0
- package/dist/charts/engine/orderbook/book.d.cts +28 -0
- package/dist/charts/engine/orderbook/book.d.ts +28 -0
- package/dist/charts/engine/orderbook/book.js +134 -0
- package/dist/charts/engine/orderbook/book.js.map +1 -0
- package/dist/charts/engine/orderbook/depth.cjs +2 -0
- package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
- package/dist/charts/engine/orderbook/depth.d.cts +7 -0
- package/dist/charts/engine/orderbook/depth.d.ts +7 -0
- package/dist/charts/engine/orderbook/depth.js +413 -0
- package/dist/charts/engine/orderbook/depth.js.map +1 -0
- package/dist/charts/engine/orderbook/format.cjs +2 -0
- package/dist/charts/engine/orderbook/format.cjs.map +1 -0
- package/dist/charts/engine/orderbook/format.d.cts +48 -0
- package/dist/charts/engine/orderbook/format.d.ts +48 -0
- package/dist/charts/engine/orderbook/format.js +65 -0
- package/dist/charts/engine/orderbook/format.js.map +1 -0
- package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
- package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
- package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
- package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
- package/dist/charts/engine/orderbook/heatmap.js +703 -0
- package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
- package/dist/charts/engine/orderbook/host.cjs +2 -0
- package/dist/charts/engine/orderbook/host.cjs.map +1 -0
- package/dist/charts/engine/orderbook/host.d.cts +50 -0
- package/dist/charts/engine/orderbook/host.d.ts +50 -0
- package/dist/charts/engine/orderbook/host.js +161 -0
- package/dist/charts/engine/orderbook/host.js.map +1 -0
- package/dist/charts/engine/orderbook/index.cjs +1 -0
- package/dist/charts/engine/orderbook/index.d.cts +6 -0
- package/dist/charts/engine/orderbook/index.d.ts +6 -0
- package/dist/charts/engine/orderbook/index.js +6 -0
- package/dist/charts/engine/orderbook/ladder.cjs +2 -0
- package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
- package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
- package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
- package/dist/charts/engine/orderbook/ladder.js +341 -0
- package/dist/charts/engine/orderbook/ladder.js.map +1 -0
- package/dist/charts/engine/orderbook/tape.cjs +2 -0
- package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
- package/dist/charts/engine/orderbook/tape.d.cts +6 -0
- package/dist/charts/engine/orderbook/tape.d.ts +6 -0
- package/dist/charts/engine/orderbook/tape.js +450 -0
- package/dist/charts/engine/orderbook/tape.js.map +1 -0
- package/dist/charts/engine/orderbook/types.d.cts +735 -0
- package/dist/charts/engine/orderbook/types.d.ts +735 -0
- package/dist/charts/engine/overlay.cjs +1 -1
- package/dist/charts/engine/overlay.cjs.map +1 -1
- package/dist/charts/engine/overlay.d.cts +18 -0
- package/dist/charts/engine/overlay.d.ts +18 -0
- package/dist/charts/engine/overlay.js +138 -102
- package/dist/charts/engine/overlay.js.map +1 -1
- package/dist/charts/engine/presets.cjs +2 -2
- package/dist/charts/engine/presets.cjs.map +1 -1
- package/dist/charts/engine/presets.d.cts +319 -5
- package/dist/charts/engine/presets.d.ts +319 -5
- package/dist/charts/engine/presets.js +463 -38
- package/dist/charts/engine/presets.js.map +1 -1
- package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
- package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
- package/dist/charts/engine/renderers/canvas2d.js +149 -111
- package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
- package/dist/charts/engine/renderers/detect.cjs +1 -1
- package/dist/charts/engine/renderers/detect.cjs.map +1 -1
- package/dist/charts/engine/renderers/detect.js +18 -15
- package/dist/charts/engine/renderers/detect.js.map +1 -1
- package/dist/charts/engine/renderers/gl.cjs +2 -0
- package/dist/charts/engine/renderers/gl.cjs.map +1 -0
- package/dist/charts/engine/renderers/gl.d.cts +21 -0
- package/dist/charts/engine/renderers/gl.d.ts +21 -0
- package/dist/charts/engine/renderers/gl.js +56 -0
- package/dist/charts/engine/renderers/gl.js.map +1 -0
- package/dist/charts/engine/renderers/range.cjs +1 -1
- package/dist/charts/engine/renderers/range.cjs.map +1 -1
- package/dist/charts/engine/renderers/range.js +4 -4
- package/dist/charts/engine/renderers/range.js.map +1 -1
- package/dist/charts/engine/renderers/shaders.cjs +180 -20
- package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
- package/dist/charts/engine/renderers/shaders.d.cts +18 -2
- package/dist/charts/engine/renderers/shaders.d.ts +18 -2
- package/dist/charts/engine/renderers/shaders.js +176 -20
- package/dist/charts/engine/renderers/shaders.js.map +1 -1
- package/dist/charts/engine/renderers/types.cjs.map +1 -1
- package/dist/charts/engine/renderers/types.d.cts +11 -4
- package/dist/charts/engine/renderers/types.d.ts +11 -4
- package/dist/charts/engine/renderers/types.js.map +1 -1
- package/dist/charts/engine/renderers/webgl.cjs +2 -0
- package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
- package/dist/charts/engine/renderers/webgl.d.cts +4 -0
- package/dist/charts/engine/renderers/webgl.d.ts +4 -0
- package/dist/charts/engine/renderers/webgl.js +133 -0
- package/dist/charts/engine/renderers/webgl.js.map +1 -0
- package/dist/charts/engine/renderers/webgl2.cjs +1 -1
- package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
- package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
- package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
- package/dist/charts/engine/renderers/webgl2.js +62 -90
- package/dist/charts/engine/renderers/webgl2.js.map +1 -1
- package/dist/charts/engine/renderers/webgpu.cjs +1 -1
- package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
- package/dist/charts/engine/renderers/webgpu.js +18 -15
- package/dist/charts/engine/renderers/webgpu.js.map +1 -1
- package/dist/charts/engine/scale.cjs +1 -1
- package/dist/charts/engine/scale.cjs.map +1 -1
- package/dist/charts/engine/scale.js +1 -1
- package/dist/charts/engine/scale.js.map +1 -1
- package/dist/charts/engine/scene.cjs +1 -1
- package/dist/charts/engine/scene.cjs.map +1 -1
- package/dist/charts/engine/scene.d.cts +32 -9
- package/dist/charts/engine/scene.d.ts +32 -9
- package/dist/charts/engine/scene.js +363 -122
- package/dist/charts/engine/scene.js.map +1 -1
- package/dist/charts/engine/shapes/bullet.cjs +2 -0
- package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
- package/dist/charts/engine/shapes/bullet.d.cts +6 -0
- package/dist/charts/engine/shapes/bullet.d.ts +6 -0
- package/dist/charts/engine/shapes/bullet.js +255 -0
- package/dist/charts/engine/shapes/bullet.js.map +1 -0
- package/dist/charts/engine/shapes/calendar.cjs +2 -0
- package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
- package/dist/charts/engine/shapes/calendar.d.cts +38 -0
- package/dist/charts/engine/shapes/calendar.d.ts +38 -0
- package/dist/charts/engine/shapes/calendar.js +369 -0
- package/dist/charts/engine/shapes/calendar.js.map +1 -0
- package/dist/charts/engine/shapes/canvas.cjs +2 -0
- package/dist/charts/engine/shapes/canvas.cjs.map +1 -0
- package/dist/charts/engine/shapes/canvas.d.cts +65 -0
- package/dist/charts/engine/shapes/canvas.d.ts +65 -0
- package/dist/charts/engine/shapes/canvas.js +168 -0
- package/dist/charts/engine/shapes/canvas.js.map +1 -0
- package/dist/charts/engine/shapes/chart.cjs +2 -0
- package/dist/charts/engine/shapes/chart.cjs.map +1 -0
- package/dist/charts/engine/shapes/chart.d.cts +7 -0
- package/dist/charts/engine/shapes/chart.d.ts +7 -0
- package/dist/charts/engine/shapes/chart.js +292 -0
- package/dist/charts/engine/shapes/chart.js.map +1 -0
- package/dist/charts/engine/shapes/draw.cjs +2 -0
- package/dist/charts/engine/shapes/draw.cjs.map +1 -0
- package/dist/charts/engine/shapes/draw.d.cts +22 -0
- package/dist/charts/engine/shapes/draw.d.ts +22 -0
- package/dist/charts/engine/shapes/draw.js +165 -0
- package/dist/charts/engine/shapes/draw.js.map +1 -0
- package/dist/charts/engine/shapes/funnel.cjs +2 -0
- package/dist/charts/engine/shapes/funnel.cjs.map +1 -0
- package/dist/charts/engine/shapes/funnel.d.cts +6 -0
- package/dist/charts/engine/shapes/funnel.d.ts +6 -0
- package/dist/charts/engine/shapes/funnel.js +149 -0
- package/dist/charts/engine/shapes/funnel.js.map +1 -0
- package/dist/charts/engine/shapes/gauge.cjs +2 -0
- package/dist/charts/engine/shapes/gauge.cjs.map +1 -0
- package/dist/charts/engine/shapes/gauge.d.cts +7 -0
- package/dist/charts/engine/shapes/gauge.d.ts +7 -0
- package/dist/charts/engine/shapes/gauge.js +210 -0
- package/dist/charts/engine/shapes/gauge.js.map +1 -0
- package/dist/charts/engine/shapes/hit.cjs +2 -0
- package/dist/charts/engine/shapes/hit.cjs.map +1 -0
- package/dist/charts/engine/shapes/hit.d.cts +30 -0
- package/dist/charts/engine/shapes/hit.d.ts +30 -0
- package/dist/charts/engine/shapes/hit.js +145 -0
- package/dist/charts/engine/shapes/hit.js.map +1 -0
- package/dist/charts/engine/shapes/index.d.cts +12 -0
- package/dist/charts/engine/shapes/index.d.ts +12 -0
- package/dist/charts/engine/shapes/labels.cjs +2 -0
- package/dist/charts/engine/shapes/labels.cjs.map +1 -0
- package/dist/charts/engine/shapes/labels.d.cts +14 -0
- package/dist/charts/engine/shapes/labels.d.ts +14 -0
- package/dist/charts/engine/shapes/labels.js +146 -0
- package/dist/charts/engine/shapes/labels.js.map +1 -0
- package/dist/charts/engine/shapes/layout.cjs +3 -0
- package/dist/charts/engine/shapes/layout.cjs.map +1 -0
- package/dist/charts/engine/shapes/layout.d.cts +93 -0
- package/dist/charts/engine/shapes/layout.d.ts +93 -0
- package/dist/charts/engine/shapes/layout.js +353 -0
- package/dist/charts/engine/shapes/layout.js.map +1 -0
- package/dist/charts/engine/shapes/pie.cjs +2 -0
- package/dist/charts/engine/shapes/pie.cjs.map +1 -0
- package/dist/charts/engine/shapes/pie.d.cts +20 -0
- package/dist/charts/engine/shapes/pie.d.ts +20 -0
- package/dist/charts/engine/shapes/pie.js +302 -0
- package/dist/charts/engine/shapes/pie.js.map +1 -0
- package/dist/charts/engine/shapes/radar.cjs +2 -0
- package/dist/charts/engine/shapes/radar.cjs.map +1 -0
- package/dist/charts/engine/shapes/radar.d.cts +8 -0
- package/dist/charts/engine/shapes/radar.d.ts +8 -0
- package/dist/charts/engine/shapes/radar.js +198 -0
- package/dist/charts/engine/shapes/radar.js.map +1 -0
- package/dist/charts/engine/shapes/radialBar.cjs +2 -0
- package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
- package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
- package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
- package/dist/charts/engine/shapes/radialBar.js +155 -0
- package/dist/charts/engine/shapes/radialBar.js.map +1 -0
- package/dist/charts/engine/shapes/runtime.cjs +2 -0
- package/dist/charts/engine/shapes/runtime.cjs.map +1 -0
- package/dist/charts/engine/shapes/runtime.d.cts +36 -0
- package/dist/charts/engine/shapes/runtime.d.ts +36 -0
- package/dist/charts/engine/shapes/runtime.js +107 -0
- package/dist/charts/engine/shapes/runtime.js.map +1 -0
- package/dist/charts/engine/shapes/sankey.cjs +2 -0
- package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
- package/dist/charts/engine/shapes/sankey.d.cts +29 -0
- package/dist/charts/engine/shapes/sankey.d.ts +29 -0
- package/dist/charts/engine/shapes/sankey.js +372 -0
- package/dist/charts/engine/shapes/sankey.js.map +1 -0
- package/dist/charts/engine/shapes/scene.cjs +2 -0
- package/dist/charts/engine/shapes/scene.cjs.map +1 -0
- package/dist/charts/engine/shapes/scene.d.cts +311 -0
- package/dist/charts/engine/shapes/scene.d.ts +311 -0
- package/dist/charts/engine/shapes/scene.js +125 -0
- package/dist/charts/engine/shapes/scene.js.map +1 -0
- package/dist/charts/engine/shapes/sunburst.cjs +2 -0
- package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
- package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
- package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
- package/dist/charts/engine/shapes/sunburst.js +261 -0
- package/dist/charts/engine/shapes/sunburst.js.map +1 -0
- package/dist/charts/engine/shapes/treemap.cjs +2 -0
- package/dist/charts/engine/shapes/treemap.cjs.map +1 -0
- package/dist/charts/engine/shapes/treemap.d.cts +14 -0
- package/dist/charts/engine/shapes/treemap.d.ts +14 -0
- package/dist/charts/engine/shapes/treemap.js +213 -0
- package/dist/charts/engine/shapes/treemap.js.map +1 -0
- package/dist/charts/engine/shapes/types.d.cts +719 -0
- package/dist/charts/engine/shapes/types.d.ts +719 -0
- package/dist/charts/engine/signature.cjs +2 -0
- package/dist/charts/engine/signature.cjs.map +1 -0
- package/dist/charts/engine/signature.d.cts +9 -0
- package/dist/charts/engine/signature.d.ts +9 -0
- package/dist/charts/engine/signature.js +13 -0
- package/dist/charts/engine/signature.js.map +1 -0
- package/dist/charts/engine/theme.cjs +1 -1
- package/dist/charts/engine/theme.cjs.map +1 -1
- package/dist/charts/engine/theme.d.cts +10 -1
- package/dist/charts/engine/theme.d.ts +10 -1
- package/dist/charts/engine/theme.js +40 -16
- package/dist/charts/engine/theme.js.map +1 -1
- package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
- package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
- package/dist/charts/engine/three-d/canvas2d.d.cts +4 -0
- package/dist/charts/engine/three-d/canvas2d.d.ts +4 -0
- package/dist/charts/engine/three-d/canvas2d.js +104 -0
- package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
- package/dist/charts/engine/three-d/chart.cjs +2 -0
- package/dist/charts/engine/three-d/chart.cjs.map +1 -0
- package/dist/charts/engine/three-d/chart.d.cts +15 -0
- package/dist/charts/engine/three-d/chart.d.ts +15 -0
- package/dist/charts/engine/three-d/chart.js +621 -0
- package/dist/charts/engine/three-d/chart.js.map +1 -0
- package/dist/charts/engine/three-d/colormap.cjs +2 -0
- package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
- package/dist/charts/engine/three-d/colormap.d.cts +16 -0
- package/dist/charts/engine/three-d/colormap.d.ts +16 -0
- package/dist/charts/engine/three-d/colormap.js +166 -0
- package/dist/charts/engine/three-d/colormap.js.map +1 -0
- package/dist/charts/engine/three-d/contours.cjs +2 -0
- package/dist/charts/engine/three-d/contours.cjs.map +1 -0
- package/dist/charts/engine/three-d/contours.d.cts +7 -0
- package/dist/charts/engine/three-d/contours.d.ts +7 -0
- package/dist/charts/engine/three-d/contours.js +47 -0
- package/dist/charts/engine/three-d/contours.js.map +1 -0
- package/dist/charts/engine/three-d/detect.cjs +2 -0
- package/dist/charts/engine/three-d/detect.cjs.map +1 -0
- package/dist/charts/engine/three-d/detect.d.cts +11 -0
- package/dist/charts/engine/three-d/detect.d.ts +11 -0
- package/dist/charts/engine/three-d/detect.js +35 -0
- package/dist/charts/engine/three-d/detect.js.map +1 -0
- package/dist/charts/engine/three-d/dom.cjs +2 -0
- package/dist/charts/engine/three-d/dom.cjs.map +1 -0
- package/dist/charts/engine/three-d/dom.d.cts +21 -0
- package/dist/charts/engine/three-d/dom.d.ts +21 -0
- package/dist/charts/engine/three-d/dom.js +98 -0
- package/dist/charts/engine/three-d/dom.js.map +1 -0
- package/dist/charts/engine/three-d/geometry.cjs +2 -0
- package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
- package/dist/charts/engine/three-d/geometry.d.cts +76 -0
- package/dist/charts/engine/three-d/geometry.d.ts +76 -0
- package/dist/charts/engine/three-d/geometry.js +529 -0
- package/dist/charts/engine/three-d/geometry.js.map +1 -0
- package/dist/charts/engine/three-d/hover.cjs +2 -0
- package/dist/charts/engine/three-d/hover.cjs.map +1 -0
- package/dist/charts/engine/three-d/hover.d.cts +25 -0
- package/dist/charts/engine/three-d/hover.d.ts +25 -0
- package/dist/charts/engine/three-d/hover.js +131 -0
- package/dist/charts/engine/three-d/hover.js.map +1 -0
- package/dist/charts/engine/three-d/index.cjs +1 -0
- package/dist/charts/engine/three-d/index.d.cts +2 -0
- package/dist/charts/engine/three-d/index.d.ts +2 -0
- package/dist/charts/engine/three-d/index.js +2 -0
- package/dist/charts/engine/three-d/labels.cjs +2 -0
- package/dist/charts/engine/three-d/labels.cjs.map +1 -0
- package/dist/charts/engine/three-d/labels.d.cts +23 -0
- package/dist/charts/engine/three-d/labels.d.ts +23 -0
- package/dist/charts/engine/three-d/labels.js +136 -0
- package/dist/charts/engine/three-d/labels.js.map +1 -0
- package/dist/charts/engine/three-d/math.cjs +2 -0
- package/dist/charts/engine/three-d/math.cjs.map +1 -0
- package/dist/charts/engine/three-d/math.d.cts +84 -0
- package/dist/charts/engine/three-d/math.d.ts +84 -0
- package/dist/charts/engine/three-d/math.js +150 -0
- package/dist/charts/engine/three-d/math.js.map +1 -0
- package/dist/charts/engine/three-d/model.cjs +2 -0
- package/dist/charts/engine/three-d/model.cjs.map +1 -0
- package/dist/charts/engine/three-d/model.d.cts +130 -0
- package/dist/charts/engine/three-d/model.d.ts +130 -0
- package/dist/charts/engine/three-d/model.js +277 -0
- package/dist/charts/engine/three-d/model.js.map +1 -0
- package/dist/charts/engine/three-d/overlay.cjs +2 -0
- package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
- package/dist/charts/engine/three-d/overlay.d.cts +72 -0
- package/dist/charts/engine/three-d/overlay.d.ts +72 -0
- package/dist/charts/engine/three-d/overlay.js +197 -0
- package/dist/charts/engine/three-d/overlay.js.map +1 -0
- package/dist/charts/engine/three-d/pick.cjs +2 -0
- package/dist/charts/engine/three-d/pick.cjs.map +1 -0
- package/dist/charts/engine/three-d/pick.d.cts +52 -0
- package/dist/charts/engine/three-d/pick.d.ts +52 -0
- package/dist/charts/engine/three-d/pick.js +220 -0
- package/dist/charts/engine/three-d/pick.js.map +1 -0
- package/dist/charts/engine/three-d/render-types.cjs +2 -0
- package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
- package/dist/charts/engine/three-d/render-types.d.cts +82 -0
- package/dist/charts/engine/three-d/render-types.d.ts +82 -0
- package/dist/charts/engine/three-d/render-types.js +13 -0
- package/dist/charts/engine/three-d/render-types.js.map +1 -0
- package/dist/charts/engine/three-d/shaders.cjs +276 -0
- package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
- package/dist/charts/engine/three-d/shaders.d.cts +26 -0
- package/dist/charts/engine/three-d/shaders.d.ts +26 -0
- package/dist/charts/engine/three-d/shaders.js +191 -0
- package/dist/charts/engine/three-d/shaders.js.map +1 -0
- package/dist/charts/engine/three-d/sort.cjs +2 -0
- package/dist/charts/engine/three-d/sort.cjs.map +1 -0
- package/dist/charts/engine/three-d/sort.d.cts +18 -0
- package/dist/charts/engine/three-d/sort.d.ts +18 -0
- package/dist/charts/engine/three-d/sort.js +71 -0
- package/dist/charts/engine/three-d/sort.js.map +1 -0
- package/dist/charts/engine/three-d/types.d.cts +588 -0
- package/dist/charts/engine/three-d/types.d.ts +588 -0
- package/dist/charts/engine/three-d/webgl.cjs +2 -0
- package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
- package/dist/charts/engine/three-d/webgl.d.cts +10 -0
- package/dist/charts/engine/three-d/webgl.d.ts +10 -0
- package/dist/charts/engine/three-d/webgl.js +130 -0
- package/dist/charts/engine/three-d/webgl.js.map +1 -0
- package/dist/charts/engine/three-d/webgpu.cjs +2 -0
- package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
- package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
- package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
- package/dist/charts/engine/three-d/webgpu.js +249 -0
- package/dist/charts/engine/three-d/webgpu.js.map +1 -0
- package/dist/charts/engine/time.cjs +1 -1
- package/dist/charts/engine/time.cjs.map +1 -1
- package/dist/charts/engine/time.d.cts +13 -4
- package/dist/charts/engine/time.d.ts +13 -4
- package/dist/charts/engine/time.js +156 -91
- package/dist/charts/engine/time.js.map +1 -1
- package/dist/charts/engine/trading/chart.cjs +2 -0
- package/dist/charts/engine/trading/chart.cjs.map +1 -0
- package/dist/charts/engine/trading/chart.d.cts +3 -0
- package/dist/charts/engine/trading/chart.d.ts +3 -0
- package/dist/charts/engine/trading/chart.js +1507 -0
- package/dist/charts/engine/trading/chart.js.map +1 -0
- package/dist/charts/engine/trading/drawings.cjs +2 -0
- package/dist/charts/engine/trading/drawings.cjs.map +1 -0
- package/dist/charts/engine/trading/drawings.d.cts +57 -0
- package/dist/charts/engine/trading/drawings.d.ts +57 -0
- package/dist/charts/engine/trading/drawings.js +160 -0
- package/dist/charts/engine/trading/drawings.js.map +1 -0
- package/dist/charts/engine/trading/format.cjs +2 -0
- package/dist/charts/engine/trading/format.cjs.map +1 -0
- package/dist/charts/engine/trading/format.d.cts +60 -0
- package/dist/charts/engine/trading/format.d.ts +60 -0
- package/dist/charts/engine/trading/format.js +131 -0
- package/dist/charts/engine/trading/format.js.map +1 -0
- package/dist/charts/engine/trading/geometry.cjs +2 -0
- package/dist/charts/engine/trading/geometry.cjs.map +1 -0
- package/dist/charts/engine/trading/geometry.d.cts +55 -0
- package/dist/charts/engine/trading/geometry.d.ts +55 -0
- package/dist/charts/engine/trading/geometry.js +131 -0
- package/dist/charts/engine/trading/geometry.js.map +1 -0
- package/dist/charts/engine/trading/index.cjs +1 -0
- package/dist/charts/engine/trading/index.d.cts +3 -0
- package/dist/charts/engine/trading/index.d.ts +3 -0
- package/dist/charts/engine/trading/index.js +3 -0
- package/dist/charts/engine/trading/indicators.cjs +2 -0
- package/dist/charts/engine/trading/indicators.cjs.map +1 -0
- package/dist/charts/engine/trading/indicators.d.cts +105 -0
- package/dist/charts/engine/trading/indicators.d.ts +105 -0
- package/dist/charts/engine/trading/indicators.js +268 -0
- package/dist/charts/engine/trading/indicators.js.map +1 -0
- package/dist/charts/engine/trading/labels.cjs +2 -0
- package/dist/charts/engine/trading/labels.cjs.map +1 -0
- package/dist/charts/engine/trading/labels.d.cts +7 -0
- package/dist/charts/engine/trading/labels.d.ts +7 -0
- package/dist/charts/engine/trading/labels.js +91 -0
- package/dist/charts/engine/trading/labels.js.map +1 -0
- package/dist/charts/engine/trading/scale.cjs +2 -0
- package/dist/charts/engine/trading/scale.cjs.map +1 -0
- package/dist/charts/engine/trading/scale.d.cts +46 -0
- package/dist/charts/engine/trading/scale.d.ts +46 -0
- package/dist/charts/engine/trading/scale.js +100 -0
- package/dist/charts/engine/trading/scale.js.map +1 -0
- package/dist/charts/engine/trading/store.cjs +2 -0
- package/dist/charts/engine/trading/store.cjs.map +1 -0
- package/dist/charts/engine/trading/store.d.cts +62 -0
- package/dist/charts/engine/trading/store.d.ts +62 -0
- package/dist/charts/engine/trading/store.js +129 -0
- package/dist/charts/engine/trading/store.js.map +1 -0
- package/dist/charts/engine/trading/studies.cjs +2 -0
- package/dist/charts/engine/trading/studies.cjs.map +1 -0
- package/dist/charts/engine/trading/studies.d.cts +52 -0
- package/dist/charts/engine/trading/studies.d.ts +52 -0
- package/dist/charts/engine/trading/studies.js +254 -0
- package/dist/charts/engine/trading/studies.js.map +1 -0
- package/dist/charts/engine/trading/types.d.cts +656 -0
- package/dist/charts/engine/trading/types.d.ts +656 -0
- package/dist/charts/engine/types.d.cts +227 -15
- package/dist/charts/engine/types.d.ts +227 -15
- package/dist/charts/index.cjs +1 -1
- package/dist/charts/index.d.cts +7 -2
- package/dist/charts/index.d.ts +7 -2
- package/dist/charts/index.js +22 -8
- package/dist/charts/react/Chart.cjs +1 -1
- package/dist/charts/react/Chart.cjs.map +1 -1
- package/dist/charts/react/Chart.d.cts +11 -4
- package/dist/charts/react/Chart.d.ts +11 -4
- package/dist/charts/react/Chart.js +70 -47
- package/dist/charts/react/Chart.js.map +1 -1
- package/dist/charts/react/charts.cjs +1 -1
- package/dist/charts/react/charts.cjs.map +1 -1
- package/dist/charts/react/charts.d.cts +48 -2
- package/dist/charts/react/charts.d.ts +48 -2
- package/dist/charts/react/charts.js +371 -76
- package/dist/charts/react/charts.js.map +1 -1
- package/dist/charts/react/orderbook.cjs +2 -0
- package/dist/charts/react/orderbook.cjs.map +1 -0
- package/dist/charts/react/orderbook.d.cts +142 -0
- package/dist/charts/react/orderbook.d.ts +142 -0
- package/dist/charts/react/orderbook.js +182 -0
- package/dist/charts/react/orderbook.js.map +1 -0
- package/dist/charts/react/shapes.cjs +2 -0
- package/dist/charts/react/shapes.cjs.map +1 -0
- package/dist/charts/react/shapes.d.cts +537 -0
- package/dist/charts/react/shapes.d.ts +537 -0
- package/dist/charts/react/shapes.js +429 -0
- package/dist/charts/react/shapes.js.map +1 -0
- package/dist/charts/react/three-d.cjs +2 -0
- package/dist/charts/react/three-d.cjs.map +1 -0
- package/dist/charts/react/three-d.d.cts +151 -0
- package/dist/charts/react/three-d.d.ts +151 -0
- package/dist/charts/react/three-d.js +154 -0
- package/dist/charts/react/three-d.js.map +1 -0
- package/dist/charts/react/trading.cjs +2 -0
- package/dist/charts/react/trading.cjs.map +1 -0
- package/dist/charts/react/trading.d.cts +93 -0
- package/dist/charts/react/trading.d.ts +93 -0
- package/dist/charts/react/trading.js +95 -0
- package/dist/charts/react/trading.js.map +1 -0
- package/dist/charts/react/types.d.cts +200 -7
- package/dist/charts/react/types.d.ts +200 -7
- package/dist/core/contracts.cjs +1 -1
- package/dist/core/contracts.cjs.map +1 -1
- package/dist/core/contracts.js +1 -1
- package/dist/core/contracts.js.map +1 -1
- package/dist/native/charts/src/canvas.cjs +1 -1
- package/dist/native/charts/src/canvas.js +9 -3
- package/dist/native/charts/src/engine/axis.cjs +1 -1
- package/dist/native/charts/src/engine/axis.cjs.map +1 -1
- package/dist/native/charts/src/engine/axis.js +6 -6
- package/dist/native/charts/src/engine/axis.js.map +1 -1
- package/dist/native/charts/src/engine/color.cjs +1 -1
- package/dist/native/charts/src/engine/color.cjs.map +1 -1
- package/dist/native/charts/src/engine/color.js +12 -3
- package/dist/native/charts/src/engine/color.js.map +1 -1
- package/dist/native/charts/src/engine/controller.cjs +2 -2
- package/dist/native/charts/src/engine/controller.cjs.map +1 -1
- package/dist/native/charts/src/engine/controller.js +418 -294
- package/dist/native/charts/src/engine/controller.js.map +1 -1
- package/dist/native/charts/src/engine/curve.cjs +2 -0
- package/dist/native/charts/src/engine/curve.cjs.map +1 -0
- package/dist/native/charts/src/engine/curve.js +56 -0
- package/dist/native/charts/src/engine/curve.js.map +1 -0
- package/dist/native/charts/src/engine/data.cjs +1 -1
- package/dist/native/charts/src/engine/data.cjs.map +1 -1
- package/dist/native/charts/src/engine/data.js +117 -43
- package/dist/native/charts/src/engine/data.js.map +1 -1
- package/dist/native/charts/src/engine/format.cjs +1 -1
- package/dist/native/charts/src/engine/format.cjs.map +1 -1
- package/dist/native/charts/src/engine/format.js +46 -21
- package/dist/native/charts/src/engine/format.js.map +1 -1
- package/dist/native/charts/src/engine/labels.cjs +2 -0
- package/dist/native/charts/src/engine/labels.cjs.map +1 -0
- package/dist/native/charts/src/engine/labels.js +74 -0
- package/dist/native/charts/src/engine/labels.js.map +1 -0
- package/dist/native/charts/src/engine/layout.cjs +1 -1
- package/dist/native/charts/src/engine/layout.cjs.map +1 -1
- package/dist/native/charts/src/engine/layout.js +53 -12
- package/dist/native/charts/src/engine/layout.js.map +1 -1
- package/dist/native/charts/src/engine/locale.cjs +2 -0
- package/dist/native/charts/src/engine/locale.cjs.map +1 -0
- package/dist/native/charts/src/engine/locale.js +60 -0
- package/dist/native/charts/src/engine/locale.js.map +1 -0
- package/dist/native/charts/src/engine/model.cjs +1 -1
- package/dist/native/charts/src/engine/model.cjs.map +1 -1
- package/dist/native/charts/src/engine/model.js +335 -111
- package/dist/native/charts/src/engine/model.js.map +1 -1
- package/dist/native/charts/src/engine/overlay.cjs +1 -1
- package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
- package/dist/native/charts/src/engine/overlay.js +54 -31
- package/dist/native/charts/src/engine/overlay.js.map +1 -1
- package/dist/native/charts/src/engine/presets.cjs +2 -2
- package/dist/native/charts/src/engine/presets.cjs.map +1 -1
- package/dist/native/charts/src/engine/presets.js +456 -34
- package/dist/native/charts/src/engine/presets.js.map +1 -1
- package/dist/native/charts/src/engine/scale.cjs +1 -1
- package/dist/native/charts/src/engine/scale.cjs.map +1 -1
- package/dist/native/charts/src/engine/scale.js +1 -1
- package/dist/native/charts/src/engine/scale.js.map +1 -1
- package/dist/native/charts/src/engine/scene.cjs +1 -1
- package/dist/native/charts/src/engine/scene.cjs.map +1 -1
- package/dist/native/charts/src/engine/scene.js +369 -128
- package/dist/native/charts/src/engine/scene.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
- package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/calendar.js +364 -0
- package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
- package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/draw.js +165 -0
- package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
- package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
- package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/hit.js +106 -0
- package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/labels.js +146 -0
- package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
- package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/layout.js +331 -0
- package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/pie.js +302 -0
- package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/radar.js +198 -0
- package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
- package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
- package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
- package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/scene.js +125 -0
- package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
- package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
- package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
- package/dist/native/charts/src/engine/theme.cjs.map +1 -1
- package/dist/native/charts/src/engine/theme.js.map +1 -1
- package/dist/native/charts/src/engine/time.cjs +1 -1
- package/dist/native/charts/src/engine/time.cjs.map +1 -1
- package/dist/native/charts/src/engine/time.js +156 -91
- package/dist/native/charts/src/engine/time.js.map +1 -1
- package/dist/native/components/Chart/ChartBase.cjs +1 -1
- package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
- package/dist/native/components/Chart/ChartBase.d.cts +1 -1
- package/dist/native/components/Chart/ChartBase.d.ts +1 -1
- package/dist/native/components/Chart/ChartBase.js +110 -107
- package/dist/native/components/Chart/ChartBase.js.map +1 -1
- package/dist/native/components/Chart/charts.cjs +1 -1
- package/dist/native/components/Chart/charts.cjs.map +1 -1
- package/dist/native/components/Chart/charts.d.cts +6 -1
- package/dist/native/components/Chart/charts.d.ts +6 -1
- package/dist/native/components/Chart/charts.js +53 -29
- package/dist/native/components/Chart/charts.js.map +1 -1
- package/dist/native/components/Chart/index.cjs +1 -1
- package/dist/native/components/Chart/index.d.cts +1 -1
- package/dist/native/components/Chart/index.d.ts +1 -1
- package/dist/native/components/Chart/index.js +2 -2
- package/dist/native/components/Chart/scene.cjs +1 -1
- package/dist/native/components/Chart/scene.cjs.map +1 -1
- package/dist/native/components/Chart/scene.js +244 -215
- package/dist/native/components/Chart/scene.js.map +1 -1
- package/dist/native/components/Chart/types.d.cts +26 -3
- package/dist/native/components/Chart/types.d.ts +26 -3
- package/dist/native/components/Charts/charts.cjs +2 -0
- package/dist/native/components/Charts/charts.cjs.map +1 -0
- package/dist/native/components/Charts/charts.d.cts +41 -0
- package/dist/native/components/Charts/charts.d.ts +41 -0
- package/dist/native/components/Charts/charts.js +338 -0
- package/dist/native/components/Charts/charts.js.map +1 -0
- package/dist/native/components/Charts/index.cjs +1 -0
- package/dist/native/components/Charts/index.d.cts +2 -0
- package/dist/native/components/Charts/index.d.ts +2 -0
- package/dist/native/components/Charts/index.js +2 -0
- package/dist/native/components/Charts/types.d.cts +144 -0
- package/dist/native/components/Charts/types.d.ts +144 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.js +271 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
- package/dist/native/components/ShapeChart/charts.cjs +2 -0
- package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
- package/dist/native/components/ShapeChart/charts.d.cts +38 -0
- package/dist/native/components/ShapeChart/charts.d.ts +38 -0
- package/dist/native/components/ShapeChart/charts.js +387 -0
- package/dist/native/components/ShapeChart/charts.js.map +1 -0
- package/dist/native/components/ShapeChart/draw.cjs +2 -0
- package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
- package/dist/native/components/ShapeChart/draw.d.cts +4 -0
- package/dist/native/components/ShapeChart/draw.d.ts +4 -0
- package/dist/native/components/ShapeChart/draw.js +104 -0
- package/dist/native/components/ShapeChart/draw.js.map +1 -0
- package/dist/native/components/ShapeChart/geometry.cjs +2 -0
- package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
- package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
- package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
- package/dist/native/components/ShapeChart/geometry.js +602 -0
- package/dist/native/components/ShapeChart/geometry.js.map +1 -0
- package/dist/native/components/ShapeChart/index.cjs +1 -0
- package/dist/native/components/ShapeChart/index.d.cts +2 -0
- package/dist/native/components/ShapeChart/index.d.ts +2 -0
- package/dist/native/components/ShapeChart/index.js +2 -0
- package/dist/native/components/ShapeChart/recorder.cjs +2 -0
- package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
- package/dist/native/components/ShapeChart/recorder.d.cts +106 -0
- package/dist/native/components/ShapeChart/recorder.d.ts +106 -0
- package/dist/native/components/ShapeChart/recorder.js +574 -0
- package/dist/native/components/ShapeChart/recorder.js.map +1 -0
- package/dist/native/components/ShapeChart/types.d.cts +509 -0
- package/dist/native/components/ShapeChart/types.d.ts +509 -0
- package/dist/native/index.cjs +1 -1
- package/dist/native/index.d.cts +2 -0
- package/dist/native/index.d.ts +2 -0
- package/dist/native/index.js +14 -10
- package/dist/native/manifest.d.cts +6 -4
- package/dist/native/manifest.d.ts +6 -4
- package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
- package/dist/native/source/components/Chart/charts.tsx +42 -6
- package/dist/native/source/components/Chart/index.ts +1 -0
- package/dist/native/source/components/Chart/scene.tsx +204 -100
- package/dist/native/source/components/Chart/types.ts +31 -1
- package/dist/native/source/components/Charts/charts.tsx +493 -0
- package/dist/native/source/components/Charts/index.ts +14 -0
- package/dist/native/source/components/Charts/types.ts +207 -0
- package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +484 -0
- package/dist/native/source/components/ShapeChart/charts.tsx +605 -0
- package/dist/native/source/components/ShapeChart/draw.tsx +170 -0
- package/dist/native/source/components/ShapeChart/geometry.ts +1185 -0
- package/dist/native/source/components/ShapeChart/index.ts +15 -0
- package/dist/native/source/components/ShapeChart/recorder.ts +830 -0
- package/dist/native/source/components/ShapeChart/types.ts +564 -0
- package/dist/native/source/index.ts +2 -0
- package/dist/native/source/manifest.ts +30 -4
- package/dist/taro/charts.d.ts +209 -4
- package/dist/taro/index.d.ts +1 -0
- package/dist/taro/index.js +8032 -1891
- package/dist/taro/manifest.d.ts +1 -0
- package/dist/taro/shape-charts.d.ts +537 -0
- package/dist/uni/AreaChart.vue +68 -0
- package/dist/uni/AreaChart.vue.d.ts +120 -0
- package/dist/uni/Badge.vue.d.ts +1 -1
- package/dist/uni/BoxPlotChart.vue +66 -0
- package/dist/uni/BoxPlotChart.vue.d.ts +102 -0
- package/dist/uni/BubbleChart.vue +68 -0
- package/dist/uni/BubbleChart.vue.d.ts +106 -0
- package/dist/uni/BulletChart.vue +86 -0
- package/dist/uni/BulletChart.vue.d.ts +110 -0
- package/dist/uni/CalendarHeatmap.vue +92 -0
- package/dist/uni/CalendarHeatmap.vue.d.ts +129 -0
- package/dist/uni/CandlestickChart.vue +66 -0
- package/dist/uni/CandlestickChart.vue.d.ts +100 -0
- package/dist/uni/DonutChart.vue +72 -0
- package/dist/uni/DonutChart.vue.d.ts +114 -0
- package/dist/uni/FunnelChart.vue +67 -0
- package/dist/uni/FunnelChart.vue.d.ts +104 -0
- package/dist/uni/GanttChart.vue +67 -0
- package/dist/uni/GanttChart.vue.d.ts +123 -0
- package/dist/uni/GaugeChart.vue +77 -0
- package/dist/uni/GaugeChart.vue.d.ts +123 -0
- package/dist/uni/HeatmapChart.vue +66 -0
- package/dist/uni/HeatmapChart.vue.d.ts +114 -0
- package/dist/uni/HistogramChart.vue +66 -0
- package/dist/uni/HistogramChart.vue.d.ts +121 -0
- package/dist/uni/HorizontalBarChart.vue +68 -0
- package/dist/uni/HorizontalBarChart.vue.d.ts +127 -0
- package/dist/uni/Input.vue.d.ts +1 -1
- package/dist/uni/MixedChart.vue +68 -0
- package/dist/uni/MixedChart.vue.d.ts +106 -0
- package/dist/uni/NumberInput.vue.d.ts +1 -1
- package/dist/uni/PieChart.vue +72 -0
- package/dist/uni/PieChart.vue.d.ts +114 -0
- package/dist/uni/RadarChart.vue +67 -0
- package/dist/uni/RadarChart.vue.d.ts +110 -0
- package/dist/uni/RadialBarChart.vue +90 -0
- package/dist/uni/RadialBarChart.vue.d.ts +132 -0
- package/dist/uni/RangeAreaChart.vue +68 -0
- package/dist/uni/RangeAreaChart.vue.d.ts +102 -0
- package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
- package/dist/uni/SankeyChart.vue +88 -0
- package/dist/uni/SankeyChart.vue.d.ts +121 -0
- package/dist/uni/ShapeChart.vue +73 -0
- package/dist/uni/ShapeChart.vue.d.ts +54 -0
- package/dist/uni/Sparkline.vue +58 -0
- package/dist/uni/Sparkline.vue.d.ts +77 -0
- package/dist/uni/SunburstChart.vue +90 -0
- package/dist/uni/SunburstChart.vue.d.ts +114 -0
- package/dist/uni/Textarea.vue.d.ts +1 -1
- package/dist/uni/TimePicker.vue.d.ts +1 -1
- package/dist/uni/TreemapChart.vue +65 -0
- package/dist/uni/TreemapChart.vue.d.ts +100 -0
- package/dist/uni/WaterfallChart.vue +66 -0
- package/dist/uni/WaterfallChart.vue.d.ts +125 -0
- package/dist/uni/chart-types.d.ts +216 -2
- package/dist/uni/chart-types.js +174 -0
- package/dist/uni/charts-canvas.js +10 -3
- package/dist/uni/index.d.ts +26 -1
- package/dist/uni/index.js +26 -1
- package/dist/uni/manifest.d.ts +272 -0
- package/dist/uni/manifest.js +387 -0
- package/dist/uni/named-chart-options.d.ts +88 -0
- package/dist/uni/named-chart-options.js +156 -0
- package/dist/uni/shape-chart-canvas.d.ts +51 -0
- package/dist/uni/shape-chart-canvas.js +342 -0
- package/dist/uni/shape-chart-types.d.ts +381 -0
- package/dist/uni/shape-chart-types.js +261 -0
- package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
- package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
- package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
- package/dist/vue/components/Chart/BarChart.vue.js +7 -0
- package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +112 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
- package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
- package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
- package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
- package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
- package/dist/vue/components/Chart/Chart.vue.js +7 -0
- package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
- package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
- package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
- package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
- package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
- package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
- package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GanttChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
- package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +98 -0
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
- package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +125 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
- package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
- package/dist/vue/components/Chart/LineChart.vue.js +7 -0
- package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
- package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
- package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
- package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
- package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
- package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
- package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +128 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
- package/dist/vue/components/Chart/PieChart.vue.js +7 -0
- package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
- package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
- package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
- package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
- package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
- package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
- package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
- package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
- package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
- package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
- package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
- package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
- package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
- package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +114 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
- package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TradingChart.vue.d.ts +160 -0
- package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
- package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
- package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
- package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
- package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/cartesian.d.ts +47 -0
- package/dist/vue/components/Chart/cartesian.js +56 -0
- package/dist/vue/components/Chart/cartesian.js.map +1 -0
- package/dist/vue/components/Chart/engine.d.ts +35 -0
- package/dist/vue/components/Chart/engine.js +35 -0
- package/dist/vue/components/Chart/engine.js.map +1 -0
- package/dist/vue/components/Chart/index.d.ts +41 -0
- package/dist/vue/components/Chart/index.js +40 -0
- package/dist/vue/components/Chart/orderbook.d.ts +359 -0
- package/dist/vue/components/Chart/orderbook.js +126 -0
- package/dist/vue/components/Chart/orderbook.js.map +1 -0
- package/dist/vue/components/Chart/props.d.ts +188 -0
- package/dist/vue/components/Chart/props.js +92 -0
- package/dist/vue/components/Chart/props.js.map +1 -0
- package/dist/vue/components/Chart/shape.d.ts +41 -0
- package/dist/vue/components/Chart/shape.js +42 -0
- package/dist/vue/components/Chart/shape.js.map +1 -0
- package/dist/vue/components/Chart/three-d.d.ts +106 -0
- package/dist/vue/components/Chart/three-d.js +88 -0
- package/dist/vue/components/Chart/three-d.js.map +1 -0
- package/dist/vue/components/Chart/trading.d.ts +105 -0
- package/dist/vue/components/Chart/trading.js +55 -0
- package/dist/vue/components/Chart/trading.js.map +1 -0
- package/dist/vue/components/Chart/types.d.ts +137 -0
- package/dist/vue/global.d.ts +38 -0
- package/dist/vue/groups/charts.d.ts +1 -0
- package/dist/vue/groups/charts.js +87 -0
- package/dist/vue/groups/charts.js.map +1 -0
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.js +63 -23
- package/dist/vue/plugin.js +12 -10
- package/dist/vue/plugin.js.map +1 -1
- package/dist/weapp/area-chart/index.js +1 -0
- package/dist/weapp/area-chart/index.json +1 -0
- package/dist/weapp/area-chart/index.wxml +1 -0
- package/dist/weapp/area-chart/index.wxss +1 -0
- package/dist/weapp/box-plot-chart/index.js +1 -0
- package/dist/weapp/box-plot-chart/index.json +1 -0
- package/dist/weapp/box-plot-chart/index.wxml +1 -0
- package/dist/weapp/box-plot-chart/index.wxss +1 -0
- package/dist/weapp/bubble-chart/index.js +1 -0
- package/dist/weapp/bubble-chart/index.json +1 -0
- package/dist/weapp/bubble-chart/index.wxml +1 -0
- package/dist/weapp/bubble-chart/index.wxss +1 -0
- package/dist/weapp/bullet-chart/index.js +1 -0
- package/dist/weapp/bullet-chart/index.json +1 -0
- package/dist/weapp/bullet-chart/index.wxml +1 -0
- package/dist/weapp/bullet-chart/index.wxss +1 -0
- package/dist/weapp/calendar-heatmap/index.js +1 -0
- package/dist/weapp/calendar-heatmap/index.json +1 -0
- package/dist/weapp/calendar-heatmap/index.wxml +1 -0
- package/dist/weapp/calendar-heatmap/index.wxss +1 -0
- package/dist/weapp/candlestick-chart/index.js +1 -0
- package/dist/weapp/candlestick-chart/index.json +1 -0
- package/dist/weapp/candlestick-chart/index.wxml +1 -0
- package/dist/weapp/candlestick-chart/index.wxss +1 -0
- package/dist/weapp/charts/canvas.js +11436 -0
- package/dist/weapp/charts/core.d.ts +2 -0
- package/dist/weapp/charts/core.js +41 -0
- package/dist/weapp/controls.js +1428 -3732
- package/dist/weapp/donut-chart/index.js +1 -0
- package/dist/weapp/donut-chart/index.json +1 -0
- package/dist/weapp/donut-chart/index.wxml +1 -0
- package/dist/weapp/donut-chart/index.wxss +1 -0
- package/dist/weapp/funnel-chart/index.js +1 -0
- package/dist/weapp/funnel-chart/index.json +1 -0
- package/dist/weapp/funnel-chart/index.wxml +1 -0
- package/dist/weapp/funnel-chart/index.wxss +1 -0
- package/dist/weapp/gantt-chart/index.js +1 -0
- package/dist/weapp/gantt-chart/index.json +1 -0
- package/dist/weapp/gantt-chart/index.wxml +1 -0
- package/dist/weapp/gantt-chart/index.wxss +1 -0
- package/dist/weapp/gauge-chart/index.js +1 -0
- package/dist/weapp/gauge-chart/index.json +1 -0
- package/dist/weapp/gauge-chart/index.wxml +1 -0
- package/dist/weapp/gauge-chart/index.wxss +1 -0
- package/dist/weapp/heatmap-chart/index.js +1 -0
- package/dist/weapp/heatmap-chart/index.json +1 -0
- package/dist/weapp/heatmap-chart/index.wxml +1 -0
- package/dist/weapp/heatmap-chart/index.wxss +1 -0
- package/dist/weapp/histogram-chart/index.js +1 -0
- package/dist/weapp/histogram-chart/index.json +1 -0
- package/dist/weapp/histogram-chart/index.wxml +1 -0
- package/dist/weapp/histogram-chart/index.wxss +1 -0
- package/dist/weapp/horizontal-bar-chart/index.js +1 -0
- package/dist/weapp/horizontal-bar-chart/index.json +1 -0
- package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
- package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
- package/dist/weapp/mixed-chart/index.js +1 -0
- package/dist/weapp/mixed-chart/index.json +1 -0
- package/dist/weapp/mixed-chart/index.wxml +1 -0
- package/dist/weapp/mixed-chart/index.wxss +1 -0
- package/dist/weapp/pie-chart/index.js +1 -0
- package/dist/weapp/pie-chart/index.json +1 -0
- package/dist/weapp/pie-chart/index.wxml +1 -0
- package/dist/weapp/pie-chart/index.wxss +1 -0
- package/dist/weapp/radar-chart/index.js +1 -0
- package/dist/weapp/radar-chart/index.json +1 -0
- package/dist/weapp/radar-chart/index.wxml +1 -0
- package/dist/weapp/radar-chart/index.wxss +1 -0
- package/dist/weapp/radial-bar-chart/index.js +1 -0
- package/dist/weapp/radial-bar-chart/index.json +1 -0
- package/dist/weapp/radial-bar-chart/index.wxml +1 -0
- package/dist/weapp/radial-bar-chart/index.wxss +1 -0
- package/dist/weapp/range-area-chart/index.js +1 -0
- package/dist/weapp/range-area-chart/index.json +1 -0
- package/dist/weapp/range-area-chart/index.wxml +1 -0
- package/dist/weapp/range-area-chart/index.wxss +1 -0
- package/dist/weapp/sankey-chart/index.js +1 -0
- package/dist/weapp/sankey-chart/index.json +1 -0
- package/dist/weapp/sankey-chart/index.wxml +1 -0
- package/dist/weapp/sankey-chart/index.wxss +1 -0
- package/dist/weapp/shape-chart/index.js +1 -0
- package/dist/weapp/shape-chart/index.json +1 -0
- package/dist/weapp/shape-chart/index.wxml +1 -0
- package/dist/weapp/shape-chart/index.wxss +1 -0
- package/dist/weapp/sparkline/index.js +1 -0
- package/dist/weapp/sparkline/index.json +1 -0
- package/dist/weapp/sparkline/index.wxml +1 -0
- package/dist/weapp/sparkline/index.wxss +1 -0
- package/dist/weapp/sunburst-chart/index.js +1 -0
- package/dist/weapp/sunburst-chart/index.json +1 -0
- package/dist/weapp/sunburst-chart/index.wxml +1 -0
- package/dist/weapp/sunburst-chart/index.wxss +1 -0
- package/dist/weapp/treemap-chart/index.js +1 -0
- package/dist/weapp/treemap-chart/index.json +1 -0
- package/dist/weapp/treemap-chart/index.wxml +1 -0
- package/dist/weapp/treemap-chart/index.wxss +1 -0
- package/dist/weapp/types.d.ts +466 -0
- package/dist/weapp/waterfall-chart/index.js +1 -0
- package/dist/weapp/waterfall-chart/index.json +1 -0
- package/dist/weapp/waterfall-chart/index.wxml +1 -0
- package/dist/weapp/waterfall-chart/index.wxss +1 -0
- package/dist/web-components/components/chart/chart.d.ts +58 -0
- package/dist/web-components/components/chart/chart.js +55 -0
- package/dist/web-components/components/chart/chart.js.map +1 -0
- package/dist/web-components/components/chart/charts.d.ts +252 -0
- package/dist/web-components/components/chart/charts.js +201 -0
- package/dist/web-components/components/chart/charts.js.map +1 -0
- package/dist/web-components/components/chart/engine-element.d.ts +53 -0
- package/dist/web-components/components/chart/engine-element.js +77 -0
- package/dist/web-components/components/chart/engine-element.js.map +1 -0
- package/dist/web-components/components/chart/extended.d.ts +224 -0
- package/dist/web-components/components/chart/extended.js +183 -0
- package/dist/web-components/components/chart/extended.js.map +1 -0
- package/dist/web-components/components/chart/series.d.ts +7 -0
- package/dist/web-components/components/chart/series.js +14 -0
- package/dist/web-components/components/chart/series.js.map +1 -0
- package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
- package/dist/web-components/components/chart/shape-chart.js +161 -0
- package/dist/web-components/components/chart/shape-chart.js.map +1 -0
- package/dist/web-components/components/chart/shapes-extended.d.ts +162 -0
- package/dist/web-components/components/chart/shapes-extended.js +156 -0
- package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
- package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
- package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
- package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
- package/dist/web-components/components/order-book/order-book.d.ts +165 -0
- package/dist/web-components/components/order-book/order-book.js +174 -0
- package/dist/web-components/components/order-book/order-book.js.map +1 -0
- package/dist/web-components/components/trading-chart/trading-chart.d.ts +96 -0
- package/dist/web-components/components/trading-chart/trading-chart.js +96 -0
- package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
- package/dist/web-components/elements/chart-3d.d.ts +2 -0
- package/dist/web-components/elements/chart-3d.js +13 -0
- package/dist/web-components/elements/chart-3d.js.map +1 -0
- package/dist/web-components/elements/chart.d.ts +7 -0
- package/dist/web-components/elements/chart.js +43 -0
- package/dist/web-components/elements/chart.js.map +1 -0
- package/dist/web-components/elements/order-book.d.ts +2 -0
- package/dist/web-components/elements/order-book.js +13 -0
- package/dist/web-components/elements/order-book.js.map +1 -0
- package/dist/web-components/elements/trading-chart.d.ts +2 -0
- package/dist/web-components/elements/trading-chart.js +8 -0
- package/dist/web-components/elements/trading-chart.js.map +1 -0
- package/dist/web-components/html-custom-data.json +1192 -29
- package/dist/web-components/types/react.d.ts +435 -0
- package/dist/web-components/types/solid.d.ts +321 -0
- package/dist/web-components/types/svelte.d.ts +321 -0
- package/dist/web-components/types/vue.d.ts +359 -0
- package/package.json +113 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene.js","names":["DEFAULT_PADDING","fallbackResolve","fallback","resolveAnnotations","resolve","theme","annotations","a","color","mix","layoutChart","input","yCount","model","height","yTicks","axisTicks","view","yLabelWidth","label","measure","categoryWidth","step","i","padding","plot","computePlot","xCount","xTicks","createScales","collectPointLabels","labels","series","texts","count","text","xi","x","yi","y","d","size","s","pointOf","xv","yv","sc","candidateOf","p","inside","half","base","px","py","dotSize","nearestScatter","radius","slop","rx","ry","best","bestDist","gridOf","nearestX","sorted","nearestIndex","bestD","hoverItemOf","pc","index","toCss","eventOf","candidates","b","items","c","hitTest","margin","scatter","others","all","bestDx","bandPx","aligned","first","event","sameHover","it","tooltipContent","yFormat","rows","hoverMarks","marks","cx","showsCrosshair","crosshair"],"sources":["../../../../charts/src/engine/scene.ts"],"sourcesContent":["// The DOM-free half of a chart: annotations, layout, point labels, hit\n// testing and tooltip content. Shared by createChart (DOM + GPU),\n// createCanvasChart (any 2D context) and the React Native views.\n\nimport { axisTicks, type AxisTicks } from \"./axis\";\nimport { mix, toCss, type Rgba } from \"./color\";\nimport { nearestIndex } from \"./data\";\nimport { computePlot, createScales, type Rect, type Scales } from \"./layout\";\nimport { gridOf, type ChartModel, type SeriesModel } from \"./model\";\nimport type { PointLabel, ResolvedAnnotation } from \"./overlay\";\nimport type { ChartTheme } from \"./theme\";\nimport type {\n ChartAnnotation,\n ChartHoverEvent,\n ChartHoverItem,\n ChartPadding,\n ChartView,\n} from \"./types\";\n\nexport const MAX_POINT_LABELS = 300;\nexport const DEFAULT_PADDING = { top: 12, right: 16, bottom: 4, left: 4 };\n\nexport const fallbackResolve = (_value: string, fallback: Rgba) => fallback;\n\n/** Annotation colors resolved against the theme */\nexport const resolveAnnotations = (\n annotations: readonly ChartAnnotation[] | undefined,\n theme: ChartTheme,\n): ResolvedAnnotation[] => {\n const resolve = theme.resolve ?? fallbackResolve;\n return (annotations ?? []).map((a) => {\n if (a.type === \"rect\") {\n const color = a.color ? resolve(a.color, theme.primary) : theme.primary;\n return {\n type: \"rect\",\n x0: a.x0,\n x1: a.x1,\n y0: a.y0,\n y1: a.y1,\n color,\n opacity: a.opacity ?? 0.08,\n label: a.label,\n labelPosition: a.labelPosition ?? \"top-left\",\n labelColor: a.labelColor\n ? resolve(a.labelColor, color)\n : mix(color, theme.text, 0.2),\n };\n }\n if (a.type === \"text\") {\n return {\n type: \"text\",\n x: a.x,\n y: a.y,\n text: a.text,\n anchor: a.anchor ?? \"center\",\n color: a.color ? resolve(a.color, theme.textMuted) : theme.textMuted,\n weight: a.weight ?? 500,\n };\n }\n return {\n type: \"line\",\n axis: a.axis,\n value: a.value,\n color: a.color ? resolve(a.color, theme.textMuted) : theme.textMuted,\n width: a.width ?? 1,\n dash: [...(a.dash ?? [4, 4])],\n label: a.label,\n };\n });\n};\n\nexport interface ChartLayout {\n plot: Rect;\n scales: Scales;\n xTicks: AxisTicks;\n yTicks: AxisTicks;\n}\n\nexport interface LayoutInput {\n model: ChartModel;\n view: ChartView;\n theme: ChartTheme;\n /** Size of the drawing area (legend excluded), CSS pixels */\n width: number;\n height: number;\n padding?: ChartPadding;\n /** Offset of the drawing area (e.g. below a legend) */\n top?: number;\n /** Width of a tick label in the theme font */\n measure: (text: string) => number;\n}\n\n/** Ticks, room for the axes and the plot rectangle */\nexport const layoutChart = (input: LayoutInput): ChartLayout => {\n const { model, view, theme, width, height, measure } = input;\n // same count as the nice range of the model (its ends are then ticks),\n // fewer on short charts\n const yCount =\n model.y.tickCount ??\n (height >= 220 ? 5 : Math.max(2, Math.round((height - 48) / 52)));\n const yTicks = axisTicks(model.y, view.y, yCount);\n let yLabelWidth = 0;\n if (model.y.visible) {\n for (const label of yTicks.labels)\n yLabelWidth = Math.max(yLabelWidth, measure(label));\n }\n let categoryWidth = 48;\n if (model.x.type === \"category\") {\n categoryWidth = 0;\n const step = Math.max(1, Math.floor(model.x.categories.length / 200));\n for (let i = 0; i < model.x.categories.length; i += step) {\n categoryWidth = Math.max(categoryWidth, measure(model.x.categories[i]));\n }\n }\n const padding = { ...DEFAULT_PADDING, ...input.padding };\n const plot = computePlot({\n width,\n height,\n padding,\n yLabelWidth: model.y.visible ? Math.ceil(yLabelWidth) : 0,\n xAxisVisible: model.x.visible,\n xTitle: !!model.x.title && model.x.visible,\n yTitle: !!model.y.title && model.y.visible,\n fontSize: theme.fontSize,\n });\n if (input.top) plot.y += input.top;\n const xCount =\n model.x.type === \"category\"\n ? Math.max(1, Math.floor(plot.width / (categoryWidth + 14)))\n : (model.x.tickCount ?? Math.max(2, Math.floor(plot.width / 96)));\n const xTicks = axisTicks(model.x, view.x, xCount);\n const scales = createScales(plot, view, model.x.reverse, model.y.reverse);\n return { plot, scales, xTicks, yTicks };\n};\n\n/** Labels of the visible scatter points (`showLabels`) */\nexport const collectPointLabels = (\n model: ChartModel,\n view: ChartView,\n s: Scales,\n): PointLabel[] => {\n const labels: PointLabel[] = [];\n for (const series of model.series) {\n if (series.hidden || series.type !== \"scatter\" || !series.showLabels)\n continue;\n const { x, y, count, labels: texts, size } = series.cols;\n if (!texts) continue;\n for (let i = 0; i < count && labels.length < MAX_POINT_LABELS; i++) {\n const text = texts[i];\n if (!text) continue;\n const xi = x[i];\n const yi = y[i];\n if (xi < view.x[0] || xi > view.x[1] || yi < view.y[0] || yi > view.y[1])\n continue;\n const d = size && size[i] > 0 ? size[i] : series.pointSize;\n labels.push({ x: s.xToPx(xi), y: s.yToPx(yi), r: d / 2, text });\n }\n }\n return labels;\n};\n\n// ---------------------------------------------------------------- hit tests\n\ninterface Candidate {\n series: SeriesModel;\n index: number;\n /** Pixel position of the point */\n px: number;\n py: number;\n dx: number;\n dist: number;\n inside: boolean;\n}\n\n/** Pixel position of a point (the top of a bar) */\nexport const pointOf = (s: SeriesModel, i: number, sc: Scales) => {\n const xv = s.cols.x[i] + (s.type === \"bar\" ? s.barOffset : 0);\n const yv = s.type === \"bar\" && s.barTop ? s.barTop[i] : s.cols.y[i];\n return { px: sc.xToPx(xv), py: sc.yToPx(yv) };\n};\n\nconst candidateOf = (\n s: SeriesModel,\n i: number,\n px: number,\n py: number,\n sc: Scales,\n): Candidate => {\n const p = pointOf(s, i, sc);\n let inside = false;\n if (s.type === \"bar\" && s.barBase) {\n const half = s.barHalfWidth / sc.xPerPx;\n const base = sc.yToPx(s.barBase[i]);\n inside =\n Math.abs(px - p.px) <= half &&\n py >= Math.min(base, p.py) - 2 &&\n py <= Math.max(base, p.py) + 2;\n }\n return {\n series: s,\n index: i,\n px: p.px,\n py: p.py,\n dx: Math.abs(sc.xToPx(s.cols.x[i]) - px),\n dist: inside ? 0 : Math.hypot(p.px - px, p.py - py),\n inside,\n };\n};\n\n/** Diameter of a scatter dot */\nexport const dotSize = (s: SeriesModel, i: number) =>\n s.cols.size && s.cols.size[i] > 0 ? s.cols.size[i] : s.pointSize;\n\nconst nearestScatter = (\n s: SeriesModel,\n px: number,\n py: number,\n sc: Scales,\n slop: number,\n) => {\n const radius = Math.max(s.pointSize / 2 + 6, 10) + slop;\n const xv = sc.pxToX(px);\n const yv = sc.pxToY(py);\n const rx = radius * sc.xPerPx;\n const ry = radius * sc.yPerPx;\n let best = -1;\n let bestDist = Infinity;\n const { x, y } = s.cols;\n gridOf(s).query(xv - rx, xv + rx, yv - ry, yv + ry, (i) => {\n const d = Math.hypot(sc.xToPx(x[i]) - px, sc.yToPx(y[i]) - py);\n const reach = Math.max(dotSize(s, i) / 2 + 4, 8) + slop;\n if (d <= reach && d <= bestDist) {\n bestDist = d;\n best = i;\n }\n });\n return best;\n};\n\nconst nearestX = (s: SeriesModel, xv: number) => {\n const { x, y, count, sorted } = s.cols;\n if (sorted) return nearestIndex(x, y, count, xv);\n let best = -1;\n let bestD = Infinity;\n for (let i = 0; i < count; i++) {\n if (!Number.isFinite(y[i])) continue;\n const d = Math.abs(x[i] - xv);\n if (d < bestD) {\n bestD = d;\n best = i;\n }\n }\n return best;\n};\n\n/** Hover payload item of a point */\nexport const hoverItemOf = (s: SeriesModel, index: number): ChartHoverItem => {\n const pc = s.pointColors?.[index];\n const label = s.cols.labels?.[index];\n return {\n seriesIndex: s.index,\n seriesId: s.id,\n seriesName: s.name,\n index,\n x: s.cols.x[index],\n y: s.cols.y[index],\n color: pc ? toCss(pc) : s.colorCss,\n ...(label !== undefined ? { label } : {}),\n };\n};\n\nconst eventOf = (\n candidates: Candidate[],\n xTicks: AxisTicks | null,\n): ChartHoverEvent | null => {\n if (!candidates.length) return null;\n candidates.sort((a, b) => a.series.index - b.series.index);\n const items = candidates.map((c) => hoverItemOf(c.series, c.index));\n const x = items[0].x;\n return { items, x, xLabel: xTicks?.formatValue(x) ?? String(x) };\n};\n\n/**\n * Points under a pixel of the stage: the nearest point (scatter / `nearest`\n * tooltips) or every series at the nearest x (`axis` tooltips).\n * `slop` widens the reach of the dots (touch screens).\n */\nexport const hitTest = (\n model: ChartModel,\n sc: Scales,\n xTicks: AxisTicks | null,\n px: number,\n py: number,\n slop = 0,\n): ChartHoverEvent | null => {\n const { plot } = sc;\n const margin = 6 + slop;\n if (\n px < plot.x - margin ||\n px > plot.x + plot.width + margin ||\n py < plot.y - margin ||\n py > plot.y + plot.height + margin\n ) {\n return null;\n }\n const xv = sc.pxToX(px);\n const scatter: Candidate[] = [];\n const others: Candidate[] = [];\n for (const s of model.series) {\n if (s.hidden || s.cols.count === 0) continue;\n if (s.type === \"scatter\") {\n const i = nearestScatter(s, px, py, sc, slop);\n if (i >= 0) scatter.push(candidateOf(s, i, px, py, sc));\n } else {\n const i = nearestX(s, xv);\n if (i >= 0) others.push(candidateOf(s, i, px, py, sc));\n }\n }\n if (model.tooltipMode === \"nearest\") {\n const all = [...scatter, ...others].filter(\n (c) => c.inside || c.series.type === \"scatter\" || c.dist <= 32 + slop,\n );\n if (!all.length) return null;\n const best = all.reduce((a, b) => (b.dist <= a.dist ? b : a));\n return eventOf([best], xTicks);\n }\n if (!others.length) {\n if (!scatter.length) return null;\n return eventOf(\n [scatter.reduce((a, b) => (b.dist <= a.dist ? b : a))],\n xTicks,\n );\n }\n const bestDx = Math.min(...others.map((c) => c.dx));\n const bandPx = model.x.type === \"category\" ? 0.5 / sc.xPerPx : 0;\n const aligned = others.filter((c) => c.dx <= bestDx + Math.max(1, bandPx));\n const first = aligned.reduce((a, b) => (b.dx < a.dx ? b : a));\n const ordered = [first, ...aligned.filter((c) => c !== first), ...scatter];\n const event = eventOf(ordered, xTicks);\n if (event) {\n event.x = hoverItemOf(first.series, first.index).x;\n event.xLabel = xTicks?.formatValue(event.x) ?? String(event.x);\n }\n return event;\n};\n\n/** Whether two hover payloads point at the same points */\nexport const sameHover = (\n a: ChartHoverEvent | null,\n b: ChartHoverEvent | null,\n): boolean =>\n a === b ||\n (!!a &&\n !!b &&\n a.items.length === b.items.length &&\n a.items.every(\n (it, i) =>\n it.index === b.items[i].index &&\n it.seriesIndex === b.items[i].seriesIndex,\n ));\n\n// ------------------------------------------------------------------ tooltip\n\nexport interface TooltipRow {\n /** Swatch color (CSS) */\n color: string | null;\n name: string;\n value: string;\n}\n\nexport interface TooltipContent {\n title: string;\n /** Swatch of the title (single scatter point) */\n titleColor: string | null;\n rows: TooltipRow[];\n}\n\n/** Default tooltip content of a hover payload */\nexport const tooltipContent = (\n model: ChartModel,\n event: ChartHoverEvent,\n yTicks: AxisTicks | null,\n): TooltipContent => {\n const yFormat = yTicks?.formatValue ?? String;\n const scatterOnly = event.items.every(\n (it) => model.series[it.seriesIndex].type === \"scatter\",\n );\n if (scatterOnly && event.items.length === 1) {\n const it = event.items[0];\n const rows: TooltipRow[] = [\n { color: null, name: model.x.title ?? \"x\", value: event.xLabel },\n { color: null, name: model.y.title ?? \"y\", value: yFormat(it.y) },\n ];\n if (it.label !== undefined && model.series.length > 1)\n rows.push({ color: null, name: \"\", value: it.seriesName });\n return { title: it.label ?? it.seriesName, titleColor: it.color, rows };\n }\n return {\n title: event.xLabel,\n titleColor: null,\n rows: event.items.map((it) => ({\n color: it.color,\n name: it.label ? `${it.seriesName} · ${it.label}` : it.seriesName,\n value: yFormat(it.y),\n })),\n };\n};\n\n/** Shape of the hover marker of an item: a ring on a point, or a bar highlight */\nexport type HoverMark =\n | { kind: \"dot\"; x: number; y: number; size: number; color: string }\n | { kind: \"bar\"; x: number; y: number; width: number; height: number };\n\n/** Markers of the hovered points (pixels of the stage) */\nexport const hoverMarks = (\n model: ChartModel,\n sc: Scales,\n event: ChartHoverEvent,\n): HoverMark[] => {\n const marks: HoverMark[] = [];\n const { plot } = sc;\n for (const it of event.items) {\n const s = model.series[it.seriesIndex];\n if (s.type === \"bar\" && s.barBase && s.barTop) {\n const cx = sc.xToPx(it.x + s.barOffset);\n const half = Math.max(s.barHalfWidth / sc.xPerPx, 1);\n const a = sc.yToPx(s.barBase[it.index]);\n const b = sc.yToPx(s.barTop[it.index]);\n marks.push({\n kind: \"bar\",\n x: cx - half,\n y: Math.min(a, b),\n width: half * 2,\n height: Math.max(1, Math.abs(a - b)),\n });\n continue;\n }\n const px = sc.xToPx(it.x);\n const py = sc.yToPx(it.y);\n if (\n px < plot.x - 1 ||\n px > plot.x + plot.width + 1 ||\n py < plot.y - 1 ||\n py > plot.y + plot.height + 1\n ) {\n continue;\n }\n const size =\n s.type === \"scatter\"\n ? dotSize(s, it.index) + 6\n : Math.max(10, s.lineWidth * 2 + 6);\n marks.push({ kind: \"dot\", x: px, y: py, size, color: it.color });\n }\n return marks;\n};\n\n/** Whether the guide line follows the pointer */\nexport const showsCrosshair = (\n model: ChartModel,\n event: ChartHoverEvent,\n crosshair: boolean | undefined,\n) =>\n crosshair ??\n (model.tooltipMode === \"axis\" &&\n event.items.some((it) => model.series[it.seriesIndex].type !== \"scatter\"));\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scene.js","names":["DEFAULT_PADDING","fallbackResolve","fallback","resolveAnnotations","resolve","theme","annotations","a","color","mix","layoutChart","input","model","layoutHorizontal","yCount","height","yTicks","axisTicks","view","yLabelWidth","label","measure","y2Ticks","rightTicks","y2LabelWidth","categoryWidth","step","i","padding","plot","computePlot","xCount","xTicks","createScales","axis","map","raw","v","maxAbs","tick","tickFormatter","rows","xLabelWidth","names","name","collectPointLabels","labels","axisFormat","series","format","texts","top","x0","x1","count","xv","x","y","reversed","p","toScreen","s","y0","delta","text","xi","yi","d","size","slotOffset","pointOf","sc","plottedY","onColumn","pa","pb","b","ax","center","half","ay","candidateOf","alongX","px","py","alongY","inside","high","low","dotSize","maxSizes","maxDot","sizes","max","nearestScatter","radius","slop","at","toData","rx","ry","best","bestDist","gridOf","cellAt","hx","hy","found","yv","nearestX","sorted","nearestIndex","bestD","hoverItemOf","pc","index","toCss","extra","o","open","value","packed","unpackColor","q1","q3","out","outliers","eventOf","candidates","items","c","hitTest","margin","scatter","others","all","bestDx","bandPx","aligned","first","event","sameHover","it","CHANGE_PERCENT","tooltipContent","yFormat","formatOf","firstSeries","yName","valueRow","rowOf","binTitle","change","numberFormat","ohlc","stats","totals","stack","stackIdOf","total","row","k","formatPercent","seriesIndex","hoverMarks","marks","bandLo","bandHi","cx","cy","hw","hh","screenRect","rgba","pad","lo","hi","legendShape","type","showsCrosshair","crosshair","crosshairAt"],"sources":["../../../../charts/src/engine/scene.ts"],"sourcesContent":["// The DOM-free half of a chart: annotations, layout, point labels, hit\n// testing and tooltip content. Shared by createChart (DOM + GPU),\n// createCanvasChart (any 2D context) and the React Native views.\n\nimport { axisTicks, type AxisTicks } from \"./axis\";\nimport { mix, toCss, unpackColor, type Rgba } from \"./color\";\nimport { nearestIndex } from \"./data\";\nimport { formatPercent, tickFormatter } from \"./format\";\nimport { numberFormat } from \"./locale\";\nimport {\n alongX,\n alongY,\n computePlot,\n createScales,\n screenRect,\n toData,\n toScreen,\n type Rect,\n type Scales,\n} from \"./layout\";\nimport { gridOf, plottedY, type ChartModel, type SeriesModel } from \"./model\";\nimport type { PointLabel, ResolvedAnnotation } from \"./overlay\";\nimport type { ChartTheme } from \"./theme\";\nimport type {\n ChartAnnotation,\n ChartHoverEvent,\n ChartHoverItem,\n ChartPadding,\n ChartView,\n} from \"./types\";\n\nexport const MAX_POINT_LABELS = 300;\nexport const DEFAULT_PADDING = { top: 12, right: 16, bottom: 4, left: 4 };\n\nexport const fallbackResolve = (_value: string, fallback: Rgba) => fallback;\n\n/** Annotation colors resolved against the theme */\nexport const resolveAnnotations = (\n annotations: readonly ChartAnnotation[] | undefined,\n theme: ChartTheme,\n): ResolvedAnnotation[] => {\n const resolve = theme.resolve ?? fallbackResolve;\n return (annotations ?? []).map((a) => {\n if (a.type === \"rect\") {\n const color = a.color ? resolve(a.color, theme.primary) : theme.primary;\n return {\n type: \"rect\",\n x0: a.x0,\n x1: a.x1,\n y0: a.y0,\n y1: a.y1,\n color,\n opacity: a.opacity ?? 0.08,\n label: a.label,\n labelPosition: a.labelPosition ?? \"top-left\",\n labelColor: a.labelColor\n ? resolve(a.labelColor, color)\n : mix(color, theme.text, 0.2),\n };\n }\n if (a.type === \"text\") {\n return {\n type: \"text\",\n x: a.x,\n y: a.y,\n text: a.text,\n anchor: a.anchor ?? \"center\",\n color: a.color ? resolve(a.color, theme.textMuted) : theme.textMuted,\n weight: a.weight ?? 500,\n };\n }\n return {\n type: \"line\",\n axis: a.axis,\n value: a.value,\n color: a.color ? resolve(a.color, theme.textMuted) : theme.textMuted,\n width: a.width ?? 1,\n dash: [...(a.dash ?? [4, 4])],\n label: a.label,\n };\n });\n};\n\nexport interface ChartLayout {\n plot: Rect;\n scales: Scales;\n xTicks: AxisTicks;\n yTicks: AxisTicks;\n /** Ticks of the right axis: at the left tick positions, labelled in right axis units */\n y2Ticks: AxisTicks | null;\n}\n\nexport interface LayoutInput {\n model: ChartModel;\n view: ChartView;\n theme: ChartTheme;\n /** Size of the drawing area (legend excluded), CSS pixels */\n width: number;\n height: number;\n padding?: ChartPadding;\n /** Offset of the drawing area (e.g. below a legend) */\n top?: number;\n /** Width of a tick label in the theme font */\n measure: (text: string) => number;\n}\n\n/** Ticks, room for the axes and the plot rectangle */\nexport const layoutChart = (input: LayoutInput): ChartLayout => {\n const { model, view, theme, width, height, measure } = input;\n if (model.horizontal) return layoutHorizontal(input);\n // same count as the nice range of the model (its ends are then ticks),\n // fewer on short charts; category rows get a label each when they fit\n const yCount =\n model.y.tickCount ??\n (model.y.type === \"category\"\n ? Math.max(1, Math.floor((height - 40) / (theme.fontSize + 5)))\n : height >= 220\n ? 5\n : Math.max(2, Math.round((height - 48) / 52)));\n const yTicks = axisTicks(model.y, view.y, yCount);\n let yLabelWidth = 0;\n if (model.y.visible) {\n for (const label of yTicks.labels)\n yLabelWidth = Math.max(yLabelWidth, measure(label));\n }\n const y2Ticks = rightTicks(model, yTicks);\n let y2LabelWidth = 0;\n if (y2Ticks && model.y2?.visible) {\n for (const label of y2Ticks.labels)\n y2LabelWidth = Math.max(y2LabelWidth, measure(label));\n }\n let categoryWidth = 48;\n if (model.x.type === \"category\") {\n categoryWidth = 0;\n const step = Math.max(1, Math.floor(model.x.categories.length / 200));\n for (let i = 0; i < model.x.categories.length; i += step) {\n categoryWidth = Math.max(categoryWidth, measure(model.x.categories[i]));\n }\n }\n const padding = { ...DEFAULT_PADDING, ...input.padding };\n const plot = computePlot({\n width,\n height,\n padding,\n yLabelWidth: model.y.visible ? Math.ceil(yLabelWidth) : 0,\n y2LabelWidth: Math.ceil(y2LabelWidth),\n y2Title: !!model.y2?.title && !!model.y2.visible,\n xAxisVisible: model.x.visible,\n xTitle: !!model.x.title && model.x.visible,\n yTitle: !!model.y.title && model.y.visible,\n fontSize: theme.fontSize,\n });\n if (input.top) plot.y += input.top;\n const xCount =\n model.x.type === \"category\"\n ? Math.max(1, Math.floor(plot.width / (categoryWidth + 14)))\n : (model.x.tickCount ?? Math.max(3, Math.floor(plot.width / 88)));\n const xTicks = axisTicks(model.x, view.x, xCount);\n const scales = createScales(plot, view, model.x.reverse, model.y.reverse);\n return { plot, scales, xTicks, yTicks, y2Ticks };\n};\n\n/** Right axis ticks: the left ticks labelled in right axis units */\nconst rightTicks = (model: ChartModel, yTicks: AxisTicks): AxisTicks | null => {\n const axis = model.y2;\n const map = model.y2Map;\n if (!axis || !map || !map.scale) return null;\n const raw = yTicks.values.map((v) => (v - map.offset) / map.scale);\n const step = raw.length > 1 ? Math.abs(raw[1] - raw[0]) : 1;\n let maxAbs = 0;\n for (const v of raw) maxAbs = Math.max(maxAbs, Math.abs(v));\n const tick = axis.format ?? tickFormatter(step, maxAbs, model.locale);\n return {\n values: yTicks.values,\n labels: raw.map(tick),\n formatValue: axis.format ?? model.formatValue,\n };\n};\n\n/** Horizontal charts: the x axis on the left, the values along the bottom */\nconst layoutHorizontal = (input: LayoutInput): ChartLayout => {\n const { model, view, theme, width, height, measure } = input;\n const rows = Math.max(1, Math.floor((height - 40) / (theme.fontSize + 5)));\n const xCount =\n model.x.tickCount ??\n (model.x.type === \"category\"\n ? rows\n : height >= 220\n ? 5\n : Math.max(2, Math.round((height - 48) / 52)));\n const xTicks = axisTicks(model.x, view.x, xCount);\n let xLabelWidth = 0;\n if (model.x.visible) {\n if (model.x.type === \"category\") {\n // every name (the visible ones change when zooming)\n const names = model.x.categories;\n const step = Math.max(1, Math.floor(names.length / 200));\n for (let i = 0; i < names.length; i += step) {\n const name = model.x.format ? model.x.format(i) : names[i];\n xLabelWidth = Math.max(xLabelWidth, measure(name));\n }\n } else {\n for (const label of xTicks.labels)\n xLabelWidth = Math.max(xLabelWidth, measure(label));\n }\n }\n const padding = { ...DEFAULT_PADDING, ...input.padding };\n const plot = computePlot({\n width,\n height,\n padding,\n yLabelWidth: model.x.visible ? Math.ceil(xLabelWidth) : 0,\n xAxisVisible: model.y.visible,\n xTitle: !!model.y.title && model.y.visible,\n yTitle: !!model.x.title && model.x.visible,\n fontSize: theme.fontSize,\n });\n if (input.top) plot.y += input.top;\n const yCount =\n model.y.tickCount ??\n (model.y.type === \"category\"\n ? Math.max(1, Math.floor(plot.width / 60))\n : Math.max(3, Math.min(8, Math.floor(plot.width / 88))));\n const yTicks = axisTicks(model.y, view.y, yCount);\n const scales = createScales(\n plot,\n view,\n model.x.reverse,\n model.y.reverse,\n true,\n );\n return { plot, scales, xTicks, yTicks, y2Ticks: null };\n};\n\n/** Labels of the visible scatter points and bar values (`showLabels`) */\nexport const collectPointLabels = (\n model: ChartModel,\n view: ChartView,\n s: Scales,\n yTicks?: AxisTicks | null,\n): PointLabel[] => {\n const labels: PointLabel[] = [];\n // 100% stacks: the axis shows percents, the labels the actual values\n const axisFormat = model.percent\n ? model.formatValue\n : (yTicks?.formatValue ?? model.formatValue);\n for (const series of model.series) {\n if (series.hidden || !series.showLabels) continue;\n if (series.type === \"bar\" && series.barTop) {\n // 100% stacks and right axis series: the values of the data\n const format =\n series.format ??\n (series.yAxis === \"right\"\n ? (model.y2?.format ?? model.formatValue)\n : axisFormat);\n const { x, count } = series.cols;\n const { y, y0, labels: texts } = series.raw;\n const top = series.barTop;\n const [x0, x1] = view.x[0] <= view.x[1] ? view.x : [view.x[1], view.x[0]];\n for (let i = 0; i < count && labels.length < MAX_POINT_LABELS; i++) {\n const xv = x[i] + series.barOffset;\n if (!Number.isFinite(y[i]) || xv < x0 || xv > x1) continue;\n // the end away from the base (the top, or the bottom of negative bars)\n const negative = top[i] < (series.barBase?.[i] ?? 0);\n const reversed = negative !== model.y.reverse;\n const p = toScreen(s, xv, top[i]);\n const step = series.floating && y0 && Number.isFinite(y0[i]);\n // ranges on a time axis (Gantt tasks) have no value to write\n if (step && model.y.type === \"time\" && !texts?.[i]) continue;\n const delta = step ? y[i] - (y0?.[i] ?? 0) : 0;\n labels.push({\n x: p.x,\n y: p.y,\n r: 0,\n text:\n texts?.[i] ??\n (step ? `${delta > 0 ? \"+\" : \"\"}${format(delta)}` : format(y[i])),\n placement: s.horizontal\n ? reversed\n ? \"left\"\n : \"right\"\n : reversed\n ? \"below\"\n : \"above\",\n });\n }\n continue;\n }\n if (series.type !== \"scatter\") continue;\n const { x, y, count, labels: texts, size } = series.cols;\n if (!texts) continue;\n for (let i = 0; i < count && labels.length < MAX_POINT_LABELS; i++) {\n const text = texts[i];\n if (!text) continue;\n const xi = x[i];\n const yi = y[i];\n if (xi < view.x[0] || xi > view.x[1] || yi < view.y[0] || yi > view.y[1])\n continue;\n const d = size && size[i] > 0 ? size[i] : series.pointSize;\n const p = toScreen(s, xi, yi);\n labels.push({ x: p.x, y: p.y, r: d / 2, text });\n }\n }\n return labels;\n};\n\n// ---------------------------------------------------------------- hit tests\n\ninterface Candidate {\n series: SeriesModel;\n index: number;\n /** Pixel position of the point */\n px: number;\n py: number;\n /** Distance along the x axis */\n dx: number;\n dist: number;\n inside: boolean;\n}\n\n/** Bars and box plots sit in a slot of their category */\nconst slotOffset = (s: SeriesModel) =>\n s.type === \"bar\" || s.type === \"boxplot\" ? s.barOffset : 0;\n\n/**\n * Screen position of a point (the end of a bar or stack, the close of a\n * candle, the median of a box)\n */\nexport const pointOf = (s: SeriesModel, i: number, sc: Scales) => {\n const p = toScreen(sc, s.cols.x[i] + slotOffset(s), plottedY(s, i));\n return { px: p.x, py: p.y };\n};\n\n/** Whether a pixel (along x, along y) is on a column from `a` to `b` */\nconst onColumn = (\n sc: Scales,\n center: number,\n half: number,\n a: number,\n b: number,\n ax: number,\n ay: number,\n) => {\n const pa = sc.yToPx(a);\n const pb = sc.yToPx(b);\n return (\n Math.abs(ax - center) <= half &&\n ay >= Math.min(pa, pb) - 2 &&\n ay <= Math.max(pa, pb) + 2\n );\n};\n\nconst candidateOf = (\n s: SeriesModel,\n i: number,\n px: number,\n py: number,\n sc: Scales,\n): Candidate => {\n const p = pointOf(s, i, sc);\n const ax = alongX(sc, px, py);\n const ay = alongY(sc, px, py);\n const center = sc.xToPx(s.cols.x[i] + slotOffset(s));\n let inside = false;\n if (s.type === \"bar\" && s.barBase && s.barTop) {\n const half = s.barHalfWidth / Math.abs(sc.xPerPx);\n inside = onColumn(sc, center, half, s.barBase[i], s.barTop[i], ax, ay);\n } else if (s.type === \"candlestick\" || s.type === \"boxplot\") {\n const { high, low, y } = s.cols;\n const half = Math.max(s.barHalfWidth / Math.abs(sc.xPerPx), 3);\n const a = high ? high[i] : y[i];\n const b = low ? low[i] : y[i];\n inside = onColumn(sc, center, half, a, b, ax, ay);\n }\n return {\n series: s,\n index: i,\n px: p.px,\n py: p.py,\n dx: Math.abs(sc.xToPx(s.cols.x[i]) - ax),\n dist: inside ? 0 : Math.hypot(p.px - px, p.py - py),\n inside,\n };\n};\n\n/** Diameter of a scatter dot */\nexport const dotSize = (s: SeriesModel, i: number) =>\n s.cols.size && s.cols.size[i] > 0 ? s.cols.size[i] : s.pointSize;\n\nconst maxSizes = new WeakMap<Float32Array, number>();\n\n/** Largest dot of a series (bubbles reach further than plain dots) */\nconst maxDot = (s: SeriesModel) => {\n const sizes = s.cols.size;\n if (!sizes) return s.pointSize;\n let max = maxSizes.get(sizes);\n if (max === undefined) {\n max = s.pointSize;\n for (let i = 0; i < sizes.length; i++) if (sizes[i] > max) max = sizes[i];\n maxSizes.set(sizes, max);\n }\n return max;\n};\n\nconst nearestScatter = (\n s: SeriesModel,\n px: number,\n py: number,\n sc: Scales,\n slop: number,\n) => {\n const radius = Math.max(maxDot(s) / 2 + 6, 10) + slop;\n const at = toData(sc, px, py);\n const rx = radius * Math.abs(sc.xPerPx);\n const ry = radius * Math.abs(sc.yPerPx);\n let best = -1;\n let bestDist = Infinity;\n const { x, y } = s.cols;\n gridOf(s).query(at.x - rx, at.x + rx, at.y - ry, at.y + ry, (i) => {\n const p = toScreen(sc, x[i], y[i]);\n const d = Math.hypot(p.x - px, p.y - py);\n const reach = Math.max(dotSize(s, i) / 2 + 4, 8) + slop;\n if (d <= reach && d <= bestDist) {\n bestDist = d;\n best = i;\n }\n });\n return best;\n};\n\n/** Heatmap cell containing a data position, -1 if none */\nconst cellAt = (s: SeriesModel, xv: number, yv: number) => {\n const { x: hx, y: hy } = s.cellHalf;\n const { x, y } = s.cols;\n let found = -1;\n gridOf(s).query(xv - hx, xv + hx, yv - hy, yv + hy, (i) => {\n if (\n s.cellColors?.[i] &&\n Math.abs(x[i] - xv) <= hx &&\n Math.abs(y[i] - yv) <= hy\n ) {\n found = i;\n }\n });\n return found;\n};\n\nconst nearestX = (s: SeriesModel, xv: number) => {\n const { x, y, count, sorted } = s.cols;\n if (sorted) return nearestIndex(x, y, count, xv);\n let best = -1;\n let bestD = Infinity;\n for (let i = 0; i < count; i++) {\n if (!Number.isFinite(y[i])) continue;\n const d = Math.abs(x[i] - xv);\n if (d < bestD) {\n bestD = d;\n best = i;\n }\n }\n return best;\n};\n\n/** Hover payload item of a point (values of the data, right axis included) */\nexport const hoverItemOf = (s: SeriesModel, index: number): ChartHoverItem => {\n const pc = s.pointColors?.[index];\n const { open, high, low, value, y0, q1, q3, outliers, labels } = s.raw;\n const label = labels?.[index];\n let color = pc ? toCss(pc) : s.colorCss;\n const extra: Partial<ChartHoverItem> = {};\n if (s.type === \"candlestick\") {\n const o = open ? open[index] : NaN;\n if (Number.isFinite(o)) extra.open = o;\n if (high && Number.isFinite(high[index])) extra.high = high[index];\n if (low && Number.isFinite(low[index])) extra.low = low[index];\n color = toCss(s.raw.y[index] < o ? s.downColor : s.upColor);\n } else if (s.type === \"heatmap\") {\n const v = value ? value[index] : s.raw.y[index];\n if (Number.isFinite(v)) extra.value = v;\n const packed = s.cellColors?.[index];\n if (packed) color = toCss(unpackColor(packed));\n } else if (s.type === \"boxplot\") {\n if (high && Number.isFinite(high[index])) extra.high = high[index];\n if (low && Number.isFinite(low[index])) extra.low = low[index];\n if (q1 && Number.isFinite(q1[index])) extra.q1 = q1[index];\n if (q3 && Number.isFinite(q3[index])) extra.q3 = q3[index];\n const out = outliers?.[index];\n if (out) extra.outliers = out.length;\n } else {\n if (y0 && Number.isFinite(y0[index])) extra.y0 = y0[index];\n if (s.type === \"scatter\" && value && Number.isFinite(value[index]))\n extra.value = value[index];\n }\n return {\n seriesIndex: s.index,\n seriesId: s.id,\n seriesName: s.name,\n index,\n x: s.raw.x[index],\n y: s.raw.y[index],\n color,\n ...(label !== undefined ? { label } : {}),\n ...extra,\n };\n};\n\nconst eventOf = (\n candidates: Candidate[],\n xTicks: AxisTicks | null,\n): ChartHoverEvent | null => {\n if (!candidates.length) return null;\n candidates.sort((a, b) => a.series.index - b.series.index);\n const items = candidates.map((c) => hoverItemOf(c.series, c.index));\n const x = items[0].x;\n return { items, x, xLabel: xTicks?.formatValue(x) ?? String(x) };\n};\n\n/**\n * Points under a pixel of the stage: the nearest point (scatter / `nearest`\n * tooltips) or every series at the nearest x (`axis` tooltips).\n * `slop` widens the reach of the dots (touch screens).\n */\nexport const hitTest = (\n model: ChartModel,\n sc: Scales,\n xTicks: AxisTicks | null,\n px: number,\n py: number,\n slop = 0,\n): ChartHoverEvent | null => {\n const { plot } = sc;\n const margin = 6 + slop;\n if (\n px < plot.x - margin ||\n px > plot.x + plot.width + margin ||\n py < plot.y - margin ||\n py > plot.y + plot.height + margin\n ) {\n return null;\n }\n const at = toData(sc, px, py);\n const scatter: Candidate[] = [];\n const others: Candidate[] = [];\n for (const s of model.series) {\n if (s.hidden || s.cols.count === 0) continue;\n if (s.type === \"scatter\") {\n const i = nearestScatter(s, px, py, sc, slop);\n if (i >= 0) scatter.push(candidateOf(s, i, px, py, sc));\n } else if (s.type === \"heatmap\") {\n const i = cellAt(s, at.x, at.y);\n if (i >= 0) {\n const c = candidateOf(s, i, px, py, sc);\n c.inside = true;\n c.dist = 0;\n scatter.push(c);\n }\n } else {\n const i = nearestX(s, at.x);\n if (i >= 0) others.push(candidateOf(s, i, px, py, sc));\n }\n }\n if (model.tooltipMode === \"nearest\") {\n const all = [...scatter, ...others].filter(\n (c) => c.inside || c.series.type === \"scatter\" || c.dist <= 32 + slop,\n );\n if (!all.length) return null;\n const best = all.reduce((a, b) => (b.dist <= a.dist ? b : a));\n return eventOf([best], xTicks);\n }\n if (!others.length) {\n if (!scatter.length) return null;\n return eventOf(\n [scatter.reduce((a, b) => (b.dist <= a.dist ? b : a))],\n xTicks,\n );\n }\n const bestDx = Math.min(...others.map((c) => c.dx));\n const bandPx = model.x.type === \"category\" ? 0.5 / Math.abs(sc.xPerPx) : 0;\n const aligned = others.filter((c) => c.dx <= bestDx + Math.max(1, bandPx));\n const first = aligned.reduce((a, b) => (b.dx < a.dx ? b : a));\n const ordered = [first, ...aligned.filter((c) => c !== first), ...scatter];\n const event = eventOf(ordered, xTicks);\n if (event) {\n event.x = hoverItemOf(first.series, first.index).x;\n event.xLabel = xTicks?.formatValue(event.x) ?? String(event.x);\n }\n return event;\n};\n\n/** Whether two hover payloads point at the same points */\nexport const sameHover = (\n a: ChartHoverEvent | null,\n b: ChartHoverEvent | null,\n): boolean =>\n a === b ||\n (!!a &&\n !!b &&\n a.items.length === b.items.length &&\n a.items.every(\n (it, i) =>\n it.index === b.items[i].index &&\n it.seriesIndex === b.items[i].seriesIndex,\n ));\n\n// ------------------------------------------------------------------ tooltip\n\n/** Change of a candlestick: `+1.25%` */\nconst CHANGE_PERCENT: Intl.NumberFormatOptions = {\n style: \"percent\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n};\n\nexport interface TooltipRow {\n /** Swatch color (CSS) */\n color: string | null;\n name: string;\n value: string;\n}\n\nexport interface TooltipContent {\n title: string;\n /** Swatch of the title (single scatter point) */\n titleColor: string | null;\n rows: TooltipRow[];\n}\n\n/**\n * Default tooltip content of a hover payload; `y2Ticks` formats the values\n * of the right axis series\n */\nexport const tooltipContent = (\n model: ChartModel,\n event: ChartHoverEvent,\n yTicks: AxisTicks | null,\n y2Ticks: AxisTicks | null = null,\n): TooltipContent => {\n const yFormat = yTicks?.formatValue ?? String;\n const formatOf = (s: SeriesModel) =>\n s.format ??\n (s.yAxis === \"right\"\n ? (y2Ticks?.formatValue ?? model.y2?.format ?? model.formatValue)\n : yFormat);\n const names = model.labels;\n const first = event.items[0];\n const firstSeries = first ? model.series[first.seriesIndex] : null;\n if (event.items.length === 1 && firstSeries?.type === \"heatmap\") {\n const yName =\n model.y.type === \"category\"\n ? (model.y.categories[Math.round(first.y)] ?? yFormat(first.y))\n : yFormat(first.y);\n return {\n title: `${event.xLabel} · ${yName}`,\n titleColor: null,\n rows: [\n {\n color: first.color,\n name: first.label ?? firstSeries.name,\n value:\n first.value === undefined\n ? \"–\"\n : (firstSeries.format ?? model.formatValue)(first.value),\n },\n ],\n };\n }\n const scatterOnly = event.items.every(\n (it) => model.series[it.seriesIndex].type === \"scatter\",\n );\n if (scatterOnly && event.items.length === 1) {\n const it = event.items[0];\n const s = model.series[it.seriesIndex];\n const valueRow: TooltipRow[] =\n it.value !== undefined\n ? [\n {\n color: null,\n name: s.valueName ?? names.value,\n value: (s.format ?? model.formatValue)(it.value),\n },\n ]\n : [];\n if (model.x.type === \"category\") {\n // a dot on a category (Gantt milestones, dot plots)\n return {\n title: it.label ?? event.xLabel,\n titleColor: null,\n rows: [\n { color: it.color, name: it.seriesName, value: formatOf(s)(it.y) },\n ...valueRow,\n ],\n };\n }\n const rows: TooltipRow[] = [\n { color: null, name: model.x.title ?? names.x, value: event.xLabel },\n {\n color: null,\n name:\n (s.yAxis === \"right\" ? model.y2?.title : model.y.title) ?? names.y,\n value: formatOf(s)(it.y),\n },\n ...valueRow,\n ];\n if (it.label !== undefined && model.series.length > 1)\n rows.push({ color: null, name: \"\", value: it.seriesName });\n return { title: it.label ?? it.seriesName, titleColor: it.color, rows };\n }\n const rows: TooltipRow[] = [];\n /** Row of every item */\n const rowOf: number[] = [];\n // one labelled bar on a numeric axis (a histogram bin): the label is the title\n const binTitle =\n event.items.length === 1 &&\n firstSeries?.type === \"bar\" &&\n model.x.type !== \"category\" &&\n first?.label !== undefined\n ? first.label\n : null;\n for (const it of event.items) {\n const s = model.series[it.seriesIndex];\n const format = formatOf(s);\n rowOf.push(rows.length);\n if (s.type === \"candlestick\") {\n const change =\n it.open !== undefined && it.open !== 0\n ? ((it.y - it.open) / Math.abs(it.open)) * 100\n : NaN;\n rows.push({\n color: it.color,\n name: s.name,\n value: Number.isFinite(change)\n ? `${change >= 0 ? \"+\" : \"\"}${numberFormat(model.locale, CHANGE_PERCENT).format(change / 100)}`\n : \"\",\n });\n const ohlc: [string, number | undefined][] = [\n [names.open, it.open],\n [names.high, it.high],\n [names.low, it.low],\n [names.close, it.y],\n ];\n for (const [name, v] of ohlc) {\n if (v !== undefined && Number.isFinite(v))\n rows.push({ color: null, name, value: format(v) });\n }\n continue;\n }\n if (s.type === \"boxplot\") {\n rows.push({\n color: it.color,\n name: it.label ? `${it.seriesName} · ${it.label}` : it.seriesName,\n value: \"\",\n });\n const stats: [string, number | undefined][] = [\n [names.max, it.high],\n [names.q3, it.q3],\n [names.median, it.y],\n [names.q1, it.q1],\n [names.min, it.low],\n ];\n for (const [name, v] of stats) {\n if (v !== undefined && Number.isFinite(v))\n rows.push({ color: null, name, value: format(v) });\n }\n if (it.outliers)\n rows.push({\n color: null,\n name: names.outliers,\n value: String(it.outliers),\n });\n continue;\n }\n let value = format(it.y);\n if (it.y0 !== undefined) {\n // waterfall steps: the change; time ranges and bands: both ends\n const delta = it.y - it.y0;\n value =\n s.type === \"bar\" && model.y.type !== \"time\"\n ? `${delta > 0 ? \"+\" : \"\"}${format(delta)}`\n : `${format(it.y0)} – ${format(it.y)}`;\n }\n rows.push({\n color: it.color,\n name:\n it.label && binTitle === null\n ? `${it.seriesName} · ${it.label}`\n : it.seriesName,\n value,\n });\n }\n if (model.percent) {\n // 100% stacks: the share of every value next to it\n const totals = new Map<string, number>();\n for (const it of event.items) {\n const stack = stackIdOf(model, it.seriesIndex);\n if (stack !== null && Number.isFinite(it.y))\n totals.set(stack, (totals.get(stack) ?? 0) + Math.abs(it.y));\n }\n event.items.forEach((it, k) => {\n const stack = stackIdOf(model, it.seriesIndex);\n const total = stack !== null ? totals.get(stack) : undefined;\n const row = rows[rowOf[k]];\n if (total && row && Number.isFinite(it.y)) {\n const format = model.series[it.seriesIndex].format ?? model.formatValue;\n row.value = `${format(it.y)} · ${formatPercent((Math.abs(it.y) / total) * 100, model.locale, true)}`;\n }\n });\n }\n return { title: binTitle ?? event.xLabel, titleColor: null, rows };\n};\n\n/** Stack of a series in a 100% chart (`null` when it is not stacked) */\nconst stackIdOf = (model: ChartModel, seriesIndex: number): string | null =>\n model.series[seriesIndex].hidden ? null : model.stacks[seriesIndex];\n\n/**\n * Shape of the hover marker of an item: a dot with a soft halo on a point,\n * a band behind the hovered bar group / candle, or the outline of a cell\n */\nexport type HoverMark =\n | {\n kind: \"dot\";\n x: number;\n y: number;\n size: number;\n color: string;\n /** Translucent series color of the halo around the dot */\n halo: string;\n }\n | { kind: \"band\"; x: number; y: number; width: number; height: number }\n | { kind: \"cell\"; x: number; y: number; width: number; height: number };\n\n/** Markers of the hovered points (pixels of the stage); bands come first */\nexport const hoverMarks = (\n model: ChartModel,\n sc: Scales,\n event: ChartHoverEvent,\n): HoverMark[] => {\n const marks: HoverMark[] = [];\n const { plot } = sc;\n let bandLo = Infinity;\n let bandHi = -Infinity;\n for (const it of event.items) {\n const s = model.series[it.seriesIndex];\n if (s.type === \"bar\" || s.type === \"candlestick\" || s.type === \"boxplot\") {\n const c = sc.xToPx(it.x + slotOffset(s));\n const half = Math.max(s.barHalfWidth / Math.abs(sc.xPerPx), 1);\n bandLo = Math.min(bandLo, c - half);\n bandHi = Math.max(bandHi, c + half);\n continue;\n }\n if (s.type === \"heatmap\") {\n const cx = sc.xToPx(it.x);\n const cy = sc.yToPx(it.y);\n const hw = Math.abs(s.cellHalf.x / sc.xPerPx);\n const hh = Math.abs(s.cellHalf.y / sc.yPerPx);\n marks.push({\n kind: \"cell\",\n ...screenRect(sc, cx - hw, cx + hw, cy - hh, cy + hh),\n });\n continue;\n }\n const { px, py } = pointOf(s, it.index, sc);\n if (\n px < plot.x - 1 ||\n px > plot.x + plot.width + 1 ||\n py < plot.y - 1 ||\n py > plot.y + plot.height + 1\n ) {\n continue;\n }\n const size =\n s.type === \"scatter\"\n ? dotSize(s, it.index) + 4\n : Math.max(9, s.lineWidth * 2 + 5);\n const rgba = s.pointColors?.[it.index] ?? s.color;\n marks.push({\n kind: \"dot\",\n x: px,\n y: py,\n size,\n color: it.color,\n halo: toCss(rgba, 0.2),\n });\n }\n if (bandHi > bandLo) {\n // the group of bars plus a margin, clipped to the plot\n const pad = Math.max(4, (bandHi - bandLo) * 0.14);\n const lo = sc.horizontal ? plot.y : plot.x;\n const hi = lo + (sc.horizontal ? plot.height : plot.width);\n const a = Math.max(lo, bandLo - pad);\n const b = Math.min(hi, bandHi + pad);\n if (b > a) {\n marks.unshift({\n kind: \"band\",\n ...(sc.horizontal\n ? { x: plot.x, y: a, width: plot.width, height: b - a }\n : { x: a, y: plot.y, width: b - a, height: plot.height }),\n });\n }\n }\n return marks;\n};\n\n/** Swatch of a series in the legend */\nexport const legendShape = (\n type: SeriesModel[\"type\"],\n): \"dot\" | \"line\" | \"square\" =>\n type === \"scatter\" ? \"dot\" : type === \"line\" ? \"line\" : \"square\";\n\n/** Whether the guide line follows the pointer */\nexport const showsCrosshair = (\n model: ChartModel,\n event: ChartHoverEvent,\n crosshair: boolean | undefined,\n) =>\n crosshair ??\n (model.tooltipMode === \"axis\" &&\n event.items.some((it) => {\n const type = model.series[it.seriesIndex].type;\n return type === \"line\" || type === \"area\";\n }) &&\n // bars get a band instead\n !event.items.some((it) => {\n const type = model.series[it.seriesIndex].type;\n return type === \"bar\" || type === \"candlestick\" || type === \"boxplot\";\n }));\n\n/** Pixel of the guide line along the x axis (`null` when hidden / outside the plot) */\nexport const crosshairAt = (\n model: ChartModel,\n sc: Scales,\n event: ChartHoverEvent,\n crosshair: boolean | undefined,\n): number | null => {\n if (!showsCrosshair(model, event, crosshair)) return null;\n const c = sc.xToPx(event.items[0].x);\n const lo = sc.horizontal ? sc.plot.y : sc.plot.x;\n const hi = lo + (sc.horizontal ? sc.plot.height : sc.plot.width);\n return c >= lo && c <= hi ? c : null;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../color.cjs"),t=require("../scale.cjs"),n=require("../overlay.cjs"),r=require("./scene.cjs");var i=e=>r.uniqueKeys(e.data.map(e=>e.name)),a=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,o=(e,t)=>(t.ranges??e.ranges??[]).filter(e=>typeof e==`number`&&Number.isFinite(e)).slice().sort((e,t)=>e-t),s=(e,n)=>{let i=o(e,n),s=r.finite(n.value),c=a(n.target),ee=[0,s,...c===void 0?[]:[c]],l=a(n.min)??Math.min(...ee),u=[s,...c===void 0?[]:[c],...i],d=a(n.max);if(d===void 0){let e=Math.max(...u),n=i.length?i[i.length-1]:-1/0;d=e<=n?n:t.niceDomain(l,e,5)[1]}return d>l||(d===l?d=l+1:[l,d]=[d,l]),[l,d]},c=(e,t,n)=>{i(e).forEach((i,o)=>{let s=e.data[o];n.set(i,r.finite(s.value));let c=a(s.target);c!==void 0&&n.set(`>${i}`,c),n.set(`~${i}`,+!t.has(o))})},ee=(t,n,i)=>{let{theme:a}=n;return Array.from({length:Math.max(1,i)},(n,o)=>{let s=e.mix(a.background,a.text,i<=1?.09:.24-.16*o/(i-1)),c=t.rangeColors?.[o];return c?r.resolveWith(a,c,s):s})},l=(c,l)=>{let{theme:u,area:d,measure:f,hidden:p}=l,te=i(c),m=c.data.length,h=te.map((e,t)=>r.clamp(l.value(`~${e}`,+!p.has(t)),0,1)),g=r.sum(h);if(!m||g<=1e-6)return r.emptyLayout(l);let _=c.orientation===`vertical`,v=r.clamp(l.enter,0,1),ne=r.clamp(r.finite(c.barSize,.4),.1,1),y=n.font(u,12,600),b=n.font(u,11),x=n.font(u,12,600),S=n.font(u,10),C=e.toCss(u.textMuted),w=e.toCss(u.text),re=e.toCss(r.resolveWith(u,c.targetColor,u.text)),ie=c.ticks!==!1,T=[],E=[],D=c.data.some((e,t)=>!!e.subtitle&&h[t]>0),O=c.data.map(e=>l.format(r.finite(e.value))),k=_?0:Math.min(d.width*.32,Math.max(0,...c.data.map(e=>Math.max(f(e.name,y),e.subtitle?f(e.subtitle,b):0)))+14),A=_?0:Math.min(d.width*.2,Math.max(0,...O.map(e=>f(e,x)))+12),j=_?22+(D?14:0):0,M=_?20:0,ae=(_?d.width:d.height)/g,N=0;return c.data.forEach((n,i)=>{let u=h[i],m=ae*u,g=N;if(N+=m,u<=.001)return;let D=te[i],P=u,[F,I]=s(c,n),L=o(c,n).filter(e=>e>F),R=ee(c,l,L.length),oe=l.value(D,r.finite(n.value)),z=a(n.target),B=z===void 0?void 0:l.value(`>${D}`,z),se=l.color(n.color,i),V=e.toCss(se),H=r.clamp(m*(_?.3:.42),8,28),U=_?Math.max(1,d.height-j-M):Math.max(1,d.width-k-A),W=ie?t.linearTicks(F,I,Math.max(2,Math.floor(U/70))):[],G=_?m/2-H/2-6:m-H-10,ce=Math.max(0,...W.map(e=>f(l.format(e),S))),K=W.length>1&&(_?G>=ce:G>=14),le=_?d.y+d.height-j:d.x+k,q=e=>le+(_?-1:1)*U*r.clamp((e-F)/(I-F),0,1),J=_?d.x+g+m/2:d.y+g+(m-(K?14:0))/2,Y=(e,t,n)=>{let r=Math.min(q(e),q(t)),i=Math.max(q(e),q(t));return _?{x:J-n/2,y:r,width:n,height:i-r}:{x:r,y:J-n/2,width:i-r,height:n}};T.push({kind:`rect`,..._?{x:d.x+g,y:d.y,width:m,height:d.height}:{x:d.x,y:d.y+g,width:d.width,height:m},radius:0,fill:`rgba(0, 0, 0, 0)`,hit:i,alpha:P});let ue=L.length?L:[I],X=F;ue.forEach((t,n)=>{let r=Math.min(t,I);r>X&&T.push({kind:`rect`,...Y(X,r,H),radius:0,fill:e.toCss(R[n]),hit:i,alpha:P}),X=Math.max(X,r)}),X<I&&T.push({kind:`rect`,...Y(X,I,H),radius:0,fill:e.toCss(R[R.length-1]),hit:i,alpha:P});let Z=r.clamp(0,F,I),de=Z+(oe-Z)*v;if(T.push({kind:`rect`,...Y(Z,de,H*ne),radius:1,fill:V,hit:i,alpha:P,brighten:!0}),B!==void 0&&B>=F&&B<=I){let e=q(B),t=H*.82;T.push({kind:`rect`,..._?{x:J-t/2,y:e-1.5,width:t,height:3}:{x:e-1.5,y:J-t/2,width:3,height:t},radius:1,fill:re,hit:i,alpha:P*v})}if(K)for(let e of W){let t=q(e);T.push({kind:`text`,x:_?J-H/2-5:t,y:_?t:J+H/2+4,text:l.format(e),font:S,color:C,align:_?`right`:`center`,baseline:_?`middle`:`top`,hit:i,alpha:P})}if(_){let e=Math.max(0,m-8),t=r.ellipsize(n.name,e,y,f),a=d.y+d.height;t&&T.push({kind:`text`,x:J,y:a-j+16,text:t,font:y,color:w,align:`center`,baseline:`middle`,hit:i,alpha:P});let o=n.subtitle?r.ellipsize(n.subtitle,e,b,f):``;o&&T.push({kind:`text`,x:J,y:a-j+31,text:o,font:b,color:C,align:`center`,baseline:`middle`,hit:i,alpha:P});let s=r.ellipsize(O[i],e,x,f);s&&T.push({kind:`text`,x:J,y:d.y+M/2,text:s,font:x,color:w,align:`center`,baseline:`middle`,hit:i,alpha:P})}else{let e=Math.max(0,k-14),t=r.ellipsize(n.name,e,y,f),a=n.subtitle&&m>=34?r.ellipsize(n.subtitle,e,b,f):``,o=d.x+k-14;t&&T.push({kind:`text`,x:o,y:a?J-7:J,text:t,font:y,color:w,align:`right`,baseline:`middle`,hit:i,alpha:P}),a&&T.push({kind:`text`,x:o,y:J+8,text:a,font:b,color:C,align:`right`,baseline:`middle`,hit:i,alpha:P});let s=r.ellipsize(O[i],A-8,x,f);s&&T.push({kind:`text`,x:d.x+d.width,y:J,text:s,font:x,color:w,align:`right`,baseline:`middle`,hit:i,alpha:P})}if(p.has(i))return;let Q=r.finite(n.value),$=z!==void 0&&z!==0?Q/z:(Q-F)/(I-F),fe=L.findIndex(e=>Q<=e),pe=fe>=0?c.rangeLabels?.[fe]:void 0,me=q(Q);E.push({index:i,name:n.name,value:Q,percent:$,share:l.percent($),color:V,x:_?J:me,y:_?me:J,rows:[{name:l.labels.value,value:l.format(Q)},...z===void 0?[]:[{name:l.labels.target,value:l.format(z)},{name:l.labels.ofTarget,value:l.percent($)}],...pe?[{name:l.labels.range,value:pe}]:[]]})}),{nodes:T,items:E,dim:.4,empty:!1}};exports.bulletScale=s,exports.bulletValues=c,exports.layoutBullet=l;
|
|
2
|
+
//# sourceMappingURL=bullet.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bullet.cjs","names":["uniqueKeys","finite","niceDomain","mix","resolveWith","clamp","sum","emptyLayout","font","toCss","linearTicks","ellipsize","require_color","require_scale","require_overlay","require_scene","keysOf","o","d","num","v","rangesOf","r","a","b","bulletScale","ranges","value","target","lows","min","highs","max","top","last","bulletValues","i","out","key","rangeFills","c","count","gray","theme","k","own","layoutBullet","keys","n","weights","total","vertical","enter","barSize","nameFont","subFont","valueFont","tickFont","muted","text","markColor","showTicks","nodes","items","hasSubtitle","valueText","labelW","area","measure","valueW","t","labelH","valueH","unit","offset","w","slot","from","alpha","fills","target0","color","css","thick","span","ticks","tickRoom","tickW","drawTicks","p0","along","mid","band","lo","hi","bounds","edge","to","bound","base","shownValue","at","len","room","name","bottom","sub","x","hidden","percent","rangeIndex","rangeName","end"],"sources":["../../../../../charts/src/engine/shapes/bullet.ts"],"sourcesContent":["// Bullet chart layout (Stephen Few): per row, qualitative ranges as shades\n// of gray, the measure as a bar and the target as a marker, on the row's own\n// scale; name and subtitle on the left (below when vertical), value on the\n// right (above when vertical), tick labels when there is room.\n\nimport { mix, toCss, type Rgba } from \"../color\";\nimport { font } from \"../overlay\";\nimport { linearTicks, niceDomain } from \"../scale\";\nimport {\n clamp,\n ellipsize,\n emptyLayout,\n finite,\n resolveWith,\n sum,\n uniqueKeys,\n type LayoutContext,\n type LayoutResult,\n type ShapeItem,\n type ShapeNode,\n} from \"./scene\";\nimport type { BulletChartOptions, BulletDatum } from \"./types\";\n\nconst keysOf = (o: BulletChartOptions) => uniqueKeys(o.data.map((d) => d.name));\n\nconst num = (v: number | undefined) =>\n typeof v === \"number\" && Number.isFinite(v) ? v : undefined;\n\n/** Qualitative ranges of a row: finite upper bounds, ascending */\nconst rangesOf = (o: BulletChartOptions, d: BulletDatum) =>\n (d.ranges ?? o.ranges ?? [])\n .filter((r) => typeof r === \"number\" && Number.isFinite(r))\n .slice()\n .sort((a, b) => a - b);\n\n/** Scale of a row: `[min, max]` */\nexport const bulletScale = (\n o: BulletChartOptions,\n d: BulletDatum,\n): [number, number] => {\n const ranges = rangesOf(o, d);\n const value = finite(d.value);\n const target = num(d.target);\n const lows = [0, value, ...(target !== undefined ? [target] : [])];\n let min = num(d.min) ?? Math.min(...lows);\n const highs = [value, ...(target !== undefined ? [target] : []), ...ranges];\n let max = num(d.max);\n if (max === undefined) {\n const top = Math.max(...highs);\n const last = ranges.length ? ranges[ranges.length - 1] : -Infinity;\n max = top <= last ? last : niceDomain(min, top, 5)[1];\n }\n if (!(max > min)) {\n if (max === min) max = min + 1;\n else [min, max] = [max, min];\n }\n return [min, max];\n};\n\nexport const bulletValues = (\n o: BulletChartOptions,\n hidden: ReadonlySet<number>,\n out: Map<string, number>,\n) => {\n keysOf(o).forEach((key, i) => {\n const d = o.data[i];\n out.set(key, finite(d.value));\n const target = num(d.target);\n if (target !== undefined) out.set(`>${key}`, target);\n out.set(`~${key}`, hidden.has(i) ? 0 : 1);\n });\n};\n\n/** Default fills of the ranges: grays, the lowest (poorest) darkest */\nconst rangeFills = (\n o: BulletChartOptions,\n c: LayoutContext,\n count: number,\n): Rgba[] => {\n const { theme } = c;\n return Array.from({ length: Math.max(1, count) }, (_, k) => {\n const gray = mix(\n theme.background,\n theme.text,\n count <= 1 ? 0.09 : 0.24 - (0.16 * k) / (count - 1),\n );\n const own = o.rangeColors?.[k];\n return own ? resolveWith(theme, own, gray) : gray;\n });\n};\n\nexport const layoutBullet = (\n o: BulletChartOptions,\n c: LayoutContext,\n): LayoutResult => {\n const { theme, area, measure, hidden } = c;\n const keys = keysOf(o);\n const n = o.data.length;\n const weights = keys.map((key, i) =>\n clamp(c.value(`~${key}`, hidden.has(i) ? 0 : 1), 0, 1),\n );\n const total = sum(weights);\n if (!n || total <= 1e-6) return emptyLayout(c);\n const vertical = o.orientation === \"vertical\";\n const enter = clamp(c.enter, 0, 1);\n const barSize = clamp(finite(o.barSize, 0.4), 0.1, 1);\n const nameFont = font(theme, 12, 600);\n const subFont = font(theme, 11);\n const valueFont = font(theme, 12, 600);\n const tickFont = font(theme, 10);\n const muted = toCss(theme.textMuted);\n const text = toCss(theme.text);\n const transparent = \"rgba(0, 0, 0, 0)\";\n const markColor = toCss(resolveWith(theme, o.targetColor, theme.text));\n const showTicks = o.ticks !== false;\n\n const nodes: ShapeNode[] = [];\n const items: ShapeItem[] = [];\n const hasSubtitle = o.data.some((d, i) => !!d.subtitle && weights[i] > 0);\n const valueText = o.data.map((d) => c.format(finite(d.value)));\n\n // shared columns (horizontal) / bands (vertical) of the labels and values\n const labelW = vertical\n ? 0\n : Math.min(\n area.width * 0.32,\n Math.max(\n 0,\n ...o.data.map((d) =>\n Math.max(\n measure(d.name, nameFont),\n d.subtitle ? measure(d.subtitle, subFont) : 0,\n ),\n ),\n ) + 14,\n );\n const valueW = vertical\n ? 0\n : Math.min(\n area.width * 0.2,\n Math.max(0, ...valueText.map((t) => measure(t, valueFont))) + 12,\n );\n const labelH = vertical ? 22 + (hasSubtitle ? 14 : 0) : 0;\n const valueH = vertical ? 20 : 0;\n const unit = (vertical ? area.width : area.height) / total;\n\n let offset = 0;\n o.data.forEach((d, i) => {\n const w = weights[i];\n const slot = unit * w;\n const from = offset;\n offset += slot;\n if (w <= 1e-3) return;\n const key = keys[i];\n const alpha = w;\n const [min, max] = bulletScale(o, d);\n const ranges = rangesOf(o, d).filter((r) => r > min);\n const fills = rangeFills(o, c, ranges.length);\n const value = c.value(key, finite(d.value));\n const target0 = num(d.target);\n const target =\n target0 !== undefined ? c.value(`>${key}`, target0) : undefined;\n const color = c.color(d.color, i);\n const css = toCss(color);\n const thick = clamp(slot * (vertical ? 0.3 : 0.42), 8, 28);\n const span = vertical\n ? Math.max(1, area.height - labelH - valueH)\n : Math.max(1, area.width - labelW - valueW);\n const ticks = showTicks\n ? linearTicks(min, max, Math.max(2, Math.floor(span / 70)))\n : [];\n const tickRoom = vertical ? slot / 2 - thick / 2 - 6 : slot - thick - 10;\n const tickW = Math.max(\n 0,\n ...ticks.map((t) => measure(c.format(t), tickFont)),\n );\n const drawTicks =\n ticks.length > 1 && (vertical ? tickRoom >= tickW : tickRoom >= 14);\n\n // position along the scale, and across it\n const p0 = vertical ? area.y + area.height - labelH : area.x + labelW;\n const along = (v: number) =>\n p0 + (vertical ? -1 : 1) * span * clamp((v - min) / (max - min), 0, 1);\n const mid = vertical\n ? area.x + from + slot / 2\n : area.y + from + (slot - (drawTicks ? 14 : 0)) / 2;\n /** Rectangle from `a` to `b` along the scale, `t` thick across it */\n const band = (a: number, b: number, t: number) => {\n const lo = Math.min(along(a), along(b));\n const hi = Math.max(along(a), along(b));\n return vertical\n ? { x: mid - t / 2, y: lo, width: t, height: hi - lo }\n : { x: lo, y: mid - t / 2, width: hi - lo, height: t };\n };\n\n // the whole row / column is a hover target\n nodes.push({\n kind: \"rect\",\n ...(vertical\n ? { x: area.x + from, y: area.y, width: slot, height: area.height }\n : { x: area.x, y: area.y + from, width: area.width, height: slot }),\n radius: 0,\n fill: transparent,\n hit: i,\n alpha,\n });\n // ranges: disjoint segments (translucent colors must not add up)\n const bounds = ranges.length ? ranges : [max];\n let edge = min;\n bounds.forEach((bound, k) => {\n const to = Math.min(bound, max);\n if (to > edge)\n nodes.push({\n kind: \"rect\",\n ...band(edge, to, thick),\n radius: 0,\n fill: toCss(fills[k]),\n hit: i,\n alpha,\n });\n edge = Math.max(edge, to);\n });\n if (edge < max)\n nodes.push({\n kind: \"rect\",\n ...band(edge, max, thick),\n radius: 0,\n fill: toCss(fills[fills.length - 1]),\n hit: i,\n alpha,\n });\n // measure\n const base = clamp(0, min, max);\n const shownValue = base + (value - base) * enter;\n nodes.push({\n kind: \"rect\",\n ...band(base, shownValue, thick * barSize),\n radius: 1,\n fill: css,\n hit: i,\n alpha,\n brighten: true,\n });\n // target\n if (target !== undefined && target >= min && target <= max) {\n const at = along(target);\n const len = thick * 0.82;\n nodes.push({\n kind: \"rect\",\n ...(vertical\n ? { x: mid - len / 2, y: at - 1.5, width: len, height: 3 }\n : { x: at - 1.5, y: mid - len / 2, width: 3, height: len }),\n radius: 1,\n fill: markColor,\n hit: i,\n alpha: alpha * enter,\n });\n }\n // ticks\n if (drawTicks)\n for (const t of ticks) {\n const at = along(t);\n nodes.push({\n kind: \"text\",\n x: vertical ? mid - thick / 2 - 5 : at,\n y: vertical ? at : mid + thick / 2 + 4,\n text: c.format(t),\n font: tickFont,\n color: muted,\n align: vertical ? \"right\" : \"center\",\n baseline: vertical ? \"middle\" : \"top\",\n hit: i,\n alpha,\n });\n }\n\n // name, subtitle and value\n if (vertical) {\n const room = Math.max(0, slot - 8);\n const name = ellipsize(d.name, room, nameFont, measure);\n const bottom = area.y + area.height;\n if (name)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: bottom - labelH + 16,\n text: name,\n font: nameFont,\n color: text,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const sub = d.subtitle\n ? ellipsize(d.subtitle, room, subFont, measure)\n : \"\";\n if (sub)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: bottom - labelH + 31,\n text: sub,\n font: subFont,\n color: muted,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const value = ellipsize(valueText[i], room, valueFont, measure);\n if (value)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: area.y + valueH / 2,\n text: value,\n font: valueFont,\n color: text,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n } else {\n const room = Math.max(0, labelW - 14);\n const name = ellipsize(d.name, room, nameFont, measure);\n const sub =\n d.subtitle && slot >= 34\n ? ellipsize(d.subtitle, room, subFont, measure)\n : \"\";\n const x = area.x + labelW - 14;\n if (name)\n nodes.push({\n kind: \"text\",\n x,\n y: sub ? mid - 7 : mid,\n text: name,\n font: nameFont,\n color: text,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n if (sub)\n nodes.push({\n kind: \"text\",\n x,\n y: mid + 8,\n text: sub,\n font: subFont,\n color: muted,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const value = ellipsize(valueText[i], valueW - 8, valueFont, measure);\n if (value)\n nodes.push({\n kind: \"text\",\n x: area.x + area.width,\n y: mid,\n text: value,\n font: valueFont,\n color: text,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n }\n\n if (hidden.has(i)) return;\n const v = finite(d.value);\n const percent =\n target0 !== undefined && target0 !== 0\n ? v / target0\n : (v - min) / (max - min);\n const rangeIndex = ranges.findIndex((r) => v <= r);\n const rangeName = rangeIndex >= 0 ? o.rangeLabels?.[rangeIndex] : undefined;\n const end = along(v);\n items.push({\n index: i,\n name: d.name,\n value: v,\n percent,\n share: c.percent(percent),\n color: css,\n x: vertical ? mid : end,\n y: vertical ? end : mid,\n rows: [\n { name: c.labels.value, value: c.format(v) },\n ...(target0 !== undefined\n ? [\n { name: c.labels.target, value: c.format(target0) },\n { name: c.labels.ofTarget, value: c.percent(percent) },\n ]\n : []),\n ...(rangeName ? [{ name: c.labels.range, value: rangeName }] : []),\n ],\n });\n });\n\n return { nodes, items, dim: 0.4, empty: false };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LayoutContext, LayoutResult } from './scene.cjs';
|
|
2
|
+
import { BulletChartOptions, BulletDatum } from './types.cjs';
|
|
3
|
+
/** Scale of a row: `[min, max]` */
|
|
4
|
+
export declare const bulletScale: (o: BulletChartOptions, d: BulletDatum) => [number, number];
|
|
5
|
+
export declare const bulletValues: (o: BulletChartOptions, hidden: ReadonlySet<number>, out: Map<string, number>) => void;
|
|
6
|
+
export declare const layoutBullet: (o: BulletChartOptions, c: LayoutContext) => LayoutResult;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LayoutContext, LayoutResult } from './scene.js';
|
|
2
|
+
import { BulletChartOptions, BulletDatum } from './types.js';
|
|
3
|
+
/** Scale of a row: `[min, max]` */
|
|
4
|
+
export declare const bulletScale: (o: BulletChartOptions, d: BulletDatum) => [number, number];
|
|
5
|
+
export declare const bulletValues: (o: BulletChartOptions, hidden: ReadonlySet<number>, out: Map<string, number>) => void;
|
|
6
|
+
export declare const layoutBullet: (o: BulletChartOptions, c: LayoutContext) => LayoutResult;
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { mix as e, toCss as t } from "../color.js";
|
|
2
|
+
import { linearTicks as n, niceDomain as r } from "../scale.js";
|
|
3
|
+
import { font as i } from "../overlay.js";
|
|
4
|
+
import { clamp as a, ellipsize as o, emptyLayout as s, finite as c, resolveWith as l, sum as u, uniqueKeys as d } from "./scene.js";
|
|
5
|
+
//#region src/engine/shapes/bullet.ts
|
|
6
|
+
var f = (e) => d(e.data.map((e) => e.name)), p = (e) => typeof e == "number" && Number.isFinite(e) ? e : void 0, m = (e, t) => (t.ranges ?? e.ranges ?? []).filter((e) => typeof e == "number" && Number.isFinite(e)).slice().sort((e, t) => e - t), ee = (e, t) => {
|
|
7
|
+
let n = m(e, t), i = c(t.value), a = p(t.target), o = [
|
|
8
|
+
0,
|
|
9
|
+
i,
|
|
10
|
+
...a === void 0 ? [] : [a]
|
|
11
|
+
], s = p(t.min) ?? Math.min(...o), l = [
|
|
12
|
+
i,
|
|
13
|
+
...a === void 0 ? [] : [a],
|
|
14
|
+
...n
|
|
15
|
+
], u = p(t.max);
|
|
16
|
+
if (u === void 0) {
|
|
17
|
+
let e = Math.max(...l), t = n.length ? n[n.length - 1] : -Infinity;
|
|
18
|
+
u = e <= t ? t : r(s, e, 5)[1];
|
|
19
|
+
}
|
|
20
|
+
return u > s || (u === s ? u = s + 1 : [s, u] = [u, s]), [s, u];
|
|
21
|
+
}, h = (e, t, n) => {
|
|
22
|
+
f(e).forEach((r, i) => {
|
|
23
|
+
let a = e.data[i];
|
|
24
|
+
n.set(r, c(a.value));
|
|
25
|
+
let o = p(a.target);
|
|
26
|
+
o !== void 0 && n.set(`>${r}`, o), n.set(`~${r}`, +!t.has(i));
|
|
27
|
+
});
|
|
28
|
+
}, te = (t, n, r) => {
|
|
29
|
+
let { theme: i } = n;
|
|
30
|
+
return Array.from({ length: Math.max(1, r) }, (n, a) => {
|
|
31
|
+
let o = e(i.background, i.text, r <= 1 ? .09 : .24 - .16 * a / (r - 1)), s = t.rangeColors?.[a];
|
|
32
|
+
return s ? l(i, s, o) : o;
|
|
33
|
+
});
|
|
34
|
+
}, g = (e, r) => {
|
|
35
|
+
let { theme: d, area: h, measure: g, hidden: _ } = r, v = f(e), y = e.data.length, b = v.map((e, t) => a(r.value(`~${e}`, +!_.has(t)), 0, 1)), x = u(b);
|
|
36
|
+
if (!y || x <= 1e-6) return s(r);
|
|
37
|
+
let S = e.orientation === "vertical", C = a(r.enter, 0, 1), ne = a(c(e.barSize, .4), .1, 1), w = i(d, 12, 600), T = i(d, 11), E = i(d, 12, 600), D = i(d, 10), O = t(d.textMuted), k = t(d.text), re = t(l(d, e.targetColor, d.text)), ie = e.ticks !== !1, A = [], j = [], M = e.data.some((e, t) => !!e.subtitle && b[t] > 0), N = e.data.map((e) => r.format(c(e.value))), P = S ? 0 : Math.min(h.width * .32, Math.max(0, ...e.data.map((e) => Math.max(g(e.name, w), e.subtitle ? g(e.subtitle, T) : 0))) + 14), F = S ? 0 : Math.min(h.width * .2, Math.max(0, ...N.map((e) => g(e, E))) + 12), I = S ? 22 + (M ? 14 : 0) : 0, ae = S ? 20 : 0, oe = (S ? h.width : h.height) / x, se = 0;
|
|
38
|
+
return e.data.forEach((i, s) => {
|
|
39
|
+
let l = b[s], u = oe * l, d = se;
|
|
40
|
+
if (se += u, l <= .001) return;
|
|
41
|
+
let f = v[s], y = l, [x, M] = ee(e, i), L = m(e, i).filter((e) => e > x), R = te(e, r, L.length), ce = r.value(f, c(i.value)), z = p(i.target), B = z === void 0 ? void 0 : r.value(`>${f}`, z), le = r.color(i.color, s), V = t(le), H = a(u * (S ? .3 : .42), 8, 28), U = S ? Math.max(1, h.height - I - ae) : Math.max(1, h.width - P - F), W = ie ? n(x, M, Math.max(2, Math.floor(U / 70))) : [], G = S ? u / 2 - H / 2 - 6 : u - H - 10, ue = Math.max(0, ...W.map((e) => g(r.format(e), D))), K = W.length > 1 && (S ? G >= ue : G >= 14), de = S ? h.y + h.height - I : h.x + P, q = (e) => de + (S ? -1 : 1) * U * a((e - x) / (M - x), 0, 1), J = S ? h.x + d + u / 2 : h.y + d + (u - (K ? 14 : 0)) / 2, Y = (e, t, n) => {
|
|
42
|
+
let r = Math.min(q(e), q(t)), i = Math.max(q(e), q(t));
|
|
43
|
+
return S ? {
|
|
44
|
+
x: J - n / 2,
|
|
45
|
+
y: r,
|
|
46
|
+
width: n,
|
|
47
|
+
height: i - r
|
|
48
|
+
} : {
|
|
49
|
+
x: r,
|
|
50
|
+
y: J - n / 2,
|
|
51
|
+
width: i - r,
|
|
52
|
+
height: n
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
A.push({
|
|
56
|
+
kind: "rect",
|
|
57
|
+
...S ? {
|
|
58
|
+
x: h.x + d,
|
|
59
|
+
y: h.y,
|
|
60
|
+
width: u,
|
|
61
|
+
height: h.height
|
|
62
|
+
} : {
|
|
63
|
+
x: h.x,
|
|
64
|
+
y: h.y + d,
|
|
65
|
+
width: h.width,
|
|
66
|
+
height: u
|
|
67
|
+
},
|
|
68
|
+
radius: 0,
|
|
69
|
+
fill: "rgba(0, 0, 0, 0)",
|
|
70
|
+
hit: s,
|
|
71
|
+
alpha: y
|
|
72
|
+
});
|
|
73
|
+
let fe = L.length ? L : [M], X = x;
|
|
74
|
+
fe.forEach((e, n) => {
|
|
75
|
+
let r = Math.min(e, M);
|
|
76
|
+
r > X && A.push({
|
|
77
|
+
kind: "rect",
|
|
78
|
+
...Y(X, r, H),
|
|
79
|
+
radius: 0,
|
|
80
|
+
fill: t(R[n]),
|
|
81
|
+
hit: s,
|
|
82
|
+
alpha: y
|
|
83
|
+
}), X = Math.max(X, r);
|
|
84
|
+
}), X < M && A.push({
|
|
85
|
+
kind: "rect",
|
|
86
|
+
...Y(X, M, H),
|
|
87
|
+
radius: 0,
|
|
88
|
+
fill: t(R[R.length - 1]),
|
|
89
|
+
hit: s,
|
|
90
|
+
alpha: y
|
|
91
|
+
});
|
|
92
|
+
let Z = a(0, x, M), pe = Z + (ce - Z) * C;
|
|
93
|
+
if (A.push({
|
|
94
|
+
kind: "rect",
|
|
95
|
+
...Y(Z, pe, H * ne),
|
|
96
|
+
radius: 1,
|
|
97
|
+
fill: V,
|
|
98
|
+
hit: s,
|
|
99
|
+
alpha: y,
|
|
100
|
+
brighten: !0
|
|
101
|
+
}), B !== void 0 && B >= x && B <= M) {
|
|
102
|
+
let e = q(B), t = H * .82;
|
|
103
|
+
A.push({
|
|
104
|
+
kind: "rect",
|
|
105
|
+
...S ? {
|
|
106
|
+
x: J - t / 2,
|
|
107
|
+
y: e - 1.5,
|
|
108
|
+
width: t,
|
|
109
|
+
height: 3
|
|
110
|
+
} : {
|
|
111
|
+
x: e - 1.5,
|
|
112
|
+
y: J - t / 2,
|
|
113
|
+
width: 3,
|
|
114
|
+
height: t
|
|
115
|
+
},
|
|
116
|
+
radius: 1,
|
|
117
|
+
fill: re,
|
|
118
|
+
hit: s,
|
|
119
|
+
alpha: y * C
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
if (K) for (let e of W) {
|
|
123
|
+
let t = q(e);
|
|
124
|
+
A.push({
|
|
125
|
+
kind: "text",
|
|
126
|
+
x: S ? J - H / 2 - 5 : t,
|
|
127
|
+
y: S ? t : J + H / 2 + 4,
|
|
128
|
+
text: r.format(e),
|
|
129
|
+
font: D,
|
|
130
|
+
color: O,
|
|
131
|
+
align: S ? "right" : "center",
|
|
132
|
+
baseline: S ? "middle" : "top",
|
|
133
|
+
hit: s,
|
|
134
|
+
alpha: y
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
if (S) {
|
|
138
|
+
let e = Math.max(0, u - 8), t = o(i.name, e, w, g), n = h.y + h.height;
|
|
139
|
+
t && A.push({
|
|
140
|
+
kind: "text",
|
|
141
|
+
x: J,
|
|
142
|
+
y: n - I + 16,
|
|
143
|
+
text: t,
|
|
144
|
+
font: w,
|
|
145
|
+
color: k,
|
|
146
|
+
align: "center",
|
|
147
|
+
baseline: "middle",
|
|
148
|
+
hit: s,
|
|
149
|
+
alpha: y
|
|
150
|
+
});
|
|
151
|
+
let r = i.subtitle ? o(i.subtitle, e, T, g) : "";
|
|
152
|
+
r && A.push({
|
|
153
|
+
kind: "text",
|
|
154
|
+
x: J,
|
|
155
|
+
y: n - I + 31,
|
|
156
|
+
text: r,
|
|
157
|
+
font: T,
|
|
158
|
+
color: O,
|
|
159
|
+
align: "center",
|
|
160
|
+
baseline: "middle",
|
|
161
|
+
hit: s,
|
|
162
|
+
alpha: y
|
|
163
|
+
});
|
|
164
|
+
let a = o(N[s], e, E, g);
|
|
165
|
+
a && A.push({
|
|
166
|
+
kind: "text",
|
|
167
|
+
x: J,
|
|
168
|
+
y: h.y + ae / 2,
|
|
169
|
+
text: a,
|
|
170
|
+
font: E,
|
|
171
|
+
color: k,
|
|
172
|
+
align: "center",
|
|
173
|
+
baseline: "middle",
|
|
174
|
+
hit: s,
|
|
175
|
+
alpha: y
|
|
176
|
+
});
|
|
177
|
+
} else {
|
|
178
|
+
let e = Math.max(0, P - 14), t = o(i.name, e, w, g), n = i.subtitle && u >= 34 ? o(i.subtitle, e, T, g) : "", r = h.x + P - 14;
|
|
179
|
+
t && A.push({
|
|
180
|
+
kind: "text",
|
|
181
|
+
x: r,
|
|
182
|
+
y: n ? J - 7 : J,
|
|
183
|
+
text: t,
|
|
184
|
+
font: w,
|
|
185
|
+
color: k,
|
|
186
|
+
align: "right",
|
|
187
|
+
baseline: "middle",
|
|
188
|
+
hit: s,
|
|
189
|
+
alpha: y
|
|
190
|
+
}), n && A.push({
|
|
191
|
+
kind: "text",
|
|
192
|
+
x: r,
|
|
193
|
+
y: J + 8,
|
|
194
|
+
text: n,
|
|
195
|
+
font: T,
|
|
196
|
+
color: O,
|
|
197
|
+
align: "right",
|
|
198
|
+
baseline: "middle",
|
|
199
|
+
hit: s,
|
|
200
|
+
alpha: y
|
|
201
|
+
});
|
|
202
|
+
let a = o(N[s], F - 8, E, g);
|
|
203
|
+
a && A.push({
|
|
204
|
+
kind: "text",
|
|
205
|
+
x: h.x + h.width,
|
|
206
|
+
y: J,
|
|
207
|
+
text: a,
|
|
208
|
+
font: E,
|
|
209
|
+
color: k,
|
|
210
|
+
align: "right",
|
|
211
|
+
baseline: "middle",
|
|
212
|
+
hit: s,
|
|
213
|
+
alpha: y
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
if (_.has(s)) return;
|
|
217
|
+
let Q = c(i.value), $ = z !== void 0 && z !== 0 ? Q / z : (Q - x) / (M - x), me = L.findIndex((e) => Q <= e), he = me >= 0 ? e.rangeLabels?.[me] : void 0, ge = q(Q);
|
|
218
|
+
j.push({
|
|
219
|
+
index: s,
|
|
220
|
+
name: i.name,
|
|
221
|
+
value: Q,
|
|
222
|
+
percent: $,
|
|
223
|
+
share: r.percent($),
|
|
224
|
+
color: V,
|
|
225
|
+
x: S ? J : ge,
|
|
226
|
+
y: S ? ge : J,
|
|
227
|
+
rows: [
|
|
228
|
+
{
|
|
229
|
+
name: r.labels.value,
|
|
230
|
+
value: r.format(Q)
|
|
231
|
+
},
|
|
232
|
+
...z === void 0 ? [] : [{
|
|
233
|
+
name: r.labels.target,
|
|
234
|
+
value: r.format(z)
|
|
235
|
+
}, {
|
|
236
|
+
name: r.labels.ofTarget,
|
|
237
|
+
value: r.percent($)
|
|
238
|
+
}],
|
|
239
|
+
...he ? [{
|
|
240
|
+
name: r.labels.range,
|
|
241
|
+
value: he
|
|
242
|
+
}] : []
|
|
243
|
+
]
|
|
244
|
+
});
|
|
245
|
+
}), {
|
|
246
|
+
nodes: A,
|
|
247
|
+
items: j,
|
|
248
|
+
dim: .4,
|
|
249
|
+
empty: !1
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
//#endregion
|
|
253
|
+
export { ee as bulletScale, h as bulletValues, g as layoutBullet };
|
|
254
|
+
|
|
255
|
+
//# sourceMappingURL=bullet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bullet.js","names":["keysOf","uniqueKeys","o","d","num","v","rangesOf","r","a","b","bulletScale","ranges","value","finite","target","lows","min","highs","max","top","last","niceDomain","bulletValues","key","out","rangeFills","c","count","gray","mix","theme","k","own","resolveWith","layoutBullet","keys","n","weights","clamp","i","total","sum","emptyLayout","vertical","enter","barSize","nameFont","font","subFont","valueFont","tickFont","muted","toCss","text","markColor","showTicks","nodes","items","hasSubtitle","valueText","labelW","area","measure","valueW","t","labelH","valueH","unit","offset","w","slot","from","alpha","fills","target0","color","css","thick","span","ticks","linearTicks","tickRoom","tickW","drawTicks","p0","along","mid","band","lo","hi","bounds","edge","to","bound","base","shownValue","at","len","room","name","ellipsize","bottom","sub","x","hidden","percent","rangeIndex","rangeName","end"],"sources":["../../../../../charts/src/engine/shapes/bullet.ts"],"sourcesContent":["// Bullet chart layout (Stephen Few): per row, qualitative ranges as shades\n// of gray, the measure as a bar and the target as a marker, on the row's own\n// scale; name and subtitle on the left (below when vertical), value on the\n// right (above when vertical), tick labels when there is room.\n\nimport { mix, toCss, type Rgba } from \"../color\";\nimport { font } from \"../overlay\";\nimport { linearTicks, niceDomain } from \"../scale\";\nimport {\n clamp,\n ellipsize,\n emptyLayout,\n finite,\n resolveWith,\n sum,\n uniqueKeys,\n type LayoutContext,\n type LayoutResult,\n type ShapeItem,\n type ShapeNode,\n} from \"./scene\";\nimport type { BulletChartOptions, BulletDatum } from \"./types\";\n\nconst keysOf = (o: BulletChartOptions) => uniqueKeys(o.data.map((d) => d.name));\n\nconst num = (v: number | undefined) =>\n typeof v === \"number\" && Number.isFinite(v) ? v : undefined;\n\n/** Qualitative ranges of a row: finite upper bounds, ascending */\nconst rangesOf = (o: BulletChartOptions, d: BulletDatum) =>\n (d.ranges ?? o.ranges ?? [])\n .filter((r) => typeof r === \"number\" && Number.isFinite(r))\n .slice()\n .sort((a, b) => a - b);\n\n/** Scale of a row: `[min, max]` */\nexport const bulletScale = (\n o: BulletChartOptions,\n d: BulletDatum,\n): [number, number] => {\n const ranges = rangesOf(o, d);\n const value = finite(d.value);\n const target = num(d.target);\n const lows = [0, value, ...(target !== undefined ? [target] : [])];\n let min = num(d.min) ?? Math.min(...lows);\n const highs = [value, ...(target !== undefined ? [target] : []), ...ranges];\n let max = num(d.max);\n if (max === undefined) {\n const top = Math.max(...highs);\n const last = ranges.length ? ranges[ranges.length - 1] : -Infinity;\n max = top <= last ? last : niceDomain(min, top, 5)[1];\n }\n if (!(max > min)) {\n if (max === min) max = min + 1;\n else [min, max] = [max, min];\n }\n return [min, max];\n};\n\nexport const bulletValues = (\n o: BulletChartOptions,\n hidden: ReadonlySet<number>,\n out: Map<string, number>,\n) => {\n keysOf(o).forEach((key, i) => {\n const d = o.data[i];\n out.set(key, finite(d.value));\n const target = num(d.target);\n if (target !== undefined) out.set(`>${key}`, target);\n out.set(`~${key}`, hidden.has(i) ? 0 : 1);\n });\n};\n\n/** Default fills of the ranges: grays, the lowest (poorest) darkest */\nconst rangeFills = (\n o: BulletChartOptions,\n c: LayoutContext,\n count: number,\n): Rgba[] => {\n const { theme } = c;\n return Array.from({ length: Math.max(1, count) }, (_, k) => {\n const gray = mix(\n theme.background,\n theme.text,\n count <= 1 ? 0.09 : 0.24 - (0.16 * k) / (count - 1),\n );\n const own = o.rangeColors?.[k];\n return own ? resolveWith(theme, own, gray) : gray;\n });\n};\n\nexport const layoutBullet = (\n o: BulletChartOptions,\n c: LayoutContext,\n): LayoutResult => {\n const { theme, area, measure, hidden } = c;\n const keys = keysOf(o);\n const n = o.data.length;\n const weights = keys.map((key, i) =>\n clamp(c.value(`~${key}`, hidden.has(i) ? 0 : 1), 0, 1),\n );\n const total = sum(weights);\n if (!n || total <= 1e-6) return emptyLayout(c);\n const vertical = o.orientation === \"vertical\";\n const enter = clamp(c.enter, 0, 1);\n const barSize = clamp(finite(o.barSize, 0.4), 0.1, 1);\n const nameFont = font(theme, 12, 600);\n const subFont = font(theme, 11);\n const valueFont = font(theme, 12, 600);\n const tickFont = font(theme, 10);\n const muted = toCss(theme.textMuted);\n const text = toCss(theme.text);\n const transparent = \"rgba(0, 0, 0, 0)\";\n const markColor = toCss(resolveWith(theme, o.targetColor, theme.text));\n const showTicks = o.ticks !== false;\n\n const nodes: ShapeNode[] = [];\n const items: ShapeItem[] = [];\n const hasSubtitle = o.data.some((d, i) => !!d.subtitle && weights[i] > 0);\n const valueText = o.data.map((d) => c.format(finite(d.value)));\n\n // shared columns (horizontal) / bands (vertical) of the labels and values\n const labelW = vertical\n ? 0\n : Math.min(\n area.width * 0.32,\n Math.max(\n 0,\n ...o.data.map((d) =>\n Math.max(\n measure(d.name, nameFont),\n d.subtitle ? measure(d.subtitle, subFont) : 0,\n ),\n ),\n ) + 14,\n );\n const valueW = vertical\n ? 0\n : Math.min(\n area.width * 0.2,\n Math.max(0, ...valueText.map((t) => measure(t, valueFont))) + 12,\n );\n const labelH = vertical ? 22 + (hasSubtitle ? 14 : 0) : 0;\n const valueH = vertical ? 20 : 0;\n const unit = (vertical ? area.width : area.height) / total;\n\n let offset = 0;\n o.data.forEach((d, i) => {\n const w = weights[i];\n const slot = unit * w;\n const from = offset;\n offset += slot;\n if (w <= 1e-3) return;\n const key = keys[i];\n const alpha = w;\n const [min, max] = bulletScale(o, d);\n const ranges = rangesOf(o, d).filter((r) => r > min);\n const fills = rangeFills(o, c, ranges.length);\n const value = c.value(key, finite(d.value));\n const target0 = num(d.target);\n const target =\n target0 !== undefined ? c.value(`>${key}`, target0) : undefined;\n const color = c.color(d.color, i);\n const css = toCss(color);\n const thick = clamp(slot * (vertical ? 0.3 : 0.42), 8, 28);\n const span = vertical\n ? Math.max(1, area.height - labelH - valueH)\n : Math.max(1, area.width - labelW - valueW);\n const ticks = showTicks\n ? linearTicks(min, max, Math.max(2, Math.floor(span / 70)))\n : [];\n const tickRoom = vertical ? slot / 2 - thick / 2 - 6 : slot - thick - 10;\n const tickW = Math.max(\n 0,\n ...ticks.map((t) => measure(c.format(t), tickFont)),\n );\n const drawTicks =\n ticks.length > 1 && (vertical ? tickRoom >= tickW : tickRoom >= 14);\n\n // position along the scale, and across it\n const p0 = vertical ? area.y + area.height - labelH : area.x + labelW;\n const along = (v: number) =>\n p0 + (vertical ? -1 : 1) * span * clamp((v - min) / (max - min), 0, 1);\n const mid = vertical\n ? area.x + from + slot / 2\n : area.y + from + (slot - (drawTicks ? 14 : 0)) / 2;\n /** Rectangle from `a` to `b` along the scale, `t` thick across it */\n const band = (a: number, b: number, t: number) => {\n const lo = Math.min(along(a), along(b));\n const hi = Math.max(along(a), along(b));\n return vertical\n ? { x: mid - t / 2, y: lo, width: t, height: hi - lo }\n : { x: lo, y: mid - t / 2, width: hi - lo, height: t };\n };\n\n // the whole row / column is a hover target\n nodes.push({\n kind: \"rect\",\n ...(vertical\n ? { x: area.x + from, y: area.y, width: slot, height: area.height }\n : { x: area.x, y: area.y + from, width: area.width, height: slot }),\n radius: 0,\n fill: transparent,\n hit: i,\n alpha,\n });\n // ranges: disjoint segments (translucent colors must not add up)\n const bounds = ranges.length ? ranges : [max];\n let edge = min;\n bounds.forEach((bound, k) => {\n const to = Math.min(bound, max);\n if (to > edge)\n nodes.push({\n kind: \"rect\",\n ...band(edge, to, thick),\n radius: 0,\n fill: toCss(fills[k]),\n hit: i,\n alpha,\n });\n edge = Math.max(edge, to);\n });\n if (edge < max)\n nodes.push({\n kind: \"rect\",\n ...band(edge, max, thick),\n radius: 0,\n fill: toCss(fills[fills.length - 1]),\n hit: i,\n alpha,\n });\n // measure\n const base = clamp(0, min, max);\n const shownValue = base + (value - base) * enter;\n nodes.push({\n kind: \"rect\",\n ...band(base, shownValue, thick * barSize),\n radius: 1,\n fill: css,\n hit: i,\n alpha,\n brighten: true,\n });\n // target\n if (target !== undefined && target >= min && target <= max) {\n const at = along(target);\n const len = thick * 0.82;\n nodes.push({\n kind: \"rect\",\n ...(vertical\n ? { x: mid - len / 2, y: at - 1.5, width: len, height: 3 }\n : { x: at - 1.5, y: mid - len / 2, width: 3, height: len }),\n radius: 1,\n fill: markColor,\n hit: i,\n alpha: alpha * enter,\n });\n }\n // ticks\n if (drawTicks)\n for (const t of ticks) {\n const at = along(t);\n nodes.push({\n kind: \"text\",\n x: vertical ? mid - thick / 2 - 5 : at,\n y: vertical ? at : mid + thick / 2 + 4,\n text: c.format(t),\n font: tickFont,\n color: muted,\n align: vertical ? \"right\" : \"center\",\n baseline: vertical ? \"middle\" : \"top\",\n hit: i,\n alpha,\n });\n }\n\n // name, subtitle and value\n if (vertical) {\n const room = Math.max(0, slot - 8);\n const name = ellipsize(d.name, room, nameFont, measure);\n const bottom = area.y + area.height;\n if (name)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: bottom - labelH + 16,\n text: name,\n font: nameFont,\n color: text,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const sub = d.subtitle\n ? ellipsize(d.subtitle, room, subFont, measure)\n : \"\";\n if (sub)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: bottom - labelH + 31,\n text: sub,\n font: subFont,\n color: muted,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const value = ellipsize(valueText[i], room, valueFont, measure);\n if (value)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: area.y + valueH / 2,\n text: value,\n font: valueFont,\n color: text,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n } else {\n const room = Math.max(0, labelW - 14);\n const name = ellipsize(d.name, room, nameFont, measure);\n const sub =\n d.subtitle && slot >= 34\n ? ellipsize(d.subtitle, room, subFont, measure)\n : \"\";\n const x = area.x + labelW - 14;\n if (name)\n nodes.push({\n kind: \"text\",\n x,\n y: sub ? mid - 7 : mid,\n text: name,\n font: nameFont,\n color: text,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n if (sub)\n nodes.push({\n kind: \"text\",\n x,\n y: mid + 8,\n text: sub,\n font: subFont,\n color: muted,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const value = ellipsize(valueText[i], valueW - 8, valueFont, measure);\n if (value)\n nodes.push({\n kind: \"text\",\n x: area.x + area.width,\n y: mid,\n text: value,\n font: valueFont,\n color: text,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n }\n\n if (hidden.has(i)) return;\n const v = finite(d.value);\n const percent =\n target0 !== undefined && target0 !== 0\n ? v / target0\n : (v - min) / (max - min);\n const rangeIndex = ranges.findIndex((r) => v <= r);\n const rangeName = rangeIndex >= 0 ? o.rangeLabels?.[rangeIndex] : undefined;\n const end = along(v);\n items.push({\n index: i,\n name: d.name,\n value: v,\n percent,\n share: c.percent(percent),\n color: css,\n x: vertical ? mid : end,\n y: vertical ? end : mid,\n rows: [\n { name: c.labels.value, value: c.format(v) },\n ...(target0 !== undefined\n ? [\n { name: c.labels.target, value: c.format(target0) },\n { name: c.labels.ofTarget, value: c.percent(percent) },\n ]\n : []),\n ...(rangeName ? [{ name: c.labels.range, value: rangeName }] : []),\n ],\n });\n });\n\n return { nodes, items, dim: 0.4, empty: false };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../color.cjs"),t=require("../locale.cjs"),n=require("../overlay.cjs"),r=require("./labels.cjs"),i=require("./scene.cjs");var a=864e5,o=3660,s=e=>Math.floor(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())/a),c=e=>{if(typeof e==`string`){let t=/^\s*(\d{4})-(\d{1,2})-(\d{1,2})/.exec(e);if(t){let e=Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3]));return Number.isFinite(e)?Math.floor(e/a):null}let n=Date.parse(e);return Number.isFinite(n)?s(new Date(n)):null}return typeof e==`number`?Number.isFinite(e)?s(new Date(e)):null:e instanceof Date&&Number.isFinite(e.getTime())?s(e):null},l=e=>{let t=new Date(e*a);return{y:t.getUTCFullYear(),m:t.getUTCMonth(),d:t.getUTCDate()}},u=(e,t,n)=>Math.floor(Date.UTC(e,t,n)/a),d=e=>e<10?`0${e}`:String(e),f=e=>{let{y:t,m:n,d:r}=l(e);return`${t}-${d(n+1)}-${d(r)}`},p=e=>((e+4)%7+7)%7,m=(e,t)=>{let n=[],{y:r,m:i}=l(e);for(;u(r,i,1)<=t;)n.push({y:r,m:i}),i===11?(i=0,r++):i++;return n},h=()=>{try{return new Intl.DateTimeFormat().resolvedOptions().locale}catch{return`en-US`}},g=new Set(`AG AS BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IL IN JM JP KE KH KR LA MH MM MO MT MX MZ NI NP PA PE PH PK PR PT PY SA SG SV TH TT TW UM US VE VI WS YE ZA ZW`.split(` `)),_=new Set(`AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY`.split(` `)),v={en:`US`,ja:`JP`,ko:`KR`,he:`IL`,pt:`BR`,ar:`EG`,fa:`IR`,hi:`IN`,th:`TH`,zh:`CN`},y=e=>{let t=e||h(),n=``,r=t.split(/[-_]/)[0]?.toLowerCase()??``;try{let e=Intl.Locale;if(typeof e==`function`){let i=new e(t),a=typeof i.getWeekInfo==`function`?i.getWeekInfo():i.weekInfo;if(a&&typeof a.firstDay==`number`)return(a.firstDay%7+7)%7;n=i.region??i.maximize?.().region??``,r=i.language??r}}catch{}if(!n){let e=/[-_]([A-Za-z]{2})(?=$|[-_])/.exec(t);n=e?e[1].toUpperCase():v[r]??``}return g.has(n)?0:_.has(n)?6:1},b=new Map,x=(e,t)=>{let n=`${e??``}|${JSON.stringify(t)}`;if(b.has(n))return b.get(n)??null;let r=null;for(let n of[e,void 0])try{r=new Intl.DateTimeFormat(n,{...t,timeZone:`UTC`});break}catch{r=null}return b.size>64&&b.clear(),b.set(n,r),r},S=`Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec`.split(` `),C=`Sun Mon Tue Wed Thu Fri Sat`.split(` `),w=(e,t,n,r)=>{let i=x(e,t);try{return i?i.format(new Date(n*a)):r}catch{return r}},T=(e,t,n)=>w(e,{month:`short`},u(t,n,1),S[n]),E=(e,t,n)=>w(e,{weekday:n},u(2023,0,1+t),n===`short`?C[t]:C[t].charAt(0)),D=(e,t)=>w(e,{year:`numeric`,month:`short`,day:`numeric`,weekday:`short`},t,f(t)),O=e=>{let t=new Map,n=1/0,r=-1/0;for(let a of e.data??[]){if(!a)continue;let e=c(a.date);e!==null&&(t.set(e,(t.get(e)??0)+i.positive(a.value)),n=Math.min(n,e),r=Math.max(r,e))}let a,s,l=e.range;if(typeof l==`number`&&Number.isFinite(l)){let e=Math.round(l);a=u(e,0,1),s=u(e,11,31)}else if(Array.isArray(l)&&l.length>=2){let e=c(l[0]),t=c(l[1]);if(e===null||t===null)return null;a=Math.min(e,t),s=Math.max(e,t)}else{if(!Number.isFinite(r))return null;s=r;let t=k(e),n=s-364;a=n-(p(n)-t+7)%7}s-a+1>o&&(a=s-o+1);let d=new Map,f=0,m=!0;t.forEach((e,t)=>{t<a||t>s||(d.set(t,e),f=Math.max(f,e),Number.isInteger(e)||(m=!1))});let h=e.colors?.length?Math.min(12,e.colors.length):i.clamp(Math.round(i.finite(e.levels,4)),1,12),g,_=(e.thresholds??[]).filter(e=>typeof e==`number`&&Number.isFinite(e)).slice().sort((e,t)=>e-t);if(_.length)g=_.slice(0,h-1),h=g.length+1,g.some(e=>!Number.isInteger(e))&&(m=!1);else{g=[];for(let e=1;e<h;e++){let t=f*e/h;g.push(m?Math.max(e,Math.ceil(t)):t)}for(let e=1;e<g.length;e++)g[e]<=g[e-1]&&(g[e]=m?g[e-1]+1:g[e-1])}return{start:a,end:s,values:d,max:f,thresholds:g,count:h,integer:m}},k=e=>typeof e.weekStart==`number`&&Number.isFinite(e.weekStart)?(Math.round(e.weekStart)%7+7)%7:y(t.resolveLocale(e.locale)),A=(e,t)=>{if(!(t>0))return-1;let{thresholds:n}=e;for(let e=0;e<n.length;e++)if(t<=n[e])return e;return e.count-1},j=(e,t)=>{let n=0;for(;n<e.length&&n<t.length&&e[e.length-1-n]===t[t.length-1-n]&&!/\d/.test(e[e.length-1-n]);)n++;return`${n?e.slice(0,e.length-n).trimEnd():e}\u2013${t}`},M=(e,t=r.localeFormat())=>{let{thresholds:n,count:i,integer:a}=e,o=[];for(let e=0;e<i;e++){if(e===i-1){o.push(i===1?`> 0`:`> ${t(n[e-1])}`);continue}if(a){let r=e?n[e-1]+1:1;o.push(r>=n[e]?t(n[e]):j(t(r),t(n[e])))}else o.push(e?j(t(n[e-1]),t(n[e])):`\u2264 ${t(n[e])}`)}return o},N=t=>e.mix(t.background,t.text,.07),P=(t,n,r)=>{let a=n.palette.length?n.palette:[n.primary],o=i.resolveWith(n,t.color,a[0]);return Array.from({length:r},(a,s)=>{let c=t.colors?.[s];return c?i.resolveWith(n,c,o):e.mix(n.background,o,r===1?1:.32+.68*s/(r-1))})},F=(e,t,n)=>{let r=O(e)?.count??0;for(let e=0;e<r;e++)n.set(`~L${e}`,+!t.has(e))},I=(t,n,i)=>{let a=O(t);if(!a)return[];let o=P(t,n,a.count);return M(a,t.format??r.localeFormat(t.locale)).map((t,n)=>({index:n,name:t,color:e.toCss(o[n]),hidden:i.has(n)}))},L=e=>{let t=O(e);if(!t)return 1;let n=l(t.start).y,r=l(t.end).y;return r>n&&t.end-t.start+1>371?r-n+1:1},R=18,z=12,B=16,V=(t,r)=>{let{theme:a,area:o,measure:s}=r,c=O(t);if(!c)return i.emptyLayout(r);let{start:d,end:h}=c,g=r.locale,_=k(t),v=e=>(p(e)-_+7)%7,y=Math.max(0,i.finite(t.gap,3)),b=t.layout===`months`,x=Math.max(2,i.finite(t.maxCellSize,b?28:16)),C=n.font(a,11),j=e.toCss(a.textMuted),M=l(d).y,F=l(h).y,I=[],L=[],V=0,H;if(b){let r=m(d,h),i=r.length,s=(t.monthLabels===!1?0:R)+(t.weekdayLabels===!1?0:14),c={cols:1,pitch:0};for(let e=1;e<=i;e++){let t=Math.ceil(i/e),n=(o.width-(e-1)*B+y)/(7*e),r=((o.height-(t-1)*B)/t-s+y)/6,a=Math.min(n,r,x+y);a>c.pitch+1e-6&&(c={cols:e,pitch:a})}let l=Math.max(2,c.pitch),f=Math.min(y,l*.25);V=Math.min(x,l-f),l=V+f,H=l;let p=c.cols,b=Math.ceil(i/p),C=7*l-f,T=s+6*l-f,D=p*C+(p-1)*B,O=b*T+(b-1)*B,k=o.x+Math.max(0,(o.width-D)/2),A=o.y+Math.max(0,(o.height-O)/2),N=F>M,P=n.font(a,12,600),z=Array.from({length:7},(e,t)=>E(g,(_+t)%7,`narrow`));r.forEach(({y:r,m:i},o)=>{let s=k+o%p*(C+B),c=A+Math.floor(o/p)*(T+B);t.monthLabels!==!1&&(I.push({kind:`text`,x:s,y:c+R/2-1,text:N?w(g,{month:`short`,year:`numeric`},u(r,i,1),`${S[i]} ${r}`):w(g,{month:`long`},u(r,i,1),S[i]),font:P,color:e.toCss(a.text,.88),align:`left`,baseline:`middle`}),c+=R),t.weekdayLabels!==!1&&(V>=8&&z.forEach((e,t)=>I.push({kind:`text`,x:s+t*l+V/2,y:c+6,text:e,font:n.font(a,10),color:j,align:`center`,baseline:`middle`})),c+=14);let f=u(r,i,1),m=Math.min(h,u(r,i+1,0)),_=v(f);for(let e=Math.max(f,d);e<=m;e++){let t=_+(e-f);L.push({day:e,x:s+t%7*l,y:c+Math.floor(t/7)*l})}})}else{let r=[];if(F>M&&h-d+1>371)for(let e=M;e<=F;e++)r.push({s:Math.max(d,u(e,0,1)),e:Math.min(h,u(e,11,31)),year:e});else r.push({s:d,e:h,year:null});let i=(e,t)=>Math.floor((e-(t-v(t)))/7),c=Math.max(...r.map(e=>i(e.e,e.s)+1)),l=t.monthLabels!==!1||r.length>1?R:0,f=t.weekdayLabels!==!1,p=Array.from({length:7},(e,t)=>E(g,(_+t)%7,`short`)),b=f?Math.max(...p.map(e=>s(e,C)))+8:0,S=n.font(a,11,600);r.length>1&&(b=Math.max(b,s(String(F),S)+8));let w=r.length,D=(o.width-b+y)/c,O=((o.height-(w-1)*z)/w-l+y)/7,k=Math.max(2,Math.min(D,O)),A=Math.min(y,k*.25);V=Math.min(x,k-A),k=V+A,H=k;let N=b+c*k-A,P=w*(l+7*k-A)+(w-1)*z,B=o.x+Math.max(0,(o.width-N)/2)+b,U=o.y+Math.max(0,(o.height-P)/2),W=e=>k>=15||[1,3,5].includes((_+e)%7);for(let n of r){let r=U+l;if(n.year!==null&&I.push({kind:`text`,x:B-b,y:U+l/2,text:String(n.year),font:S,color:e.toCss(a.text,.85),align:`left`,baseline:`middle`}),f&&V>=6&&p.forEach((e,t)=>{W(t)&&I.push({kind:`text`,x:B-6,y:r+t*k+V/2,text:e,font:C,color:j,align:`right`,baseline:`middle`})}),t.monthLabels!==!1){let e=i(n.e,n.s)+1,t=[];for(let{y:r,m:a}of m(n.s,n.e)){let o=Math.max(n.s,u(r,a,1)),s=i(o,n.s)+ +(o>n.s&&v(o)>0);s<e&&t.push({col:s,text:T(g,r,a)})}let r=-1/0;t.forEach((n,i)=>{let a=B+n.col*k,o=s(n.text,C),c=t[i+1];c&&i===0&&B+c.col*k<a+o+6||a<r+6||a+o>B+e*k+24||(r=a+o,I.push({kind:`text`,x:a,y:U+l/2,text:n.text,font:C,color:j,align:`left`,baseline:`middle`}))})}for(let e=n.s;e<=n.e;e++)L.push({day:e,x:B+i(e,n.s)*k,y:r+v(e)*k});U+=l+7*k-A+z}}let U=P(t,a,c.count),W=N(a),G=U.map((e,t)=>i.clamp(r.value(`~L${t}`,+!r.hidden.has(t)),0,1)),K=i.clamp(i.finite(t.radius,2),0,V/2),q=e.toCss(a.text,.75),J=Math.max(0,(H-V)/2),Y=[];for(let t of L){let n=c.values.get(t.day)??0,i=A(c,n),a=i<0?W:e.mix(W,U[i],G[i]??1),o=e.toCss(a),s=t.day-d;I.push({kind:`rect`,x:t.x,y:t.y,width:V,height:V,radius:K,fill:o,hit:s,hoverStroke:q,hitPad:J});let l=c.max>0?n/c.max:0;Y.push({index:s,name:D(g,t.day),value:n,percent:l,share:r.percent(l),color:i<0?o:e.toCss(U[i]),x:t.x+V/2,y:t.y+V/2,rows:[{name:r.labels.value,value:r.format(n)}],event:{date:f(t.day)}})}Y.sort((e,t)=>e.index-t.index);let X=i.clamp(r.enter,0,1);return{nodes:I,items:Y,dim:1,empty:!1,steps:b?{next:1,down:7}:{next:7,down:1},...X<1?{enter:{alpha:X,scale:.985+.015*X,cx:o.x+o.width/2,cy:o.y+o.height/2}}:{}}};exports.calendarColors=P,exports.calendarDay=c,exports.calendarIso=f,exports.calendarLegend=I,exports.calendarLevel=A,exports.calendarLevelNames=M,exports.calendarModel=O,exports.calendarStrips=L,exports.calendarValues=F,exports.layoutCalendar=V,exports.localeWeekStart=y;
|
|
2
|
+
//# sourceMappingURL=calendar.cjs.map
|