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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.js","names":["TAU","SEAM","MAX_PIECES","side","plane","p","planeOf","len","b","a","n","inside","grow","centroid","pts","s","pt","list","i","cross3","c","dist","polar","cx","r","cy","rotate","v","area","P","itemsOf","out","at","sub","line","to","q","close","flatten","start","it","items","sweep","step","tolerance","k","dedupe","last","closed","simplify","changed","scale","turn","forward","isFull","triangulate","idx","tris","guard","found","ia","ib","ic","blocked","iv","best","flat","t","convex","poly","V","mergeConvex","polys","merged","A","B","j","fromB","rest","candidate","edges","internalOf","outline","ref","shared","internal","ends","own","guards","e","convexPieces","bandPieces","O","outer","H","hole","sign","h","unwrap","angles","first","order","previous","uo","uh","oi","hi","clipViews","kept","planes","base","inset","size","extent","half","root","into","origin","theta","angle","u","off","d","o","rel","local","rh","clip","color","pieceViews","piece","x0","y0","x1","y1","asRoundRect","arcs","x","y","dx","dy","nearX","nearY","asConcentric","r1","r0","ringOutline","far","ringBox","wedgeViews","arc","a0","a1","span","gap","end","length","rf","rx","ry","phi","mid","rm","probe","hs","he","axis","p1","p2","m1","m2","filletAt","sn","s2","den","R","limit","reach","t2","roundedWedge","circleOf","corners","sideFirst","S","E","fillet","from","wrap","before","after","views","piecesViews","f","roundBox","shadow","pieces","regionViews","subs","paths","circles","firstSub","box","ring","contains","inner","dashPolyline","pattern","dash","period","points","total","left","on","run","segmentBox","extra","cap","width","dotBox","strokeViews","w","op","plain","only","colorAt","ro","ri","band","pointAt","round","runs","closedRun","extend","dots","prev","next","l1","l2","cos","e0","e1","ux","uy","opacity","boundsCenter","fillOp","paintAt","opaqueCss","strokeOp","alpha","paint","cssWithAlpha","textOp","framePrims","ops"],"sources":["../../../../../native/src/components/ShapeChart/geometry.ts"],"sourcesContent":["// Turns the recorded canvas operations into view primitives, without any\n// drawing module:\n// - circles, rings and rounded rectangles are views with a border radius;\n// - a region bounded by arcs of one center (pie slice, donut segment, gauge\n// arc) is a disc / ring view clipped by half-planes: its outline with the\n// arcs replaced by polylines outside the outer circle and inside the inner\n// one, split in convex pieces;\n// - other fills (radar areas, funnel stages, rounded polygons) are split in\n// convex pieces too, each the intersection of half-planes;\n// - a half-plane is a square view with `overflow: hidden`, rotated so that\n// one side lies on the edge: nesting one per edge clips the piece. Edges\n// shared by two pieces overlap by half a pixel and translucent shapes are\n// drawn opaque in a group with the opacity, so no seam shows;\n// - strokes are thin rotated views (round caps / joins: rounded ends), arcs\n// are bands, dashes are split like the canvas does;\n// - texts keep the canvas anchor, alignment, baseline and rotation.\n\nimport {\n cssWithAlpha,\n opaqueCss,\n paintAt,\n type Color,\n type DrawOp,\n type FillOp,\n type Quad,\n type Segment,\n type StrokeOp,\n type Subpath,\n type TextOp,\n} from \"./recorder\";\n\nconst TAU = Math.PI * 2;\n/** Overlap of the pieces of one shape, in pixels */\nconst SEAM = 0.5;\n/** Most views of one shape's half-planes */\nconst MAX_PIECES = 160;\n\nexport type Pt = [number, number];\n\n/** A drawable view */\nexport type Prim =\n | {\n t: \"box\";\n x: number;\n y: number;\n w: number;\n h: number;\n color?: string;\n radius?: number;\n borderWidth?: number;\n borderColor?: string;\n /** Rotation around the center, radians */\n rotate?: number;\n shadow?: boolean;\n }\n | {\n /** Square clipping its children (`overflow: hidden`), rotated around its center */\n t: \"clip\";\n x: number;\n y: number;\n size: number;\n rotate: number;\n children: Prim[];\n }\n | { t: \"group\"; opacity: number; children: Prim[] }\n | {\n t: \"text\";\n text: string;\n x: number;\n y: number;\n size: number;\n weight: number;\n align: TextOp[\"align\"];\n baseline: TextOp[\"baseline\"];\n color: string;\n rotate: number;\n maxWidth?: number;\n halo?: string;\n };\n\n/** Clipping base of a convex piece: everything, or a disc / ring */\ntype Base =\n | { t: \"plane\" }\n | { t: \"disc\"; cx: number; cy: number; r0: number; r1: number };\n\ninterface Piece {\n pts: Pt[];\n /** Per edge (pts[i] -> pts[i + 1]): shared with another piece of the shape */\n internal: boolean[];\n /** Outline half-planes trimming the overlap of the shared edges */\n guards: Plane[];\n}\n\n/** Half-plane n·p >= d (n: unit normal pointing inside) */\ninterface Plane {\n n: Pt;\n d: number;\n}\n\nconst side = (plane: Plane, p: Pt) =>\n plane.n[0] * p[0] + plane.n[1] * p[1] - plane.d;\n\n/** Half-plane of the line a-b containing `inside`, grown by `grow` px */\nconst planeOf = (a: Pt, b: Pt, inside: Pt, grow: number): Plane | null => {\n const len = Math.hypot(b[0] - a[0], b[1] - a[1]);\n if (len < 1e-6) return null;\n let n: Pt = [-(b[1] - a[1]) / len, (b[0] - a[0]) / len];\n if (n[0] * (inside[0] - a[0]) + n[1] * (inside[1] - a[1]) < 0)\n n = [-n[0], -n[1]];\n return { n, d: n[0] * a[0] + n[1] * a[1] - grow };\n};\n\nconst centroid = (pts: readonly Pt[]): Pt => [\n pts.reduce((s, p) => s + p[0], 0) / Math.max(1, pts.length),\n pts.reduce((s, p) => s + p[1], 0) / Math.max(1, pts.length),\n];\n\nconst pt = (list: readonly Pt[], i: number) => list[i] as Pt;\nconst cross3 = (a: Pt, b: Pt, c: Pt) =>\n (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\nconst dist = (a: Pt, b: Pt) => Math.hypot(a[0] - b[0], a[1] - b[1]);\nconst polar = (cx: number, cy: number, r: number, a: number): Pt => [\n cx + r * Math.cos(a),\n cy + r * Math.sin(a),\n];\nconst rotate = (v: Pt, a: number): Pt => {\n const c = Math.cos(a);\n const s = Math.sin(a);\n return [v[0] * c - v[1] * s, v[0] * s + v[1] * c];\n};\n\nexport const area = (P: readonly Pt[]) => {\n let s = 0;\n for (let i = 0; i < P.length; i++) {\n const a = pt(P, i);\n const b = pt(P, (i + 1) % P.length);\n s += a[0] * b[1] - b[0] * a[1];\n }\n return s / 2;\n};\n\n// ---------------------------------------------------------------- paths\n\n/** Segment of a subpath with explicit ends (implicit joins and closing included) */\ntype Item =\n | { t: \"L\"; from: Pt; to: Pt; q?: Quad }\n | { t: \"A\"; cx: number; cy: number; r: number; a0: number; a1: number };\n\n/** Items of a filled (implicitly closed) or stroked subpath, zero-length segments dropped */\nfunction itemsOf(sub: Subpath, close: boolean): Item[] {\n const out: Item[] = [];\n let at: Pt = [sub.x, sub.y];\n const line = (to: Pt, q?: Quad) => {\n if (dist(at, to) > 1e-3)\n out.push(q ? { t: \"L\", from: at, to, q } : { t: \"L\", from: at, to });\n at = to;\n };\n for (const s of sub.segs) {\n if (s.t === \"L\") line([s.x, s.y], s.q);\n else {\n line(polar(s.cx, s.cy, s.r, s.a0));\n out.push({ ...s });\n at = polar(s.cx, s.cy, s.r, s.a1);\n }\n }\n if (close) line([sub.x, sub.y]);\n return out;\n}\n\n/** Points of a subpath, arcs flattened to `tolerance` px */\nfunction flatten(items: readonly Item[], start: Pt, tolerance = 0.2): Pt[] {\n const out: Pt[] = [start];\n for (const it of items) {\n if (it.t === \"L\") out.push(it.to);\n else {\n const sweep = it.a1 - it.a0;\n const step =\n it.r > tolerance\n ? Math.max(0.04, 2 * Math.acos(Math.max(-1, 1 - tolerance / it.r)))\n : Math.PI / 2;\n const n = Math.min(128, Math.max(1, Math.ceil(Math.abs(sweep) / step)));\n out.push(polar(it.cx, it.cy, it.r, it.a0));\n for (let k = 1; k <= n; k++)\n out.push(polar(it.cx, it.cy, it.r, it.a0 + (sweep * k) / n));\n }\n }\n return dedupe(out);\n}\n\n/** Drops repeated points (and the closing copy of the first) */\nfunction dedupe(P: readonly Pt[], closed = true): Pt[] {\n const out: Pt[] = [];\n for (const p of P) {\n const last = out[out.length - 1];\n if (!last || dist(last, p) > 1e-3) out.push(p);\n }\n if (\n closed &&\n out.length > 1 &&\n dist(pt(out, 0), pt(out, out.length - 1)) <= 1e-3\n )\n out.pop();\n return out;\n}\n\n/** Drops the vertices between collinear edges */\nfunction simplify(P: readonly Pt[]): Pt[] {\n let list = dedupe(P);\n let changed = true;\n while (changed && list.length > 3) {\n changed = false;\n for (let i = 0; i < list.length; i++) {\n const a = pt(list, (i - 1 + list.length) % list.length);\n const b = pt(list, i);\n const c = pt(list, (i + 1) % list.length);\n const scale = Math.max(dist(a, b), dist(b, c), 1e-9);\n const turn = cross3(a, b, c) / scale;\n const forward =\n (b[0] - a[0]) * (c[0] - b[0]) + (b[1] - a[1]) * (c[1] - b[1]) > 0;\n if (Math.abs(turn) < 1e-4 && forward) {\n list = list.filter((_, k) => k !== i);\n changed = true;\n break;\n }\n }\n }\n return list;\n}\n\ntype ArcItem = Extract<Item, { t: \"A\" }>;\n\nconst isFull = (it: Item | undefined): it is ArcItem =>\n it?.t === \"A\" && Math.abs(it.a1 - it.a0) >= TAU - 1e-6;\n\n// ---------------------------------------------------------- decomposition\n\n/** Ear clipping of a simple polygon: triangles as indexes */\nexport function triangulate(P: readonly Pt[]): number[][] {\n const n = P.length;\n if (n < 3) return [];\n let idx = P.map((_, i) => i);\n if (area(P) < 0) idx = idx.reverse();\n const tris: number[][] = [];\n const inside = (p: Pt, a: Pt, b: Pt, c: Pt) =>\n cross3(a, b, p) > 1e-9 && cross3(b, c, p) > 1e-9 && cross3(c, a, p) > 1e-9;\n let guard = 0;\n while (idx.length > 3 && guard++ < n * n + 10) {\n let found = false;\n for (let k = 0; k < idx.length; k++) {\n const ia = idx[(k - 1 + idx.length) % idx.length] as number;\n const ib = idx[k] as number;\n const ic = idx[(k + 1) % idx.length] as number;\n const a = pt(P, ia);\n const b = pt(P, ib);\n const c = pt(P, ic);\n if (cross3(a, b, c) <= 1e-9) continue;\n let blocked = false;\n for (const iv of idx) {\n if (iv === ia || iv === ib || iv === ic) continue;\n const v = pt(P, iv);\n if (dist(v, a) < 1e-6 || dist(v, b) < 1e-6 || dist(v, c) < 1e-6)\n continue;\n if (inside(v, a, b, c)) {\n blocked = true;\n break;\n }\n }\n if (blocked) continue;\n tris.push([ia, ib, ic]);\n idx.splice(k, 1);\n found = true;\n break;\n }\n if (!found) {\n // degenerate (self-touching) outline: drop the flattest vertex\n let best = 0;\n let flat = Infinity;\n for (let k = 0; k < idx.length; k++) {\n const t = Math.abs(\n cross3(\n pt(P, idx[(k - 1 + idx.length) % idx.length] as number),\n pt(P, idx[k] as number),\n pt(P, idx[(k + 1) % idx.length] as number),\n ),\n );\n if (t < flat) {\n flat = t;\n best = k;\n }\n }\n idx.splice(best, 1);\n }\n }\n if (idx.length === 3) {\n const [ia, ib, ic] = idx as [number, number, number];\n if (cross3(pt(P, ia), pt(P, ib), pt(P, ic)) > 1e-9) tris.push([ia, ib, ic]);\n }\n return tris;\n}\n\nconst convex = (V: readonly Pt[], poly: readonly number[]) => {\n for (let i = 0; i < poly.length; i++) {\n const a = pt(V, poly[(i - 1 + poly.length) % poly.length] as number);\n const b = pt(V, poly[i] as number);\n const c = pt(V, poly[(i + 1) % poly.length] as number);\n if (cross3(a, b, c) < -1e-7 * Math.max(1, dist(a, b) * dist(b, c)))\n return false;\n }\n return true;\n};\n\n/**\n * Merges triangles (indexes into V, positively oriented) into convex\n * pieces across their shared edges (Hertel-Mehlhorn)\n */\nexport function mergeConvex(\n V: readonly Pt[],\n tris: readonly number[][],\n): Piece[] {\n const polys = tris.map((t) =>\n area(t.map((i) => pt(V, i))) < 0 ? [...t].reverse() : [...t],\n );\n let merged = true;\n while (merged) {\n merged = false;\n outer: for (let p = 0; p < polys.length; p++) {\n const A = polys[p] as number[];\n for (let i = 0; i < A.length; i++) {\n const a = A[i] as number;\n const b = A[(i + 1) % A.length] as number;\n for (let q = p + 1; q < polys.length; q++) {\n const B = polys[q] as number[];\n const j = B.findIndex(\n (v, k) => v === b && B[(k + 1) % B.length] === a,\n );\n if (j < 0) continue;\n // A from b around to a, then B strictly between a and b\n const ia = (i + 1) % A.length;\n const fromB: number[] = [];\n for (let k = 0; k < A.length; k++)\n fromB.push(A[(ia + k) % A.length] as number);\n const rest: number[] = [];\n for (let k = 2; k < B.length; k++)\n rest.push(B[(j + k) % B.length] as number);\n const candidate = [...fromB, ...rest];\n if (!convex(V, candidate)) continue;\n polys[p] = candidate;\n polys.splice(q, 1);\n merged = true;\n break outer;\n }\n }\n }\n }\n const edges = new Set<string>();\n for (const poly of polys)\n for (let i = 0; i < poly.length; i++)\n edges.add(`${poly[i]},${poly[(i + 1) % poly.length]}`);\n const internalOf = (poly: readonly number[]) =>\n poly.map((v, i) => edges.has(`${poly[(i + 1) % poly.length]},${v}`));\n // outline edges, with a point inside their piece\n const outline: { a: number; b: number; ref: Pt }[] = [];\n for (const poly of polys) {\n const ref = centroid(poly.map((i) => pt(V, i)));\n internalOf(poly).forEach((shared, i) => {\n if (!shared)\n outline.push({\n a: poly[i] as number,\n b: poly[(i + 1) % poly.length] as number,\n ref,\n });\n });\n }\n return polys.map((poly) => {\n const pts = poly.map((i) => pt(V, i));\n const internal = internalOf(poly);\n // the outline edges at the ends of the shared ones cut the overlap\n // where it would stick out of the shape (acute corners)\n const ends = new Set<number>();\n internal.forEach((shared, i) => {\n if (!shared) return;\n ends.add(poly[i] as number);\n ends.add(poly[(i + 1) % poly.length] as number);\n });\n const own = new Set(\n poly.map((v, i) => `${v},${poly[(i + 1) % poly.length]}`),\n );\n const guards: Plane[] = [];\n for (const e of outline) {\n if (!(ends.has(e.a) || ends.has(e.b)) || own.has(`${e.a},${e.b}`))\n continue;\n const plane = planeOf(pt(V, e.a), pt(V, e.b), e.ref, 0);\n if (plane && pts.every((p) => side(plane, p) >= -1e-6))\n guards.push(plane);\n }\n return { pts, internal, guards };\n });\n}\n\n/** Convex pieces of a simple polygon */\nexport function convexPieces(P: readonly Pt[]): Piece[] {\n const V = simplify(P);\n if (V.length < 3) return [];\n return mergeConvex(V, triangulate(V));\n}\n\n/** Convex pieces of a band between an outline and a hole around the same point */\nfunction bandPieces(outer: readonly Pt[], hole: readonly Pt[]): Piece[] {\n const O = simplify(outer);\n const H = simplify(hole);\n if (O.length < 3 || H.length < 3) return convexPieces(outer);\n const sign = (P: Pt[]) => (area(P) < 0 ? [...P].reverse() : P);\n const o = sign(O);\n const h = sign(H);\n const c: Pt = [\n h.reduce((s, p) => s + p[0], 0) / h.length,\n h.reduce((s, p) => s + p[1], 0) / h.length,\n ];\n const unwrap = (P: Pt[]) => {\n const angles = P.map((p) => Math.atan2(p[1] - c[1], p[0] - c[0]));\n let first = 0;\n angles.forEach((a, i) => {\n if (a < (angles[first] as number)) first = i;\n });\n const order = P.map((_, k) => (first + k) % P.length);\n const out: number[] = [];\n let previous = -Infinity;\n for (const i of order) {\n let a = angles[i] as number;\n while (a < previous) a += TAU;\n out.push(a);\n previous = a;\n }\n out.push((out[0] as number) + TAU);\n return { order, angles: out };\n };\n const uo = unwrap(o);\n const uh = unwrap(h);\n const V: Pt[] = [...o, ...h];\n const oi = (k: number) => uo.order[k % o.length] as number;\n const hi = (k: number) => o.length + (uh.order[k % h.length] as number);\n const tris: number[][] = [];\n let i = 0;\n let j = 0;\n while (i < o.length || j < h.length) {\n const nextO = i < o.length ? (uo.angles[i + 1] as number) : Infinity;\n const nextH = j < h.length ? (uh.angles[j + 1] as number) : Infinity;\n if (nextO <= nextH) {\n tris.push([oi(i), oi(i + 1), hi(j)]);\n i++;\n } else {\n tris.push([oi(i), hi(j + 1), hi(j)]);\n j++;\n }\n }\n return mergeConvex(\n V,\n tris.filter((t) => Math.abs(area(t.map((k) => pt(V, k)))) > 1e-6),\n );\n}\n\n// -------------------------------------------------------------- clipping\n\n/**\n * Views filling `base` clipped by half-planes: one rotated square with\n * `overflow: hidden` per plane, nested, its top side on the plane's line.\n * `ref` is a point of the drawn region, `extent` bounds the distance from\n * it to any point of the region.\n */\nfunction clipViews(\n planes: readonly Plane[],\n base: Base,\n color: string,\n ref: Pt,\n extent: number,\n): Prim[] {\n const kept: Plane[] = [];\n for (const plane of planes) {\n if (base.t === \"disc\") {\n const inset = side(plane, [base.cx, base.cy]);\n if (inset >= base.r1 - 1e-3) continue; // the whole disc is inside\n if (inset <= -base.r1) return []; // nothing left\n }\n kept.push(plane);\n }\n if (base.t === \"plane\" && !kept.length) return [];\n // whole pixels: the layout keeps the size (and the center it turns around)\n const size = Math.ceil(2 * extent + 8);\n const half = size / 2;\n\n const root: Prim[] = [];\n let into = root;\n let origin: Pt = [0, 0];\n let theta = 0;\n for (const { n, d } of kept) {\n const angle = Math.atan2(-n[0], n[1]);\n const u: Pt = [n[1], -n[0]];\n const off = n[0] * ref[0] + n[1] * ref[1] - d;\n const q: Pt = [ref[0] - off * n[0], ref[1] - off * n[1]];\n const o: Pt = [q[0] - half * u[0], q[1] - half * u[1]];\n const rel = angle - theta;\n const local = rotate([o[0] - origin[0], o[1] - origin[1]], -theta);\n const rh = rotate([half, half], rel);\n const clip: Prim = {\n t: \"clip\",\n x: local[0] - half + rh[0],\n y: local[1] - half + rh[1],\n size,\n rotate: rel,\n children: [],\n };\n into.push(clip);\n into = clip.children;\n origin = o;\n theta = angle;\n }\n if (base.t === \"disc\") {\n const c = rotate([base.cx - origin[0], base.cy - origin[1]], -theta);\n into.push({\n t: \"box\",\n x: c[0] - base.r1,\n y: c[1] - base.r1,\n w: base.r1 * 2,\n h: base.r1 * 2,\n radius: base.r1,\n ...(base.r0 > 0.25\n ? { borderWidth: base.r1 - base.r0, borderColor: color }\n : { color }),\n });\n } else into.push({ t: \"box\", x: 0, y: 0, w: size, h: size, color });\n return root;\n}\n\n/** Views drawing a convex piece of a shape */\nfunction pieceViews(piece: Piece, base: Base, color: string): Prim[] {\n const { pts } = piece;\n if (pts.length < 3) return [];\n const ref = centroid(pts);\n const planes: Plane[] = [];\n pts.forEach((a, i) => {\n const b = pt(pts, (i + 1) % pts.length);\n const plane = planeOf(a, b, ref, piece.internal[i] ? SEAM : 0);\n if (plane) planes.push(plane);\n });\n planes.push(...piece.guards);\n let x0 = Infinity;\n let y0 = Infinity;\n let x1 = -Infinity;\n let y1 = -Infinity;\n for (const p of pts) {\n x0 = Math.min(x0, p[0]);\n y0 = Math.min(y0, p[1]);\n x1 = Math.max(x1, p[0]);\n y1 = Math.max(y1, p[1]);\n }\n if (base.t === \"disc\") {\n x0 = Math.max(x0, base.cx - base.r1);\n y0 = Math.max(y0, base.cy - base.r1);\n x1 = Math.min(x1, base.cx + base.r1);\n y1 = Math.min(y1, base.cy + base.r1);\n }\n if (!(x1 > x0 && y1 > y0)) return [];\n // the centroid may lie outside the disc: distances from it, generously\n return clipViews(\n planes,\n base,\n color,\n ref,\n 2 * Math.hypot(x1 - x0, y1 - y0) + SEAM,\n );\n}\n\n// ------------------------------------------------------------ recognition\n\ninterface RoundRect {\n x: number;\n y: number;\n w: number;\n h: number;\n r: number;\n}\n\n/** An axis-aligned (rounded) rectangle */\nfunction asRoundRect(items: readonly Item[]): RoundRect | null {\n const arcs = items.filter((it) => it.t === \"A\");\n if (arcs.length !== 0 && arcs.length !== 4) return null;\n let r = 0;\n let x0 = Infinity;\n let y0 = Infinity;\n let x1 = -Infinity;\n let y1 = -Infinity;\n const grow = (x: number, y: number) => {\n x0 = Math.min(x0, x);\n y0 = Math.min(y0, y);\n x1 = Math.max(x1, x);\n y1 = Math.max(y1, y);\n };\n for (const it of items) {\n if (it.t === \"L\") {\n const dx = Math.abs(it.to[0] - it.from[0]);\n const dy = Math.abs(it.to[1] - it.from[1]);\n if (dx > 1e-3 && dy > 1e-3) return null;\n grow(it.from[0], it.from[1]);\n grow(it.to[0], it.to[1]);\n } else {\n if (Math.abs(Math.abs(it.a1 - it.a0) - Math.PI / 2) > 0.02) return null;\n if (r && Math.abs(it.r - r) > 0.01) return null;\n r = it.r;\n grow(it.cx - it.r, it.cy - it.r);\n grow(it.cx + it.r, it.cy + it.r);\n }\n }\n if (!(x1 > x0 && y1 > y0)) return null;\n for (const it of items) {\n if (it.t === \"A\") {\n const nearX =\n Math.abs(it.cx - (x0 + r)) < 0.05 || Math.abs(it.cx - (x1 - r)) < 0.05;\n const nearY =\n Math.abs(it.cy - (y0 + r)) < 0.05 || Math.abs(it.cy - (y1 - r)) < 0.05;\n if (!nearX || !nearY) return null;\n } else {\n // every straight side lies on the box\n const onX = (x: number) =>\n Math.abs(x - x0) < 0.05 || Math.abs(x - x1) < 0.05;\n const onY = (y: number) =>\n Math.abs(y - y0) < 0.05 || Math.abs(y - y1) < 0.05;\n const vertical = Math.abs(it.to[0] - it.from[0]) <= 1e-3;\n if (vertical ? !onX(it.from[0]) : !onY(it.from[1])) return null;\n }\n }\n if (!arcs.length && items.length < 4) return null;\n return { x: x0, y: y0, w: x1 - x0, h: y1 - y0, r };\n}\n\n/**\n * A region bounded by arcs of one center (and straight / curved sides inside\n * the ring of those arcs): its ring and the outline to clip it with\n */\nfunction asConcentric(\n items: readonly Item[],\n): { base: Extract<Base, { t: \"disc\" }>; outline: Pt[] } | null {\n const arcs = items.filter((it): it is ArcItem => it.t === \"A\");\n const first = arcs[0];\n if (!first) return null;\n const { cx, cy } = first;\n let r1 = 0;\n for (const a of arcs) {\n if (Math.hypot(a.cx - cx, a.cy - cy) > 0.5) return null;\n r1 = Math.max(r1, a.r);\n }\n let r0 = 0;\n for (const a of arcs) {\n if (Math.abs(a.r - r1) <= 0.5) continue;\n if (r0 && Math.abs(a.r - r0) > 0.5) return null;\n r0 = a.r;\n }\n const c: Pt = [cx, cy];\n for (const it of items)\n if (it.t === \"L\")\n for (const p of [it.from, it.to]) {\n const d = dist(p, c);\n if (d > r1 + 0.5 || (r0 > 0 && d < r0 - 0.5)) return null;\n }\n const base = { t: \"disc\", cx, cy, r0, r1 } as const;\n return { base, outline: ringOutline(items, base) };\n}\n\n/** Outline of a region of a ring, its arcs replaced by polylines the ring view rounds */\nfunction ringOutline(\n items: readonly Item[],\n { cx, cy, r1 }: Extract<Base, { t: \"disc\" }>,\n): Pt[] {\n const outline: Pt[] = [];\n for (const it of items) {\n if (it.t === \"L\") {\n outline.push(it.from, it.to);\n continue;\n }\n const sweep = it.a1 - it.a0;\n if (Math.abs(it.r - r1) <= 0.5) {\n // tangents outside the outer circle: the disc does the rounding\n const n = Math.max(1, Math.ceil(Math.abs(sweep) / (Math.PI / 4)));\n const step = sweep / n;\n const far = r1 / Math.cos(step / 2);\n outline.push(polar(cx, cy, r1, it.a0));\n for (let k = 0; k < n; k++) {\n outline.push(polar(cx, cy, far, it.a0 + (k + 0.5) * step));\n outline.push(polar(cx, cy, r1, it.a0 + (k + 1) * step));\n }\n } else {\n // chords inside the inner circle: the ring does the rounding\n const n = Math.max(1, Math.ceil(Math.abs(sweep) / (Math.PI / 2)));\n for (let k = 0; k <= n; k++)\n outline.push(polar(cx, cy, it.r, it.a0 + (sweep * k) / n));\n }\n }\n return outline;\n}\n\nconst ringBox = (\n cx: number,\n cy: number,\n r1: number,\n r0: number,\n color: string,\n): Prim => ({\n t: \"box\",\n x: cx - r1,\n y: cy - r1,\n w: r1 * 2,\n h: r1 * 2,\n radius: r1,\n ...(r0 > 0.25 ? { borderWidth: r1 - r0, borderColor: color } : { color }),\n});\n\n/**\n * A sector of a ring between two straight sides (pie slices, donut segments,\n * gauge arcs, with or without gaps): the ring clipped by the two sides (two\n * halves split on the bisector past half a turn). Rounded corners are\n * handled by `roundedWedge`. `null` when the outline is something else.\n */\nfunction wedgeViews(\n items: readonly Item[],\n base: Extract<Base, { t: \"disc\" }>,\n color: string,\n /** Grows the straight sides (round caps cover them) */\n grow = 0,\n): Prim[] | null {\n const { cx, cy, r0, r1 } = base;\n const c: Pt = [cx, cy];\n const arcs = items.filter((it): it is ArcItem => it.t === \"A\");\n const outer = arcs.filter((a) => Math.abs(a.r - r1) <= 0.5);\n const arc = outer[0];\n if (!arc || outer.length !== 1 || arcs.length - outer.length > 1) return null;\n const a0 = Math.min(arc.a0, arc.a1);\n const a1 = Math.max(arc.a0, arc.a1);\n const span = a1 - a0;\n if (span >= TAU - 1e-3) return null;\n // the straight sides: radial segments, by the end of the arc they are at\n const gap = (a: number, b: number) => {\n const d = Math.abs(a - b) % TAU;\n return Math.min(d, TAU - d);\n };\n let start: Extract<Item, { t: \"L\" }> | null = null;\n let end: Extract<Item, { t: \"L\" }> | null = null;\n const length = (s: Extract<Item, { t: \"L\" }>) => dist(s.from, s.to);\n for (const it of items) {\n if (it.t !== \"L\" || length(it) < 0.3) continue;\n const far = dist(it.from, c) > dist(it.to, c) ? it.from : it.to;\n const rf = dist(far, c);\n if (rf < 0.5) continue;\n const dx = (it.to[0] - it.from[0]) / length(it);\n const dy = (it.to[1] - it.from[1]) / length(it);\n const rx = (far[0] - cx) / rf;\n const ry = (far[1] - cy) / rf;\n if (Math.abs(dx * ry - dy * rx) > 0.14) continue; // not radial (8°)\n const phi = Math.atan2(far[1] - cy, far[0] - cx);\n if (gap(phi, a0) <= gap(phi, a1)) {\n if (!start || length(it) > length(start)) start = it;\n } else if (!end || length(it) > length(end)) end = it;\n }\n if (!start || !end) return null;\n const mid = (a0 + a1) / 2;\n const rm = r0 > 0 ? (r0 + r1) / 2 : r1 / 2;\n const probe = polar(cx, cy, rm, mid);\n const hs = planeOf(start.from, start.to, probe, grow);\n const he = planeOf(end.from, end.to, probe, grow);\n if (!hs || !he || side(hs, probe) <= 0 || side(he, probe) <= 0) return null;\n const extent = 2 * r1 + SEAM;\n if (span <= Math.PI - 1e-3)\n return clipViews([hs, he], base, color, probe, extent);\n // past half a turn: the halves on each side of the bisector\n const axis: Pt = [cx + Math.cos(mid), cy + Math.sin(mid)];\n const p1 = polar(cx, cy, rm, a0 + span / 4);\n const p2 = polar(cx, cy, rm, a1 - span / 4);\n const m1 = planeOf(c, axis, p1, SEAM);\n const m2 = planeOf(c, axis, p2, SEAM);\n if (!m1 || !m2) return null;\n return [\n ...clipViews([hs, m1], base, color, p1, extent),\n ...clipViews([he, m2], base, color, p2, extent),\n ];\n}\n\n/** A rounded corner: a circle tangent to a straight side and to a ring circle */\ninterface Fillet {\n o: Pt;\n r: number;\n /** Tangent points on the side and on the circle */\n side: Pt;\n ring: Pt;\n}\n\n/**\n * The fillet of the corner between a side (the line through `p`, `n` its\n * normal pointing inside) and the circle of radius `R` around `c` (the\n * fillet inside it for the outer edge, outside it for the inner one),\n * touching the side at `p`, its radius at most `limit`. `null` when too\n * small to show.\n */\nfunction filletAt(\n c: Pt,\n p: Pt,\n n: Pt,\n R: number,\n outer: boolean,\n limit: number,\n): Fillet | null {\n const rel: Pt = [p[0] - c[0], p[1] - c[1]];\n const sn = rel[0] * n[0] + rel[1] * n[1];\n let u: Pt = [n[1], -n[0]];\n if (rel[0] * u[0] + rel[1] * u[1] < 0) u = [-u[0], -u[1]];\n const s2 = rel[0] * rel[0] + rel[1] * rel[1];\n const den = 2 * (outer ? R + sn : R - sn);\n if (den <= 1e-6) return null;\n const r = Math.min(limit, (outer ? R * R - s2 : s2 - R * R) / den);\n if (!(r > 0.5)) return null;\n // |center - c| = R ∓ r, the center at r from the side\n const reach = outer ? R - r : R + r;\n const t2 = reach * reach - (sn + r) * (sn + r);\n if (t2 <= 0) return null;\n const t = Math.sqrt(t2);\n const at = (k: number): Pt => [\n c[0] + t * u[0] + k * n[0],\n c[1] + t * u[1] + k * n[1],\n ];\n const o = at(sn + r);\n const scale = R / reach;\n return {\n o,\n r,\n side: at(sn),\n ring: [c[0] + (o[0] - c[0]) * scale, c[1] + (o[1] - c[1]) * scale],\n };\n}\n\n/**\n * The rounded corners of a sector (pie, donut and sunburst slices with a\n * corner radius). The canvas path rounds each corner with a quadratic curve\n * from a side to an arc (control point on the arc's circle), its radius\n * already clamped to half the thickness and to the arc length: here a\n * circle tangent to the side at the same point and to the arc's circle,\n * within 7% of the radius of that curve. The outline with the corners cut\n * by the chords of the fillets is clipped as convex pieces of the ring, and\n * a disc per fillet covers its chord (both sides of the chord are painted:\n * no seam). `null` without such corners or when something does not match\n * (the caller then clips the flattened outline).\n */\nfunction roundedWedge(\n items: readonly Item[],\n base: Extract<Base, { t: \"disc\" }>,\n color: string,\n): Prim[] | null {\n const { cx, cy, r0, r1 } = base;\n const c: Pt = [cx, cy];\n const limit = (r1 - r0) / 2;\n /** Radius of the ring circle `p` is on, 0 if none */\n const circleOf = (p: Pt) => {\n const d = dist(p, c);\n if (Math.abs(d - r1) <= 0.5) return r1;\n return r0 > 0 && Math.abs(d - r0) <= 0.5 ? r0 : 0;\n };\n interface Corner {\n fillet: Fillet;\n plane: Plane;\n /** The curve goes from the side to the circle */\n sideFirst: boolean;\n }\n const corners = new Map<Quad, Corner>();\n for (const it of items) {\n if (it.t !== \"L\" || !it.q || corners.has(it.q)) continue;\n const q = it.q;\n const R = circleOf(q.ctrl);\n if (!R) return null;\n const sideFirst = circleOf(q.from) !== R;\n const S = sideFirst ? q.from : q.to;\n const E = sideFirst ? q.to : q.from;\n if (circleOf(E) !== R || circleOf(S) === R) return null;\n const plane = planeOf(S, q.ctrl, E, 0);\n const fillet = plane && filletAt(c, S, plane.n, R, R === r1, limit);\n if (!plane || !fillet) return null;\n corners.set(q, { fillet, plane, sideFirst });\n }\n if (!corners.size) return null;\n\n // the outline: each curve replaced by the chord of its fillet\n const outline: Item[] = [];\n let last: Quad | undefined;\n for (const it of items) {\n const q = it.t === \"L\" ? it.q : undefined;\n if (q !== last && q) {\n const { fillet, sideFirst } = corners.get(q) as Corner;\n const [from, to] = sideFirst\n ? [fillet.side, fillet.ring]\n : [fillet.ring, fillet.side];\n outline.push({ t: \"L\", from, to });\n } else if (!q) outline.push(it);\n last = q;\n }\n // the arcs now end at the fillets\n const wrap = (a: number) => a - TAU * Math.round(a / TAU);\n const angle = (p: Pt) => Math.atan2(p[1] - cy, p[0] - cx);\n const ends = (it: Item): [Pt, Pt] =>\n it.t === \"L\"\n ? [it.from, it.to]\n : [polar(it.cx, it.cy, it.r, it.a0), polar(it.cx, it.cy, it.r, it.a1)];\n const n = outline.length;\n const arcs = outline.map((it, i): Item => {\n if (it.t !== \"A\") return it;\n const before = ends(outline[(i - 1 + n) % n] as Item)[1];\n const after = ends(outline[(i + 1) % n] as Item)[0];\n const a0 =\n Math.abs(dist(before, c) - it.r) <= 0.5\n ? it.a0 + wrap(angle(before) - it.a0)\n : it.a0;\n const a1 =\n Math.abs(dist(after, c) - it.r) <= 0.5\n ? it.a1 + wrap(angle(after) - it.a1)\n : it.a1;\n return { ...it, a0, a1 };\n });\n if (\n arcs.some(\n (it, i) =>\n it.t === \"A\" &&\n (it.a1 - it.a0) *\n ((outline[i] as ArcItem).a1 - (outline[i] as ArcItem).a0) <\n 0,\n )\n )\n return null;\n\n const views = piecesViews(convexPieces(ringOutline(arcs, base)), base, color);\n const planes = [...corners.values()].map((k) => k.plane);\n // a slice of at most half a turn is the intersection of its sides: there\n // the other side may cut a fillet (thin slices)\n const convex = [...corners.values()].every(({ fillet }) =>\n planes.every((p) => side(p, fillet.side) >= -0.5),\n );\n for (const { fillet: f } of corners.values())\n views.push(\n ...clipViews(\n convex ? planes : [],\n { t: \"disc\", cx: f.o[0], cy: f.o[1], r0: 0, r1: f.r },\n color,\n f.o,\n 2 * f.r + SEAM,\n ),\n );\n return views;\n}\n\nconst roundBox = (r: RoundRect, color: string, shadow: boolean): Prim => ({\n t: \"box\",\n x: r.x,\n y: r.y,\n w: r.w,\n h: r.h,\n color,\n ...(r.r > 0 ? { radius: r.r } : null),\n ...(shadow ? { shadow } : null),\n});\n\nfunction piecesViews(\n pieces: readonly Piece[],\n base: Base,\n color: string,\n): Prim[] {\n const out: Prim[] = [];\n for (const piece of pieces.slice(0, MAX_PIECES))\n out.push(...pieceViews(piece, base, color));\n return out;\n}\n\n/** Views filling the subpaths with one opaque color (nonzero rule) */\nexport function regionViews(\n paths: readonly Subpath[],\n color: string,\n shadow = false,\n): Prim[] {\n const subs = paths\n .map((sub) => ({ start: [sub.x, sub.y] as Pt, items: itemsOf(sub, true) }))\n .filter((s) => s.items.length > 0);\n if (!subs.length) return [];\n\n // full circles: a disc, or a ring with the hole\n if (subs.every((s) => s.items.length === 1 && isFull(s.items[0]))) {\n const circles = subs.map((s) => s.items[0] as ArcItem);\n const [a, b] = circles;\n if (\n a &&\n b &&\n circles.length === 2 &&\n Math.hypot(a.cx - b.cx, a.cy - b.cy) < 0.5 &&\n Math.abs(a.r - b.r) > 0.25 &&\n a.a1 - a.a0 > 0 !== b.a1 - b.a0 > 0\n )\n return [\n ringBox(a.cx, a.cy, Math.max(a.r, b.r), Math.min(a.r, b.r), color),\n ];\n return circles.map((c) => ringBox(c.cx, c.cy, c.r, 0, color));\n }\n\n const firstSub = subs[0];\n if (subs.length === 1 && firstSub) {\n const box = asRoundRect(firstSub.items);\n if (box) return [roundBox(box, color, shadow)];\n const ring = asConcentric(firstSub.items);\n if (ring)\n return (\n roundedWedge(firstSub.items, ring.base, color) ??\n wedgeViews(firstSub.items, ring.base, color) ??\n piecesViews(convexPieces(ring.outline), ring.base, color)\n );\n }\n\n const polys = subs.map((s) => flatten(s.items, s.start));\n // an outline and a hole wound the other way (radar rings)\n const [outer, hole] = polys;\n if (\n polys.length === 2 &&\n outer &&\n hole &&\n area(outer) * area(hole) < 0 &&\n contains(outer, hole)\n )\n return piecesViews(bandPieces(outer, hole), { t: \"plane\" }, color);\n const out: Prim[] = [];\n for (const poly of polys)\n out.push(...piecesViews(convexPieces(poly), { t: \"plane\" }, color));\n return out;\n}\n\nfunction contains(outer: readonly Pt[], inner: readonly Pt[]) {\n const box = (P: readonly Pt[]) => {\n let x0 = Infinity;\n let y0 = Infinity;\n let x1 = -Infinity;\n let y1 = -Infinity;\n for (const p of P) {\n x0 = Math.min(x0, p[0]);\n y0 = Math.min(y0, p[1]);\n x1 = Math.max(x1, p[0]);\n y1 = Math.max(y1, p[1]);\n }\n return { x0, y0, x1, y1 };\n };\n const a = box(outer);\n const b = box(inner);\n return (\n b.x0 >= a.x0 - 0.5 &&\n b.y0 >= a.y0 - 0.5 &&\n b.x1 <= a.x1 + 0.5 &&\n b.y1 <= a.y1 + 0.5\n );\n}\n\n// ---------------------------------------------------------------- strokes\n\n/** Splits a polyline into its dashes (canvas `setLineDash`) */\nexport function dashPolyline(\n points: readonly Pt[],\n dash: readonly number[],\n): Pt[][] {\n let pattern = dash.filter((v) => Number.isFinite(v) && v >= 0);\n if (pattern.length % 2) pattern = [...pattern, ...pattern];\n const period = pattern.reduce((a, b) => a + b, 0);\n if (!pattern.length || period <= 0) return [points.slice()];\n let total = 0;\n for (let i = 1; i < points.length; i++)\n total += dist(pt(points, i - 1), pt(points, i));\n // keeps the number of views bounded\n const scale = total / period > 300 ? total / period / 300 : 1;\n const out: Pt[][] = [];\n let k = 0;\n let left = (pattern[0] as number) * scale;\n let on = true;\n let run: Pt[] = [pt(points, 0)];\n for (let i = 1; i < points.length; i++) {\n let a = pt(points, i - 1);\n const b = pt(points, i);\n let len = dist(a, b);\n while (len > 1e-9) {\n const step = Math.min(left, len);\n const t = step / len;\n const p: Pt = [a[0] + (b[0] - a[0]) * t, a[1] + (b[1] - a[1]) * t];\n if (on) run.push(p);\n a = p;\n len -= step;\n left -= step;\n if (left <= 1e-9) {\n if (on && run.length > 1) out.push(run);\n on = !on;\n k = (k + 1) % pattern.length;\n left = Math.max((pattern[k] as number) * scale, on ? 0 : 0.5);\n run = [p];\n }\n }\n }\n if (on && run.length > 1) out.push(run);\n return out;\n}\n\nconst segmentBox = (\n a: Pt,\n b: Pt,\n width: number,\n color: string,\n cap: StrokeOp[\"cap\"],\n): Prim => {\n const extra = cap === \"butt\" ? 0 : width;\n const length = dist(a, b) + extra;\n return {\n t: \"box\",\n x: (a[0] + b[0]) / 2 - length / 2,\n y: (a[1] + b[1]) / 2 - width / 2,\n w: length,\n h: width,\n color,\n ...(cap === \"round\" ? { radius: width / 2 } : null),\n rotate: Math.atan2(b[1] - a[1], b[0] - a[0]),\n };\n};\n\nconst dotBox = (p: Pt, d: number, color: string): Prim => ({\n t: \"box\",\n x: p[0] - d / 2,\n y: p[1] - d / 2,\n w: d,\n h: d,\n radius: d / 2,\n color,\n});\n\n/** Views of a stroke; `colorAt` gives the opaque color around a point */\nfunction strokeViews(op: StrokeOp, colorAt: (p: Pt) => string): Prim[] {\n const w = op.width;\n const subs = op.paths\n .map((sub) => ({\n start: [sub.x, sub.y] as Pt,\n items: itemsOf(sub, sub.closed),\n closed: sub.closed,\n }))\n .filter((s) => s.items.length > 0);\n if (!subs.length || !(w > 0)) return [];\n const plain = !op.paint.gradient && op.dash.length === 0;\n const first = subs[0];\n if (plain && subs.length === 1 && first) {\n const { items } = first;\n const only = items[0];\n // a circle: a ring view\n if (items.length === 1 && only && isFull(only))\n return [\n ringBox(\n only.cx,\n only.cy,\n only.r + w / 2,\n Math.max(0, only.r - w / 2),\n colorAt([only.cx, only.cy]),\n ),\n ];\n // an arc: a band (the region of its outline), with its caps\n if (items.length === 1 && only?.t === \"A\") {\n const ro = only.r + w / 2;\n const ri = only.r - w / 2;\n const color = colorAt([only.cx, only.cy]);\n const band: Subpath = {\n ...pointAt(only.cx, only.cy, ro, only.a0),\n closed: true,\n segs: [\n { t: \"A\", cx: only.cx, cy: only.cy, r: ro, a0: only.a0, a1: only.a1 },\n ri > 0.25\n ? {\n t: \"A\",\n cx: only.cx,\n cy: only.cy,\n r: ri,\n a0: only.a1,\n a1: only.a0,\n }\n : { t: \"L\", x: only.cx, y: only.cy },\n ] as Segment[],\n };\n const round = op.cap === \"round\";\n const ring = asConcentric(itemsOf(band, true));\n const views =\n (ring &&\n wedgeViews(\n itemsOf(band, true),\n ring.base,\n color,\n round ? SEAM : 0,\n )) ||\n regionViews([band], color);\n if (round)\n views.push(\n dotBox(polar(only.cx, only.cy, only.r, only.a0), w, color),\n dotBox(polar(only.cx, only.cy, only.r, only.a1), w, color),\n );\n return views;\n }\n // a rounded rectangle: a bordered view\n if (first.closed) {\n const box = asRoundRect(items);\n if (box)\n return [\n {\n t: \"box\",\n x: box.x - w / 2,\n y: box.y - w / 2,\n w: box.w + w,\n h: box.h + w,\n radius: box.r > 0 ? box.r + w / 2 : 0,\n borderWidth: w,\n borderColor: colorAt([box.x, box.y]),\n },\n ];\n }\n }\n const out: Prim[] = [];\n for (const sub of subs) {\n const flat = flatten(sub.items, sub.start, 0.25);\n const line = dedupe(sub.closed ? [...flat, pt(flat, 0)] : flat, false);\n if (line.length < 2) continue;\n const runs = op.dash.length ? dashPolyline(line, op.dash) : [line];\n for (const run of runs) {\n const n = run.length;\n const closedRun = n > 2 && dist(pt(run, 0), pt(run, n - 1)) < 1e-3;\n // joins of butt-capped strokes: thin ones and sharp corners get a\n // round dot; the gentle bends of wide strokes (sankey links) extend\n // the segments over the gap instead (a dot as wide as the stroke would\n // bulge out of a curved ribbon)\n const extend = new Array<number>(n).fill(0);\n const dots: number[] = [];\n if (op.cap !== \"round\" && w >= 1.5)\n for (let i = closedRun ? 0 : 1; i < n - 1; i++) {\n const prev = pt(run, i === 0 ? n - 2 : i - 1);\n const at = pt(run, i);\n const next = pt(run, i + 1);\n const l1 = dist(prev, at);\n const l2 = dist(at, next);\n const cos =\n l1 > 1e-9 && l2 > 1e-9\n ? ((at[0] - prev[0]) * (next[0] - at[0]) +\n (at[1] - prev[1]) * (next[1] - at[1])) /\n (l1 * l2)\n : 1;\n const turn = Math.acos(Math.max(-1, Math.min(1, cos)));\n if (op.cap === \"butt\" && w >= 6 && turn < Math.PI / 4) {\n extend[i] = (w / 2) * Math.tan(turn / 2) + 0.5;\n if (i === 0) extend[n - 1] = extend[0] as number;\n } else dots.push(i);\n }\n for (let i = 1; i < n; i++) {\n let a = pt(run, i - 1);\n let b = pt(run, i);\n const length = dist(a, b);\n const e0 = extend[i - 1] as number;\n const e1 = extend[i] as number;\n if (length > 1e-9 && (e0 > 0 || e1 > 0)) {\n const ux = (b[0] - a[0]) / length;\n const uy = (b[1] - a[1]) / length;\n a = [a[0] - ux * e0, a[1] - uy * e0];\n b = [b[0] + ux * e1, b[1] + uy * e1];\n }\n const mid: Pt = [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2];\n out.push(segmentBox(a, b, w, colorAt(mid), op.cap));\n }\n for (const i of dots)\n out.push(dotBox(pt(run, i), w, colorAt(pt(run, i))));\n }\n }\n return out;\n}\n\nconst pointAt = (cx: number, cy: number, r: number, a: number) => {\n const [x, y] = polar(cx, cy, r, a);\n return { x, y };\n};\n\n// ------------------------------------------------------------------- ops\n\nconst wrap = (views: Prim[], opacity: number): Prim[] => {\n if (!views.length) return [];\n if (opacity >= 0.999) return views;\n return [{ t: \"group\", opacity, children: views }];\n};\n\nconst boundsCenter = (paths: readonly Subpath[]): Pt => {\n let x0 = Infinity;\n let y0 = Infinity;\n let x1 = -Infinity;\n let y1 = -Infinity;\n for (const sub of paths) {\n const grow = (x: number, y: number) => {\n x0 = Math.min(x0, x);\n y0 = Math.min(y0, y);\n x1 = Math.max(x1, x);\n y1 = Math.max(y1, y);\n };\n grow(sub.x, sub.y);\n for (const s of sub.segs) {\n if (s.t === \"L\") grow(s.x, s.y);\n else {\n grow(s.cx - s.r, s.cy - s.r);\n grow(s.cx + s.r, s.cy + s.r);\n }\n }\n }\n return Number.isFinite(x0) ? [(x0 + x1) / 2, (y0 + y1) / 2] : [0, 0];\n};\n\nfunction fillOp(op: FillOp): Prim[] {\n const color: Color = paintAt(op.paint, ...boundsCenter(op.paths));\n const opacity = color.a * op.alpha;\n if (opacity <= 0.002) return [];\n return wrap(regionViews(op.paths, opaqueCss(color), op.shadow), opacity);\n}\n\nfunction strokeOp(op: StrokeOp): Prim[] {\n const { paint } = op;\n let alpha = paint.color.a;\n if (paint.gradient?.stops.length)\n alpha = Math.max(...paint.gradient.stops.map((s) => s.color.a));\n const opacity = alpha * op.alpha;\n if (opacity <= 0.002) return [];\n const colorAt = (p: Pt) => {\n const c = paintAt(paint, p[0], p[1]);\n // gradient stops of different alphas: folded into the opaque color\n return paint.gradient && alpha > 0 && c.a < alpha - 1e-3\n ? cssWithAlpha(c, 1 / alpha)\n : opaqueCss(c);\n };\n return wrap(strokeViews(op, colorAt), opacity);\n}\n\nfunction textOp(op: TextOp): Prim[] {\n if (!op.text || op.alpha * op.color.a <= 0.002) return [];\n return [\n {\n t: \"text\",\n text: op.text,\n x: op.x,\n y: op.y,\n size: op.size,\n weight: op.weight,\n align: op.align,\n baseline: op.baseline,\n color: cssWithAlpha(op.color, op.alpha),\n rotate: op.rotate,\n ...(op.maxWidth !== undefined ? { maxWidth: op.maxWidth } : null),\n ...(op.halo ? { halo: cssWithAlpha(op.halo, op.alpha) } : null),\n },\n ];\n}\n\n/** Views of a recorded frame, in drawing order */\nexport function framePrims(ops: readonly DrawOp[]): Prim[] {\n const out: Prim[] = [];\n for (const op of ops) {\n if (op.kind === \"fill\") out.push(...fillOp(op));\n else if (op.kind === \"stroke\") out.push(...strokeOp(op));\n else out.push(...textOp(op));\n }\n return out;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./charts.cjs");exports.BulletChart=e.BulletChart,exports.CalendarHeatmap=e.CalendarHeatmap,exports.ChordChart=e.ChordChart,exports.DonutChart=e.DonutChart,exports.FunnelChart=e.FunnelChart,exports.GaugeChart=e.GaugeChart,exports.PieChart=e.PieChart,exports.RadarChart=e.RadarChart,exports.RadialBarChart=e.RadialBarChart,exports.SankeyChart=e.SankeyChart,exports.ShapeChart=e.ShapeChart,exports.SunburstChart=e.SunburstChart,exports.TreemapChart=e.TreemapChart;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { BulletChart as e, CalendarHeatmap as t, ChordChart as n, DonutChart as r, FunnelChart as i, GaugeChart as a, PieChart as o, RadarChart as s, RadialBarChart as c, SankeyChart as l, ShapeChart as u, SunburstChart as d, TreemapChart as f } from "./charts.js";
|
|
2
|
+
export { e as BulletChart, t as CalendarHeatmap, n as ChordChart, r as DonutChart, i as FunnelChart, a as GaugeChart, o as PieChart, s as RadarChart, c as RadialBarChart, l as SankeyChart, u as ShapeChart, d as SunburstChart, f as TreemapChart };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../Chart/measure.cjs");var t=Math.PI*2,n={r:0,g:0,b:0,a:1},r=e=>e<0?0:e>1?1:e,i={transparent:{r:0,g:0,b:0,a:0},black:n,white:{r:255,g:255,b:255,a:1}};function a(e){if(typeof e!=`string`)return n;let t=e.trim().toLowerCase(),a=i[t];if(a)return a;let o=/^rgba?\(([^)]*)\)$/.exec(t);if(o){let e=(o[1]??``).split(/[\s,/]+/).filter(Boolean).map(e=>e.endsWith(`%`)?parseFloat(e)/100*255:+e),[t=0,n=0,i=0]=e,a=e[3]??1,s=(o[1]??``).split(/[\s,/]+/).filter(Boolean)[3];if(s?.endsWith(`%`)&&(a=parseFloat(s)/100),[t,n,i,a].every(Number.isFinite))return{r:t,g:n,b:i,a:r(a)}}let s=/^#([0-9a-f]{3,8})$/.exec(t)?.[1];if(s&&s.length!==5&&s.length!==7){let e=s.length<=4,t=t=>parseInt(e?(s[t]??`f`)+(s[t]??`f`):s.slice(t*2,t*2+2)||`ff`,16),n=e?s.length:s.length/2;return{r:t(0),g:t(1),b:t(2),a:n===4?t(3)/255:1}}return{r:0,g:0,b:0,a:1,raw:e}}var o=e=>e.raw??`rgb(${Math.round(e.r)}, ${Math.round(e.g)}, ${Math.round(e.b)})`,s=(e,t)=>e.raw??`rgba(${Math.round(e.r)}, ${Math.round(e.g)}, ${Math.round(e.b)}, ${+r(e.a*t).toFixed(3)})`;function c(e,t,n){let i=e.gradient;if(!i||i.stops.length<2)return e.color;let a=i.x1-i.x0,o=i.y1-i.y0,s=a*a+o*o,c=s>0?r(((t-i.x0)*a+(n-i.y0)*o)/s):0,l=i.stops,u=0;for(;u<l.length-2&&(l[u+1]?.offset??1)<c;)u++;let d=l[u],f=l[u+1];if(!d||!f)return e.color;let p=f.offset-d.offset,m=p>0?r((c-d.offset)/p):0,h=(e,t)=>e+(t-e)*m;return d.color.raw||f.color.raw?m<.5?d.color:f.color:{r:h(d.color.r,f.color.r),g:h(d.color.g,f.color.g),b:h(d.color.b,f.color.b),a:h(d.color.a,f.color.a)}}var l=/^\s*(?:(?:italic|oblique|normal)\s+)?(?:(\d{3}|bold|normal)\s+)?([\d.]+)px/;function u(e){let t=l.exec(e),n=t?.[1],r=n===`bold`?700:n&&n!==`normal`?+n:400;return{size:t?Number(t[2]):10,weight:r}}var d=Symbol(`gradient`),f=e=>typeof e==`object`&&!!e&&d in e,p=e=>{if(f(e)){let t=e[d];return{color:t.stops[0]?.color??n,gradient:t}}return{color:a(e)}},m=e=>e.color.raw??`rgba(${e.color.r}, ${e.color.g}, ${e.color.b}, ${e.color.a})`,h=e=>e===`center`?`center`:e===`right`||e===`end`?`right`:`left`,g=e=>e===`top`||e===`hanging`?`top`:e===`middle`?`middle`:e===`bottom`||e===`ideographic`?`bottom`:`alphabetic`;function _(e,n,r){if(!r){if(n-e>=t)return t;let r=(n-e)%t;return r<0&&(r+=t),r}if(e-n>=t)return-t;let i=(e-n)%t;return i<0&&(i+=t),-i}function v(){let t=[],i=()=>({m:[1,0,0,1,0,0],alpha:1,fill:{color:n},stroke:{color:n},lineWidth:1,cap:`butt`,join:`miter`,font:`10px sans-serif`,align:`left`,baseline:`alphabetic`,dash:[],shadowColor:`rgba(0, 0, 0, 0)`,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0}),o=i(),s=[],c=[],l=null,f=null,v=null,y=(e,t)=>{let[n,r,i,a,s,c]=o.m;return[n*e+i*t+s,r*e+a*t+c]},b=()=>{let[e,t,n,r]=o.m;return Math.sqrt(Math.abs(e*r-t*n))||0},x=()=>Math.atan2(o.m[1],o.m[0]),S=e=>{let[t,n,r,i,a,s]=o.m;o.m=[t*e[0]+r*e[1],n*e[0]+i*e[1],t*e[2]+r*e[3],n*e[2]+i*e[3],t*e[4]+r*e[5]+a,n*e[4]+i*e[5]+s]},C=(e,t)=>{let[n,r]=y(e,t);l={x:n,y:r,segs:[],closed:!1},c.push(l),f=[e,t]},w=(e,t)=>{l||C(e,t)},T=(e,t,n)=>{if(!l){C(e,t);return}let[r,i]=y(e,t);l.segs.push(n?{t:`L`,x:r,y:i,q:n}:{t:`L`,x:r,y:i}),f=[e,t]},E=(e,t,n,r,i,a=!1)=>{let o=_(r,i,a),s=e+n*Math.cos(r),c=t+n*Math.sin(r),u=e+n*Math.cos(r+o),d=t+n*Math.sin(r+o);if(l||C(s,c),n<=0||o===0){T(s,c);return}let[p,m]=y(e,t),h=x();l?.segs.push({t:`A`,cx:p,cy:m,r:n*b(),a0:r+h,a1:r+o+h}),f=[u,d]},D=(e,t,n)=>{for(let r=1;r<=t;r++){let[i,a]=e(r/t);T(i,a,n)}},O=e=>Math.max(2,Math.min(32,Math.ceil(e*b()/6))),k=e=>{let n=c.filter(e=>e.segs.length||e.closed);if(!n.length)return;let r=n.map(e=>({...e,segs:[...e.segs]}));if(e===`fill`){let e=o.shadowBlur>0&&a(o.shadowColor).a>0&&!a(o.shadowColor).raw;t.push({kind:`fill`,paths:r,paint:o.fill,alpha:o.alpha,shadow:e})}else t.push({kind:`stroke`,paths:r,paint:o.stroke,alpha:o.alpha,width:o.lineWidth*b(),cap:o.cap,join:o.join,dash:o.dash.map(e=>e*b())})},A=(e,t,n,r)=>{let[i,a]=y(t,n),{size:s,weight:c}=u(o.font),l=b();return{kind:`text`,text:String(e),x:i,y:a,size:s*l,weight:c,align:o.align,baseline:o.baseline,color:o.fill.color,alpha:o.alpha,rotate:x(),maxWidth:r!==void 0&&Number.isFinite(r)?r*l:void 0}},j={canvas:null,get globalAlpha(){return o.alpha},set globalAlpha(e){Number.isFinite(e)&&(o.alpha=r(e))},get fillStyle(){return o.fill.gradient?null:m(o.fill)},set fillStyle(e){o.fill=p(e)},get strokeStyle(){return o.stroke.gradient?null:m(o.stroke)},set strokeStyle(e){o.stroke=p(e)},get lineWidth(){return o.lineWidth},set lineWidth(e){Number.isFinite(e)&&e>0&&(o.lineWidth=e)},get lineCap(){return o.cap},set lineCap(e){o.cap=e===`round`?`round`:e===`square`?`square`:`butt`},get lineJoin(){return o.join},set lineJoin(e){o.join=e===`round`?`round`:e===`bevel`?`bevel`:`miter`},get font(){return o.font},set font(e){o.font=e},get textAlign(){return o.align},set textAlign(e){o.align=h(e)},get textBaseline(){return o.baseline},set textBaseline(e){o.baseline=g(e)},get shadowColor(){return o.shadowColor},set shadowColor(e){o.shadowColor=e},get shadowBlur(){return o.shadowBlur},set shadowBlur(e){o.shadowBlur=e},get shadowOffsetX(){return o.shadowOffsetX},set shadowOffsetX(e){o.shadowOffsetX=e},get shadowOffsetY(){return o.shadowOffsetY},set shadowOffsetY(e){o.shadowOffsetY=e},lineDashOffset:0,miterLimit:10,globalCompositeOperation:`source-over`,imageSmoothingEnabled:!0,direction:`inherit`,save(){s.push({...o,dash:[...o.dash]})},restore(){let e=s.pop();e&&(o=e)},setTransform(e,t=0,n=0,r=1,i=0,a=0){o.m=typeof e==`object`?[e.a,e.b,e.c,e.d,e.e,e.f]:[e,t,n,r,i,a]},resetTransform(){o.m=[1,0,0,1,0,0]},transform(e,t,n,r,i,a){S([e,t,n,r,i,a])},translate(e,t){S([1,0,0,1,e,t])},scale(e,t){S([e,0,0,t,0,0])},rotate(e){let t=Math.cos(e),n=Math.sin(e);S([t,n,-n,t,0,0])},beginPath(){c=[],l=null,f=null},closePath(){if(!l)return;l.closed=!0;let e=l;l={x:e.x,y:e.y,segs:[],closed:!1},c.push(l)},moveTo:C,lineTo:T,arc:E,ellipse(e,t,n,r,i,a,o,s=!1){if(Math.abs(n-r)<1e-6&&i===0){E(e,t,n,a,o,s);return}let c=_(a,o,s),u=Math.cos(i),d=Math.sin(i),f=i=>{let o=a+c*i,s=n*Math.cos(o),l=r*Math.sin(o);return[e+s*u-l*d,t+s*d+l*u]},[p,m]=f(0);l?T(p,m):C(p,m),D(f,O(Math.abs(c)*Math.max(n,r)))},arcTo(e,t,n,r,i){w(e,t);let[a,o]=f??[e,t],s=a-e,c=o-t,l=n-e,u=r-t,d=Math.hypot(s,c),p=Math.hypot(l,u),m=s*u-c*l;if(i<=0||d<1e-9||p<1e-9||Math.abs(m)<1e-9){T(e,t);return}let h=(s*l+c*u)/(d*p),g=Math.acos(Math.max(-1,Math.min(1,h)))/2,_=i/Math.tan(g),v=e+s/d*_,y=t+c/d*_,b=e+l/p*_,x=t+u/p*_,S=s/d+l/p,C=c/d+u/p,D=Math.hypot(S,C),O=i/Math.sin(g),k=e+S/D*O,A=t+C/D*O;T(v,y);let j=Math.atan2(y-A,v-k),M=Math.atan2(x-A,b-k);E(k,A,i,j,M,m>0)},quadraticCurveTo(e,t,n,r){w(e,t);let[i,a]=f??[e,t];D(o=>{let s=1-o;return[s*s*i+2*s*o*e+o*o*n,s*s*a+2*s*o*t+o*o*r]},O(Math.hypot(e-i,t-a)+Math.hypot(n-e,r-t)),{from:y(i,a),ctrl:y(e,t),to:y(n,r)})},bezierCurveTo(e,t,n,r,i,a){w(e,t);let[o,s]=f??[e,t];D(c=>{let l=1-c,u=l*l*l,d=3*l*l*c,f=3*l*c*c,p=c*c*c;return[u*o+d*e+f*n+p*i,u*s+d*t+f*r+p*a]},O(Math.hypot(e-o,t-s)+Math.hypot(n-e,r-t)+Math.hypot(i-n,a-r)))},rect(e,t,n,r){C(e,t),T(e+n,t),T(e+n,t+r),T(e,t+r),j.closePath()},roundRect(e,t,n,r,i){let a=Math.max(0,Math.min(typeof i==`number`?i:Array.isArray(i)&&typeof i[0]==`number`?i[0]:0,Math.abs(n)/2,Math.abs(r)/2));if(a<=0){j.rect(e,t,n,r);return}C(e+a,t),j.arcTo(e+n,t,e+n,t+r,a),j.arcTo(e+n,t+r,e,t+r,a),j.arcTo(e,t+r,e,t,a),j.arcTo(e,t,e+n,t,a),j.closePath()},fill(){k(`fill`)},stroke(){k(`stroke`)},clip(){},fillRect(e,t,n,r){let i={paths:c,current:l,pen:f};c=[],j.rect(e,t,n,r),k(`fill`),{paths:c,current:l,pen:f}=i},strokeRect(e,t,n,r){let i={paths:c,current:l,pen:f};c=[],j.rect(e,t,n,r),k(`stroke`),{paths:c,current:l,pen:f}=i},clearRect(e,n,r,i){let[a,o]=y(e,n),[s,c]=y(e+r,n+i);a<=1&&o<=1&&s-a>1&&c-o>1&&(t=[],v=null)},fillText(e,n,r,i){let a=A(e,n,r,i),o=v;if(v=null,o&&o.text===a.text&&o.x===a.x&&o.y===a.y){let e=t.indexOf(o);e>=0&&t.splice(e,1),a.halo=o.color}t.push(a)},strokeText(e,n,r,i){let a={...A(e,n,r,i),color:o.stroke.color};v=a,t.push(a)},measureText(t){let n=e.measureChartText(String(t),o.font),{size:r}=u(o.font);return{width:n,actualBoundingBoxAscent:r*.8,actualBoundingBoxDescent:r*.2,actualBoundingBoxLeft:0,actualBoundingBoxRight:n,fontBoundingBoxAscent:r*.9,fontBoundingBoxDescent:r*.25}},setLineDash(e){o.dash=Array.isArray(e)?e.filter(e=>Number.isFinite(e)&&e>=0):[]},getLineDash(){return[...o.dash]},createLinearGradient(e,t,n,i){let[o,s]=y(e,t),[c,l]=y(n,i),u={x0:o,y0:s,x1:c,y1:l,stops:[]};return{[d]:u,addColorStop(e,t){u.stops.push({offset:r(e),color:a(t)}),u.stops.sort((e,t)=>e.offset-t.offset)}}},createRadialGradient(e,t){return j.createLinearGradient(e,t,e+1,t)},createConicGradient(e,t,n){return j.createLinearGradient(t,n,t+1,n)},createPattern(){return null},drawImage(){},isPointInPath(){return!1},isPointInStroke(){return!1},getTransform(){let[e,t,n,r,i,a]=o.m;return{a:e,b:t,c:n,d:r,e:i,f:a}},reset(){o=i(),s.length=0,c=[],l=null,f=null,t=[]}};return{context:j,ops:()=>t}}exports.arcSweep=_,exports.createRecorder=v,exports.cssWithAlpha=s,exports.opaqueCss=o,exports.paintAt=c,exports.parseColor=a,exports.parseFont=u;
|
|
2
|
+
//# sourceMappingURL=recorder.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder.cjs","names":["measureChartText","require_measure","TAU","BLACK","clamp01","v","NAMED","parseColor","value","s","named","fn","parts","p","r","g","b","alphaText","hex","short","at","i","opaqueCss","c","cssWithAlpha","alpha","paintAt","paint","dx","dy","len2","t","x","y","stops","a","span","k","mix","u","FONT","parseFont","match","font","w","weight","GRADIENT","isGradient","toPaint","gradient","fromPaint","normalizeTextAlign","normalizeBaseline","arcSweep","ccw","end","start","createRecorder","frame","initial","state","stack","paths","current","pen","pendingHalo","map","d","e","f","scaleOf","rotationOf","multiply","n","moveTo","px","py","ensure","lineTo","q","arc","sweep","sx","sy","ex","ey","cx","cy","rot","curve","steps","point","curveSteps","length","list","copy","kind","shadow","text","size","maxWidth","context","previous","cos","angle","sin","rx","ry","rotation","x1","y1","x0","y0","ax","ay","bx","x2","by","y2","la","lb","cross","half","dist","t0x","t0y","t1x","t1y","ux","uy","lu","cd","a0","a1","cpx","cpy","c1x","c1y","c2x","c2y","h","radii","saved","op","halo","width","segments","offset","color"],"sources":["../../../../../native/src/components/ShapeChart/recorder.ts"],"sourcesContent":["// A Canvas2D context that records instead of painting. The shape chart\n// engine (@minerva/charts/canvas: layouts, animations, legend, tooltip,\n// hover dimming, events) draws its frames on it; ./geometry turns the\n// recorded fills, strokes and texts into views. Paths are stored in chart\n// pixels (the current transform applied); arcs stay arcs so that circles,\n// rings and sectors become exact rounded views.\n\nimport { measureChartText } from \"../Chart/measure\";\n\n/** A color: channels 0-255, alpha 0-1 (`raw`: a CSS color that could not be parsed) */\nexport interface Color {\n r: number;\n g: number;\n b: number;\n a: number;\n raw?: string;\n}\n\n/** A linear gradient in chart pixels */\nexport interface Gradient {\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n stops: { offset: number; color: Color }[];\n}\n\n/** Fill or stroke style: a color, or a gradient (and its first color) */\nexport interface Paint {\n color: Color;\n gradient?: Gradient;\n}\n\n/** Straight segment to (x, y), or arc (implicitly joined by a segment to its start) */\n/** A quadratic curve (device coordinates) */\nexport interface Quad {\n from: [number, number];\n ctrl: [number, number];\n to: [number, number];\n}\n\nexport type Segment =\n /** `q`: the curve this segment flattens, if any */\n | { t: \"L\"; x: number; y: number; q?: Quad }\n | {\n t: \"A\";\n cx: number;\n cy: number;\n r: number;\n /** Start angle and end angle (`a1 - a0` is the signed sweep) */\n a0: number;\n a1: number;\n };\n\nexport interface Subpath {\n x: number;\n y: number;\n segs: Segment[];\n closed: boolean;\n}\n\nexport interface FillOp {\n kind: \"fill\";\n paths: Subpath[];\n paint: Paint;\n alpha: number;\n /** Drawn with a shadow */\n shadow: boolean;\n}\n\nexport interface StrokeOp {\n kind: \"stroke\";\n paths: Subpath[];\n paint: Paint;\n alpha: number;\n width: number;\n cap: \"butt\" | \"round\" | \"square\";\n join: \"round\" | \"bevel\" | \"miter\";\n dash: number[];\n}\n\nexport interface TextOp {\n kind: \"text\";\n text: string;\n x: number;\n y: number;\n size: number;\n weight: number;\n align: \"left\" | \"center\" | \"right\";\n baseline: \"top\" | \"middle\" | \"bottom\" | \"alphabetic\";\n color: Color;\n alpha: number;\n /** Rotation around (x, y), radians clockwise */\n rotate: number;\n maxWidth?: number;\n /** Outline color (`strokeText` under the same text) */\n halo?: Color;\n}\n\nexport type DrawOp = FillOp | StrokeOp | TextOp;\n\nconst TAU = Math.PI * 2;\nconst BLACK: Color = { r: 0, g: 0, b: 0, a: 1 };\n\nconst clamp01 = (v: number) => (v < 0 ? 0 : v > 1 ? 1 : v);\n\nconst NAMED: Record<string, Color> = {\n transparent: { r: 0, g: 0, b: 0, a: 0 },\n black: BLACK,\n white: { r: 255, g: 255, b: 255, a: 1 },\n};\n\n/** Parses the colors the engine produces: `rgba()`, `rgb()`, `#hex` */\nexport function parseColor(value: unknown): Color {\n if (typeof value !== \"string\") return BLACK;\n const s = value.trim().toLowerCase();\n const named = NAMED[s];\n if (named) return named;\n const fn = /^rgba?\\(([^)]*)\\)$/.exec(s);\n if (fn) {\n const parts = (fn[1] ?? \"\")\n .split(/[\\s,/]+/)\n .filter(Boolean)\n .map((p) => (p.endsWith(\"%\") ? (parseFloat(p) / 100) * 255 : +p));\n const [r = 0, g = 0, b = 0] = parts;\n let a = parts[3] ?? 1;\n const alphaText = (fn[1] ?? \"\").split(/[\\s,/]+/).filter(Boolean)[3];\n if (alphaText?.endsWith(\"%\")) a = parseFloat(alphaText) / 100;\n if ([r, g, b, a].every(Number.isFinite)) return { r, g, b, a: clamp01(a) };\n }\n const hex = /^#([0-9a-f]{3,8})$/.exec(s)?.[1];\n if (hex && hex.length !== 5 && hex.length !== 7) {\n const short = hex.length <= 4;\n const at = (i: number) =>\n short\n ? parseInt((hex[i] ?? \"f\") + (hex[i] ?? \"f\"), 16)\n : parseInt(hex.slice(i * 2, i * 2 + 2) || \"ff\", 16);\n const n = short ? hex.length : hex.length / 2;\n return { r: at(0), g: at(1), b: at(2), a: n === 4 ? at(3) / 255 : 1 };\n }\n return { r: 0, g: 0, b: 0, a: 1, raw: value };\n}\n\n/** Opaque CSS color (the alpha goes to an `opacity`) */\nexport const opaqueCss = (c: Color) =>\n c.raw ?? `rgb(${Math.round(c.r)}, ${Math.round(c.g)}, ${Math.round(c.b)})`;\n\n/** CSS color with an extra alpha */\nexport const cssWithAlpha = (c: Color, alpha: number) =>\n c.raw ??\n `rgba(${Math.round(c.r)}, ${Math.round(c.g)}, ${Math.round(c.b)}, ${+clamp01(c.a * alpha).toFixed(3)})`;\n\n/** Color of a paint at a point (gradients: projected on their axis) */\nexport function paintAt(paint: Paint, x: number, y: number): Color {\n const g = paint.gradient;\n if (!g || g.stops.length < 2) return paint.color;\n const dx = g.x1 - g.x0;\n const dy = g.y1 - g.y0;\n const len2 = dx * dx + dy * dy;\n const t = len2 > 0 ? clamp01(((x - g.x0) * dx + (y - g.y0) * dy) / len2) : 0;\n const stops = g.stops;\n let i = 0;\n while (i < stops.length - 2 && (stops[i + 1]?.offset ?? 1) < t) i++;\n const a = stops[i];\n const b = stops[i + 1];\n if (!a || !b) return paint.color;\n const span = b.offset - a.offset;\n const k = span > 0 ? clamp01((t - a.offset) / span) : 0;\n const mix = (u: number, v: number) => u + (v - u) * k;\n if (a.color.raw || b.color.raw) return k < 0.5 ? a.color : b.color;\n return {\n r: mix(a.color.r, b.color.r),\n g: mix(a.color.g, b.color.g),\n b: mix(a.color.b, b.color.b),\n a: mix(a.color.a, b.color.a),\n };\n}\n\ntype Matrix = [number, number, number, number, number, number];\n\ninterface State {\n m: Matrix;\n alpha: number;\n fill: Paint;\n stroke: Paint;\n lineWidth: number;\n cap: StrokeOp[\"cap\"];\n join: StrokeOp[\"join\"];\n font: string;\n align: TextOp[\"align\"];\n baseline: TextOp[\"baseline\"];\n dash: number[];\n shadowColor: string;\n shadowBlur: number;\n shadowOffsetX: number;\n shadowOffsetY: number;\n}\n\nconst FONT =\n /^\\s*(?:(?:italic|oblique|normal)\\s+)?(?:(\\d{3}|bold|normal)\\s+)?([\\d.]+)px/;\n\n/** Size (px) and weight of a CSS font */\nexport function parseFont(font: string): { size: number; weight: number } {\n const match = FONT.exec(font);\n const w = match?.[1];\n const weight = w === \"bold\" ? 700 : w && w !== \"normal\" ? +w : 400;\n return { size: match ? Number(match[2]) : 10, weight };\n}\n\nconst GRADIENT = Symbol(\"gradient\");\n\ninterface RecordedGradient {\n [GRADIENT]: Gradient;\n addColorStop(offset: number, color: string): void;\n}\n\nconst isGradient = (v: unknown): v is RecordedGradient =>\n typeof v === \"object\" && v !== null && GRADIENT in v;\n\nconst toPaint = (value: unknown): Paint => {\n if (isGradient(value)) {\n const gradient = value[GRADIENT];\n return { color: gradient.stops[0]?.color ?? BLACK, gradient };\n }\n return { color: parseColor(value) };\n};\n\nconst fromPaint = (paint: Paint): unknown =>\n paint.color.raw ??\n `rgba(${paint.color.r}, ${paint.color.g}, ${paint.color.b}, ${paint.color.a})`;\n\nconst normalizeTextAlign = (v: string): TextOp[\"align\"] =>\n v === \"center\" ? \"center\" : v === \"right\" || v === \"end\" ? \"right\" : \"left\";\n\nconst normalizeBaseline = (v: string): TextOp[\"baseline\"] =>\n v === \"top\" || v === \"hanging\"\n ? \"top\"\n : v === \"middle\"\n ? \"middle\"\n : v === \"bottom\" || v === \"ideographic\"\n ? \"bottom\"\n : \"alphabetic\";\n\n/** Signed sweep of a canvas `arc()` */\nexport function arcSweep(start: number, end: number, ccw: boolean): number {\n if (!ccw) {\n if (end - start >= TAU) return TAU;\n let s = (end - start) % TAU;\n if (s < 0) s += TAU;\n return s;\n }\n if (start - end >= TAU) return -TAU;\n let s = (start - end) % TAU;\n if (s < 0) s += TAU;\n return -s;\n}\n\nexport interface Recorder {\n /** The 2D context handed to the engine */\n readonly context: unknown;\n /** Operations of the last frame (a new array per frame) */\n ops(): DrawOp[];\n}\n\n/**\n * Records the drawing calls of a Canvas2D context. `clearRect` of the whole\n * canvas starts a new frame.\n */\nexport function createRecorder(): Recorder {\n let frame: DrawOp[] = [];\n const initial = (): State => ({\n m: [1, 0, 0, 1, 0, 0],\n alpha: 1,\n fill: { color: BLACK },\n stroke: { color: BLACK },\n lineWidth: 1,\n cap: \"butt\",\n join: \"miter\",\n font: \"10px sans-serif\",\n align: \"left\",\n baseline: \"alphabetic\",\n dash: [],\n shadowColor: \"rgba(0, 0, 0, 0)\",\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n });\n let state = initial();\n const stack: State[] = [];\n let paths: Subpath[] = [];\n let current: Subpath | null = null;\n let pen: [number, number] | null = null;\n let pendingHalo: TextOp | null = null;\n\n const map = (x: number, y: number): [number, number] => {\n const [a, b, c, d, e, f] = state.m;\n return [a * x + c * y + e, b * x + d * y + f];\n };\n /** Uniform scale and rotation of the transform */\n const scaleOf = () => {\n const [a, b, c, d] = state.m;\n return Math.sqrt(Math.abs(a * d - b * c)) || 0;\n };\n const rotationOf = () => Math.atan2(state.m[1], state.m[0]);\n const multiply = (n: Matrix) => {\n const [a, b, c, d, e, f] = state.m;\n state.m = [\n a * n[0] + c * n[1],\n b * n[0] + d * n[1],\n a * n[2] + c * n[3],\n b * n[2] + d * n[3],\n a * n[4] + c * n[5] + e,\n b * n[4] + d * n[5] + f,\n ];\n };\n\n const moveTo = (x: number, y: number) => {\n const [px, py] = map(x, y);\n current = { x: px, y: py, segs: [], closed: false };\n paths.push(current);\n pen = [x, y];\n };\n const ensure = (x: number, y: number) => {\n if (!current) moveTo(x, y);\n };\n const lineTo = (x: number, y: number, q?: Quad) => {\n if (!current) {\n moveTo(x, y);\n return;\n }\n const [px, py] = map(x, y);\n current.segs.push(\n q ? { t: \"L\", x: px, y: py, q } : { t: \"L\", x: px, y: py },\n );\n pen = [x, y];\n };\n const arc = (\n x: number,\n y: number,\n r: number,\n start: number,\n end: number,\n ccw = false,\n ) => {\n const sweep = arcSweep(start, end, ccw);\n const sx = x + r * Math.cos(start);\n const sy = y + r * Math.sin(start);\n const ex = x + r * Math.cos(start + sweep);\n const ey = y + r * Math.sin(start + sweep);\n if (!current) moveTo(sx, sy);\n if (r <= 0 || sweep === 0) {\n lineTo(sx, sy);\n return;\n }\n const [cx, cy] = map(x, y);\n const rot = rotationOf();\n current?.segs.push({\n t: \"A\",\n cx,\n cy,\n r: r * scaleOf(),\n a0: start + rot,\n a1: start + sweep + rot,\n });\n pen = [ex, ey];\n };\n const curve = (\n point: (t: number) => [number, number],\n steps: number,\n q?: Quad,\n ) => {\n for (let i = 1; i <= steps; i++) {\n const [x, y] = point(i / steps);\n lineTo(x, y, q);\n }\n };\n /** Segments of a flattened curve: ~6px each, 2 for the small corner roundings */\n const curveSteps = (length: number) =>\n Math.max(2, Math.min(32, Math.ceil((length * scaleOf()) / 6)));\n\n const paint = (kind: \"fill\" | \"stroke\") => {\n const list = paths.filter((p) => p.segs.length || p.closed);\n if (!list.length) return;\n // a copy: the engine may keep drawing on the same path\n const copy = list.map((p) => ({ ...p, segs: [...p.segs] }));\n if (kind === \"fill\") {\n const shadow =\n state.shadowBlur > 0 &&\n parseColor(state.shadowColor).a > 0 &&\n !parseColor(state.shadowColor).raw;\n frame.push({\n kind: \"fill\",\n paths: copy,\n paint: state.fill,\n alpha: state.alpha,\n shadow,\n });\n } else {\n frame.push({\n kind: \"stroke\",\n paths: copy,\n paint: state.stroke,\n alpha: state.alpha,\n width: state.lineWidth * scaleOf(),\n cap: state.cap,\n join: state.join,\n dash: state.dash.map((v) => v * scaleOf()),\n });\n }\n };\n\n const text = (value: string, x: number, y: number, maxWidth?: number) => {\n const [px, py] = map(x, y);\n const { size, weight } = parseFont(state.font);\n const s = scaleOf();\n return {\n kind: \"text\" as const,\n text: String(value),\n x: px,\n y: py,\n size: size * s,\n weight,\n align: state.align,\n baseline: state.baseline,\n color: state.fill.color,\n alpha: state.alpha,\n rotate: rotationOf(),\n maxWidth:\n maxWidth !== undefined && Number.isFinite(maxWidth)\n ? maxWidth * s\n : undefined,\n };\n };\n\n const context = {\n canvas: null,\n get globalAlpha() {\n return state.alpha;\n },\n set globalAlpha(v: number) {\n if (Number.isFinite(v)) state.alpha = clamp01(v);\n },\n get fillStyle(): unknown {\n return state.fill.gradient ? null : fromPaint(state.fill);\n },\n set fillStyle(v: unknown) {\n state.fill = toPaint(v);\n },\n get strokeStyle(): unknown {\n return state.stroke.gradient ? null : fromPaint(state.stroke);\n },\n set strokeStyle(v: unknown) {\n state.stroke = toPaint(v);\n },\n get lineWidth() {\n return state.lineWidth;\n },\n set lineWidth(v: number) {\n if (Number.isFinite(v) && v > 0) state.lineWidth = v;\n },\n get lineCap() {\n return state.cap;\n },\n set lineCap(v: string) {\n state.cap = v === \"round\" ? \"round\" : v === \"square\" ? \"square\" : \"butt\";\n },\n get lineJoin() {\n return state.join;\n },\n set lineJoin(v: string) {\n state.join = v === \"round\" ? \"round\" : v === \"bevel\" ? \"bevel\" : \"miter\";\n },\n get font() {\n return state.font;\n },\n set font(v: string) {\n state.font = v;\n },\n get textAlign() {\n return state.align;\n },\n set textAlign(v: string) {\n state.align = normalizeTextAlign(v);\n },\n get textBaseline() {\n return state.baseline;\n },\n set textBaseline(v: string) {\n state.baseline = normalizeBaseline(v);\n },\n get shadowColor() {\n return state.shadowColor;\n },\n set shadowColor(v: string) {\n state.shadowColor = v;\n },\n get shadowBlur() {\n return state.shadowBlur;\n },\n set shadowBlur(v: number) {\n state.shadowBlur = v;\n },\n get shadowOffsetX() {\n return state.shadowOffsetX;\n },\n set shadowOffsetX(v: number) {\n state.shadowOffsetX = v;\n },\n get shadowOffsetY() {\n return state.shadowOffsetY;\n },\n set shadowOffsetY(v: number) {\n state.shadowOffsetY = v;\n },\n lineDashOffset: 0,\n miterLimit: 10,\n globalCompositeOperation: \"source-over\",\n imageSmoothingEnabled: true,\n direction: \"inherit\",\n save() {\n stack.push({ ...state, dash: [...state.dash] });\n },\n restore() {\n const previous = stack.pop();\n if (previous) state = previous;\n },\n setTransform(\n a:\n | number\n | { a: number; b: number; c: number; d: number; e: number; f: number },\n b = 0,\n c = 0,\n d = 1,\n e = 0,\n f = 0,\n ) {\n state.m =\n typeof a === \"object\"\n ? [a.a, a.b, a.c, a.d, a.e, a.f]\n : [a, b, c, d, e, f];\n },\n resetTransform() {\n state.m = [1, 0, 0, 1, 0, 0];\n },\n transform(\n a: number,\n b: number,\n c: number,\n d: number,\n e: number,\n f: number,\n ) {\n multiply([a, b, c, d, e, f]);\n },\n translate(x: number, y: number) {\n multiply([1, 0, 0, 1, x, y]);\n },\n scale(x: number, y: number) {\n multiply([x, 0, 0, y, 0, 0]);\n },\n rotate(angle: number) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n multiply([cos, sin, -sin, cos, 0, 0]);\n },\n beginPath() {\n paths = [];\n current = null;\n pen = null;\n },\n closePath() {\n if (!current) return;\n current.closed = true;\n const start = current;\n // drawing goes on from the start of the closed subpath\n current = { x: start.x, y: start.y, segs: [], closed: false };\n paths.push(current);\n },\n moveTo,\n lineTo,\n arc,\n ellipse(\n x: number,\n y: number,\n rx: number,\n ry: number,\n rotation: number,\n start: number,\n end: number,\n ccw = false,\n ) {\n if (Math.abs(rx - ry) < 1e-6 && rotation === 0) {\n arc(x, y, rx, start, end, ccw);\n return;\n }\n const sweep = arcSweep(start, end, ccw);\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const at = (t: number): [number, number] => {\n const a = start + sweep * t;\n const ex = rx * Math.cos(a);\n const ey = ry * Math.sin(a);\n return [x + ex * cos - ey * sin, y + ex * sin + ey * cos];\n };\n const [sx, sy] = at(0);\n if (!current) moveTo(sx, sy);\n else lineTo(sx, sy);\n curve(at, curveSteps(Math.abs(sweep) * Math.max(rx, ry)));\n },\n arcTo(x1: number, y1: number, x2: number, y2: number, r: number) {\n ensure(x1, y1);\n const [x0, y0] = pen ?? [x1, y1];\n const ax = x0 - x1;\n const ay = y0 - y1;\n const bx = x2 - x1;\n const by = y2 - y1;\n const la = Math.hypot(ax, ay);\n const lb = Math.hypot(bx, by);\n const cross = ax * by - ay * bx;\n if (r <= 0 || la < 1e-9 || lb < 1e-9 || Math.abs(cross) < 1e-9) {\n lineTo(x1, y1);\n return;\n }\n const cos = (ax * bx + ay * by) / (la * lb);\n const half = Math.acos(Math.max(-1, Math.min(1, cos))) / 2;\n const dist = r / Math.tan(half);\n const t0x = x1 + (ax / la) * dist;\n const t0y = y1 + (ay / la) * dist;\n const t1x = x1 + (bx / lb) * dist;\n const t1y = y1 + (by / lb) * dist;\n // center: along the bisector, at r / sin(half)\n const ux = ax / la + bx / lb;\n const uy = ay / la + by / lb;\n const lu = Math.hypot(ux, uy);\n const cd = r / Math.sin(half);\n const cx = x1 + (ux / lu) * cd;\n const cy = y1 + (uy / lu) * cd;\n lineTo(t0x, t0y);\n const a0 = Math.atan2(t0y - cy, t0x - cx);\n const a1 = Math.atan2(t1y - cy, t1x - cx);\n arc(cx, cy, r, a0, a1, cross > 0);\n },\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n ensure(cpx, cpy);\n const [x0, y0] = pen ?? [cpx, cpy];\n curve(\n (t) => {\n const u = 1 - t;\n return [\n u * u * x0 + 2 * u * t * cpx + t * t * x,\n u * u * y0 + 2 * u * t * cpy + t * t * y,\n ];\n },\n curveSteps(\n Math.hypot(cpx - x0, cpy - y0) + Math.hypot(x - cpx, y - cpy),\n ),\n { from: map(x0, y0), ctrl: map(cpx, cpy), to: map(x, y) },\n );\n },\n bezierCurveTo(\n c1x: number,\n c1y: number,\n c2x: number,\n c2y: number,\n x: number,\n y: number,\n ) {\n ensure(c1x, c1y);\n const [x0, y0] = pen ?? [c1x, c1y];\n curve(\n (t) => {\n const u = 1 - t;\n const a = u * u * u;\n const b = 3 * u * u * t;\n const c = 3 * u * t * t;\n const d = t * t * t;\n return [\n a * x0 + b * c1x + c * c2x + d * x,\n a * y0 + b * c1y + c * c2y + d * y,\n ];\n },\n curveSteps(\n Math.hypot(c1x - x0, c1y - y0) +\n Math.hypot(c2x - c1x, c2y - c1y) +\n Math.hypot(x - c2x, y - c2y),\n ),\n );\n },\n rect(x: number, y: number, w: number, h: number) {\n moveTo(x, y);\n lineTo(x + w, y);\n lineTo(x + w, y + h);\n lineTo(x, y + h);\n context.closePath();\n },\n roundRect(x: number, y: number, w: number, h: number, radii?: unknown) {\n const r = Math.max(\n 0,\n Math.min(\n typeof radii === \"number\"\n ? radii\n : Array.isArray(radii) && typeof radii[0] === \"number\"\n ? radii[0]\n : 0,\n Math.abs(w) / 2,\n Math.abs(h) / 2,\n ),\n );\n if (r <= 0) {\n context.rect(x, y, w, h);\n return;\n }\n moveTo(x + r, y);\n context.arcTo(x + w, y, x + w, y + h, r);\n context.arcTo(x + w, y + h, x, y + h, r);\n context.arcTo(x, y + h, x, y, r);\n context.arcTo(x, y, x + w, y, r);\n context.closePath();\n },\n fill() {\n paint(\"fill\");\n },\n stroke() {\n paint(\"stroke\");\n },\n clip() {\n // views are not clipped by paths (the engine only clips decorations)\n },\n fillRect(x: number, y: number, w: number, h: number) {\n const saved = { paths, current, pen };\n paths = [];\n context.rect(x, y, w, h);\n paint(\"fill\");\n ({ paths, current, pen } = saved);\n },\n strokeRect(x: number, y: number, w: number, h: number) {\n const saved = { paths, current, pen };\n paths = [];\n context.rect(x, y, w, h);\n paint(\"stroke\");\n ({ paths, current, pen } = saved);\n },\n clearRect(x: number, y: number, w: number, h: number) {\n const [x0, y0] = map(x, y);\n const [x1, y1] = map(x + w, y + h);\n // clearing (most of) the canvas starts a frame\n if (x0 <= 1 && y0 <= 1 && x1 - x0 > 1 && y1 - y0 > 1) {\n frame = [];\n pendingHalo = null;\n }\n },\n fillText(value: string, x: number, y: number, maxWidth?: number) {\n const op: TextOp = text(value, x, y, maxWidth);\n const halo = pendingHalo;\n pendingHalo = null;\n if (halo && halo.text === op.text && halo.x === op.x && halo.y === op.y) {\n const at = frame.indexOf(halo);\n if (at >= 0) frame.splice(at, 1);\n op.halo = halo.color;\n }\n frame.push(op);\n },\n strokeText(value: string, x: number, y: number, maxWidth?: number) {\n const op: TextOp = {\n ...text(value, x, y, maxWidth),\n color: state.stroke.color,\n };\n pendingHalo = op;\n frame.push(op);\n },\n measureText(value: string) {\n const width = measureChartText(String(value), state.font);\n const { size } = parseFont(state.font);\n return {\n width,\n actualBoundingBoxAscent: size * 0.8,\n actualBoundingBoxDescent: size * 0.2,\n actualBoundingBoxLeft: 0,\n actualBoundingBoxRight: width,\n fontBoundingBoxAscent: size * 0.9,\n fontBoundingBoxDescent: size * 0.25,\n };\n },\n setLineDash(segments: number[]) {\n state.dash = Array.isArray(segments)\n ? segments.filter((v) => Number.isFinite(v) && v >= 0)\n : [];\n },\n getLineDash() {\n return [...state.dash];\n },\n createLinearGradient(x0: number, y0: number, x1: number, y1: number) {\n const [ax, ay] = map(x0, y0);\n const [bx, by] = map(x1, y1);\n const gradient: Gradient = { x0: ax, y0: ay, x1: bx, y1: by, stops: [] };\n const recorded: RecordedGradient = {\n [GRADIENT]: gradient,\n addColorStop(offset: number, color: string) {\n gradient.stops.push({\n offset: clamp01(offset),\n color: parseColor(color),\n });\n gradient.stops.sort((p, q) => p.offset - q.offset);\n },\n };\n return recorded;\n },\n createRadialGradient(x0: number, y0: number) {\n // approximated by its colors along x\n return context.createLinearGradient(x0, y0, x0 + 1, y0);\n },\n createConicGradient(_angle: number, x: number, y: number) {\n return context.createLinearGradient(x, y, x + 1, y);\n },\n createPattern() {\n return null;\n },\n drawImage() {\n // not supported by views\n },\n isPointInPath() {\n return false;\n },\n isPointInStroke() {\n return false;\n },\n getTransform() {\n const [a, b, c, d, e, f] = state.m;\n return { a, b, c, d, e, f };\n },\n reset() {\n state = initial();\n stack.length = 0;\n paths = [];\n current = null;\n pen = null;\n frame = [];\n },\n };\n\n return {\n context,\n ops: () => frame,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/** A color: channels 0-255, alpha 0-1 (`raw`: a CSS color that could not be parsed) */
|
|
2
|
+
export interface Color {
|
|
3
|
+
r: number;
|
|
4
|
+
g: number;
|
|
5
|
+
b: number;
|
|
6
|
+
a: number;
|
|
7
|
+
raw?: string;
|
|
8
|
+
}
|
|
9
|
+
/** A linear gradient in chart pixels */
|
|
10
|
+
export interface Gradient {
|
|
11
|
+
x0: number;
|
|
12
|
+
y0: number;
|
|
13
|
+
x1: number;
|
|
14
|
+
y1: number;
|
|
15
|
+
stops: {
|
|
16
|
+
offset: number;
|
|
17
|
+
color: Color;
|
|
18
|
+
}[];
|
|
19
|
+
}
|
|
20
|
+
/** Fill or stroke style: a color, or a gradient (and its first color) */
|
|
21
|
+
export interface Paint {
|
|
22
|
+
color: Color;
|
|
23
|
+
gradient?: Gradient;
|
|
24
|
+
}
|
|
25
|
+
/** Straight segment to (x, y), or arc (implicitly joined by a segment to its start) */
|
|
26
|
+
/** A quadratic curve (device coordinates) */
|
|
27
|
+
export interface Quad {
|
|
28
|
+
from: [number, number];
|
|
29
|
+
ctrl: [number, number];
|
|
30
|
+
to: [number, number];
|
|
31
|
+
}
|
|
32
|
+
export type Segment =
|
|
33
|
+
/** `q`: the curve this segment flattens, if any */
|
|
34
|
+
{
|
|
35
|
+
t: "L";
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
q?: Quad;
|
|
39
|
+
} | {
|
|
40
|
+
t: "A";
|
|
41
|
+
cx: number;
|
|
42
|
+
cy: number;
|
|
43
|
+
r: number;
|
|
44
|
+
/** Start angle and end angle (`a1 - a0` is the signed sweep) */
|
|
45
|
+
a0: number;
|
|
46
|
+
a1: number;
|
|
47
|
+
};
|
|
48
|
+
export interface Subpath {
|
|
49
|
+
x: number;
|
|
50
|
+
y: number;
|
|
51
|
+
segs: Segment[];
|
|
52
|
+
closed: boolean;
|
|
53
|
+
}
|
|
54
|
+
export interface FillOp {
|
|
55
|
+
kind: "fill";
|
|
56
|
+
paths: Subpath[];
|
|
57
|
+
paint: Paint;
|
|
58
|
+
alpha: number;
|
|
59
|
+
/** Drawn with a shadow */
|
|
60
|
+
shadow: boolean;
|
|
61
|
+
}
|
|
62
|
+
export interface StrokeOp {
|
|
63
|
+
kind: "stroke";
|
|
64
|
+
paths: Subpath[];
|
|
65
|
+
paint: Paint;
|
|
66
|
+
alpha: number;
|
|
67
|
+
width: number;
|
|
68
|
+
cap: "butt" | "round" | "square";
|
|
69
|
+
join: "round" | "bevel" | "miter";
|
|
70
|
+
dash: number[];
|
|
71
|
+
}
|
|
72
|
+
export interface TextOp {
|
|
73
|
+
kind: "text";
|
|
74
|
+
text: string;
|
|
75
|
+
x: number;
|
|
76
|
+
y: number;
|
|
77
|
+
size: number;
|
|
78
|
+
weight: number;
|
|
79
|
+
align: "left" | "center" | "right";
|
|
80
|
+
baseline: "top" | "middle" | "bottom" | "alphabetic";
|
|
81
|
+
color: Color;
|
|
82
|
+
alpha: number;
|
|
83
|
+
/** Rotation around (x, y), radians clockwise */
|
|
84
|
+
rotate: number;
|
|
85
|
+
maxWidth?: number;
|
|
86
|
+
/** Outline color (`strokeText` under the same text) */
|
|
87
|
+
halo?: Color;
|
|
88
|
+
}
|
|
89
|
+
export type DrawOp = FillOp | StrokeOp | TextOp;
|
|
90
|
+
/** Parses the colors the engine produces: `rgba()`, `rgb()`, `#hex` */
|
|
91
|
+
export declare function parseColor(value: unknown): Color;
|
|
92
|
+
/** Opaque CSS color (the alpha goes to an `opacity`) */
|
|
93
|
+
export declare const opaqueCss: (c: Color) => string;
|
|
94
|
+
/** CSS color with an extra alpha */
|
|
95
|
+
export declare const cssWithAlpha: (c: Color, alpha: number) => string;
|
|
96
|
+
/** Color of a paint at a point (gradients: projected on their axis) */
|
|
97
|
+
export declare function paintAt(paint: Paint, x: number, y: number): Color;
|
|
98
|
+
/** Size (px) and weight of a CSS font */
|
|
99
|
+
export declare function parseFont(font: string): {
|
|
100
|
+
size: number;
|
|
101
|
+
weight: number;
|
|
102
|
+
};
|
|
103
|
+
/** Signed sweep of a canvas `arc()` */
|
|
104
|
+
export declare function arcSweep(start: number, end: number, ccw: boolean): number;
|
|
105
|
+
export interface Recorder {
|
|
106
|
+
/** The 2D context handed to the engine */
|
|
107
|
+
readonly context: unknown;
|
|
108
|
+
/** Operations of the last frame (a new array per frame) */
|
|
109
|
+
ops(): DrawOp[];
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Records the drawing calls of a Canvas2D context. `clearRect` of the whole
|
|
113
|
+
* canvas starts a new frame.
|
|
114
|
+
*/
|
|
115
|
+
export declare function createRecorder(): Recorder;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/** A color: channels 0-255, alpha 0-1 (`raw`: a CSS color that could not be parsed) */
|
|
2
|
+
export interface Color {
|
|
3
|
+
r: number;
|
|
4
|
+
g: number;
|
|
5
|
+
b: number;
|
|
6
|
+
a: number;
|
|
7
|
+
raw?: string;
|
|
8
|
+
}
|
|
9
|
+
/** A linear gradient in chart pixels */
|
|
10
|
+
export interface Gradient {
|
|
11
|
+
x0: number;
|
|
12
|
+
y0: number;
|
|
13
|
+
x1: number;
|
|
14
|
+
y1: number;
|
|
15
|
+
stops: {
|
|
16
|
+
offset: number;
|
|
17
|
+
color: Color;
|
|
18
|
+
}[];
|
|
19
|
+
}
|
|
20
|
+
/** Fill or stroke style: a color, or a gradient (and its first color) */
|
|
21
|
+
export interface Paint {
|
|
22
|
+
color: Color;
|
|
23
|
+
gradient?: Gradient;
|
|
24
|
+
}
|
|
25
|
+
/** Straight segment to (x, y), or arc (implicitly joined by a segment to its start) */
|
|
26
|
+
/** A quadratic curve (device coordinates) */
|
|
27
|
+
export interface Quad {
|
|
28
|
+
from: [number, number];
|
|
29
|
+
ctrl: [number, number];
|
|
30
|
+
to: [number, number];
|
|
31
|
+
}
|
|
32
|
+
export type Segment =
|
|
33
|
+
/** `q`: the curve this segment flattens, if any */
|
|
34
|
+
{
|
|
35
|
+
t: "L";
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
q?: Quad;
|
|
39
|
+
} | {
|
|
40
|
+
t: "A";
|
|
41
|
+
cx: number;
|
|
42
|
+
cy: number;
|
|
43
|
+
r: number;
|
|
44
|
+
/** Start angle and end angle (`a1 - a0` is the signed sweep) */
|
|
45
|
+
a0: number;
|
|
46
|
+
a1: number;
|
|
47
|
+
};
|
|
48
|
+
export interface Subpath {
|
|
49
|
+
x: number;
|
|
50
|
+
y: number;
|
|
51
|
+
segs: Segment[];
|
|
52
|
+
closed: boolean;
|
|
53
|
+
}
|
|
54
|
+
export interface FillOp {
|
|
55
|
+
kind: "fill";
|
|
56
|
+
paths: Subpath[];
|
|
57
|
+
paint: Paint;
|
|
58
|
+
alpha: number;
|
|
59
|
+
/** Drawn with a shadow */
|
|
60
|
+
shadow: boolean;
|
|
61
|
+
}
|
|
62
|
+
export interface StrokeOp {
|
|
63
|
+
kind: "stroke";
|
|
64
|
+
paths: Subpath[];
|
|
65
|
+
paint: Paint;
|
|
66
|
+
alpha: number;
|
|
67
|
+
width: number;
|
|
68
|
+
cap: "butt" | "round" | "square";
|
|
69
|
+
join: "round" | "bevel" | "miter";
|
|
70
|
+
dash: number[];
|
|
71
|
+
}
|
|
72
|
+
export interface TextOp {
|
|
73
|
+
kind: "text";
|
|
74
|
+
text: string;
|
|
75
|
+
x: number;
|
|
76
|
+
y: number;
|
|
77
|
+
size: number;
|
|
78
|
+
weight: number;
|
|
79
|
+
align: "left" | "center" | "right";
|
|
80
|
+
baseline: "top" | "middle" | "bottom" | "alphabetic";
|
|
81
|
+
color: Color;
|
|
82
|
+
alpha: number;
|
|
83
|
+
/** Rotation around (x, y), radians clockwise */
|
|
84
|
+
rotate: number;
|
|
85
|
+
maxWidth?: number;
|
|
86
|
+
/** Outline color (`strokeText` under the same text) */
|
|
87
|
+
halo?: Color;
|
|
88
|
+
}
|
|
89
|
+
export type DrawOp = FillOp | StrokeOp | TextOp;
|
|
90
|
+
/** Parses the colors the engine produces: `rgba()`, `rgb()`, `#hex` */
|
|
91
|
+
export declare function parseColor(value: unknown): Color;
|
|
92
|
+
/** Opaque CSS color (the alpha goes to an `opacity`) */
|
|
93
|
+
export declare const opaqueCss: (c: Color) => string;
|
|
94
|
+
/** CSS color with an extra alpha */
|
|
95
|
+
export declare const cssWithAlpha: (c: Color, alpha: number) => string;
|
|
96
|
+
/** Color of a paint at a point (gradients: projected on their axis) */
|
|
97
|
+
export declare function paintAt(paint: Paint, x: number, y: number): Color;
|
|
98
|
+
/** Size (px) and weight of a CSS font */
|
|
99
|
+
export declare function parseFont(font: string): {
|
|
100
|
+
size: number;
|
|
101
|
+
weight: number;
|
|
102
|
+
};
|
|
103
|
+
/** Signed sweep of a canvas `arc()` */
|
|
104
|
+
export declare function arcSweep(start: number, end: number, ccw: boolean): number;
|
|
105
|
+
export interface Recorder {
|
|
106
|
+
/** The 2D context handed to the engine */
|
|
107
|
+
readonly context: unknown;
|
|
108
|
+
/** Operations of the last frame (a new array per frame) */
|
|
109
|
+
ops(): DrawOp[];
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Records the drawing calls of a Canvas2D context. `clearRect` of the whole
|
|
113
|
+
* canvas starts a new frame.
|
|
114
|
+
*/
|
|
115
|
+
export declare function createRecorder(): Recorder;
|