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,113 @@
|
|
|
1
|
+
import { measureChartText as e } from "../Chart/measure.js";
|
|
2
|
+
import { StyleSheet as t, Text as n, View as r } from "react-native";
|
|
3
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/ShapeChart/draw.tsx
|
|
5
|
+
var a = (e) => Math.ceil(e * 1.35), o = {
|
|
6
|
+
shadowColor: "#0f172a",
|
|
7
|
+
shadowOpacity: .18,
|
|
8
|
+
shadowRadius: 8,
|
|
9
|
+
shadowOffset: {
|
|
10
|
+
width: 0,
|
|
11
|
+
height: 6
|
|
12
|
+
},
|
|
13
|
+
elevation: 6
|
|
14
|
+
};
|
|
15
|
+
function s(t, o, s) {
|
|
16
|
+
let c = a(t.size), l = (c - t.size) / 2, u = e(t.text, `${t.weight} ${t.size}px sans-serif`), d = t.maxWidth !== void 0 && u > t.maxWidth + .5 ? Math.max(1, t.maxWidth ?? 0) : Math.ceil(u * 1.4 + t.size * 2), f = Math.abs(t.rotate) > 1e-4, p = {
|
|
17
|
+
w: 2 * d + 2,
|
|
18
|
+
h: 2 * c
|
|
19
|
+
}, m = f ? p.w / 2 : t.x, h = f ? p.h / 2 : t.y, g = t.baseline === "top" ? h - l : t.baseline === "bottom" ? h - c + l : t.baseline === "middle" ? h - c / 2 : h - t.size * .8 - l, _ = {
|
|
20
|
+
position: "absolute",
|
|
21
|
+
left: t.align === "left" ? m : t.align === "right" ? m - d : m - d / 2,
|
|
22
|
+
top: g,
|
|
23
|
+
width: d,
|
|
24
|
+
textAlign: t.align,
|
|
25
|
+
fontSize: t.size,
|
|
26
|
+
lineHeight: c,
|
|
27
|
+
color: t.color,
|
|
28
|
+
fontWeight: String(t.weight),
|
|
29
|
+
includeFontPadding: !1,
|
|
30
|
+
...s ? { fontFamily: s } : null,
|
|
31
|
+
...t.halo ? {
|
|
32
|
+
textShadowColor: t.halo,
|
|
33
|
+
textShadowRadius: 2,
|
|
34
|
+
textShadowOffset: {
|
|
35
|
+
width: 0,
|
|
36
|
+
height: 0
|
|
37
|
+
}
|
|
38
|
+
} : null
|
|
39
|
+
}, v = /* @__PURE__ */ i(n, {
|
|
40
|
+
numberOfLines: 1,
|
|
41
|
+
ellipsizeMode: "tail",
|
|
42
|
+
style: _,
|
|
43
|
+
children: t.text
|
|
44
|
+
}, f ? void 0 : o);
|
|
45
|
+
return f ? /* @__PURE__ */ i(r, {
|
|
46
|
+
style: {
|
|
47
|
+
position: "absolute",
|
|
48
|
+
left: t.x - p.w / 2,
|
|
49
|
+
top: t.y - p.h / 2,
|
|
50
|
+
width: p.w,
|
|
51
|
+
height: p.h,
|
|
52
|
+
transform: [{ rotate: `${t.rotate}rad` }]
|
|
53
|
+
},
|
|
54
|
+
children: v
|
|
55
|
+
}, o) : v;
|
|
56
|
+
}
|
|
57
|
+
var c = (e, t, n, r) => r ? {
|
|
58
|
+
left: 0,
|
|
59
|
+
top: 0,
|
|
60
|
+
transform: [
|
|
61
|
+
{ translateX: e },
|
|
62
|
+
{ translateY: t },
|
|
63
|
+
...n ? [{ rotate: `${n}rad` }] : []
|
|
64
|
+
]
|
|
65
|
+
} : {
|
|
66
|
+
left: e,
|
|
67
|
+
top: t,
|
|
68
|
+
...n ? { transform: [{ rotate: `${n}rad` }] } : null
|
|
69
|
+
};
|
|
70
|
+
function l(e, n, a = "", u = !1) {
|
|
71
|
+
return e.map((e, d) => {
|
|
72
|
+
let f = `${a}${d}`;
|
|
73
|
+
switch (e.t) {
|
|
74
|
+
case "box": {
|
|
75
|
+
let t = {
|
|
76
|
+
position: "absolute",
|
|
77
|
+
...c(e.x, e.y, e.rotate ?? 0, u || !!e.rotate || (e.radius ?? 0) > 0),
|
|
78
|
+
width: e.w,
|
|
79
|
+
height: e.h,
|
|
80
|
+
...e.color ? { backgroundColor: e.color } : null,
|
|
81
|
+
...e.radius ? { borderRadius: e.radius } : null,
|
|
82
|
+
...e.borderWidth ? {
|
|
83
|
+
borderWidth: e.borderWidth,
|
|
84
|
+
borderColor: e.borderColor
|
|
85
|
+
} : null,
|
|
86
|
+
...e.shadow ? o : null
|
|
87
|
+
};
|
|
88
|
+
return /* @__PURE__ */ i(r, { style: t }, f);
|
|
89
|
+
}
|
|
90
|
+
case "clip": return /* @__PURE__ */ i(r, {
|
|
91
|
+
style: {
|
|
92
|
+
position: "absolute",
|
|
93
|
+
...c(e.x, e.y, e.rotate, !0),
|
|
94
|
+
width: e.size,
|
|
95
|
+
height: e.size,
|
|
96
|
+
overflow: "hidden"
|
|
97
|
+
},
|
|
98
|
+
children: l(e.children, n, `${f}.`, !0)
|
|
99
|
+
}, f);
|
|
100
|
+
case "group": return /* @__PURE__ */ i(r, {
|
|
101
|
+
needsOffscreenAlphaCompositing: e.children.length > 1 || e.children[0]?.t === "clip",
|
|
102
|
+
style: [t.absoluteFill, { opacity: e.opacity }],
|
|
103
|
+
children: l(e.children, n, `${f}.`, u)
|
|
104
|
+
}, f);
|
|
105
|
+
case "text": return s(e, f, n);
|
|
106
|
+
default: return null;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
111
|
+
export { l as renderPrims };
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=draw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draw.js","names":["lineHeightOf","size","SHADOW","textView","lh","p","pad","estimate","measureChartText","w","rotated","box","ax","ay","top","style","family","text","Text","key","View","placed","exact","x","y","rotate","renderPrims","prims","prefix","i","inClip","StyleSheet"],"sources":["../../../../../native/src/components/ShapeChart/draw.tsx"],"sourcesContent":["// Renders the view primitives of ./geometry: absolutely positioned <View>\n// and <Text> elements, nested clipping squares for the polygons and sectors.\n\nimport type { ReactNode } from \"react\";\nimport {\n StyleSheet,\n Text,\n View,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { measureChartText } from \"../Chart/measure\";\nimport type { Prim } from \"./geometry\";\n\ntype TextPrim = Extract<Prim, { t: \"text\" }>;\n\nconst lineHeightOf = (size: number) => Math.ceil(size * 1.35);\n\nconst SHADOW: ViewStyle = {\n shadowColor: \"#0f172a\",\n shadowOpacity: 0.18,\n shadowRadius: 8,\n shadowOffset: { width: 0, height: 6 },\n elevation: 6,\n};\n\n/** A one-line text anchored like the canvas `fillText` */\nfunction textView(\n p: TextPrim,\n key: string,\n family: string | undefined,\n): ReactNode {\n const lh = lineHeightOf(p.size);\n const pad = (lh - p.size) / 2;\n const estimate = measureChartText(\n p.text,\n `${p.weight} ${p.size}px sans-serif`,\n );\n // canvas `maxWidth` squeezes the text: ellipsize it when it would not fit\n const squeezed = p.maxWidth !== undefined && estimate > p.maxWidth + 0.5;\n const w = squeezed\n ? Math.max(1, p.maxWidth ?? 0)\n : Math.ceil(estimate * 1.4 + p.size * 2);\n const rotated = Math.abs(p.rotate) > 1e-4;\n // rotated: a wrapper centered on the anchor turns around it (RN rotates\n // around the center); it is sized for the text, as single-line texts are\n // limited to the width of their parent on the web\n const box = { w: 2 * w + 2, h: 2 * lh };\n const ax = rotated ? box.w / 2 : p.x;\n const ay = rotated ? box.h / 2 : p.y;\n const top =\n p.baseline === \"top\"\n ? ay - pad\n : p.baseline === \"bottom\"\n ? ay - lh + pad\n : p.baseline === \"middle\"\n ? ay - lh / 2\n : ay - p.size * 0.8 - pad;\n const left =\n p.align === \"left\" ? ax : p.align === \"right\" ? ax - w : ax - w / 2;\n const style: TextStyle = {\n position: \"absolute\",\n left,\n top,\n width: w,\n textAlign: p.align,\n fontSize: p.size,\n lineHeight: lh,\n color: p.color,\n fontWeight: String(p.weight) as TextStyle[\"fontWeight\"],\n includeFontPadding: false,\n ...(family ? { fontFamily: family } : null),\n ...(p.halo\n ? {\n textShadowColor: p.halo,\n textShadowRadius: 2,\n textShadowOffset: { width: 0, height: 0 },\n }\n : null),\n };\n const text = (\n <Text\n key={rotated ? undefined : key}\n numberOfLines={1}\n ellipsizeMode=\"tail\"\n style={style}\n >\n {p.text}\n </Text>\n );\n if (!rotated) return text;\n return (\n <View\n key={key}\n style={{\n position: \"absolute\",\n left: p.x - box.w / 2,\n top: p.y - box.h / 2,\n width: box.w,\n height: box.h,\n transform: [{ rotate: `${p.rotate}rad` }],\n }}\n >\n {text}\n </View>\n );\n}\n\n/**\n * Position of a view: rotated or curved views (and anything inside a clip)\n * are placed with a translation, kept exact by the renderers, as layout\n * offsets are rounded to the pixel grid before a rotation applies (up to\n * half a pixel per nested clip: visible steps at the rounded corners);\n * straight views keep the crisp edges of the rounded layout\n */\nconst placed = (\n x: number,\n y: number,\n rotate: number,\n exact: boolean,\n): ViewStyle =>\n exact\n ? {\n left: 0,\n top: 0,\n transform: [\n { translateX: x },\n { translateY: y },\n ...(rotate ? [{ rotate: `${rotate}rad` }] : []),\n ],\n }\n : {\n left: x,\n top: y,\n ...(rotate ? { transform: [{ rotate: `${rotate}rad` }] } : null),\n };\n\n/** Elements of the primitives */\nexport function renderPrims(\n prims: readonly Prim[],\n family: string | undefined,\n prefix = \"\",\n inClip = false,\n): ReactNode[] {\n return prims.map((p, i) => {\n const key = `${prefix}${i}`;\n switch (p.t) {\n case \"box\": {\n const style: ViewStyle = {\n position: \"absolute\",\n ...placed(\n p.x,\n p.y,\n p.rotate ?? 0,\n inClip || !!p.rotate || (p.radius ?? 0) > 0,\n ),\n width: p.w,\n height: p.h,\n ...(p.color ? { backgroundColor: p.color } : null),\n ...(p.radius ? { borderRadius: p.radius } : null),\n ...(p.borderWidth\n ? { borderWidth: p.borderWidth, borderColor: p.borderColor }\n : null),\n ...(p.shadow ? SHADOW : null),\n };\n return <View key={key} style={style} />;\n }\n case \"clip\":\n return (\n <View\n key={key}\n style={{\n position: \"absolute\",\n ...placed(p.x, p.y, p.rotate, true),\n width: p.size,\n height: p.size,\n overflow: \"hidden\",\n }}\n >\n {renderPrims(p.children, family, `${key}.`, true)}\n </View>\n );\n case \"group\":\n return (\n <View\n key={key}\n needsOffscreenAlphaCompositing={\n p.children.length > 1 || p.children[0]?.t === \"clip\"\n }\n style={[StyleSheet.absoluteFill, { opacity: p.opacity }]}\n >\n {renderPrims(p.children, family, `${key}.`, inClip)}\n </View>\n );\n case \"text\":\n return textView(p, key, family);\n default:\n return null;\n }\n });\n}\n"],"mappings":";;;;AAgBA,IAAMA,KAAgB,MAAiB,KAAK,KAAKC,IAAO,IAAI,GAEtDC,IAAoB;CACxB,aAAa;CACb,eAAe;CACf,cAAc;CACd,cAAc;EAAE,OAAO;EAAG,QAAQ;CAAE;CACpC,WAAW;AACb;AAGA,SAASC,EACP,GACA,GACA,GACW;CACX,IAAMC,IAAKJ,EAAaK,EAAE,IAAI,GACxBC,KAAOF,IAAKC,EAAE,QAAQ,GACtBE,IAAWC,EACfH,EAAE,MACF,GAAGA,EAAE,OAAO,GAAGA,EAAE,KAAK,cACxB,GAGMI,IADWJ,EAAE,aAAa,KAAA,KAAaE,IAAWF,EAAE,WAAW,KAEjE,KAAK,IAAI,GAAGA,EAAE,YAAY,CAAC,IAC3B,KAAK,KAAKE,IAAW,MAAMF,EAAE,OAAO,CAAC,GACnCK,IAAU,KAAK,IAAIL,EAAE,MAAM,IAAI,MAI/BM,IAAM;EAAE,GAAG,IAAIF,IAAI;EAAG,GAAG,IAAIL;CAAG,GAChCQ,IAAKF,IAAUC,EAAI,IAAI,IAAIN,EAAE,GAC7BQ,IAAKH,IAAUC,EAAI,IAAI,IAAIN,EAAE,GAC7BS,IACJT,EAAE,aAAa,QACXQ,IAAKP,IACLD,EAAE,aAAa,WACbQ,IAAKT,IAAKE,IACVD,EAAE,aAAa,WACbQ,IAAKT,IAAK,IACVS,IAAKR,EAAE,OAAO,KAAMC,GAGxBS,IAAmB;EACvB,UAAU;EACV,MAHAV,EAAE,UAAU,SAASO,IAAKP,EAAE,UAAU,UAAUO,IAAKH,IAAIG,IAAKH,IAAI;EAIlE;EACA,OAAOA;EACP,WAAWJ,EAAE;EACb,UAAUA,EAAE;EACZ,YAAYD;EACZ,OAAOC,EAAE;EACT,YAAY,OAAOA,EAAE,MAAM;EAC3B,oBAAoB;EACpB,GAAIW,IAAS,EAAE,YAAYA,EAAO,IAAI;EACtC,GAAIX,EAAE,OACF;GACE,iBAAiBA,EAAE;GACnB,kBAAkB;GAClB,kBAAkB;IAAE,OAAO;IAAG,QAAQ;GAAE;EAC1C,IACA;CACN,GACMY,IACJ,kBAACC,GAAD;EAEE,eAAe;EACf,eAAc;EACP;EAEN,UAAAb,EAAE;CACC,GANCK,IAAU,KAAA,IAAYS,CAMvB;CAGR,OADKT,IAEH,kBAACU,GAAD;EAEE,OAAO;GACL,UAAU;GACV,MAAMf,EAAE,IAAIM,EAAI,IAAI;GACpB,KAAKN,EAAE,IAAIM,EAAI,IAAI;GACnB,OAAOA,EAAI;GACX,QAAQA,EAAI;GACZ,WAAW,CAAC,EAAE,QAAQ,GAAGN,EAAE,OAAO,KAAK,CAAC;EAC1C;EAEC,UAAAY;CACG,GAXCE,CAWD,IAdaF;AAgBvB;AASA,IAAMI,KACJ,GACA,GACA,GACA,MAEAC,IACI;CACE,MAAM;CACN,KAAK;CACL,WAAW;EACT,EAAE,YAAYC,EAAE;EAChB,EAAE,YAAYC,EAAE;EAChB,GAAIC,IAAS,CAAC,EAAE,QAAQ,GAAGA,EAAO,KAAK,CAAC,IAAI,CAAC;CAC/C;AACF,IACA;CACE,MAAMF;CACN,KAAKC;CACL,GAAIC,IAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAGA,EAAO,KAAK,CAAC,EAAE,IAAI;AAC7D;AAGN,SAAgBC,EACd,GACA,GACA,IAAS,IACT,IAAS,IACI;CACb,OAAOC,EAAM,KAAK,GAAG,MAAM;EACzB,IAAMR,IAAM,GAAGS,IAASC;EACxB,QAAQxB,EAAE,GAAV;GACE,KAAK,OAAO;IACV,IAAMU,IAAmB;KACvB,UAAU;KACV,GAAGM,EACDhB,EAAE,GACFA,EAAE,GACFA,EAAE,UAAU,GACZyB,KAAU,CAAC,CAACzB,EAAE,WAAWA,EAAE,UAAU,KAAK,CAC5C;KACA,OAAOA,EAAE;KACT,QAAQA,EAAE;KACV,GAAIA,EAAE,QAAQ,EAAE,iBAAiBA,EAAE,MAAM,IAAI;KAC7C,GAAIA,EAAE,SAAS,EAAE,cAAcA,EAAE,OAAO,IAAI;KAC5C,GAAIA,EAAE,cACF;MAAE,aAAaA,EAAE;MAAa,aAAaA,EAAE;KAAY,IACzD;KACJ,GAAIA,EAAE,SAASH,IAAS;IAC1B;IACA,OAAO,kBAACkB,GAAD,EAAuB,SAAQ,GAApBD,CAAoB;GACxC;GACA,KAAK,QACH,OACE,kBAACC,GAAD;IAEE,OAAO;KACL,UAAU;KACV,GAAGC,EAAOhB,EAAE,GAAGA,EAAE,GAAGA,EAAE,QAAQ,EAAI;KAClC,OAAOA,EAAE;KACT,QAAQA,EAAE;KACV,UAAU;IACZ;IAEC,UAAAqB,EAAYrB,EAAE,UAAUW,GAAQ,GAAGG,EAAI,IAAI,EAAI;GAC5C,GAVCA,CAUD;GAEV,KAAK,SACH,OACE,kBAACC,GAAD;IAEE,gCACEf,EAAE,SAAS,SAAS,KAAKA,EAAE,SAAS,EAAE,EAAE,MAAM;IAEhD,OAAO,CAAC0B,EAAW,cAAc,EAAE,SAAS1B,EAAE,QAAQ,CAAC;IAEtD,UAAAqB,EAAYrB,EAAE,UAAUW,GAAQ,GAAGG,EAAI,IAAIW,CAAM;GAC9C,GAPCX,CAOD;GAEV,KAAK,QACH,OAAOhB,EAASE,GAAGc,GAAKH,CAAM;GAChC,SACE,OAAO;EACX;CACF,CAAC;AACH"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./recorder.cjs");var t=Math.PI*2,n=.5,r=160,i=(e,t)=>e.n[0]*t[0]+e.n[1]*t[1]-e.d,a=(e,t,n,r)=>{let i=Math.hypot(t[0]-e[0],t[1]-e[1]);if(i<1e-6)return null;let a=[-(t[1]-e[1])/i,(t[0]-e[0])/i];return a[0]*(n[0]-e[0])+a[1]*(n[1]-e[1])<0&&(a=[-a[0],-a[1]]),{n:a,d:a[0]*e[0]+a[1]*e[1]-r}},o=e=>[e.reduce((e,t)=>e+t[0],0)/Math.max(1,e.length),e.reduce((e,t)=>e+t[1],0)/Math.max(1,e.length)],s=(e,t)=>e[t],c=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]),l=(e,t)=>Math.hypot(e[0]-t[0],e[1]-t[1]),u=(e,t,n,r)=>[e+n*Math.cos(r),t+n*Math.sin(r)],d=(e,t)=>{let n=Math.cos(t),r=Math.sin(t);return[e[0]*n-e[1]*r,e[0]*r+e[1]*n]},f=e=>{let t=0;for(let n=0;n<e.length;n++){let r=s(e,n),i=s(e,(n+1)%e.length);t+=r[0]*i[1]-i[0]*r[1]}return t/2};function p(e,t){let n=[],r=[e.x,e.y],i=(e,t)=>{l(r,e)>.001&&n.push(t?{t:`L`,from:r,to:e,q:t}:{t:`L`,from:r,to:e}),r=e};for(let t of e.segs)t.t===`L`?i([t.x,t.y],t.q):(i(u(t.cx,t.cy,t.r,t.a0)),n.push({...t}),r=u(t.cx,t.cy,t.r,t.a1));return t&&i([e.x,e.y]),n}function m(e,t,n=.2){let r=[t];for(let t of e)if(t.t===`L`)r.push(t.to);else{let e=t.a1-t.a0,i=t.r>n?Math.max(.04,2*Math.acos(Math.max(-1,1-n/t.r))):Math.PI/2,a=Math.min(128,Math.max(1,Math.ceil(Math.abs(e)/i)));r.push(u(t.cx,t.cy,t.r,t.a0));for(let n=1;n<=a;n++)r.push(u(t.cx,t.cy,t.r,t.a0+e*n/a))}return h(r)}function h(e,t=!0){let n=[];for(let t of e){let e=n[n.length-1];(!e||l(e,t)>.001)&&n.push(t)}return t&&n.length>1&&l(s(n,0),s(n,n.length-1))<=.001&&n.pop(),n}function g(e){let t=h(e),n=!0;for(;n&&t.length>3;){n=!1;for(let e=0;e<t.length;e++){let r=s(t,(e-1+t.length)%t.length),i=s(t,e),a=s(t,(e+1)%t.length),o=Math.max(l(r,i),l(i,a),1e-9),u=c(r,i,a)/o,d=(i[0]-r[0])*(a[0]-i[0])+(i[1]-r[1])*(a[1]-i[1])>0;if(Math.abs(u)<1e-4&&d){t=t.filter((t,n)=>n!==e),n=!0;break}}}return t}var _=e=>e?.t===`A`&&Math.abs(e.a1-e.a0)>=t-1e-6;function v(e){let t=e.length;if(t<3)return[];let n=e.map((e,t)=>t);f(e)<0&&(n=n.reverse());let r=[],i=(e,t,n,r)=>c(t,n,e)>1e-9&&c(n,r,e)>1e-9&&c(r,t,e)>1e-9,a=0;for(;n.length>3&&a++<t*t+10;){let t=!1;for(let a=0;a<n.length;a++){let o=n[(a-1+n.length)%n.length],u=n[a],d=n[(a+1)%n.length],f=s(e,o),p=s(e,u),m=s(e,d);if(c(f,p,m)<=1e-9)continue;let h=!1;for(let t of n){if(t===o||t===u||t===d)continue;let n=s(e,t);if(!(l(n,f)<1e-6||l(n,p)<1e-6||l(n,m)<1e-6)&&i(n,f,p,m)){h=!0;break}}if(!h){r.push([o,u,d]),n.splice(a,1),t=!0;break}}if(!t){let t=0,r=1/0;for(let i=0;i<n.length;i++){let a=Math.abs(c(s(e,n[(i-1+n.length)%n.length]),s(e,n[i]),s(e,n[(i+1)%n.length])));a<r&&(r=a,t=i)}n.splice(t,1)}}if(n.length===3){let[t,i,a]=n;c(s(e,t),s(e,i),s(e,a))>1e-9&&r.push([t,i,a])}return r}var y=(e,t)=>{for(let n=0;n<t.length;n++){let r=s(e,t[(n-1+t.length)%t.length]),i=s(e,t[n]),a=s(e,t[(n+1)%t.length]);if(c(r,i,a)<-1e-7*Math.max(1,l(r,i)*l(i,a)))return!1}return!0};function b(e,t){let n=t.map(t=>f(t.map(t=>s(e,t)))<0?[...t].reverse():[...t]),r=!0;for(;r;){r=!1;outer:for(let t=0;t<n.length;t++){let i=n[t];for(let a=0;a<i.length;a++){let o=i[a],s=i[(a+1)%i.length];for(let c=t+1;c<n.length;c++){let l=n[c],u=l.findIndex((e,t)=>e===s&&l[(t+1)%l.length]===o);if(u<0)continue;let d=(a+1)%i.length,f=[];for(let e=0;e<i.length;e++)f.push(i[(d+e)%i.length]);let p=[];for(let e=2;e<l.length;e++)p.push(l[(u+e)%l.length]);let m=[...f,...p];if(y(e,m)){n[t]=m,n.splice(c,1),r=!0;break outer}}}}}let c=new Set;for(let e of n)for(let t=0;t<e.length;t++)c.add(`${e[t]},${e[(t+1)%e.length]}`);let l=e=>e.map((t,n)=>c.has(`${e[(n+1)%e.length]},${t}`)),u=[];for(let t of n){let n=o(t.map(t=>s(e,t)));l(t).forEach((e,r)=>{e||u.push({a:t[r],b:t[(r+1)%t.length],ref:n})})}return n.map(t=>{let n=t.map(t=>s(e,t)),r=l(t),o=new Set;r.forEach((e,n)=>{e&&(o.add(t[n]),o.add(t[(n+1)%t.length]))});let c=new Set(t.map((e,n)=>`${e},${t[(n+1)%t.length]}`)),d=[];for(let t of u){if(!(o.has(t.a)||o.has(t.b))||c.has(`${t.a},${t.b}`))continue;let r=a(s(e,t.a),s(e,t.b),t.ref,0);r&&n.every(e=>i(r,e)>=-1e-6)&&d.push(r)}return{pts:n,internal:r,guards:d}})}function x(e){let t=g(e);return t.length<3?[]:b(t,v(t))}function S(e,n){let r=g(e),i=g(n);if(r.length<3||i.length<3)return x(e);let a=e=>f(e)<0?[...e].reverse():e,o=a(r),c=a(i),l=[c.reduce((e,t)=>e+t[0],0)/c.length,c.reduce((e,t)=>e+t[1],0)/c.length],u=e=>{let n=e.map(e=>Math.atan2(e[1]-l[1],e[0]-l[0])),r=0;n.forEach((e,t)=>{e<n[r]&&(r=t)});let i=e.map((t,n)=>(r+n)%e.length),a=[],o=-1/0;for(let e of i){let r=n[e];for(;r<o;)r+=t;a.push(r),o=r}return a.push(a[0]+t),{order:i,angles:a}},d=u(o),p=u(c),m=[...o,...c],h=e=>d.order[e%o.length],_=e=>o.length+p.order[e%c.length],v=[],y=0,S=0;for(;y<o.length||S<c.length;)(y<o.length?d.angles[y+1]:1/0)<=(S<c.length?p.angles[S+1]:1/0)?(v.push([h(y),h(y+1),_(S)]),y++):(v.push([h(y),_(S+1),_(S)]),S++);return b(m,v.filter(e=>Math.abs(f(e.map(e=>s(m,e))))>1e-6))}function C(e,t,n,r,a){let o=[];for(let n of e){if(t.t===`disc`){let e=i(n,[t.cx,t.cy]);if(e>=t.r1-.001)continue;if(e<=-t.r1)return[]}o.push(n)}if(t.t===`plane`&&!o.length)return[];let s=Math.ceil(2*a+8),c=s/2,l=[],u=l,f=[0,0],p=0;for(let{n:e,d:t}of o){let n=Math.atan2(-e[0],e[1]),i=[e[1],-e[0]],a=e[0]*r[0]+e[1]*r[1]-t,o=[r[0]-a*e[0],r[1]-a*e[1]],l=[o[0]-c*i[0],o[1]-c*i[1]],m=n-p,h=d([l[0]-f[0],l[1]-f[1]],-p),g=d([c,c],m),_={t:`clip`,x:h[0]-c+g[0],y:h[1]-c+g[1],size:s,rotate:m,children:[]};u.push(_),u=_.children,f=l,p=n}if(t.t===`disc`){let e=d([t.cx-f[0],t.cy-f[1]],-p);u.push({t:`box`,x:e[0]-t.r1,y:e[1]-t.r1,w:t.r1*2,h:t.r1*2,radius:t.r1,...t.r0>.25?{borderWidth:t.r1-t.r0,borderColor:n}:{color:n}})}else u.push({t:`box`,x:0,y:0,w:s,h:s,color:n});return l}function w(e,t,r){let{pts:i}=e;if(i.length<3)return[];let c=o(i),l=[];i.forEach((t,r)=>{let o=a(t,s(i,(r+1)%i.length),c,e.internal[r]?n:0);o&&l.push(o)}),l.push(...e.guards);let u=1/0,d=1/0,f=-1/0,p=-1/0;for(let e of i)u=Math.min(u,e[0]),d=Math.min(d,e[1]),f=Math.max(f,e[0]),p=Math.max(p,e[1]);return t.t===`disc`&&(u=Math.max(u,t.cx-t.r1),d=Math.max(d,t.cy-t.r1),f=Math.min(f,t.cx+t.r1),p=Math.min(p,t.cy+t.r1)),f>u&&p>d?C(l,t,r,c,2*Math.hypot(f-u,p-d)+n):[]}function T(e){let t=e.filter(e=>e.t===`A`);if(t.length!==0&&t.length!==4)return null;let n=0,r=1/0,i=1/0,a=-1/0,o=-1/0,s=(e,t)=>{r=Math.min(r,e),i=Math.min(i,t),a=Math.max(a,e),o=Math.max(o,t)};for(let t of e)if(t.t===`L`){let e=Math.abs(t.to[0]-t.from[0]),n=Math.abs(t.to[1]-t.from[1]);if(e>.001&&n>.001)return null;s(t.from[0],t.from[1]),s(t.to[0],t.to[1])}else{if(Math.abs(Math.abs(t.a1-t.a0)-Math.PI/2)>.02||n&&Math.abs(t.r-n)>.01)return null;n=t.r,s(t.cx-t.r,t.cy-t.r),s(t.cx+t.r,t.cy+t.r)}if(!(a>r&&o>i))return null;for(let t of e)if(t.t===`A`){let e=Math.abs(t.cx-(r+n))<.05||Math.abs(t.cx-(a-n))<.05,s=Math.abs(t.cy-(i+n))<.05||Math.abs(t.cy-(o-n))<.05;if(!e||!s)return null}else if(Math.abs(t.to[0]-t.from[0])<=.001?!(e=>Math.abs(e-r)<.05||Math.abs(e-a)<.05)(t.from[0]):!(e=>Math.abs(e-i)<.05||Math.abs(e-o)<.05)(t.from[1]))return null;return!t.length&&e.length<4?null:{x:r,y:i,w:a-r,h:o-i,r:n}}function E(e){let t=e.filter(e=>e.t===`A`),n=t[0];if(!n)return null;let{cx:r,cy:i}=n,a=0;for(let e of t){if(Math.hypot(e.cx-r,e.cy-i)>.5)return null;a=Math.max(a,e.r)}let o=0;for(let e of t)if(!(Math.abs(e.r-a)<=.5)){if(o&&Math.abs(e.r-o)>.5)return null;o=e.r}let s=[r,i];for(let t of e)if(t.t===`L`)for(let e of[t.from,t.to]){let t=l(e,s);if(t>a+.5||o>0&&t<o-.5)return null}let c={t:`disc`,cx:r,cy:i,r0:o,r1:a};return{base:c,outline:D(e,c)}}function D(e,{cx:t,cy:n,r1:r}){let i=[];for(let a of e){if(a.t===`L`){i.push(a.from,a.to);continue}let e=a.a1-a.a0;if(Math.abs(a.r-r)<=.5){let o=Math.max(1,Math.ceil(Math.abs(e)/(Math.PI/4))),s=e/o,c=r/Math.cos(s/2);i.push(u(t,n,r,a.a0));for(let e=0;e<o;e++)i.push(u(t,n,c,a.a0+(e+.5)*s)),i.push(u(t,n,r,a.a0+(e+1)*s))}else{let r=Math.max(1,Math.ceil(Math.abs(e)/(Math.PI/2)));for(let o=0;o<=r;o++)i.push(u(t,n,a.r,a.a0+e*o/r))}}return i}var O=(e,t,n,r,i)=>({t:`box`,x:e-n,y:t-n,w:n*2,h:n*2,radius:n,...r>.25?{borderWidth:n-r,borderColor:i}:{color:i}});function k(e,r,o,s=0){let{cx:c,cy:d,r0:f,r1:p}=r,m=[c,d],h=e.filter(e=>e.t===`A`),g=h.filter(e=>Math.abs(e.r-p)<=.5),_=g[0];if(!_||g.length!==1||h.length-g.length>1)return null;let v=Math.min(_.a0,_.a1),y=Math.max(_.a0,_.a1),b=y-v;if(b>=t-.001)return null;let x=(e,n)=>{let r=Math.abs(e-n)%t;return Math.min(r,t-r)},S=null,w=null,T=e=>l(e.from,e.to);for(let t of e){if(t.t!==`L`||T(t)<.3)continue;let e=l(t.from,m)>l(t.to,m)?t.from:t.to,n=l(e,m);if(n<.5)continue;let r=(t.to[0]-t.from[0])/T(t),i=(t.to[1]-t.from[1])/T(t),a=(e[0]-c)/n,o=(e[1]-d)/n;if(Math.abs(r*o-i*a)>.14)continue;let s=Math.atan2(e[1]-d,e[0]-c);x(s,v)<=x(s,y)?(!S||T(t)>T(S))&&(S=t):(!w||T(t)>T(w))&&(w=t)}if(!S||!w)return null;let E=(v+y)/2,D=f>0?(f+p)/2:p/2,O=u(c,d,D,E),k=a(S.from,S.to,O,s),A=a(w.from,w.to,O,s);if(!k||!A||i(k,O)<=0||i(A,O)<=0)return null;let j=2*p+n;if(b<=Math.PI-.001)return C([k,A],r,o,O,j);let M=[c+Math.cos(E),d+Math.sin(E)],N=u(c,d,D,v+b/4),P=u(c,d,D,y-b/4),F=a(m,M,N,n),I=a(m,M,P,n);return!F||!I?null:[...C([k,F],r,o,N,j),...C([A,I],r,o,P,j)]}function A(e,t,n,r,i,a){let o=[t[0]-e[0],t[1]-e[1]],s=o[0]*n[0]+o[1]*n[1],c=[n[1],-n[0]];o[0]*c[0]+o[1]*c[1]<0&&(c=[-c[0],-c[1]]);let l=o[0]*o[0]+o[1]*o[1],u=2*(i?r+s:r-s);if(u<=1e-6)return null;let d=Math.min(a,(i?r*r-l:l-r*r)/u);if(!(d>.5))return null;let f=i?r-d:r+d,p=f*f-(s+d)*(s+d);if(p<=0)return null;let m=Math.sqrt(p),h=t=>[e[0]+m*c[0]+t*n[0],e[1]+m*c[1]+t*n[1]],g=h(s+d),_=r/f;return{o:g,r:d,side:h(s),ring:[e[0]+(g[0]-e[0])*_,e[1]+(g[1]-e[1])*_]}}function j(e,r,o){let{cx:s,cy:c,r0:d,r1:f}=r,p=[s,c],m=(f-d)/2,h=e=>{let t=l(e,p);return Math.abs(t-f)<=.5?f:d>0&&Math.abs(t-d)<=.5?d:0},g=new Map;for(let t of e){if(t.t!==`L`||!t.q||g.has(t.q))continue;let e=t.q,n=h(e.ctrl);if(!n)return null;let r=h(e.from)!==n,i=r?e.from:e.to,o=r?e.to:e.from;if(h(o)!==n||h(i)===n)return null;let s=a(i,e.ctrl,o,0),c=s&&A(p,i,s.n,n,n===f,m);if(!s||!c)return null;g.set(e,{fillet:c,plane:s,sideFirst:r})}if(!g.size)return null;let _=[],v;for(let t of e){let e=t.t===`L`?t.q:void 0;if(e!==v&&e){let{fillet:t,sideFirst:n}=g.get(e),[r,i]=n?[t.side,t.ring]:[t.ring,t.side];_.push({t:`L`,from:r,to:i})}else e||_.push(t);v=e}let y=e=>e-t*Math.round(e/t),b=e=>Math.atan2(e[1]-c,e[0]-s),S=e=>e.t===`L`?[e.from,e.to]:[u(e.cx,e.cy,e.r,e.a0),u(e.cx,e.cy,e.r,e.a1)],w=_.length,T=_.map((e,t)=>{if(e.t!==`A`)return e;let n=S(_[(t-1+w)%w])[1],r=S(_[(t+1)%w])[0],i=Math.abs(l(n,p)-e.r)<=.5?e.a0+y(b(n)-e.a0):e.a0,a=Math.abs(l(r,p)-e.r)<=.5?e.a1+y(b(r)-e.a1):e.a1;return{...e,a0:i,a1:a}});if(T.some((e,t)=>e.t===`A`&&(e.a1-e.a0)*(_[t].a1-_[t].a0)<0))return null;let E=N(x(D(T,r)),r,o),O=[...g.values()].map(e=>e.plane),k=[...g.values()].every(({fillet:e})=>O.every(t=>i(t,e.side)>=-.5));for(let{fillet:e}of g.values())E.push(...C(k?O:[],{t:`disc`,cx:e.o[0],cy:e.o[1],r0:0,r1:e.r},o,e.o,2*e.r+n));return E}var M=(e,t,n)=>({t:`box`,x:e.x,y:e.y,w:e.w,h:e.h,color:t,...e.r>0?{radius:e.r}:null,...n?{shadow:n}:null});function N(e,t,n){let i=[];for(let a of e.slice(0,r))i.push(...w(a,t,n));return i}function P(e,t,n=!1){let r=e.map(e=>({start:[e.x,e.y],items:p(e,!0)})).filter(e=>e.items.length>0);if(!r.length)return[];if(r.every(e=>e.items.length===1&&_(e.items[0]))){let e=r.map(e=>e.items[0]),[n,i]=e;return n&&i&&e.length===2&&Math.hypot(n.cx-i.cx,n.cy-i.cy)<.5&&Math.abs(n.r-i.r)>.25&&n.a1-n.a0>0!=i.a1-i.a0>0?[O(n.cx,n.cy,Math.max(n.r,i.r),Math.min(n.r,i.r),t)]:e.map(e=>O(e.cx,e.cy,e.r,0,t))}let i=r[0];if(r.length===1&&i){let e=T(i.items);if(e)return[M(e,t,n)];let r=E(i.items);if(r)return j(i.items,r.base,t)??k(i.items,r.base,t)??N(x(r.outline),r.base,t)}let a=r.map(e=>m(e.items,e.start)),[o,s]=a;if(a.length===2&&o&&s&&f(o)*f(s)<0&&F(o,s))return N(S(o,s),{t:`plane`},t);let c=[];for(let e of a)c.push(...N(x(e),{t:`plane`},t));return c}function F(e,t){let n=e=>{let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a of e)t=Math.min(t,a[0]),n=Math.min(n,a[1]),r=Math.max(r,a[0]),i=Math.max(i,a[1]);return{x0:t,y0:n,x1:r,y1:i}},r=n(e),i=n(t);return i.x0>=r.x0-.5&&i.y0>=r.y0-.5&&i.x1<=r.x1+.5&&i.y1<=r.y1+.5}function I(e,t){let n=t.filter(e=>Number.isFinite(e)&&e>=0);n.length%2&&(n=[...n,...n]);let r=n.reduce((e,t)=>e+t,0);if(!n.length||r<=0)return[e.slice()];let i=0;for(let t=1;t<e.length;t++)i+=l(s(e,t-1),s(e,t));let a=i/r>300?i/r/300:1,o=[],c=0,u=n[0]*a,d=!0,f=[s(e,0)];for(let t=1;t<e.length;t++){let r=s(e,t-1),i=s(e,t),p=l(r,i);for(;p>1e-9;){let e=Math.min(u,p),t=e/p,s=[r[0]+(i[0]-r[0])*t,r[1]+(i[1]-r[1])*t];d&&f.push(s),r=s,p-=e,u-=e,u<=1e-9&&(d&&f.length>1&&o.push(f),d=!d,c=(c+1)%n.length,u=Math.max(n[c]*a,d?0:.5),f=[s])}}return d&&f.length>1&&o.push(f),o}var L=(e,t,n,r,i)=>{let a=i===`butt`?0:n,o=l(e,t)+a;return{t:`box`,x:(e[0]+t[0])/2-o/2,y:(e[1]+t[1])/2-n/2,w:o,h:n,color:r,...i===`round`?{radius:n/2}:null,rotate:Math.atan2(t[1]-e[1],t[0]-e[0])}},R=(e,t,n)=>({t:`box`,x:e[0]-t/2,y:e[1]-t/2,w:t,h:t,radius:t/2,color:n});function z(e,t){let r=e.width,i=e.paths.map(e=>({start:[e.x,e.y],items:p(e,e.closed),closed:e.closed})).filter(e=>e.items.length>0);if(!i.length||!(r>0))return[];let a=!e.paint.gradient&&e.dash.length===0,o=i[0];if(a&&i.length===1&&o){let{items:i}=o,a=i[0];if(i.length===1&&a&&_(a))return[O(a.cx,a.cy,a.r+r/2,Math.max(0,a.r-r/2),t([a.cx,a.cy]))];if(i.length===1&&a?.t===`A`){let i=a.r+r/2,o=a.r-r/2,s=t([a.cx,a.cy]),c={...B(a.cx,a.cy,i,a.a0),closed:!0,segs:[{t:`A`,cx:a.cx,cy:a.cy,r:i,a0:a.a0,a1:a.a1},o>.25?{t:`A`,cx:a.cx,cy:a.cy,r:o,a0:a.a1,a1:a.a0}:{t:`L`,x:a.cx,y:a.cy}]},l=e.cap===`round`,d=E(p(c,!0)),f=d&&k(p(c,!0),d.base,s,l?n:0)||P([c],s);return l&&f.push(R(u(a.cx,a.cy,a.r,a.a0),r,s),R(u(a.cx,a.cy,a.r,a.a1),r,s)),f}if(o.closed){let e=T(i);if(e)return[{t:`box`,x:e.x-r/2,y:e.y-r/2,w:e.w+r,h:e.h+r,radius:e.r>0?e.r+r/2:0,borderWidth:r,borderColor:t([e.x,e.y])}]}}let c=[];for(let n of i){let i=m(n.items,n.start,.25),a=h(n.closed?[...i,s(i,0)]:i,!1);if(a.length<2)continue;let o=e.dash.length?I(a,e.dash):[a];for(let n of o){let i=n.length,a=i>2&&l(s(n,0),s(n,i-1))<.001,o=Array(i).fill(0),u=[];if(e.cap!==`round`&&r>=1.5)for(let t=+!a;t<i-1;t++){let a=s(n,t===0?i-2:t-1),c=s(n,t),d=s(n,t+1),f=l(a,c),p=l(c,d),m=f>1e-9&&p>1e-9?((c[0]-a[0])*(d[0]-c[0])+(c[1]-a[1])*(d[1]-c[1]))/(f*p):1,h=Math.acos(Math.max(-1,Math.min(1,m)));e.cap===`butt`&&r>=6&&h<Math.PI/4?(o[t]=r/2*Math.tan(h/2)+.5,t===0&&(o[i-1]=o[0])):u.push(t)}for(let a=1;a<i;a++){let i=s(n,a-1),u=s(n,a),d=l(i,u),f=o[a-1],p=o[a];if(d>1e-9&&(f>0||p>0)){let e=(u[0]-i[0])/d,t=(u[1]-i[1])/d;i=[i[0]-e*f,i[1]-t*f],u=[u[0]+e*p,u[1]+t*p]}let m=[(i[0]+u[0])/2,(i[1]+u[1])/2];c.push(L(i,u,r,t(m),e.cap))}for(let e of u)c.push(R(s(n,e),r,t(s(n,e))))}}return c}var B=(e,t,n,r)=>{let[i,a]=u(e,t,n,r);return{x:i,y:a}},V=(e,t)=>e.length?t>=.999?e:[{t:`group`,opacity:t,children:e}]:[],H=e=>{let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a of e){let e=(e,a)=>{t=Math.min(t,e),n=Math.min(n,a),r=Math.max(r,e),i=Math.max(i,a)};e(a.x,a.y);for(let t of a.segs)t.t===`L`?e(t.x,t.y):(e(t.cx-t.r,t.cy-t.r),e(t.cx+t.r,t.cy+t.r))}return Number.isFinite(t)?[(t+r)/2,(n+i)/2]:[0,0]};function U(t){let n=e.paintAt(t.paint,...H(t.paths)),r=n.a*t.alpha;return r<=.002?[]:V(P(t.paths,e.opaqueCss(n),t.shadow),r)}function W(t){let{paint:n}=t,r=n.color.a;n.gradient?.stops.length&&(r=Math.max(...n.gradient.stops.map(e=>e.color.a)));let i=r*t.alpha;return i<=.002?[]:V(z(t,t=>{let i=e.paintAt(n,t[0],t[1]);return n.gradient&&r>0&&i.a<r-.001?e.cssWithAlpha(i,1/r):e.opaqueCss(i)}),i)}function G(t){return!t.text||t.alpha*t.color.a<=.002?[]:[{t:`text`,text:t.text,x:t.x,y:t.y,size:t.size,weight:t.weight,align:t.align,baseline:t.baseline,color:e.cssWithAlpha(t.color,t.alpha),rotate:t.rotate,...t.maxWidth===void 0?null:{maxWidth:t.maxWidth},...t.halo?{halo:e.cssWithAlpha(t.halo,t.alpha)}:null}]}function K(e){let t=[];for(let n of e)n.kind===`fill`?t.push(...U(n)):n.kind===`stroke`?t.push(...W(n)):t.push(...G(n));return t}exports.area=f,exports.convexPieces=x,exports.dashPolyline=I,exports.framePrims=K,exports.mergeConvex=b,exports.regionViews=P,exports.triangulate=v;
|
|
2
|
+
//# sourceMappingURL=geometry.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.cjs","names":["paintAt","opaqueCss","cssWithAlpha","require_recorder","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","strokeOp","alpha","paint","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,71 @@
|
|
|
1
|
+
import { DrawOp, Subpath, TextOp } from './recorder.cjs';
|
|
2
|
+
export type Pt = [number, number];
|
|
3
|
+
/** A drawable view */
|
|
4
|
+
export type Prim = {
|
|
5
|
+
t: "box";
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
w: number;
|
|
9
|
+
h: number;
|
|
10
|
+
color?: string;
|
|
11
|
+
radius?: number;
|
|
12
|
+
borderWidth?: number;
|
|
13
|
+
borderColor?: string;
|
|
14
|
+
/** Rotation around the center, radians */
|
|
15
|
+
rotate?: number;
|
|
16
|
+
shadow?: boolean;
|
|
17
|
+
} | {
|
|
18
|
+
/** Square clipping its children (`overflow: hidden`), rotated around its center */
|
|
19
|
+
t: "clip";
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
size: number;
|
|
23
|
+
rotate: number;
|
|
24
|
+
children: Prim[];
|
|
25
|
+
} | {
|
|
26
|
+
t: "group";
|
|
27
|
+
opacity: number;
|
|
28
|
+
children: Prim[];
|
|
29
|
+
} | {
|
|
30
|
+
t: "text";
|
|
31
|
+
text: string;
|
|
32
|
+
x: number;
|
|
33
|
+
y: number;
|
|
34
|
+
size: number;
|
|
35
|
+
weight: number;
|
|
36
|
+
align: TextOp["align"];
|
|
37
|
+
baseline: TextOp["baseline"];
|
|
38
|
+
color: string;
|
|
39
|
+
rotate: number;
|
|
40
|
+
maxWidth?: number;
|
|
41
|
+
halo?: string;
|
|
42
|
+
};
|
|
43
|
+
interface Piece {
|
|
44
|
+
pts: Pt[];
|
|
45
|
+
/** Per edge (pts[i] -> pts[i + 1]): shared with another piece of the shape */
|
|
46
|
+
internal: boolean[];
|
|
47
|
+
/** Outline half-planes trimming the overlap of the shared edges */
|
|
48
|
+
guards: Plane[];
|
|
49
|
+
}
|
|
50
|
+
/** Half-plane n·p >= d (n: unit normal pointing inside) */
|
|
51
|
+
interface Plane {
|
|
52
|
+
n: Pt;
|
|
53
|
+
d: number;
|
|
54
|
+
}
|
|
55
|
+
export declare const area: (P: readonly Pt[]) => number;
|
|
56
|
+
/** Ear clipping of a simple polygon: triangles as indexes */
|
|
57
|
+
export declare function triangulate(P: readonly Pt[]): number[][];
|
|
58
|
+
/**
|
|
59
|
+
* Merges triangles (indexes into V, positively oriented) into convex
|
|
60
|
+
* pieces across their shared edges (Hertel-Mehlhorn)
|
|
61
|
+
*/
|
|
62
|
+
export declare function mergeConvex(V: readonly Pt[], tris: readonly number[][]): Piece[];
|
|
63
|
+
/** Convex pieces of a simple polygon */
|
|
64
|
+
export declare function convexPieces(P: readonly Pt[]): Piece[];
|
|
65
|
+
/** Views filling the subpaths with one opaque color (nonzero rule) */
|
|
66
|
+
export declare function regionViews(paths: readonly Subpath[], color: string, shadow?: boolean): Prim[];
|
|
67
|
+
/** Splits a polyline into its dashes (canvas `setLineDash`) */
|
|
68
|
+
export declare function dashPolyline(points: readonly Pt[], dash: readonly number[]): Pt[][];
|
|
69
|
+
/** Views of a recorded frame, in drawing order */
|
|
70
|
+
export declare function framePrims(ops: readonly DrawOp[]): Prim[];
|
|
71
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { DrawOp, Subpath, TextOp } from './recorder.js';
|
|
2
|
+
export type Pt = [number, number];
|
|
3
|
+
/** A drawable view */
|
|
4
|
+
export type Prim = {
|
|
5
|
+
t: "box";
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
w: number;
|
|
9
|
+
h: number;
|
|
10
|
+
color?: string;
|
|
11
|
+
radius?: number;
|
|
12
|
+
borderWidth?: number;
|
|
13
|
+
borderColor?: string;
|
|
14
|
+
/** Rotation around the center, radians */
|
|
15
|
+
rotate?: number;
|
|
16
|
+
shadow?: boolean;
|
|
17
|
+
} | {
|
|
18
|
+
/** Square clipping its children (`overflow: hidden`), rotated around its center */
|
|
19
|
+
t: "clip";
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
size: number;
|
|
23
|
+
rotate: number;
|
|
24
|
+
children: Prim[];
|
|
25
|
+
} | {
|
|
26
|
+
t: "group";
|
|
27
|
+
opacity: number;
|
|
28
|
+
children: Prim[];
|
|
29
|
+
} | {
|
|
30
|
+
t: "text";
|
|
31
|
+
text: string;
|
|
32
|
+
x: number;
|
|
33
|
+
y: number;
|
|
34
|
+
size: number;
|
|
35
|
+
weight: number;
|
|
36
|
+
align: TextOp["align"];
|
|
37
|
+
baseline: TextOp["baseline"];
|
|
38
|
+
color: string;
|
|
39
|
+
rotate: number;
|
|
40
|
+
maxWidth?: number;
|
|
41
|
+
halo?: string;
|
|
42
|
+
};
|
|
43
|
+
interface Piece {
|
|
44
|
+
pts: Pt[];
|
|
45
|
+
/** Per edge (pts[i] -> pts[i + 1]): shared with another piece of the shape */
|
|
46
|
+
internal: boolean[];
|
|
47
|
+
/** Outline half-planes trimming the overlap of the shared edges */
|
|
48
|
+
guards: Plane[];
|
|
49
|
+
}
|
|
50
|
+
/** Half-plane n·p >= d (n: unit normal pointing inside) */
|
|
51
|
+
interface Plane {
|
|
52
|
+
n: Pt;
|
|
53
|
+
d: number;
|
|
54
|
+
}
|
|
55
|
+
export declare const area: (P: readonly Pt[]) => number;
|
|
56
|
+
/** Ear clipping of a simple polygon: triangles as indexes */
|
|
57
|
+
export declare function triangulate(P: readonly Pt[]): number[][];
|
|
58
|
+
/**
|
|
59
|
+
* Merges triangles (indexes into V, positively oriented) into convex
|
|
60
|
+
* pieces across their shared edges (Hertel-Mehlhorn)
|
|
61
|
+
*/
|
|
62
|
+
export declare function mergeConvex(V: readonly Pt[], tris: readonly number[][]): Piece[];
|
|
63
|
+
/** Convex pieces of a simple polygon */
|
|
64
|
+
export declare function convexPieces(P: readonly Pt[]): Piece[];
|
|
65
|
+
/** Views filling the subpaths with one opaque color (nonzero rule) */
|
|
66
|
+
export declare function regionViews(paths: readonly Subpath[], color: string, shadow?: boolean): Prim[];
|
|
67
|
+
/** Splits a polyline into its dashes (canvas `setLineDash`) */
|
|
68
|
+
export declare function dashPolyline(points: readonly Pt[], dash: readonly number[]): Pt[][];
|
|
69
|
+
/** Views of a recorded frame, in drawing order */
|
|
70
|
+
export declare function framePrims(ops: readonly DrawOp[]): Prim[];
|
|
71
|
+
export {};
|