minerva-design 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +21 -21
- package/custom-elements.json +13630 -4757
- package/dist/angular/fesm2022/minerva-angular.mjs +6872 -172
- package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
- package/dist/angular/types/minerva-angular.d.ts +2240 -0
- package/dist/charts/canvas.d.cts +7 -2
- package/dist/charts/canvas.d.ts +7 -2
- package/dist/charts/core.cjs +1 -1
- package/dist/charts/core.d.cts +7 -4
- package/dist/charts/core.d.ts +7 -4
- package/dist/charts/core.js +19 -8
- package/dist/charts/engine/axis.cjs +1 -1
- package/dist/charts/engine/axis.cjs.map +1 -1
- package/dist/charts/engine/axis.js +6 -6
- package/dist/charts/engine/axis.js.map +1 -1
- package/dist/charts/engine/canvas.cjs +1 -1
- package/dist/charts/engine/canvas.cjs.map +1 -1
- package/dist/charts/engine/canvas.d.cts +11 -1
- package/dist/charts/engine/canvas.d.ts +11 -1
- package/dist/charts/engine/canvas.js +118 -68
- package/dist/charts/engine/canvas.js.map +1 -1
- package/dist/charts/engine/chart.cjs +1 -1
- package/dist/charts/engine/chart.cjs.map +1 -1
- package/dist/charts/engine/chart.d.cts +1 -1
- package/dist/charts/engine/chart.d.ts +1 -1
- package/dist/charts/engine/chart.js +307 -285
- package/dist/charts/engine/chart.js.map +1 -1
- package/dist/charts/engine/color.cjs +1 -1
- package/dist/charts/engine/color.cjs.map +1 -1
- package/dist/charts/engine/color.js +2 -2
- package/dist/charts/engine/color.js.map +1 -1
- package/dist/charts/engine/controller.cjs +1 -1
- package/dist/charts/engine/controller.cjs.map +1 -1
- package/dist/charts/engine/controller.d.cts +12 -3
- package/dist/charts/engine/controller.d.ts +12 -3
- package/dist/charts/engine/controller.js +359 -299
- package/dist/charts/engine/controller.js.map +1 -1
- package/dist/charts/engine/data.cjs +1 -1
- package/dist/charts/engine/data.cjs.map +1 -1
- package/dist/charts/engine/data.d.cts +6 -0
- package/dist/charts/engine/data.d.ts +6 -0
- package/dist/charts/engine/data.js +63 -49
- package/dist/charts/engine/data.js.map +1 -1
- package/dist/charts/engine/format.cjs +1 -1
- package/dist/charts/engine/format.cjs.map +1 -1
- package/dist/charts/engine/format.d.cts +21 -6
- package/dist/charts/engine/format.d.ts +21 -6
- package/dist/charts/engine/format.js +46 -21
- package/dist/charts/engine/format.js.map +1 -1
- package/dist/charts/engine/items.cjs +1 -1
- package/dist/charts/engine/items.cjs.map +1 -1
- package/dist/charts/engine/items.js +211 -54
- package/dist/charts/engine/items.js.map +1 -1
- package/dist/charts/engine/labels.cjs +2 -0
- package/dist/charts/engine/labels.cjs.map +1 -0
- package/dist/charts/engine/labels.d.cts +13 -0
- package/dist/charts/engine/labels.d.ts +13 -0
- package/dist/charts/engine/labels.js +74 -0
- package/dist/charts/engine/labels.js.map +1 -0
- package/dist/charts/engine/layout.cjs +1 -1
- package/dist/charts/engine/layout.cjs.map +1 -1
- package/dist/charts/engine/layout.d.cts +34 -2
- package/dist/charts/engine/layout.d.ts +34 -2
- package/dist/charts/engine/layout.js +53 -12
- package/dist/charts/engine/layout.js.map +1 -1
- package/dist/charts/engine/locale.cjs +2 -0
- package/dist/charts/engine/locale.cjs.map +1 -0
- package/dist/charts/engine/locale.d.cts +33 -0
- package/dist/charts/engine/locale.d.ts +33 -0
- package/dist/charts/engine/locale.js +68 -0
- package/dist/charts/engine/locale.js.map +1 -0
- package/dist/charts/engine/model.cjs +1 -1
- package/dist/charts/engine/model.cjs.map +1 -1
- package/dist/charts/engine/model.d.cts +39 -1
- package/dist/charts/engine/model.d.ts +39 -1
- package/dist/charts/engine/model.js +212 -105
- package/dist/charts/engine/model.js.map +1 -1
- package/dist/charts/engine/orderbook/book.cjs +2 -0
- package/dist/charts/engine/orderbook/book.cjs.map +1 -0
- package/dist/charts/engine/orderbook/book.d.cts +28 -0
- package/dist/charts/engine/orderbook/book.d.ts +28 -0
- package/dist/charts/engine/orderbook/book.js +134 -0
- package/dist/charts/engine/orderbook/book.js.map +1 -0
- package/dist/charts/engine/orderbook/depth.cjs +2 -0
- package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
- package/dist/charts/engine/orderbook/depth.d.cts +7 -0
- package/dist/charts/engine/orderbook/depth.d.ts +7 -0
- package/dist/charts/engine/orderbook/depth.js +413 -0
- package/dist/charts/engine/orderbook/depth.js.map +1 -0
- package/dist/charts/engine/orderbook/format.cjs +2 -0
- package/dist/charts/engine/orderbook/format.cjs.map +1 -0
- package/dist/charts/engine/orderbook/format.d.cts +48 -0
- package/dist/charts/engine/orderbook/format.d.ts +48 -0
- package/dist/charts/engine/orderbook/format.js +65 -0
- package/dist/charts/engine/orderbook/format.js.map +1 -0
- package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
- package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
- package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
- package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
- package/dist/charts/engine/orderbook/heatmap.js +703 -0
- package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
- package/dist/charts/engine/orderbook/host.cjs +2 -0
- package/dist/charts/engine/orderbook/host.cjs.map +1 -0
- package/dist/charts/engine/orderbook/host.d.cts +50 -0
- package/dist/charts/engine/orderbook/host.d.ts +50 -0
- package/dist/charts/engine/orderbook/host.js +161 -0
- package/dist/charts/engine/orderbook/host.js.map +1 -0
- package/dist/charts/engine/orderbook/index.cjs +1 -0
- package/dist/charts/engine/orderbook/index.d.cts +6 -0
- package/dist/charts/engine/orderbook/index.d.ts +6 -0
- package/dist/charts/engine/orderbook/index.js +6 -0
- package/dist/charts/engine/orderbook/ladder.cjs +2 -0
- package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
- package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
- package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
- package/dist/charts/engine/orderbook/ladder.js +341 -0
- package/dist/charts/engine/orderbook/ladder.js.map +1 -0
- package/dist/charts/engine/orderbook/tape.cjs +2 -0
- package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
- package/dist/charts/engine/orderbook/tape.d.cts +6 -0
- package/dist/charts/engine/orderbook/tape.d.ts +6 -0
- package/dist/charts/engine/orderbook/tape.js +450 -0
- package/dist/charts/engine/orderbook/tape.js.map +1 -0
- package/dist/charts/engine/orderbook/types.d.cts +735 -0
- package/dist/charts/engine/orderbook/types.d.ts +735 -0
- package/dist/charts/engine/overlay.cjs +1 -1
- package/dist/charts/engine/overlay.cjs.map +1 -1
- package/dist/charts/engine/overlay.d.cts +18 -2
- package/dist/charts/engine/overlay.d.ts +18 -2
- package/dist/charts/engine/overlay.js +132 -96
- package/dist/charts/engine/overlay.js.map +1 -1
- package/dist/charts/engine/presets.cjs +2 -2
- package/dist/charts/engine/presets.cjs.map +1 -1
- package/dist/charts/engine/presets.d.cts +249 -1
- package/dist/charts/engine/presets.d.ts +249 -1
- package/dist/charts/engine/presets.js +367 -29
- package/dist/charts/engine/presets.js.map +1 -1
- package/dist/charts/engine/renderers/detect.cjs +1 -1
- package/dist/charts/engine/renderers/detect.cjs.map +1 -1
- package/dist/charts/engine/renderers/detect.js +18 -15
- package/dist/charts/engine/renderers/detect.js.map +1 -1
- package/dist/charts/engine/renderers/gl.cjs +2 -0
- package/dist/charts/engine/renderers/gl.cjs.map +1 -0
- package/dist/charts/engine/renderers/gl.d.cts +21 -0
- package/dist/charts/engine/renderers/gl.d.ts +21 -0
- package/dist/charts/engine/renderers/gl.js +56 -0
- package/dist/charts/engine/renderers/gl.js.map +1 -0
- package/dist/charts/engine/renderers/shaders.cjs +143 -1
- package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
- package/dist/charts/engine/renderers/shaders.d.cts +16 -0
- package/dist/charts/engine/renderers/shaders.d.ts +16 -0
- package/dist/charts/engine/renderers/shaders.js +139 -1
- package/dist/charts/engine/renderers/shaders.js.map +1 -1
- package/dist/charts/engine/renderers/webgl.cjs +2 -0
- package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
- package/dist/charts/engine/renderers/webgl.d.cts +4 -0
- package/dist/charts/engine/renderers/webgl.d.ts +4 -0
- package/dist/charts/engine/renderers/webgl.js +133 -0
- package/dist/charts/engine/renderers/webgl.js.map +1 -0
- package/dist/charts/engine/renderers/webgl2.cjs +1 -1
- package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
- package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
- package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
- package/dist/charts/engine/renderers/webgl2.js +59 -108
- package/dist/charts/engine/renderers/webgl2.js.map +1 -1
- package/dist/charts/engine/scale.cjs +1 -1
- package/dist/charts/engine/scale.cjs.map +1 -1
- package/dist/charts/engine/scale.js +1 -1
- package/dist/charts/engine/scale.js.map +1 -1
- package/dist/charts/engine/scene.cjs +1 -1
- package/dist/charts/engine/scene.cjs.map +1 -1
- package/dist/charts/engine/scene.d.cts +14 -4
- package/dist/charts/engine/scene.d.ts +14 -4
- package/dist/charts/engine/scene.js +292 -163
- package/dist/charts/engine/scene.js.map +1 -1
- package/dist/charts/engine/shapes/bullet.cjs +2 -0
- package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
- package/dist/charts/engine/shapes/bullet.d.cts +6 -0
- package/dist/charts/engine/shapes/bullet.d.ts +6 -0
- package/dist/charts/engine/shapes/bullet.js +255 -0
- package/dist/charts/engine/shapes/bullet.js.map +1 -0
- package/dist/charts/engine/shapes/calendar.cjs +2 -0
- package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
- package/dist/charts/engine/shapes/calendar.d.cts +38 -0
- package/dist/charts/engine/shapes/calendar.d.ts +38 -0
- package/dist/charts/engine/shapes/calendar.js +369 -0
- package/dist/charts/engine/shapes/calendar.js.map +1 -0
- package/dist/charts/engine/shapes/canvas.cjs +1 -1
- package/dist/charts/engine/shapes/canvas.cjs.map +1 -1
- package/dist/charts/engine/shapes/canvas.d.cts +7 -0
- package/dist/charts/engine/shapes/canvas.d.ts +7 -0
- package/dist/charts/engine/shapes/canvas.js +22 -13
- package/dist/charts/engine/shapes/canvas.js.map +1 -1
- package/dist/charts/engine/shapes/chart.cjs +1 -1
- package/dist/charts/engine/shapes/chart.cjs.map +1 -1
- package/dist/charts/engine/shapes/chart.d.cts +3 -2
- package/dist/charts/engine/shapes/chart.d.ts +3 -2
- package/dist/charts/engine/shapes/chart.js +45 -26
- package/dist/charts/engine/shapes/chart.js.map +1 -1
- package/dist/charts/engine/shapes/draw.cjs +1 -1
- package/dist/charts/engine/shapes/draw.cjs.map +1 -1
- package/dist/charts/engine/shapes/draw.d.cts +3 -1
- package/dist/charts/engine/shapes/draw.d.ts +3 -1
- package/dist/charts/engine/shapes/draw.js +31 -18
- package/dist/charts/engine/shapes/draw.js.map +1 -1
- package/dist/charts/engine/shapes/funnel.cjs +1 -1
- package/dist/charts/engine/shapes/funnel.cjs.map +1 -1
- package/dist/charts/engine/shapes/funnel.js +3 -3
- package/dist/charts/engine/shapes/funnel.js.map +1 -1
- package/dist/charts/engine/shapes/gauge.cjs +1 -1
- package/dist/charts/engine/shapes/gauge.cjs.map +1 -1
- package/dist/charts/engine/shapes/gauge.js +132 -95
- package/dist/charts/engine/shapes/gauge.js.map +1 -1
- package/dist/charts/engine/shapes/hit.cjs +1 -1
- package/dist/charts/engine/shapes/hit.cjs.map +1 -1
- package/dist/charts/engine/shapes/hit.d.cts +3 -1
- package/dist/charts/engine/shapes/hit.d.ts +3 -1
- package/dist/charts/engine/shapes/hit.js +29 -8
- package/dist/charts/engine/shapes/hit.js.map +1 -1
- package/dist/charts/engine/shapes/index.d.cts +4 -1
- package/dist/charts/engine/shapes/index.d.ts +4 -1
- package/dist/charts/engine/shapes/labels.cjs +2 -0
- package/dist/charts/engine/shapes/labels.cjs.map +1 -0
- package/dist/charts/engine/shapes/labels.d.cts +14 -0
- package/dist/charts/engine/shapes/labels.d.ts +14 -0
- package/dist/charts/engine/shapes/labels.js +146 -0
- package/dist/charts/engine/shapes/labels.js.map +1 -0
- package/dist/charts/engine/shapes/layout.cjs +2 -2
- package/dist/charts/engine/shapes/layout.cjs.map +1 -1
- package/dist/charts/engine/shapes/layout.d.cts +8 -3
- package/dist/charts/engine/shapes/layout.d.ts +8 -3
- package/dist/charts/engine/shapes/layout.js +200 -113
- package/dist/charts/engine/shapes/layout.js.map +1 -1
- package/dist/charts/engine/shapes/pie.cjs +1 -1
- package/dist/charts/engine/shapes/pie.cjs.map +1 -1
- package/dist/charts/engine/shapes/pie.js +2 -2
- package/dist/charts/engine/shapes/pie.js.map +1 -1
- package/dist/charts/engine/shapes/radar.cjs +1 -1
- package/dist/charts/engine/shapes/radar.cjs.map +1 -1
- package/dist/charts/engine/shapes/radar.d.cts +2 -2
- package/dist/charts/engine/shapes/radar.d.ts +2 -2
- package/dist/charts/engine/shapes/radar.js +50 -49
- package/dist/charts/engine/shapes/radar.js.map +1 -1
- package/dist/charts/engine/shapes/radialBar.cjs +2 -0
- package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
- package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
- package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
- package/dist/charts/engine/shapes/radialBar.js +155 -0
- package/dist/charts/engine/shapes/radialBar.js.map +1 -0
- package/dist/charts/engine/shapes/runtime.cjs +1 -1
- package/dist/charts/engine/shapes/runtime.cjs.map +1 -1
- package/dist/charts/engine/shapes/runtime.d.cts +9 -2
- package/dist/charts/engine/shapes/runtime.d.ts +9 -2
- package/dist/charts/engine/shapes/runtime.js +61 -51
- package/dist/charts/engine/shapes/runtime.js.map +1 -1
- package/dist/charts/engine/shapes/sankey.cjs +2 -0
- package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
- package/dist/charts/engine/shapes/sankey.d.cts +29 -0
- package/dist/charts/engine/shapes/sankey.d.ts +29 -0
- package/dist/charts/engine/shapes/sankey.js +372 -0
- package/dist/charts/engine/shapes/sankey.js.map +1 -0
- package/dist/charts/engine/shapes/scene.cjs +1 -1
- package/dist/charts/engine/shapes/scene.cjs.map +1 -1
- package/dist/charts/engine/shapes/scene.d.cts +62 -8
- package/dist/charts/engine/shapes/scene.d.ts +62 -8
- package/dist/charts/engine/shapes/scene.js +33 -31
- package/dist/charts/engine/shapes/scene.js.map +1 -1
- package/dist/charts/engine/shapes/sunburst.cjs +2 -0
- package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
- package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
- package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
- package/dist/charts/engine/shapes/sunburst.js +261 -0
- package/dist/charts/engine/shapes/sunburst.js.map +1 -0
- package/dist/charts/engine/shapes/treemap.cjs +1 -1
- package/dist/charts/engine/shapes/treemap.cjs.map +1 -1
- package/dist/charts/engine/shapes/treemap.js +2 -2
- package/dist/charts/engine/shapes/treemap.js.map +1 -1
- package/dist/charts/engine/shapes/types.d.cts +439 -12
- package/dist/charts/engine/shapes/types.d.ts +439 -12
- package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
- package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
- package/dist/charts/engine/three-d/canvas2d.d.cts +4 -0
- package/dist/charts/engine/three-d/canvas2d.d.ts +4 -0
- package/dist/charts/engine/three-d/canvas2d.js +104 -0
- package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
- package/dist/charts/engine/three-d/chart.cjs +2 -0
- package/dist/charts/engine/three-d/chart.cjs.map +1 -0
- package/dist/charts/engine/three-d/chart.d.cts +15 -0
- package/dist/charts/engine/three-d/chart.d.ts +15 -0
- package/dist/charts/engine/three-d/chart.js +621 -0
- package/dist/charts/engine/three-d/chart.js.map +1 -0
- package/dist/charts/engine/three-d/colormap.cjs +2 -0
- package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
- package/dist/charts/engine/three-d/colormap.d.cts +16 -0
- package/dist/charts/engine/three-d/colormap.d.ts +16 -0
- package/dist/charts/engine/three-d/colormap.js +166 -0
- package/dist/charts/engine/three-d/colormap.js.map +1 -0
- package/dist/charts/engine/three-d/contours.cjs +2 -0
- package/dist/charts/engine/three-d/contours.cjs.map +1 -0
- package/dist/charts/engine/three-d/contours.d.cts +7 -0
- package/dist/charts/engine/three-d/contours.d.ts +7 -0
- package/dist/charts/engine/three-d/contours.js +47 -0
- package/dist/charts/engine/three-d/contours.js.map +1 -0
- package/dist/charts/engine/three-d/detect.cjs +2 -0
- package/dist/charts/engine/three-d/detect.cjs.map +1 -0
- package/dist/charts/engine/three-d/detect.d.cts +11 -0
- package/dist/charts/engine/three-d/detect.d.ts +11 -0
- package/dist/charts/engine/three-d/detect.js +35 -0
- package/dist/charts/engine/three-d/detect.js.map +1 -0
- package/dist/charts/engine/three-d/dom.cjs +2 -0
- package/dist/charts/engine/three-d/dom.cjs.map +1 -0
- package/dist/charts/engine/three-d/dom.d.cts +21 -0
- package/dist/charts/engine/three-d/dom.d.ts +21 -0
- package/dist/charts/engine/three-d/dom.js +98 -0
- package/dist/charts/engine/three-d/dom.js.map +1 -0
- package/dist/charts/engine/three-d/geometry.cjs +2 -0
- package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
- package/dist/charts/engine/three-d/geometry.d.cts +76 -0
- package/dist/charts/engine/three-d/geometry.d.ts +76 -0
- package/dist/charts/engine/three-d/geometry.js +529 -0
- package/dist/charts/engine/three-d/geometry.js.map +1 -0
- package/dist/charts/engine/three-d/hover.cjs +2 -0
- package/dist/charts/engine/three-d/hover.cjs.map +1 -0
- package/dist/charts/engine/three-d/hover.d.cts +25 -0
- package/dist/charts/engine/three-d/hover.d.ts +25 -0
- package/dist/charts/engine/three-d/hover.js +131 -0
- package/dist/charts/engine/three-d/hover.js.map +1 -0
- package/dist/charts/engine/three-d/index.cjs +1 -0
- package/dist/charts/engine/three-d/index.d.cts +2 -0
- package/dist/charts/engine/three-d/index.d.ts +2 -0
- package/dist/charts/engine/three-d/index.js +2 -0
- package/dist/charts/engine/three-d/labels.cjs +2 -0
- package/dist/charts/engine/three-d/labels.cjs.map +1 -0
- package/dist/charts/engine/three-d/labels.d.cts +23 -0
- package/dist/charts/engine/three-d/labels.d.ts +23 -0
- package/dist/charts/engine/three-d/labels.js +136 -0
- package/dist/charts/engine/three-d/labels.js.map +1 -0
- package/dist/charts/engine/three-d/math.cjs +2 -0
- package/dist/charts/engine/three-d/math.cjs.map +1 -0
- package/dist/charts/engine/three-d/math.d.cts +84 -0
- package/dist/charts/engine/three-d/math.d.ts +84 -0
- package/dist/charts/engine/three-d/math.js +150 -0
- package/dist/charts/engine/three-d/math.js.map +1 -0
- package/dist/charts/engine/three-d/model.cjs +2 -0
- package/dist/charts/engine/three-d/model.cjs.map +1 -0
- package/dist/charts/engine/three-d/model.d.cts +130 -0
- package/dist/charts/engine/three-d/model.d.ts +130 -0
- package/dist/charts/engine/three-d/model.js +277 -0
- package/dist/charts/engine/three-d/model.js.map +1 -0
- package/dist/charts/engine/three-d/overlay.cjs +2 -0
- package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
- package/dist/charts/engine/three-d/overlay.d.cts +72 -0
- package/dist/charts/engine/three-d/overlay.d.ts +72 -0
- package/dist/charts/engine/three-d/overlay.js +197 -0
- package/dist/charts/engine/three-d/overlay.js.map +1 -0
- package/dist/charts/engine/three-d/pick.cjs +2 -0
- package/dist/charts/engine/three-d/pick.cjs.map +1 -0
- package/dist/charts/engine/three-d/pick.d.cts +52 -0
- package/dist/charts/engine/three-d/pick.d.ts +52 -0
- package/dist/charts/engine/three-d/pick.js +220 -0
- package/dist/charts/engine/three-d/pick.js.map +1 -0
- package/dist/charts/engine/three-d/render-types.cjs +2 -0
- package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
- package/dist/charts/engine/three-d/render-types.d.cts +82 -0
- package/dist/charts/engine/three-d/render-types.d.ts +82 -0
- package/dist/charts/engine/three-d/render-types.js +13 -0
- package/dist/charts/engine/three-d/render-types.js.map +1 -0
- package/dist/charts/engine/three-d/shaders.cjs +276 -0
- package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
- package/dist/charts/engine/three-d/shaders.d.cts +26 -0
- package/dist/charts/engine/three-d/shaders.d.ts +26 -0
- package/dist/charts/engine/three-d/shaders.js +191 -0
- package/dist/charts/engine/three-d/shaders.js.map +1 -0
- package/dist/charts/engine/three-d/sort.cjs +2 -0
- package/dist/charts/engine/three-d/sort.cjs.map +1 -0
- package/dist/charts/engine/three-d/sort.d.cts +18 -0
- package/dist/charts/engine/three-d/sort.d.ts +18 -0
- package/dist/charts/engine/three-d/sort.js +71 -0
- package/dist/charts/engine/three-d/sort.js.map +1 -0
- package/dist/charts/engine/three-d/types.d.cts +588 -0
- package/dist/charts/engine/three-d/types.d.ts +588 -0
- package/dist/charts/engine/three-d/webgl.cjs +2 -0
- package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
- package/dist/charts/engine/three-d/webgl.d.cts +10 -0
- package/dist/charts/engine/three-d/webgl.d.ts +10 -0
- package/dist/charts/engine/three-d/webgl.js +130 -0
- package/dist/charts/engine/three-d/webgl.js.map +1 -0
- package/dist/charts/engine/three-d/webgpu.cjs +2 -0
- package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
- package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
- package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
- package/dist/charts/engine/three-d/webgpu.js +249 -0
- package/dist/charts/engine/three-d/webgpu.js.map +1 -0
- package/dist/charts/engine/time.cjs +1 -1
- package/dist/charts/engine/time.cjs.map +1 -1
- package/dist/charts/engine/time.d.cts +13 -4
- package/dist/charts/engine/time.d.ts +13 -4
- package/dist/charts/engine/time.js +156 -91
- package/dist/charts/engine/time.js.map +1 -1
- package/dist/charts/engine/trading/chart.cjs +2 -0
- package/dist/charts/engine/trading/chart.cjs.map +1 -0
- package/dist/charts/engine/trading/chart.d.cts +3 -0
- package/dist/charts/engine/trading/chart.d.ts +3 -0
- package/dist/charts/engine/trading/chart.js +1507 -0
- package/dist/charts/engine/trading/chart.js.map +1 -0
- package/dist/charts/engine/trading/drawings.cjs +2 -0
- package/dist/charts/engine/trading/drawings.cjs.map +1 -0
- package/dist/charts/engine/trading/drawings.d.cts +57 -0
- package/dist/charts/engine/trading/drawings.d.ts +57 -0
- package/dist/charts/engine/trading/drawings.js +160 -0
- package/dist/charts/engine/trading/drawings.js.map +1 -0
- package/dist/charts/engine/trading/format.cjs +2 -0
- package/dist/charts/engine/trading/format.cjs.map +1 -0
- package/dist/charts/engine/trading/format.d.cts +60 -0
- package/dist/charts/engine/trading/format.d.ts +60 -0
- package/dist/charts/engine/trading/format.js +131 -0
- package/dist/charts/engine/trading/format.js.map +1 -0
- package/dist/charts/engine/trading/geometry.cjs +2 -0
- package/dist/charts/engine/trading/geometry.cjs.map +1 -0
- package/dist/charts/engine/trading/geometry.d.cts +55 -0
- package/dist/charts/engine/trading/geometry.d.ts +55 -0
- package/dist/charts/engine/trading/geometry.js +131 -0
- package/dist/charts/engine/trading/geometry.js.map +1 -0
- package/dist/charts/engine/trading/index.cjs +1 -0
- package/dist/charts/engine/trading/index.d.cts +3 -0
- package/dist/charts/engine/trading/index.d.ts +3 -0
- package/dist/charts/engine/trading/index.js +3 -0
- package/dist/charts/engine/trading/indicators.cjs +2 -0
- package/dist/charts/engine/trading/indicators.cjs.map +1 -0
- package/dist/charts/engine/trading/indicators.d.cts +105 -0
- package/dist/charts/engine/trading/indicators.d.ts +105 -0
- package/dist/charts/engine/trading/indicators.js +268 -0
- package/dist/charts/engine/trading/indicators.js.map +1 -0
- package/dist/charts/engine/trading/labels.cjs +2 -0
- package/dist/charts/engine/trading/labels.cjs.map +1 -0
- package/dist/charts/engine/trading/labels.d.cts +7 -0
- package/dist/charts/engine/trading/labels.d.ts +7 -0
- package/dist/charts/engine/trading/labels.js +91 -0
- package/dist/charts/engine/trading/labels.js.map +1 -0
- package/dist/charts/engine/trading/scale.cjs +2 -0
- package/dist/charts/engine/trading/scale.cjs.map +1 -0
- package/dist/charts/engine/trading/scale.d.cts +46 -0
- package/dist/charts/engine/trading/scale.d.ts +46 -0
- package/dist/charts/engine/trading/scale.js +100 -0
- package/dist/charts/engine/trading/scale.js.map +1 -0
- package/dist/charts/engine/trading/store.cjs +2 -0
- package/dist/charts/engine/trading/store.cjs.map +1 -0
- package/dist/charts/engine/trading/store.d.cts +62 -0
- package/dist/charts/engine/trading/store.d.ts +62 -0
- package/dist/charts/engine/trading/store.js +129 -0
- package/dist/charts/engine/trading/store.js.map +1 -0
- package/dist/charts/engine/trading/studies.cjs +2 -0
- package/dist/charts/engine/trading/studies.cjs.map +1 -0
- package/dist/charts/engine/trading/studies.d.cts +52 -0
- package/dist/charts/engine/trading/studies.d.ts +52 -0
- package/dist/charts/engine/trading/studies.js +254 -0
- package/dist/charts/engine/trading/studies.js.map +1 -0
- package/dist/charts/engine/trading/types.d.cts +656 -0
- package/dist/charts/engine/trading/types.d.ts +656 -0
- package/dist/charts/engine/types.d.cts +165 -14
- package/dist/charts/engine/types.d.ts +165 -14
- package/dist/charts/index.cjs +1 -1
- package/dist/charts/index.d.cts +7 -4
- package/dist/charts/index.d.ts +7 -4
- package/dist/charts/index.js +22 -11
- package/dist/charts/react/Chart.cjs +1 -1
- package/dist/charts/react/Chart.cjs.map +1 -1
- package/dist/charts/react/Chart.d.cts +4 -4
- package/dist/charts/react/Chart.d.ts +4 -4
- package/dist/charts/react/Chart.js +5 -1
- package/dist/charts/react/Chart.js.map +1 -1
- package/dist/charts/react/charts.cjs +1 -1
- package/dist/charts/react/charts.cjs.map +1 -1
- package/dist/charts/react/charts.d.cts +39 -1
- package/dist/charts/react/charts.d.ts +39 -1
- package/dist/charts/react/charts.js +303 -131
- package/dist/charts/react/charts.js.map +1 -1
- package/dist/charts/react/orderbook.cjs +2 -0
- package/dist/charts/react/orderbook.cjs.map +1 -0
- package/dist/charts/react/orderbook.d.cts +142 -0
- package/dist/charts/react/orderbook.d.ts +142 -0
- package/dist/charts/react/orderbook.js +182 -0
- package/dist/charts/react/orderbook.js.map +1 -0
- package/dist/charts/react/shapes.cjs +1 -1
- package/dist/charts/react/shapes.cjs.map +1 -1
- package/dist/charts/react/shapes.d.cts +291 -9
- package/dist/charts/react/shapes.d.ts +291 -9
- package/dist/charts/react/shapes.js +280 -93
- package/dist/charts/react/shapes.js.map +1 -1
- package/dist/charts/react/three-d.cjs +2 -0
- package/dist/charts/react/three-d.cjs.map +1 -0
- package/dist/charts/react/three-d.d.cts +151 -0
- package/dist/charts/react/three-d.d.ts +151 -0
- package/dist/charts/react/three-d.js +154 -0
- package/dist/charts/react/three-d.js.map +1 -0
- package/dist/charts/react/trading.cjs +2 -0
- package/dist/charts/react/trading.cjs.map +1 -0
- package/dist/charts/react/trading.d.cts +93 -0
- package/dist/charts/react/trading.d.ts +93 -0
- package/dist/charts/react/trading.js +95 -0
- package/dist/charts/react/trading.js.map +1 -0
- package/dist/charts/react/types.d.cts +132 -8
- package/dist/charts/react/types.d.ts +132 -8
- package/dist/core/contracts.cjs +1 -1
- package/dist/core/contracts.cjs.map +1 -1
- package/dist/core/contracts.js +1 -1
- package/dist/core/contracts.js.map +1 -1
- package/dist/native/charts/src/canvas.cjs +1 -1
- package/dist/native/charts/src/canvas.js +9 -3
- package/dist/native/charts/src/engine/axis.cjs +1 -1
- package/dist/native/charts/src/engine/axis.cjs.map +1 -1
- package/dist/native/charts/src/engine/axis.js +6 -6
- package/dist/native/charts/src/engine/axis.js.map +1 -1
- package/dist/native/charts/src/engine/controller.cjs +1 -1
- package/dist/native/charts/src/engine/controller.cjs.map +1 -1
- package/dist/native/charts/src/engine/controller.js +352 -292
- package/dist/native/charts/src/engine/controller.js.map +1 -1
- package/dist/native/charts/src/engine/data.cjs +1 -1
- package/dist/native/charts/src/engine/data.cjs.map +1 -1
- package/dist/native/charts/src/engine/data.js +63 -49
- package/dist/native/charts/src/engine/data.js.map +1 -1
- package/dist/native/charts/src/engine/format.cjs +1 -1
- package/dist/native/charts/src/engine/format.cjs.map +1 -1
- package/dist/native/charts/src/engine/format.js +46 -21
- package/dist/native/charts/src/engine/format.js.map +1 -1
- package/dist/native/charts/src/engine/labels.cjs +2 -0
- package/dist/native/charts/src/engine/labels.cjs.map +1 -0
- package/dist/native/charts/src/engine/labels.js +74 -0
- package/dist/native/charts/src/engine/labels.js.map +1 -0
- package/dist/native/charts/src/engine/layout.cjs +1 -1
- package/dist/native/charts/src/engine/layout.cjs.map +1 -1
- package/dist/native/charts/src/engine/layout.js +53 -12
- package/dist/native/charts/src/engine/layout.js.map +1 -1
- package/dist/native/charts/src/engine/locale.cjs +2 -0
- package/dist/native/charts/src/engine/locale.cjs.map +1 -0
- package/dist/native/charts/src/engine/locale.js +60 -0
- package/dist/native/charts/src/engine/locale.js.map +1 -0
- package/dist/native/charts/src/engine/model.cjs +1 -1
- package/dist/native/charts/src/engine/model.cjs.map +1 -1
- package/dist/native/charts/src/engine/model.js +223 -116
- package/dist/native/charts/src/engine/model.js.map +1 -1
- package/dist/native/charts/src/engine/overlay.cjs +1 -1
- package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
- package/dist/native/charts/src/engine/overlay.js +46 -23
- package/dist/native/charts/src/engine/overlay.js.map +1 -1
- package/dist/native/charts/src/engine/presets.cjs +2 -2
- package/dist/native/charts/src/engine/presets.cjs.map +1 -1
- package/dist/native/charts/src/engine/presets.js +448 -33
- package/dist/native/charts/src/engine/presets.js.map +1 -1
- package/dist/native/charts/src/engine/scale.cjs +1 -1
- package/dist/native/charts/src/engine/scale.cjs.map +1 -1
- package/dist/native/charts/src/engine/scale.js +1 -1
- package/dist/native/charts/src/engine/scale.js.map +1 -1
- package/dist/native/charts/src/engine/scene.cjs +1 -1
- package/dist/native/charts/src/engine/scene.cjs.map +1 -1
- package/dist/native/charts/src/engine/scene.js +296 -167
- package/dist/native/charts/src/engine/scene.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
- package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/calendar.js +364 -0
- package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
- package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/draw.js +165 -0
- package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
- package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
- package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/hit.js +106 -0
- package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/labels.js +146 -0
- package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
- package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/layout.js +331 -0
- package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/pie.js +302 -0
- package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/radar.js +198 -0
- package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
- package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
- package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
- package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/scene.js +125 -0
- package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
- package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
- package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
- package/dist/native/charts/src/engine/time.cjs +1 -1
- package/dist/native/charts/src/engine/time.cjs.map +1 -1
- package/dist/native/charts/src/engine/time.js +156 -91
- package/dist/native/charts/src/engine/time.js.map +1 -1
- package/dist/native/components/Chart/ChartBase.cjs +1 -1
- package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
- package/dist/native/components/Chart/ChartBase.d.cts +1 -1
- package/dist/native/components/Chart/ChartBase.d.ts +1 -1
- package/dist/native/components/Chart/ChartBase.js +110 -107
- package/dist/native/components/Chart/ChartBase.js.map +1 -1
- package/dist/native/components/Chart/charts.cjs +1 -1
- package/dist/native/components/Chart/charts.cjs.map +1 -1
- package/dist/native/components/Chart/charts.d.cts +6 -1
- package/dist/native/components/Chart/charts.d.ts +6 -1
- package/dist/native/components/Chart/charts.js +53 -29
- package/dist/native/components/Chart/charts.js.map +1 -1
- package/dist/native/components/Chart/index.cjs +1 -1
- package/dist/native/components/Chart/index.d.cts +1 -1
- package/dist/native/components/Chart/index.d.ts +1 -1
- package/dist/native/components/Chart/index.js +2 -2
- package/dist/native/components/Chart/scene.cjs +1 -1
- package/dist/native/components/Chart/scene.cjs.map +1 -1
- package/dist/native/components/Chart/scene.js +234 -217
- package/dist/native/components/Chart/scene.js.map +1 -1
- package/dist/native/components/Chart/types.d.cts +26 -3
- package/dist/native/components/Chart/types.d.ts +26 -3
- package/dist/native/components/Charts/charts.cjs +2 -0
- package/dist/native/components/Charts/charts.cjs.map +1 -0
- package/dist/native/components/Charts/charts.d.cts +41 -0
- package/dist/native/components/Charts/charts.d.ts +41 -0
- package/dist/native/components/Charts/charts.js +338 -0
- package/dist/native/components/Charts/charts.js.map +1 -0
- package/dist/native/components/Charts/index.cjs +1 -0
- package/dist/native/components/Charts/index.d.cts +2 -0
- package/dist/native/components/Charts/index.d.ts +2 -0
- package/dist/native/components/Charts/index.js +2 -0
- package/dist/native/components/Charts/types.d.cts +144 -0
- package/dist/native/components/Charts/types.d.ts +144 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.js +271 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
- package/dist/native/components/ShapeChart/charts.cjs +2 -0
- package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
- package/dist/native/components/ShapeChart/charts.d.cts +38 -0
- package/dist/native/components/ShapeChart/charts.d.ts +38 -0
- package/dist/native/components/ShapeChart/charts.js +387 -0
- package/dist/native/components/ShapeChart/charts.js.map +1 -0
- package/dist/native/components/ShapeChart/draw.cjs +2 -0
- package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
- package/dist/native/components/ShapeChart/draw.d.cts +4 -0
- package/dist/native/components/ShapeChart/draw.d.ts +4 -0
- package/dist/native/components/ShapeChart/draw.js +104 -0
- package/dist/native/components/ShapeChart/draw.js.map +1 -0
- package/dist/native/components/ShapeChart/geometry.cjs +2 -0
- package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
- package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
- package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
- package/dist/native/components/ShapeChart/geometry.js +602 -0
- package/dist/native/components/ShapeChart/geometry.js.map +1 -0
- package/dist/native/components/ShapeChart/index.cjs +1 -0
- package/dist/native/components/ShapeChart/index.d.cts +2 -0
- package/dist/native/components/ShapeChart/index.d.ts +2 -0
- package/dist/native/components/ShapeChart/index.js +2 -0
- package/dist/native/components/ShapeChart/recorder.cjs +2 -0
- package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
- package/dist/native/components/ShapeChart/recorder.d.cts +106 -0
- package/dist/native/components/ShapeChart/recorder.d.ts +106 -0
- package/dist/native/components/ShapeChart/recorder.js +574 -0
- package/dist/native/components/ShapeChart/recorder.js.map +1 -0
- package/dist/native/components/ShapeChart/types.d.cts +509 -0
- package/dist/native/components/ShapeChart/types.d.ts +509 -0
- package/dist/native/index.cjs +1 -1
- package/dist/native/index.d.cts +2 -0
- package/dist/native/index.d.ts +2 -0
- package/dist/native/index.js +14 -10
- package/dist/native/manifest.d.cts +6 -4
- package/dist/native/manifest.d.ts +6 -4
- package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
- package/dist/native/source/components/Chart/charts.tsx +42 -6
- package/dist/native/source/components/Chart/index.ts +1 -0
- package/dist/native/source/components/Chart/scene.tsx +154 -84
- package/dist/native/source/components/Chart/types.ts +31 -1
- package/dist/native/source/components/Charts/charts.tsx +493 -0
- package/dist/native/source/components/Charts/index.ts +14 -0
- package/dist/native/source/components/Charts/types.ts +207 -0
- package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +484 -0
- package/dist/native/source/components/ShapeChart/charts.tsx +605 -0
- package/dist/native/source/components/ShapeChart/draw.tsx +170 -0
- package/dist/native/source/components/ShapeChart/geometry.ts +1185 -0
- package/dist/native/source/components/ShapeChart/index.ts +15 -0
- package/dist/native/source/components/ShapeChart/recorder.ts +830 -0
- package/dist/native/source/components/ShapeChart/types.ts +564 -0
- package/dist/native/source/index.ts +2 -0
- package/dist/native/source/manifest.ts +30 -4
- package/dist/taro/charts.d.ts +209 -4
- package/dist/taro/index.d.ts +1 -0
- package/dist/taro/index.js +7517 -1856
- package/dist/taro/manifest.d.ts +1 -0
- package/dist/taro/shape-charts.d.ts +537 -0
- package/dist/uni/AreaChart.vue +68 -0
- package/dist/uni/AreaChart.vue.d.ts +120 -0
- package/dist/uni/Badge.vue.d.ts +1 -1
- package/dist/uni/BoxPlotChart.vue +66 -0
- package/dist/uni/BoxPlotChart.vue.d.ts +102 -0
- package/dist/uni/BubbleChart.vue +68 -0
- package/dist/uni/BubbleChart.vue.d.ts +106 -0
- package/dist/uni/BulletChart.vue +86 -0
- package/dist/uni/BulletChart.vue.d.ts +110 -0
- package/dist/uni/CalendarHeatmap.vue +92 -0
- package/dist/uni/CalendarHeatmap.vue.d.ts +129 -0
- package/dist/uni/CandlestickChart.vue +66 -0
- package/dist/uni/CandlestickChart.vue.d.ts +100 -0
- package/dist/uni/DonutChart.vue +72 -0
- package/dist/uni/DonutChart.vue.d.ts +114 -0
- package/dist/uni/FunnelChart.vue +67 -0
- package/dist/uni/FunnelChart.vue.d.ts +104 -0
- package/dist/uni/GanttChart.vue +67 -0
- package/dist/uni/GanttChart.vue.d.ts +123 -0
- package/dist/uni/GaugeChart.vue +77 -0
- package/dist/uni/GaugeChart.vue.d.ts +123 -0
- package/dist/uni/HeatmapChart.vue +66 -0
- package/dist/uni/HeatmapChart.vue.d.ts +114 -0
- package/dist/uni/HistogramChart.vue +66 -0
- package/dist/uni/HistogramChart.vue.d.ts +121 -0
- package/dist/uni/HorizontalBarChart.vue +68 -0
- package/dist/uni/HorizontalBarChart.vue.d.ts +127 -0
- package/dist/uni/Input.vue.d.ts +1 -1
- package/dist/uni/MixedChart.vue +68 -0
- package/dist/uni/MixedChart.vue.d.ts +106 -0
- package/dist/uni/NumberInput.vue.d.ts +1 -1
- package/dist/uni/PieChart.vue +72 -0
- package/dist/uni/PieChart.vue.d.ts +114 -0
- package/dist/uni/RadarChart.vue +67 -0
- package/dist/uni/RadarChart.vue.d.ts +110 -0
- package/dist/uni/RadialBarChart.vue +90 -0
- package/dist/uni/RadialBarChart.vue.d.ts +132 -0
- package/dist/uni/RangeAreaChart.vue +68 -0
- package/dist/uni/RangeAreaChart.vue.d.ts +102 -0
- package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
- package/dist/uni/SankeyChart.vue +88 -0
- package/dist/uni/SankeyChart.vue.d.ts +121 -0
- package/dist/uni/ShapeChart.vue +73 -0
- package/dist/uni/ShapeChart.vue.d.ts +54 -0
- package/dist/uni/Sparkline.vue +58 -0
- package/dist/uni/Sparkline.vue.d.ts +77 -0
- package/dist/uni/SunburstChart.vue +90 -0
- package/dist/uni/SunburstChart.vue.d.ts +114 -0
- package/dist/uni/Textarea.vue.d.ts +1 -1
- package/dist/uni/TimePicker.vue.d.ts +1 -1
- package/dist/uni/TreemapChart.vue +65 -0
- package/dist/uni/TreemapChart.vue.d.ts +100 -0
- package/dist/uni/WaterfallChart.vue +66 -0
- package/dist/uni/WaterfallChart.vue.d.ts +125 -0
- package/dist/uni/chart-types.d.ts +216 -2
- package/dist/uni/chart-types.js +174 -0
- package/dist/uni/charts-canvas.js +8 -3
- package/dist/uni/index.d.ts +26 -1
- package/dist/uni/index.js +26 -1
- package/dist/uni/manifest.d.ts +272 -0
- package/dist/uni/manifest.js +387 -0
- package/dist/uni/named-chart-options.d.ts +88 -0
- package/dist/uni/named-chart-options.js +156 -0
- package/dist/uni/shape-chart-canvas.d.ts +51 -0
- package/dist/uni/shape-chart-canvas.js +342 -0
- package/dist/uni/shape-chart-types.d.ts +381 -0
- package/dist/uni/shape-chart-types.js +261 -0
- package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
- package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
- package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
- package/dist/vue/components/Chart/BarChart.vue.js +7 -0
- package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +112 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
- package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
- package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
- package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
- package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
- package/dist/vue/components/Chart/Chart.vue.js +7 -0
- package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
- package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
- package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
- package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
- package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
- package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
- package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GanttChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
- package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +98 -0
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
- package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +125 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
- package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
- package/dist/vue/components/Chart/LineChart.vue.js +7 -0
- package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
- package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
- package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
- package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
- package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
- package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
- package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +128 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
- package/dist/vue/components/Chart/PieChart.vue.js +7 -0
- package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
- package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
- package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
- package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
- package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
- package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
- package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
- package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
- package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
- package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
- package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
- package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
- package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
- package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +114 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
- package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TradingChart.vue.d.ts +160 -0
- package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
- package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
- package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
- package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
- package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/cartesian.d.ts +47 -0
- package/dist/vue/components/Chart/cartesian.js +56 -0
- package/dist/vue/components/Chart/cartesian.js.map +1 -0
- package/dist/vue/components/Chart/engine.d.ts +35 -0
- package/dist/vue/components/Chart/engine.js +35 -0
- package/dist/vue/components/Chart/engine.js.map +1 -0
- package/dist/vue/components/Chart/index.d.ts +41 -0
- package/dist/vue/components/Chart/index.js +40 -0
- package/dist/vue/components/Chart/orderbook.d.ts +359 -0
- package/dist/vue/components/Chart/orderbook.js +126 -0
- package/dist/vue/components/Chart/orderbook.js.map +1 -0
- package/dist/vue/components/Chart/props.d.ts +188 -0
- package/dist/vue/components/Chart/props.js +92 -0
- package/dist/vue/components/Chart/props.js.map +1 -0
- package/dist/vue/components/Chart/shape.d.ts +41 -0
- package/dist/vue/components/Chart/shape.js +42 -0
- package/dist/vue/components/Chart/shape.js.map +1 -0
- package/dist/vue/components/Chart/three-d.d.ts +106 -0
- package/dist/vue/components/Chart/three-d.js +88 -0
- package/dist/vue/components/Chart/three-d.js.map +1 -0
- package/dist/vue/components/Chart/trading.d.ts +105 -0
- package/dist/vue/components/Chart/trading.js +55 -0
- package/dist/vue/components/Chart/trading.js.map +1 -0
- package/dist/vue/components/Chart/types.d.ts +137 -0
- package/dist/vue/global.d.ts +38 -0
- package/dist/vue/groups/charts.d.ts +1 -0
- package/dist/vue/groups/charts.js +87 -0
- package/dist/vue/groups/charts.js.map +1 -0
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.js +63 -23
- package/dist/vue/plugin.js +12 -10
- package/dist/vue/plugin.js.map +1 -1
- package/dist/weapp/area-chart/index.js +1 -0
- package/dist/weapp/area-chart/index.json +1 -0
- package/dist/weapp/area-chart/index.wxml +1 -0
- package/dist/weapp/area-chart/index.wxss +1 -0
- package/dist/weapp/box-plot-chart/index.js +1 -0
- package/dist/weapp/box-plot-chart/index.json +1 -0
- package/dist/weapp/box-plot-chart/index.wxml +1 -0
- package/dist/weapp/box-plot-chart/index.wxss +1 -0
- package/dist/weapp/bubble-chart/index.js +1 -0
- package/dist/weapp/bubble-chart/index.json +1 -0
- package/dist/weapp/bubble-chart/index.wxml +1 -0
- package/dist/weapp/bubble-chart/index.wxss +1 -0
- package/dist/weapp/bullet-chart/index.js +1 -0
- package/dist/weapp/bullet-chart/index.json +1 -0
- package/dist/weapp/bullet-chart/index.wxml +1 -0
- package/dist/weapp/bullet-chart/index.wxss +1 -0
- package/dist/weapp/calendar-heatmap/index.js +1 -0
- package/dist/weapp/calendar-heatmap/index.json +1 -0
- package/dist/weapp/calendar-heatmap/index.wxml +1 -0
- package/dist/weapp/calendar-heatmap/index.wxss +1 -0
- package/dist/weapp/candlestick-chart/index.js +1 -0
- package/dist/weapp/candlestick-chart/index.json +1 -0
- package/dist/weapp/candlestick-chart/index.wxml +1 -0
- package/dist/weapp/candlestick-chart/index.wxss +1 -0
- package/dist/weapp/charts/canvas.js +11436 -0
- package/dist/weapp/charts/core.d.ts +2 -0
- package/dist/weapp/charts/core.js +41 -0
- package/dist/weapp/controls.js +1433 -4478
- package/dist/weapp/donut-chart/index.js +1 -0
- package/dist/weapp/donut-chart/index.json +1 -0
- package/dist/weapp/donut-chart/index.wxml +1 -0
- package/dist/weapp/donut-chart/index.wxss +1 -0
- package/dist/weapp/funnel-chart/index.js +1 -0
- package/dist/weapp/funnel-chart/index.json +1 -0
- package/dist/weapp/funnel-chart/index.wxml +1 -0
- package/dist/weapp/funnel-chart/index.wxss +1 -0
- package/dist/weapp/gantt-chart/index.js +1 -0
- package/dist/weapp/gantt-chart/index.json +1 -0
- package/dist/weapp/gantt-chart/index.wxml +1 -0
- package/dist/weapp/gantt-chart/index.wxss +1 -0
- package/dist/weapp/gauge-chart/index.js +1 -0
- package/dist/weapp/gauge-chart/index.json +1 -0
- package/dist/weapp/gauge-chart/index.wxml +1 -0
- package/dist/weapp/gauge-chart/index.wxss +1 -0
- package/dist/weapp/heatmap-chart/index.js +1 -0
- package/dist/weapp/heatmap-chart/index.json +1 -0
- package/dist/weapp/heatmap-chart/index.wxml +1 -0
- package/dist/weapp/heatmap-chart/index.wxss +1 -0
- package/dist/weapp/histogram-chart/index.js +1 -0
- package/dist/weapp/histogram-chart/index.json +1 -0
- package/dist/weapp/histogram-chart/index.wxml +1 -0
- package/dist/weapp/histogram-chart/index.wxss +1 -0
- package/dist/weapp/horizontal-bar-chart/index.js +1 -0
- package/dist/weapp/horizontal-bar-chart/index.json +1 -0
- package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
- package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
- package/dist/weapp/mixed-chart/index.js +1 -0
- package/dist/weapp/mixed-chart/index.json +1 -0
- package/dist/weapp/mixed-chart/index.wxml +1 -0
- package/dist/weapp/mixed-chart/index.wxss +1 -0
- package/dist/weapp/pie-chart/index.js +1 -0
- package/dist/weapp/pie-chart/index.json +1 -0
- package/dist/weapp/pie-chart/index.wxml +1 -0
- package/dist/weapp/pie-chart/index.wxss +1 -0
- package/dist/weapp/radar-chart/index.js +1 -0
- package/dist/weapp/radar-chart/index.json +1 -0
- package/dist/weapp/radar-chart/index.wxml +1 -0
- package/dist/weapp/radar-chart/index.wxss +1 -0
- package/dist/weapp/radial-bar-chart/index.js +1 -0
- package/dist/weapp/radial-bar-chart/index.json +1 -0
- package/dist/weapp/radial-bar-chart/index.wxml +1 -0
- package/dist/weapp/radial-bar-chart/index.wxss +1 -0
- package/dist/weapp/range-area-chart/index.js +1 -0
- package/dist/weapp/range-area-chart/index.json +1 -0
- package/dist/weapp/range-area-chart/index.wxml +1 -0
- package/dist/weapp/range-area-chart/index.wxss +1 -0
- package/dist/weapp/sankey-chart/index.js +1 -0
- package/dist/weapp/sankey-chart/index.json +1 -0
- package/dist/weapp/sankey-chart/index.wxml +1 -0
- package/dist/weapp/sankey-chart/index.wxss +1 -0
- package/dist/weapp/shape-chart/index.js +1 -0
- package/dist/weapp/shape-chart/index.json +1 -0
- package/dist/weapp/shape-chart/index.wxml +1 -0
- package/dist/weapp/shape-chart/index.wxss +1 -0
- package/dist/weapp/sparkline/index.js +1 -0
- package/dist/weapp/sparkline/index.json +1 -0
- package/dist/weapp/sparkline/index.wxml +1 -0
- package/dist/weapp/sparkline/index.wxss +1 -0
- package/dist/weapp/sunburst-chart/index.js +1 -0
- package/dist/weapp/sunburst-chart/index.json +1 -0
- package/dist/weapp/sunburst-chart/index.wxml +1 -0
- package/dist/weapp/sunburst-chart/index.wxss +1 -0
- package/dist/weapp/treemap-chart/index.js +1 -0
- package/dist/weapp/treemap-chart/index.json +1 -0
- package/dist/weapp/treemap-chart/index.wxml +1 -0
- package/dist/weapp/treemap-chart/index.wxss +1 -0
- package/dist/weapp/types.d.ts +466 -0
- package/dist/weapp/waterfall-chart/index.js +1 -0
- package/dist/weapp/waterfall-chart/index.json +1 -0
- package/dist/weapp/waterfall-chart/index.wxml +1 -0
- package/dist/weapp/waterfall-chart/index.wxss +1 -0
- package/dist/web-components/components/chart/chart.d.ts +58 -0
- package/dist/web-components/components/chart/chart.js +55 -0
- package/dist/web-components/components/chart/chart.js.map +1 -0
- package/dist/web-components/components/chart/charts.d.ts +252 -0
- package/dist/web-components/components/chart/charts.js +201 -0
- package/dist/web-components/components/chart/charts.js.map +1 -0
- package/dist/web-components/components/chart/engine-element.d.ts +53 -0
- package/dist/web-components/components/chart/engine-element.js +77 -0
- package/dist/web-components/components/chart/engine-element.js.map +1 -0
- package/dist/web-components/components/chart/extended.d.ts +224 -0
- package/dist/web-components/components/chart/extended.js +183 -0
- package/dist/web-components/components/chart/extended.js.map +1 -0
- package/dist/web-components/components/chart/series.d.ts +7 -0
- package/dist/web-components/components/chart/series.js +14 -0
- package/dist/web-components/components/chart/series.js.map +1 -0
- package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
- package/dist/web-components/components/chart/shape-chart.js +161 -0
- package/dist/web-components/components/chart/shape-chart.js.map +1 -0
- package/dist/web-components/components/chart/shapes-extended.d.ts +162 -0
- package/dist/web-components/components/chart/shapes-extended.js +156 -0
- package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
- package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
- package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
- package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
- package/dist/web-components/components/order-book/order-book.d.ts +165 -0
- package/dist/web-components/components/order-book/order-book.js +174 -0
- package/dist/web-components/components/order-book/order-book.js.map +1 -0
- package/dist/web-components/components/trading-chart/trading-chart.d.ts +96 -0
- package/dist/web-components/components/trading-chart/trading-chart.js +96 -0
- package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
- package/dist/web-components/elements/chart-3d.d.ts +2 -0
- package/dist/web-components/elements/chart-3d.js +13 -0
- package/dist/web-components/elements/chart-3d.js.map +1 -0
- package/dist/web-components/elements/chart.d.ts +7 -0
- package/dist/web-components/elements/chart.js +43 -0
- package/dist/web-components/elements/chart.js.map +1 -0
- package/dist/web-components/elements/order-book.d.ts +2 -0
- package/dist/web-components/elements/order-book.js +13 -0
- package/dist/web-components/elements/order-book.js.map +1 -0
- package/dist/web-components/elements/trading-chart.d.ts +2 -0
- package/dist/web-components/elements/trading-chart.js +8 -0
- package/dist/web-components/elements/trading-chart.js.map +1 -0
- package/dist/web-components/html-custom-data.json +1192 -29
- package/dist/web-components/types/react.d.ts +435 -0
- package/dist/web-components/types/solid.d.ts +321 -0
- package/dist/web-components/types/svelte.d.ts +321 -0
- package/dist/web-components/types/vue.d.ts +359 -0
- package/package.json +113 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.js","names":["font","theme","weight","size","crisp","v","textBox","s","px","a","plot","py","x","width","y","height","rectOf","xa","xb","ya","yb","left","right","top","bottom","drawBackground","input","scales","ctx","r","toCss","yTicks","xTicks","line","base","lastRight","order","i","b","w","text","overlaps","inside","haloText","halo","color","placeLabels","placed","label","labels","measure","gap","above","below","box","c","occupied","o","drawForeground","labelHeight","pos","tx","ty","textColor","t"],"sources":["../../../../charts/src/engine/overlay.ts"],"sourcesContent":["// Canvas2D layers around the data: background (areas, grid, axes, tick\n// labels) and foreground (reference lines, annotation and point labels).\n\nimport { toCss, type Rgba } from \"./color\";\nimport type { AxisTicks } from \"./axis\";\nimport type { Rect, Scales } from \"./layout\";\nimport type { AxisModel } from \"./model\";\nimport type { ChartTheme } from \"./theme\";\nimport type { ChartLabelPosition } from \"./types\";\n\nexport interface ResolvedRect {\n type: \"rect\";\n x0?: number;\n x1?: number;\n y0?: number;\n y1?: number;\n color: Rgba;\n opacity: number;\n label?: string;\n labelPosition: ChartLabelPosition;\n labelColor: Rgba;\n}\n\nexport interface ResolvedLine {\n type: \"line\";\n axis: \"x\" | \"y\";\n value: number;\n color: Rgba;\n width: number;\n dash: number[];\n label?: string;\n}\n\nexport interface ResolvedText {\n type: \"text\";\n x?: number;\n y?: number;\n text: string;\n anchor: \"center\" | \"top\" | \"bottom\" | \"left\" | \"right\";\n color: Rgba;\n weight: number;\n}\n\nexport type ResolvedAnnotation = ResolvedRect | ResolvedLine | ResolvedText;\n\nexport interface PointLabel {\n x: number;\n y: number;\n /** Radius of the dot */\n r: number;\n text: string;\n /** Fixed side (bar values); any free side around the dot otherwise */\n placement?: \"above\" | \"below\";\n}\n\nexport const font = (theme: ChartTheme, size = theme.fontSize, weight = 400) =>\n `${weight} ${size}px ${theme.fontFamily}`;\n\nconst crisp = (v: number) => Math.round(v) + 0.5;\n\n/** Box of a text annotation, kept inside the plot */\nexport const textBox = (\n a: ResolvedText,\n s: Scales,\n width: number,\n height: number,\n): Rect => {\n const { plot } = s;\n const px = a.x === undefined ? plot.x + plot.width / 2 : s.xToPx(a.x);\n const py = a.y === undefined ? plot.y + plot.height / 2 : s.yToPx(a.y);\n const gap = 6;\n let x = px - width / 2;\n let y = py - height / 2;\n if (a.anchor === \"top\") y = py + gap;\n else if (a.anchor === \"bottom\") y = py - gap - height;\n else if (a.anchor === \"left\") x = px + gap;\n else if (a.anchor === \"right\") x = px - gap - width;\n x = Math.max(plot.x + gap, Math.min(x, plot.x + plot.width - gap - width));\n y = Math.max(plot.y + 2, Math.min(y, plot.y + plot.height - 2 - height));\n return { x, y, width, height };\n};\n\nconst rectOf = (a: ResolvedRect, s: Scales): Rect => {\n const { plot } = s;\n const xa = a.x0 === undefined ? -Infinity : s.xToPx(a.x0);\n const xb = a.x1 === undefined ? Infinity : s.xToPx(a.x1);\n const ya = a.y0 === undefined ? Infinity : s.yToPx(a.y0);\n const yb = a.y1 === undefined ? -Infinity : s.yToPx(a.y1);\n const left = Math.max(plot.x, Math.min(xa, xb));\n const right = Math.min(plot.x + plot.width, Math.max(xa, xb));\n const top = Math.max(plot.y, Math.min(ya, yb));\n const bottom = Math.min(plot.y + plot.height, Math.max(ya, yb));\n return { x: left, y: top, width: right - left, height: bottom - top };\n};\n\nexport interface BackgroundInput {\n width: number;\n height: number;\n scales: Scales;\n x: AxisModel;\n y: AxisModel;\n xTicks: AxisTicks;\n yTicks: AxisTicks;\n theme: ChartTheme;\n annotations: readonly ResolvedAnnotation[];\n}\n\nexport const drawBackground = (\n ctx: CanvasRenderingContext2D,\n input: BackgroundInput,\n) => {\n const { scales, theme, x, y, xTicks, yTicks } = input;\n const { plot } = scales;\n ctx.clearRect(0, 0, input.width, input.height);\n\n // areas\n ctx.save();\n ctx.beginPath();\n ctx.rect(plot.x, plot.y, plot.width, plot.height);\n ctx.clip();\n for (const a of input.annotations) {\n if (a.type !== \"rect\") continue;\n const r = rectOf(a, scales);\n if (r.width <= 0 || r.height <= 0) continue;\n ctx.fillStyle = toCss(a.color, a.opacity);\n ctx.fillRect(r.x, r.y, r.width, r.height);\n }\n ctx.restore();\n\n // grid\n ctx.lineWidth = 1;\n ctx.strokeStyle = toCss(theme.grid);\n ctx.beginPath();\n if (y.grid) {\n for (const v of yTicks.values) {\n const py = crisp(scales.yToPx(v));\n if (py < plot.y - 1 || py > plot.y + plot.height + 1) continue;\n ctx.moveTo(plot.x, py);\n ctx.lineTo(plot.x + plot.width, py);\n }\n }\n if (x.grid) {\n for (const v of xTicks.values) {\n const px = crisp(scales.xToPx(v));\n if (px < plot.x - 1 || px > plot.x + plot.width + 1) continue;\n ctx.moveTo(px, plot.y);\n ctx.lineTo(px, plot.y + plot.height);\n }\n }\n ctx.stroke();\n\n const line = Math.ceil(theme.fontSize * 1.4);\n ctx.font = font(theme);\n ctx.fillStyle = toCss(theme.textMuted);\n\n // x axis\n if (x.visible) {\n ctx.strokeStyle = toCss(theme.axis);\n ctx.beginPath();\n const base = crisp(plot.y + plot.height);\n ctx.moveTo(plot.x, base);\n ctx.lineTo(plot.x + plot.width, base);\n ctx.stroke();\n ctx.textBaseline = \"top\";\n ctx.textAlign = \"center\";\n let lastRight = -Infinity;\n // left to right (reversed axes list their ticks right to left)\n const order = xTicks.values\n .map((v, i) => ({ px: scales.xToPx(v), text: xTicks.labels[i] }))\n .sort((a, b) => a.px - b.px);\n for (const { px, text } of order) {\n if (px < plot.x - 0.5 || px > plot.x + plot.width + 0.5) continue;\n const w = ctx.measureText(text).width;\n const left = Math.max(0, Math.min(input.width - w, px - w / 2));\n if (left < lastRight + 6) continue;\n lastRight = left + w;\n ctx.fillText(text, left + w / 2, plot.y + plot.height + 7);\n }\n if (x.title) {\n ctx.font = font(theme, theme.fontSize + 1, 500);\n ctx.fillStyle = toCss(theme.text, 0.8);\n ctx.fillText(\n x.title,\n plot.x + plot.width / 2,\n plot.y + plot.height + line + 10,\n );\n }\n }\n\n // y axis\n if (y.visible) {\n ctx.font = font(theme);\n ctx.fillStyle = toCss(theme.textMuted);\n ctx.textAlign = \"right\";\n ctx.textBaseline = \"middle\";\n yTicks.values.forEach((v, i) => {\n const py = scales.yToPx(v);\n if (py < plot.y - 0.5 || py > plot.y + plot.height + 0.5) return;\n ctx.fillText(yTicks.labels[i], plot.x - 8, py);\n });\n if (y.title) {\n ctx.save();\n ctx.font = font(theme, theme.fontSize + 1, 500);\n ctx.fillStyle = toCss(theme.text, 0.8);\n ctx.translate(line / 2 + 4, plot.y + plot.height / 2);\n ctx.rotate(-Math.PI / 2);\n ctx.textAlign = \"center\";\n ctx.fillText(y.title, 0, 0);\n ctx.restore();\n }\n }\n};\n\nconst overlaps = (a: Rect, b: Rect) =>\n a.x < b.x + b.width &&\n b.x < a.x + a.width &&\n a.y < b.y + b.height &&\n b.y < a.y + a.height;\n\nconst inside = (r: Rect, plot: Rect) =>\n r.x >= plot.x &&\n r.y >= plot.y &&\n r.x + r.width <= plot.x + plot.width &&\n r.y + r.height <= plot.y + plot.height;\n\n/** Text with a halo in the background color (readable over data) */\nconst haloText = (\n ctx: CanvasRenderingContext2D,\n text: string,\n x: number,\n y: number,\n color: string,\n halo: string,\n) => {\n ctx.lineWidth = 3;\n ctx.lineJoin = \"round\";\n ctx.strokeStyle = halo;\n ctx.strokeText(text, x, y);\n ctx.fillStyle = color;\n ctx.fillText(text, x, y);\n};\n\n/** Greedy placement: right, left, above, below the dot; skipped when no slot is free */\nexport const placeLabels = (\n labels: readonly PointLabel[],\n plot: Rect,\n measure: (text: string) => number,\n height: number,\n occupied: Rect[] = [],\n): { label: PointLabel; box: Rect }[] => {\n const placed: { label: PointLabel; box: Rect }[] = [];\n for (const label of labels) {\n const w = measure(label.text);\n const gap = label.r + 4;\n const above = {\n x: label.x - w / 2,\n y: label.y - gap - height,\n width: w,\n height,\n };\n const below = { x: label.x - w / 2, y: label.y + gap, width: w, height };\n const candidates: Rect[] =\n label.placement === \"above\"\n ? [above]\n : label.placement === \"below\"\n ? [below]\n : [\n { x: label.x + gap, y: label.y - height / 2, width: w, height },\n {\n x: label.x - gap - w,\n y: label.y - height / 2,\n width: w,\n height,\n },\n above,\n below,\n ];\n const box = candidates.find(\n (c) => inside(c, plot) && !occupied.some((o) => overlaps(o, c)),\n );\n if (!box) continue;\n occupied.push(box);\n placed.push({ label, box });\n }\n return placed;\n};\n\nexport interface ForegroundInput {\n width: number;\n height: number;\n scales: Scales;\n theme: ChartTheme;\n annotations: readonly ResolvedAnnotation[];\n pointLabels: readonly PointLabel[];\n /**\n * Clears the canvas first (off when the layers share one canvas)\n * @default true\n */\n clear?: boolean;\n}\n\nexport const drawForeground = (\n ctx: CanvasRenderingContext2D,\n input: ForegroundInput,\n) => {\n const { scales, theme } = input;\n const { plot } = scales;\n if (input.clear !== false) ctx.clearRect(0, 0, input.width, input.height);\n ctx.save();\n ctx.beginPath();\n ctx.rect(plot.x, plot.y, plot.width, plot.height);\n ctx.clip();\n\n const halo = toCss(theme.background, 0.9);\n const occupied: Rect[] = [];\n const labelHeight = theme.fontSize + 4;\n\n for (const a of input.annotations) {\n if (a.type !== \"line\") continue;\n const color = toCss(a.color);\n ctx.strokeStyle = color;\n ctx.lineWidth = a.width;\n ctx.setLineDash(a.dash);\n ctx.beginPath();\n if (a.axis === \"y\") {\n const py = crisp(scales.yToPx(a.value));\n ctx.moveTo(plot.x, py);\n ctx.lineTo(plot.x + plot.width, py);\n ctx.stroke();\n if (a.label) {\n ctx.setLineDash([]);\n ctx.font = font(theme, theme.fontSize, 500);\n ctx.textAlign = \"right\";\n ctx.textBaseline = \"bottom\";\n haloText(ctx, a.label, plot.x + plot.width - 6, py - 3, color, halo);\n }\n } else {\n const px = crisp(scales.xToPx(a.value));\n ctx.moveTo(px, plot.y);\n ctx.lineTo(px, plot.y + plot.height);\n ctx.stroke();\n if (a.label) {\n ctx.setLineDash([]);\n ctx.font = font(theme, theme.fontSize, 500);\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"top\";\n haloText(ctx, a.label, px + 5, plot.y + 5, color, halo);\n }\n }\n }\n ctx.setLineDash([]);\n\n // labels of areas\n ctx.font = font(theme, theme.fontSize + 1, 600);\n for (const a of input.annotations) {\n if (a.type !== \"rect\" || !a.label) continue;\n const r = rectOf(a, scales);\n if (r.width <= 0 || r.height <= 0) continue;\n const pad = 10;\n const w = ctx.measureText(a.label).width;\n const pos = a.labelPosition;\n const tx = pos.endsWith(\"left\")\n ? r.x + pad\n : pos.endsWith(\"right\")\n ? r.x + r.width - pad - w\n : r.x + (r.width - w) / 2;\n const ty = pos.startsWith(\"top\")\n ? r.y + pad\n : pos.startsWith(\"bottom\")\n ? r.y + r.height - pad - labelHeight\n : r.y + (r.height - labelHeight) / 2;\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"top\";\n ctx.fillStyle = toCss(a.labelColor);\n ctx.fillText(a.label, tx, ty);\n occupied.push({ x: tx, y: ty, width: w, height: labelHeight });\n }\n\n // free texts\n for (const a of input.annotations) {\n if (a.type !== \"text\" || !a.text) continue;\n ctx.font = font(theme, theme.fontSize, a.weight);\n const box = textBox(a, scales, ctx.measureText(a.text).width, labelHeight);\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"middle\";\n haloText(ctx, a.text, box.x, box.y + box.height / 2, toCss(a.color), halo);\n occupied.push(box);\n }\n\n // point labels\n if (input.pointLabels.length) {\n ctx.font = font(theme);\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"middle\";\n const textColor = toCss(theme.text, 0.85);\n const placed = placeLabels(\n input.pointLabels,\n plot,\n (t) => ctx.measureText(t).width,\n labelHeight - 2,\n occupied,\n );\n for (const { label, box } of placed) {\n haloText(ctx, label.text, box.x, box.y + box.height / 2, textColor, halo);\n }\n }\n ctx.restore();\n};\n"],"mappings":";;AAuDA,IAAaA,KAAQ,GAAmB,IAAOC,EAAM,UAAU,IAAS,QACtE,GAAGC,EAAO,GAAGC,EAAK,KAAKF,EAAM,cAEzBG,KAAS,MAAc,KAAK,MAAMC,CAAC,IAAI,IAGhCC,KACX,GACA,GACA,GACA,MACS;CACT,IAAM,EAAE,YAASC,GACXC,IAAKC,EAAE,MAAM,KAAA,IAAYC,EAAK,IAAIA,EAAK,QAAQ,IAAIH,EAAE,MAAME,EAAE,CAAC,GAC9DE,IAAKF,EAAE,MAAM,KAAA,IAAYC,EAAK,IAAIA,EAAK,SAAS,IAAIH,EAAE,MAAME,EAAE,CAAC,GAEjEG,IAAIJ,IAAKK,IAAQ,GACjBC,IAAIH,IAAKI,IAAS;CAOtB,OANIN,EAAE,WAAW,QAAO,IAAIE,IAAK,IACxBF,EAAE,WAAW,WAAU,IAAIE,IAAK,IAAMI,IACtCN,EAAE,WAAW,SAAQ,IAAID,IAAK,IAC9BC,EAAE,WAAW,YAAS,IAAID,IAAK,IAAMK,IAC9C,IAAI,KAAK,IAAIH,EAAK,IAAI,GAAK,KAAK,IAAIE,GAAGF,EAAK,IAAIA,EAAK,QAAQ,IAAMG,CAAK,CAAC,GACzE,IAAI,KAAK,IAAIH,EAAK,IAAI,GAAG,KAAK,IAAII,GAAGJ,EAAK,IAAIA,EAAK,SAAS,IAAIK,CAAM,CAAC,GAChE;EAAE;EAAG;EAAG;EAAO;CAAO;AAC/B,GAEMC,KAAU,GAAiB,MAAoB;CACnD,IAAM,EAAE,YAAST,GACXU,IAAKR,EAAE,OAAO,KAAA,IAAY,YAAYF,EAAE,MAAME,EAAE,EAAE,GAClDS,IAAKT,EAAE,OAAO,KAAA,IAAY,WAAWF,EAAE,MAAME,EAAE,EAAE,GACjDU,IAAKV,EAAE,OAAO,KAAA,IAAY,WAAWF,EAAE,MAAME,EAAE,EAAE,GACjDW,IAAKX,EAAE,OAAO,KAAA,IAAY,YAAYF,EAAE,MAAME,EAAE,EAAE,GAClDY,IAAO,KAAK,IAAIX,EAAK,GAAG,KAAK,IAAIO,GAAIC,CAAE,CAAC,GACxCI,IAAQ,KAAK,IAAIZ,EAAK,IAAIA,EAAK,OAAO,KAAK,IAAIO,GAAIC,CAAE,CAAC,GACtDK,IAAM,KAAK,IAAIb,EAAK,GAAG,KAAK,IAAIS,GAAIC,CAAE,CAAC,GACvCI,IAAS,KAAK,IAAId,EAAK,IAAIA,EAAK,QAAQ,KAAK,IAAIS,GAAIC,CAAE,CAAC;CAC9D,OAAO;EAAE,GAAGC;EAAM,GAAGE;EAAK,OAAOD,IAAQD;EAAM,QAAQG,IAASD;CAAI;AACtE,GAcaE,KACX,GACA,MACG;CACH,IAAM,EAAE,WAAQ,UAAO,MAAG,MAAG,WAAQ,cAAWC,GAC1C,EAAE,YAASC;CAOjB,AANAC,EAAI,UAAU,GAAG,GAAGF,EAAM,OAAOA,EAAM,MAAM,GAG7CE,EAAI,KAAK,GACTA,EAAI,UAAU,GACdA,EAAI,KAAKlB,EAAK,GAAGA,EAAK,GAAGA,EAAK,OAAOA,EAAK,MAAM,GAChDkB,EAAI,KAAK;CACT,KAAK,IAAMnB,KAAKiB,EAAM,aAAa;EACjC,IAAIjB,EAAE,SAAS,QAAQ;EACvB,IAAMoB,IAAIb,EAAOP,GAAGkB,CAAM;EAC1B,AAAIE,EAAE,SAAS,KAAKA,EAAE,UAAU,MAChC,EAAI,YAAYC,EAAMrB,EAAE,OAAOA,EAAE,OAAO,GACxCmB,EAAI,SAASC,EAAE,GAAGA,EAAE,GAAGA,EAAE,OAAOA,EAAE,MAAM;CAC1C;CAOA,IANAD,EAAI,QAAQ,GAGZ,EAAI,YAAY,GAChB,EAAI,cAAcE,EAAM7B,EAAM,IAAI,GAClC2B,EAAI,UAAU,GACVd,EAAE,MACJ,KAAK,IAAMT,KAAK0B,EAAO,QAAQ;EAC7B,IAAMpB,IAAKP,EAAMuB,EAAO,MAAMtB,CAAC,CAAC;EAChC,AAAIM,IAAKD,EAAK,IAAI,KAAKC,IAAKD,EAAK,IAAIA,EAAK,SAAS,MACnDkB,EAAI,OAAOlB,EAAK,GAAGC,CAAE,GACrBiB,EAAI,OAAOlB,EAAK,IAAIA,EAAK,OAAOC,CAAE;CACpC;CAEF,IAAIC,EAAE,MACJ,KAAK,IAAMP,KAAK2B,EAAO,QAAQ;EAC7B,IAAMxB,IAAKJ,EAAMuB,EAAO,MAAMtB,CAAC,CAAC;EAChC,AAAIG,IAAKE,EAAK,IAAI,KAAKF,IAAKE,EAAK,IAAIA,EAAK,QAAQ,MAClDkB,EAAI,OAAOpB,GAAIE,EAAK,CAAC,GACrBkB,EAAI,OAAOpB,GAAIE,EAAK,IAAIA,EAAK,MAAM;CACrC;CAEF,EAAI,OAAO;CAEX,IAAMuB,IAAO,KAAK,KAAKhC,EAAM,WAAW,GAAG;CAK3C,IAJA,EAAI,OAAOD,EAAKC,CAAK,GACrB,EAAI,YAAY6B,EAAM7B,EAAM,SAAS,GAGjCW,EAAE,SAAS;EAEb,AADA,EAAI,cAAckB,EAAM7B,EAAM,IAAI,GAClC2B,EAAI,UAAU;EACd,IAAMM,IAAO9B,EAAMM,EAAK,IAAIA,EAAK,MAAM;EAKvC,AAJAkB,EAAI,OAAOlB,EAAK,GAAGwB,CAAI,GACvBN,EAAI,OAAOlB,EAAK,IAAIA,EAAK,OAAOwB,CAAI,GACpCN,EAAI,OAAO,GACX,EAAI,eAAe,OACnB,EAAI,YAAY;EAChB,IAAIO,IAAY,WAEVC,IAAQJ,EAAO,OAClB,KAAK,GAAG,OAAO;GAAE,IAAIL,EAAO,MAAMtB,CAAC;GAAG,MAAM2B,EAAO,OAAOK;EAAG,EAAE,CAAC,CAChE,MAAM,GAAG,MAAM5B,EAAE,KAAK6B,EAAE,EAAE;EAC7B,KAAK,IAAM,EAAE,OAAI,aAAUF,GAAO;GAChC,IAAI5B,IAAKE,EAAK,IAAI,MAAOF,IAAKE,EAAK,IAAIA,EAAK,QAAQ,IAAK;GACzD,IAAM6B,IAAIX,EAAI,YAAYY,CAAI,CAAC,CAAC,OAC1BnB,IAAO,KAAK,IAAI,GAAG,KAAK,IAAIK,EAAM,QAAQa,GAAG/B,IAAK+B,IAAI,CAAC,CAAC;GAC9D,AAAIlB,IAAOc,IAAY,MACvB,IAAYd,IAAOkB,GACnBX,EAAI,SAASY,GAAMnB,IAAOkB,IAAI,GAAG7B,EAAK,IAAIA,EAAK,SAAS,CAAC;EAC3D;EACA,AAAIE,EAAE,UACJ,EAAI,OAAOZ,EAAKC,GAAOA,EAAM,WAAW,GAAG,GAAG,GAC9C,EAAI,YAAY6B,EAAM7B,EAAM,MAAM,EAAG,GACrC2B,EAAI,SACFhB,EAAE,OACFF,EAAK,IAAIA,EAAK,QAAQ,GACtBA,EAAK,IAAIA,EAAK,SAASuB,IAAO,EAChC;CAEJ;CAGA,AAAInB,EAAE,YACJ,EAAI,OAAOd,EAAKC,CAAK,GACrB,EAAI,YAAY6B,EAAM7B,EAAM,SAAS,GACrC,EAAI,YAAY,SAChB,EAAI,eAAe,UACnB8B,EAAO,OAAO,SAAS,GAAG,MAAM;EAC9B,IAAMpB,IAAKgB,EAAO,MAAMtB,CAAC;EACzB,AAAIM,IAAKD,EAAK,IAAI,MAAOC,IAAKD,EAAK,IAAIA,EAAK,SAAS,MACrDkB,EAAI,SAASG,EAAO,OAAOM,IAAI3B,EAAK,IAAI,GAAGC,CAAE;CAC/C,CAAC,GACGG,EAAE,UACJc,EAAI,KAAK,GACT,EAAI,OAAO5B,EAAKC,GAAOA,EAAM,WAAW,GAAG,GAAG,GAC9C,EAAI,YAAY6B,EAAM7B,EAAM,MAAM,EAAG,GACrC2B,EAAI,UAAUK,IAAO,IAAI,GAAGvB,EAAK,IAAIA,EAAK,SAAS,CAAC,GACpDkB,EAAI,OAAO,CAAC,KAAK,KAAK,CAAC,GACvB,EAAI,YAAY,UAChBA,EAAI,SAASd,EAAE,OAAO,GAAG,CAAC,GAC1Bc,EAAI,QAAQ;AAGlB,GAEMa,KAAY,GAAS,MACzBhC,EAAE,IAAI6B,EAAE,IAAIA,EAAE,SACdA,EAAE,IAAI7B,EAAE,IAAIA,EAAE,SACdA,EAAE,IAAI6B,EAAE,IAAIA,EAAE,UACdA,EAAE,IAAI7B,EAAE,IAAIA,EAAE,QAEViC,KAAU,GAAS,MACvBb,EAAE,KAAKnB,EAAK,KACZmB,EAAE,KAAKnB,EAAK,KACZmB,EAAE,IAAIA,EAAE,SAASnB,EAAK,IAAIA,EAAK,SAC/BmB,EAAE,IAAIA,EAAE,UAAUnB,EAAK,IAAIA,EAAK,QAG5BiC,KACJ,GACA,GACA,GACA,GACA,GACA,MACG;CAMH,AALA,EAAI,YAAY,GAChB,EAAI,WAAW,SACf,EAAI,cAAcC,GAClBhB,EAAI,WAAWY,GAAM5B,GAAGE,CAAC,GACzB,EAAI,YAAY+B,GAChBjB,EAAI,SAASY,GAAM5B,GAAGE,CAAC;AACzB,GAGagC,KACX,GACA,GACA,GACA,GACA,IAAmB,CAAC,MACmB;CACvC,IAAMC,IAA6C,CAAC;CACpD,KAAK,IAAMC,KAASC,GAAQ;EAC1B,IAAMV,IAAIW,EAAQF,EAAM,IAAI,GACtBG,IAAMH,EAAM,IAAI,GAChBI,IAAQ;GACZ,GAAGJ,EAAM,IAAIT,IAAI;GACjB,GAAGS,EAAM,IAAIG,IAAMpC;GACnB,OAAOwB;GACP;EACF,GACMc,IAAQ;GAAE,GAAGL,EAAM,IAAIT,IAAI;GAAG,GAAGS,EAAM,IAAIG;GAAK,OAAOZ;GAAG;EAAO,GAiBjEe,KAfJN,EAAM,cAAc,UAChB,CAACI,CAAK,IACNJ,EAAM,cAAc,UAClB,CAACK,CAAK,IACN;GACE;IAAE,GAAGL,EAAM,IAAIG;IAAK,GAAGH,EAAM,IAAIjC,IAAS;IAAG,OAAOwB;IAAG;GAAO;GAC9D;IACE,GAAGS,EAAM,IAAIG,IAAMZ;IACnB,GAAGS,EAAM,IAAIjC,IAAS;IACtB,OAAOwB;IACP;GACF;GACAa;GACAC;EACF,EAAA,CACe,MACpB,MAAMX,EAAOa,GAAG7C,CAAI,KAAK,CAAC8C,EAAS,MAAM,MAAMf,EAASgB,GAAGF,CAAC,CAAC,CAChE;EACA,AAAKD,MACLE,EAAS,KAAKF,CAAG,GACjBP,EAAO,KAAK;GAAE;GAAO;EAAI,CAAC;CAC5B;CACA,OAAOA;AACT,GAgBaW,KACX,GACA,MACG;CACH,IAAM,EAAE,WAAQ,aAAUhC,GACpB,EAAE,YAASC;CAKjB,AAJID,EAAM,UAAU,MAAOE,EAAI,UAAU,GAAG,GAAGF,EAAM,OAAOA,EAAM,MAAM,GACxEE,EAAI,KAAK,GACTA,EAAI,UAAU,GACdA,EAAI,KAAKlB,EAAK,GAAGA,EAAK,GAAGA,EAAK,OAAOA,EAAK,MAAM,GAChDkB,EAAI,KAAK;CAET,IAAMgB,IAAOd,EAAM7B,EAAM,YAAY,EAAG,GAClCuD,IAAmB,CAAC,GACpBG,IAAc1D,EAAM,WAAW;CAErC,KAAK,IAAMQ,KAAKiB,EAAM,aAAa;EACjC,IAAIjB,EAAE,SAAS,QAAQ;EACvB,IAAMoC,IAAQf,EAAMrB,EAAE,KAAK;EAK3B,IAJA,EAAI,cAAcoC,GAClB,EAAI,YAAYpC,EAAE,OAClBmB,EAAI,YAAYnB,EAAE,IAAI,GACtBmB,EAAI,UAAU,GACVnB,EAAE,SAAS,KAAK;GAClB,IAAME,IAAKP,EAAMuB,EAAO,MAAMlB,EAAE,KAAK,CAAC;GAItC,AAHAmB,EAAI,OAAOlB,EAAK,GAAGC,CAAE,GACrBiB,EAAI,OAAOlB,EAAK,IAAIA,EAAK,OAAOC,CAAE,GAClCiB,EAAI,OAAO,GACPnB,EAAE,UACJmB,EAAI,YAAY,CAAC,CAAC,GAClB,EAAI,OAAO5B,EAAKC,GAAOA,EAAM,UAAU,GAAG,GAC1C,EAAI,YAAY,SAChB,EAAI,eAAe,UACnB0C,EAASf,GAAKnB,EAAE,OAAOC,EAAK,IAAIA,EAAK,QAAQ,GAAGC,IAAK,GAAGkC,GAAOD,CAAI;EAEvE,OAAO;GACL,IAAMpC,IAAKJ,EAAMuB,EAAO,MAAMlB,EAAE,KAAK,CAAC;GAItC,AAHAmB,EAAI,OAAOpB,GAAIE,EAAK,CAAC,GACrBkB,EAAI,OAAOpB,GAAIE,EAAK,IAAIA,EAAK,MAAM,GACnCkB,EAAI,OAAO,GACPnB,EAAE,UACJmB,EAAI,YAAY,CAAC,CAAC,GAClB,EAAI,OAAO5B,EAAKC,GAAOA,EAAM,UAAU,GAAG,GAC1C,EAAI,YAAY,QAChB,EAAI,eAAe,OACnB0C,EAASf,GAAKnB,EAAE,OAAOD,IAAK,GAAGE,EAAK,IAAI,GAAGmC,GAAOD,CAAI;EAE1D;CACF;CAIA,AAHAhB,EAAI,YAAY,CAAC,CAAC,GAGlB,EAAI,OAAO5B,EAAKC,GAAOA,EAAM,WAAW,GAAG,GAAG;CAC9C,KAAK,IAAMQ,KAAKiB,EAAM,aAAa;EACjC,IAAIjB,EAAE,SAAS,UAAU,CAACA,EAAE,OAAO;EACnC,IAAMoB,IAAIb,EAAOP,GAAGkB,CAAM;EAC1B,IAAIE,EAAE,SAAS,KAAKA,EAAE,UAAU,GAAG;EACnC,IACMU,IAAIX,EAAI,YAAYnB,EAAE,KAAK,CAAC,CAAC,OAC7BmD,IAAMnD,EAAE,eACRoD,IAAKD,EAAI,SAAS,MAAM,IAC1B/B,EAAE,IAAI,KACN+B,EAAI,SAAS,OAAO,IAClB/B,EAAE,IAAIA,EAAE,QAAQ,KAAMU,IACtBV,EAAE,KAAKA,EAAE,QAAQU,KAAK,GACtBuB,IAAKF,EAAI,WAAW,KAAK,IAC3B/B,EAAE,IAAI,KACN+B,EAAI,WAAW,QAAQ,IACrB/B,EAAE,IAAIA,EAAE,SAAS,KAAM8B,IACvB9B,EAAE,KAAKA,EAAE,SAAS8B,KAAe;EAKvC,AAJA,EAAI,YAAY,QAChB,EAAI,eAAe,OACnB,EAAI,YAAY7B,EAAMrB,EAAE,UAAU,GAClCmB,EAAI,SAASnB,EAAE,OAAOoD,GAAIC,CAAE,GAC5BN,EAAS,KAAK;GAAE,GAAGK;GAAI,GAAGC;GAAI,OAAOvB;GAAG,QAAQoB;EAAY,CAAC;CAC/D;CAGA,KAAK,IAAMlD,KAAKiB,EAAM,aAAa;EACjC,IAAIjB,EAAE,SAAS,UAAU,CAACA,EAAE,MAAM;EAClC,EAAI,OAAOT,EAAKC,GAAOA,EAAM,UAAUQ,EAAE,MAAM;EAC/C,IAAM6C,IAAMhD,EAAQG,GAAGkB,GAAQC,EAAI,YAAYnB,EAAE,IAAI,CAAC,CAAC,OAAOkD,CAAW;EAIzE,AAHA,EAAI,YAAY,QAChB,EAAI,eAAe,UACnBhB,EAASf,GAAKnB,EAAE,MAAM6C,EAAI,GAAGA,EAAI,IAAIA,EAAI,SAAS,GAAGxB,EAAMrB,EAAE,KAAK,GAAGmC,CAAI,GACzEY,EAAS,KAAKF,CAAG;CACnB;CAGA,IAAI5B,EAAM,YAAY,QAAQ;EAG5B,AAFA,EAAI,OAAO1B,EAAKC,CAAK,GACrB,EAAI,YAAY,QAChB,EAAI,eAAe;EACnB,IAAM8D,IAAYjC,EAAM7B,EAAM,MAAM,GAAI,GAClC8C,IAASD,EACbpB,EAAM,aACNhB,IACC,MAAMkB,EAAI,YAAYoC,CAAC,CAAC,CAAC,OAC1BL,IAAc,GACdH,CACF;EACA,KAAK,IAAM,EAAE,UAAO,YAAST,GAC3B,EAASnB,GAAKoB,EAAM,MAAMM,EAAI,GAAGA,EAAI,IAAIA,EAAI,SAAS,GAAGS,GAAWnB,CAAI;CAE5E;CACA,EAAI,QAAQ;AACd"}
|
|
1
|
+
{"version":3,"file":"overlay.js","names":["font","theme","weight","size","crisp","v","textBox","s","at","toScreen","a","free","px","plot","py","x","width","y","height","rectOf","xLo","xHi","yLo","yHi","along","lo","hi","screenRect","lineOf","drawBackground","input","scales","bottomTicks","yTicks","xTicks","leftTicks","bottomPx","leftPx","ctx","r","toCss","line","base","lastRight","order","i","b","w","text","left","lastBottom","rows","rowHeight","y2","y2Ticks","right","overlaps","inside","haloText","halo","color","placeLabels","placed","label","labels","measure","gap","above","below","box","c","occupied","o","drawForeground","labelHeight","where","pos","tx","ty","textColor","t"],"sources":["../../../../charts/src/engine/overlay.ts"],"sourcesContent":["// Canvas2D layers around the data: background (areas, grid, axes, tick\n// labels) and foreground (reference lines, annotation and point labels).\n\nimport { toCss, type Rgba } from \"./color\";\nimport type { AxisTicks } from \"./axis\";\nimport { screenRect, toScreen, type Rect, type Scales } from \"./layout\";\nimport type { AxisModel } from \"./model\";\nimport type { ChartTheme } from \"./theme\";\nimport type { ChartLabelPosition } from \"./types\";\n\nexport interface ResolvedRect {\n type: \"rect\";\n x0?: number;\n x1?: number;\n y0?: number;\n y1?: number;\n color: Rgba;\n opacity: number;\n label?: string;\n labelPosition: ChartLabelPosition;\n labelColor: Rgba;\n}\n\nexport interface ResolvedLine {\n type: \"line\";\n axis: \"x\" | \"y\";\n value: number;\n color: Rgba;\n width: number;\n dash: number[];\n label?: string;\n}\n\nexport interface ResolvedText {\n type: \"text\";\n x?: number;\n y?: number;\n text: string;\n anchor: \"center\" | \"top\" | \"bottom\" | \"left\" | \"right\";\n color: Rgba;\n weight: number;\n}\n\nexport type ResolvedAnnotation = ResolvedRect | ResolvedLine | ResolvedText;\n\nexport interface PointLabel {\n x: number;\n y: number;\n /** Radius of the dot */\n r: number;\n text: string;\n /**\n * Fixed side (bar values: above / below, left / right of horizontal\n * bars); any free side around the dot otherwise\n */\n placement?: \"above\" | \"below\" | \"left\" | \"right\";\n}\n\nexport const font = (theme: ChartTheme, size = theme.fontSize, weight = 400) =>\n `${weight} ${size}px ${theme.fontFamily}`;\n\nconst crisp = (v: number) => Math.round(v) + 0.5;\n\n/** Box of a text annotation, kept inside the plot */\nexport const textBox = (\n a: ResolvedText,\n s: Scales,\n width: number,\n height: number,\n): Rect => {\n const { plot } = s;\n const at = toScreen(s, a.x ?? 0, a.y ?? 0);\n const free = s.horizontal\n ? { x: a.y === undefined, y: a.x === undefined }\n : { x: a.x === undefined, y: a.y === undefined };\n const px = free.x ? plot.x + plot.width / 2 : at.x;\n const py = free.y ? plot.y + plot.height / 2 : at.y;\n const gap = 6;\n let x = px - width / 2;\n let y = py - height / 2;\n if (a.anchor === \"top\") y = py + gap;\n else if (a.anchor === \"bottom\") y = py - gap - height;\n else if (a.anchor === \"left\") x = px + gap;\n else if (a.anchor === \"right\") x = px - gap - width;\n x = Math.max(plot.x + gap, Math.min(x, plot.x + plot.width - gap - width));\n y = Math.max(plot.y + 2, Math.min(y, plot.y + plot.height - 2 - height));\n return { x, y, width, height };\n};\n\n/** Screen box of an area annotation, clipped to the plot */\nexport const rectOf = (a: ResolvedRect, s: Scales): Rect => {\n const { plot } = s;\n // clamp every edge to the plot first: an open edge maps to ±Infinity and\n // `Infinity - Infinity` would make the size NaN (nothing drawn)\n const [xLo, xHi] = s.horizontal\n ? [plot.y, plot.y + plot.height]\n : [plot.x, plot.x + plot.width];\n const [yLo, yHi] = s.horizontal\n ? [plot.x, plot.x + plot.width]\n : [plot.y, plot.y + plot.height];\n const along = (px: number, lo: number, hi: number) =>\n px < lo ? lo : px > hi ? hi : px;\n return screenRect(\n s,\n along(s.xToPx(a.x0 ?? -Infinity), xLo, xHi),\n along(s.xToPx(a.x1 ?? Infinity), xLo, xHi),\n along(s.yToPx(a.y0 ?? -Infinity), yLo, yHi),\n along(s.yToPx(a.y1 ?? Infinity), yLo, yHi),\n );\n};\n\n/**\n * Where a reference line goes: `vertical` lines run at screen x `at`,\n * horizontal ones at screen y `at`\n */\nexport const lineOf = (\n a: ResolvedLine,\n s: Scales,\n): { vertical: boolean; at: number } => {\n const vertical = (a.axis === \"x\") !== s.horizontal;\n return {\n vertical,\n at: a.axis === \"x\" ? s.xToPx(a.value) : s.yToPx(a.value),\n };\n};\n\nexport interface BackgroundInput {\n width: number;\n height: number;\n scales: Scales;\n x: AxisModel;\n y: AxisModel;\n xTicks: AxisTicks;\n yTicks: AxisTicks;\n /** Right axis (dual axis charts) */\n y2?: AxisModel | null;\n y2Ticks?: AxisTicks | null;\n theme: ChartTheme;\n annotations: readonly ResolvedAnnotation[];\n}\n\nexport const drawBackground = (\n ctx: CanvasRenderingContext2D,\n input: BackgroundInput,\n) => {\n const { scales, theme, xTicks, yTicks } = input;\n const { plot } = scales;\n // horizontal charts: the value axis along the bottom, the x axis on the left\n const x = scales.horizontal ? input.y : input.x;\n const y = scales.horizontal ? input.x : input.y;\n const bottomTicks = scales.horizontal ? yTicks : xTicks;\n const leftTicks = scales.horizontal ? xTicks : yTicks;\n const bottomPx = scales.horizontal ? scales.yToPx : scales.xToPx;\n const leftPx = scales.horizontal ? scales.xToPx : scales.yToPx;\n ctx.clearRect(0, 0, input.width, input.height);\n\n // areas\n ctx.save();\n ctx.beginPath();\n ctx.rect(plot.x, plot.y, plot.width, plot.height);\n ctx.clip();\n for (const a of input.annotations) {\n if (a.type !== \"rect\") continue;\n const r = rectOf(a, scales);\n if (r.width <= 0 || r.height <= 0) continue;\n ctx.fillStyle = toCss(a.color, a.opacity);\n ctx.fillRect(r.x, r.y, r.width, r.height);\n }\n ctx.restore();\n\n // grid\n ctx.lineWidth = 1;\n ctx.strokeStyle = toCss(theme.grid);\n ctx.beginPath();\n if (y.grid) {\n for (const v of leftTicks.values) {\n const py = crisp(leftPx(v));\n if (py < plot.y - 1 || py > plot.y + plot.height + 1) continue;\n ctx.moveTo(plot.x, py);\n ctx.lineTo(plot.x + plot.width, py);\n }\n }\n if (x.grid) {\n for (const v of bottomTicks.values) {\n const px = crisp(bottomPx(v));\n if (px < plot.x - 1 || px > plot.x + plot.width + 1) continue;\n ctx.moveTo(px, plot.y);\n ctx.lineTo(px, plot.y + plot.height);\n }\n }\n ctx.stroke();\n\n const line = Math.ceil(theme.fontSize * 1.4);\n ctx.font = font(theme);\n ctx.fillStyle = toCss(theme.textMuted);\n\n // x axis\n if (x.visible) {\n ctx.strokeStyle = toCss(theme.axis);\n ctx.beginPath();\n const base = crisp(plot.y + plot.height);\n ctx.moveTo(plot.x, base);\n ctx.lineTo(plot.x + plot.width, base);\n ctx.stroke();\n ctx.textBaseline = \"top\";\n ctx.textAlign = \"center\";\n let lastRight = -Infinity;\n // left to right (reversed axes list their ticks right to left)\n const order = bottomTicks.values\n .map((v, i) => ({ px: bottomPx(v), text: bottomTicks.labels[i] }))\n .sort((a, b) => a.px - b.px);\n for (const { px, text } of order) {\n if (px < plot.x - 0.5 || px > plot.x + plot.width + 0.5) continue;\n const w = ctx.measureText(text).width;\n const left = Math.max(0, Math.min(input.width - w, px - w / 2));\n if (left < lastRight + 6) continue;\n lastRight = left + w;\n ctx.fillText(text, left + w / 2, plot.y + plot.height + 7);\n }\n if (x.title) {\n ctx.font = font(theme, theme.fontSize + 1, 500);\n ctx.fillStyle = toCss(theme.text, 0.8);\n ctx.fillText(\n x.title,\n plot.x + plot.width / 2,\n plot.y + plot.height + line + 10,\n );\n }\n }\n\n // y axis\n if (y.visible) {\n ctx.font = font(theme);\n ctx.fillStyle = toCss(theme.textMuted);\n ctx.textAlign = \"right\";\n ctx.textBaseline = \"middle\";\n let lastBottom = -Infinity;\n // top to bottom: category rows of horizontal charts never overlap\n const rows = leftTicks.values\n .map((v, i) => ({ py: leftPx(v), text: leftTicks.labels[i] }))\n .sort((a, b) => a.py - b.py);\n const rowHeight = theme.fontSize + 2;\n for (const { py, text } of rows) {\n if (py < plot.y - 0.5 || py > plot.y + plot.height + 0.5) continue;\n if (scales.horizontal) {\n if (py - rowHeight / 2 < lastBottom) continue;\n lastBottom = py + rowHeight / 2;\n }\n ctx.fillText(text, plot.x - 8, py);\n }\n if (y.title) {\n ctx.save();\n ctx.font = font(theme, theme.fontSize + 1, 500);\n ctx.fillStyle = toCss(theme.text, 0.8);\n ctx.translate(line / 2 + 4, plot.y + plot.height / 2);\n ctx.rotate(-Math.PI / 2);\n ctx.textAlign = \"center\";\n ctx.fillText(y.title, 0, 0);\n ctx.restore();\n }\n }\n\n // right axis\n const y2 = scales.horizontal ? null : input.y2;\n const y2Ticks = input.y2Ticks;\n if (y2 && y2Ticks && y2.visible) {\n const right = plot.x + plot.width;\n ctx.font = font(theme);\n ctx.fillStyle = toCss(theme.textMuted);\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"middle\";\n y2Ticks.values.forEach((v, i) => {\n const py = scales.yToPx(v);\n if (py < plot.y - 0.5 || py > plot.y + plot.height + 0.5) return;\n ctx.fillText(y2Ticks.labels[i], right + 8, py);\n });\n if (y2.title) {\n ctx.save();\n ctx.font = font(theme, theme.fontSize + 1, 500);\n ctx.fillStyle = toCss(theme.text, 0.8);\n ctx.translate(input.width - line / 2 - 4, plot.y + plot.height / 2);\n ctx.rotate(Math.PI / 2);\n ctx.textAlign = \"center\";\n ctx.fillText(y2.title, 0, 0);\n ctx.restore();\n }\n }\n};\n\nconst overlaps = (a: Rect, b: Rect) =>\n a.x < b.x + b.width &&\n b.x < a.x + a.width &&\n a.y < b.y + b.height &&\n b.y < a.y + a.height;\n\nconst inside = (r: Rect, plot: Rect) =>\n r.x >= plot.x &&\n r.y >= plot.y &&\n r.x + r.width <= plot.x + plot.width &&\n r.y + r.height <= plot.y + plot.height;\n\n/** Text with a halo in the background color (readable over data) */\nconst haloText = (\n ctx: CanvasRenderingContext2D,\n text: string,\n x: number,\n y: number,\n color: string,\n halo: string,\n) => {\n ctx.lineWidth = 3;\n ctx.lineJoin = \"round\";\n ctx.strokeStyle = halo;\n ctx.strokeText(text, x, y);\n ctx.fillStyle = color;\n ctx.fillText(text, x, y);\n};\n\n/** Greedy placement: right, left, above, below the dot; skipped when no slot is free */\nexport const placeLabels = (\n labels: readonly PointLabel[],\n plot: Rect,\n measure: (text: string) => number,\n height: number,\n occupied: Rect[] = [],\n): { label: PointLabel; box: Rect }[] => {\n const placed: { label: PointLabel; box: Rect }[] = [];\n for (const label of labels) {\n const w = measure(label.text);\n const gap = label.r + 4;\n const above = {\n x: label.x - w / 2,\n y: label.y - gap - height,\n width: w,\n height,\n };\n const below = { x: label.x - w / 2, y: label.y + gap, width: w, height };\n const right = {\n x: label.x + gap,\n y: label.y - height / 2,\n width: w,\n height,\n };\n const left = {\n x: label.x - gap - w,\n y: label.y - height / 2,\n width: w,\n height,\n };\n const candidates: Rect[] =\n label.placement === \"above\"\n ? [above]\n : label.placement === \"below\"\n ? [below]\n : label.placement === \"right\"\n ? [right, left]\n : label.placement === \"left\"\n ? [left, right]\n : [\n {\n x: label.x + gap,\n y: label.y - height / 2,\n width: w,\n height,\n },\n {\n x: label.x - gap - w,\n y: label.y - height / 2,\n width: w,\n height,\n },\n above,\n below,\n ];\n const box = candidates.find(\n (c) => inside(c, plot) && !occupied.some((o) => overlaps(o, c)),\n );\n if (!box) continue;\n occupied.push(box);\n placed.push({ label, box });\n }\n return placed;\n};\n\nexport interface ForegroundInput {\n width: number;\n height: number;\n scales: Scales;\n theme: ChartTheme;\n annotations: readonly ResolvedAnnotation[];\n pointLabels: readonly PointLabel[];\n /**\n * Clears the canvas first (off when the layers share one canvas)\n * @default true\n */\n clear?: boolean;\n}\n\nexport const drawForeground = (\n ctx: CanvasRenderingContext2D,\n input: ForegroundInput,\n) => {\n const { scales, theme } = input;\n const { plot } = scales;\n if (input.clear !== false) ctx.clearRect(0, 0, input.width, input.height);\n ctx.save();\n ctx.beginPath();\n ctx.rect(plot.x, plot.y, plot.width, plot.height);\n ctx.clip();\n\n const halo = toCss(theme.background, 0.9);\n const occupied: Rect[] = [];\n const labelHeight = theme.fontSize + 4;\n\n for (const a of input.annotations) {\n if (a.type !== \"line\") continue;\n const color = toCss(a.color);\n ctx.strokeStyle = color;\n ctx.lineWidth = a.width;\n ctx.setLineDash(a.dash);\n ctx.beginPath();\n const where = lineOf(a, scales);\n if (!where.vertical) {\n const py = crisp(where.at);\n ctx.moveTo(plot.x, py);\n ctx.lineTo(plot.x + plot.width, py);\n ctx.stroke();\n if (a.label) {\n ctx.setLineDash([]);\n ctx.font = font(theme, theme.fontSize, 500);\n ctx.textAlign = \"right\";\n ctx.textBaseline = \"bottom\";\n haloText(ctx, a.label, plot.x + plot.width - 6, py - 3, color, halo);\n }\n } else {\n const px = crisp(where.at);\n ctx.moveTo(px, plot.y);\n ctx.lineTo(px, plot.y + plot.height);\n ctx.stroke();\n if (a.label) {\n ctx.setLineDash([]);\n ctx.font = font(theme, theme.fontSize, 500);\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"top\";\n haloText(ctx, a.label, px + 5, plot.y + 5, color, halo);\n }\n }\n }\n ctx.setLineDash([]);\n\n // labels of areas\n ctx.font = font(theme, theme.fontSize + 1, 600);\n for (const a of input.annotations) {\n if (a.type !== \"rect\" || !a.label) continue;\n const r = rectOf(a, scales);\n if (r.width <= 0 || r.height <= 0) continue;\n const pad = 10;\n const w = ctx.measureText(a.label).width;\n const pos = a.labelPosition;\n const tx = pos.endsWith(\"left\")\n ? r.x + pad\n : pos.endsWith(\"right\")\n ? r.x + r.width - pad - w\n : r.x + (r.width - w) / 2;\n const ty = pos.startsWith(\"top\")\n ? r.y + pad\n : pos.startsWith(\"bottom\")\n ? r.y + r.height - pad - labelHeight\n : r.y + (r.height - labelHeight) / 2;\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"top\";\n ctx.fillStyle = toCss(a.labelColor);\n ctx.fillText(a.label, tx, ty);\n occupied.push({ x: tx, y: ty, width: w, height: labelHeight });\n }\n\n // free texts\n for (const a of input.annotations) {\n if (a.type !== \"text\" || !a.text) continue;\n ctx.font = font(theme, theme.fontSize, a.weight);\n const box = textBox(a, scales, ctx.measureText(a.text).width, labelHeight);\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"middle\";\n haloText(ctx, a.text, box.x, box.y + box.height / 2, toCss(a.color), halo);\n occupied.push(box);\n }\n\n // point labels\n if (input.pointLabels.length) {\n ctx.font = font(theme);\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"middle\";\n const textColor = toCss(theme.text, 0.85);\n const placed = placeLabels(\n input.pointLabels,\n plot,\n (t) => ctx.measureText(t).width,\n labelHeight - 2,\n occupied,\n );\n for (const { label, box } of placed) {\n haloText(ctx, label.text, box.x, box.y + box.height / 2, textColor, halo);\n }\n }\n ctx.restore();\n};\n"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var e=(e,t,n,r)=>e.map(e=>{let i=e.type??t;return{...e,type:i,...n!==void 0&&i===t?{stack:e.stack??n}:{},...r!==void 0&&(i===`line`||i===`area`)?{curve:e.curve??r}:{}}}),
|
|
2
|
-
`)}}),xAxis:{min:n,max:r,title:e.xLabel,reverse:
|
|
1
|
+
const e=require("./locale.cjs"),t=require("./scale.cjs");var n={en:{value:`Value`,values:`Values`,count:`Count`,change:`Change`,tasks:`Tasks`,progress:`Progress`,milestones:`Milestones`},zh:{value:`数值`,values:`数值`,count:`数量`,change:`变化`,tasks:`任务`,progress:`进度`,milestones:`里程碑`},ja:{value:`値`,values:`値`,count:`件数`,change:`増減`,tasks:`タスク`,progress:`進捗`,milestones:`マイルストーン`},fr:{value:`Valeur`,values:`Valeurs`,count:`Effectif`,change:`Variation`,tasks:`Tâches`,progress:`Avancement`,milestones:`Jalons`}},r=t=>e.localeLabels(n,t),i=(e,t,n,r)=>e.map(e=>{let i=e.type??t;return{...e,type:i,...n!==void 0&&i===t?{stack:e.stack??n}:{},...r!==void 0&&(i===`line`||i===`area`)?{curve:e.curve??r}:{}}}),a=(e,t=!1,n={})=>i(e,t?`area`:`line`,n.stacked?`stack`:void 0,n.curve),o=(e,t={})=>a(e,!0,t),s=(e,t=!1,n=!1)=>i(e,`bar`,t?`stack`:void 0).map(e=>n&&e.type===`bar`?{...e,showLabels:e.showLabels??!0}:e),c=e=>i(e,`scatter`),l=e=>i(e,`candlestick`),u=(e,t={})=>{let n=e.data.some(e=>typeof e.x==`number`),i=e.data.some(e=>typeof e.y==`number`);return{...t,series:[{id:`heatmap`,name:e.name??r(t.locale).value,type:`heatmap`,data:e.data.map(e=>({x:e.x,y:e.y,value:e.value})),colorScale:e.colorScale,valueRange:e.valueRange,radius:e.radius,format:e.format}],xAxis:{...n?{}:{type:`category`,categories:e.xCategories},grid:!1,...t.xAxis},yAxis:{...i?{}:{type:`category`,categories:e.yCategories},grid:!1,...t.yAxis},legend:t.legend??!1,interaction:t.interaction??{zoom:!1},tooltip:t.tooltip??{mode:`nearest`}}},d=(e,t={})=>{let n=e.type??`line`;return{...t,series:[{id:`sparkline`,name:e.name??r(t.locale).value,type:n,data:e.data,color:e.color,curve:n===`bar`?void 0:e.curve??`smooth`,lineWidth:1.5,opacity:n===`area`?.22:void 0,radius:n===`bar`?1.5:void 0,format:e.format}],xAxis:{visible:!1,grid:!1,...t.xAxis},yAxis:{visible:!1,grid:!1,nice:!1,...t.yAxis},legend:!1,padding:t.padding??{top:4,right:4,bottom:4,left:4},interaction:t.interaction??{zoom:!1},annotations:e.reference===void 0?t.annotations:[...t.annotations??[],{type:`line`,axis:`y`,value:e.reference,dash:[2,3]}]}},f={topLeft:`var(--danger-color, #ef4444)`,topRight:`var(--primary-color, #4f46e5)`,bottomLeft:`var(--warning-color, #f59e0b)`,bottomRight:`var(--text-secondary-color, #64748b)`},p=`var(--border-strong-color, var(--border-color, #cbd5e1))`,m=e=>{let[t,n]=e.xDomain??[0,10],[r,i]=e.yDomain??[0,10];return{x0:t,x1:n,y0:r,y1:i,xs:e.xSplit??(t+n)/2,ys:e.ySplit??(r+i)/2}},h=(e,t,n)=>{let{xs:r,ys:i}=m(e),a=e.reverseX?t<r:t>=r;return n>=i?a?`topRight`:`topLeft`:a?`bottomRight`:`bottomLeft`},g=(e,t)=>{let{x0:n,x1:r,y0:i,y1:a,xs:o,ys:s}=m(e),c=t.endsWith(`Right`);return{x:(e.reverseX?!c:c)?(o+r)/2:(n+o)/2,y:t.startsWith(`top`)?(s+a)/2:(i+s)/2}},_=(e,t={})=>{let{x0:n,x1:r,y0:i,y1:a,xs:o,ys:s}=m(e),c=!!e.reverseX,l=t=>e.quadrants?.[t]?.color??f[t],u=[{type:`scatter`,name:e.name??``,pointSize:e.pointSize??12,showLabels:e.showLabels??!0,opacity:.9,data:e.points.map(t=>({x:t.x,y:t.y,label:t.label,size:t.size,color:t.color??l(h(e,t.x,t.y))}))}],d=c?[o,r]:[n,o],g=c?[n,o]:[o,r],_=(t,[n,r],[i,a],o)=>({type:`rect`,x0:n,x1:r,y0:i,y1:a,color:l(t),opacity:.07,label:e.quadrants?.[t]?.label,labelPosition:o}),v=e.axisLabels??{},y=c?r:n,b=c?n:r,x=[...v.top?[{type:`text`,x:o,y:a,text:v.top,anchor:`top`}]:[],...v.bottom?[{type:`text`,x:o,y:i,text:v.bottom,anchor:`bottom`}]:[],...v.left?[{type:`text`,x:y,y:s,text:v.left,anchor:`left`}]:[],...v.right?[{type:`text`,x:b,y:s,text:v.right,anchor:`right`}]:[]],S=[_(`topLeft`,d,[s,a],`top-left`),_(`topRight`,g,[s,a],`top-right`),_(`bottomLeft`,d,[i,s],`bottom-left`),_(`bottomRight`,g,[i,s],`bottom-right`),{type:`line`,axis:`x`,value:o,dash:[],color:p},{type:`line`,axis:`y`,value:s,dash:[],color:p},...x,...t.annotations??[]],C=e.showTicks??!0,w=t.interaction!==!1&&{zoom:!1,...typeof t.interaction==`object`?t.interaction:{},...e.draggable?{dragPoints:!0}:{}};return{...t,series:u,annotations:S,tooltip:t.tooltip??(C?void 0:{render:t=>{let n=t.items[0];if(!n)return null;let r=e.quadrants?.[h(e,n.x,n.y)]?.label;return[n.label??e.name??``,r??``].filter(Boolean).join(`
|
|
2
|
+
`)}}),xAxis:{min:n,max:r,title:e.xLabel,reverse:c,nice:!1,grid:!1,tickCount:4,visible:C||!!e.xLabel,...C?{}:{format:()=>``}},yAxis:{min:i,max:a,title:e.yLabel,nice:!1,grid:!1,tickCount:4,visible:C||!!e.yLabel,...C?{}:{format:()=>``}},legend:t.legend??!1,padding:t.padding??(C?void 0:{top:4,right:4,bottom:4,left:4}),interaction:w}},v=e=>{let t=0;for(let n=0;n<e.length;n++)Number.isFinite(e[n])&&t++;let n=new Float64Array(t),r=0;for(let t=0;t<e.length;t++){let i=e[t];Number.isFinite(i)&&(n[r++]=i)}return n.sort()},y=(e,t)=>{let n=e.length;if(!n)return NaN;let r=Math.min(1,Math.max(0,t))*(n-1),i=Math.floor(r),a=Math.min(n-1,i+1);return e[i]+(e[a]-e[i])*(r-i)},b=(e,t)=>{let n=v(e);return t.map(e=>y(n,e))},x=1e5,S=(e,n={})=>{let r=0,i=1/0,a=-1/0;for(let t=0;t<e.length;t++){let n=e[t];Number.isFinite(n)&&(r++,n<i&&(i=n),n>a&&(a=n))}let[o,s]=n.domain??[i,a];if(!r||!Number.isFinite(o)||!Number.isFinite(s))return{edges:[0,1],counts:[0],width:1,total:0};o>s&&([o,s]=[s,o]),s===o&&(o-=.5,s+=.5);let c=s-o,l=n.bins??`auto`,u=Math.ceil(Math.log2(r))+1,d;if(typeof l==`number`)d=Math.round(l);else if(l===`sturges`)d=u;else{let t=Math.max(1,Math.floor(e.length/x)),n=[];for(let r=0;r<e.length;r+=t){let t=e[r];Number.isFinite(t)&&n.push(t)}let i=Float64Array.from(n).sort(),a=2*(y(i,.75)-y(i,.25))/Math.cbrt(r);d=a>0?Math.ceil(c/a):u}d=Math.max(1,Math.min(1e3,d||1));let f=c/d,p=o;(n.nice??!0)&&(f=t.tickStep(o,s,d)||f,p=Math.floor(o/f+1e-9)*f,d=Math.max(1,Math.ceil((s-p)/f-1e-9)));let m=p+d*f,h=Array(d).fill(0),g=0;for(let t=0;t<e.length;t++){let n=e[t];if(!(n>=p&&n<=m))continue;let r=Math.min(d-1,Math.floor((n-p)/f));h[r]++,g++}let _=[];for(let e=0;e<=d;e++)_.push(Number((p+e*f).toPrecision(12)));return{edges:_,counts:h,width:f,total:g}},C=(t,n={})=>{let i=n.binned??S(t,n),a=e.resolveLocale(n.locale),o=n.format??(e=>w(e,a));return{id:`histogram`,name:n.name??r(a).count,type:`bar`,color:n.color,barWidth:1,radius:1,data:i.counts.map((e,t)=>{let n=i.edges[t]??0,r=i.edges[t+1]??n;return{x:(n+r)/2,y:e,label:`${o(n)} – ${o(r)}`}})}},w=(t,n)=>e.numberFormat(n,{maximumSignificantDigits:6}).format(t),T=(e,t={})=>{let n=v(e),r=n.length;if(!r)return{low:NaN,q1:NaN,median:NaN,q3:NaN,high:NaN,outliers:[],min:NaN,max:NaN,mean:NaN,count:0};let i=y(n,.25),a=y(n,.5),o=y(n,.75),s=n[0],c=n[r-1],l=0;for(let e=0;e<r;e++)l+=n[e];let u=t.whisker??1.5,d=s,f=c,p=[];if(u!==`minmax`){let e=(o-i)*u,t=i-e,a=o+e,s=0;for(;s<r&&n[s]<t;)p.push(n[s++]);d=s<r?n[s]:i;let c=r-1,l=[];for(;c>=0&&n[c]>a;)l.push(n[c--]);f=c>=0?n[c]:o,p.push(...l.reverse())}return{low:Math.min(d,i),q1:i,median:a,q3:o,high:Math.max(f,o),outliers:p,min:s,max:c,mean:l/r,count:r}},E=(e,t={})=>e.map(e=>{let n=T(e.values,t);return{x:e.x,y:Number.isFinite(n.median)?n.median:null,low:n.low,q1:n.q1,q3:n.q3,high:n.high,outliers:n.outliers,...e.color?{color:e.color}:{}}}),D=e=>i(e,`boxplot`),O=(e,t={})=>{let n=t.upColor??`var(--success-color, #16a34a)`,i=t.downColor??`var(--danger-color, #dc2626)`,a=t.totalColor??`var(--primary-color, #4f46e5)`,o=t.start??0,s=e.map(e=>{if(e.kind===`total`||e.kind===`subtotal`)return{x:e.label,y:o,color:e.color??a};let t=e.value??0,r=o;return o+=t,{x:e.label,y0:r,y:o,color:e.color??(t>=0?n:i)}});return{id:`waterfall`,name:t.name??r(t.locale).change,type:`bar`,color:a,data:s,showLabels:t.labels??!1,format:t.format}},k=(e,t={})=>{let n=t.minSize??6,r=t.maxSize??48,i=e=>{if(typeof e!=`object`||!e)return null;if(!(`length`in e))return e.value??null;let t=e,n=new Float64Array(t.length).fill(NaN);for(let e=0;e<t.length;e++){let r=t[e];if(r&&typeof r==`object`&&!Array.isArray(r)){let t=r.value;typeof t==`number`&&(n[e]=t)}}return n},a=t.maxValue??0;if(t.maxValue===void 0)for(let t of e){let e=i(t.data);if(e)for(let t=0;t<e.length;t++){let n=Math.abs(e[t]);n>a&&(a=n)}}let o=e=>Number.isFinite(e)&&a>0?Math.max(n,r*Math.sqrt(Math.min(1,Math.abs(e)/a))):n;return e.map(e=>{let t={...e,type:e.type??`scatter`,opacity:e.opacity??.68};if(t.type!==`scatter`)return t;let n=e.data;if(typeof n==`object`&&n&&!(`length`in n)){let e=n.value;if(!e)return t;let r=new Float32Array(e.length);for(let t=0;t<e.length;t++)r[t]=o(e[t]);return{...t,data:{...n,size:r}}}let r=n,i=[];for(let e=0;e<r.length;e++){let t=r[e];if(!t||typeof t!=`object`||Array.isArray(t))continue;let n=t;i.push({...n,size:n.size??o(typeof n.value==`number`?n.value:NaN)})}return i.sort((e,t)=>(t.size??0)-(e.size??0)),{...t,data:i}})},A=[`--primary-color`,`--success-color`,`--warning-color`,`--danger-color`,`--info-color`],j=[`#4f46e5`,`#10b981`,`#f59e0b`,`#ef4444`,`#0ea5e9`,`#8b5cf6`,`#14b8a6`,`#f97316`],M=e=>{let t=e%8,n=j[t]??`#4f46e5`,r=A[t];return r?`var(--chart-series-${t+1}, var(${r}, ${n}))`:`var(--chart-series-${t+1}, ${n})`},N=e=>e instanceof Date?e.getTime():e===void 0?NaN:e,P=(t,n={})=>{let i=e.resolveLocale(n.locale),a=r(i),o=n.taskName??a.tasks,s=[];for(let e of t){let t=e.group??o;!e.milestone&&!s.includes(t)&&s.push(t)}let c=e=>{let t=Math.max(0,s.indexOf(e));return n.colors?.[t]??M(t)},l=n.formatProgress??(t=>e.numberFormat(i,{style:`percent`,maximumFractionDigits:0}).format(t)),u=s.map(e=>({id:`gantt:${e}`,name:e,type:`bar`,stack:`gantt`,color:c(e),opacity:.3,barWidth:.62,radius:4,data:t.filter(t=>!t.milestone&&(t.group??o)===e).map(e=>({x:e.name,y0:N(e.start),y:N(e.end??e.start),...e.color?{color:e.color}:{}}))})),d=t.filter(e=>!e.milestone&&e.progress!==void 0&&e.progress>0);d.length&&u.push({id:`gantt:progress`,name:n.progressName??a.progress,type:`bar`,stack:`gantt`,color:`var(--text-secondary-color, #6b7280)`,radius:4,data:d.map(e=>{let t=N(e.start),n=N(e.end??e.start),r=Math.min(1,Math.max(0,e.progress??0));return{x:e.name,y0:t,y:t+(n-t)*r,label:l(r),color:e.color??c(e.group??o)}})});let f=t.filter(e=>e.milestone);f.length&&u.push({id:`gantt:milestones`,name:n.milestoneName??a.milestones,type:`scatter`,color:`var(--text-color, #1f2937)`,pointSize:13,opacity:1,data:f.map(e=>({x:e.name,y:N(e.start),...e.color?{color:e.color}:{}}))});let p=1/0,m=-1/0;for(let e of t)for(let t of[N(e.start),N(e.end??e.start)])t<p&&(p=t),t>m&&(m=t);let h=Number.isFinite(m-p)?Math.max((m-p)*.025,1):0;return{series:u,categories:t.map(e=>e.name),domain:Number.isFinite(p)?[p-h,m+h]:[0,1]}},F=(e,t)=>i(e,`area`,void 0,t).map(e=>e.type===`area`?{...e,lineWidth:e.lineWidth??1.5}:e);exports.DEFAULT_QUADRANT_COLORS=f,exports.areaSeries=o,exports.barSeries=s,exports.binValues=S,exports.boxplotData=E,exports.boxplotSeries=D,exports.boxplotStats=T,exports.bubbleSeries=k,exports.candlestickSeries=l,exports.ganttSeries=P,exports.heatmapChartOptions=u,exports.histogramSeries=C,exports.lineSeries=a,exports.paletteColor=M,exports.presetLabels=r,exports.quadrantCenter=g,exports.quadrantChartOptions=_,exports.quadrantOf=h,exports.quantiles=b,exports.rangeAreaSeries=F,exports.scatterSeries=c,exports.sparklineOptions=d,exports.waterfallSeries=O,exports.withSeriesType=i;
|
|
3
3
|
//# sourceMappingURL=presets.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.cjs","names":["withSeriesType","series","t","s","type","stack","curve","lineSeries","area","extra","areaSeries","barSeries","stacked","labels","scatterSeries","candlestickSeries","heatmapChartOptions","numericX","config","c","numericY","base","sparklineOptions","DEFAULT_QUADRANT_COLORS","DIVIDER","splits","x0","x1","y0","y1","quadrantOf","right","x","xs","y","ys","quadrantCenter","visualRight","corner","quadrantChartOptions","reverseX","color","p","left","rect","xa","xb","ya","yb","position","ends","visualLeft","texts","annotations","showTicks","interaction","item","event","region"],"sources":["../../../../charts/src/engine/presets.ts"],"sourcesContent":["// Option presets of the chart components, shared by every platform (React,\n// mini-programs, React Native): they turn component props into engine\n// options.\n\nimport type {\n ChartAnnotation,\n ChartCurve,\n ChartInteractionOptions,\n ChartOptions,\n ChartSeries,\n ChartSeriesType,\n} from \"./types\";\n\n/** Gives the series without a `type` the type of the component */\nexport const withSeriesType = (\n series: readonly ChartSeries[],\n type: ChartSeriesType,\n stack?: string,\n curve?: ChartCurve,\n): ChartSeries[] =>\n series.map((s) => {\n const t = s.type ?? type;\n return {\n ...s,\n type: t,\n ...(stack !== undefined && t === type ? { stack: s.stack ?? stack } : {}),\n ...(curve !== undefined && (t === \"line\" || t === \"area\")\n ? { curve: s.curve ?? curve }\n : {}),\n };\n });\n\n/** Options of the line-like components */\nexport interface LineSeriesOptions {\n /** Stacks the series on top of each other */\n stacked?: boolean;\n /** Shape of the lines */\n curve?: ChartCurve;\n}\n\n/** Series of a LineChart (`area` fills them) */\nexport const lineSeries = (\n series: readonly ChartSeries[],\n area = false,\n extra: LineSeriesOptions = {},\n) =>\n withSeriesType(\n series,\n area ? \"area\" : \"line\",\n extra.stacked ? \"stack\" : undefined,\n extra.curve,\n );\n\n/** Series of an AreaChart */\nexport const areaSeries = (\n series: readonly ChartSeries[],\n extra: LineSeriesOptions = {},\n) => lineSeries(series, true, extra);\n\n/** Series of a BarChart (`stacked` stacks them, `labels` shows the values) */\nexport const barSeries = (\n series: readonly ChartSeries[],\n stacked = false,\n labels = false,\n) =>\n withSeriesType(series, \"bar\", stacked ? \"stack\" : undefined).map((s) =>\n labels && s.type === \"bar\" ? { ...s, showLabels: s.showLabels ?? true } : s,\n );\n\n/** Series of a ScatterChart */\nexport const scatterSeries = (series: readonly ChartSeries[]) =>\n withSeriesType(series, \"scatter\");\n\n/** Series of a CandlestickChart */\nexport const candlestickSeries = (series: readonly ChartSeries[]) =>\n withSeriesType(series, \"candlestick\");\n\n/** A cell of a HeatmapChart */\nexport interface HeatmapCell {\n /** Column: a category name (or a number on a numeric axis) */\n x: string | number;\n /** Row: a category name (or a number on a numeric axis) */\n y: string | number;\n /** Value mapped to the color scale; `null` leaves the cell empty */\n value: number | null;\n}\n\n/** Settings of a heatmap (the props of HeatmapChart) */\nexport interface HeatmapConfig {\n /** Cells */\n data: readonly HeatmapCell[];\n /** Column names in order (collected from the data when omitted) */\n xCategories?: readonly string[];\n /** Row names from bottom to top (collected from the data when omitted) */\n yCategories?: readonly string[];\n /** Colors from the lowest to the highest value; a ramp of the first palette color by default */\n colorScale?: readonly string[];\n /** Values at the ends of the color scale; the data range by default */\n valueRange?: readonly [number, number];\n /** Name of the value in the tooltip */\n name?: string;\n /** Corner radius of the cells, in pixels */\n radius?: number;\n /** Formats the values in the tooltip */\n format?: (value: number) => string;\n}\n\n/** Engine options of a heatmap */\nexport const heatmapChartOptions = (\n config: HeatmapConfig,\n base: Partial<ChartOptions> = {},\n): ChartOptions => {\n const numericX = config.data.some((c) => typeof c.x === \"number\");\n const numericY = config.data.some((c) => typeof c.y === \"number\");\n return {\n ...base,\n series: [\n {\n id: \"heatmap\",\n name: config.name ?? \"Value\",\n type: \"heatmap\",\n data: config.data.map((c) => ({ x: c.x, y: c.y, value: c.value })),\n colorScale: config.colorScale,\n valueRange: config.valueRange,\n radius: config.radius,\n format: config.format,\n },\n ],\n xAxis: {\n ...(numericX\n ? {}\n : { type: \"category\" as const, categories: config.xCategories }),\n grid: false,\n ...base.xAxis,\n },\n yAxis: {\n ...(numericY\n ? {}\n : { type: \"category\" as const, categories: config.yCategories }),\n grid: false,\n ...base.yAxis,\n },\n legend: base.legend ?? false,\n interaction: base.interaction ?? { zoom: false },\n tooltip: base.tooltip ?? { mode: \"nearest\" },\n };\n};\n\n/** Settings of a sparkline (the props of Sparkline) */\nexport interface SparklineConfig {\n /** Values (or `[x, y]` pairs, typed arrays, ...) */\n data: ChartSeries[\"data\"];\n /**\n * How the values are drawn\n * @default \"line\"\n */\n type?: \"line\" | \"area\" | \"bar\";\n /** Color (any CSS color); the first palette color by default */\n color?: string;\n /**\n * Shape of the line\n * @default \"smooth\"\n */\n curve?: ChartCurve;\n /** Name shown in the tooltip */\n name?: string;\n /** Draws a reference line at this value (e.g. a target or the average) */\n reference?: number;\n /** Formats the value in the tooltip */\n format?: (value: number) => string;\n}\n\n/** Engine options of a sparkline: no axes, no legend, a tooltip only */\nexport const sparklineOptions = (\n config: SparklineConfig,\n base: Partial<ChartOptions> = {},\n): ChartOptions => {\n const type = config.type ?? \"line\";\n return {\n ...base,\n series: [\n {\n id: \"sparkline\",\n name: config.name ?? \"Value\",\n type,\n data: config.data,\n color: config.color,\n curve: type === \"bar\" ? undefined : (config.curve ?? \"smooth\"),\n lineWidth: 1.5,\n opacity: type === \"area\" ? 0.22 : undefined,\n radius: type === \"bar\" ? 1.5 : undefined,\n format: config.format,\n },\n ],\n xAxis: { visible: false, grid: false, ...base.xAxis },\n yAxis: { visible: false, grid: false, nice: false, ...base.yAxis },\n legend: false,\n padding: base.padding ?? { top: 4, right: 4, bottom: 4, left: 4 },\n interaction: base.interaction ?? { zoom: false },\n annotations:\n config.reference !== undefined\n ? [\n ...(base.annotations ?? []),\n {\n type: \"line\",\n axis: \"y\",\n value: config.reference,\n dash: [2, 3],\n },\n ]\n : base.annotations,\n };\n};\n\n/** A point of a QuadrantChart */\nexport interface QuadrantPoint {\n /** Position on the horizontal axis */\n x: number;\n /** Position on the vertical axis */\n y: number;\n /** Text drawn next to the dot and shown in the tooltip */\n label?: string;\n /** Dot color (any CSS color); the color of its quadrant by default */\n color?: string;\n /** Dot diameter in pixels */\n size?: number;\n}\n\n/** Title and color of a quadrant */\nexport interface QuadrantRegion {\n /** Title drawn in the outer corner of the quadrant */\n label?: string;\n /** Background tint and default dot color (any CSS color) */\n color?: string;\n}\n\n/** The four quadrants of a QuadrantChart */\nexport interface QuadrantRegions {\n topLeft?: QuadrantRegion;\n topRight?: QuadrantRegion;\n bottomLeft?: QuadrantRegion;\n bottomRight?: QuadrantRegion;\n}\n\n/** A quadrant, as seen on screen */\nexport type QuadrantCorner = keyof QuadrantRegions;\n\n/** Texts at the four ends of the dividers, inside the plot */\nexport interface QuadrantAxisLabels {\n top?: string;\n bottom?: string;\n left?: string;\n right?: string;\n}\n\n/** Settings of a quadrant matrix (the props of QuadrantChart) */\nexport interface QuadrantConfig {\n /** Points to place */\n points: readonly QuadrantPoint[];\n /**\n * Range of the horizontal axis\n * @default [0, 10]\n */\n xDomain?: [number, number];\n /**\n * Range of the vertical axis\n * @default [0, 10]\n */\n yDomain?: [number, number];\n /** X value of the vertical divider (the middle of `xDomain` by default) */\n xSplit?: number;\n /** Y value of the horizontal divider (the middle of `yDomain` by default) */\n ySplit?: number;\n /** Titles and colors of the quadrants */\n quadrants?: QuadrantRegions;\n /** Title of the horizontal axis */\n xLabel?: string;\n /** Title of the vertical axis */\n yLabel?: string;\n /** Texts at the ends of the dividers, drawn inside the plot (e.g. \"Important\" at the top) */\n axisLabels?: QuadrantAxisLabels;\n /**\n * Shows the numeric ticks of the axes; `false` keeps only the matrix\n * @default true\n */\n showTicks?: boolean;\n /** Reverses the horizontal axis (e.g. \"urgent\" on the left) */\n reverseX?: boolean;\n /**\n * Draws the labels next to the dots (overlapping labels are skipped)\n * @default true\n */\n showLabels?: boolean;\n /**\n * Dot diameter in pixels\n * @default 12\n */\n pointSize?: number;\n /** Name of the points in the tooltip */\n name?: string;\n /** Lets the user drag the dots (`drag` / `drop` events) */\n draggable?: boolean;\n}\n\nexport const DEFAULT_QUADRANT_COLORS: Required<Record<QuadrantCorner, string>> =\n {\n topLeft: \"var(--danger-color, #ef4444)\",\n topRight: \"var(--primary-color, #4f46e5)\",\n bottomLeft: \"var(--warning-color, #f59e0b)\",\n bottomRight: \"var(--text-secondary-color, #64748b)\",\n };\n\nconst DIVIDER = \"var(--border-strong-color, var(--border-color, #cbd5e1))\";\n\nconst splits = (config: QuadrantConfig) => {\n const [x0, x1] = config.xDomain ?? [0, 10];\n const [y0, y1] = config.yDomain ?? [0, 10];\n return {\n x0,\n x1,\n y0,\n y1,\n xs: config.xSplit ?? (x0 + x1) / 2,\n ys: config.ySplit ?? (y0 + y1) / 2,\n };\n};\n\n/** Quadrant of a data position, as seen on screen */\nexport const quadrantOf = (\n config: Pick<\n QuadrantConfig,\n \"xDomain\" | \"yDomain\" | \"xSplit\" | \"ySplit\" | \"reverseX\"\n >,\n x: number,\n y: number,\n): QuadrantCorner => {\n const { xs, ys } = splits(config as QuadrantConfig);\n const right = config.reverseX ? x < xs : x >= xs;\n const top = y >= ys;\n return top\n ? right\n ? \"topRight\"\n : \"topLeft\"\n : right\n ? \"bottomRight\"\n : \"bottomLeft\";\n};\n\n/** Center of a quadrant in data coordinates */\nexport const quadrantCenter = (\n config: Pick<\n QuadrantConfig,\n \"xDomain\" | \"yDomain\" | \"xSplit\" | \"ySplit\" | \"reverseX\"\n >,\n corner: QuadrantCorner,\n): { x: number; y: number } => {\n const { x0, x1, y0, y1, xs, ys } = splits(config as QuadrantConfig);\n const visualRight = corner.endsWith(\"Right\");\n const dataHigh = config.reverseX ? !visualRight : visualRight;\n return {\n x: dataHigh ? (xs + x1) / 2 : (x0 + xs) / 2,\n y: corner.startsWith(\"top\") ? (ys + y1) / 2 : (y0 + ys) / 2,\n };\n};\n\n/** Engine options of a quadrant matrix */\nexport const quadrantChartOptions = (\n config: QuadrantConfig,\n base: Omit<ChartOptions, \"series\"> = {},\n): ChartOptions => {\n const { x0, x1, y0, y1, xs, ys } = splits(config);\n const reverseX = !!config.reverseX;\n const color = (corner: QuadrantCorner) =>\n config.quadrants?.[corner]?.color ?? DEFAULT_QUADRANT_COLORS[corner];\n\n const series: ChartSeries[] = [\n {\n type: \"scatter\",\n name: config.name ?? \"\",\n pointSize: config.pointSize ?? 12,\n showLabels: config.showLabels ?? true,\n opacity: 0.9,\n data: config.points.map((p) => ({\n x: p.x,\n y: p.y,\n label: p.label,\n size: p.size,\n color: p.color ?? color(quadrantOf(config, p.x, p.y)),\n })),\n },\n ];\n\n // visual left / right -> data ranges\n const left: [number, number] = reverseX ? [xs, x1] : [x0, xs];\n const right: [number, number] = reverseX ? [x0, xs] : [xs, x1];\n const rect = (\n corner: QuadrantCorner,\n [xa, xb]: [number, number],\n [ya, yb]: [number, number],\n position: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\",\n ): ChartAnnotation => ({\n type: \"rect\",\n x0: xa,\n x1: xb,\n y0: ya,\n y1: yb,\n color: color(corner),\n opacity: 0.07,\n label: config.quadrants?.[corner]?.label,\n labelPosition: position,\n });\n const ends = config.axisLabels ?? {};\n const visualLeft = reverseX ? x1 : x0;\n const visualRight = reverseX ? x0 : x1;\n const texts: ChartAnnotation[] = [\n ...(ends.top\n ? [{ type: \"text\", x: xs, y: y1, text: ends.top, anchor: \"top\" } as const]\n : []),\n ...(ends.bottom\n ? [\n {\n type: \"text\",\n x: xs,\n y: y0,\n text: ends.bottom,\n anchor: \"bottom\",\n } as const,\n ]\n : []),\n ...(ends.left\n ? [\n {\n type: \"text\",\n x: visualLeft,\n y: ys,\n text: ends.left,\n anchor: \"left\",\n } as const,\n ]\n : []),\n ...(ends.right\n ? [\n {\n type: \"text\",\n x: visualRight,\n y: ys,\n text: ends.right,\n anchor: \"right\",\n } as const,\n ]\n : []),\n ];\n\n const annotations: ChartAnnotation[] = [\n rect(\"topLeft\", left, [ys, y1], \"top-left\"),\n rect(\"topRight\", right, [ys, y1], \"top-right\"),\n rect(\"bottomLeft\", left, [y0, ys], \"bottom-left\"),\n rect(\"bottomRight\", right, [y0, ys], \"bottom-right\"),\n { type: \"line\", axis: \"x\", value: xs, dash: [], color: DIVIDER },\n { type: \"line\", axis: \"y\", value: ys, dash: [], color: DIVIDER },\n ...texts,\n ...(base.annotations ?? []),\n ];\n\n const showTicks = config.showTicks ?? true;\n const interaction: boolean | ChartInteractionOptions =\n base.interaction === false\n ? false\n : {\n zoom: false,\n ...(typeof base.interaction === \"object\" ? base.interaction : {}),\n ...(config.draggable ? { dragPoints: true } : {}),\n };\n\n return {\n ...base,\n series,\n annotations,\n tooltip:\n base.tooltip ??\n (showTicks\n ? undefined\n : {\n render: (event) => {\n const item = event.items[0];\n if (!item) return null;\n const region =\n config.quadrants?.[quadrantOf(config, item.x, item.y)]?.label;\n return [item.label ?? config.name ?? \"\", region ?? \"\"]\n .filter(Boolean)\n .join(\"\\n\");\n },\n }),\n xAxis: {\n min: x0,\n max: x1,\n title: config.xLabel,\n reverse: reverseX,\n nice: false,\n grid: false,\n tickCount: 4,\n visible: showTicks || !!config.xLabel,\n ...(showTicks ? {} : { format: () => \"\" }),\n },\n yAxis: {\n min: y0,\n max: y1,\n title: config.yLabel,\n nice: false,\n grid: false,\n tickCount: 4,\n visible: showTicks || !!config.yLabel,\n ...(showTicks ? {} : { format: () => \"\" }),\n },\n legend: base.legend ?? false,\n padding:\n base.padding ??\n (showTicks ? undefined : { top: 4, right: 4, bottom: 4, left: 4 }),\n interaction,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"presets.cjs","names":["localeLabels","tickStep","resolveLocale","numberFormat","require_locale","require_scale","PRESET_LABELS","presetLabels","locale","withSeriesType","series","t","s","type","stack","curve","lineSeries","area","extra","areaSeries","barSeries","stacked","labels","scatterSeries","candlestickSeries","heatmapChartOptions","numericX","config","c","numericY","base","sparklineOptions","DEFAULT_QUADRANT_COLORS","DIVIDER","splits","x0","x1","y0","y1","quadrantOf","right","x","xs","y","ys","quadrantCenter","visualRight","corner","quadrantChartOptions","reverseX","color","p","left","rect","xa","xb","ya","yb","position","ends","visualLeft","texts","annotations","showTicks","interaction","item","event","region","sortedFinite","n","i","values","out","k","v","quantileOf","sorted","at","lo","hi","quantiles","ps","SPREAD_SAMPLE","binValues","min","max","options","span","rule","sturges","count","stride","sample","width","start","end","counts","total","edges","histogramSeries","bins","format","formatEdge","value","a","b","boxplotStats","q1","median","q3","sum","whisker","low","high","outliers","reach","from","to","j","upper","boxplotData","groups","g","boxplotSeries","waterfallSeries","up","down","running","data","steps","step","bubbleSeries","minSize","maxSize","valuesOf","list","top","sizeOf","size","points","d","THEMED","FALLBACK","paletteColor","fallback","themed","time","ganttSeries","names","taskName","tasks","colorOf","formatProgress","share","progress","milestones","pad","rangeAreaSeries"],"sources":["../../../../charts/src/engine/presets.ts"],"sourcesContent":["// Option presets of the chart components, shared by every platform (React,\n// mini-programs, React Native): they turn component props into engine\n// options.\n\nimport {\n localeLabels,\n numberFormat,\n resolveLocale,\n type LabelDictionary,\n} from \"./locale\";\nimport { tickStep } from \"./scale\";\nimport type {\n ChartAnnotation,\n ChartCurve,\n ChartInteractionOptions,\n ChartOptions,\n ChartPointDatum,\n ChartSeries,\n ChartSeriesType,\n ChartXValue,\n} from \"./types\";\n\n/** Default series names of the presets */\ninterface PresetLabels {\n value: string;\n values: string;\n count: string;\n change: string;\n tasks: string;\n progress: string;\n milestones: string;\n}\n\nconst PRESET_LABELS: LabelDictionary<PresetLabels> = {\n en: {\n value: \"Value\",\n values: \"Values\",\n count: \"Count\",\n change: \"Change\",\n tasks: \"Tasks\",\n progress: \"Progress\",\n milestones: \"Milestones\",\n },\n zh: {\n value: \"数值\",\n values: \"数值\",\n count: \"数量\",\n change: \"变化\",\n tasks: \"任务\",\n progress: \"进度\",\n milestones: \"里程碑\",\n },\n ja: {\n value: \"値\",\n values: \"値\",\n count: \"件数\",\n change: \"増減\",\n tasks: \"タスク\",\n progress: \"進捗\",\n milestones: \"マイルストーン\",\n },\n fr: {\n value: \"Valeur\",\n values: \"Valeurs\",\n count: \"Effectif\",\n change: \"Variation\",\n tasks: \"Tâches\",\n progress: \"Avancement\",\n milestones: \"Jalons\",\n },\n};\n\n/** Default series names of the presets in a locale (the page language by default) */\nexport const presetLabels = (locale?: string): PresetLabels =>\n localeLabels(PRESET_LABELS, locale);\n\n/** Gives the series without a `type` the type of the component */\nexport const withSeriesType = (\n series: readonly ChartSeries[],\n type: ChartSeriesType,\n stack?: string,\n curve?: ChartCurve,\n): ChartSeries[] =>\n series.map((s) => {\n const t = s.type ?? type;\n return {\n ...s,\n type: t,\n ...(stack !== undefined && t === type ? { stack: s.stack ?? stack } : {}),\n ...(curve !== undefined && (t === \"line\" || t === \"area\")\n ? { curve: s.curve ?? curve }\n : {}),\n };\n });\n\n/** Options of the line-like components */\nexport interface LineSeriesOptions {\n /** Stacks the series on top of each other */\n stacked?: boolean;\n /** Shape of the lines */\n curve?: ChartCurve;\n}\n\n/** Series of a LineChart (`area` fills them) */\nexport const lineSeries = (\n series: readonly ChartSeries[],\n area = false,\n extra: LineSeriesOptions = {},\n) =>\n withSeriesType(\n series,\n area ? \"area\" : \"line\",\n extra.stacked ? \"stack\" : undefined,\n extra.curve,\n );\n\n/** Series of an AreaChart */\nexport const areaSeries = (\n series: readonly ChartSeries[],\n extra: LineSeriesOptions = {},\n) => lineSeries(series, true, extra);\n\n/** Series of a BarChart (`stacked` stacks them, `labels` shows the values) */\nexport const barSeries = (\n series: readonly ChartSeries[],\n stacked = false,\n labels = false,\n) =>\n withSeriesType(series, \"bar\", stacked ? \"stack\" : undefined).map((s) =>\n labels && s.type === \"bar\" ? { ...s, showLabels: s.showLabels ?? true } : s,\n );\n\n/** Series of a ScatterChart */\nexport const scatterSeries = (series: readonly ChartSeries[]) =>\n withSeriesType(series, \"scatter\");\n\n/** Series of a CandlestickChart */\nexport const candlestickSeries = (series: readonly ChartSeries[]) =>\n withSeriesType(series, \"candlestick\");\n\n/** A cell of a HeatmapChart */\nexport interface HeatmapCell {\n /** Column: a category name (or a number on a numeric axis) */\n x: string | number;\n /** Row: a category name (or a number on a numeric axis) */\n y: string | number;\n /** Value mapped to the color scale; `null` leaves the cell empty */\n value: number | null;\n}\n\n/** Settings of a heatmap (the props of HeatmapChart) */\nexport interface HeatmapConfig {\n /** Cells */\n data: readonly HeatmapCell[];\n /** Column names in order (collected from the data when omitted) */\n xCategories?: readonly string[];\n /** Row names from bottom to top (collected from the data when omitted) */\n yCategories?: readonly string[];\n /** Colors from the lowest to the highest value; a ramp of the first palette color by default */\n colorScale?: readonly string[];\n /** Values at the ends of the color scale; the data range by default */\n valueRange?: readonly [number, number];\n /** Name of the value in the tooltip */\n name?: string;\n /** Corner radius of the cells, in pixels */\n radius?: number;\n /** Formats the values in the tooltip */\n format?: (value: number) => string;\n}\n\n/** Engine options of a heatmap */\nexport const heatmapChartOptions = (\n config: HeatmapConfig,\n base: Partial<ChartOptions> = {},\n): ChartOptions => {\n const numericX = config.data.some((c) => typeof c.x === \"number\");\n const numericY = config.data.some((c) => typeof c.y === \"number\");\n return {\n ...base,\n series: [\n {\n id: \"heatmap\",\n name: config.name ?? presetLabels(base.locale).value,\n type: \"heatmap\",\n data: config.data.map((c) => ({ x: c.x, y: c.y, value: c.value })),\n colorScale: config.colorScale,\n valueRange: config.valueRange,\n radius: config.radius,\n format: config.format,\n },\n ],\n xAxis: {\n ...(numericX\n ? {}\n : { type: \"category\" as const, categories: config.xCategories }),\n grid: false,\n ...base.xAxis,\n },\n yAxis: {\n ...(numericY\n ? {}\n : { type: \"category\" as const, categories: config.yCategories }),\n grid: false,\n ...base.yAxis,\n },\n legend: base.legend ?? false,\n interaction: base.interaction ?? { zoom: false },\n tooltip: base.tooltip ?? { mode: \"nearest\" },\n };\n};\n\n/** Settings of a sparkline (the props of Sparkline) */\nexport interface SparklineConfig {\n /** Values (or `[x, y]` pairs, typed arrays, ...) */\n data: ChartSeries[\"data\"];\n /**\n * How the values are drawn\n * @default \"line\"\n */\n type?: \"line\" | \"area\" | \"bar\";\n /** Color (any CSS color); the first palette color by default */\n color?: string;\n /**\n * Shape of the line\n * @default \"smooth\"\n */\n curve?: ChartCurve;\n /** Name shown in the tooltip */\n name?: string;\n /** Draws a reference line at this value (e.g. a target or the average) */\n reference?: number;\n /** Formats the value in the tooltip */\n format?: (value: number) => string;\n}\n\n/** Engine options of a sparkline: no axes, no legend, a tooltip only */\nexport const sparklineOptions = (\n config: SparklineConfig,\n base: Partial<ChartOptions> = {},\n): ChartOptions => {\n const type = config.type ?? \"line\";\n return {\n ...base,\n series: [\n {\n id: \"sparkline\",\n name: config.name ?? presetLabels(base.locale).value,\n type,\n data: config.data,\n color: config.color,\n curve: type === \"bar\" ? undefined : (config.curve ?? \"smooth\"),\n lineWidth: 1.5,\n opacity: type === \"area\" ? 0.22 : undefined,\n radius: type === \"bar\" ? 1.5 : undefined,\n format: config.format,\n },\n ],\n xAxis: { visible: false, grid: false, ...base.xAxis },\n yAxis: { visible: false, grid: false, nice: false, ...base.yAxis },\n legend: false,\n padding: base.padding ?? { top: 4, right: 4, bottom: 4, left: 4 },\n interaction: base.interaction ?? { zoom: false },\n annotations:\n config.reference !== undefined\n ? [\n ...(base.annotations ?? []),\n {\n type: \"line\",\n axis: \"y\",\n value: config.reference,\n dash: [2, 3],\n },\n ]\n : base.annotations,\n };\n};\n\n/** A point of a QuadrantChart */\nexport interface QuadrantPoint {\n /** Position on the horizontal axis */\n x: number;\n /** Position on the vertical axis */\n y: number;\n /** Text drawn next to the dot and shown in the tooltip */\n label?: string;\n /** Dot color (any CSS color); the color of its quadrant by default */\n color?: string;\n /** Dot diameter in pixels */\n size?: number;\n}\n\n/** Title and color of a quadrant */\nexport interface QuadrantRegion {\n /** Title drawn in the outer corner of the quadrant */\n label?: string;\n /** Background tint and default dot color (any CSS color) */\n color?: string;\n}\n\n/** The four quadrants of a QuadrantChart */\nexport interface QuadrantRegions {\n topLeft?: QuadrantRegion;\n topRight?: QuadrantRegion;\n bottomLeft?: QuadrantRegion;\n bottomRight?: QuadrantRegion;\n}\n\n/** A quadrant, as seen on screen */\nexport type QuadrantCorner = keyof QuadrantRegions;\n\n/** Texts at the four ends of the dividers, inside the plot */\nexport interface QuadrantAxisLabels {\n top?: string;\n bottom?: string;\n left?: string;\n right?: string;\n}\n\n/** Settings of a quadrant matrix (the props of QuadrantChart) */\nexport interface QuadrantConfig {\n /** Points to place */\n points: readonly QuadrantPoint[];\n /**\n * Range of the horizontal axis\n * @default [0, 10]\n */\n xDomain?: [number, number];\n /**\n * Range of the vertical axis\n * @default [0, 10]\n */\n yDomain?: [number, number];\n /** X value of the vertical divider (the middle of `xDomain` by default) */\n xSplit?: number;\n /** Y value of the horizontal divider (the middle of `yDomain` by default) */\n ySplit?: number;\n /** Titles and colors of the quadrants */\n quadrants?: QuadrantRegions;\n /** Title of the horizontal axis */\n xLabel?: string;\n /** Title of the vertical axis */\n yLabel?: string;\n /** Texts at the ends of the dividers, drawn inside the plot (e.g. \"Important\" at the top) */\n axisLabels?: QuadrantAxisLabels;\n /**\n * Shows the numeric ticks of the axes; `false` keeps only the matrix\n * @default true\n */\n showTicks?: boolean;\n /** Reverses the horizontal axis (e.g. \"urgent\" on the left) */\n reverseX?: boolean;\n /**\n * Draws the labels next to the dots (overlapping labels are skipped)\n * @default true\n */\n showLabels?: boolean;\n /**\n * Dot diameter in pixels\n * @default 12\n */\n pointSize?: number;\n /** Name of the points in the tooltip */\n name?: string;\n /** Lets the user drag the dots (`drag` / `drop` events) */\n draggable?: boolean;\n}\n\nexport const DEFAULT_QUADRANT_COLORS: Required<Record<QuadrantCorner, string>> =\n {\n topLeft: \"var(--danger-color, #ef4444)\",\n topRight: \"var(--primary-color, #4f46e5)\",\n bottomLeft: \"var(--warning-color, #f59e0b)\",\n bottomRight: \"var(--text-secondary-color, #64748b)\",\n };\n\nconst DIVIDER = \"var(--border-strong-color, var(--border-color, #cbd5e1))\";\n\nconst splits = (config: QuadrantConfig) => {\n const [x0, x1] = config.xDomain ?? [0, 10];\n const [y0, y1] = config.yDomain ?? [0, 10];\n return {\n x0,\n x1,\n y0,\n y1,\n xs: config.xSplit ?? (x0 + x1) / 2,\n ys: config.ySplit ?? (y0 + y1) / 2,\n };\n};\n\n/** Quadrant of a data position, as seen on screen */\nexport const quadrantOf = (\n config: Pick<\n QuadrantConfig,\n \"xDomain\" | \"yDomain\" | \"xSplit\" | \"ySplit\" | \"reverseX\"\n >,\n x: number,\n y: number,\n): QuadrantCorner => {\n const { xs, ys } = splits(config as QuadrantConfig);\n const right = config.reverseX ? x < xs : x >= xs;\n const top = y >= ys;\n return top\n ? right\n ? \"topRight\"\n : \"topLeft\"\n : right\n ? \"bottomRight\"\n : \"bottomLeft\";\n};\n\n/** Center of a quadrant in data coordinates */\nexport const quadrantCenter = (\n config: Pick<\n QuadrantConfig,\n \"xDomain\" | \"yDomain\" | \"xSplit\" | \"ySplit\" | \"reverseX\"\n >,\n corner: QuadrantCorner,\n): { x: number; y: number } => {\n const { x0, x1, y0, y1, xs, ys } = splits(config as QuadrantConfig);\n const visualRight = corner.endsWith(\"Right\");\n const dataHigh = config.reverseX ? !visualRight : visualRight;\n return {\n x: dataHigh ? (xs + x1) / 2 : (x0 + xs) / 2,\n y: corner.startsWith(\"top\") ? (ys + y1) / 2 : (y0 + ys) / 2,\n };\n};\n\n/** Engine options of a quadrant matrix */\nexport const quadrantChartOptions = (\n config: QuadrantConfig,\n base: Omit<ChartOptions, \"series\"> = {},\n): ChartOptions => {\n const { x0, x1, y0, y1, xs, ys } = splits(config);\n const reverseX = !!config.reverseX;\n const color = (corner: QuadrantCorner) =>\n config.quadrants?.[corner]?.color ?? DEFAULT_QUADRANT_COLORS[corner];\n\n const series: ChartSeries[] = [\n {\n type: \"scatter\",\n name: config.name ?? \"\",\n pointSize: config.pointSize ?? 12,\n showLabels: config.showLabels ?? true,\n opacity: 0.9,\n data: config.points.map((p) => ({\n x: p.x,\n y: p.y,\n label: p.label,\n size: p.size,\n color: p.color ?? color(quadrantOf(config, p.x, p.y)),\n })),\n },\n ];\n\n // visual left / right -> data ranges\n const left: [number, number] = reverseX ? [xs, x1] : [x0, xs];\n const right: [number, number] = reverseX ? [x0, xs] : [xs, x1];\n const rect = (\n corner: QuadrantCorner,\n [xa, xb]: [number, number],\n [ya, yb]: [number, number],\n position: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\",\n ): ChartAnnotation => ({\n type: \"rect\",\n x0: xa,\n x1: xb,\n y0: ya,\n y1: yb,\n color: color(corner),\n opacity: 0.07,\n label: config.quadrants?.[corner]?.label,\n labelPosition: position,\n });\n const ends = config.axisLabels ?? {};\n const visualLeft = reverseX ? x1 : x0;\n const visualRight = reverseX ? x0 : x1;\n const texts: ChartAnnotation[] = [\n ...(ends.top\n ? [{ type: \"text\", x: xs, y: y1, text: ends.top, anchor: \"top\" } as const]\n : []),\n ...(ends.bottom\n ? [\n {\n type: \"text\",\n x: xs,\n y: y0,\n text: ends.bottom,\n anchor: \"bottom\",\n } as const,\n ]\n : []),\n ...(ends.left\n ? [\n {\n type: \"text\",\n x: visualLeft,\n y: ys,\n text: ends.left,\n anchor: \"left\",\n } as const,\n ]\n : []),\n ...(ends.right\n ? [\n {\n type: \"text\",\n x: visualRight,\n y: ys,\n text: ends.right,\n anchor: \"right\",\n } as const,\n ]\n : []),\n ];\n\n const annotations: ChartAnnotation[] = [\n rect(\"topLeft\", left, [ys, y1], \"top-left\"),\n rect(\"topRight\", right, [ys, y1], \"top-right\"),\n rect(\"bottomLeft\", left, [y0, ys], \"bottom-left\"),\n rect(\"bottomRight\", right, [y0, ys], \"bottom-right\"),\n { type: \"line\", axis: \"x\", value: xs, dash: [], color: DIVIDER },\n { type: \"line\", axis: \"y\", value: ys, dash: [], color: DIVIDER },\n ...texts,\n ...(base.annotations ?? []),\n ];\n\n const showTicks = config.showTicks ?? true;\n const interaction: boolean | ChartInteractionOptions =\n base.interaction === false\n ? false\n : {\n zoom: false,\n ...(typeof base.interaction === \"object\" ? base.interaction : {}),\n ...(config.draggable ? { dragPoints: true } : {}),\n };\n\n return {\n ...base,\n series,\n annotations,\n tooltip:\n base.tooltip ??\n (showTicks\n ? undefined\n : {\n render: (event) => {\n const item = event.items[0];\n if (!item) return null;\n const region =\n config.quadrants?.[quadrantOf(config, item.x, item.y)]?.label;\n return [item.label ?? config.name ?? \"\", region ?? \"\"]\n .filter(Boolean)\n .join(\"\\n\");\n },\n }),\n xAxis: {\n min: x0,\n max: x1,\n title: config.xLabel,\n reverse: reverseX,\n nice: false,\n grid: false,\n tickCount: 4,\n visible: showTicks || !!config.xLabel,\n ...(showTicks ? {} : { format: () => \"\" }),\n },\n yAxis: {\n min: y0,\n max: y1,\n title: config.yLabel,\n nice: false,\n grid: false,\n tickCount: 4,\n visible: showTicks || !!config.yLabel,\n ...(showTicks ? {} : { format: () => \"\" }),\n },\n legend: base.legend ?? false,\n padding:\n base.padding ??\n (showTicks ? undefined : { top: 4, right: 4, bottom: 4, left: 4 }),\n interaction,\n };\n};\n\n// ------------------------------------------------------------- statistics\n\n/** Finite values of a list, as a sorted typed array */\nconst sortedFinite = (values: ArrayLike<number>): Float64Array => {\n let n = 0;\n for (let i = 0; i < values.length; i++) if (Number.isFinite(values[i])) n++;\n const out = new Float64Array(n);\n let k = 0;\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n if (Number.isFinite(v)) out[k++] = v;\n }\n return out.sort();\n};\n\n/** Quantile `p` (0-1) of sorted values, linearly interpolated (NumPy / Excel) */\nconst quantileOf = (sorted: ArrayLike<number>, p: number): number => {\n const n = sorted.length;\n if (!n) return NaN;\n const at = Math.min(1, Math.max(0, p)) * (n - 1);\n const lo = Math.floor(at);\n const hi = Math.min(n - 1, lo + 1);\n return sorted[lo] + (sorted[hi] - sorted[lo]) * (at - lo);\n};\n\n/**\n * Quantiles of values (`[0.5, 0.95, 0.99]` gives the median, p95 and p99),\n * linearly interpolated like NumPy and Excel; non-finite values are ignored\n */\nexport const quantiles = (\n values: ArrayLike<number>,\n ps: readonly number[],\n): number[] => {\n const sorted = sortedFinite(values);\n return ps.map((p) => quantileOf(sorted, p));\n};\n\n/** How the bins of a histogram are chosen: a count, or a rule */\nexport type HistogramBinning =\n number | \"auto\" | \"sturges\" | \"freedman-diaconis\";\n\n/** Options of `binValues` */\nexport interface BinOptions {\n /**\n * Number of bins, or the rule choosing it: `sturges` (log2 n + 1, for\n * small normal-ish samples), `freedman-diaconis` (bin width from the\n * interquartile range, robust to outliers); `auto` uses Freedman-Diaconis\n * and Sturges when the spread is zero\n * @default \"auto\"\n */\n bins?: HistogramBinning;\n /** Range covered by the bins (values outside are not counted); the data range by default */\n domain?: readonly [number, number];\n /**\n * Rounds the bin width to 1, 2 or 5 × 10^k and aligns the edges on it\n * @default true\n */\n nice?: boolean;\n}\n\n/** Bins of a histogram */\nexport interface HistogramBins {\n /** Edges of the bins: one more than the bins */\n edges: number[];\n /** Number of values in every bin */\n counts: number[];\n /** Width of a bin */\n width: number;\n /** Number of values counted (finite, inside the domain) */\n total: number;\n}\n\n/** At most this many values are sorted to estimate the spread (Freedman-Diaconis) */\nconst SPREAD_SAMPLE = 100_000;\n\n/**\n * Counts values into bins of equal width: linear in the number of values\n * (a million samples take a few milliseconds; the spread of large samples\n * is estimated on an even subsample)\n */\nexport const binValues = (\n values: ArrayLike<number>,\n options: BinOptions = {},\n): HistogramBins => {\n let n = 0;\n let min = Infinity;\n let max = -Infinity;\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n if (!Number.isFinite(v)) continue;\n n++;\n if (v < min) min = v;\n if (v > max) max = v;\n }\n let [lo, hi] = options.domain ?? [min, max];\n if (!n || !Number.isFinite(lo) || !Number.isFinite(hi)) {\n return { edges: [0, 1], counts: [0], width: 1, total: 0 };\n }\n if (lo > hi) [lo, hi] = [hi, lo];\n if (hi === lo) {\n lo -= 0.5;\n hi += 0.5;\n }\n const span = hi - lo;\n const rule = options.bins ?? \"auto\";\n const sturges = Math.ceil(Math.log2(n)) + 1;\n let count: number;\n if (typeof rule === \"number\") {\n count = Math.round(rule);\n } else if (rule === \"sturges\") {\n count = sturges;\n } else {\n // Freedman-Diaconis: width = 2 IQR / n^(1/3)\n const stride = Math.max(1, Math.floor(values.length / SPREAD_SAMPLE));\n const sample: number[] = [];\n for (let i = 0; i < values.length; i += stride) {\n const v = values[i];\n if (Number.isFinite(v)) sample.push(v);\n }\n const sorted = Float64Array.from(sample).sort();\n const iqr = quantileOf(sorted, 0.75) - quantileOf(sorted, 0.25);\n const width = (2 * iqr) / Math.cbrt(n);\n count = width > 0 ? Math.ceil(span / width) : sturges;\n }\n count = Math.max(1, Math.min(1000, count || 1));\n let width = span / count;\n let start = lo;\n if (options.nice ?? true) {\n width = tickStep(lo, hi, count) || width;\n start = Math.floor(lo / width + 1e-9) * width;\n count = Math.max(1, Math.ceil((hi - start) / width - 1e-9));\n }\n const end = start + count * width;\n const counts = new Array<number>(count).fill(0);\n let total = 0;\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n if (!(v >= start && v <= end)) continue;\n // the last bin includes its right edge\n const k = Math.min(count - 1, Math.floor((v - start) / width));\n counts[k]++;\n total++;\n }\n const edges: number[] = [];\n for (let k = 0; k <= count; k++)\n edges.push(Number((start + k * width).toPrecision(12)));\n return { edges, counts, width, total };\n};\n\n/** Options of `histogramSeries` */\nexport interface HistogramSeriesOptions extends BinOptions {\n /** Name of the series (legend, tooltip) */\n name?: string;\n /** Bar color (any CSS color) */\n color?: string;\n /** Formats the edges of the bins in the tooltip */\n format?: (value: number) => string;\n /** Bins already computed (`binValues`): `values` are then ignored */\n binned?: HistogramBins;\n /**\n * Locale of the default name and of the bin edges\n * @default the page language\n */\n locale?: string;\n}\n\n/** Bar series of a histogram: one touching bar per bin, labelled with its range */\nexport const histogramSeries = (\n values: ArrayLike<number>,\n options: HistogramSeriesOptions = {},\n): ChartSeries => {\n const bins = options.binned ?? binValues(values, options);\n const locale = resolveLocale(options.locale);\n const format =\n options.format ?? ((value: number) => formatEdge(value, locale));\n return {\n id: \"histogram\",\n name: options.name ?? presetLabels(locale).count,\n type: \"bar\",\n color: options.color,\n barWidth: 1,\n radius: 1,\n data: bins.counts.map((count, k) => {\n const a = bins.edges[k] ?? 0;\n const b = bins.edges[k + 1] ?? a;\n return {\n x: (a + b) / 2,\n y: count,\n label: `${format(a)} – ${format(b)}`,\n };\n }),\n };\n};\n\nconst formatEdge = (value: number, locale: string) =>\n numberFormat(locale, { maximumSignificantDigits: 6 }).format(value);\n\n/** Options of `boxplotStats` */\nexport interface BoxplotStatsOptions {\n /**\n * Reach of the whiskers in interquartile ranges beyond the box (Tukey:\n * 1.5); `\"minmax\"` extends them to the extremes (no outliers)\n * @default 1.5\n */\n whisker?: number | \"minmax\";\n}\n\n/** Five-number summary of a sample, with the outliers */\nexport interface BoxplotStats {\n /** Lower whisker: the smallest value within reach */\n low: number;\n /** First quartile */\n q1: number;\n median: number;\n /** Third quartile */\n q3: number;\n /** Upper whisker: the largest value within reach */\n high: number;\n /** Values beyond the whiskers */\n outliers: number[];\n min: number;\n max: number;\n mean: number;\n /** Number of finite values */\n count: number;\n}\n\n/** Quartiles, whiskers (Tukey's 1.5 IQR by default) and outliers of raw values */\nexport const boxplotStats = (\n values: ArrayLike<number>,\n options: BoxplotStatsOptions = {},\n): BoxplotStats => {\n const sorted = sortedFinite(values);\n const n = sorted.length;\n if (!n) {\n return {\n low: NaN,\n q1: NaN,\n median: NaN,\n q3: NaN,\n high: NaN,\n outliers: [],\n min: NaN,\n max: NaN,\n mean: NaN,\n count: 0,\n };\n }\n const q1 = quantileOf(sorted, 0.25);\n const median = quantileOf(sorted, 0.5);\n const q3 = quantileOf(sorted, 0.75);\n const min = sorted[0];\n const max = sorted[n - 1];\n let sum = 0;\n for (let i = 0; i < n; i++) sum += sorted[i];\n const whisker = options.whisker ?? 1.5;\n let low = min;\n let high = max;\n const outliers: number[] = [];\n if (whisker !== \"minmax\") {\n const reach = (q3 - q1) * whisker;\n const from = q1 - reach;\n const to = q3 + reach;\n let i = 0;\n while (i < n && sorted[i] < from) outliers.push(sorted[i++]);\n low = i < n ? sorted[i] : q1;\n let j = n - 1;\n const upper: number[] = [];\n while (j >= 0 && sorted[j] > to) upper.push(sorted[j--]);\n high = j >= 0 ? sorted[j] : q3;\n outliers.push(...upper.reverse());\n }\n return {\n low: Math.min(low, q1),\n q1,\n median,\n q3,\n high: Math.max(high, q3),\n outliers,\n min,\n max,\n mean: sum / n,\n count: n,\n };\n};\n\n/** A sample of a box plot */\nexport interface BoxplotGroup {\n /** Category (or position) of the box */\n x: ChartXValue;\n /** Raw values: their quartiles, whiskers and outliers are computed */\n values: ArrayLike<number>;\n /** Color of the box (any CSS color) */\n color?: string;\n}\n\n/** Box plot data of raw samples (one datum per group) */\nexport const boxplotData = (\n groups: readonly BoxplotGroup[],\n options: BoxplotStatsOptions = {},\n): ChartPointDatum[] =>\n groups.map((g) => {\n const s = boxplotStats(g.values, options);\n return {\n x: g.x,\n y: Number.isFinite(s.median) ? s.median : null,\n low: s.low,\n q1: s.q1,\n q3: s.q3,\n high: s.high,\n outliers: s.outliers,\n ...(g.color ? { color: g.color } : {}),\n };\n });\n\n/** Series of a BoxPlotChart */\nexport const boxplotSeries = (series: readonly ChartSeries[]) =>\n withSeriesType(series, \"boxplot\");\n\n// ---------------------------------------------------------------- waterfall\n\n/** A bar of a waterfall chart */\nexport interface WaterfallStep {\n /** Category name of the bar */\n label: string;\n /** Change (positive or negative); ignored by totals */\n value?: number;\n /**\n * `subtotal` and `total` bars show the running total, from zero\n * @default \"change\"\n */\n kind?: \"change\" | \"subtotal\" | \"total\";\n /** Color of this bar (any CSS color) */\n color?: string;\n}\n\n/** Options of `waterfallSeries` */\nexport interface WaterfallOptions {\n /** Name of the series (tooltip) */\n name?: string;\n /** Color of the increases @default the success color */\n upColor?: string;\n /** Color of the decreases @default the danger color */\n downColor?: string;\n /** Color of the totals and subtotals @default the primary color */\n totalColor?: string;\n /**\n * Value the first change starts from\n * @default 0\n */\n start?: number;\n /**\n * Writes the change (or the total) at the end of every bar\n * @default false\n */\n labels?: boolean;\n /** Formats the values (labels, tooltip) */\n format?: (value: number) => string;\n /**\n * Locale of the default name\n * @default the page language\n */\n locale?: string;\n}\n\n/**\n * Floating bar series of a waterfall (bridge) chart: every change starts\n * where the previous one ended; totals and subtotals start from zero\n */\nexport const waterfallSeries = (\n steps: readonly WaterfallStep[],\n options: WaterfallOptions = {},\n): ChartSeries => {\n const up = options.upColor ?? \"var(--success-color, #16a34a)\";\n const down = options.downColor ?? \"var(--danger-color, #dc2626)\";\n const total = options.totalColor ?? \"var(--primary-color, #4f46e5)\";\n let running = options.start ?? 0;\n const data: ChartPointDatum[] = steps.map((step) => {\n if (step.kind === \"total\" || step.kind === \"subtotal\") {\n return { x: step.label, y: running, color: step.color ?? total };\n }\n const value = step.value ?? 0;\n const from = running;\n running += value;\n return {\n x: step.label,\n y0: from,\n y: running,\n color: step.color ?? (value >= 0 ? up : down),\n };\n });\n return {\n id: \"waterfall\",\n name: options.name ?? presetLabels(options.locale).change,\n type: \"bar\",\n color: total,\n data,\n showLabels: options.labels ?? false,\n format: options.format,\n };\n};\n\n// ------------------------------------------------------------------ bubbles\n\n/** Options of `bubbleSeries` */\nexport interface BubbleOptions {\n /**\n * Diameter in pixels of the smallest bubbles\n * @default 6\n */\n minSize?: number;\n /**\n * Diameter in pixels of the largest value\n * @default 48\n */\n maxSize?: number;\n /** Value drawn with `maxSize` (share a scale between charts); the largest value by default */\n maxValue?: number;\n}\n\n/**\n * Scatter series whose dots are sized by the `value` of their points: the\n * area of a bubble is proportional to its value (diameter ∝ √value), the\n * scale is shared by every series. Points are drawn from the largest to\n * the smallest, so small bubbles stay on top (hover indexes refer to that\n * order).\n */\nexport const bubbleSeries = (\n series: readonly ChartSeries[],\n options: BubbleOptions = {},\n): ChartSeries[] => {\n const minSize = options.minSize ?? 6;\n const maxSize = options.maxSize ?? 48;\n const valuesOf = (data: ChartSeries[\"data\"]): ArrayLike<number> | null => {\n if (typeof data !== \"object\" || data === null) return null;\n if (!(\"length\" in data)) {\n const v = (data as { value?: ArrayLike<number> }).value;\n return v ?? null;\n }\n const list = data as ArrayLike<unknown>;\n const out = new Float64Array(list.length).fill(NaN);\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n if (item && typeof item === \"object\" && !Array.isArray(item)) {\n const v = (item as { value?: unknown }).value;\n if (typeof v === \"number\") out[i] = v;\n }\n }\n return out;\n };\n let top = options.maxValue ?? 0;\n if (options.maxValue === undefined) {\n for (const s of series) {\n const values = valuesOf(s.data);\n if (!values) continue;\n for (let i = 0; i < values.length; i++) {\n const v = Math.abs(values[i]);\n if (v > top) top = v;\n }\n }\n }\n const sizeOf = (v: number) =>\n Number.isFinite(v) && top > 0\n ? Math.max(minSize, maxSize * Math.sqrt(Math.min(1, Math.abs(v) / top)))\n : minSize;\n return series.map((s) => {\n const base: ChartSeries = {\n ...s,\n type: s.type ?? \"scatter\",\n opacity: s.opacity ?? 0.68,\n };\n if (base.type !== \"scatter\") return base;\n const data = s.data;\n if (typeof data === \"object\" && data !== null && !(\"length\" in data)) {\n const values = (data as { value?: ArrayLike<number> }).value;\n if (!values) return base;\n const size = new Float32Array(values.length);\n for (let i = 0; i < values.length; i++) size[i] = sizeOf(values[i]);\n return { ...base, data: { ...data, size } };\n }\n const list = data as ArrayLike<unknown>;\n const points: ChartPointDatum[] = [];\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n if (!item || typeof item !== \"object\" || Array.isArray(item)) continue;\n const d = item as ChartPointDatum;\n points.push({\n ...d,\n size: d.size ?? sizeOf(typeof d.value === \"number\" ? d.value : NaN),\n });\n }\n points.sort((a, b) => (b.size ?? 0) - (a.size ?? 0));\n return { ...base, data: points };\n });\n};\n\n// -------------------------------------------------------------------- gantt\n\n/** A task (or milestone) of a Gantt chart */\nexport interface GanttTask {\n /** Row name (unique) */\n name: string;\n /** Start (a timestamp or a date) */\n start: number | Date;\n /** End; omitted for milestones */\n end?: number | Date;\n /** Share done, 0-1: drawn as a solid bar over the task */\n progress?: number;\n /** Group (phase, team): a color and a legend entry per group */\n group?: string;\n /** Color of the task (any CSS color); the color of its group by default */\n color?: string;\n /** Draws a dot at `start` instead of a bar */\n milestone?: boolean;\n}\n\n/** Options of `ganttSeries` */\nexport interface GanttOptions {\n /** Colors of the groups in order of appearance (any CSS colors); the chart palette by default */\n colors?: readonly string[];\n /**\n * Name of the tasks without a group\n * @default \"Tasks\" (in the `locale`)\n */\n taskName?: string;\n /**\n * Name of the progress bars (legend, tooltip)\n * @default \"Progress\" (in the `locale`)\n */\n progressName?: string;\n /**\n * Name of the milestones (legend, tooltip)\n * @default \"Milestones\" (in the `locale`)\n */\n milestoneName?: string;\n /** Formats the progress shares (tooltip) @default \"60%\" */\n formatProgress?: (share: number) => string;\n /**\n * Locale of the default names and of the progress shares\n * @default the page language\n */\n locale?: string;\n}\n\n/** Series of a Gantt chart and the row names in order */\nexport interface GanttSeries {\n series: ChartSeries[];\n /** Task names from top to bottom (the `categories` of the x axis) */\n categories: string[];\n /** Time range of the tasks with a small margin (the `min` / `max` of the value axis) */\n domain: [number, number];\n}\n\nconst THEMED = [\n \"--primary-color\",\n \"--success-color\",\n \"--warning-color\",\n \"--danger-color\",\n \"--info-color\",\n];\nconst FALLBACK = [\n \"#4f46e5\",\n \"#10b981\",\n \"#f59e0b\",\n \"#ef4444\",\n \"#0ea5e9\",\n \"#8b5cf6\",\n \"#14b8a6\",\n \"#f97316\",\n];\n\n/** Color `k` of the chart palette as a CSS color (theme variables first) */\nexport const paletteColor = (k: number): string => {\n const i = k % 8;\n const fallback = FALLBACK[i] ?? \"#4f46e5\";\n const themed = THEMED[i];\n return themed\n ? `var(--chart-series-${i + 1}, var(${themed}, ${fallback}))`\n : `var(--chart-series-${i + 1}, ${fallback})`;\n};\n\nconst time = (v: number | Date | undefined) =>\n v instanceof Date ? v.getTime() : v === undefined ? NaN : v;\n\n/**\n * Floating bar series of a Gantt chart (horizontal, on a time axis): a\n * translucent bar per task with its progress drawn over it, one series per\n * group, and the milestones as dots\n */\nexport const ganttSeries = (\n tasks: readonly GanttTask[],\n options: GanttOptions = {},\n): GanttSeries => {\n const locale = resolveLocale(options.locale);\n const names = presetLabels(locale);\n const taskName = options.taskName ?? names.tasks;\n const groups: string[] = [];\n for (const t of tasks) {\n const g = t.group ?? taskName;\n if (!t.milestone && !groups.includes(g)) groups.push(g);\n }\n const colorOf = (g: string) => {\n const k = Math.max(0, groups.indexOf(g));\n return options.colors?.[k] ?? paletteColor(k);\n };\n const formatProgress =\n options.formatProgress ??\n ((share: number) =>\n numberFormat(locale, {\n style: \"percent\",\n maximumFractionDigits: 0,\n }).format(share));\n const series: ChartSeries[] = groups.map((g) => ({\n id: `gantt:${g}`,\n name: g,\n type: \"bar\",\n stack: \"gantt\",\n color: colorOf(g),\n opacity: 0.3,\n barWidth: 0.62,\n radius: 4,\n data: tasks\n .filter((t) => !t.milestone && (t.group ?? taskName) === g)\n .map((t) => ({\n x: t.name,\n y0: time(t.start),\n y: time(t.end ?? t.start),\n ...(t.color ? { color: t.color } : {}),\n })),\n }));\n const progress = tasks.filter(\n (t) => !t.milestone && t.progress !== undefined && t.progress > 0,\n );\n if (progress.length) {\n series.push({\n id: \"gantt:progress\",\n name: options.progressName ?? names.progress,\n type: \"bar\",\n stack: \"gantt\",\n // every bar has the color of its task: a neutral legend swatch\n color: \"var(--text-secondary-color, #6b7280)\",\n radius: 4,\n data: progress.map((t) => {\n const start = time(t.start);\n const end = time(t.end ?? t.start);\n const share = Math.min(1, Math.max(0, t.progress ?? 0));\n return {\n x: t.name,\n y0: start,\n y: start + (end - start) * share,\n label: formatProgress(share),\n color: t.color ?? colorOf(t.group ?? taskName),\n };\n }),\n });\n }\n const milestones = tasks.filter((t) => t.milestone);\n if (milestones.length) {\n series.push({\n id: \"gantt:milestones\",\n name: options.milestoneName ?? names.milestones,\n type: \"scatter\",\n color: \"var(--text-color, #1f2937)\",\n pointSize: 13,\n opacity: 1,\n data: milestones.map((t) => ({\n x: t.name,\n y: time(t.start),\n ...(t.color ? { color: t.color } : {}),\n })),\n });\n }\n let lo = Infinity;\n let hi = -Infinity;\n for (const t of tasks) {\n for (const v of [time(t.start), time(t.end ?? t.start)]) {\n if (v < lo) lo = v;\n if (v > hi) hi = v;\n }\n }\n // room for the milestone dots at the ends\n const pad = Number.isFinite(hi - lo) ? Math.max((hi - lo) * 0.025, 1) : 0;\n return {\n series,\n categories: tasks.map((t) => t.name),\n domain: Number.isFinite(lo) ? [lo - pad, hi + pad] : [0, 1],\n };\n};\n\n// -------------------------------------------------------------- range areas\n\n/** Series of a RangeAreaChart: bands between `y0` and `y` (thin edges) */\nexport const rangeAreaSeries = (\n series: readonly ChartSeries[],\n curve?: ChartCurve,\n) =>\n withSeriesType(series, \"area\", undefined, curve).map((s) =>\n s.type === \"area\" ? { ...s, lineWidth: s.lineWidth ?? 1.5 } : s,\n );\n"],"mappings":"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"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
import { ChartCurve, ChartOptions, ChartSeries, ChartSeriesType } from './types.cjs';
|
|
1
|
+
import { ChartCurve, ChartOptions, ChartPointDatum, ChartSeries, ChartSeriesType, ChartXValue } from './types.cjs';
|
|
2
|
+
/** Default series names of the presets */
|
|
3
|
+
interface PresetLabels {
|
|
4
|
+
value: string;
|
|
5
|
+
values: string;
|
|
6
|
+
count: string;
|
|
7
|
+
change: string;
|
|
8
|
+
tasks: string;
|
|
9
|
+
progress: string;
|
|
10
|
+
milestones: string;
|
|
11
|
+
}
|
|
12
|
+
/** Default series names of the presets in a locale (the page language by default) */
|
|
13
|
+
export declare const presetLabels: (locale?: string) => PresetLabels;
|
|
2
14
|
/** Gives the series without a `type` the type of the component */
|
|
3
15
|
export declare const withSeriesType: (series: readonly ChartSeries[], type: ChartSeriesType, stack?: string, curve?: ChartCurve) => ChartSeries[];
|
|
4
16
|
/** Options of the line-like components */
|
|
@@ -167,3 +179,239 @@ export declare const quadrantCenter: (config: Pick<QuadrantConfig, "xDomain" | "
|
|
|
167
179
|
};
|
|
168
180
|
/** Engine options of a quadrant matrix */
|
|
169
181
|
export declare const quadrantChartOptions: (config: QuadrantConfig, base?: Omit<ChartOptions, "series">) => ChartOptions;
|
|
182
|
+
/**
|
|
183
|
+
* Quantiles of values (`[0.5, 0.95, 0.99]` gives the median, p95 and p99),
|
|
184
|
+
* linearly interpolated like NumPy and Excel; non-finite values are ignored
|
|
185
|
+
*/
|
|
186
|
+
export declare const quantiles: (values: ArrayLike<number>, ps: readonly number[]) => number[];
|
|
187
|
+
/** How the bins of a histogram are chosen: a count, or a rule */
|
|
188
|
+
export type HistogramBinning = number | "auto" | "sturges" | "freedman-diaconis";
|
|
189
|
+
/** Options of `binValues` */
|
|
190
|
+
export interface BinOptions {
|
|
191
|
+
/**
|
|
192
|
+
* Number of bins, or the rule choosing it: `sturges` (log2 n + 1, for
|
|
193
|
+
* small normal-ish samples), `freedman-diaconis` (bin width from the
|
|
194
|
+
* interquartile range, robust to outliers); `auto` uses Freedman-Diaconis
|
|
195
|
+
* and Sturges when the spread is zero
|
|
196
|
+
* @default "auto"
|
|
197
|
+
*/
|
|
198
|
+
bins?: HistogramBinning;
|
|
199
|
+
/** Range covered by the bins (values outside are not counted); the data range by default */
|
|
200
|
+
domain?: readonly [number, number];
|
|
201
|
+
/**
|
|
202
|
+
* Rounds the bin width to 1, 2 or 5 × 10^k and aligns the edges on it
|
|
203
|
+
* @default true
|
|
204
|
+
*/
|
|
205
|
+
nice?: boolean;
|
|
206
|
+
}
|
|
207
|
+
/** Bins of a histogram */
|
|
208
|
+
export interface HistogramBins {
|
|
209
|
+
/** Edges of the bins: one more than the bins */
|
|
210
|
+
edges: number[];
|
|
211
|
+
/** Number of values in every bin */
|
|
212
|
+
counts: number[];
|
|
213
|
+
/** Width of a bin */
|
|
214
|
+
width: number;
|
|
215
|
+
/** Number of values counted (finite, inside the domain) */
|
|
216
|
+
total: number;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Counts values into bins of equal width: linear in the number of values
|
|
220
|
+
* (a million samples take a few milliseconds; the spread of large samples
|
|
221
|
+
* is estimated on an even subsample)
|
|
222
|
+
*/
|
|
223
|
+
export declare const binValues: (values: ArrayLike<number>, options?: BinOptions) => HistogramBins;
|
|
224
|
+
/** Options of `histogramSeries` */
|
|
225
|
+
export interface HistogramSeriesOptions extends BinOptions {
|
|
226
|
+
/** Name of the series (legend, tooltip) */
|
|
227
|
+
name?: string;
|
|
228
|
+
/** Bar color (any CSS color) */
|
|
229
|
+
color?: string;
|
|
230
|
+
/** Formats the edges of the bins in the tooltip */
|
|
231
|
+
format?: (value: number) => string;
|
|
232
|
+
/** Bins already computed (`binValues`): `values` are then ignored */
|
|
233
|
+
binned?: HistogramBins;
|
|
234
|
+
/**
|
|
235
|
+
* Locale of the default name and of the bin edges
|
|
236
|
+
* @default the page language
|
|
237
|
+
*/
|
|
238
|
+
locale?: string;
|
|
239
|
+
}
|
|
240
|
+
/** Bar series of a histogram: one touching bar per bin, labelled with its range */
|
|
241
|
+
export declare const histogramSeries: (values: ArrayLike<number>, options?: HistogramSeriesOptions) => ChartSeries;
|
|
242
|
+
/** Options of `boxplotStats` */
|
|
243
|
+
export interface BoxplotStatsOptions {
|
|
244
|
+
/**
|
|
245
|
+
* Reach of the whiskers in interquartile ranges beyond the box (Tukey:
|
|
246
|
+
* 1.5); `"minmax"` extends them to the extremes (no outliers)
|
|
247
|
+
* @default 1.5
|
|
248
|
+
*/
|
|
249
|
+
whisker?: number | "minmax";
|
|
250
|
+
}
|
|
251
|
+
/** Five-number summary of a sample, with the outliers */
|
|
252
|
+
export interface BoxplotStats {
|
|
253
|
+
/** Lower whisker: the smallest value within reach */
|
|
254
|
+
low: number;
|
|
255
|
+
/** First quartile */
|
|
256
|
+
q1: number;
|
|
257
|
+
median: number;
|
|
258
|
+
/** Third quartile */
|
|
259
|
+
q3: number;
|
|
260
|
+
/** Upper whisker: the largest value within reach */
|
|
261
|
+
high: number;
|
|
262
|
+
/** Values beyond the whiskers */
|
|
263
|
+
outliers: number[];
|
|
264
|
+
min: number;
|
|
265
|
+
max: number;
|
|
266
|
+
mean: number;
|
|
267
|
+
/** Number of finite values */
|
|
268
|
+
count: number;
|
|
269
|
+
}
|
|
270
|
+
/** Quartiles, whiskers (Tukey's 1.5 IQR by default) and outliers of raw values */
|
|
271
|
+
export declare const boxplotStats: (values: ArrayLike<number>, options?: BoxplotStatsOptions) => BoxplotStats;
|
|
272
|
+
/** A sample of a box plot */
|
|
273
|
+
export interface BoxplotGroup {
|
|
274
|
+
/** Category (or position) of the box */
|
|
275
|
+
x: ChartXValue;
|
|
276
|
+
/** Raw values: their quartiles, whiskers and outliers are computed */
|
|
277
|
+
values: ArrayLike<number>;
|
|
278
|
+
/** Color of the box (any CSS color) */
|
|
279
|
+
color?: string;
|
|
280
|
+
}
|
|
281
|
+
/** Box plot data of raw samples (one datum per group) */
|
|
282
|
+
export declare const boxplotData: (groups: readonly BoxplotGroup[], options?: BoxplotStatsOptions) => ChartPointDatum[];
|
|
283
|
+
/** Series of a BoxPlotChart */
|
|
284
|
+
export declare const boxplotSeries: (series: readonly ChartSeries[]) => ChartSeries[];
|
|
285
|
+
/** A bar of a waterfall chart */
|
|
286
|
+
export interface WaterfallStep {
|
|
287
|
+
/** Category name of the bar */
|
|
288
|
+
label: string;
|
|
289
|
+
/** Change (positive or negative); ignored by totals */
|
|
290
|
+
value?: number;
|
|
291
|
+
/**
|
|
292
|
+
* `subtotal` and `total` bars show the running total, from zero
|
|
293
|
+
* @default "change"
|
|
294
|
+
*/
|
|
295
|
+
kind?: "change" | "subtotal" | "total";
|
|
296
|
+
/** Color of this bar (any CSS color) */
|
|
297
|
+
color?: string;
|
|
298
|
+
}
|
|
299
|
+
/** Options of `waterfallSeries` */
|
|
300
|
+
export interface WaterfallOptions {
|
|
301
|
+
/** Name of the series (tooltip) */
|
|
302
|
+
name?: string;
|
|
303
|
+
/** Color of the increases @default the success color */
|
|
304
|
+
upColor?: string;
|
|
305
|
+
/** Color of the decreases @default the danger color */
|
|
306
|
+
downColor?: string;
|
|
307
|
+
/** Color of the totals and subtotals @default the primary color */
|
|
308
|
+
totalColor?: string;
|
|
309
|
+
/**
|
|
310
|
+
* Value the first change starts from
|
|
311
|
+
* @default 0
|
|
312
|
+
*/
|
|
313
|
+
start?: number;
|
|
314
|
+
/**
|
|
315
|
+
* Writes the change (or the total) at the end of every bar
|
|
316
|
+
* @default false
|
|
317
|
+
*/
|
|
318
|
+
labels?: boolean;
|
|
319
|
+
/** Formats the values (labels, tooltip) */
|
|
320
|
+
format?: (value: number) => string;
|
|
321
|
+
/**
|
|
322
|
+
* Locale of the default name
|
|
323
|
+
* @default the page language
|
|
324
|
+
*/
|
|
325
|
+
locale?: string;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Floating bar series of a waterfall (bridge) chart: every change starts
|
|
329
|
+
* where the previous one ended; totals and subtotals start from zero
|
|
330
|
+
*/
|
|
331
|
+
export declare const waterfallSeries: (steps: readonly WaterfallStep[], options?: WaterfallOptions) => ChartSeries;
|
|
332
|
+
/** Options of `bubbleSeries` */
|
|
333
|
+
export interface BubbleOptions {
|
|
334
|
+
/**
|
|
335
|
+
* Diameter in pixels of the smallest bubbles
|
|
336
|
+
* @default 6
|
|
337
|
+
*/
|
|
338
|
+
minSize?: number;
|
|
339
|
+
/**
|
|
340
|
+
* Diameter in pixels of the largest value
|
|
341
|
+
* @default 48
|
|
342
|
+
*/
|
|
343
|
+
maxSize?: number;
|
|
344
|
+
/** Value drawn with `maxSize` (share a scale between charts); the largest value by default */
|
|
345
|
+
maxValue?: number;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Scatter series whose dots are sized by the `value` of their points: the
|
|
349
|
+
* area of a bubble is proportional to its value (diameter ∝ √value), the
|
|
350
|
+
* scale is shared by every series. Points are drawn from the largest to
|
|
351
|
+
* the smallest, so small bubbles stay on top (hover indexes refer to that
|
|
352
|
+
* order).
|
|
353
|
+
*/
|
|
354
|
+
export declare const bubbleSeries: (series: readonly ChartSeries[], options?: BubbleOptions) => ChartSeries[];
|
|
355
|
+
/** A task (or milestone) of a Gantt chart */
|
|
356
|
+
export interface GanttTask {
|
|
357
|
+
/** Row name (unique) */
|
|
358
|
+
name: string;
|
|
359
|
+
/** Start (a timestamp or a date) */
|
|
360
|
+
start: number | Date;
|
|
361
|
+
/** End; omitted for milestones */
|
|
362
|
+
end?: number | Date;
|
|
363
|
+
/** Share done, 0-1: drawn as a solid bar over the task */
|
|
364
|
+
progress?: number;
|
|
365
|
+
/** Group (phase, team): a color and a legend entry per group */
|
|
366
|
+
group?: string;
|
|
367
|
+
/** Color of the task (any CSS color); the color of its group by default */
|
|
368
|
+
color?: string;
|
|
369
|
+
/** Draws a dot at `start` instead of a bar */
|
|
370
|
+
milestone?: boolean;
|
|
371
|
+
}
|
|
372
|
+
/** Options of `ganttSeries` */
|
|
373
|
+
export interface GanttOptions {
|
|
374
|
+
/** Colors of the groups in order of appearance (any CSS colors); the chart palette by default */
|
|
375
|
+
colors?: readonly string[];
|
|
376
|
+
/**
|
|
377
|
+
* Name of the tasks without a group
|
|
378
|
+
* @default "Tasks" (in the `locale`)
|
|
379
|
+
*/
|
|
380
|
+
taskName?: string;
|
|
381
|
+
/**
|
|
382
|
+
* Name of the progress bars (legend, tooltip)
|
|
383
|
+
* @default "Progress" (in the `locale`)
|
|
384
|
+
*/
|
|
385
|
+
progressName?: string;
|
|
386
|
+
/**
|
|
387
|
+
* Name of the milestones (legend, tooltip)
|
|
388
|
+
* @default "Milestones" (in the `locale`)
|
|
389
|
+
*/
|
|
390
|
+
milestoneName?: string;
|
|
391
|
+
/** Formats the progress shares (tooltip) @default "60%" */
|
|
392
|
+
formatProgress?: (share: number) => string;
|
|
393
|
+
/**
|
|
394
|
+
* Locale of the default names and of the progress shares
|
|
395
|
+
* @default the page language
|
|
396
|
+
*/
|
|
397
|
+
locale?: string;
|
|
398
|
+
}
|
|
399
|
+
/** Series of a Gantt chart and the row names in order */
|
|
400
|
+
export interface GanttSeries {
|
|
401
|
+
series: ChartSeries[];
|
|
402
|
+
/** Task names from top to bottom (the `categories` of the x axis) */
|
|
403
|
+
categories: string[];
|
|
404
|
+
/** Time range of the tasks with a small margin (the `min` / `max` of the value axis) */
|
|
405
|
+
domain: [number, number];
|
|
406
|
+
}
|
|
407
|
+
/** Color `k` of the chart palette as a CSS color (theme variables first) */
|
|
408
|
+
export declare const paletteColor: (k: number) => string;
|
|
409
|
+
/**
|
|
410
|
+
* Floating bar series of a Gantt chart (horizontal, on a time axis): a
|
|
411
|
+
* translucent bar per task with its progress drawn over it, one series per
|
|
412
|
+
* group, and the milestones as dots
|
|
413
|
+
*/
|
|
414
|
+
export declare const ganttSeries: (tasks: readonly GanttTask[], options?: GanttOptions) => GanttSeries;
|
|
415
|
+
/** Series of a RangeAreaChart: bands between `y0` and `y` (thin edges) */
|
|
416
|
+
export declare const rangeAreaSeries: (series: readonly ChartSeries[], curve?: ChartCurve) => ChartSeries[];
|
|
417
|
+
export {};
|