minerva-design 1.3.0 → 1.5.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 +18 -0
- package/README.md +21 -21
- package/custom-elements.json +18546 -7329
- package/dist/angular/fesm2022/minerva-angular.mjs +8303 -172
- package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
- package/dist/angular/types/minerva-angular.d.ts +2809 -0
- package/dist/charts/canvas.d.cts +8 -3
- package/dist/charts/canvas.d.ts +8 -3
- package/dist/charts/core.cjs +1 -1
- package/dist/charts/core.d.cts +10 -5
- package/dist/charts/core.d.ts +10 -5
- package/dist/charts/core.js +27 -8
- package/dist/charts/engine/axis.cjs +1 -1
- package/dist/charts/engine/axis.cjs.map +1 -1
- package/dist/charts/engine/axis.js +43 -20
- 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 +193 -116
- 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 +486 -350
- package/dist/charts/engine/chart.js.map +1 -1
- package/dist/charts/engine/color.cjs +1 -1
- package/dist/charts/engine/color.cjs.map +1 -1
- package/dist/charts/engine/color.d.cts +18 -0
- package/dist/charts/engine/color.d.ts +18 -0
- package/dist/charts/engine/color.js +47 -1
- package/dist/charts/engine/color.js.map +1 -1
- package/dist/charts/engine/controller.cjs +2 -2
- package/dist/charts/engine/controller.cjs.map +1 -1
- package/dist/charts/engine/controller.d.cts +44 -4
- package/dist/charts/engine/controller.d.ts +44 -4
- package/dist/charts/engine/controller.js +421 -314
- 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 +9 -1
- package/dist/charts/engine/data.d.ts +9 -1
- package/dist/charts/engine/data.js +65 -49
- package/dist/charts/engine/data.js.map +1 -1
- package/dist/charts/engine/defaults.cjs +2 -0
- package/dist/charts/engine/defaults.cjs.map +1 -0
- package/dist/charts/engine/defaults.d.cts +20 -0
- package/dist/charts/engine/defaults.d.ts +20 -0
- package/dist/charts/engine/defaults.js +35 -0
- package/dist/charts/engine/defaults.js.map +1 -0
- package/dist/charts/engine/format.cjs +1 -1
- package/dist/charts/engine/format.cjs.map +1 -1
- package/dist/charts/engine/format.d.cts +27 -6
- package/dist/charts/engine/format.d.ts +27 -6
- package/dist/charts/engine/format.js +59 -21
- package/dist/charts/engine/format.js.map +1 -1
- package/dist/charts/engine/graph/chart.cjs +2 -0
- package/dist/charts/engine/graph/chart.cjs.map +1 -0
- package/dist/charts/engine/graph/chart.d.cts +3 -0
- package/dist/charts/engine/graph/chart.d.ts +3 -0
- package/dist/charts/engine/graph/chart.js +1565 -0
- package/dist/charts/engine/graph/chart.js.map +1 -0
- package/dist/charts/engine/graph/circular.cjs +2 -0
- package/dist/charts/engine/graph/circular.cjs.map +1 -0
- package/dist/charts/engine/graph/circular.d.cts +16 -0
- package/dist/charts/engine/graph/circular.d.ts +16 -0
- package/dist/charts/engine/graph/circular.js +62 -0
- package/dist/charts/engine/graph/circular.js.map +1 -0
- package/dist/charts/engine/graph/dag.cjs +2 -0
- package/dist/charts/engine/graph/dag.cjs.map +1 -0
- package/dist/charts/engine/graph/dag.d.cts +34 -0
- package/dist/charts/engine/graph/dag.d.ts +34 -0
- package/dist/charts/engine/graph/dag.js +314 -0
- package/dist/charts/engine/graph/dag.js.map +1 -0
- package/dist/charts/engine/graph/dom.cjs +2 -0
- package/dist/charts/engine/graph/dom.cjs.map +1 -0
- package/dist/charts/engine/graph/dom.d.cts +23 -0
- package/dist/charts/engine/graph/dom.d.ts +23 -0
- package/dist/charts/engine/graph/dom.js +158 -0
- package/dist/charts/engine/graph/dom.js.map +1 -0
- package/dist/charts/engine/graph/force.cjs +2 -0
- package/dist/charts/engine/graph/force.cjs.map +1 -0
- package/dist/charts/engine/graph/force.d.cts +67 -0
- package/dist/charts/engine/graph/force.d.ts +67 -0
- package/dist/charts/engine/graph/force.js +325 -0
- package/dist/charts/engine/graph/force.js.map +1 -0
- package/dist/charts/engine/graph/geometry.cjs +2 -0
- package/dist/charts/engine/graph/geometry.cjs.map +1 -0
- package/dist/charts/engine/graph/geometry.d.cts +37 -0
- package/dist/charts/engine/graph/geometry.d.ts +37 -0
- package/dist/charts/engine/graph/geometry.js +144 -0
- package/dist/charts/engine/graph/geometry.js.map +1 -0
- package/dist/charts/engine/graph/index.cjs +1 -0
- package/dist/charts/engine/graph/index.d.cts +6 -0
- package/dist/charts/engine/graph/index.d.ts +6 -0
- package/dist/charts/engine/graph/index.js +6 -0
- package/dist/charts/engine/graph/labels.cjs +2 -0
- package/dist/charts/engine/graph/labels.cjs.map +1 -0
- package/dist/charts/engine/graph/labels.d.cts +12 -0
- package/dist/charts/engine/graph/labels.d.ts +12 -0
- package/dist/charts/engine/graph/labels.js +128 -0
- package/dist/charts/engine/graph/labels.js.map +1 -0
- package/dist/charts/engine/graph/model.cjs +2 -0
- package/dist/charts/engine/graph/model.cjs.map +1 -0
- package/dist/charts/engine/graph/model.d.cts +43 -0
- package/dist/charts/engine/graph/model.d.ts +43 -0
- package/dist/charts/engine/graph/model.js +88 -0
- package/dist/charts/engine/graph/model.js.map +1 -0
- package/dist/charts/engine/graph/sizing.cjs +2 -0
- package/dist/charts/engine/graph/sizing.cjs.map +1 -0
- package/dist/charts/engine/graph/sizing.d.cts +33 -0
- package/dist/charts/engine/graph/sizing.d.ts +33 -0
- package/dist/charts/engine/graph/sizing.js +60 -0
- package/dist/charts/engine/graph/sizing.js.map +1 -0
- package/dist/charts/engine/graph/tree.cjs +2 -0
- package/dist/charts/engine/graph/tree.cjs.map +1 -0
- package/dist/charts/engine/graph/tree.d.cts +30 -0
- package/dist/charts/engine/graph/tree.d.ts +30 -0
- package/dist/charts/engine/graph/tree.js +218 -0
- package/dist/charts/engine/graph/tree.js.map +1 -0
- package/dist/charts/engine/graph/types.d.cts +626 -0
- package/dist/charts/engine/graph/types.d.ts +626 -0
- package/dist/charts/engine/graph/worker.cjs +46 -0
- package/dist/charts/engine/graph/worker.cjs.map +1 -0
- package/dist/charts/engine/graph/worker.d.cts +36 -0
- package/dist/charts/engine/graph/worker.d.ts +36 -0
- package/dist/charts/engine/graph/worker.js +129 -0
- package/dist/charts/engine/graph/worker.js.map +1 -0
- package/dist/charts/engine/items.cjs +1 -1
- package/dist/charts/engine/items.cjs.map +1 -1
- package/dist/charts/engine/items.d.cts +15 -2
- package/dist/charts/engine/items.d.ts +15 -2
- package/dist/charts/engine/items.js +257 -81
- 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 +98 -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 +43 -2
- package/dist/charts/engine/layout.d.ts +43 -2
- package/dist/charts/engine/layout.js +62 -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 +77 -2
- package/dist/charts/engine/model.d.ts +77 -2
- package/dist/charts/engine/model.js +304 -116
- 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 +49 -0
- package/dist/charts/engine/orderbook/format.d.ts +49 -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 +822 -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/layout.cjs +2 -0
- package/dist/charts/engine/orderbook/layout.cjs.map +1 -0
- package/dist/charts/engine/orderbook/layout.d.cts +37 -0
- package/dist/charts/engine/orderbook/layout.d.ts +37 -0
- package/dist/charts/engine/orderbook/layout.js +70 -0
- package/dist/charts/engine/orderbook/layout.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 +751 -0
- package/dist/charts/engine/orderbook/types.d.ts +751 -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 +28 -2
- package/dist/charts/engine/overlay.d.ts +28 -2
- package/dist/charts/engine/overlay.js +138 -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 +273 -3
- package/dist/charts/engine/presets.d.ts +273 -3
- package/dist/charts/engine/presets.js +390 -38
- 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.d.cts +2 -1
- package/dist/charts/engine/renderers/detect.d.ts +2 -1
- package/dist/charts/engine/renderers/detect.js +24 -19
- 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 +71 -8
- package/dist/charts/engine/scene.d.ts +71 -8
- package/dist/charts/engine/scene.js +465 -183
- 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 +49 -27
- package/dist/charts/engine/shapes/chart.js.map +1 -1
- package/dist/charts/engine/shapes/chord.cjs +2 -0
- package/dist/charts/engine/shapes/chord.cjs.map +1 -0
- package/dist/charts/engine/shapes/chord.d.cts +18 -0
- package/dist/charts/engine/shapes/chord.d.ts +18 -0
- package/dist/charts/engine/shapes/chord.js +414 -0
- package/dist/charts/engine/shapes/chord.js.map +1 -0
- 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 +7 -1
- package/dist/charts/engine/shapes/draw.d.ts +7 -1
- package/dist/charts/engine/shapes/draw.js +62 -19
- 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 +5 -1
- package/dist/charts/engine/shapes/hit.d.ts +5 -1
- package/dist/charts/engine/shapes/hit.js +89 -39
- package/dist/charts/engine/shapes/hit.js.map +1 -1
- package/dist/charts/engine/shapes/index.d.cts +6 -2
- package/dist/charts/engine/shapes/index.d.ts +6 -2
- 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 +154 -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 +10 -3
- package/dist/charts/engine/shapes/layout.d.ts +10 -3
- package/dist/charts/engine/shapes/layout.js +239 -124
- 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 +92 -8
- package/dist/charts/engine/shapes/scene.d.ts +92 -8
- package/dist/charts/engine/shapes/scene.js +76 -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 +550 -12
- package/dist/charts/engine/shapes/types.d.ts +550 -12
- package/dist/charts/engine/signature.cjs +1 -1
- package/dist/charts/engine/signature.cjs.map +1 -1
- package/dist/charts/engine/signature.js +1 -1
- package/dist/charts/engine/signature.js.map +1 -1
- package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
- package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
- package/dist/charts/engine/three-d/canvas2d.d.cts +7 -0
- package/dist/charts/engine/three-d/canvas2d.d.ts +7 -0
- package/dist/charts/engine/three-d/canvas2d.js +128 -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 +12 -0
- package/dist/charts/engine/three-d/detect.d.ts +12 -0
- package/dist/charts/engine/three-d/detect.js +37 -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 +82 -0
- package/dist/charts/engine/three-d/geometry.d.ts +82 -0
- package/dist/charts/engine/three-d/geometry.js +545 -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 +132 -0
- package/dist/charts/engine/three-d/model.d.ts +132 -0
- package/dist/charts/engine/three-d/model.js +279 -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 +204 -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 +103 -0
- package/dist/charts/engine/three-d/render-types.d.ts +103 -0
- package/dist/charts/engine/three-d/render-types.js +12 -0
- package/dist/charts/engine/three-d/render-types.js.map +1 -0
- package/dist/charts/engine/three-d/shaders.cjs +311 -0
- package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
- package/dist/charts/engine/three-d/shaders.d.cts +25 -0
- package/dist/charts/engine/three-d/shaders.d.ts +25 -0
- package/dist/charts/engine/three-d/shaders.js +210 -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 +29 -0
- package/dist/charts/engine/three-d/sort.d.ts +29 -0
- package/dist/charts/engine/three-d/sort.js +145 -0
- package/dist/charts/engine/three-d/sort.js.map +1 -0
- package/dist/charts/engine/three-d/types.d.cts +615 -0
- package/dist/charts/engine/three-d/types.d.ts +615 -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 +132 -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 +260 -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 +13 -0
- package/dist/charts/engine/trading/chart.d.ts +13 -0
- package/dist/charts/engine/trading/chart.js +2206 -0
- package/dist/charts/engine/trading/chart.js.map +1 -0
- package/dist/charts/engine/trading/drawings.cjs +3 -0
- package/dist/charts/engine/trading/drawings.cjs.map +1 -0
- package/dist/charts/engine/trading/drawings.d.cts +95 -0
- package/dist/charts/engine/trading/drawings.d.ts +95 -0
- package/dist/charts/engine/trading/drawings.js +423 -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 +73 -0
- package/dist/charts/engine/trading/format.d.ts +73 -0
- package/dist/charts/engine/trading/format.js +163 -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 +4 -0
- package/dist/charts/engine/trading/index.d.ts +4 -0
- package/dist/charts/engine/trading/index.js +4 -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 +275 -0
- package/dist/charts/engine/trading/indicators.d.ts +275 -0
- package/dist/charts/engine/trading/indicators.js +544 -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 +171 -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 +83 -0
- package/dist/charts/engine/trading/store.d.ts +83 -0
- package/dist/charts/engine/trading/store.js +150 -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 +85 -0
- package/dist/charts/engine/trading/studies.d.ts +85 -0
- package/dist/charts/engine/trading/studies.js +510 -0
- package/dist/charts/engine/trading/studies.js.map +1 -0
- package/dist/charts/engine/trading/sync.cjs +2 -0
- package/dist/charts/engine/trading/sync.cjs.map +1 -0
- package/dist/charts/engine/trading/sync.d.cts +8 -0
- package/dist/charts/engine/trading/sync.d.ts +8 -0
- package/dist/charts/engine/trading/sync.js +25 -0
- package/dist/charts/engine/trading/sync.js.map +1 -0
- package/dist/charts/engine/trading/types.d.cts +1131 -0
- package/dist/charts/engine/trading/types.d.ts +1131 -0
- package/dist/charts/engine/types.d.cts +247 -22
- package/dist/charts/engine/types.d.ts +247 -22
- package/dist/charts/index.cjs +1 -1
- package/dist/charts/index.d.cts +8 -4
- package/dist/charts/index.d.ts +8 -4
- package/dist/charts/index.js +30 -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 +312 -128
- package/dist/charts/react/charts.js.map +1 -1
- package/dist/charts/react/graph.cjs +2 -0
- package/dist/charts/react/graph.cjs.map +1 -0
- package/dist/charts/react/graph.d.cts +213 -0
- package/dist/charts/react/graph.d.ts +213 -0
- package/dist/charts/react/graph.js +159 -0
- package/dist/charts/react/graph.js.map +1 -0
- 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 +374 -9
- package/dist/charts/react/shapes.d.ts +374 -9
- package/dist/charts/react/shapes.js +323 -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 +145 -0
- package/dist/charts/react/trading.d.ts +145 -0
- package/dist/charts/react/trading.js +126 -0
- package/dist/charts/react/trading.js.map +1 -0
- package/dist/charts/react/types.d.cts +143 -8
- package/dist/charts/react/types.d.ts +143 -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 +43 -20
- package/dist/native/charts/src/engine/axis.js.map +1 -1
- package/dist/native/charts/src/engine/color.cjs +1 -1
- package/dist/native/charts/src/engine/color.cjs.map +1 -1
- package/dist/native/charts/src/engine/color.js +47 -5
- package/dist/native/charts/src/engine/color.js.map +1 -1
- package/dist/native/charts/src/engine/controller.cjs +2 -2
- package/dist/native/charts/src/engine/controller.cjs.map +1 -1
- package/dist/native/charts/src/engine/controller.js +415 -308
- 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 +65 -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 +59 -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 +98 -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 +62 -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 +307 -119
- 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 +470 -41
- 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 +489 -207
- 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 +369 -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/chord.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/chord.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/chord.js +414 -0
- package/dist/native/charts/src/engine/shapes/chord.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 +195 -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 +135 -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 +154 -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 +358 -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 +168 -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 +315 -229
- 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 +350 -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 +155 -0
- package/dist/native/components/Charts/types.d.ts +155 -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 +272 -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 +43 -0
- package/dist/native/components/ShapeChart/charts.d.ts +43 -0
- package/dist/native/components/ShapeChart/charts.js +429 -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 +113 -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 +681 -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 +115 -0
- package/dist/native/components/ShapeChart/recorder.d.ts +115 -0
- package/dist/native/components/ShapeChart/recorder.js +583 -0
- package/dist/native/components/ShapeChart/recorder.js.map +1 -0
- package/dist/native/components/ShapeChart/types.d.cts +594 -0
- package/dist/native/components/ShapeChart/types.d.ts +594 -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 +312 -98
- package/dist/native/source/components/Chart/types.ts +31 -1
- package/dist/native/source/components/Charts/charts.tsx +521 -0
- package/dist/native/source/components/Charts/index.ts +14 -0
- package/dist/native/source/components/Charts/types.ts +218 -0
- package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +486 -0
- package/dist/native/source/components/ShapeChart/charts.tsx +661 -0
- package/dist/native/source/components/ShapeChart/draw.tsx +201 -0
- package/dist/native/source/components/ShapeChart/geometry.ts +1366 -0
- package/dist/native/source/components/ShapeChart/index.ts +16 -0
- package/dist/native/source/components/ShapeChart/recorder.ts +845 -0
- package/dist/native/source/components/ShapeChart/types.ts +655 -0
- package/dist/native/source/index.ts +2 -0
- package/dist/native/source/manifest.ts +31 -4
- package/dist/taro/charts.d.ts +229 -4
- package/dist/taro/index.d.ts +1 -0
- package/dist/taro/index.js +8818 -2093
- package/dist/taro/manifest.d.ts +1 -0
- package/dist/taro/shape-charts.d.ts +629 -0
- package/dist/uni/AreaChart.vue +68 -0
- package/dist/uni/AreaChart.vue.d.ts +124 -0
- package/dist/uni/Badge.vue.d.ts +1 -1
- package/dist/uni/BarChart.vue.d.ts +5 -1
- package/dist/uni/BoxPlotChart.vue +66 -0
- package/dist/uni/BoxPlotChart.vue.d.ts +110 -0
- package/dist/uni/BubbleChart.vue +68 -0
- package/dist/uni/BubbleChart.vue.d.ts +110 -0
- package/dist/uni/BulletChart.vue +86 -0
- package/dist/uni/BulletChart.vue.d.ts +114 -0
- package/dist/uni/CalendarHeatmap.vue +92 -0
- package/dist/uni/CalendarHeatmap.vue.d.ts +131 -0
- package/dist/uni/CandlestickChart.vue +66 -0
- package/dist/uni/CandlestickChart.vue.d.ts +104 -0
- package/dist/uni/Chart.vue.d.ts +4 -0
- package/dist/uni/ChordChart.vue +93 -0
- package/dist/uni/ChordChart.vue.d.ts +136 -0
- package/dist/uni/DonutChart.vue +72 -0
- package/dist/uni/DonutChart.vue.d.ts +118 -0
- package/dist/uni/FunnelChart.vue +67 -0
- package/dist/uni/FunnelChart.vue.d.ts +108 -0
- package/dist/uni/GanttChart.vue +67 -0
- package/dist/uni/GanttChart.vue.d.ts +127 -0
- package/dist/uni/GaugeChart.vue +77 -0
- package/dist/uni/GaugeChart.vue.d.ts +127 -0
- package/dist/uni/HeatmapChart.vue +66 -0
- package/dist/uni/HeatmapChart.vue.d.ts +120 -0
- package/dist/uni/HistogramChart.vue +66 -0
- package/dist/uni/HistogramChart.vue.d.ts +125 -0
- package/dist/uni/HorizontalBarChart.vue +68 -0
- package/dist/uni/HorizontalBarChart.vue.d.ts +129 -0
- package/dist/uni/Input.vue.d.ts +1 -1
- package/dist/uni/LineChart.vue.d.ts +4 -0
- package/dist/uni/MixedChart.vue +68 -0
- package/dist/uni/MixedChart.vue.d.ts +110 -0
- package/dist/uni/NumberInput.vue.d.ts +1 -1
- package/dist/uni/PieChart.vue +72 -0
- package/dist/uni/PieChart.vue.d.ts +118 -0
- package/dist/uni/QuadrantChart.vue.d.ts +4 -0
- package/dist/uni/RadarChart.vue +67 -0
- package/dist/uni/RadarChart.vue.d.ts +114 -0
- package/dist/uni/RadialBarChart.vue +90 -0
- package/dist/uni/RadialBarChart.vue.d.ts +136 -0
- package/dist/uni/RangeAreaChart.vue +68 -0
- package/dist/uni/RangeAreaChart.vue.d.ts +106 -0
- package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
- package/dist/uni/SankeyChart.vue +88 -0
- package/dist/uni/SankeyChart.vue.d.ts +125 -0
- package/dist/uni/ScatterChart.vue.d.ts +4 -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 +81 -0
- package/dist/uni/SunburstChart.vue +90 -0
- package/dist/uni/SunburstChart.vue.d.ts +118 -0
- package/dist/uni/Textarea.vue.d.ts +1 -1
- package/dist/uni/TimePicker.vue.d.ts +1 -1
- package/dist/uni/ToastProvider.vue.d.ts +1 -1
- package/dist/uni/TreemapChart.vue +65 -0
- package/dist/uni/TreemapChart.vue.d.ts +104 -0
- package/dist/uni/WaterfallChart.vue +66 -0
- package/dist/uni/WaterfallChart.vue.d.ts +134 -0
- package/dist/uni/chart-canvas.d.ts +3 -0
- package/dist/uni/chart-canvas.js +4 -0
- package/dist/uni/chart-types.d.ts +240 -2
- package/dist/uni/chart-types.js +198 -0
- package/dist/uni/charts-canvas.js +8 -3
- package/dist/uni/index.d.ts +27 -1
- package/dist/uni/index.js +27 -1
- package/dist/uni/manifest.d.ts +279 -0
- package/dist/uni/manifest.js +397 -0
- package/dist/uni/named-chart-options.d.ts +95 -0
- package/dist/uni/named-chart-options.js +173 -0
- package/dist/uni/shape-chart-canvas.d.ts +53 -0
- package/dist/uni/shape-chart-canvas.js +333 -0
- package/dist/uni/shape-chart-types.d.ts +431 -0
- package/dist/uni/shape-chart-types.js +305 -0
- package/dist/vue/charts-global.d.ts +48 -0
- package/dist/vue/charts.d.ts +18 -0
- package/dist/vue/charts.js +56 -0
- package/dist/vue/charts.js.map +1 -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 +120 -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 +63 -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/ChordChart.vue.d.ts +153 -0
- package/dist/vue/components/Chart/ChordChart.vue.js +7 -0
- package/dist/vue/components/Chart/ChordChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DependencyGraph.vue.d.ts +179 -0
- package/dist/vue/components/Chart/DependencyGraph.vue.js +7 -0
- package/dist/vue/components/Chart/DependencyGraph.vue.js.map +1 -0
- package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/vue/components/Chart/DependencyGraph.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 +136 -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 +101 -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/GraphChart.vue.d.ts +184 -0
- package/dist/vue/components/Chart/GraphChart.vue.js +7 -0
- package/dist/vue/components/Chart/GraphChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js +62 -0
- package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +129 -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 +67 -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 +130 -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 +116 -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 +208 -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 +101 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TreeChart.vue.d.ts +172 -0
- package/dist/vue/components/Chart/TreeChart.vue.js +7 -0
- package/dist/vue/components/Chart/TreeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/vue/components/Chart/TreeChart.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 +143 -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 +74 -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/graph.d.ts +153 -0
- package/dist/vue/components/Chart/graph.js +135 -0
- package/dist/vue/components/Chart/graph.js.map +1 -0
- package/dist/vue/components/Chart/index.d.ts +45 -0
- package/dist/vue/components/Chart/index.js +44 -0
- package/dist/vue/components/Chart/orderbook.d.ts +363 -0
- package/dist/vue/components/Chart/orderbook.js +128 -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 +127 -0
- package/dist/vue/components/Chart/trading.js +63 -0
- package/dist/vue/components/Chart/trading.js.map +1 -0
- package/dist/vue/components/Chart/types.d.ts +209 -0
- package/dist/vue/global.d.ts +2 -0
- package/dist/vue/groups/charts.d.ts +1 -0
- package/dist/vue/groups/charts.js +95 -0
- package/dist/vue/groups/charts.js.map +1 -0
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.js +67 -23
- package/dist/vue/internal/register.d.ts +7 -0
- package/dist/vue/internal/register.js +14 -0
- package/dist/vue/internal/register.js.map +1 -0
- package/dist/vue/plugin.d.ts +9 -4
- package/dist/vue/plugin.js +7 -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 +12976 -0
- package/dist/weapp/charts/core.d.ts +2 -0
- package/dist/weapp/charts/core.js +42 -0
- package/dist/weapp/chord-chart/index.js +1 -0
- package/dist/weapp/chord-chart/index.json +1 -0
- package/dist/weapp/chord-chart/index.wxml +1 -0
- package/dist/weapp/chord-chart/index.wxss +1 -0
- package/dist/weapp/controls.js +1495 -4480
- 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 +549 -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 +254 -0
- package/dist/web-components/components/chart/charts.js +208 -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 +234 -0
- package/dist/web-components/components/chart/extended.js +197 -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 +198 -0
- package/dist/web-components/components/chart/shapes-extended.js +182 -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/graph/graph.d.ts +154 -0
- package/dist/web-components/components/graph/graph.js +149 -0
- package/dist/web-components/components/graph/graph.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 +143 -0
- package/dist/web-components/components/trading-chart/trading-chart.js +158 -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 +44 -0
- package/dist/web-components/elements/chart.js.map +1 -0
- package/dist/web-components/elements/graph.d.ts +2 -0
- package/dist/web-components/elements/graph.js +12 -0
- package/dist/web-components/elements/graph.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 +1470 -38
- package/dist/web-components/types/react.d.ts +494 -0
- package/dist/web-components/types/solid.d.ts +368 -0
- package/dist/web-components/types/svelte.d.ts +368 -0
- package/dist/web-components/types/vue.d.ts +410 -0
- package/package.json +128 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene.js","names":["DEFAULT_PADDING","fallbackResolve","fallback","resolveAnnotations","resolve","theme","annotations","a","color","mix","layoutChart","input","yCount","model","height","yTicks","axisTicks","view","yLabelWidth","label","measure","categoryWidth","step","i","padding","plot","computePlot","xCount","xTicks","createScales","collectPointLabels","labels","axisFormat","formatValue","series","format","top","x0","x1","count","xv","x","y","negative","s","texts","text","xi","yi","d","size","pointOf","sc","plottedY","candidateOf","p","inside","half","base","px","py","high","b","low","dotSize","nearestScatter","radius","slop","yv","rx","ry","best","bestDist","gridOf","cellAt","hx","hy","found","nearestX","sorted","nearestIndex","bestD","hoverItemOf","pc","index","toCss","extra","o","open","v","value","packed","unpackColor","eventOf","candidates","items","c","hitTest","margin","scatter","others","all","bestDx","bandPx","aligned","first","event","sameHover","it","tooltipContent","yFormat","firstSeries","yName","rows","rowOf","change","ohlc","name","totals","stack","stackIdOf","total","row","k","seriesIndex","hoverMarks","marks","bandLo","bandHi","cx","cy","hw","hh","rgba","pad","legendShape","type","showsCrosshair","crosshair"],"sources":["../../../../charts/src/engine/scene.ts"],"sourcesContent":["// The DOM-free half of a chart: annotations, layout, point labels, hit\n// testing and tooltip content. Shared by createChart (DOM + GPU),\n// createCanvasChart (any 2D context) and the React Native views.\n\nimport { axisTicks, type AxisTicks } from \"./axis\";\nimport { mix, toCss, unpackColor, type Rgba } from \"./color\";\nimport { nearestIndex } from \"./data\";\nimport { formatValue } from \"./format\";\nimport { computePlot, createScales, type Rect, type Scales } from \"./layout\";\nimport { gridOf, plottedY, type ChartModel, type SeriesModel } from \"./model\";\nimport type { PointLabel, ResolvedAnnotation } from \"./overlay\";\nimport type { ChartTheme } from \"./theme\";\nimport type {\n ChartAnnotation,\n ChartHoverEvent,\n ChartHoverItem,\n ChartPadding,\n ChartView,\n} from \"./types\";\n\nexport const MAX_POINT_LABELS = 300;\nexport const DEFAULT_PADDING = { top: 12, right: 16, bottom: 4, left: 4 };\n\nexport const fallbackResolve = (_value: string, fallback: Rgba) => fallback;\n\n/** Annotation colors resolved against the theme */\nexport const resolveAnnotations = (\n annotations: readonly ChartAnnotation[] | undefined,\n theme: ChartTheme,\n): ResolvedAnnotation[] => {\n const resolve = theme.resolve ?? fallbackResolve;\n return (annotations ?? []).map((a) => {\n if (a.type === \"rect\") {\n const color = a.color ? resolve(a.color, theme.primary) : theme.primary;\n return {\n type: \"rect\",\n x0: a.x0,\n x1: a.x1,\n y0: a.y0,\n y1: a.y1,\n color,\n opacity: a.opacity ?? 0.08,\n label: a.label,\n labelPosition: a.labelPosition ?? \"top-left\",\n labelColor: a.labelColor\n ? resolve(a.labelColor, color)\n : mix(color, theme.text, 0.2),\n };\n }\n if (a.type === \"text\") {\n return {\n type: \"text\",\n x: a.x,\n y: a.y,\n text: a.text,\n anchor: a.anchor ?? \"center\",\n color: a.color ? resolve(a.color, theme.textMuted) : theme.textMuted,\n weight: a.weight ?? 500,\n };\n }\n return {\n type: \"line\",\n axis: a.axis,\n value: a.value,\n color: a.color ? resolve(a.color, theme.textMuted) : theme.textMuted,\n width: a.width ?? 1,\n dash: [...(a.dash ?? [4, 4])],\n label: a.label,\n };\n });\n};\n\nexport interface ChartLayout {\n plot: Rect;\n scales: Scales;\n xTicks: AxisTicks;\n yTicks: AxisTicks;\n}\n\nexport interface LayoutInput {\n model: ChartModel;\n view: ChartView;\n theme: ChartTheme;\n /** Size of the drawing area (legend excluded), CSS pixels */\n width: number;\n height: number;\n padding?: ChartPadding;\n /** Offset of the drawing area (e.g. below a legend) */\n top?: number;\n /** Width of a tick label in the theme font */\n measure: (text: string) => number;\n}\n\n/** Ticks, room for the axes and the plot rectangle */\nexport const layoutChart = (input: LayoutInput): ChartLayout => {\n const { model, view, theme, width, height, measure } = input;\n // same count as the nice range of the model (its ends are then ticks),\n // fewer on short charts; category rows get a label each when they fit\n const yCount =\n model.y.tickCount ??\n (model.y.type === \"category\"\n ? Math.max(1, Math.floor((height - 40) / (theme.fontSize + 5)))\n : height >= 220\n ? 5\n : Math.max(2, Math.round((height - 48) / 52)));\n const yTicks = axisTicks(model.y, view.y, yCount);\n let yLabelWidth = 0;\n if (model.y.visible) {\n for (const label of yTicks.labels)\n yLabelWidth = Math.max(yLabelWidth, measure(label));\n }\n let categoryWidth = 48;\n if (model.x.type === \"category\") {\n categoryWidth = 0;\n const step = Math.max(1, Math.floor(model.x.categories.length / 200));\n for (let i = 0; i < model.x.categories.length; i += step) {\n categoryWidth = Math.max(categoryWidth, measure(model.x.categories[i]));\n }\n }\n const padding = { ...DEFAULT_PADDING, ...input.padding };\n const plot = computePlot({\n width,\n height,\n padding,\n yLabelWidth: model.y.visible ? Math.ceil(yLabelWidth) : 0,\n xAxisVisible: model.x.visible,\n xTitle: !!model.x.title && model.x.visible,\n yTitle: !!model.y.title && model.y.visible,\n fontSize: theme.fontSize,\n });\n if (input.top) plot.y += input.top;\n const xCount =\n model.x.type === \"category\"\n ? Math.max(1, Math.floor(plot.width / (categoryWidth + 14)))\n : (model.x.tickCount ?? Math.max(3, Math.floor(plot.width / 88)));\n const xTicks = axisTicks(model.x, view.x, xCount);\n const scales = createScales(plot, view, model.x.reverse, model.y.reverse);\n return { plot, scales, xTicks, yTicks };\n};\n\n/** Labels of the visible scatter points and bar values (`showLabels`) */\nexport const collectPointLabels = (\n model: ChartModel,\n view: ChartView,\n s: Scales,\n yTicks?: AxisTicks | null,\n): PointLabel[] => {\n const labels: PointLabel[] = [];\n // 100% stacks: the axis shows percents, the labels the actual values\n const axisFormat = model.percent\n ? formatValue\n : (yTicks?.formatValue ?? formatValue);\n for (const series of model.series) {\n if (series.hidden || !series.showLabels) continue;\n if (series.type === \"bar\" && series.barTop) {\n const format = series.format ?? axisFormat;\n const { x, y, count } = series.cols;\n const top = series.barTop;\n const [x0, x1] = view.x[0] <= view.x[1] ? view.x : [view.x[1], view.x[0]];\n for (let i = 0; i < count && labels.length < MAX_POINT_LABELS; i++) {\n const xv = x[i] + series.barOffset;\n if (!Number.isFinite(y[i]) || xv < x0 || xv > x1) continue;\n const negative = top[i] < (series.barBase?.[i] ?? 0);\n labels.push({\n x: s.xToPx(xv),\n y: s.yToPx(top[i]),\n r: 0,\n text: format(y[i]),\n placement: negative ? \"below\" : \"above\",\n });\n }\n continue;\n }\n if (series.type !== \"scatter\") continue;\n const { x, y, count, labels: texts, size } = series.cols;\n if (!texts) continue;\n for (let i = 0; i < count && labels.length < MAX_POINT_LABELS; i++) {\n const text = texts[i];\n if (!text) continue;\n const xi = x[i];\n const yi = y[i];\n if (xi < view.x[0] || xi > view.x[1] || yi < view.y[0] || yi > view.y[1])\n continue;\n const d = size && size[i] > 0 ? size[i] : series.pointSize;\n labels.push({ x: s.xToPx(xi), y: s.yToPx(yi), r: d / 2, text });\n }\n }\n return labels;\n};\n\n// ---------------------------------------------------------------- hit tests\n\ninterface Candidate {\n series: SeriesModel;\n index: number;\n /** Pixel position of the point */\n px: number;\n py: number;\n dx: number;\n dist: number;\n inside: boolean;\n}\n\n/** Pixel position of a point (the top of a bar or stack, the close of a candle) */\nexport const pointOf = (s: SeriesModel, i: number, sc: Scales) => {\n const xv = s.cols.x[i] + (s.type === \"bar\" ? s.barOffset : 0);\n return { px: sc.xToPx(xv), py: sc.yToPx(plottedY(s, i)) };\n};\n\nconst candidateOf = (\n s: SeriesModel,\n i: number,\n px: number,\n py: number,\n sc: Scales,\n): Candidate => {\n const p = pointOf(s, i, sc);\n let inside = false;\n if (s.type === \"bar\" && s.barBase) {\n const half = s.barHalfWidth / sc.xPerPx;\n const base = sc.yToPx(s.barBase[i]);\n inside =\n Math.abs(px - p.px) <= half &&\n py >= Math.min(base, p.py) - 2 &&\n py <= Math.max(base, p.py) + 2;\n } else if (s.type === \"candlestick\") {\n const { high, low, y } = s.cols;\n const half = Math.max(s.barHalfWidth / sc.xPerPx, 3);\n const a = sc.yToPx(high ? high[i] : y[i]);\n const b = sc.yToPx(low ? low[i] : y[i]);\n inside =\n Math.abs(px - p.px) <= half &&\n py >= Math.min(a, b) - 2 &&\n py <= Math.max(a, b) + 2;\n }\n return {\n series: s,\n index: i,\n px: p.px,\n py: p.py,\n dx: Math.abs(sc.xToPx(s.cols.x[i]) - px),\n dist: inside ? 0 : Math.hypot(p.px - px, p.py - py),\n inside,\n };\n};\n\n/** Diameter of a scatter dot */\nexport const dotSize = (s: SeriesModel, i: number) =>\n s.cols.size && s.cols.size[i] > 0 ? s.cols.size[i] : s.pointSize;\n\nconst nearestScatter = (\n s: SeriesModel,\n px: number,\n py: number,\n sc: Scales,\n slop: number,\n) => {\n const radius = Math.max(s.pointSize / 2 + 6, 10) + slop;\n const xv = sc.pxToX(px);\n const yv = sc.pxToY(py);\n const rx = radius * sc.xPerPx;\n const ry = radius * sc.yPerPx;\n let best = -1;\n let bestDist = Infinity;\n const { x, y } = s.cols;\n gridOf(s).query(xv - rx, xv + rx, yv - ry, yv + ry, (i) => {\n const d = Math.hypot(sc.xToPx(x[i]) - px, sc.yToPx(y[i]) - py);\n const reach = Math.max(dotSize(s, i) / 2 + 4, 8) + slop;\n if (d <= reach && d <= bestDist) {\n bestDist = d;\n best = i;\n }\n });\n return best;\n};\n\n/** Heatmap cell containing a data position, -1 if none */\nconst cellAt = (s: SeriesModel, xv: number, yv: number) => {\n const { x: hx, y: hy } = s.cellHalf;\n const { x, y } = s.cols;\n let found = -1;\n gridOf(s).query(xv - hx, xv + hx, yv - hy, yv + hy, (i) => {\n if (\n s.cellColors?.[i] &&\n Math.abs(x[i] - xv) <= hx &&\n Math.abs(y[i] - yv) <= hy\n ) {\n found = i;\n }\n });\n return found;\n};\n\nconst nearestX = (s: SeriesModel, xv: number) => {\n const { x, y, count, sorted } = s.cols;\n if (sorted) return nearestIndex(x, y, count, xv);\n let best = -1;\n let bestD = Infinity;\n for (let i = 0; i < count; i++) {\n if (!Number.isFinite(y[i])) continue;\n const d = Math.abs(x[i] - xv);\n if (d < bestD) {\n bestD = d;\n best = i;\n }\n }\n return best;\n};\n\n/** Hover payload item of a point */\nexport const hoverItemOf = (s: SeriesModel, index: number): ChartHoverItem => {\n const pc = s.pointColors?.[index];\n const label = s.cols.labels?.[index];\n const { open, high, low, value } = s.cols;\n let color = pc ? toCss(pc) : s.colorCss;\n const extra: Partial<ChartHoverItem> = {};\n if (s.type === \"candlestick\") {\n const o = open ? open[index] : NaN;\n if (Number.isFinite(o)) extra.open = o;\n if (high && Number.isFinite(high[index])) extra.high = high[index];\n if (low && Number.isFinite(low[index])) extra.low = low[index];\n color = toCss(s.cols.y[index] < o ? s.downColor : s.upColor);\n } else if (s.type === \"heatmap\") {\n const v = value ? value[index] : s.cols.y[index];\n if (Number.isFinite(v)) extra.value = v;\n const packed = s.cellColors?.[index];\n if (packed) color = toCss(unpackColor(packed));\n }\n return {\n seriesIndex: s.index,\n seriesId: s.id,\n seriesName: s.name,\n index,\n x: s.cols.x[index],\n y: s.cols.y[index],\n color,\n ...(label !== undefined ? { label } : {}),\n ...extra,\n };\n};\n\nconst eventOf = (\n candidates: Candidate[],\n xTicks: AxisTicks | null,\n): ChartHoverEvent | null => {\n if (!candidates.length) return null;\n candidates.sort((a, b) => a.series.index - b.series.index);\n const items = candidates.map((c) => hoverItemOf(c.series, c.index));\n const x = items[0].x;\n return { items, x, xLabel: xTicks?.formatValue(x) ?? String(x) };\n};\n\n/**\n * Points under a pixel of the stage: the nearest point (scatter / `nearest`\n * tooltips) or every series at the nearest x (`axis` tooltips).\n * `slop` widens the reach of the dots (touch screens).\n */\nexport const hitTest = (\n model: ChartModel,\n sc: Scales,\n xTicks: AxisTicks | null,\n px: number,\n py: number,\n slop = 0,\n): ChartHoverEvent | null => {\n const { plot } = sc;\n const margin = 6 + slop;\n if (\n px < plot.x - margin ||\n px > plot.x + plot.width + margin ||\n py < plot.y - margin ||\n py > plot.y + plot.height + margin\n ) {\n return null;\n }\n const xv = sc.pxToX(px);\n const scatter: Candidate[] = [];\n const others: Candidate[] = [];\n for (const s of model.series) {\n if (s.hidden || s.cols.count === 0) continue;\n if (s.type === \"scatter\") {\n const i = nearestScatter(s, px, py, sc, slop);\n if (i >= 0) scatter.push(candidateOf(s, i, px, py, sc));\n } else if (s.type === \"heatmap\") {\n const i = cellAt(s, sc.pxToX(px), sc.pxToY(py));\n if (i >= 0) {\n const c = candidateOf(s, i, px, py, sc);\n c.inside = true;\n c.dist = 0;\n scatter.push(c);\n }\n } else {\n const i = nearestX(s, xv);\n if (i >= 0) others.push(candidateOf(s, i, px, py, sc));\n }\n }\n if (model.tooltipMode === \"nearest\") {\n const all = [...scatter, ...others].filter(\n (c) => c.inside || c.series.type === \"scatter\" || c.dist <= 32 + slop,\n );\n if (!all.length) return null;\n const best = all.reduce((a, b) => (b.dist <= a.dist ? b : a));\n return eventOf([best], xTicks);\n }\n if (!others.length) {\n if (!scatter.length) return null;\n return eventOf(\n [scatter.reduce((a, b) => (b.dist <= a.dist ? b : a))],\n xTicks,\n );\n }\n const bestDx = Math.min(...others.map((c) => c.dx));\n const bandPx = model.x.type === \"category\" ? 0.5 / sc.xPerPx : 0;\n const aligned = others.filter((c) => c.dx <= bestDx + Math.max(1, bandPx));\n const first = aligned.reduce((a, b) => (b.dx < a.dx ? b : a));\n const ordered = [first, ...aligned.filter((c) => c !== first), ...scatter];\n const event = eventOf(ordered, xTicks);\n if (event) {\n event.x = hoverItemOf(first.series, first.index).x;\n event.xLabel = xTicks?.formatValue(event.x) ?? String(event.x);\n }\n return event;\n};\n\n/** Whether two hover payloads point at the same points */\nexport const sameHover = (\n a: ChartHoverEvent | null,\n b: ChartHoverEvent | null,\n): boolean =>\n a === b ||\n (!!a &&\n !!b &&\n a.items.length === b.items.length &&\n a.items.every(\n (it, i) =>\n it.index === b.items[i].index &&\n it.seriesIndex === b.items[i].seriesIndex,\n ));\n\n// ------------------------------------------------------------------ tooltip\n\nexport interface TooltipRow {\n /** Swatch color (CSS) */\n color: string | null;\n name: string;\n value: string;\n}\n\nexport interface TooltipContent {\n title: string;\n /** Swatch of the title (single scatter point) */\n titleColor: string | null;\n rows: TooltipRow[];\n}\n\n/** Default tooltip content of a hover payload */\nexport const tooltipContent = (\n model: ChartModel,\n event: ChartHoverEvent,\n yTicks: AxisTicks | null,\n): TooltipContent => {\n const yFormat = yTicks?.formatValue ?? String;\n const first = event.items[0];\n const firstSeries = first ? model.series[first.seriesIndex] : null;\n if (event.items.length === 1 && firstSeries?.type === \"heatmap\") {\n const yName =\n model.y.type === \"category\"\n ? (model.y.categories[Math.round(first.y)] ?? yFormat(first.y))\n : yFormat(first.y);\n return {\n title: `${event.xLabel} · ${yName}`,\n titleColor: null,\n rows: [\n {\n color: first.color,\n name: first.label ?? firstSeries.name,\n value:\n first.value === undefined\n ? \"–\"\n : (firstSeries.format ?? formatValue)(first.value),\n },\n ],\n };\n }\n const scatterOnly = event.items.every(\n (it) => model.series[it.seriesIndex].type === \"scatter\",\n );\n if (scatterOnly && event.items.length === 1) {\n const it = event.items[0];\n const rows: TooltipRow[] = [\n { color: null, name: model.x.title ?? \"x\", value: event.xLabel },\n { color: null, name: model.y.title ?? \"y\", value: yFormat(it.y) },\n ];\n if (it.label !== undefined && model.series.length > 1)\n rows.push({ color: null, name: \"\", value: it.seriesName });\n return { title: it.label ?? it.seriesName, titleColor: it.color, rows };\n }\n const rows: TooltipRow[] = [];\n /** Row of every item */\n const rowOf: number[] = [];\n for (const it of event.items) {\n const s = model.series[it.seriesIndex];\n rowOf.push(rows.length);\n if (s.type === \"candlestick\") {\n const change =\n it.open !== undefined && it.open !== 0\n ? ((it.y - it.open) / Math.abs(it.open)) * 100\n : NaN;\n rows.push({\n color: it.color,\n name: s.name,\n value: Number.isFinite(change)\n ? `${change >= 0 ? \"+\" : \"\"}${change.toFixed(2)}%`\n : \"\",\n });\n const ohlc: [string, number | undefined][] = [\n [\"Open\", it.open],\n [\"High\", it.high],\n [\"Low\", it.low],\n [\"Close\", it.y],\n ];\n for (const [name, v] of ohlc) {\n if (v !== undefined && Number.isFinite(v))\n rows.push({ color: null, name, value: (s.format ?? yFormat)(v) });\n }\n continue;\n }\n rows.push({\n color: it.color,\n name: it.label ? `${it.seriesName} · ${it.label}` : it.seriesName,\n value: (s.format ?? yFormat)(it.y),\n });\n }\n if (model.percent) {\n // 100% stacks: the share of every value next to it\n const totals = new Map<string, number>();\n for (const it of event.items) {\n const stack = stackIdOf(model, it.seriesIndex);\n if (stack !== null && Number.isFinite(it.y))\n totals.set(stack, (totals.get(stack) ?? 0) + Math.abs(it.y));\n }\n event.items.forEach((it, k) => {\n const stack = stackIdOf(model, it.seriesIndex);\n const total = stack !== null ? totals.get(stack) : undefined;\n const row = rows[rowOf[k]];\n if (total && row && Number.isFinite(it.y)) {\n const format = model.series[it.seriesIndex].format ?? formatValue;\n row.value = `${format(it.y)} · ${((Math.abs(it.y) / total) * 100).toFixed(1)}%`;\n }\n });\n }\n return { title: event.xLabel, titleColor: null, rows };\n};\n\n/** Stack of a series in a 100% chart (`null` when it is not stacked) */\nconst stackIdOf = (model: ChartModel, seriesIndex: number): string | null =>\n model.series[seriesIndex].hidden ? null : model.stacks[seriesIndex];\n\n/**\n * Shape of the hover marker of an item: a dot with a soft halo on a point,\n * a band behind the hovered bar group / candle, or the outline of a cell\n */\nexport type HoverMark =\n | {\n kind: \"dot\";\n x: number;\n y: number;\n size: number;\n color: string;\n /** Translucent series color of the halo around the dot */\n halo: string;\n }\n | { kind: \"band\"; x: number; y: number; width: number; height: number }\n | { kind: \"cell\"; x: number; y: number; width: number; height: number };\n\n/** Markers of the hovered points (pixels of the stage); bands come first */\nexport const hoverMarks = (\n model: ChartModel,\n sc: Scales,\n event: ChartHoverEvent,\n): HoverMark[] => {\n const marks: HoverMark[] = [];\n const { plot } = sc;\n let bandLo = Infinity;\n let bandHi = -Infinity;\n for (const it of event.items) {\n const s = model.series[it.seriesIndex];\n if (s.type === \"bar\" || s.type === \"candlestick\") {\n const cx = sc.xToPx(it.x + s.barOffset);\n const half = Math.max(s.barHalfWidth / sc.xPerPx, 1);\n bandLo = Math.min(bandLo, cx - half);\n bandHi = Math.max(bandHi, cx + half);\n continue;\n }\n if (s.type === \"heatmap\") {\n const cx = sc.xToPx(it.x);\n const cy = sc.yToPx(it.y);\n const hw = Math.abs(s.cellHalf.x / sc.xPerPx);\n const hh = Math.abs(s.cellHalf.y / sc.yPerPx);\n marks.push({\n kind: \"cell\",\n x: cx - hw,\n y: cy - hh,\n width: hw * 2,\n height: hh * 2,\n });\n continue;\n }\n const { px, py } = pointOf(s, it.index, sc);\n if (\n px < plot.x - 1 ||\n px > plot.x + plot.width + 1 ||\n py < plot.y - 1 ||\n py > plot.y + plot.height + 1\n ) {\n continue;\n }\n const size =\n s.type === \"scatter\"\n ? dotSize(s, it.index) + 4\n : Math.max(9, s.lineWidth * 2 + 5);\n const rgba = s.pointColors?.[it.index] ?? s.color;\n marks.push({\n kind: \"dot\",\n x: px,\n y: py,\n size,\n color: it.color,\n halo: toCss(rgba, 0.2),\n });\n }\n if (bandHi > bandLo) {\n // the group of bars plus a margin, clipped to the plot\n const pad = Math.max(4, (bandHi - bandLo) * 0.14);\n const x0 = Math.max(plot.x, bandLo - pad);\n const x1 = Math.min(plot.x + plot.width, bandHi + pad);\n if (x1 > x0) {\n marks.unshift({\n kind: \"band\",\n x: x0,\n y: plot.y,\n width: x1 - x0,\n height: plot.height,\n });\n }\n }\n return marks;\n};\n\n/** Swatch of a series in the legend */\nexport const legendShape = (\n type: SeriesModel[\"type\"],\n): \"dot\" | \"line\" | \"square\" =>\n type === \"scatter\" ? \"dot\" : type === \"line\" ? \"line\" : \"square\";\n\n/** Whether the guide line follows the pointer */\nexport const showsCrosshair = (\n model: ChartModel,\n event: ChartHoverEvent,\n crosshair: boolean | undefined,\n) =>\n crosshair ??\n (model.tooltipMode === \"axis\" &&\n event.items.some((it) => {\n const type = model.series[it.seriesIndex].type;\n return type === \"line\" || type === \"area\";\n }) &&\n // bars get a band instead\n !event.items.some((it) => {\n const type = model.series[it.seriesIndex].type;\n return type === \"bar\" || type === \"candlestick\";\n }));\n"],"mappings":";;;;;;AAqBA,IAAaA,IAAkB;CAAE,KAAK;CAAI,OAAO;CAAI,QAAQ;CAAG,MAAM;AAAE,GAE3DC,KAAmB,GAAgB,MAAmBC,GAGtDC,KACX,GACA,MACyB;CACzB,IAAMC,IAAUC,EAAM,WAAWJ;CACjC,QAAQK,KAAe,CAAC,EAAA,CAAG,KAAK,MAAM;EACpC,IAAIC,EAAE,SAAS,QAAQ;GACrB,IAAMC,IAAQD,EAAE,QAAQH,EAAQG,EAAE,OAAOF,EAAM,OAAO,IAAIA,EAAM;GAChE,OAAO;IACL,MAAM;IACN,IAAIE,EAAE;IACN,IAAIA,EAAE;IACN,IAAIA,EAAE;IACN,IAAIA,EAAE;IACN;IACA,SAASA,EAAE,WAAW;IACtB,OAAOA,EAAE;IACT,eAAeA,EAAE,iBAAiB;IAClC,YAAYA,EAAE,aACVH,EAAQG,EAAE,YAAYC,CAAK,IAC3BC,EAAID,GAAOH,EAAM,MAAM,EAAG;GAChC;EACF;EAYA,OAXIE,EAAE,SAAS,SACN;GACL,MAAM;GACN,GAAGA,EAAE;GACL,GAAGA,EAAE;GACL,MAAMA,EAAE;GACR,QAAQA,EAAE,UAAU;GACpB,OAAOA,EAAE,QAAQH,EAAQG,EAAE,OAAOF,EAAM,SAAS,IAAIA,EAAM;GAC3D,QAAQE,EAAE,UAAU;EACtB,IAEK;GACL,MAAM;GACN,MAAMA,EAAE;GACR,OAAOA,EAAE;GACT,OAAOA,EAAE,QAAQH,EAAQG,EAAE,OAAOF,EAAM,SAAS,IAAIA,EAAM;GAC3D,OAAOE,EAAE,SAAS;GAClB,MAAM,CAAC,GAAIA,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAE;GAC5B,OAAOA,EAAE;EACX;CACF,CAAC;AACH,GAwBaG,KAAe,MAAoC;CAC9D,IAAM,EAAE,UAAO,SAAM,UAAO,UAAO,WAAQ,eAAYC,GAGjDC,IACJC,EAAM,EAAE,cACPA,EAAM,EAAE,SAAS,aACd,KAAK,IAAI,GAAG,KAAK,OAAOC,IAAS,OAAOT,EAAM,WAAW,EAAE,CAAC,IAC5DS,KAAU,MACR,IACA,KAAK,IAAI,GAAG,KAAK,OAAOA,IAAS,MAAM,EAAE,CAAC,IAC5CC,IAASC,EAAUH,EAAM,GAAGI,EAAK,GAAGL,CAAM,GAC5CM,IAAc;CAClB,IAAIL,EAAM,EAAE,SACV,KAAK,IAAMM,KAASJ,EAAO,QACzB,IAAc,KAAK,IAAIG,GAAaE,EAAQD,CAAK,CAAC;CAEtD,IAAIE,IAAgB;CACpB,IAAIR,EAAM,EAAE,SAAS,YAAY;EAC/B,IAAgB;EAChB,IAAMS,IAAO,KAAK,IAAI,GAAG,KAAK,MAAMT,EAAM,EAAE,WAAW,SAAS,GAAG,CAAC;EACpE,KAAK,IAAIU,IAAI,GAAGA,IAAIV,EAAM,EAAE,WAAW,QAAQ,KAAKS,GAClD,IAAgB,KAAK,IAAID,GAAeD,EAAQP,EAAM,EAAE,WAAWU,EAAE,CAAC;CAE1E;CACA,IAAMC,IAAU;EAAE,GAAGxB;EAAiB,GAAGW,EAAM;CAAQ,GACjDc,IAAOC,EAAY;EACvB;EACA;EACA;EACA,aAAab,EAAM,EAAE,UAAU,KAAK,KAAKK,CAAW,IAAI;EACxD,cAAcL,EAAM,EAAE;EACtB,QAAQ,CAAC,CAACA,EAAM,EAAE,SAASA,EAAM,EAAE;EACnC,QAAQ,CAAC,CAACA,EAAM,EAAE,SAASA,EAAM,EAAE;EACnC,UAAUR,EAAM;CAClB,CAAC;CACD,AAAIM,EAAM,QAAK,EAAK,KAAKA,EAAM;CAC/B,IAAMgB,IACJd,EAAM,EAAE,SAAS,aACb,KAAK,IAAI,GAAG,KAAK,MAAMY,EAAK,SAASJ,IAAgB,GAAG,CAAC,IACxDR,EAAM,EAAE,aAAa,KAAK,IAAI,GAAG,KAAK,MAAMY,EAAK,QAAQ,EAAE,CAAC,GAC7DG,IAASZ,EAAUH,EAAM,GAAGI,EAAK,GAAGU,CAAM;CAEhD,OAAO;EAAE;EAAM,QADAE,EAAaJ,GAAMR,GAAMJ,EAAM,EAAE,SAASA,EAAM,EAAE,OAClD;EAAQ;EAAQ;CAAO;AACxC,GAGaiB,KACX,GACA,GACA,GACA,MACiB;CACjB,IAAMC,IAAuB,CAAC,GAExBC,IAAanB,EAAM,UACrBoB,IACClB,GAAQ,eAAekB;CAC5B,KAAK,IAAMC,KAAUrB,EAAM,QAAQ;EACjC,IAAIqB,EAAO,UAAU,CAACA,EAAO,YAAY;EACzC,IAAIA,EAAO,SAAS,SAASA,EAAO,QAAQ;GAC1C,IAAMC,IAASD,EAAO,UAAUF,GAC1B,EAAE,MAAG,MAAG,aAAUE,EAAO,MACzBE,IAAMF,EAAO,QACb,CAACG,GAAIC,KAAMrB,EAAK,EAAE,MAAMA,EAAK,EAAE,KAAKA,EAAK,IAAI,CAACA,EAAK,EAAE,IAAIA,EAAK,EAAE,EAAE;GACxE,KAAK,IAAIM,IAAI,GAAGA,IAAIgB,KAASR,EAAO,SAAA,KAA2B,KAAK;IAClE,IAAMS,IAAKC,EAAElB,KAAKW,EAAO;IACzB,IAAI,CAAC,OAAO,SAASQ,EAAEnB,EAAE,KAAKiB,IAAKH,KAAMG,IAAKF,GAAI;IAClD,IAAMK,IAAWP,EAAIb,MAAMW,EAAO,UAAUX,MAAM;IAClD,EAAO,KAAK;KACV,GAAGqB,EAAE,MAAMJ,CAAE;KACb,GAAGI,EAAE,MAAMR,EAAIb,EAAE;KACjB,GAAG;KACH,MAAMY,EAAOO,EAAEnB,EAAE;KACjB,WAAWoB,IAAW,UAAU;IAClC,CAAC;GACH;GACA;EACF;EACA,IAAIT,EAAO,SAAS,WAAW;EAC/B,IAAM,EAAE,MAAG,MAAG,UAAO,QAAQW,GAAO,YAASX,EAAO;EACpD,IAAKW,GACL,KAAK,IAAItB,IAAI,GAAGA,IAAIgB,KAASR,EAAO,SAAA,KAA2B,KAAK;GAClE,IAAMe,IAAOD,EAAMtB;GACnB,IAAI,CAACuB,GAAM;GACX,IAAMC,IAAKN,EAAElB,IACPyB,IAAKN,EAAEnB;GACb,IAAIwB,IAAK9B,EAAK,EAAE,MAAM8B,IAAK9B,EAAK,EAAE,MAAM+B,IAAK/B,EAAK,EAAE,MAAM+B,IAAK/B,EAAK,EAAE,IACpE;GACF,IAAMgC,IAAIC,KAAQA,EAAK3B,KAAK,IAAI2B,EAAK3B,KAAKW,EAAO;GACjD,EAAO,KAAK;IAAE,GAAGU,EAAE,MAAMG,CAAE;IAAG,GAAGH,EAAE,MAAMI,CAAE;IAAG,GAAGC,IAAI;IAAG;GAAK,CAAC;EAChE;CACF;CACA,OAAOlB;AACT,GAgBaoB,KAAW,GAAgB,GAAW,MAAe;CAChE,IAAMX,IAAKI,EAAE,KAAK,EAAErB,MAAMqB,EAAE,SAAS,QAAQA,EAAE,YAAY;CAC3D,OAAO;EAAE,IAAIQ,EAAG,MAAMZ,CAAE;EAAG,IAAIY,EAAG,MAAMC,EAAST,GAAGrB,CAAC,CAAC;CAAE;AAC1D,GAEM+B,KACJ,GACA,GACA,GACA,GACA,MACc;CACd,IAAMC,IAAIJ,EAAQP,GAAGrB,GAAG6B,CAAE,GACtBI,IAAS;CACb,IAAIZ,EAAE,SAAS,SAASA,EAAE,SAAS;EACjC,IAAMa,IAAOb,EAAE,eAAeQ,EAAG,QAC3BM,IAAON,EAAG,MAAMR,EAAE,QAAQrB,EAAE;EAClC,IACE,KAAK,IAAIoC,IAAKJ,EAAE,EAAE,KAAKE,KACvBG,KAAM,KAAK,IAAIF,GAAMH,EAAE,EAAE,IAAI,KAC7BK,KAAM,KAAK,IAAIF,GAAMH,EAAE,EAAE,IAAI;CACjC,OAAO,IAAIX,EAAE,SAAS,eAAe;EACnC,IAAM,EAAE,SAAM,QAAK,SAAMA,EAAE,MACrBa,IAAO,KAAK,IAAIb,EAAE,eAAeQ,EAAG,QAAQ,CAAC,GAC7C7C,IAAI6C,EAAG,MAAMS,IAAOA,EAAKtC,KAAKmB,EAAEnB,EAAE,GAClCuC,IAAIV,EAAG,MAAMW,IAAMA,EAAIxC,KAAKmB,EAAEnB,EAAE;EACtC,IACE,KAAK,IAAIoC,IAAKJ,EAAE,EAAE,KAAKE,KACvBG,KAAM,KAAK,IAAIrD,GAAGuD,CAAC,IAAI,KACvBF,KAAM,KAAK,IAAIrD,GAAGuD,CAAC,IAAI;CAC3B;CACA,OAAO;EACL,QAAQlB;EACR,OAAOrB;EACP,IAAIgC,EAAE;EACN,IAAIA,EAAE;EACN,IAAI,KAAK,IAAIH,EAAG,MAAMR,EAAE,KAAK,EAAErB,EAAE,IAAIoC,CAAE;EACvC,MAAMH,IAAS,IAAI,KAAK,MAAMD,EAAE,KAAKI,GAAIJ,EAAE,KAAKK,CAAE;EAClD;CACF;AACF,GAGaI,KAAW,GAAgB,MACtCpB,EAAE,KAAK,QAAQA,EAAE,KAAK,KAAKrB,KAAK,IAAIqB,EAAE,KAAK,KAAKrB,KAAKqB,EAAE,WAEnDqB,KACJ,GACA,GACA,GACA,GACA,MACG;CACH,IAAMC,IAAS,KAAK,IAAItB,EAAE,YAAY,IAAI,GAAG,EAAE,IAAIuB,GAC7C3B,IAAKY,EAAG,MAAMO,CAAE,GAChBS,IAAKhB,EAAG,MAAMQ,CAAE,GAChBS,IAAKH,IAASd,EAAG,QACjBkB,IAAKJ,IAASd,EAAG,QACnBmB,IAAO,IACPC,IAAW,UACT,EAAE,MAAG,SAAM5B,EAAE;CASnB,OARA6B,EAAO7B,CAAC,CAAC,CAAC,MAAMJ,IAAK6B,GAAI7B,IAAK6B,GAAID,IAAKE,GAAIF,IAAKE,IAAK,MAAM;EACzD,IAAMrB,IAAI,KAAK,MAAMG,EAAG,MAAMX,EAAElB,EAAE,IAAIoC,GAAIP,EAAG,MAAMV,EAAEnB,EAAE,IAAIqC,CAAE;EAE7D,AAAIX,KADU,KAAK,IAAIe,EAAQpB,GAAGrB,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI4C,KACjClB,KAAKuB,MACrB,IAAWvB,GACX,IAAO1B;CAEX,CAAC,GACMgD;AACT,GAGMG,KAAU,GAAgB,GAAY,MAAe;CACzD,IAAM,EAAE,GAAGC,GAAI,GAAGC,MAAOhC,EAAE,UACrB,EAAE,MAAG,SAAMA,EAAE,MACfiC,IAAQ;CAUZ,OATAJ,EAAO7B,CAAC,CAAC,CAAC,MAAMJ,IAAKmC,GAAInC,IAAKmC,GAAIP,IAAKQ,GAAIR,IAAKQ,IAAK,MAAM;EACzD,AACEhC,EAAE,aAAarB,MACf,KAAK,IAAIkB,EAAElB,KAAKiB,CAAE,KAAKmC,KACvB,KAAK,IAAIjC,EAAEnB,KAAK6C,CAAE,KAAKQ,MAEvB,IAAQrD;CAEZ,CAAC,GACMsD;AACT,GAEMC,KAAY,GAAgB,MAAe;CAC/C,IAAM,EAAE,MAAG,MAAG,UAAO,cAAWlC,EAAE;CAClC,IAAImC,GAAQ,OAAOC,EAAavC,GAAGC,GAAGH,GAAOC,CAAE;CAC/C,IAAI+B,IAAO,IACPU,IAAQ;CACZ,KAAK,IAAI1D,IAAI,GAAGA,IAAIgB,GAAO,KAAK;EAC9B,IAAI,CAAC,OAAO,SAASG,EAAEnB,EAAE,GAAG;EAC5B,IAAM0B,IAAI,KAAK,IAAIR,EAAElB,KAAKiB,CAAE;EAC5B,AAAIS,IAAIgC,MACN,IAAQhC,GACR,IAAO1B;CAEX;CACA,OAAOgD;AACT,GAGaW,KAAe,GAAgB,MAAkC;CAC5E,IAAMC,IAAKvC,EAAE,cAAcwC,IACrBjE,IAAQyB,EAAE,KAAK,SAASwC,IACxB,EAAE,SAAM,SAAM,QAAK,aAAUxC,EAAE,MACjCpC,IAAQ2E,IAAKE,EAAMF,CAAE,IAAIvC,EAAE,UACzB0C,IAAiC,CAAC;CACxC,IAAI1C,EAAE,SAAS,eAAe;EAC5B,IAAM2C,IAAIC,IAAOA,EAAKJ,KAAS;EAI/B,AAHI,OAAO,SAASG,CAAC,MAAG,EAAM,OAAOA,IACjC1B,KAAQ,OAAO,SAASA,EAAKuB,EAAM,MAAG,EAAM,OAAOvB,EAAKuB,KACxDrB,KAAO,OAAO,SAASA,EAAIqB,EAAM,MAAG,EAAM,MAAMrB,EAAIqB,KACxD,IAAQC,EAAMzC,EAAE,KAAK,EAAEwC,KAASG,IAAI3C,EAAE,YAAYA,EAAE,OAAO;CAC7D,OAAO,IAAIA,EAAE,SAAS,WAAW;EAC/B,IAAM6C,IAAIC,IAAQA,EAAMN,KAASxC,EAAE,KAAK,EAAEwC;EAC1C,AAAI,OAAO,SAASK,CAAC,MAAG,EAAM,QAAQA;EACtC,IAAME,IAAS/C,EAAE,aAAawC;EAC9B,AAAIO,MAAQ,IAAQN,EAAMO,EAAYD,CAAM,CAAC;CAC/C;CACA,OAAO;EACL,aAAa/C,EAAE;EACf,UAAUA,EAAE;EACZ,YAAYA,EAAE;EACd;EACA,GAAGA,EAAE,KAAK,EAAEwC;EACZ,GAAGxC,EAAE,KAAK,EAAEwC;EACZ;EACA,GAAIjE,MAAU,KAAA,IAAwB,CAAC,IAAb,EAAE,SAAM;EAClC,GAAGmE;CACL;AACF,GAEMO,KACJ,GACA,MAC2B;CAC3B,IAAI,CAACC,EAAW,QAAQ,OAAO;CAC/B,EAAW,MAAM,GAAG,MAAMvF,EAAE,OAAO,QAAQuD,EAAE,OAAO,KAAK;CACzD,IAAMiC,IAAQD,EAAW,KAAK,MAAMZ,EAAYc,EAAE,QAAQA,EAAE,KAAK,CAAC,GAC5DvD,IAAIsD,EAAM,EAAE,CAAC;CACnB,OAAO;EAAE;EAAO;EAAG,QAAQnE,GAAQ,YAAYa,CAAC,KAAK,OAAOA,CAAC;CAAE;AACjE,GAOawD,KACX,GACA,GACA,GACA,GACA,GACA,IAAO,MACoB;CAC3B,IAAM,EAAE,YAAS7C,GACX8C,IAAS,IAAI/B;CACnB,IACER,IAAKlC,EAAK,IAAIyE,KACdvC,IAAKlC,EAAK,IAAIA,EAAK,QAAQyE,KAC3BtC,IAAKnC,EAAK,IAAIyE,KACdtC,IAAKnC,EAAK,IAAIA,EAAK,SAASyE,GAE5B,OAAO;CAET,IAAM1D,IAAKY,EAAG,MAAMO,CAAE,GAChBwC,IAAuB,CAAC,GACxBC,IAAsB,CAAC;CAC7B,KAAK,IAAMxD,KAAK/B,EAAM,QACpB,IAAI,IAAE,UAAU+B,EAAE,KAAK,UAAU,IACjC;MAAIA,EAAE,SAAS,WAAW;GACxB,IAAMrB,IAAI0C,EAAerB,GAAGe,GAAIC,GAAIR,GAAIe,CAAI;GAC5C,AAAI5C,KAAK,KAAG4E,EAAQ,KAAK7C,EAAYV,GAAGrB,GAAGoC,GAAIC,GAAIR,CAAE,CAAC;EACxD,OAAO,IAAIR,EAAE,SAAS,WAAW;GAC/B,IAAMrB,IAAImD,EAAO9B,GAAGQ,EAAG,MAAMO,CAAE,GAAGP,EAAG,MAAMQ,CAAE,CAAC;GAC9C,IAAIrC,KAAK,GAAG;IACV,IAAMyE,IAAI1C,EAAYV,GAAGrB,GAAGoC,GAAIC,GAAIR,CAAE;IAGtC,AAFA,EAAE,SAAS,IACX,EAAE,OAAO,GACT+C,EAAQ,KAAKH,CAAC;GAChB;EACF,OAAO;GACL,IAAMzE,IAAIuD,EAASlC,GAAGJ,CAAE;GACxB,AAAIjB,KAAK,KAAG6E,EAAO,KAAK9C,EAAYV,GAAGrB,GAAGoC,GAAIC,GAAIR,CAAE,CAAC;EACvD;;CAEF,IAAIvC,EAAM,gBAAgB,WAAW;EACnC,IAAMwF,IAAM,CAAC,GAAGF,GAAS,GAAGC,CAAM,CAAC,CAAC,QACjC,MAAMJ,EAAE,UAAUA,EAAE,OAAO,SAAS,aAAaA,EAAE,QAAQ,KAAK7B,CACnE;EAGA,OAFKkC,EAAI,SAEFR,EAAQ,CADFQ,EAAI,QAAQ,GAAG,MAAOvC,EAAE,QAAQvD,EAAE,OAAOuD,IAAIvD,CAC1C,CAAI,GAAGqB,CAAM,IAFL;CAG1B;CACA,IAAI,CAACwE,EAAO,QAEV,OADKD,EAAQ,SACNN,EACL,CAACM,EAAQ,QAAQ,GAAG,MAAOrC,EAAE,QAAQvD,EAAE,OAAOuD,IAAIvD,CAAE,CAAC,GACrDqB,CACF,IAJ4B;CAM9B,IAAM0E,IAAS,KAAK,IAAI,GAAGF,EAAO,KAAK,MAAMJ,EAAE,EAAE,CAAC,GAC5CO,IAAS1F,EAAM,EAAE,SAAS,aAAa,KAAMuC,EAAG,SAAS,GACzDoD,IAAUJ,EAAO,QAAQ,MAAMJ,EAAE,MAAMM,IAAS,KAAK,IAAI,GAAGC,CAAM,CAAC,GACnEE,IAAQD,EAAQ,QAAQ,GAAG,MAAO1C,EAAE,KAAKvD,EAAE,KAAKuD,IAAIvD,CAAE,GAEtDmG,IAAQb,EAAQ;EADLY;EAAO,GAAGD,EAAQ,QAAQ,MAAMR,MAAMS,CAAK;EAAG,GAAGN;CAC5C,GAASvE,CAAM;CAKrC,OAJI8E,MACF,EAAM,IAAIxB,EAAYuB,EAAM,QAAQA,EAAM,KAAK,CAAC,CAAC,GACjD,EAAM,SAAS7E,GAAQ,YAAY8E,EAAM,CAAC,KAAK,OAAOA,EAAM,CAAC,IAExDA;AACT,GAGaC,KACX,GACA,MAEApG,MAAMuD,KACL,CAAC,CAACvD,KACD,CAAC,CAACuD,KACFvD,EAAE,MAAM,WAAWuD,EAAE,MAAM,UAC3BvD,EAAE,MAAM,OACL,GAAI,MACHqG,EAAG,UAAU9C,EAAE,MAAMvC,EAAE,CAAC,SACxBqF,EAAG,gBAAgB9C,EAAE,MAAMvC,EAAE,CAAC,WAClC,GAmBSsF,KACX,GACA,GACA,MACmB;CACnB,IAAMC,IAAU/F,GAAQ,eAAe,QACjC0F,IAAQC,EAAM,MAAM,IACpBK,IAAcN,IAAQ5F,EAAM,OAAO4F,EAAM,eAAe;CAC9D,IAAIC,EAAM,MAAM,WAAW,KAAKK,GAAa,SAAS,WAAW;EAC/D,IAAMC,IACJnG,EAAM,EAAE,SAAS,aACZA,EAAM,EAAE,WAAW,KAAK,MAAM4F,EAAM,CAAC,MAAMK,EAAQL,EAAM,CAAC,IAC3DK,EAAQL,EAAM,CAAC;EACrB,OAAO;GACL,OAAO,GAAGC,EAAM,OAAO,KAAKM;GAC5B,YAAY;GACZ,MAAM,CACJ;IACE,OAAOP,EAAM;IACb,MAAMA,EAAM,SAASM,EAAY;IACjC,OACEN,EAAM,UAAU,KAAA,IACZ,OACCM,EAAY,UAAU9E,EAAA,CAAawE,EAAM,KAAK;GACvD,CACF;EACF;CACF;CAIA,IAHoBC,EAAM,MAAM,OAC7B,MAAO7F,EAAM,OAAO+F,EAAG,YAAY,CAAC,SAAS,SAE5C,KAAeF,EAAM,MAAM,WAAW,GAAG;EAC3C,IAAME,IAAKF,EAAM,MAAM,IACjBO,IAAqB,CACzB;GAAE,OAAO;GAAM,MAAMpG,EAAM,EAAE,SAAS;GAAK,OAAO6F,EAAM;EAAO,GAC/D;GAAE,OAAO;GAAM,MAAM7F,EAAM,EAAE,SAAS;GAAK,OAAOiG,EAAQF,EAAG,CAAC;EAAE,CAClE;EAGA,OAFIA,EAAG,UAAU,KAAA,KAAa/F,EAAM,OAAO,SAAS,KAClDoG,EAAK,KAAK;GAAE,OAAO;GAAM,MAAM;GAAI,OAAOL,EAAG;EAAW,CAAC,GACpD;GAAE,OAAOA,EAAG,SAASA,EAAG;GAAY,YAAYA,EAAG;GAAO;EAAK;CACxE;CACA,IAAMK,IAAqB,CAAC,GAEtBC,IAAkB,CAAC;CACzB,KAAK,IAAMN,KAAMF,EAAM,OAAO;EAC5B,IAAM9D,IAAI/B,EAAM,OAAO+F,EAAG;EAE1B,IADAM,EAAM,KAAKD,EAAK,MAAM,GAClBrE,EAAE,SAAS,eAAe;GAC5B,IAAMuE,IACJP,EAAG,SAAS,KAAA,KAAaA,EAAG,SAAS,KAC/BA,EAAG,IAAIA,EAAG,QAAQ,KAAK,IAAIA,EAAG,IAAI,IAAK,MACzC;GACN,EAAK,KAAK;IACR,OAAOA,EAAG;IACV,MAAMhE,EAAE;IACR,OAAO,OAAO,SAASuE,CAAM,IACzB,GAAGA,KAAU,IAAI,MAAM,KAAKA,EAAO,QAAQ,CAAC,EAAE,KAC9C;GACN,CAAC;GACD,IAAMC,IAAuC;IAC3C,CAAC,QAAQR,EAAG,IAAI;IAChB,CAAC,QAAQA,EAAG,IAAI;IAChB,CAAC,OAAOA,EAAG,GAAG;IACd,CAAC,SAASA,EAAG,CAAC;GAChB;GACA,KAAK,IAAM,CAACS,GAAM5B,MAAM2B,GACtB,AAAI3B,MAAM,KAAA,KAAa,OAAO,SAASA,CAAC,KACtCwB,EAAK,KAAK;IAAE,OAAO;IAAM;IAAM,QAAQrE,EAAE,UAAUkE,EAAA,CAASrB,CAAC;GAAE,CAAC;GAEpE;EACF;EACA,EAAK,KAAK;GACR,OAAOmB,EAAG;GACV,MAAMA,EAAG,QAAQ,GAAGA,EAAG,WAAW,KAAKA,EAAG,UAAUA,EAAG;GACvD,QAAQhE,EAAE,UAAUkE,EAAA,CAASF,EAAG,CAAC;EACnC,CAAC;CACH;CACA,IAAI/F,EAAM,SAAS;EAEjB,IAAMyG,oBAAS,IAAI,IAAoB;EACvC,KAAK,IAAMV,KAAMF,EAAM,OAAO;GAC5B,IAAMa,IAAQC,EAAU3G,GAAO+F,EAAG,WAAW;GAC7C,AAAIW,MAAU,QAAQ,OAAO,SAASX,EAAG,CAAC,KACxCU,EAAO,IAAIC,IAAQD,EAAO,IAAIC,CAAK,KAAK,KAAK,KAAK,IAAIX,EAAG,CAAC,CAAC;EAC/D;EACA,EAAM,MAAM,SAAS,GAAI,MAAM;GAC7B,IAAMW,IAAQC,EAAU3G,GAAO+F,EAAG,WAAW,GACvCa,IAAQF,MAAU,OAA2B,KAAA,IAApBD,EAAO,IAAIC,CAAK,GACzCG,IAAMT,EAAKC,EAAMS;GACvB,AAAIF,KAASC,KAAO,OAAO,SAASd,EAAG,CAAC,MAEtC,EAAI,QAAQ,IADG/F,EAAM,OAAO+F,EAAG,YAAY,CAAC,UAAU3E,EAAA,CAChC2E,EAAG,CAAC,EAAE,MAAO,KAAK,IAAIA,EAAG,CAAC,IAAIa,IAAS,IAAA,CAAK,QAAQ,CAAC,EAAE;EAEjF,CAAC;CACH;CACA,OAAO;EAAE,OAAOf,EAAM;EAAQ,YAAY;EAAM;CAAK;AACvD,GAGMc,KAAa,GAAmB,MACpC3G,EAAM,OAAO+G,EAAY,CAAC,SAAS,OAAO/G,EAAM,OAAO+G,IAoB5CC,KACX,GACA,GACA,MACgB;CAChB,IAAMC,IAAqB,CAAC,GACtB,EAAE,YAAS1E,GACb2E,IAAS,UACTC,IAAS;CACb,KAAK,IAAMpB,KAAMF,EAAM,OAAO;EAC5B,IAAM9D,IAAI/B,EAAM,OAAO+F,EAAG;EAC1B,IAAIhE,EAAE,SAAS,SAASA,EAAE,SAAS,eAAe;GAChD,IAAMqF,IAAK7E,EAAG,MAAMwD,EAAG,IAAIhE,EAAE,SAAS,GAChCa,IAAO,KAAK,IAAIb,EAAE,eAAeQ,EAAG,QAAQ,CAAC;GAEnD,AADA,IAAS,KAAK,IAAI2E,GAAQE,IAAKxE,CAAI,GACnC,IAAS,KAAK,IAAIuE,GAAQC,IAAKxE,CAAI;GACnC;EACF;EACA,IAAIb,EAAE,SAAS,WAAW;GACxB,IAAMqF,IAAK7E,EAAG,MAAMwD,EAAG,CAAC,GAClBsB,IAAK9E,EAAG,MAAMwD,EAAG,CAAC,GAClBuB,IAAK,KAAK,IAAIvF,EAAE,SAAS,IAAIQ,EAAG,MAAM,GACtCgF,IAAK,KAAK,IAAIxF,EAAE,SAAS,IAAIQ,EAAG,MAAM;GAC5C,EAAM,KAAK;IACT,MAAM;IACN,GAAG6E,IAAKE;IACR,GAAGD,IAAKE;IACR,OAAOD,IAAK;IACZ,QAAQC,IAAK;GACf,CAAC;GACD;EACF;EACA,IAAM,EAAE,OAAI,UAAOjF,EAAQP,GAAGgE,EAAG,OAAOxD,CAAE;EAC1C,IACEO,IAAKlC,EAAK,IAAI,KACdkC,IAAKlC,EAAK,IAAIA,EAAK,QAAQ,KAC3BmC,IAAKnC,EAAK,IAAI,KACdmC,IAAKnC,EAAK,IAAIA,EAAK,SAAS,GAE5B;EAEF,IAAMyB,IACJN,EAAE,SAAS,YACPoB,EAAQpB,GAAGgE,EAAG,KAAK,IAAI,IACvB,KAAK,IAAI,GAAGhE,EAAE,YAAY,IAAI,CAAC,GAC/ByF,IAAOzF,EAAE,cAAcgE,EAAG,UAAUhE,EAAE;EAC5C,EAAM,KAAK;GACT,MAAM;GACN,GAAGe;GACH,GAAGC;GACH;GACA,OAAOgD,EAAG;GACV,MAAMvB,EAAMgD,GAAM,EAAG;EACvB,CAAC;CACH;CACA,IAAIL,IAASD,GAAQ;EAEnB,IAAMO,IAAM,KAAK,IAAI,IAAIN,IAASD,KAAU,GAAI,GAC1C1F,IAAK,KAAK,IAAIZ,EAAK,GAAGsG,IAASO,CAAG,GAClChG,IAAK,KAAK,IAAIb,EAAK,IAAIA,EAAK,OAAOuG,IAASM,CAAG;EACrD,AAAIhG,IAAKD,KACPyF,EAAM,QAAQ;GACZ,MAAM;GACN,GAAGzF;GACH,GAAGZ,EAAK;GACR,OAAOa,IAAKD;GACZ,QAAQZ,EAAK;EACf,CAAC;CAEL;CACA,OAAOqG;AACT,GAGaS,KACX,MAEAC,MAAS,YAAY,QAAQA,MAAS,SAAS,SAAS,UAG7CC,KACX,GACA,GACA,MAEAC,MACC7H,EAAM,gBAAgB,UACrB6F,EAAM,MAAM,MAAM,MAAO;CACvB,IAAM8B,IAAO3H,EAAM,OAAO+F,EAAG,YAAY,CAAC;CAC1C,OAAO4B,MAAS,UAAUA,MAAS;AACrC,CAAC,KAED,CAAC9B,EAAM,MAAM,MAAM,MAAO;CACxB,IAAM8B,IAAO3H,EAAM,OAAO+F,EAAG,YAAY,CAAC;CAC1C,OAAO4B,MAAS,SAASA,MAAS;AACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"scene.js","names":["DEFAULT_PADDING","fallbackResolve","fallback","resolveAnnotations","resolve","theme","y","mapY","v","annotations","a","color","mix","layoutChart","input","model","layoutHorizontal","yCount","height","yTicks","axisTicks","view","yLabelWidth","label","measure","y2Ticks","rightTicks","y2LabelWidth","categoryWidth","step","i","padding","plot","computePlot","xCount","xTicks","createScales","axis","map","b","ticks","count","raw","maxAbs","tick","tickFormatter","rows","xLabelWidth","names","name","collectPointLabels","labels","axisFormat","series","format","texts","top","x0","x1","xv","x","reversed","p","toScreen","s","y0","delta","text","xi","yi","d","size","slotOffset","pointOf","sc","plottedY","onColumn","pa","pb","ax","center","half","ay","candidateOf","alongX","px","py","alongY","inside","high","low","outlierAt","list","reach","slop","best","bestDist","k","dotSize","maxSizes","maxDot","sizes","max","nearestScatter","radius","at","toData","rx","ry","gridOf","cellAt","hx","hy","found","yv","nearestX","sorted","nearestIndex","bestD","hoverItemOf","pc","index","toCss","extra","o","open","value","packed","unpackColor","q1","q3","out","outliers","eventOf","candidates","items","item","c","hitTest","margin","scatter","others","all","bestDx","bandPx","aligned","first","event","sameHover","it","CHANGE_PERCENT","detailRows","tooltipContent","yFormat","formatOf","firstSeries","formatDuration","yName","valueRow","rowOf","binTitle","change","numberFormat","ohlc","stats","totals","stack","stackIdOf","total","row","formatPercent","seriesIndex","hoverMarks","marks","bandLo","bandHi","plottedOutlier","cx","cy","hw","hh","cell","screenRect","style","heatCellStyle","bottom","left","right","fill","contrastRing","rgba","pad","lo","hi","luminance","connectorSegments","v0","v1","prev","COLOR_STOPS","colorLegend","lut","stops","mid","legendShown","option","named","legendShape","type","showsCrosshair","crosshair","crosshairAt"],"sources":["../../../../charts/src/engine/scene.ts"],"sourcesContent":["// The DOM-free half of a chart: annotations, layout, point labels, hit\n// testing and tooltip content. Shared by createChart (DOM + GPU),\n// createCanvasChart (any 2D context) and the React Native views.\n\nimport { axisTicks, type AxisTicks } from \"./axis\";\nimport { luminance, mix, toCss, unpackColor, type Rgba } from \"./color\";\nimport { nearestIndex } from \"./data\";\nimport { formatDuration, formatPercent, tickFormatter } from \"./format\";\nimport { numberFormat } from \"./locale\";\nimport {\n alongX,\n alongY,\n computePlot,\n createScales,\n heatCellStyle,\n screenRect,\n toData,\n toScreen,\n type Rect,\n type Scales,\n} from \"./layout\";\nimport { gridOf, plottedY, type ChartModel, type SeriesModel } from \"./model\";\nimport type { PointLabel, ResolvedAnnotation } from \"./overlay\";\nimport type { ChartTheme } from \"./theme\";\nimport type { Range } from \"./viewport\";\nimport type {\n ChartAnnotation,\n ChartHoverEvent,\n ChartHoverItem,\n ChartOptions,\n ChartPadding,\n ChartView,\n} from \"./types\";\n\nexport const MAX_POINT_LABELS = 300;\nexport const DEFAULT_PADDING = { top: 12, right: 16, bottom: 4, left: 4 };\n\nexport const fallbackResolve = (_value: string, fallback: Rgba) => fallback;\n\n/**\n * Annotation colors resolved against the theme; `mapY` turns y values into\n * plotted units (log axes)\n */\nexport const resolveAnnotations = (\n annotations: readonly ChartAnnotation[] | undefined,\n theme: ChartTheme,\n mapY?: (value: number) => number,\n): ResolvedAnnotation[] => {\n const resolve = theme.resolve ?? fallbackResolve;\n const y = <T extends number | undefined>(v: T): T =>\n (mapY && v !== undefined ? mapY(v) : v) as T;\n return (annotations ?? []).map((a) => {\n if (a.type === \"rect\") {\n const color = a.color ? resolve(a.color, theme.primary) : theme.primary;\n return {\n type: \"rect\",\n x0: a.x0,\n x1: a.x1,\n y0: y(a.y0),\n y1: y(a.y1),\n color,\n opacity: a.opacity ?? 0.08,\n label: a.label,\n labelPosition: a.labelPosition ?? \"top-left\",\n labelColor: a.labelColor\n ? resolve(a.labelColor, color)\n : mix(color, theme.text, 0.2),\n };\n }\n if (a.type === \"text\") {\n return {\n type: \"text\",\n x: a.x,\n y: y(a.y),\n text: a.text,\n anchor: a.anchor ?? \"center\",\n color: a.color ? resolve(a.color, theme.textMuted) : theme.textMuted,\n weight: a.weight ?? 500,\n };\n }\n return {\n type: \"line\",\n axis: a.axis,\n value: a.axis === \"y\" ? y(a.value) : a.value,\n color: a.color ? resolve(a.color, theme.textMuted) : theme.textMuted,\n width: a.width ?? 1,\n dash: [...(a.dash ?? [4, 4])],\n label: a.label,\n };\n });\n};\n\nexport interface ChartLayout {\n plot: Rect;\n scales: Scales;\n xTicks: AxisTicks;\n yTicks: AxisTicks;\n /** Ticks of the right axis: at the left tick positions, labelled in right axis units */\n y2Ticks: AxisTicks | null;\n}\n\nexport interface LayoutInput {\n model: ChartModel;\n view: ChartView;\n theme: ChartTheme;\n /** Size of the drawing area (legend excluded), CSS pixels */\n width: number;\n height: number;\n padding?: ChartPadding;\n /** Offset of the drawing area (e.g. below a legend) */\n top?: number;\n /** Width of a tick label in the theme font */\n measure: (text: string) => number;\n}\n\n/** Ticks, room for the axes and the plot rectangle */\nexport const layoutChart = (input: LayoutInput): ChartLayout => {\n const { model, view, theme, width, height, measure } = input;\n if (model.horizontal) return layoutHorizontal(input);\n // same count as the nice range of the model (its ends are then ticks),\n // fewer on short charts; category rows get a label each when they fit\n const yCount =\n model.y.tickCount ??\n (model.y.type === \"category\"\n ? Math.max(1, Math.floor((height - 40) / (theme.fontSize + 5)))\n : height >= 220\n ? 5\n : Math.max(2, Math.round((height - 48) / 52)));\n const yTicks = axisTicks(model.y, view.y, yCount);\n let yLabelWidth = 0;\n if (model.y.visible) {\n for (const label of yTicks.labels)\n yLabelWidth = Math.max(yLabelWidth, measure(label));\n }\n const y2Ticks = rightTicks(model, yTicks, view.y, yCount);\n let y2LabelWidth = 0;\n if (y2Ticks && model.y2?.visible) {\n for (const label of y2Ticks.labels)\n y2LabelWidth = Math.max(y2LabelWidth, measure(label));\n }\n let categoryWidth = 48;\n if (model.x.type === \"category\") {\n categoryWidth = 0;\n const step = Math.max(1, Math.floor(model.x.categories.length / 200));\n for (let i = 0; i < model.x.categories.length; i += step) {\n categoryWidth = Math.max(categoryWidth, measure(model.x.categories[i]));\n }\n }\n const padding = { ...DEFAULT_PADDING, ...input.padding };\n const plot = computePlot({\n width,\n height,\n padding,\n yLabelWidth: model.y.visible ? Math.ceil(yLabelWidth) : 0,\n y2LabelWidth: Math.ceil(y2LabelWidth),\n y2Title: !!model.y2?.title && !!model.y2.visible,\n xAxisVisible: model.x.visible,\n xTitle: !!model.x.title && model.x.visible,\n yTitle: !!model.y.title && model.y.visible,\n fontSize: theme.fontSize,\n });\n if (input.top) plot.y += input.top;\n const xCount =\n model.x.type === \"category\"\n ? Math.max(1, Math.floor(plot.width / (categoryWidth + 14)))\n : (model.x.tickCount ?? Math.max(3, Math.floor(plot.width / 88)));\n const xTicks = axisTicks(model.x, view.x, xCount);\n const scales = createScales(plot, view, model.x.reverse, model.y.reverse);\n return { plot, scales, xTicks, yTicks, y2Ticks };\n};\n\n/**\n * Right axis ticks: the left ticks labelled in right axis units; log axes\n * get their own decades\n */\nconst rightTicks = (\n model: ChartModel,\n yTicks: AxisTicks,\n view: Range,\n count: number,\n): AxisTicks | null => {\n const axis = model.y2;\n const map = model.y2Map;\n if (!axis || !map || !map.scale) return null;\n if (map.log) {\n const a = (view[0] - map.offset) / map.scale;\n const b = (view[1] - map.offset) / map.scale;\n const ticks = axisTicks(axis, [Math.min(a, b), Math.max(a, b)], count);\n return {\n ...ticks,\n values: ticks.values.map((e) => e * map.scale + map.offset),\n };\n }\n const raw = yTicks.values.map((v) => (v - map.offset) / map.scale);\n const step = raw.length > 1 ? Math.abs(raw[1] - raw[0]) : 1;\n let maxAbs = 0;\n for (const v of raw) maxAbs = Math.max(maxAbs, Math.abs(v));\n const tick = axis.format ?? tickFormatter(step, maxAbs, model.locale);\n return {\n values: yTicks.values,\n labels: raw.map(tick),\n formatValue: axis.format ?? model.formatValue,\n };\n};\n\n/** Horizontal charts: the x axis on the left, the values along the bottom */\nconst layoutHorizontal = (input: LayoutInput): ChartLayout => {\n const { model, view, theme, width, height, measure } = input;\n const rows = Math.max(1, Math.floor((height - 40) / (theme.fontSize + 5)));\n const xCount =\n model.x.tickCount ??\n (model.x.type === \"category\"\n ? rows\n : height >= 220\n ? 5\n : Math.max(2, Math.round((height - 48) / 52)));\n const xTicks = axisTicks(model.x, view.x, xCount);\n let xLabelWidth = 0;\n if (model.x.visible) {\n if (model.x.type === \"category\") {\n // every name (the visible ones change when zooming)\n const names = model.x.categories;\n const step = Math.max(1, Math.floor(names.length / 200));\n for (let i = 0; i < names.length; i += step) {\n const name = model.x.format ? model.x.format(i) : names[i];\n xLabelWidth = Math.max(xLabelWidth, measure(name));\n }\n } else {\n for (const label of xTicks.labels)\n xLabelWidth = Math.max(xLabelWidth, measure(label));\n }\n }\n const padding = { ...DEFAULT_PADDING, ...input.padding };\n const plot = computePlot({\n width,\n height,\n padding,\n yLabelWidth: model.x.visible ? Math.ceil(xLabelWidth) : 0,\n xAxisVisible: model.y.visible,\n xTitle: !!model.y.title && model.y.visible,\n yTitle: !!model.x.title && model.x.visible,\n fontSize: theme.fontSize,\n });\n if (input.top) plot.y += input.top;\n const yCount =\n model.y.tickCount ??\n (model.y.type === \"category\"\n ? Math.max(1, Math.floor(plot.width / 60))\n : Math.max(3, Math.min(8, Math.floor(plot.width / 88))));\n const yTicks = axisTicks(model.y, view.y, yCount);\n const scales = createScales(\n plot,\n view,\n model.x.reverse,\n model.y.reverse,\n true,\n );\n return { plot, scales, xTicks, yTicks, y2Ticks: null };\n};\n\n/** Labels of the visible scatter points and bar values (`showLabels`) */\nexport const collectPointLabels = (\n model: ChartModel,\n view: ChartView,\n s: Scales,\n yTicks?: AxisTicks | null,\n): PointLabel[] => {\n const labels: PointLabel[] = [];\n // 100% stacks: the axis shows percents, the labels the actual values\n const axisFormat = model.percent\n ? model.formatValue\n : (yTicks?.formatValue ?? model.formatValue);\n for (const series of model.series) {\n if (series.hidden || !series.showLabels) continue;\n if (series.type === \"bar\" && series.barTop) {\n // 100% stacks and right axis series: the values of the data\n const format =\n series.format ??\n (series.yAxis === \"right\"\n ? (model.y2?.format ?? model.formatValue)\n : axisFormat);\n const { x, count } = series.cols;\n const { y, y0, labels: texts } = series.raw;\n const top = series.barTop;\n const [x0, x1] = view.x[0] <= view.x[1] ? view.x : [view.x[1], view.x[0]];\n for (let i = 0; i < count && labels.length < MAX_POINT_LABELS; i++) {\n const xv = x[i] + series.barOffset;\n if (!Number.isFinite(y[i]) || xv < x0 || xv > x1) continue;\n // the end away from the base (the top, or the bottom of negative bars)\n const negative = top[i] < (series.barBase?.[i] ?? 0);\n const reversed = negative !== model.y.reverse;\n const p = toScreen(s, xv, top[i]);\n const step = series.floating && y0 && Number.isFinite(y0[i]);\n // ranges on a time axis (Gantt tasks) have no value to write\n if (step && model.y.type === \"time\" && !texts?.[i]) continue;\n const delta = step ? y[i] - (y0?.[i] ?? 0) : 0;\n labels.push({\n x: p.x,\n y: p.y,\n r: 0,\n text:\n texts?.[i] ??\n (step ? `${delta > 0 ? \"+\" : \"\"}${format(delta)}` : format(y[i])),\n placement: s.horizontal\n ? reversed\n ? \"left\"\n : \"right\"\n : reversed\n ? \"below\"\n : \"above\",\n });\n }\n continue;\n }\n if (series.type !== \"scatter\") continue;\n const { x, y, count, labels: texts, size } = series.cols;\n if (!texts) continue;\n for (let i = 0; i < count && labels.length < MAX_POINT_LABELS; i++) {\n const text = texts[i];\n if (!text) continue;\n const xi = x[i];\n const yi = y[i];\n if (xi < view.x[0] || xi > view.x[1] || yi < view.y[0] || yi > view.y[1])\n continue;\n const d = size && size[i] > 0 ? size[i] : series.pointSize;\n const p = toScreen(s, xi, yi);\n labels.push({ x: p.x, y: p.y, r: d / 2, text });\n }\n }\n return labels;\n};\n\n// ---------------------------------------------------------------- hit tests\n\ninterface Candidate {\n series: SeriesModel;\n index: number;\n /** Pixel position of the point */\n px: number;\n py: number;\n /** Distance along the x axis */\n dx: number;\n dist: number;\n inside: boolean;\n /** Box plots: value of the outlier under the pointer */\n outlier?: number;\n}\n\n/** Bars and box plots sit in a slot of their category */\nconst slotOffset = (s: SeriesModel) =>\n s.type === \"bar\" || s.type === \"boxplot\" ? s.barOffset : 0;\n\n/**\n * Screen position of a point (the end of a bar or stack, the close of a\n * candle, the median of a box)\n */\nexport const pointOf = (s: SeriesModel, i: number, sc: Scales) => {\n const p = toScreen(sc, s.cols.x[i] + slotOffset(s), plottedY(s, i));\n return { px: p.x, py: p.y };\n};\n\n/** Whether a pixel (along x, along y) is on a column from `a` to `b` */\nconst onColumn = (\n sc: Scales,\n center: number,\n half: number,\n a: number,\n b: number,\n ax: number,\n ay: number,\n) => {\n const pa = sc.yToPx(a);\n const pb = sc.yToPx(b);\n return (\n Math.abs(ax - center) <= half &&\n ay >= Math.min(pa, pb) - 2 &&\n ay <= Math.max(pa, pb) + 2\n );\n};\n\nconst candidateOf = (\n s: SeriesModel,\n i: number,\n px: number,\n py: number,\n sc: Scales,\n): Candidate => {\n const p = pointOf(s, i, sc);\n const ax = alongX(sc, px, py);\n const ay = alongY(sc, px, py);\n const center = sc.xToPx(s.cols.x[i] + slotOffset(s));\n let inside = false;\n if (s.type === \"bar\" && s.barBase && s.barTop) {\n const half = s.barHalfWidth / Math.abs(sc.xPerPx);\n inside = onColumn(sc, center, half, s.barBase[i], s.barTop[i], ax, ay);\n } else if (s.type === \"candlestick\" || s.type === \"boxplot\") {\n const { high, low, y } = s.cols;\n const half = Math.max(s.barHalfWidth / Math.abs(sc.xPerPx), 3);\n const a = high ? high[i] : y[i];\n const b = low ? low[i] : y[i];\n inside = onColumn(sc, center, half, a, b, ax, ay);\n }\n return {\n series: s,\n index: i,\n px: p.px,\n py: p.py,\n dx: Math.abs(sc.xToPx(s.cols.x[i]) - ax),\n dist: inside ? 0 : Math.hypot(p.px - px, p.py - py),\n inside,\n };\n};\n\n/** Outlier of a box under a pixel (`undefined` when none is in reach) */\nconst outlierAt = (\n s: SeriesModel,\n i: number,\n px: number,\n py: number,\n sc: Scales,\n slop: number,\n): number | undefined => {\n const list = s.cols.outliers?.[i];\n if (!list) return undefined;\n const center = sc.xToPx(s.cols.x[i] + slotOffset(s));\n const ax = alongX(sc, px, py) - center;\n const ay = alongY(sc, px, py);\n const reach = s.outlierSize / 2 + 4 + slop;\n let best: number | undefined;\n let bestDist = reach;\n list.forEach((v, k) => {\n const d = Math.hypot(ax, sc.yToPx(v) - ay);\n if (d <= bestDist) {\n bestDist = d;\n // the value of the data (right axis series are mapped)\n best = s.raw.outliers?.[i]?.[k] ?? v;\n }\n });\n return best;\n};\n\n/** Diameter of a scatter dot */\nexport const dotSize = (s: SeriesModel, i: number) =>\n s.cols.size && s.cols.size[i] > 0 ? s.cols.size[i] : s.pointSize;\n\nconst maxSizes = new WeakMap<Float32Array, number>();\n\n/** Largest dot of a series (bubbles reach further than plain dots) */\nconst maxDot = (s: SeriesModel) => {\n const sizes = s.cols.size;\n if (!sizes) return s.pointSize;\n let max = maxSizes.get(sizes);\n if (max === undefined) {\n max = s.pointSize;\n for (let i = 0; i < sizes.length; i++) if (sizes[i] > max) max = sizes[i];\n maxSizes.set(sizes, max);\n }\n return max;\n};\n\nconst nearestScatter = (\n s: SeriesModel,\n px: number,\n py: number,\n sc: Scales,\n slop: number,\n) => {\n const radius = Math.max(maxDot(s) / 2 + 6, 10) + slop;\n const at = toData(sc, px, py);\n const rx = radius * Math.abs(sc.xPerPx);\n const ry = radius * Math.abs(sc.yPerPx);\n let best = -1;\n let bestDist = Infinity;\n const { x, y } = s.cols;\n gridOf(s).query(at.x - rx, at.x + rx, at.y - ry, at.y + ry, (i) => {\n const p = toScreen(sc, x[i], y[i]);\n const d = Math.hypot(p.x - px, p.y - py);\n const reach = Math.max(dotSize(s, i) / 2 + 4, 8) + slop;\n if (d <= reach && d <= bestDist) {\n bestDist = d;\n best = i;\n }\n });\n return best;\n};\n\n/** Heatmap cell containing a data position, -1 if none */\nconst cellAt = (s: SeriesModel, xv: number, yv: number) => {\n const { x: hx, y: hy } = s.cellHalf;\n const { x, y } = s.cols;\n let found = -1;\n gridOf(s).query(xv - hx, xv + hx, yv - hy, yv + hy, (i) => {\n if (\n s.cellColors?.[i] &&\n Math.abs(x[i] - xv) <= hx &&\n Math.abs(y[i] - yv) <= hy\n ) {\n found = i;\n }\n });\n return found;\n};\n\nconst nearestX = (s: SeriesModel, xv: number) => {\n const { x, y, count, sorted } = s.cols;\n if (sorted) return nearestIndex(x, y, count, xv);\n let best = -1;\n let bestD = Infinity;\n for (let i = 0; i < count; i++) {\n if (!Number.isFinite(y[i])) continue;\n const d = Math.abs(x[i] - xv);\n if (d < bestD) {\n bestD = d;\n best = i;\n }\n }\n return best;\n};\n\n/** Hover payload item of a point (values of the data, right axis included) */\nexport const hoverItemOf = (s: SeriesModel, index: number): ChartHoverItem => {\n const pc = s.pointColors?.[index];\n const { open, high, low, value, y0, q1, q3, outliers, labels } = s.raw;\n const label = labels?.[index];\n let color = pc ? toCss(pc) : s.colorCss;\n const extra: Partial<ChartHoverItem> = {};\n if (s.type === \"candlestick\") {\n const o = open ? open[index] : NaN;\n if (Number.isFinite(o)) extra.open = o;\n if (high && Number.isFinite(high[index])) extra.high = high[index];\n if (low && Number.isFinite(low[index])) extra.low = low[index];\n color = toCss(s.raw.y[index] < o ? s.downColor : s.upColor);\n } else if (s.type === \"heatmap\") {\n const v = value ? value[index] : s.raw.y[index];\n if (Number.isFinite(v)) extra.value = v;\n const packed = s.cellColors?.[index];\n if (packed) color = toCss(unpackColor(packed));\n } else if (s.type === \"boxplot\") {\n if (high && Number.isFinite(high[index])) extra.high = high[index];\n if (low && Number.isFinite(low[index])) extra.low = low[index];\n if (q1 && Number.isFinite(q1[index])) extra.q1 = q1[index];\n if (q3 && Number.isFinite(q3[index])) extra.q3 = q3[index];\n const out = outliers?.[index];\n if (out) extra.outliers = out.length;\n } else {\n if (y0 && Number.isFinite(y0[index])) extra.y0 = y0[index];\n if (s.type === \"scatter\" && value && Number.isFinite(value[index]))\n extra.value = value[index];\n }\n return {\n seriesIndex: s.index,\n seriesId: s.id,\n seriesName: s.name,\n index,\n x: s.raw.x[index],\n y: s.raw.y[index],\n color,\n ...(label !== undefined ? { label } : {}),\n ...extra,\n };\n};\n\nconst eventOf = (\n candidates: Candidate[],\n xTicks: AxisTicks | null,\n): ChartHoverEvent | null => {\n if (!candidates.length) return null;\n candidates.sort((a, b) => a.series.index - b.series.index);\n const items = candidates.map((c) => {\n const item = hoverItemOf(c.series, c.index);\n if (c.outlier !== undefined) item.outlier = c.outlier;\n return item;\n });\n const x = items[0].x;\n return { items, x, xLabel: xTicks?.formatValue(x) ?? String(x) };\n};\n\n/**\n * Points under a pixel of the stage: the nearest point (scatter / `nearest`\n * tooltips) or every series at the nearest x (`axis` tooltips).\n * `slop` widens the reach of the dots (touch screens).\n */\nexport const hitTest = (\n model: ChartModel,\n sc: Scales,\n xTicks: AxisTicks | null,\n px: number,\n py: number,\n slop = 0,\n): ChartHoverEvent | null => {\n const { plot } = sc;\n const margin = 6 + slop;\n if (\n px < plot.x - margin ||\n px > plot.x + plot.width + margin ||\n py < plot.y - margin ||\n py > plot.y + plot.height + margin\n ) {\n return null;\n }\n const at = toData(sc, px, py);\n const scatter: Candidate[] = [];\n const others: Candidate[] = [];\n for (const s of model.series) {\n if (s.hidden || !s.tooltip || s.cols.count === 0) continue;\n if (s.type === \"scatter\") {\n const i = nearestScatter(s, px, py, sc, slop);\n if (i >= 0) scatter.push(candidateOf(s, i, px, py, sc));\n } else if (s.type === \"heatmap\") {\n const i = cellAt(s, at.x, at.y);\n if (i >= 0) {\n const c = candidateOf(s, i, px, py, sc);\n c.inside = true;\n c.dist = 0;\n scatter.push(c);\n }\n } else {\n const i = nearestX(s, at.x);\n if (i < 0) continue;\n const c = candidateOf(s, i, px, py, sc);\n if (s.type === \"boxplot\") {\n c.outlier = outlierAt(s, i, px, py, sc, slop);\n if (c.outlier !== undefined) {\n c.inside = true;\n c.dist = 0;\n }\n }\n others.push(c);\n }\n }\n if (model.tooltipMode === \"item\") {\n // the shape under the pointer only: bars, boxes, cells, dots in reach\n // and lines within a few pixels; the last drawn wins\n const all = [...scatter, ...others].filter(\n (c) =>\n c.inside ||\n c.series.type === \"scatter\" ||\n ((c.series.type === \"line\" || c.series.type === \"area\") &&\n c.dist <= 8 + slop),\n );\n if (!all.length) return null;\n const best = all.reduce((a, b) =>\n b.dist < a.dist || (b.dist === a.dist && b.series.index > a.series.index)\n ? b\n : a,\n );\n return eventOf([best], xTicks);\n }\n if (model.tooltipMode === \"nearest\") {\n const all = [...scatter, ...others].filter(\n (c) => c.inside || c.series.type === \"scatter\" || c.dist <= 32 + slop,\n );\n if (!all.length) return null;\n const best = all.reduce((a, b) => (b.dist <= a.dist ? b : a));\n return eventOf([best], xTicks);\n }\n if (!others.length) {\n if (!scatter.length) return null;\n return eventOf(\n [scatter.reduce((a, b) => (b.dist <= a.dist ? b : a))],\n xTicks,\n );\n }\n const bestDx = Math.min(...others.map((c) => c.dx));\n const bandPx = model.x.type === \"category\" ? 0.5 / Math.abs(sc.xPerPx) : 0;\n const aligned = others.filter((c) => c.dx <= bestDx + Math.max(1, bandPx));\n const first = aligned.reduce((a, b) => (b.dx < a.dx ? b : a));\n const ordered = [first, ...aligned.filter((c) => c !== first), ...scatter];\n const event = eventOf(ordered, xTicks);\n if (event) {\n event.x = hoverItemOf(first.series, first.index).x;\n event.xLabel = xTicks?.formatValue(event.x) ?? String(event.x);\n }\n return event;\n};\n\n/** Whether two hover payloads point at the same points */\nexport const sameHover = (\n a: ChartHoverEvent | null,\n b: ChartHoverEvent | null,\n): boolean =>\n a === b ||\n (!!a &&\n !!b &&\n a.items.length === b.items.length &&\n a.items.every(\n (it, i) =>\n it.index === b.items[i].index &&\n it.seriesIndex === b.items[i].seriesIndex,\n ));\n\n// ------------------------------------------------------------------ tooltip\n\n/** Change of a candlestick: `+1.25%` */\nconst CHANGE_PERCENT: Intl.NumberFormatOptions = {\n style: \"percent\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n};\n\nexport interface TooltipRow {\n /** Swatch color (CSS) */\n color: string | null;\n name: string;\n value: string;\n}\n\nexport interface TooltipContent {\n title: string;\n /** Swatch of the title (single scatter point, Gantt task) */\n titleColor: string | null;\n /** Muted line below the title (the group of a Gantt task) */\n subtitle?: string;\n rows: TooltipRow[];\n}\n\n/** Extra rows of a point (`details` of its datum) */\nconst detailRows = (s: SeriesModel, index: number): TooltipRow[] =>\n s.raw.details?.[index]?.map((d) => ({\n color: null,\n name: d.name,\n value: d.value,\n })) ?? [];\n\n/**\n * Default tooltip content of a hover payload; `y2Ticks` formats the values\n * of the right axis series\n */\nexport const tooltipContent = (\n model: ChartModel,\n event: ChartHoverEvent,\n yTicks: AxisTicks | null,\n y2Ticks: AxisTicks | null = null,\n): TooltipContent => {\n const yFormat = yTicks?.formatValue ?? String;\n const formatOf = (s: SeriesModel) =>\n s.format ??\n (s.yAxis === \"right\"\n ? (y2Ticks?.formatValue ?? model.y2?.format ?? model.formatValue)\n : yFormat);\n const names = model.labels;\n const first = event.items[0];\n const firstSeries = first ? model.series[first.seriesIndex] : null;\n if (\n event.items.length === 1 &&\n first &&\n firstSeries?.type === \"bar\" &&\n first.y0 !== undefined &&\n model.y.type === \"time\"\n ) {\n // a task of a Gantt chart / timeline: its dates and its length\n const format = formatOf(firstSeries);\n const title = first.label ?? event.xLabel;\n return {\n title,\n titleColor: first.color,\n subtitle:\n first.label !== undefined\n ? `${event.xLabel} · ${firstSeries.name}`\n : firstSeries.name,\n rows: [\n { color: null, name: names.start, value: format(first.y0) },\n { color: null, name: names.end, value: format(first.y) },\n {\n color: null,\n name: names.duration,\n value: formatDuration(first.y - first.y0, model.locale),\n },\n ...detailRows(firstSeries, first.index),\n ],\n };\n }\n if (event.items.length === 1 && firstSeries?.type === \"heatmap\") {\n const yName =\n model.y.type === \"category\"\n ? (model.y.categories[Math.round(first.y)] ?? yFormat(first.y))\n : yFormat(first.y);\n return {\n title: `${event.xLabel} · ${yName}`,\n titleColor: null,\n rows: [\n {\n color: first.color,\n name: first.label ?? firstSeries.name,\n value:\n first.value === undefined\n ? \"–\"\n : (firstSeries.format ?? model.formatValue)(first.value),\n },\n ...detailRows(firstSeries, first.index),\n ],\n };\n }\n const scatterOnly = event.items.every(\n (it) => model.series[it.seriesIndex].type === \"scatter\",\n );\n if (scatterOnly && event.items.length === 1) {\n const it = event.items[0];\n const s = model.series[it.seriesIndex];\n const valueRow: TooltipRow[] =\n it.value !== undefined\n ? [\n {\n color: null,\n name: s.valueName ?? names.value,\n value: (s.format ?? model.formatValue)(it.value),\n },\n ]\n : [];\n if (model.x.type === \"category\") {\n // a dot on a category (Gantt milestones, dot plots)\n return {\n title: it.label ?? event.xLabel,\n titleColor: null,\n rows: [\n { color: it.color, name: it.seriesName, value: formatOf(s)(it.y) },\n ...valueRow,\n ...detailRows(s, it.index),\n ],\n };\n }\n const rows: TooltipRow[] = [\n { color: null, name: model.x.title ?? names.x, value: event.xLabel },\n {\n color: null,\n name:\n (s.yAxis === \"right\" ? model.y2?.title : model.y.title) ?? names.y,\n value: formatOf(s)(it.y),\n },\n ...valueRow,\n ...detailRows(s, it.index),\n ];\n if (it.label !== undefined && model.series.length > 1)\n rows.push({ color: null, name: \"\", value: it.seriesName });\n return { title: it.label ?? it.seriesName, titleColor: it.color, rows };\n }\n const rows: TooltipRow[] = [];\n /** Row of every item */\n const rowOf: number[] = [];\n // one labelled bar on a numeric axis (a histogram bin): the label is the title\n const binTitle =\n event.items.length === 1 &&\n firstSeries?.type === \"bar\" &&\n model.x.type !== \"category\" &&\n first?.label !== undefined\n ? first.label\n : null;\n for (const it of event.items) {\n const s = model.series[it.seriesIndex];\n const format = formatOf(s);\n rowOf.push(rows.length);\n if (s.type === \"candlestick\") {\n const change =\n it.open !== undefined && it.open !== 0\n ? ((it.y - it.open) / Math.abs(it.open)) * 100\n : NaN;\n rows.push({\n color: it.color,\n name: s.name,\n value: Number.isFinite(change)\n ? `${change >= 0 ? \"+\" : \"\"}${numberFormat(model.locale, CHANGE_PERCENT).format(change / 100)}`\n : \"\",\n });\n const ohlc: [string, number | undefined][] = [\n [names.open, it.open],\n [names.high, it.high],\n [names.low, it.low],\n [names.close, it.y],\n ];\n for (const [name, v] of ohlc) {\n if (v !== undefined && Number.isFinite(v))\n rows.push({ color: null, name, value: format(v) });\n }\n continue;\n }\n if (s.type === \"boxplot\") {\n if (it.outlier !== undefined) {\n // an outlier: its value and its group\n rows.push(\n {\n color: it.color,\n name: it.label ? `${it.seriesName} · ${it.label}` : it.seriesName,\n value: \"\",\n },\n { color: null, name: names.outlier, value: format(it.outlier) },\n );\n continue;\n }\n rows.push({\n color: it.color,\n name: it.label ? `${it.seriesName} · ${it.label}` : it.seriesName,\n value: \"\",\n });\n const stats: [string, number | undefined][] = [\n [names.max, it.high],\n [names.q3, it.q3],\n [names.median, it.y],\n [names.q1, it.q1],\n [names.min, it.low],\n ];\n for (const [name, v] of stats) {\n if (v !== undefined && Number.isFinite(v))\n rows.push({ color: null, name, value: format(v) });\n }\n if (it.outliers)\n rows.push({\n color: null,\n name: names.outliers,\n value: String(it.outliers),\n });\n continue;\n }\n let value = format(it.y);\n if (it.y0 !== undefined) {\n // waterfall steps: the change; time ranges and bands: both ends\n const delta = it.y - it.y0;\n value =\n s.type === \"bar\" && model.y.type !== \"time\"\n ? `${delta > 0 ? \"+\" : \"\"}${format(delta)}`\n : `${format(it.y0)} – ${format(it.y)}`;\n }\n rows.push({\n color: it.color,\n name:\n it.label && binTitle === null\n ? `${it.seriesName} · ${it.label}`\n : it.seriesName,\n value,\n });\n rows.push(...detailRows(s, it.index));\n }\n if (model.percent) {\n // 100% stacks: the share of every value next to it\n const totals = new Map<string, number>();\n for (const it of event.items) {\n const stack = stackIdOf(model, it.seriesIndex);\n if (stack !== null && Number.isFinite(it.y))\n totals.set(stack, (totals.get(stack) ?? 0) + Math.abs(it.y));\n }\n event.items.forEach((it, k) => {\n const stack = stackIdOf(model, it.seriesIndex);\n const total = stack !== null ? totals.get(stack) : undefined;\n const row = rows[rowOf[k]];\n if (total && row && Number.isFinite(it.y)) {\n const format = model.series[it.seriesIndex].format ?? model.formatValue;\n row.value = `${format(it.y)} · ${formatPercent((Math.abs(it.y) / total) * 100, model.locale, true)}`;\n }\n });\n }\n return { title: binTitle ?? event.xLabel, titleColor: null, rows };\n};\n\n/** Stack of a series in a 100% chart (`null` when it is not stacked) */\nconst stackIdOf = (model: ChartModel, seriesIndex: number): string | null =>\n model.series[seriesIndex].hidden ? null : model.stacks[seriesIndex];\n\n/**\n * Shape of the hover marker of an item: a dot with a soft halo on a point,\n * a band behind the hovered bar group / candle, or the outline of a cell\n */\nexport type HoverMark =\n | {\n kind: \"dot\";\n x: number;\n y: number;\n size: number;\n color: string;\n /** Translucent series color of the halo around the dot */\n halo: string;\n }\n | { kind: \"band\"; x: number; y: number; width: number; height: number }\n | {\n /** Soft band over the row / column of a hovered cell (above the data) */\n kind: \"guide\";\n x: number;\n y: number;\n width: number;\n height: number;\n }\n | {\n /** The hovered cell, lifted, with a ring inside its edge */\n kind: \"cell\";\n x: number;\n y: number;\n width: number;\n height: number;\n /** Fill of the cell (CSS) */\n color: string;\n /** Ring color (CSS), contrasting with the fill */\n ring: string;\n radius: number;\n };\n\n/** Markers of the hovered points (pixels of the stage); bands come first */\nexport const hoverMarks = (\n model: ChartModel,\n sc: Scales,\n event: ChartHoverEvent,\n): HoverMark[] => {\n const marks: HoverMark[] = [];\n const { plot } = sc;\n let bandLo = Infinity;\n let bandHi = -Infinity;\n for (const it of event.items) {\n const s = model.series[it.seriesIndex];\n if (s.type === \"boxplot\" && it.outlier !== undefined) {\n const p = toScreen(sc, it.x + slotOffset(s), plottedOutlier(s, it));\n marks.push({\n kind: \"dot\",\n x: p.x,\n y: p.y,\n size: s.outlierSize + 3,\n color: it.color,\n halo: toCss(s.pointColors?.[it.index] ?? s.color, 0.2),\n });\n continue;\n }\n if (s.type === \"bar\" || s.type === \"candlestick\" || s.type === \"boxplot\") {\n const c = sc.xToPx(it.x + slotOffset(s));\n const half = Math.max(s.barHalfWidth / Math.abs(sc.xPerPx), 1);\n bandLo = Math.min(bandLo, c - half);\n bandHi = Math.max(bandHi, c + half);\n continue;\n }\n if (s.type === \"heatmap\") {\n const cx = sc.xToPx(it.x);\n const cy = sc.yToPx(it.y);\n const hw = Math.abs(s.cellHalf.x / sc.xPerPx);\n const hh = Math.abs(s.cellHalf.y / sc.yPerPx);\n const cell = screenRect(sc, cx - hw, cx + hw, cy - hh, cy + hh);\n const style = heatCellStyle(cell.width, cell.height, s.radius);\n // the row and the column, clipped to the plot\n const top = Math.max(plot.y, cell.y);\n const bottom = Math.min(plot.y + plot.height, cell.y + cell.height);\n const left = Math.max(plot.x, cell.x);\n const right = Math.min(plot.x + plot.width, cell.x + cell.width);\n if (bottom > top)\n marks.push({\n kind: \"guide\",\n x: plot.x,\n y: top,\n width: plot.width,\n height: bottom - top,\n });\n if (right > left)\n marks.push({\n kind: \"guide\",\n x: left,\n y: plot.y,\n width: right - left,\n height: plot.height,\n });\n const packed = s.cellColors?.[it.index];\n const fill = packed ? unpackColor(packed) : s.color;\n marks.push({\n kind: \"cell\",\n x: cell.x + style.inset,\n y: cell.y + style.inset,\n width: Math.max(1, cell.width - style.inset * 2),\n height: Math.max(1, cell.height - style.inset * 2),\n color: it.color,\n ring: contrastRing(fill),\n radius: style.radius,\n });\n continue;\n }\n const { px, py } = pointOf(s, it.index, sc);\n if (\n px < plot.x - 1 ||\n px > plot.x + plot.width + 1 ||\n py < plot.y - 1 ||\n py > plot.y + plot.height + 1\n ) {\n continue;\n }\n const size =\n s.type === \"scatter\"\n ? dotSize(s, it.index) + 4\n : Math.max(9, s.lineWidth * 2 + 5);\n const rgba = s.pointColors?.[it.index] ?? s.color;\n marks.push({\n kind: \"dot\",\n x: px,\n y: py,\n size,\n color: it.color,\n halo: toCss(rgba, 0.2),\n });\n }\n if (bandHi > bandLo) {\n // the group of bars plus a margin, clipped to the plot\n const pad = Math.max(4, (bandHi - bandLo) * 0.14);\n const lo = sc.horizontal ? plot.y : plot.x;\n const hi = lo + (sc.horizontal ? plot.height : plot.width);\n const a = Math.max(lo, bandLo - pad);\n const b = Math.min(hi, bandHi + pad);\n if (b > a) {\n marks.unshift({\n kind: \"band\",\n ...(sc.horizontal\n ? { x: plot.x, y: a, width: plot.width, height: b - a }\n : { x: a, y: plot.y, width: b - a, height: plot.height }),\n });\n }\n }\n return marks;\n};\n\n/** Ring of a hovered cell: light on dark fills, dark on light ones */\nexport const contrastRing = (fill: Rgba): string =>\n luminance(fill) > 0.45\n ? \"rgba(15, 23, 42, 0.78)\"\n : \"rgba(255, 255, 255, 0.9)\";\n\n/** Plotted value of the hovered outlier of a box */\nconst plottedOutlier = (s: SeriesModel, it: ChartHoverItem): number => {\n const raw = s.raw.outliers?.[it.index];\n const k = raw ? raw.indexOf(it.outlier ?? NaN) : -1;\n return (\n (k >= 0 ? s.cols.outliers?.[it.index]?.[k] : undefined) ?? it.outlier ?? 0\n );\n};\n\n/** A line from the end of a bar to the next bar, pixels of the stage */\nexport interface ConnectorSegment {\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n color: string;\n width: number;\n dash: number[];\n}\n\n/**\n * Connectors of the bar series (`connector`, waterfalls): from the end of\n * every bar to the next bar, at the value where the next one starts\n */\nexport const connectorSegments = (\n model: ChartModel,\n sc: Scales,\n): ConnectorSegment[] => {\n const out: ConnectorSegment[] = [];\n for (const s of model.series) {\n const c = s.connector;\n if (!c || s.hidden || s.type !== \"bar\" || !s.barTop) continue;\n const { x, count } = s.cols;\n const top = s.barTop;\n const half = s.barHalfWidth;\n const [v0, v1] =\n sc.view.x[0] <= sc.view.x[1] ? sc.view.x : [sc.view.x[1], sc.view.x[0]];\n const color = toCss(c.color, 0.75);\n let prev = -1;\n for (let i = 0; i < count && out.length < MAX_POINT_LABELS * 4; i++) {\n if (!Number.isFinite(top[i]) || !Number.isFinite(x[i])) continue;\n if (prev >= 0 && x[i] + half >= v0 && x[prev] - half <= v1) {\n const a = toScreen(sc, x[prev] + s.barOffset + half, top[prev]);\n const b = toScreen(sc, x[i] + s.barOffset - half, top[prev]);\n out.push({\n x0: a.x,\n y0: a.y,\n x1: b.x,\n y1: b.y,\n color,\n width: c.width,\n dash: c.dash,\n });\n }\n prev = i;\n }\n }\n return out;\n};\n\n/** Visual map of a heatmap: its color ramp and the values at the ends */\nexport interface ColorLegend {\n seriesIndex: number;\n /** CSS colors at even steps from the lowest to the highest value */\n stops: string[];\n /** Labels along the ramp (`at`: 0-1): the ends, and the middle of diverging ramps */\n labels: { at: number; text: string }[];\n}\n\nconst COLOR_STOPS = 12;\n\n/**\n * Color legend of a heatmap chart (every series is a heatmap; the first\n * visible one), `null` otherwise\n */\nexport const colorLegend = (model: ChartModel): ColorLegend | null => {\n if (!model.series.length || model.series.some((s) => s.type !== \"heatmap\"))\n return null;\n const s = model.series.find((it) => !it.hidden && it.colorLut);\n const lut = s?.colorLut;\n if (!s || !lut) return null;\n const stops: string[] = [];\n for (let k = 0; k < COLOR_STOPS; k++) {\n const packed = lut[Math.round((k / (COLOR_STOPS - 1)) * (lut.length - 1))];\n stops.push(toCss(unpackColor(packed ?? 0)));\n }\n const format = s.format ?? model.formatValue;\n const [lo, hi] = s.valueRange;\n const labels = [\n { at: 0, text: format(lo) },\n { at: 1, text: format(hi) },\n ];\n const mid = s.colorMidpoint;\n if (mid !== null && mid > lo && mid < hi)\n labels.splice(1, 0, { at: 0.5, text: format(mid) });\n return { seriesIndex: s.index, stops, labels };\n};\n\n/** Whether the legend shows (`legend` option; heatmaps get their color legend) */\nexport const legendShown = (\n option: ChartOptions[\"legend\"],\n model: ChartModel,\n named: number,\n): boolean =>\n option === undefined ? named > 1 || colorLegend(model) !== null : !!option;\n\n/** Swatch of a series in the legend */\nexport const legendShape = (\n type: SeriesModel[\"type\"],\n): \"dot\" | \"line\" | \"square\" =>\n type === \"scatter\" ? \"dot\" : type === \"line\" ? \"line\" : \"square\";\n\n/** Whether the guide line follows the pointer */\nexport const showsCrosshair = (\n model: ChartModel,\n event: ChartHoverEvent,\n crosshair: boolean | undefined,\n) =>\n crosshair ??\n (model.tooltipMode === \"axis\" &&\n event.items.some((it) => {\n const type = model.series[it.seriesIndex].type;\n return type === \"line\" || type === \"area\";\n }) &&\n // bars get a band instead\n !event.items.some((it) => {\n const type = model.series[it.seriesIndex].type;\n return type === \"bar\" || type === \"candlestick\" || type === \"boxplot\";\n }));\n\n/** Pixel of the guide line along the x axis (`null` when hidden / outside the plot) */\nexport const crosshairAt = (\n model: ChartModel,\n sc: Scales,\n event: ChartHoverEvent,\n crosshair: boolean | undefined,\n): number | null => {\n if (!showsCrosshair(model, event, crosshair)) return null;\n const c = sc.xToPx(event.items[0].x);\n const lo = sc.horizontal ? sc.plot.y : sc.plot.x;\n const hi = lo + (sc.horizontal ? sc.plot.height : sc.plot.width);\n return c >= lo && c <= hi ? c : null;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../color.cjs"),t=require("../scale.cjs"),n=require("../overlay.cjs"),r=require("./scene.cjs");var i=e=>r.uniqueKeys(e.data.map(e=>e.name)),a=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,o=(e,t)=>(t.ranges??e.ranges??[]).filter(e=>typeof e==`number`&&Number.isFinite(e)).slice().sort((e,t)=>e-t),s=(e,n)=>{let i=o(e,n),s=r.finite(n.value),c=a(n.target),l=[0,s,...c===void 0?[]:[c]],u=a(n.min)??Math.min(...l),d=[s,...c===void 0?[]:[c],...i],f=a(n.max);if(f===void 0){let e=Math.max(...d),n=i.length?i[i.length-1]:-1/0;f=e<=n?n:t.niceDomain(u,e,5)[1]}return f>u||(f===u?f=u+1:[u,f]=[f,u]),[u,f]},c=(e,t,n)=>{i(e).forEach((i,o)=>{let s=e.data[o];n.set(i,r.finite(s.value));let c=a(s.target);c!==void 0&&n.set(`>${i}`,c),n.set(`~${i}`,+!t.has(o))})},l=(t,n,i)=>{let{theme:a}=n;return Array.from({length:Math.max(1,i)},(n,o)=>{let s=e.mix(a.background,a.text,i<=1?.09:.24-.16*o/(i-1)),c=t.rangeColors?.[o];return c?r.resolveWith(a,c,s):s})},u=15,d=(c,d)=>{let{theme:f,area:p,measure:m,hidden:ee}=d,h=i(c),g=c.data.length,_=h.map((e,t)=>r.clamp(d.value(`~${e}`,+!ee.has(t)),0,1)),v=r.sum(_);if(!g||v<=1e-6)return r.emptyLayout(d);let y=c.orientation===`vertical`,b=r.clamp(d.enter,0,1),te=r.clamp(r.finite(c.barSize,.4),.1,1),x=n.font(f,12,600),S=n.font(f,11),C=n.font(f,12,600),ne=n.font(f,10),w=e.toCss(f.textMuted),T=e.toCss(f.text),re=e.toCss(r.resolveWith(f,c.targetColor,f.text)),ie=c.ticks!==!1,E=[],D=[],O=c.data.some((e,t)=>!!e.subtitle&&_[t]>0),k=c.data.map(e=>d.format(r.finite(e.value))),A=c.data.map(e=>m(e.name,x)),j=p.width*(p.width<420?.34:.4),M=c.data.map((e,t)=>A[t]<=j-14?A[t]:Math.max(0,...r.wrapText(e.name,j-14,x,m,2).map(e=>m(e,x)))),N=y?0:Math.min(j,Math.max(0,...c.data.map((e,t)=>Math.max(M[t],e.subtitle?m(e.subtitle,S):0)))+14),P=y?0:Math.min(p.width*.2,Math.max(0,...k.map(e=>m(e,C)))+12),F=p.width/v,I=y&&c.data.some((e,t)=>_[t]>0&&A[t]>F-8),L=y?22+(I?u:0)+(O?14:0):0,R=y?20:0,ae=(y?p.width:p.height)/v,z=0;return c.data.forEach((n,i)=>{let f=_[i],g=ae*f,v=z;if(z+=g,f<=.001)return;let O=h[i],A=f,[j,M]=s(c,n),F=o(c,n).filter(e=>e>j),B=l(c,d,F.length),oe=d.value(O,r.finite(n.value)),V=a(n.target),H=V===void 0?void 0:d.value(`>${O}`,V),se=d.color(n.color,i),U=e.toCss(se),W=r.clamp(g*(y?.3:.42),8,28),G=y?Math.max(1,p.height-L-R):Math.max(1,p.width-N-P),K=ie?t.linearTicks(j,M,Math.max(2,Math.floor(G/70))):[],ce=y?g/2-W/2-6:g-W-10,le=Math.max(0,...K.map(e=>m(d.format(e),ne))),ue=K.length>1&&(y?ce>=le:ce>=14),de=y?p.y+p.height-L:p.x+N,q=e=>de+(y?-1:1)*G*r.clamp((e-j)/(M-j),0,1),J=y?p.x+v+g/2:p.y+v+(g-(ue?14:0))/2,Y=(e,t,n)=>{let r=Math.min(q(e),q(t)),i=Math.max(q(e),q(t));return y?{x:J-n/2,y:r,width:n,height:i-r}:{x:r,y:J-n/2,width:i-r,height:n}};E.push({kind:`rect`,...y?{x:p.x+v,y:p.y,width:g,height:p.height}:{x:p.x,y:p.y+v,width:p.width,height:g},radius:0,fill:`rgba(0, 0, 0, 0)`,hit:i,alpha:A});let fe=F.length?F:[M],X=j;fe.forEach((t,n)=>{let r=Math.min(t,M);r>X&&E.push({kind:`rect`,...Y(X,r,W),radius:0,fill:e.toCss(B[n]),hit:i,alpha:A}),X=Math.max(X,r)}),X<M&&E.push({kind:`rect`,...Y(X,M,W),radius:0,fill:e.toCss(B[B.length-1]),hit:i,alpha:A});let Z=r.clamp(0,j,M),pe=Z+(oe-Z)*b;if(E.push({kind:`rect`,...Y(Z,pe,W*te),radius:1,fill:U,hit:i,alpha:A,brighten:!0}),H!==void 0&&H>=j&&H<=M){let e=q(H),t=W*.82;E.push({kind:`rect`,...y?{x:J-t/2,y:e-1.5,width:t,height:3}:{x:e-1.5,y:J-t/2,width:3,height:t},radius:1,fill:re,hit:i,alpha:A*b})}if(ue)for(let e of K){let t=q(e);E.push({kind:`text`,x:y?J-W/2-5:t,y:y?t:J+W/2+4,text:d.format(e),font:ne,color:w,align:y?`right`:`center`,baseline:y?`middle`:`top`,hit:i,alpha:A})}if(y){let e=Math.max(0,g-8),t=r.wrapText(n.name,e,x,m,I?2:1),a=p.y+p.height;t.forEach((e,t)=>E.push({kind:`text`,x:J,y:a-L+16+t*u,text:e,font:x,color:T,align:`center`,baseline:`middle`,hit:i,alpha:A}));let o=n.subtitle?r.ellipsize(n.subtitle,e,S,m):``;o&&E.push({kind:`text`,x:J,y:a-L+31+(I?u:0),text:o,font:S,color:w,align:`center`,baseline:`middle`,hit:i,alpha:A});let s=r.ellipsize(k[i],e,C,m);s&&E.push({kind:`text`,x:J,y:p.y+R/2,text:s,font:C,color:T,align:`center`,baseline:`middle`,hit:i,alpha:A})}else{let e=Math.max(0,N-14),t=g-4,a=n.subtitle&&t>=29?r.ellipsize(n.subtitle,e,S,m):``,o=a?13:0,s=r.wrapText(n.name,e,x,m,t>=30+o?2:1),c=J-(s.length*u+o)/2,l=p.x+N-14;s.forEach((e,t)=>E.push({kind:`text`,x:l,y:c+u/2+t*u,text:e,font:x,color:T,align:`right`,baseline:`middle`,hit:i,alpha:A})),a&&E.push({kind:`text`,x:l,y:c+s.length*u+o/2,text:a,font:S,color:w,align:`right`,baseline:`middle`,hit:i,alpha:A});let d=r.ellipsize(k[i],P-8,C,m);d&&E.push({kind:`text`,x:p.x+p.width,y:J,text:d,font:C,color:T,align:`right`,baseline:`middle`,hit:i,alpha:A})}if(ee.has(i))return;let Q=r.finite(n.value),$=V!==void 0&&V!==0?Q/V:(Q-j)/(M-j),me=F.findIndex(e=>Q<=e),he=me>=0?c.rangeLabels?.[me]:void 0,ge=q(Q);D.push({index:i,name:n.name,value:Q,percent:$,share:d.percent($),color:U,x:y?J:ge,y:y?ge:J,rows:[{name:d.labels.value,value:d.format(Q)},...V===void 0?[]:[{name:d.labels.target,value:d.format(V)},{name:d.labels.ofTarget,value:d.percent($)}],...he?[{name:d.labels.range,value:he}]:[]]})}),{nodes:E,items:D,dim:.4,empty:!1}};exports.bulletScale=s,exports.bulletValues=c,exports.layoutBullet=d;
|
|
2
|
+
//# sourceMappingURL=bullet.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bullet.cjs","names":["uniqueKeys","finite","niceDomain","mix","resolveWith","clamp","sum","emptyLayout","font","toCss","wrapText","linearTicks","ellipsize","require_color","require_scale","require_overlay","require_scene","keysOf","o","d","num","v","rangesOf","r","a","b","bulletScale","ranges","value","target","lows","min","highs","max","top","last","bulletValues","i","out","key","rangeFills","c","count","gray","theme","k","own","NAME_LINE","layoutBullet","keys","n","weights","total","vertical","enter","barSize","nameFont","subFont","valueFont","tickFont","muted","text","markColor","showTicks","nodes","items","hasSubtitle","valueText","nameW","measure","labelCap","area","lineW","l","labelW","valueW","t","columnW","wraps","labelH","valueH","unit","offset","w","slot","from","alpha","fills","target0","color","css","thick","span","ticks","tickRoom","tickW","drawTicks","p0","along","mid","band","lo","hi","bounds","edge","to","bound","base","shownValue","at","len","room","lines","bottom","line","sub","avail","subH","x","hidden","percent","rangeIndex","rangeName","end"],"sources":["../../../../../charts/src/engine/shapes/bullet.ts"],"sourcesContent":["// Bullet chart layout (Stephen Few): per row, qualitative ranges as shades\n// of gray, the measure as a bar and the target as a marker, on the row's own\n// scale; name and subtitle on the left (below when vertical), value on the\n// right (above when vertical), tick labels when there is room.\n\nimport { mix, toCss, type Rgba } from \"../color\";\nimport { font } from \"../overlay\";\nimport { linearTicks, niceDomain } from \"../scale\";\nimport {\n clamp,\n ellipsize,\n emptyLayout,\n finite,\n resolveWith,\n sum,\n uniqueKeys,\n wrapText,\n type LayoutContext,\n type LayoutResult,\n type ShapeItem,\n type ShapeNode,\n} from \"./scene\";\nimport type { BulletChartOptions, BulletDatum } from \"./types\";\n\nconst keysOf = (o: BulletChartOptions) => uniqueKeys(o.data.map((d) => d.name));\n\nconst num = (v: number | undefined) =>\n typeof v === \"number\" && Number.isFinite(v) ? v : undefined;\n\n/** Qualitative ranges of a row: finite upper bounds, ascending */\nconst rangesOf = (o: BulletChartOptions, d: BulletDatum) =>\n (d.ranges ?? o.ranges ?? [])\n .filter((r) => typeof r === \"number\" && Number.isFinite(r))\n .slice()\n .sort((a, b) => a - b);\n\n/** Scale of a row: `[min, max]` */\nexport const bulletScale = (\n o: BulletChartOptions,\n d: BulletDatum,\n): [number, number] => {\n const ranges = rangesOf(o, d);\n const value = finite(d.value);\n const target = num(d.target);\n const lows = [0, value, ...(target !== undefined ? [target] : [])];\n let min = num(d.min) ?? Math.min(...lows);\n const highs = [value, ...(target !== undefined ? [target] : []), ...ranges];\n let max = num(d.max);\n if (max === undefined) {\n const top = Math.max(...highs);\n const last = ranges.length ? ranges[ranges.length - 1] : -Infinity;\n max = top <= last ? last : niceDomain(min, top, 5)[1];\n }\n if (!(max > min)) {\n if (max === min) max = min + 1;\n else [min, max] = [max, min];\n }\n return [min, max];\n};\n\nexport const bulletValues = (\n o: BulletChartOptions,\n hidden: ReadonlySet<number>,\n out: Map<string, number>,\n) => {\n keysOf(o).forEach((key, i) => {\n const d = o.data[i];\n out.set(key, finite(d.value));\n const target = num(d.target);\n if (target !== undefined) out.set(`>${key}`, target);\n out.set(`~${key}`, hidden.has(i) ? 0 : 1);\n });\n};\n\n/** Default fills of the ranges: grays, the lowest (poorest) darkest */\nconst rangeFills = (\n o: BulletChartOptions,\n c: LayoutContext,\n count: number,\n): Rgba[] => {\n const { theme } = c;\n return Array.from({ length: Math.max(1, count) }, (_, k) => {\n const gray = mix(\n theme.background,\n theme.text,\n count <= 1 ? 0.09 : 0.24 - (0.16 * k) / (count - 1),\n );\n const own = o.rangeColors?.[k];\n return own ? resolveWith(theme, own, gray) : gray;\n });\n};\n\n/** Line height of the wrapped names */\nconst NAME_LINE = 15;\n\nexport const layoutBullet = (\n o: BulletChartOptions,\n c: LayoutContext,\n): LayoutResult => {\n const { theme, area, measure, hidden } = c;\n const keys = keysOf(o);\n const n = o.data.length;\n const weights = keys.map((key, i) =>\n clamp(c.value(`~${key}`, hidden.has(i) ? 0 : 1), 0, 1),\n );\n const total = sum(weights);\n if (!n || total <= 1e-6) return emptyLayout(c);\n const vertical = o.orientation === \"vertical\";\n const enter = clamp(c.enter, 0, 1);\n const barSize = clamp(finite(o.barSize, 0.4), 0.1, 1);\n const nameFont = font(theme, 12, 600);\n const subFont = font(theme, 11);\n const valueFont = font(theme, 12, 600);\n const tickFont = font(theme, 10);\n const muted = toCss(theme.textMuted);\n const text = toCss(theme.text);\n const transparent = \"rgba(0, 0, 0, 0)\";\n const markColor = toCss(resolveWith(theme, o.targetColor, theme.text));\n const showTicks = o.ticks !== false;\n\n const nodes: ShapeNode[] = [];\n const items: ShapeItem[] = [];\n const hasSubtitle = o.data.some((d, i) => !!d.subtitle && weights[i] > 0);\n const valueText = o.data.map((d) => c.format(finite(d.value)));\n\n // shared columns (horizontal) / bands (vertical) of the labels and values:\n // the label column fits the longest name up to a share of the width,\n // longer names wrap to two lines\n const nameW = o.data.map((d) => measure(d.name, nameFont));\n const labelCap = area.width * (area.width < 420 ? 0.34 : 0.4);\n // widest line of each name once wrapped (balanced) within the cap\n const lineW = o.data.map((d, i) =>\n nameW[i] <= labelCap - 14\n ? nameW[i]\n : Math.max(\n 0,\n ...wrapText(d.name, labelCap - 14, nameFont, measure, 2).map((l) =>\n measure(l, nameFont),\n ),\n ),\n );\n const labelW = vertical\n ? 0\n : Math.min(\n labelCap,\n Math.max(\n 0,\n ...o.data.map((d, i) =>\n Math.max(lineW[i], d.subtitle ? measure(d.subtitle, subFont) : 0),\n ),\n ) + 14,\n );\n const valueW = vertical\n ? 0\n : Math.min(\n area.width * 0.2,\n Math.max(0, ...valueText.map((t) => measure(t, valueFont))) + 12,\n );\n const columnW = area.width / total;\n const wraps =\n vertical && o.data.some((_, i) => weights[i] > 0 && nameW[i] > columnW - 8);\n const labelH = vertical\n ? 22 + (wraps ? NAME_LINE : 0) + (hasSubtitle ? 14 : 0)\n : 0;\n const valueH = vertical ? 20 : 0;\n const unit = (vertical ? area.width : area.height) / total;\n\n let offset = 0;\n o.data.forEach((d, i) => {\n const w = weights[i];\n const slot = unit * w;\n const from = offset;\n offset += slot;\n if (w <= 1e-3) return;\n const key = keys[i];\n const alpha = w;\n const [min, max] = bulletScale(o, d);\n const ranges = rangesOf(o, d).filter((r) => r > min);\n const fills = rangeFills(o, c, ranges.length);\n const value = c.value(key, finite(d.value));\n const target0 = num(d.target);\n const target =\n target0 !== undefined ? c.value(`>${key}`, target0) : undefined;\n const color = c.color(d.color, i);\n const css = toCss(color);\n const thick = clamp(slot * (vertical ? 0.3 : 0.42), 8, 28);\n const span = vertical\n ? Math.max(1, area.height - labelH - valueH)\n : Math.max(1, area.width - labelW - valueW);\n const ticks = showTicks\n ? linearTicks(min, max, Math.max(2, Math.floor(span / 70)))\n : [];\n const tickRoom = vertical ? slot / 2 - thick / 2 - 6 : slot - thick - 10;\n const tickW = Math.max(\n 0,\n ...ticks.map((t) => measure(c.format(t), tickFont)),\n );\n const drawTicks =\n ticks.length > 1 && (vertical ? tickRoom >= tickW : tickRoom >= 14);\n\n // position along the scale, and across it\n const p0 = vertical ? area.y + area.height - labelH : area.x + labelW;\n const along = (v: number) =>\n p0 + (vertical ? -1 : 1) * span * clamp((v - min) / (max - min), 0, 1);\n const mid = vertical\n ? area.x + from + slot / 2\n : area.y + from + (slot - (drawTicks ? 14 : 0)) / 2;\n /** Rectangle from `a` to `b` along the scale, `t` thick across it */\n const band = (a: number, b: number, t: number) => {\n const lo = Math.min(along(a), along(b));\n const hi = Math.max(along(a), along(b));\n return vertical\n ? { x: mid - t / 2, y: lo, width: t, height: hi - lo }\n : { x: lo, y: mid - t / 2, width: hi - lo, height: t };\n };\n\n // the whole row / column is a hover target\n nodes.push({\n kind: \"rect\",\n ...(vertical\n ? { x: area.x + from, y: area.y, width: slot, height: area.height }\n : { x: area.x, y: area.y + from, width: area.width, height: slot }),\n radius: 0,\n fill: transparent,\n hit: i,\n alpha,\n });\n // ranges: disjoint segments (translucent colors must not add up)\n const bounds = ranges.length ? ranges : [max];\n let edge = min;\n bounds.forEach((bound, k) => {\n const to = Math.min(bound, max);\n if (to > edge)\n nodes.push({\n kind: \"rect\",\n ...band(edge, to, thick),\n radius: 0,\n fill: toCss(fills[k]),\n hit: i,\n alpha,\n });\n edge = Math.max(edge, to);\n });\n if (edge < max)\n nodes.push({\n kind: \"rect\",\n ...band(edge, max, thick),\n radius: 0,\n fill: toCss(fills[fills.length - 1]),\n hit: i,\n alpha,\n });\n // measure\n const base = clamp(0, min, max);\n const shownValue = base + (value - base) * enter;\n nodes.push({\n kind: \"rect\",\n ...band(base, shownValue, thick * barSize),\n radius: 1,\n fill: css,\n hit: i,\n alpha,\n brighten: true,\n });\n // target\n if (target !== undefined && target >= min && target <= max) {\n const at = along(target);\n const len = thick * 0.82;\n nodes.push({\n kind: \"rect\",\n ...(vertical\n ? { x: mid - len / 2, y: at - 1.5, width: len, height: 3 }\n : { x: at - 1.5, y: mid - len / 2, width: 3, height: len }),\n radius: 1,\n fill: markColor,\n hit: i,\n alpha: alpha * enter,\n });\n }\n // ticks\n if (drawTicks)\n for (const t of ticks) {\n const at = along(t);\n nodes.push({\n kind: \"text\",\n x: vertical ? mid - thick / 2 - 5 : at,\n y: vertical ? at : mid + thick / 2 + 4,\n text: c.format(t),\n font: tickFont,\n color: muted,\n align: vertical ? \"right\" : \"center\",\n baseline: vertical ? \"middle\" : \"top\",\n hit: i,\n alpha,\n });\n }\n\n // name, subtitle and value\n if (vertical) {\n const room = Math.max(0, slot - 8);\n const lines = wrapText(d.name, room, nameFont, measure, wraps ? 2 : 1);\n const bottom = area.y + area.height;\n lines.forEach((line, k) =>\n nodes.push({\n kind: \"text\",\n x: mid,\n y: bottom - labelH + 16 + k * NAME_LINE,\n text: line,\n font: nameFont,\n color: text,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n }),\n );\n const sub = d.subtitle\n ? ellipsize(d.subtitle, room, subFont, measure)\n : \"\";\n if (sub)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: bottom - labelH + 31 + (wraps ? NAME_LINE : 0),\n text: sub,\n font: subFont,\n color: muted,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const value = ellipsize(valueText[i], room, valueFont, measure);\n if (value)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: area.y + valueH / 2,\n text: value,\n font: valueFont,\n color: text,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n } else {\n const room = Math.max(0, labelW - 14);\n const avail = slot - 4;\n const sub =\n d.subtitle && avail >= NAME_LINE + 14\n ? ellipsize(d.subtitle, room, subFont, measure)\n : \"\";\n const subH = sub ? 13 : 0;\n const lines = wrapText(\n d.name,\n room,\n nameFont,\n measure,\n avail >= 2 * NAME_LINE + subH ? 2 : 1,\n );\n const top = mid - (lines.length * NAME_LINE + subH) / 2;\n const x = area.x + labelW - 14;\n lines.forEach((line, k) =>\n nodes.push({\n kind: \"text\",\n x,\n y: top + NAME_LINE / 2 + k * NAME_LINE,\n text: line,\n font: nameFont,\n color: text,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n }),\n );\n if (sub)\n nodes.push({\n kind: \"text\",\n x,\n y: top + lines.length * NAME_LINE + subH / 2,\n text: sub,\n font: subFont,\n color: muted,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const value = ellipsize(valueText[i], valueW - 8, valueFont, measure);\n if (value)\n nodes.push({\n kind: \"text\",\n x: area.x + area.width,\n y: mid,\n text: value,\n font: valueFont,\n color: text,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n }\n\n if (hidden.has(i)) return;\n const v = finite(d.value);\n const percent =\n target0 !== undefined && target0 !== 0\n ? v / target0\n : (v - min) / (max - min);\n const rangeIndex = ranges.findIndex((r) => v <= r);\n const rangeName = rangeIndex >= 0 ? o.rangeLabels?.[rangeIndex] : undefined;\n const end = along(v);\n items.push({\n index: i,\n name: d.name,\n value: v,\n percent,\n share: c.percent(percent),\n color: css,\n x: vertical ? mid : end,\n y: vertical ? end : mid,\n rows: [\n { name: c.labels.value, value: c.format(v) },\n ...(target0 !== undefined\n ? [\n { name: c.labels.target, value: c.format(target0) },\n { name: c.labels.ofTarget, value: c.percent(percent) },\n ]\n : []),\n ...(rangeName ? [{ name: c.labels.range, value: rangeName }] : []),\n ],\n });\n });\n\n return { nodes, items, dim: 0.4, empty: false };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LayoutContext, LayoutResult } from './scene.cjs';
|
|
2
|
+
import { BulletChartOptions, BulletDatum } from './types.cjs';
|
|
3
|
+
/** Scale of a row: `[min, max]` */
|
|
4
|
+
export declare const bulletScale: (o: BulletChartOptions, d: BulletDatum) => [number, number];
|
|
5
|
+
export declare const bulletValues: (o: BulletChartOptions, hidden: ReadonlySet<number>, out: Map<string, number>) => void;
|
|
6
|
+
export declare const layoutBullet: (o: BulletChartOptions, c: LayoutContext) => LayoutResult;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LayoutContext, LayoutResult } from './scene.js';
|
|
2
|
+
import { BulletChartOptions, BulletDatum } from './types.js';
|
|
3
|
+
/** Scale of a row: `[min, max]` */
|
|
4
|
+
export declare const bulletScale: (o: BulletChartOptions, d: BulletDatum) => [number, number];
|
|
5
|
+
export declare const bulletValues: (o: BulletChartOptions, hidden: ReadonlySet<number>, out: Map<string, number>) => void;
|
|
6
|
+
export declare const layoutBullet: (o: BulletChartOptions, c: LayoutContext) => LayoutResult;
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { mix as e, toCss as t } from "../color.js";
|
|
2
|
+
import { linearTicks as n, niceDomain as r } from "../scale.js";
|
|
3
|
+
import { font as i } from "../overlay.js";
|
|
4
|
+
import { clamp as a, ellipsize as o, emptyLayout as s, finite as c, resolveWith as l, sum as u, uniqueKeys as d, wrapText as f } from "./scene.js";
|
|
5
|
+
//#region src/engine/shapes/bullet.ts
|
|
6
|
+
var p = (e) => d(e.data.map((e) => e.name)), m = (e) => typeof e == "number" && Number.isFinite(e) ? e : void 0, ee = (e, t) => (t.ranges ?? e.ranges ?? []).filter((e) => typeof e == "number" && Number.isFinite(e)).slice().sort((e, t) => e - t), h = (e, t) => {
|
|
7
|
+
let n = ee(e, t), i = c(t.value), a = m(t.target), o = [
|
|
8
|
+
0,
|
|
9
|
+
i,
|
|
10
|
+
...a === void 0 ? [] : [a]
|
|
11
|
+
], s = m(t.min) ?? Math.min(...o), l = [
|
|
12
|
+
i,
|
|
13
|
+
...a === void 0 ? [] : [a],
|
|
14
|
+
...n
|
|
15
|
+
], u = m(t.max);
|
|
16
|
+
if (u === void 0) {
|
|
17
|
+
let e = Math.max(...l), t = n.length ? n[n.length - 1] : -Infinity;
|
|
18
|
+
u = e <= t ? t : r(s, e, 5)[1];
|
|
19
|
+
}
|
|
20
|
+
return u > s || (u === s ? u = s + 1 : [s, u] = [u, s]), [s, u];
|
|
21
|
+
}, g = (e, t, n) => {
|
|
22
|
+
p(e).forEach((r, i) => {
|
|
23
|
+
let a = e.data[i];
|
|
24
|
+
n.set(r, c(a.value));
|
|
25
|
+
let o = m(a.target);
|
|
26
|
+
o !== void 0 && n.set(`>${r}`, o), n.set(`~${r}`, +!t.has(i));
|
|
27
|
+
});
|
|
28
|
+
}, te = (t, n, r) => {
|
|
29
|
+
let { theme: i } = n;
|
|
30
|
+
return Array.from({ length: Math.max(1, r) }, (n, a) => {
|
|
31
|
+
let o = e(i.background, i.text, r <= 1 ? .09 : .24 - .16 * a / (r - 1)), s = t.rangeColors?.[a];
|
|
32
|
+
return s ? l(i, s, o) : o;
|
|
33
|
+
});
|
|
34
|
+
}, _ = 15, v = (e, r) => {
|
|
35
|
+
let { theme: d, area: g, measure: v, hidden: ne } = r, y = p(e), b = e.data.length, x = y.map((e, t) => a(r.value(`~${e}`, +!ne.has(t)), 0, 1)), S = u(x);
|
|
36
|
+
if (!b || S <= 1e-6) return s(r);
|
|
37
|
+
let C = e.orientation === "vertical", w = a(r.enter, 0, 1), re = a(c(e.barSize, .4), .1, 1), T = i(d, 12, 600), E = i(d, 11), D = i(d, 12, 600), O = i(d, 10), k = t(d.textMuted), A = t(d.text), ie = t(l(d, e.targetColor, d.text)), ae = e.ticks !== !1, j = [], oe = [], M = e.data.some((e, t) => !!e.subtitle && x[t] > 0), N = e.data.map((e) => r.format(c(e.value))), P = e.data.map((e) => v(e.name, T)), F = g.width * (g.width < 420 ? .34 : .4), se = e.data.map((e, t) => P[t] <= F - 14 ? P[t] : Math.max(0, ...f(e.name, F - 14, T, v, 2).map((e) => v(e, T)))), I = C ? 0 : Math.min(F, Math.max(0, ...e.data.map((e, t) => Math.max(se[t], e.subtitle ? v(e.subtitle, E) : 0))) + 14), ce = C ? 0 : Math.min(g.width * .2, Math.max(0, ...N.map((e) => v(e, D))) + 12), L = g.width / S, R = C && e.data.some((e, t) => x[t] > 0 && P[t] > L - 8), z = C ? 22 + (R ? _ : 0) + (M ? 14 : 0) : 0, B = C ? 20 : 0, le = (C ? g.width : g.height) / S, V = 0;
|
|
38
|
+
return e.data.forEach((i, s) => {
|
|
39
|
+
let l = x[s], u = le * l, d = V;
|
|
40
|
+
if (V += u, l <= .001) return;
|
|
41
|
+
let p = y[s], b = l, [S, M] = h(e, i), P = ee(e, i).filter((e) => e > S), F = te(e, r, P.length), se = r.value(p, c(i.value)), L = m(i.target), H = L === void 0 ? void 0 : r.value(`>${p}`, L), ue = r.color(i.color, s), U = t(ue), W = a(u * (C ? .3 : .42), 8, 28), G = C ? Math.max(1, g.height - z - B) : Math.max(1, g.width - I - ce), K = ae ? n(S, M, Math.max(2, Math.floor(G / 70))) : [], de = C ? u / 2 - W / 2 - 6 : u - W - 10, fe = Math.max(0, ...K.map((e) => v(r.format(e), O))), pe = K.length > 1 && (C ? de >= fe : de >= 14), me = C ? g.y + g.height - z : g.x + I, q = (e) => me + (C ? -1 : 1) * G * a((e - S) / (M - S), 0, 1), J = C ? g.x + d + u / 2 : g.y + d + (u - (pe ? 14 : 0)) / 2, Y = (e, t, n) => {
|
|
42
|
+
let r = Math.min(q(e), q(t)), i = Math.max(q(e), q(t));
|
|
43
|
+
return C ? {
|
|
44
|
+
x: J - n / 2,
|
|
45
|
+
y: r,
|
|
46
|
+
width: n,
|
|
47
|
+
height: i - r
|
|
48
|
+
} : {
|
|
49
|
+
x: r,
|
|
50
|
+
y: J - n / 2,
|
|
51
|
+
width: i - r,
|
|
52
|
+
height: n
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
j.push({
|
|
56
|
+
kind: "rect",
|
|
57
|
+
...C ? {
|
|
58
|
+
x: g.x + d,
|
|
59
|
+
y: g.y,
|
|
60
|
+
width: u,
|
|
61
|
+
height: g.height
|
|
62
|
+
} : {
|
|
63
|
+
x: g.x,
|
|
64
|
+
y: g.y + d,
|
|
65
|
+
width: g.width,
|
|
66
|
+
height: u
|
|
67
|
+
},
|
|
68
|
+
radius: 0,
|
|
69
|
+
fill: "rgba(0, 0, 0, 0)",
|
|
70
|
+
hit: s,
|
|
71
|
+
alpha: b
|
|
72
|
+
});
|
|
73
|
+
let he = P.length ? P : [M], X = S;
|
|
74
|
+
he.forEach((e, n) => {
|
|
75
|
+
let r = Math.min(e, M);
|
|
76
|
+
r > X && j.push({
|
|
77
|
+
kind: "rect",
|
|
78
|
+
...Y(X, r, W),
|
|
79
|
+
radius: 0,
|
|
80
|
+
fill: t(F[n]),
|
|
81
|
+
hit: s,
|
|
82
|
+
alpha: b
|
|
83
|
+
}), X = Math.max(X, r);
|
|
84
|
+
}), X < M && j.push({
|
|
85
|
+
kind: "rect",
|
|
86
|
+
...Y(X, M, W),
|
|
87
|
+
radius: 0,
|
|
88
|
+
fill: t(F[F.length - 1]),
|
|
89
|
+
hit: s,
|
|
90
|
+
alpha: b
|
|
91
|
+
});
|
|
92
|
+
let Z = a(0, S, M), ge = Z + (se - Z) * w;
|
|
93
|
+
if (j.push({
|
|
94
|
+
kind: "rect",
|
|
95
|
+
...Y(Z, ge, W * re),
|
|
96
|
+
radius: 1,
|
|
97
|
+
fill: U,
|
|
98
|
+
hit: s,
|
|
99
|
+
alpha: b,
|
|
100
|
+
brighten: !0
|
|
101
|
+
}), H !== void 0 && H >= S && H <= M) {
|
|
102
|
+
let e = q(H), t = W * .82;
|
|
103
|
+
j.push({
|
|
104
|
+
kind: "rect",
|
|
105
|
+
...C ? {
|
|
106
|
+
x: J - t / 2,
|
|
107
|
+
y: e - 1.5,
|
|
108
|
+
width: t,
|
|
109
|
+
height: 3
|
|
110
|
+
} : {
|
|
111
|
+
x: e - 1.5,
|
|
112
|
+
y: J - t / 2,
|
|
113
|
+
width: 3,
|
|
114
|
+
height: t
|
|
115
|
+
},
|
|
116
|
+
radius: 1,
|
|
117
|
+
fill: ie,
|
|
118
|
+
hit: s,
|
|
119
|
+
alpha: b * w
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
if (pe) for (let e of K) {
|
|
123
|
+
let t = q(e);
|
|
124
|
+
j.push({
|
|
125
|
+
kind: "text",
|
|
126
|
+
x: C ? J - W / 2 - 5 : t,
|
|
127
|
+
y: C ? t : J + W / 2 + 4,
|
|
128
|
+
text: r.format(e),
|
|
129
|
+
font: O,
|
|
130
|
+
color: k,
|
|
131
|
+
align: C ? "right" : "center",
|
|
132
|
+
baseline: C ? "middle" : "top",
|
|
133
|
+
hit: s,
|
|
134
|
+
alpha: b
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
if (C) {
|
|
138
|
+
let e = Math.max(0, u - 8), t = f(i.name, e, T, v, R ? 2 : 1), n = g.y + g.height;
|
|
139
|
+
t.forEach((e, t) => j.push({
|
|
140
|
+
kind: "text",
|
|
141
|
+
x: J,
|
|
142
|
+
y: n - z + 16 + t * _,
|
|
143
|
+
text: e,
|
|
144
|
+
font: T,
|
|
145
|
+
color: A,
|
|
146
|
+
align: "center",
|
|
147
|
+
baseline: "middle",
|
|
148
|
+
hit: s,
|
|
149
|
+
alpha: b
|
|
150
|
+
}));
|
|
151
|
+
let r = i.subtitle ? o(i.subtitle, e, E, v) : "";
|
|
152
|
+
r && j.push({
|
|
153
|
+
kind: "text",
|
|
154
|
+
x: J,
|
|
155
|
+
y: n - z + 31 + (R ? _ : 0),
|
|
156
|
+
text: r,
|
|
157
|
+
font: E,
|
|
158
|
+
color: k,
|
|
159
|
+
align: "center",
|
|
160
|
+
baseline: "middle",
|
|
161
|
+
hit: s,
|
|
162
|
+
alpha: b
|
|
163
|
+
});
|
|
164
|
+
let a = o(N[s], e, D, v);
|
|
165
|
+
a && j.push({
|
|
166
|
+
kind: "text",
|
|
167
|
+
x: J,
|
|
168
|
+
y: g.y + B / 2,
|
|
169
|
+
text: a,
|
|
170
|
+
font: D,
|
|
171
|
+
color: A,
|
|
172
|
+
align: "center",
|
|
173
|
+
baseline: "middle",
|
|
174
|
+
hit: s,
|
|
175
|
+
alpha: b
|
|
176
|
+
});
|
|
177
|
+
} else {
|
|
178
|
+
let e = Math.max(0, I - 14), t = u - 4, n = i.subtitle && t >= 29 ? o(i.subtitle, e, E, v) : "", r = n ? 13 : 0, a = f(i.name, e, T, v, t >= 30 + r ? 2 : 1), c = J - (a.length * _ + r) / 2, l = g.x + I - 14;
|
|
179
|
+
a.forEach((e, t) => j.push({
|
|
180
|
+
kind: "text",
|
|
181
|
+
x: l,
|
|
182
|
+
y: c + _ / 2 + t * _,
|
|
183
|
+
text: e,
|
|
184
|
+
font: T,
|
|
185
|
+
color: A,
|
|
186
|
+
align: "right",
|
|
187
|
+
baseline: "middle",
|
|
188
|
+
hit: s,
|
|
189
|
+
alpha: b
|
|
190
|
+
})), n && j.push({
|
|
191
|
+
kind: "text",
|
|
192
|
+
x: l,
|
|
193
|
+
y: c + a.length * _ + r / 2,
|
|
194
|
+
text: n,
|
|
195
|
+
font: E,
|
|
196
|
+
color: k,
|
|
197
|
+
align: "right",
|
|
198
|
+
baseline: "middle",
|
|
199
|
+
hit: s,
|
|
200
|
+
alpha: b
|
|
201
|
+
});
|
|
202
|
+
let d = o(N[s], ce - 8, D, v);
|
|
203
|
+
d && j.push({
|
|
204
|
+
kind: "text",
|
|
205
|
+
x: g.x + g.width,
|
|
206
|
+
y: J,
|
|
207
|
+
text: d,
|
|
208
|
+
font: D,
|
|
209
|
+
color: A,
|
|
210
|
+
align: "right",
|
|
211
|
+
baseline: "middle",
|
|
212
|
+
hit: s,
|
|
213
|
+
alpha: b
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
if (ne.has(s)) return;
|
|
217
|
+
let Q = c(i.value), $ = L !== void 0 && L !== 0 ? Q / L : (Q - S) / (M - S), _e = P.findIndex((e) => Q <= e), ve = _e >= 0 ? e.rangeLabels?.[_e] : void 0, ye = q(Q);
|
|
218
|
+
oe.push({
|
|
219
|
+
index: s,
|
|
220
|
+
name: i.name,
|
|
221
|
+
value: Q,
|
|
222
|
+
percent: $,
|
|
223
|
+
share: r.percent($),
|
|
224
|
+
color: U,
|
|
225
|
+
x: C ? J : ye,
|
|
226
|
+
y: C ? ye : J,
|
|
227
|
+
rows: [
|
|
228
|
+
{
|
|
229
|
+
name: r.labels.value,
|
|
230
|
+
value: r.format(Q)
|
|
231
|
+
},
|
|
232
|
+
...L === void 0 ? [] : [{
|
|
233
|
+
name: r.labels.target,
|
|
234
|
+
value: r.format(L)
|
|
235
|
+
}, {
|
|
236
|
+
name: r.labels.ofTarget,
|
|
237
|
+
value: r.percent($)
|
|
238
|
+
}],
|
|
239
|
+
...ve ? [{
|
|
240
|
+
name: r.labels.range,
|
|
241
|
+
value: ve
|
|
242
|
+
}] : []
|
|
243
|
+
]
|
|
244
|
+
});
|
|
245
|
+
}), {
|
|
246
|
+
nodes: j,
|
|
247
|
+
items: oe,
|
|
248
|
+
dim: .4,
|
|
249
|
+
empty: !1
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
//#endregion
|
|
253
|
+
export { h as bulletScale, g as bulletValues, v as layoutBullet };
|
|
254
|
+
|
|
255
|
+
//# sourceMappingURL=bullet.js.map
|