minerva-design 1.4.0 → 1.6.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 +15 -0
- package/README.md +21 -21
- package/custom-elements.json +3072 -611
- package/dist/angular/fesm2022/minerva-angular.mjs +1491 -5
- package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
- package/dist/angular/types/minerva-angular.d.ts +595 -5
- package/dist/charts/canvas.d.cts +4 -3
- package/dist/charts/canvas.d.ts +4 -3
- package/dist/charts/core.cjs +1 -1
- package/dist/charts/core.d.cts +6 -4
- package/dist/charts/core.d.ts +6 -4
- package/dist/charts/core.js +24 -16
- package/dist/charts/engine/axis.cjs +1 -1
- package/dist/charts/engine/axis.cjs.map +1 -1
- package/dist/charts/engine/axis.js +42 -19
- 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.js +155 -127
- 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.js +370 -255
- 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 +48 -2
- 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 +34 -1
- package/dist/charts/engine/controller.d.ts +34 -1
- package/dist/charts/engine/controller.js +318 -273
- 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 +3 -1
- package/dist/charts/engine/data.d.ts +3 -1
- package/dist/charts/engine/data.js +6 -4
- 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 +6 -0
- package/dist/charts/engine/format.d.ts +6 -0
- package/dist/charts/engine/format.js +15 -2
- 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 +1708 -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 +339 -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 +76 -0
- package/dist/charts/engine/graph/force.d.ts +76 -0
- package/dist/charts/engine/graph/force.js +423 -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 +50 -0
- package/dist/charts/engine/graph/geometry.d.ts +50 -0
- package/dist/charts/engine/graph/geometry.js +197 -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 +52 -0
- package/dist/charts/engine/graph/model.d.ts +52 -0
- package/dist/charts/engine/graph/model.js +108 -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 +640 -0
- package/dist/charts/engine/graph/types.d.ts +640 -0
- package/dist/charts/engine/graph/worker.cjs +52 -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 +135 -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 +131 -112
- package/dist/charts/engine/items.js.map +1 -1
- package/dist/charts/engine/labels.cjs +1 -1
- package/dist/charts/engine/labels.cjs.map +1 -1
- package/dist/charts/engine/labels.d.cts +17 -0
- package/dist/charts/engine/labels.d.ts +17 -0
- package/dist/charts/engine/labels.js +28 -4
- package/dist/charts/engine/labels.js.map +1 -1
- package/dist/charts/engine/layout.cjs +1 -1
- package/dist/charts/engine/layout.cjs.map +1 -1
- package/dist/charts/engine/layout.d.cts +9 -0
- package/dist/charts/engine/layout.d.ts +9 -0
- package/dist/charts/engine/layout.js +11 -2
- package/dist/charts/engine/layout.js.map +1 -1
- package/dist/charts/engine/model.cjs +1 -1
- package/dist/charts/engine/model.cjs.map +1 -1
- package/dist/charts/engine/model.d.cts +73 -3
- package/dist/charts/engine/model.d.ts +73 -3
- package/dist/charts/engine/model.js +258 -154
- package/dist/charts/engine/model.js.map +1 -1
- package/dist/charts/engine/orderbook/field.cjs +37 -0
- package/dist/charts/engine/orderbook/field.cjs.map +1 -0
- package/dist/charts/engine/orderbook/field.d.cts +92 -0
- package/dist/charts/engine/orderbook/field.d.ts +92 -0
- package/dist/charts/engine/orderbook/field.js +297 -0
- package/dist/charts/engine/orderbook/field.js.map +1 -0
- package/dist/charts/engine/orderbook/format.cjs +1 -1
- package/dist/charts/engine/orderbook/format.cjs.map +1 -1
- package/dist/charts/engine/orderbook/format.d.cts +3 -2
- package/dist/charts/engine/orderbook/format.d.ts +3 -2
- package/dist/charts/engine/orderbook/format.js +5 -5
- package/dist/charts/engine/orderbook/format.js.map +1 -1
- package/dist/charts/engine/orderbook/heatmap.cjs +1 -1
- package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -1
- package/dist/charts/engine/orderbook/heatmap.js +566 -475
- package/dist/charts/engine/orderbook/heatmap.js.map +1 -1
- package/dist/charts/engine/orderbook/host.cjs +1 -1
- package/dist/charts/engine/orderbook/host.cjs.map +1 -1
- package/dist/charts/engine/orderbook/host.d.cts +8 -1
- package/dist/charts/engine/orderbook/host.d.ts +8 -1
- package/dist/charts/engine/orderbook/host.js +27 -5
- package/dist/charts/engine/orderbook/host.js.map +1 -1
- package/dist/charts/engine/orderbook/ladder.cjs +1 -1
- package/dist/charts/engine/orderbook/ladder.cjs.map +1 -1
- package/dist/charts/engine/orderbook/ladder.js +1 -1
- package/dist/charts/engine/orderbook/ladder.js.map +1 -1
- 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 +42 -0
- package/dist/charts/engine/orderbook/layout.d.ts +42 -0
- package/dist/charts/engine/orderbook/layout.js +76 -0
- package/dist/charts/engine/orderbook/layout.js.map +1 -0
- package/dist/charts/engine/orderbook/tape.cjs +1 -1
- package/dist/charts/engine/orderbook/tape.cjs.map +1 -1
- package/dist/charts/engine/orderbook/tape.js +4 -4
- package/dist/charts/engine/orderbook/tape.js.map +1 -1
- package/dist/charts/engine/orderbook/types.d.cts +27 -3
- package/dist/charts/engine/orderbook/types.d.ts +27 -3
- package/dist/charts/engine/overlay.cjs +1 -1
- package/dist/charts/engine/overlay.cjs.map +1 -1
- package/dist/charts/engine/overlay.d.cts +27 -0
- package/dist/charts/engine/overlay.d.ts +27 -0
- package/dist/charts/engine/overlay.js +34 -12
- 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 +35 -3
- package/dist/charts/engine/presets.d.ts +35 -3
- package/dist/charts/engine/presets.js +121 -101
- package/dist/charts/engine/presets.js.map +1 -1
- package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
- package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
- package/dist/charts/engine/renderers/canvas2d.js +13 -9
- package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
- package/dist/charts/engine/renderers/detect.cjs +1 -1
- package/dist/charts/engine/renderers/detect.cjs.map +1 -1
- package/dist/charts/engine/renderers/detect.d.cts +2 -1
- package/dist/charts/engine/renderers/detect.d.ts +2 -1
- package/dist/charts/engine/renderers/detect.js +23 -21
- package/dist/charts/engine/renderers/detect.js.map +1 -1
- package/dist/charts/engine/renderers/follow.cjs +2 -0
- package/dist/charts/engine/renderers/follow.cjs.map +1 -0
- package/dist/charts/engine/renderers/follow.d.cts +8 -0
- package/dist/charts/engine/renderers/follow.d.ts +8 -0
- package/dist/charts/engine/renderers/follow.js +10 -0
- package/dist/charts/engine/renderers/follow.js.map +1 -0
- package/dist/charts/engine/renderers/gl-budget.cjs +2 -0
- package/dist/charts/engine/renderers/gl-budget.cjs.map +1 -0
- package/dist/charts/engine/renderers/gl-budget.d.cts +32 -0
- package/dist/charts/engine/renderers/gl-budget.d.ts +32 -0
- package/dist/charts/engine/renderers/gl-budget.js +95 -0
- package/dist/charts/engine/renderers/gl-budget.js.map +1 -0
- package/dist/charts/engine/renderers/gl.cjs +1 -1
- package/dist/charts/engine/renderers/gl.cjs.map +1 -1
- package/dist/charts/engine/renderers/gl.js +1 -1
- package/dist/charts/engine/renderers/gl.js.map +1 -1
- package/dist/charts/engine/renderers/shaders.cjs +9 -6
- package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
- package/dist/charts/engine/renderers/shaders.d.cts +1 -1
- package/dist/charts/engine/renderers/shaders.d.ts +1 -1
- package/dist/charts/engine/renderers/shaders.js +9 -6
- package/dist/charts/engine/renderers/shaders.js.map +1 -1
- package/dist/charts/engine/renderers/types.cjs.map +1 -1
- package/dist/charts/engine/renderers/types.d.cts +2 -0
- package/dist/charts/engine/renderers/types.d.ts +2 -0
- package/dist/charts/engine/renderers/types.js.map +1 -1
- package/dist/charts/engine/renderers/webgl.cjs +1 -1
- package/dist/charts/engine/renderers/webgl.cjs.map +1 -1
- package/dist/charts/engine/renderers/webgl.js +85 -64
- package/dist/charts/engine/renderers/webgl.js.map +1 -1
- 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.js +72 -58
- package/dist/charts/engine/renderers/webgl2.js.map +1 -1
- package/dist/charts/engine/renderers/webgpu.cjs +1 -1
- package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
- package/dist/charts/engine/renderers/webgpu.js +1 -1
- package/dist/charts/engine/renderers/webgpu.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 +104 -4
- package/dist/charts/engine/scene.d.ts +104 -4
- package/dist/charts/engine/scene.js +412 -193
- package/dist/charts/engine/scene.js.map +1 -1
- package/dist/charts/engine/shapes/bullet.cjs +1 -1
- package/dist/charts/engine/shapes/bullet.cjs.map +1 -1
- package/dist/charts/engine/shapes/bullet.js +110 -110
- package/dist/charts/engine/shapes/bullet.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.js +4 -1
- 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 +419 -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 +5 -1
- package/dist/charts/engine/shapes/draw.d.ts +5 -1
- package/dist/charts/engine/shapes/draw.js +47 -17
- package/dist/charts/engine/shapes/draw.js.map +1 -1
- package/dist/charts/engine/shapes/hit.cjs +1 -1
- package/dist/charts/engine/shapes/hit.cjs.map +1 -1
- package/dist/charts/engine/shapes/hit.d.cts +3 -1
- package/dist/charts/engine/shapes/hit.d.ts +3 -1
- package/dist/charts/engine/shapes/hit.js +75 -46
- package/dist/charts/engine/shapes/hit.js.map +1 -1
- package/dist/charts/engine/shapes/index.d.cts +3 -2
- package/dist/charts/engine/shapes/index.d.ts +3 -2
- package/dist/charts/engine/shapes/labels.cjs +1 -1
- package/dist/charts/engine/shapes/labels.cjs.map +1 -1
- package/dist/charts/engine/shapes/labels.js +12 -4
- package/dist/charts/engine/shapes/labels.js.map +1 -1
- 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 +3 -1
- package/dist/charts/engine/shapes/layout.d.ts +3 -1
- package/dist/charts/engine/shapes/layout.js +106 -78
- package/dist/charts/engine/shapes/layout.js.map +1 -1
- 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 +33 -3
- package/dist/charts/engine/shapes/scene.d.ts +33 -3
- package/dist/charts/engine/shapes/scene.js +62 -19
- package/dist/charts/engine/shapes/scene.js.map +1 -1
- package/dist/charts/engine/shapes/types.d.cts +121 -8
- package/dist/charts/engine/shapes/types.d.ts +121 -8
- 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 +1 -1
- package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -1
- package/dist/charts/engine/three-d/canvas2d.d.cts +41 -3
- package/dist/charts/engine/three-d/canvas2d.d.ts +41 -3
- package/dist/charts/engine/three-d/canvas2d.js +166 -67
- package/dist/charts/engine/three-d/canvas2d.js.map +1 -1
- package/dist/charts/engine/three-d/chart.cjs +1 -1
- package/dist/charts/engine/three-d/chart.cjs.map +1 -1
- package/dist/charts/engine/three-d/chart.js +219 -215
- package/dist/charts/engine/three-d/chart.js.map +1 -1
- package/dist/charts/engine/three-d/detect.cjs +1 -1
- package/dist/charts/engine/three-d/detect.cjs.map +1 -1
- package/dist/charts/engine/three-d/detect.d.cts +3 -2
- package/dist/charts/engine/three-d/detect.d.ts +3 -2
- package/dist/charts/engine/three-d/detect.js +22 -20
- package/dist/charts/engine/three-d/detect.js.map +1 -1
- package/dist/charts/engine/three-d/geometry.cjs +1 -1
- package/dist/charts/engine/three-d/geometry.cjs.map +1 -1
- package/dist/charts/engine/three-d/geometry.d.cts +6 -0
- package/dist/charts/engine/three-d/geometry.d.ts +6 -0
- package/dist/charts/engine/three-d/geometry.js +106 -90
- package/dist/charts/engine/three-d/geometry.js.map +1 -1
- package/dist/charts/engine/three-d/model.cjs +1 -1
- package/dist/charts/engine/three-d/model.cjs.map +1 -1
- package/dist/charts/engine/three-d/model.d.cts +2 -0
- package/dist/charts/engine/three-d/model.d.ts +2 -0
- package/dist/charts/engine/three-d/model.js +2 -0
- package/dist/charts/engine/three-d/model.js.map +1 -1
- package/dist/charts/engine/three-d/oit.cjs +109 -0
- package/dist/charts/engine/three-d/oit.cjs.map +1 -0
- package/dist/charts/engine/three-d/oit.d.cts +34 -0
- package/dist/charts/engine/three-d/oit.d.ts +34 -0
- package/dist/charts/engine/three-d/oit.js +111 -0
- package/dist/charts/engine/three-d/oit.js.map +1 -0
- package/dist/charts/engine/three-d/overlay.cjs +1 -1
- package/dist/charts/engine/three-d/overlay.cjs.map +1 -1
- package/dist/charts/engine/three-d/overlay.js +43 -36
- package/dist/charts/engine/three-d/overlay.js.map +1 -1
- package/dist/charts/engine/three-d/render-types.cjs +1 -1
- package/dist/charts/engine/three-d/render-types.cjs.map +1 -1
- package/dist/charts/engine/three-d/render-types.d.cts +37 -3
- package/dist/charts/engine/three-d/render-types.d.ts +37 -3
- package/dist/charts/engine/three-d/render-types.js +6 -10
- package/dist/charts/engine/three-d/render-types.js.map +1 -1
- package/dist/charts/engine/three-d/shaders.cjs +109 -48
- package/dist/charts/engine/three-d/shaders.cjs.map +1 -1
- package/dist/charts/engine/three-d/shaders.d.cts +12 -5
- package/dist/charts/engine/three-d/shaders.d.ts +12 -5
- package/dist/charts/engine/three-d/shaders.js +118 -55
- package/dist/charts/engine/three-d/shaders.js.map +1 -1
- package/dist/charts/engine/three-d/sort.cjs +1 -1
- package/dist/charts/engine/three-d/sort.cjs.map +1 -1
- package/dist/charts/engine/three-d/sort.d.cts +18 -5
- package/dist/charts/engine/three-d/sort.d.ts +18 -5
- package/dist/charts/engine/three-d/sort.js +129 -43
- package/dist/charts/engine/three-d/sort.js.map +1 -1
- package/dist/charts/engine/three-d/types.d.cts +36 -0
- package/dist/charts/engine/three-d/types.d.ts +36 -0
- package/dist/charts/engine/three-d/webgl.cjs +1 -1
- package/dist/charts/engine/three-d/webgl.cjs.map +1 -1
- package/dist/charts/engine/three-d/webgl.d.cts +9 -0
- package/dist/charts/engine/three-d/webgl.d.ts +9 -0
- package/dist/charts/engine/three-d/webgl.js +199 -74
- package/dist/charts/engine/three-d/webgl.js.map +1 -1
- package/dist/charts/engine/three-d/webgpu.cjs +1 -1
- package/dist/charts/engine/three-d/webgpu.cjs.map +1 -1
- package/dist/charts/engine/three-d/webgpu.js +231 -94
- package/dist/charts/engine/three-d/webgpu.js.map +1 -1
- package/dist/charts/engine/trading/chart.cjs +1 -1
- package/dist/charts/engine/trading/chart.cjs.map +1 -1
- package/dist/charts/engine/trading/chart.d.cts +10 -1
- package/dist/charts/engine/trading/chart.d.ts +10 -1
- package/dist/charts/engine/trading/chart.js +1677 -813
- package/dist/charts/engine/trading/chart.js.map +1 -1
- package/dist/charts/engine/trading/drawings.cjs +2 -1
- package/dist/charts/engine/trading/drawings.cjs.map +1 -1
- package/dist/charts/engine/trading/drawings.d.cts +53 -9
- package/dist/charts/engine/trading/drawings.d.ts +53 -9
- package/dist/charts/engine/trading/drawings.js +346 -71
- package/dist/charts/engine/trading/drawings.js.map +1 -1
- package/dist/charts/engine/trading/format.cjs +1 -1
- package/dist/charts/engine/trading/format.cjs.map +1 -1
- package/dist/charts/engine/trading/format.d.cts +19 -0
- package/dist/charts/engine/trading/format.d.ts +19 -0
- package/dist/charts/engine/trading/format.js +65 -21
- package/dist/charts/engine/trading/format.js.map +1 -1
- package/dist/charts/engine/trading/geometry.cjs +1 -1
- package/dist/charts/engine/trading/geometry.cjs.map +1 -1
- package/dist/charts/engine/trading/geometry.d.cts +16 -0
- package/dist/charts/engine/trading/geometry.d.ts +16 -0
- package/dist/charts/engine/trading/geometry.js +19 -4
- package/dist/charts/engine/trading/geometry.js.map +1 -1
- package/dist/charts/engine/trading/index.cjs +1 -1
- package/dist/charts/engine/trading/index.d.cts +2 -1
- package/dist/charts/engine/trading/index.d.ts +2 -1
- package/dist/charts/engine/trading/index.js +4 -3
- package/dist/charts/engine/trading/indicators.cjs +1 -1
- package/dist/charts/engine/trading/indicators.cjs.map +1 -1
- package/dist/charts/engine/trading/indicators.d.cts +180 -10
- package/dist/charts/engine/trading/indicators.d.ts +180 -10
- package/dist/charts/engine/trading/indicators.js +449 -173
- package/dist/charts/engine/trading/indicators.js.map +1 -1
- package/dist/charts/engine/trading/labels.cjs +1 -1
- package/dist/charts/engine/trading/labels.cjs.map +1 -1
- package/dist/charts/engine/trading/labels.js +104 -4
- package/dist/charts/engine/trading/labels.js.map +1 -1
- package/dist/charts/engine/trading/store.cjs +1 -1
- package/dist/charts/engine/trading/store.cjs.map +1 -1
- package/dist/charts/engine/trading/store.d.cts +21 -0
- package/dist/charts/engine/trading/store.d.ts +21 -0
- package/dist/charts/engine/trading/store.js +22 -1
- package/dist/charts/engine/trading/store.js.map +1 -1
- package/dist/charts/engine/trading/studies.cjs +1 -1
- package/dist/charts/engine/trading/studies.cjs.map +1 -1
- package/dist/charts/engine/trading/studies.d.cts +49 -8
- package/dist/charts/engine/trading/studies.d.ts +49 -8
- package/dist/charts/engine/trading/studies.js +352 -93
- package/dist/charts/engine/trading/studies.js.map +1 -1
- 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 +514 -16
- package/dist/charts/engine/trading/types.d.ts +514 -16
- package/dist/charts/engine/types.d.cts +106 -11
- package/dist/charts/engine/types.d.ts +106 -11
- package/dist/charts/index.cjs +1 -1
- package/dist/charts/index.d.cts +3 -2
- package/dist/charts/index.d.ts +3 -2
- package/dist/charts/index.js +30 -22
- package/dist/charts/react/charts.cjs +1 -1
- package/dist/charts/react/charts.cjs.map +1 -1
- package/dist/charts/react/charts.js +51 -34
- 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 +219 -0
- package/dist/charts/react/graph.d.ts +219 -0
- package/dist/charts/react/graph.js +160 -0
- package/dist/charts/react/graph.js.map +1 -0
- package/dist/charts/react/orderbook.cjs +1 -1
- package/dist/charts/react/orderbook.cjs.map +1 -1
- package/dist/charts/react/orderbook.d.cts +3 -1
- package/dist/charts/react/orderbook.d.ts +3 -1
- package/dist/charts/react/orderbook.js +1 -0
- package/dist/charts/react/orderbook.js.map +1 -1
- package/dist/charts/react/shapes.cjs +1 -1
- package/dist/charts/react/shapes.cjs.map +1 -1
- package/dist/charts/react/shapes.d.cts +88 -4
- package/dist/charts/react/shapes.d.ts +88 -4
- package/dist/charts/react/shapes.js +55 -12
- package/dist/charts/react/shapes.js.map +1 -1
- package/dist/charts/react/three-d.cjs +1 -1
- package/dist/charts/react/three-d.cjs.map +1 -1
- package/dist/charts/react/three-d.d.cts +7 -0
- package/dist/charts/react/three-d.d.ts +7 -0
- package/dist/charts/react/three-d.js +14 -13
- package/dist/charts/react/three-d.js.map +1 -1
- package/dist/charts/react/trading.cjs +1 -1
- package/dist/charts/react/trading.cjs.map +1 -1
- package/dist/charts/react/trading.d.cts +54 -2
- package/dist/charts/react/trading.d.ts +54 -2
- package/dist/charts/react/trading.js +68 -37
- package/dist/charts/react/trading.js.map +1 -1
- package/dist/charts/react/types.d.cts +11 -0
- package/dist/charts/react/types.d.ts +11 -0
- 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 +5 -4
- 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 +42 -19
- 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 +296 -251
- 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 +6 -4
- 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 +15 -2
- package/dist/native/charts/src/engine/format.js.map +1 -1
- package/dist/native/charts/src/engine/labels.cjs +1 -1
- package/dist/native/charts/src/engine/labels.cjs.map +1 -1
- package/dist/native/charts/src/engine/labels.js +42 -5
- package/dist/native/charts/src/engine/labels.js.map +1 -1
- 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 +11 -2
- package/dist/native/charts/src/engine/layout.js.map +1 -1
- 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 +278 -174
- package/dist/native/charts/src/engine/model.js.map +1 -1
- package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
- 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 +110 -90
- package/dist/native/charts/src/engine/presets.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 +421 -202
- package/dist/native/charts/src/engine/scene.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/bullet.cjs +1 -1
- package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -1
- package/dist/native/charts/src/engine/shapes/bullet.js +110 -110
- package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/calendar.cjs +1 -1
- package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -1
- package/dist/native/charts/src/engine/shapes/calendar.js +21 -16
- package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -1
- 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 +419 -0
- package/dist/native/charts/src/engine/shapes/chord.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/draw.cjs +1 -1
- package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -1
- package/dist/native/charts/src/engine/shapes/draw.js +47 -17
- package/dist/native/charts/src/engine/shapes/draw.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/hit.cjs +1 -1
- package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -1
- package/dist/native/charts/src/engine/shapes/hit.js +73 -44
- package/dist/native/charts/src/engine/shapes/hit.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/labels.cjs +1 -1
- package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -1
- package/dist/native/charts/src/engine/shapes/labels.js +12 -4
- package/dist/native/charts/src/engine/shapes/labels.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/layout.cjs +2 -2
- package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -1
- package/dist/native/charts/src/engine/shapes/layout.js +136 -94
- package/dist/native/charts/src/engine/shapes/layout.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/scene.cjs +1 -1
- package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -1
- package/dist/native/charts/src/engine/shapes/scene.js +62 -19
- package/dist/native/charts/src/engine/shapes/scene.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.js +127 -115
- 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.js +8 -5
- package/dist/native/components/Chart/charts.js.map +1 -1
- 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.d.cts +6 -1
- package/dist/native/components/Chart/scene.d.ts +6 -1
- package/dist/native/components/Chart/scene.js +226 -108
- package/dist/native/components/Chart/scene.js.map +1 -1
- package/dist/native/components/Chart/types.d.cts +7 -1
- package/dist/native/components/Chart/types.d.ts +7 -1
- package/dist/native/components/Charts/charts.cjs +1 -1
- package/dist/native/components/Charts/charts.cjs.map +1 -1
- package/dist/native/components/Charts/charts.js +60 -43
- package/dist/native/components/Charts/charts.js.map +1 -1
- package/dist/native/components/Charts/types.d.cts +11 -0
- package/dist/native/components/Charts/types.d.ts +11 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs +1 -1
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -1
- package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +1 -1
- package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +1 -1
- package/dist/native/components/ShapeChart/ShapeChartBase.js +97 -106
- package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -1
- package/dist/native/components/ShapeChart/charts.cjs +1 -1
- package/dist/native/components/ShapeChart/charts.cjs.map +1 -1
- package/dist/native/components/ShapeChart/charts.d.cts +6 -1
- package/dist/native/components/ShapeChart/charts.d.ts +6 -1
- package/dist/native/components/ShapeChart/charts.js +138 -96
- package/dist/native/components/ShapeChart/charts.js.map +1 -1
- package/dist/native/components/ShapeChart/draw.cjs +1 -1
- package/dist/native/components/ShapeChart/draw.cjs.map +1 -1
- package/dist/native/components/ShapeChart/draw.d.cts +1 -1
- package/dist/native/components/ShapeChart/draw.d.ts +1 -1
- package/dist/native/components/ShapeChart/draw.js +26 -17
- package/dist/native/components/ShapeChart/draw.js.map +1 -1
- package/dist/native/components/ShapeChart/geometry.cjs +1 -1
- package/dist/native/components/ShapeChart/geometry.cjs.map +1 -1
- package/dist/native/components/ShapeChart/geometry.js +233 -70
- package/dist/native/components/ShapeChart/geometry.js.map +1 -1
- package/dist/native/components/ShapeChart/index.cjs +1 -1
- package/dist/native/components/ShapeChart/index.d.cts +1 -1
- package/dist/native/components/ShapeChart/index.d.ts +1 -1
- package/dist/native/components/ShapeChart/index.js +2 -2
- package/dist/native/components/ShapeChart/recorder.cjs +1 -1
- package/dist/native/components/ShapeChart/recorder.cjs.map +1 -1
- package/dist/native/components/ShapeChart/recorder.d.cts +10 -1
- package/dist/native/components/ShapeChart/recorder.d.ts +10 -1
- package/dist/native/components/ShapeChart/recorder.js +19 -10
- package/dist/native/components/ShapeChart/recorder.js.map +1 -1
- package/dist/native/components/ShapeChart/types.d.cts +95 -8
- package/dist/native/components/ShapeChart/types.d.ts +95 -8
- package/dist/native/index.cjs +1 -1
- package/dist/native/index.js +2 -2
- package/dist/native/source/components/Chart/ChartBase.tsx +19 -6
- package/dist/native/source/components/Chart/charts.tsx +10 -3
- package/dist/native/source/components/Chart/scene.tsx +243 -14
- package/dist/native/source/components/Chart/types.ts +7 -0
- package/dist/native/source/components/Charts/charts.tsx +37 -2
- package/dist/native/source/components/Charts/types.ts +11 -0
- package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +10 -34
- package/dist/native/source/components/ShapeChart/charts.tsx +91 -35
- package/dist/native/source/components/ShapeChart/draw.tsx +39 -8
- package/dist/native/source/components/ShapeChart/geometry.ts +376 -25
- package/dist/native/source/components/ShapeChart/index.ts +1 -0
- package/dist/native/source/components/ShapeChart/recorder.ts +20 -5
- package/dist/native/source/components/ShapeChart/types.ts +99 -6
- package/dist/native/source/manifest.ts +1 -0
- package/dist/taro/chart-a11y.d.ts +7 -0
- package/dist/taro/charts.d.ts +29 -6
- package/dist/taro/index.js +3129 -1902
- package/dist/taro/shape-charts.d.ts +99 -5
- package/dist/uni/AreaChart.vue +2 -1
- package/dist/uni/AreaChart.vue.d.ts +5 -1
- package/dist/uni/Badge.vue.d.ts +1 -1
- package/dist/uni/BarChart.vue +2 -1
- package/dist/uni/BarChart.vue.d.ts +5 -1
- package/dist/uni/BoxPlotChart.vue +2 -1
- package/dist/uni/BoxPlotChart.vue.d.ts +8 -0
- package/dist/uni/BubbleChart.vue +2 -1
- package/dist/uni/BubbleChart.vue.d.ts +4 -0
- package/dist/uni/BulletChart.vue.d.ts +4 -0
- package/dist/uni/CalendarHeatmap.vue.d.ts +2 -0
- package/dist/uni/CandlestickChart.vue +2 -1
- package/dist/uni/CandlestickChart.vue.d.ts +4 -0
- package/dist/uni/Chart.vue +2 -1
- 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/Divider.vue.d.ts +1 -1
- package/dist/uni/DonutChart.vue.d.ts +5 -1
- package/dist/uni/FunnelChart.vue.d.ts +4 -0
- package/dist/uni/GanttChart.vue +2 -1
- package/dist/uni/GanttChart.vue.d.ts +15 -0
- package/dist/uni/GaugeChart.vue.d.ts +5 -1
- package/dist/uni/HeatmapChart.vue +2 -1
- package/dist/uni/HeatmapChart.vue.d.ts +8 -2
- package/dist/uni/HistogramChart.vue +2 -1
- package/dist/uni/HistogramChart.vue.d.ts +4 -0
- package/dist/uni/HorizontalBarChart.vue +2 -1
- package/dist/uni/HorizontalBarChart.vue.d.ts +3 -1
- package/dist/uni/LineChart.vue +2 -1
- package/dist/uni/LineChart.vue.d.ts +4 -0
- package/dist/uni/MixedChart.vue +2 -1
- package/dist/uni/MixedChart.vue.d.ts +4 -0
- package/dist/uni/PieChart.vue.d.ts +5 -1
- package/dist/uni/QuadrantChart.vue +2 -1
- package/dist/uni/QuadrantChart.vue.d.ts +4 -0
- package/dist/uni/RadarChart.vue.d.ts +4 -0
- package/dist/uni/RadialBarChart.vue.d.ts +4 -0
- package/dist/uni/RangeAreaChart.vue +2 -1
- package/dist/uni/RangeAreaChart.vue.d.ts +4 -0
- package/dist/uni/SankeyChart.vue.d.ts +4 -0
- package/dist/uni/ScatterChart.vue +2 -1
- package/dist/uni/ScatterChart.vue.d.ts +4 -0
- package/dist/uni/Sparkline.vue +2 -1
- package/dist/uni/Sparkline.vue.d.ts +4 -0
- package/dist/uni/SunburstChart.vue.d.ts +4 -0
- package/dist/uni/ToastProvider.vue.d.ts +1 -1
- package/dist/uni/TreemapChart.vue.d.ts +4 -0
- package/dist/uni/WaterfallChart.vue +2 -1
- package/dist/uni/WaterfallChart.vue.d.ts +9 -0
- package/dist/uni/chart-a11y.d.ts +7 -0
- package/dist/uni/chart-a11y.js +29 -0
- package/dist/uni/chart-canvas.d.ts +12 -0
- package/dist/uni/chart-canvas.js +15 -1
- package/dist/uni/chart-types.d.ts +36 -5
- package/dist/uni/chart-types.js +31 -3
- package/dist/uni/charts-canvas.js +3 -2
- package/dist/uni/index.d.ts +2 -1
- package/dist/uni/index.js +1 -0
- package/dist/uni/manifest.d.ts +7 -0
- package/dist/uni/manifest.js +10 -0
- package/dist/uni/named-chart-options.d.ts +11 -2
- package/dist/uni/named-chart-options.js +21 -1
- package/dist/uni/shape-chart-canvas.d.ts +3 -3
- package/dist/uni/shape-chart-canvas.js +17 -58
- package/dist/uni/shape-chart-types.d.ts +53 -3
- package/dist/uni/shape-chart-types.js +45 -1
- 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/Bar3DChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +8 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -1
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +8 -2
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
- 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 +181 -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/GanttChart.vue.d.ts +19 -0
- package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -1
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +12 -1
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/vue/components/Chart/GraphChart.vue.d.ts +186 -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 +9 -5
- package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -1
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +3 -1
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/vue/components/Chart/Line3DChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +2 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +2 -0
- package/dist/vue/components/Chart/TradingChart.vue.d.ts +58 -1
- package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -1
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/vue/components/Chart/TreeChart.vue.d.ts +174 -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/WaterfallChart.vue.d.ts +12 -1
- package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -1
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +8 -2
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/vue/components/Chart/graph.d.ts +156 -0
- package/dist/vue/components/Chart/graph.js +137 -0
- package/dist/vue/components/Chart/graph.js.map +1 -0
- package/dist/vue/components/Chart/index.d.ts +5 -1
- package/dist/vue/components/Chart/index.js +5 -1
- package/dist/vue/components/Chart/orderbook.d.ts +5 -1
- package/dist/vue/components/Chart/orderbook.js +2 -0
- package/dist/vue/components/Chart/orderbook.js.map +1 -1
- package/dist/vue/components/Chart/three-d.d.ts +3 -0
- package/dist/vue/components/Chart/three-d.js +2 -0
- package/dist/vue/components/Chart/three-d.js.map +1 -1
- package/dist/vue/components/Chart/trading.d.ts +30 -3
- package/dist/vue/components/Chart/trading.js +9 -0
- package/dist/vue/components/Chart/trading.js.map +1 -1
- package/dist/vue/components/Chart/types.d.ts +74 -2
- package/dist/vue/global.d.ts +2 -38
- package/dist/vue/groups/charts.js +10 -2
- package/dist/vue/groups/charts.js.map +1 -1
- package/dist/vue/index.js +6 -2
- 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 +6 -11
- package/dist/vue/plugin.js.map +1 -1
- package/dist/weapp/area-chart/index.wxml +1 -1
- package/dist/weapp/bar-chart/index.wxml +1 -1
- package/dist/weapp/box-plot-chart/index.wxml +1 -1
- package/dist/weapp/bubble-chart/index.wxml +1 -1
- package/dist/weapp/candlestick-chart/index.wxml +1 -1
- package/dist/weapp/chart/index.wxml +1 -1
- package/dist/weapp/charts/canvas.js +1987 -175
- package/dist/weapp/charts/core.js +3 -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 +148 -57
- package/dist/weapp/gantt-chart/index.wxml +1 -1
- package/dist/weapp/heatmap-chart/index.wxml +1 -1
- package/dist/weapp/histogram-chart/index.wxml +1 -1
- package/dist/weapp/horizontal-bar-chart/index.wxml +1 -1
- package/dist/weapp/line-chart/index.wxml +1 -1
- package/dist/weapp/mixed-chart/index.wxml +1 -1
- package/dist/weapp/quadrant-chart/index.wxml +1 -1
- package/dist/weapp/range-area-chart/index.wxml +1 -1
- package/dist/weapp/scatter-chart/index.wxml +1 -1
- package/dist/weapp/sparkline/index.wxml +1 -1
- package/dist/weapp/types.d.ts +96 -4
- package/dist/weapp/waterfall-chart/index.wxml +1 -1
- package/dist/web-components/components/chart/charts.d.ts +4 -2
- package/dist/web-components/components/chart/charts.js +8 -1
- package/dist/web-components/components/chart/charts.js.map +1 -1
- package/dist/web-components/components/chart/extended.d.ts +21 -7
- package/dist/web-components/components/chart/extended.js +29 -9
- package/dist/web-components/components/chart/extended.js.map +1 -1
- package/dist/web-components/components/chart/shapes-extended.d.ts +37 -1
- package/dist/web-components/components/chart/shapes-extended.js +27 -1
- package/dist/web-components/components/chart/shapes-extended.js.map +1 -1
- package/dist/web-components/components/chart-3d/chart-3d.d.ts +1 -1
- package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -1
- package/dist/web-components/components/graph/graph.d.ts +156 -0
- package/dist/web-components/components/graph/graph.js +150 -0
- package/dist/web-components/components/graph/graph.js.map +1 -0
- package/dist/web-components/components/trading-chart/trading-chart.d.ts +49 -2
- package/dist/web-components/components/trading-chart/trading-chart.js +62 -0
- package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -1
- package/dist/web-components/elements/chart.d.ts +1 -1
- package/dist/web-components/elements/chart.js +6 -5
- package/dist/web-components/elements/chart.js.map +1 -1
- 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/html-custom-data.json +318 -4
- package/dist/web-components/types/react.d.ts +63 -4
- package/dist/web-components/types/solid.d.ts +55 -8
- package/dist/web-components/types/svelte.d.ts +55 -8
- package/dist/web-components/types/vue.d.ts +55 -4
- package/package.json +16 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.cjs","names":["lutIndex","packColor","toWorld","linearTicks","toCss","require_color","require_scale","require_colormap","require_contours","require_model","GPU_BUDGET","CPU_BUDGET","nextId","ids","objectId","value","id","colorKey","c","v","domainKey","a","isFiniteNumber","scaleColor","domain","fallback","lut","buildPoints","m","n","cols","buffer","f32","u32","seriesColor","colors","byScale","scaleSource","cache","source","count","ax","ay","az","model","sx","sy","sz","ox","oy","oz","i","x","y","z","k","o","size","defaultSize","own","color","packed","sampleIndices","max","all","out","buildSurface","rowIndex","grid","budget","colIndex","rows","positions","r","gy","gx","h","byValue","P","finite","c0","c1","r0","r1","nx","ny","nz","ux","uz","vy","vz","len","gi","indices","b","d","e","segmentBuffer","j","coords","MAX_WIRES","stepped","step","buildWireframe","mesh","rowStep","options","colStep","segment","contourLevels","min","nice","buildContours","levels","floor","onSurface","fixed","floorZ","xAt","f","yAt","segments","level","lz","x0","y0","x1","y1","FACES","buildBars","bars","boxes","width","cellX","cellY","hx","hy","cx","cy","za","zb","lo","hi","face","buildLine","points","opacity","createGeometryBuilder","version","signatureOf","s","lutId","stackHash","next","items","targets","counts","kept","signature","entry","buildSeries","key","wire","contours","lines","target","pointTarget","hash","packedCss"],"sources":["../../../../../charts/src/engine/three-d/geometry.ts"],"sourcesContent":["// Model -> GPU items (points, meshes, line segments) and the CPU data the\n// hover picking needs. Items keep their version (no re-upload) while their\n// signature is unchanged.\n\nimport { packColor, toCss, type Rgba } from \"../color\";\nimport { linearTicks } from \"../scale\";\nimport { contourSegments } from \"./contours\";\nimport { lutIndex, type ColorLut } from \"./colormap\";\nimport {\n toWorld,\n type AxisModel,\n type BarModel,\n type LineModel,\n type Model3D,\n type ScatterModel,\n type SeriesModel,\n type SurfaceModel,\n} from \"./model\";\nimport {\n POINT_STRIDE,\n SEGMENT_STRIDE,\n VERTEX_STRIDE,\n type Item3D,\n type LinesItem,\n type MeshItem,\n type PointsItem,\n} from \"./render-types\";\nimport type {\n Surface3DContourOptions,\n Surface3DWireframeOptions,\n} from \"./types\";\n\n/** Colors the geometry needs, resolved by the chart */\nexport interface GeometryColors {\n /** Color of every series (option or palette) */\n series: Rgba[];\n /** Resolves a CSS color of the data */\n resolve: (value: string) => Rgba;\n /** Sampled color scale */\n lut: ColorLut;\n /** Default wireframe color */\n wire: Rgba;\n}\n\n/** Limits of the CPU (Canvas2D) backend */\nexport interface GeometryBudget {\n /** Largest surface grid side drawn (resampled above) */\n maxGridSide: number;\n}\n\nexport const GPU_BUDGET: GeometryBudget = { maxGridSide: 2048 };\nexport const CPU_BUDGET: GeometryBudget = { maxGridSide: 72 };\n\n/** Picking data of a point cloud (scatter dots, line vertices) */\nexport interface PointTarget {\n kind: \"points\";\n series: number;\n /** World positions, stride `stride` floats */\n positions: Float32Array;\n stride: number;\n count: number;\n /** Diameters in CSS pixels (stride as positions, offset 3) or `null` */\n sized: boolean;\n defaultSize: number;\n /** Index in the series data of every drawn point (`null`: identity) */\n source: Uint32Array | null;\n /** Packed colors (offset 4 of the stride) or the series color */\n packed: Uint32Array | null;\n}\n\n/** Picking data of a surface: its (possibly resampled) world grid */\nexport interface SurfaceTarget {\n kind: \"surface\";\n series: number;\n rows: number;\n cols: number;\n /** World positions of the sampled vertices (x, y, z) */\n positions: Float32Array;\n /** Rows / columns of the data grid the samples come from */\n rowIndex: Int32Array;\n colIndex: Int32Array;\n}\n\n/** Picking data of bars: one world box per bar */\nexport interface BarTarget {\n kind: \"bars\";\n series: number;\n count: number;\n /** min x, y, z, max x, y, z per bar */\n boxes: Float32Array;\n}\n\nexport type PickTarget = PointTarget | SurfaceTarget | BarTarget;\n\nexport interface Geometry {\n items: Item3D[];\n targets: PickTarget[];\n /** Total number of drawn points / cells / bars (summary) */\n counts: number[];\n}\n\n// -------------------------------------------------------------- utilities\n\nlet nextId = 1;\nconst ids = new WeakMap<object, number>();\n/** Stable identity number of an object (data arrays) */\nexport const objectId = (value: object | null | undefined): number => {\n if (!value) return 0;\n let id = ids.get(value);\n if (id === undefined) {\n id = nextId++;\n ids.set(value, id);\n }\n return id;\n};\n\nconst colorKey = (c: Rgba) => c.map((v) => v.toFixed(4)).join(\",\");\n\nconst domainKey = (a: AxisModel) =>\n `${a.domain[0]},${a.domain[1]},${a.half},${a.categories?.length ?? -1}`;\n\nconst isFiniteNumber = (v: number) =>\n v === v && v !== Infinity && v !== -Infinity;\n\n/** Packs the scale color of `value` (NaN -> fallback) */\nconst scaleColor = (\n lut: ColorLut,\n domain: [number, number] | null,\n value: number,\n fallback: number,\n) => {\n if (!domain || !isFiniteNumber(value)) return fallback;\n return lut.packed[lutIndex(value, domain[0], domain[1])];\n};\n\n// ------------------------------------------------------------------ points\n\nconst buildPoints = (\n m: ScatterModel | LineModel,\n model: Model3D,\n colors: GeometryColors,\n defaultSize: number,\n): {\n data: ArrayBuffer;\n count: number;\n source: Uint32Array | null;\n sized: boolean;\n} => {\n const { cols } = m;\n const n = cols.count;\n const buffer = new ArrayBuffer(n * POINT_STRIDE);\n const f32 = new Float32Array(buffer);\n const u32 = new Uint32Array(buffer);\n const seriesColor = packColor(colors.series[m.index] ?? [0.5, 0.5, 0.5, 1]);\n const byScale = m.colorBy !== \"series\";\n const scaleSource = m.colorBy === \"value\" && cols.value ? cols.value : cols.z;\n const cache = new Map<string, number>();\n let source: Uint32Array | null = null;\n let count = 0;\n const { x: ax, y: ay, z: az } = model;\n // inline world mapping (hot loop for 1M points)\n const sx = (2 * ax.half) / (ax.domain[1] - ax.domain[0] || 1);\n const sy = (2 * ay.half) / (ay.domain[1] - ay.domain[0] || 1);\n const sz = (2 * az.half) / (az.domain[1] - az.domain[0] || 1);\n const ox = -ax.half - ax.domain[0] * sx;\n const oy = -ay.half - ay.domain[0] * sy;\n const oz = -az.half - az.domain[0] * sz;\n for (let i = 0; i < n; i++) {\n const x = cols.x[i];\n const y = cols.y[i];\n const z = cols.z[i];\n if (!isFiniteNumber(x) || !isFiniteNumber(y) || !isFiniteNumber(z)) {\n if (!source) {\n source = new Uint32Array(n);\n for (let k = 0; k < count; k++) source[k] = k;\n }\n continue;\n }\n if (source) source[count] = i;\n const o = count * 5;\n f32[o] = x * sx + ox;\n f32[o + 1] = y * sy + oy;\n f32[o + 2] = z * sz + oz;\n const size = cols.size ? cols.size[i] : NaN;\n f32[o + 3] = isFiniteNumber(size) ? size : defaultSize;\n const own = cols.colors?.[i];\n let color: number;\n if (own !== undefined) {\n let packed = cache.get(own);\n if (packed === undefined) {\n packed = packColor(colors.resolve(own));\n cache.set(own, packed);\n }\n color = packed;\n } else if (byScale) {\n color = scaleColor(\n colors.lut,\n model.colorDomain,\n scaleSource[i],\n seriesColor,\n );\n } else {\n color = seriesColor;\n }\n u32[o + 4] = color;\n count++;\n }\n return {\n data: buffer,\n count,\n source: source ? source.subarray(0, count) : null,\n sized: !!cols.size,\n };\n};\n\n// ----------------------------------------------------------------- surface\n\n/** Indices of the sampled rows / columns: every `step`, the last one included */\nconst sampleIndices = (count: number, max: number): Int32Array => {\n if (count <= max) {\n const all = new Int32Array(count);\n for (let i = 0; i < count; i++) all[i] = i;\n return all;\n }\n const out = new Int32Array(max);\n for (let i = 0; i < max; i++)\n out[i] = Math.round((i * (count - 1)) / (max - 1));\n return out;\n};\n\ninterface SurfaceMesh {\n positions: Float32Array;\n rowIndex: Int32Array;\n colIndex: Int32Array;\n mesh: MeshItem | null;\n}\n\nconst buildSurface = (\n m: SurfaceModel,\n model: Model3D,\n colors: GeometryColors,\n budget: GeometryBudget,\n key: string,\n version: number,\n): SurfaceMesh => {\n const { grid } = m;\n const rowIndex = sampleIndices(grid.rows, budget.maxGridSide);\n const colIndex = sampleIndices(grid.cols, budget.maxGridSide);\n const rows = rowIndex.length;\n const cols = colIndex.length;\n const n = rows * cols;\n const positions = new Float32Array(n * 3);\n for (let r = 0; r < rows; r++) {\n const gy = toWorld(model.y, grid.y[rowIndex[r]]);\n for (let c = 0; c < cols; c++) {\n const gx = toWorld(model.x, grid.x[colIndex[c]]);\n const h = grid.z[rowIndex[r] * grid.cols + colIndex[c]];\n const o = (r * cols + c) * 3;\n positions[o] = gx;\n positions[o + 1] = gy;\n positions[o + 2] = isFiniteNumber(h) ? toWorld(model.z, h) : NaN;\n }\n }\n if (m.series.fill === false) {\n return { positions, rowIndex, colIndex, mesh: null };\n }\n const buffer = new ArrayBuffer(n * VERTEX_STRIDE);\n const f32 = new Float32Array(buffer);\n const u32 = new Uint32Array(buffer);\n const seriesColor = packColor(colors.series[m.index] ?? [0.5, 0.5, 0.5, 1]);\n const byValue = m.colorBy === \"value\" && grid.value;\n const P = (r: number, c: number, k: number) =>\n positions[(r * cols + c) * 3 + k];\n const finite = (r: number, c: number) =>\n r >= 0 && r < rows && c >= 0 && c < cols && isFiniteNumber(P(r, c, 2));\n for (let r = 0; r < rows; r++) {\n for (let c = 0; c < cols; c++) {\n const v = r * cols + c;\n const o = v * 7;\n f32[o] = P(r, c, 0);\n f32[o + 1] = P(r, c, 1);\n f32[o + 2] = isFiniteNumber(P(r, c, 2)) ? P(r, c, 2) : 0;\n // normal: cross product of the central (or one-sided) differences\n const c0 = finite(r, c - 1) ? c - 1 : c;\n const c1 = finite(r, c + 1) ? c + 1 : c;\n const r0 = finite(r - 1, c) ? r - 1 : r;\n const r1 = finite(r + 1, c) ? r + 1 : r;\n let nx = 0;\n let ny = 0;\n let nz = 1;\n if (finite(r, c) && c0 !== c1 && r0 !== r1) {\n const ux = P(r, c1, 0) - P(r, c0, 0);\n const uz = P(r, c1, 2) - P(r, c0, 2);\n const vy = P(r1, c, 1) - P(r0, c, 1);\n const vz = P(r1, c, 2) - P(r0, c, 2);\n // u = (ux, 0, uz), v = (0, vy, vz): u × v\n nx = -uz * vy;\n ny = -ux * vz;\n nz = ux * vy;\n const len = Math.hypot(nx, ny, nz) || 1;\n nx /= len;\n ny /= len;\n nz /= len;\n if (nz < 0) {\n nx = -nx;\n ny = -ny;\n nz = -nz;\n }\n }\n f32[o + 3] = nx;\n f32[o + 4] = ny;\n f32[o + 5] = nz;\n const gi = rowIndex[r] * grid.cols + colIndex[c];\n u32[o + 6] =\n m.colorBy === \"series\"\n ? seriesColor\n : scaleColor(\n colors.lut,\n model.colorDomain,\n byValue ? grid.value![gi] : grid.z[gi],\n seriesColor,\n );\n }\n }\n const indices = new Uint32Array((rows - 1) * (cols - 1) * 6);\n let k = 0;\n for (let r = 0; r < rows - 1; r++) {\n for (let c = 0; c < cols - 1; c++) {\n if (\n !finite(r, c) ||\n !finite(r, c + 1) ||\n !finite(r + 1, c) ||\n !finite(r + 1, c + 1)\n ) {\n continue;\n }\n const a = r * cols + c;\n const b = a + 1;\n const d = a + cols;\n const e = d + 1;\n indices[k++] = a;\n indices[k++] = b;\n indices[k++] = e;\n indices[k++] = a;\n indices[k++] = e;\n indices[k++] = d;\n }\n }\n return {\n positions,\n rowIndex,\n colIndex,\n mesh: {\n kind: \"mesh\",\n key,\n version,\n opacity: m.opacity,\n vertices: buffer,\n vertexCount: n,\n indices: indices.subarray(0, k),\n },\n };\n};\n\n/** Segment buffer from a flat list of world coordinates (6 per segment) and packed colors */\nconst segmentBuffer = (coords: number[], packed: number[]) => {\n const count = packed.length;\n const buffer = new ArrayBuffer(count * SEGMENT_STRIDE);\n const f32 = new Float32Array(buffer);\n const u32 = new Uint32Array(buffer);\n for (let i = 0; i < count; i++) {\n const o = i * 7;\n for (let j = 0; j < 6; j++) f32[o + j] = coords[i * 6 + j];\n u32[o + 6] = packed[i];\n }\n return { buffer, count };\n};\n\nconst MAX_WIRES = 64;\n\n/** 0, step, 2 step, … and the last index */\nexport const stepped = (count: number, step: number): number[] => {\n const out: number[] = [];\n for (let i = 0; i < count; i += step) out.push(i);\n if (count > 0 && out[out.length - 1] !== count - 1) out.push(count - 1);\n return out;\n};\n\nconst buildWireframe = (\n mesh: SurfaceMesh,\n options: Surface3DWireframeOptions,\n color: number,\n key: string,\n version: number,\n): LinesItem => {\n const rows = mesh.rowIndex.length;\n const cols = mesh.colIndex.length;\n const P = mesh.positions;\n const coords: number[] = [];\n const packed: number[] = [];\n const rowStep = Math.max(\n 1,\n Math.round(options.step ?? Math.ceil(rows / MAX_WIRES)),\n );\n const colStep = Math.max(\n 1,\n Math.round(options.step ?? Math.ceil(cols / MAX_WIRES)),\n );\n const segment = (a: number, b: number) => {\n if (!isFiniteNumber(P[a * 3 + 2]) || !isFiniteNumber(P[b * 3 + 2])) return;\n coords.push(\n P[a * 3],\n P[a * 3 + 1],\n P[a * 3 + 2],\n P[b * 3],\n P[b * 3 + 1],\n P[b * 3 + 2],\n );\n packed.push(color);\n };\n for (const r of stepped(rows, rowStep)) {\n for (let c = 0; c < cols - 1; c++) segment(r * cols + c, r * cols + c + 1);\n }\n for (const c of stepped(cols, colStep)) {\n for (let r = 0; r < rows - 1; r++)\n segment(r * cols + c, (r + 1) * cols + c);\n }\n const { buffer, count } = segmentBuffer(coords, packed);\n return {\n kind: \"lines\",\n key,\n version,\n opacity: 1,\n data: buffer,\n count,\n width: options.width ?? 1,\n bias: 0.0015,\n };\n};\n\n/** Levels of the contour lines */\nexport const contourLevels = (\n options: Surface3DContourOptions,\n min: number,\n max: number,\n): number[] => {\n if (options.levels) return options.levels.filter(isFiniteNumber);\n if (!(max > min)) return [];\n const count = Math.max(1, Math.round(options.count ?? 10));\n const nice = linearTicks(min, max, count).filter((v) => v > min && v < max);\n if (nice.length >= Math.max(2, count / 2)) return nice;\n return Array.from(\n { length: count },\n (_, i) => min + ((i + 0.5) * (max - min)) / count,\n );\n};\n\nconst buildContours = (\n m: SurfaceModel,\n model: Model3D,\n colors: GeometryColors,\n options: Surface3DContourOptions,\n key: string,\n version: number,\n): LinesItem | null => {\n const { grid } = m;\n const levels = contourLevels(options, grid.extent.z.min, grid.extent.z.max);\n if (!levels.length) return null;\n const floor = options.floor ?? true;\n const onSurface = options.surface ?? false;\n if (!floor && !onSurface) return null;\n const fixed = options.color ? packColor(colors.resolve(options.color)) : null;\n const floorZ = -model.z.half + 0.002;\n // the color of a level follows the scale when the surface is colored by height\n const domain =\n model.colorDomain && m.colorBy !== \"value\"\n ? model.colorDomain\n : ([grid.extent.z.min, grid.extent.z.max] as [number, number]);\n const coords: number[] = [];\n const packed: number[] = [];\n const xAt = (c: number) => {\n const i = Math.floor(c);\n const f = c - i;\n const a = grid.x[Math.min(i, grid.cols - 1)];\n const b = grid.x[Math.min(i + 1, grid.cols - 1)];\n return toWorld(model.x, a + (b - a) * f);\n };\n const yAt = (r: number) => {\n const i = Math.floor(r);\n const f = r - i;\n const a = grid.y[Math.min(i, grid.rows - 1)];\n const b = grid.y[Math.min(i + 1, grid.rows - 1)];\n return toWorld(model.y, a + (b - a) * f);\n };\n const segments: number[] = [];\n for (const level of levels) {\n segments.length = 0;\n contourSegments(grid.z, grid.rows, grid.cols, level, segments);\n if (!segments.length) continue;\n const color =\n fixed ?? colors.lut.packed[lutIndex(level, domain[0], domain[1])];\n const lz = toWorld(model.z, level);\n for (let i = 0; i < segments.length; i += 4) {\n const x0 = xAt(segments[i]);\n const y0 = yAt(segments[i + 1]);\n const x1 = xAt(segments[i + 2]);\n const y1 = yAt(segments[i + 3]);\n if (floor) {\n coords.push(x0, y0, floorZ, x1, y1, floorZ);\n packed.push(color);\n }\n if (onSurface) {\n coords.push(x0, y0, lz, x1, y1, lz);\n packed.push(color);\n }\n }\n }\n if (!packed.length) return null;\n const { buffer, count } = segmentBuffer(coords, packed);\n return {\n kind: \"lines\",\n key,\n version,\n opacity: 1,\n data: buffer,\n count,\n width: options.width ?? 1,\n bias: 0.002,\n };\n};\n\n// -------------------------------------------------------------------- bars\n\n/** Corners of the 6 faces (4 each, counterclockwise from outside) and their normals */\nconst FACES: readonly { n: [number, number, number]; c: number[] }[] = [\n { n: [0, 0, 1], c: [0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1] },\n { n: [0, 0, -1], c: [0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0] },\n { n: [1, 0, 0], c: [1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1] },\n { n: [-1, 0, 0], c: [0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0] },\n { n: [0, 1, 0], c: [0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0] },\n { n: [0, -1, 0], c: [0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1] },\n];\n\nconst buildBars = (\n m: BarModel,\n model: Model3D,\n colors: GeometryColors,\n key: string,\n version: number,\n): { mesh: MeshItem; target: BarTarget } => {\n const { bars } = m;\n const n = bars.count;\n const buffer = new ArrayBuffer(n * 24 * VERTEX_STRIDE);\n const f32 = new Float32Array(buffer);\n const u32 = new Uint32Array(buffer);\n const indices = new Uint32Array(n * 36);\n const boxes = new Float32Array(n * 6);\n const seriesColor = packColor(colors.series[m.index] ?? [0.5, 0.5, 0.5, 1]);\n const width = Math.max(0.05, Math.min(1, m.series.barWidth ?? 0.7));\n const cellX =\n (2 * model.x.half) / Math.max(1, model.x.domain[1] - model.x.domain[0]);\n const cellY =\n (2 * model.y.half) / Math.max(1, model.y.domain[1] - model.y.domain[0]);\n const hx = (cellX * width) / 2;\n const hy = (cellY * width) / 2;\n const cache = new Map<string, number>();\n let v = 0;\n let k = 0;\n for (let i = 0; i < n; i++) {\n const cx = toWorld(model.x, bars.xi[i]);\n const cy = toWorld(model.y, bars.yi[i]);\n const za = toWorld(model.z, bars.z0[i]);\n const zb = toWorld(model.z, bars.z1[i]);\n const lo: [number, number, number] = [cx - hx, cy - hy, Math.min(za, zb)];\n const hi: [number, number, number] = [cx + hx, cy + hy, Math.max(za, zb)];\n boxes.set([lo[0], lo[1], lo[2], hi[0], hi[1], hi[2]], i * 6);\n const own = bars.colors?.[i];\n let color: number;\n if (own !== undefined) {\n color = cache.get(own) ?? packColor(colors.resolve(own));\n cache.set(own, color);\n } else if (m.colorBy === \"series\") {\n color = seriesColor;\n } else {\n const value =\n m.colorBy === \"value\" && bars.value ? bars.value[i] : bars.z[i];\n color = scaleColor(colors.lut, model.colorDomain, value, seriesColor);\n }\n for (const face of FACES) {\n for (let j = 0; j < 4; j++) {\n const o = (v + j) * 7;\n f32[o] = face.c[j * 3] ? hi[0] : lo[0];\n f32[o + 1] = face.c[j * 3 + 1] ? hi[1] : lo[1];\n f32[o + 2] = face.c[j * 3 + 2] ? hi[2] : lo[2];\n f32[o + 3] = face.n[0];\n f32[o + 4] = face.n[1];\n f32[o + 5] = face.n[2];\n u32[o + 6] = color;\n }\n indices[k++] = v;\n indices[k++] = v + 1;\n indices[k++] = v + 2;\n indices[k++] = v;\n indices[k++] = v + 2;\n indices[k++] = v + 3;\n v += 4;\n }\n }\n return {\n mesh: {\n kind: \"mesh\",\n key,\n version,\n opacity: m.opacity,\n vertices: buffer,\n vertexCount: v,\n indices,\n },\n target: { kind: \"bars\", series: m.index, count: n, boxes },\n };\n};\n\n// ------------------------------------------------------------------- lines\n\nconst buildLine = (\n m: LineModel,\n points: { data: ArrayBuffer; count: number; source: Uint32Array | null },\n key: string,\n version: number,\n): LinesItem => {\n const f32 = new Float32Array(points.data);\n const u32 = new Uint32Array(points.data);\n const coords: number[] = [];\n const packed: number[] = [];\n const opacity = m.opacity;\n for (let i = 0; i < points.count - 1; i++) {\n // a gap in the data (NaN) breaks the line\n if (points.source && points.source[i + 1] !== points.source[i] + 1)\n continue;\n const a = i * 5;\n const b = a + 5;\n coords.push(f32[a], f32[a + 1], f32[a + 2], f32[b], f32[b + 1], f32[b + 2]);\n packed.push(u32[a + 4]);\n }\n const { buffer, count } = segmentBuffer(coords, packed);\n return {\n kind: \"lines\",\n key,\n version,\n opacity,\n data: buffer,\n count,\n width: m.series.lineWidth ?? 2,\n bias: 0,\n };\n};\n\n// -------------------------------------------------------------------- main\n\ninterface CacheEntry {\n signature: string;\n items: Item3D[];\n target: PickTarget[];\n count: number;\n}\n\n/** Builds the items of every visible series, reusing the unchanged ones */\nexport const createGeometryBuilder = () => {\n let cache = new Map<string, CacheEntry>();\n let version = 0;\n\n const signatureOf = (\n m: SeriesModel,\n model: Model3D,\n colors: GeometryColors,\n budget: GeometryBudget,\n lutId: number,\n ): string => {\n const s = m.series as unknown as Record<string, unknown>;\n const options = JSON.stringify({\n type: m.type,\n colorBy: m.colorBy,\n opacity: m.opacity,\n pointSize: s.pointSize,\n lineWidth: s.lineWidth,\n perspectiveSize: s.perspectiveSize,\n wireframe: s.wireframe,\n contours: s.contours,\n fill: s.fill,\n barWidth: s.barWidth,\n });\n return [\n objectId(m.series.data as object),\n options,\n domainKey(model.x),\n domainKey(model.y),\n domainKey(model.z),\n model.colorDomain?.join() ?? \"\",\n colorKey(colors.series[m.index] ?? [0, 0, 0, 0]),\n colorKey(colors.wire),\n lutId,\n budget.maxGridSide,\n // stacked bars depend on the other bar series\n m.type === \"bar\" ? stackHash(m) : \"\",\n ].join(\"|\");\n };\n\n return (\n model: Model3D,\n colors: GeometryColors,\n budget: GeometryBudget,\n lutId: number,\n ): Geometry => {\n const next = new Map<string, CacheEntry>();\n const items: Item3D[] = [];\n const targets: PickTarget[] = [];\n const counts: number[] = [];\n for (const m of model.series) {\n const id = `${m.index}:${m.id}`;\n if (m.hidden) {\n counts.push(0);\n // keep the geometry while hidden: showing it again is instant\n const kept = cache.get(id);\n if (kept) next.set(id, kept);\n continue;\n }\n const signature = signatureOf(m, model, colors, budget, lutId);\n let entry = cache.get(id);\n if (!entry || entry.signature !== signature) {\n entry = buildSeries(\n m,\n model,\n colors,\n budget,\n `s${id}`,\n ++version,\n signature,\n );\n }\n next.set(id, entry);\n items.push(...entry.items);\n targets.push(...entry.target);\n counts.push(entry.count);\n }\n cache = next;\n return { items, targets, counts };\n };\n};\n\nconst buildSeries = (\n m: SeriesModel,\n model: Model3D,\n colors: GeometryColors,\n budget: GeometryBudget,\n key: string,\n version: number,\n signature: string,\n): CacheEntry => {\n switch (m.type) {\n case \"surface\": {\n const mesh = buildSurface(\n m,\n model,\n colors,\n budget,\n `${key}:mesh`,\n version,\n );\n const items: Item3D[] = [];\n if (mesh.mesh) items.push(mesh.mesh);\n const wire = m.series.wireframe;\n if (wire) {\n const o = wire === true ? {} : wire;\n const color = o.color\n ? packColor(colors.resolve(o.color))\n : packColor(colors.wire);\n items.push(buildWireframe(mesh, o, color, `${key}:wire`, version));\n }\n const contours = m.series.contours;\n if (contours) {\n const lines = buildContours(\n m,\n model,\n colors,\n contours === true ? {} : contours,\n `${key}:contours`,\n version,\n );\n if (lines) items.push(lines);\n }\n return {\n signature,\n items,\n target: [\n {\n kind: \"surface\",\n series: m.index,\n rows: mesh.rowIndex.length,\n cols: mesh.colIndex.length,\n positions: mesh.positions,\n rowIndex: mesh.rowIndex,\n colIndex: mesh.colIndex,\n },\n ],\n count: m.grid.rows * m.grid.cols,\n };\n }\n case \"bar\": {\n const { mesh, target } = buildBars(\n m,\n model,\n colors,\n `${key}:bars`,\n version,\n );\n return {\n signature,\n items: [mesh],\n target: [target],\n count: m.bars.count,\n };\n }\n case \"line\": {\n const size = m.series.pointSize ?? 0;\n const points = buildPoints(m, model, colors, size);\n const items: Item3D[] = [buildLine(m, points, `${key}:line`, version)];\n if (size > 0) {\n items.push({\n kind: \"points\",\n key: `${key}:points`,\n version,\n opacity: m.opacity,\n data: points.data,\n count: points.count,\n perspective: false,\n } satisfies PointsItem);\n }\n return {\n signature,\n items,\n target: [\n pointTarget(m.index, points, Math.max(size, m.series.lineWidth ?? 2)),\n ],\n count: points.count,\n };\n }\n default: {\n const size = m.series.pointSize ?? 6;\n const points = buildPoints(m, model, colors, size);\n return {\n signature,\n items: [\n {\n kind: \"points\",\n key: `${key}:points`,\n version,\n opacity: m.opacity,\n data: points.data,\n count: points.count,\n perspective: m.series.perspectiveSize ?? true,\n },\n ],\n target: [pointTarget(m.index, points, size)],\n count: points.count,\n };\n }\n }\n};\n\nconst pointTarget = (\n series: number,\n points: {\n data: ArrayBuffer;\n count: number;\n source: Uint32Array | null;\n sized: boolean;\n },\n defaultSize: number,\n): PointTarget => ({\n kind: \"points\",\n series,\n positions: new Float32Array(points.data),\n stride: 5,\n count: points.count,\n sized: points.sized,\n defaultSize,\n source: points.source,\n packed: new Uint32Array(points.data),\n});\n\nconst stackHash = (m: BarModel) => {\n let hash = m.bars.count;\n for (let i = 0; i < m.bars.count; i++) {\n hash = (hash * 31 + m.bars.z0[i] * 997 + m.bars.z1[i] * 13) % 1e12;\n }\n return String(hash);\n};\n\n/** CSS color of a packed color */\nexport const packedCss = (packed: number): string =>\n toCss([\n (packed & 0xff) / 255,\n ((packed >>> 8) & 0xff) / 255,\n ((packed >>> 16) & 0xff) / 255,\n ((packed >>> 24) & 0xff) / 255,\n ]);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"geometry.cjs","names":["lutIndex","packColor","toWorld","linearTicks","toCss","require_color","require_scale","require_colormap","require_contours","require_model","GPU_BUDGET","CPU_BUDGET","nextId","ids","objectId","value","id","colorKey","c","v","domainKey","a","isFiniteNumber","scaleColor","domain","fallback","lut","packRgb","rgb","buildPoints","m","n","cols","stride","buffer","f32","u32","seriesColor","colors","byScale","scaleSource","cache","source","count","ax","ay","az","model","sx","sy","sz","ox","oy","oz","i","x","y","z","k","o","size","defaultSize","own","color","packed","sampleIndices","max","all","out","buildSurface","rowIndex","grid","budget","colIndex","rows","positions","r","gy","gx","h","byValue","P","finite","c0","c1","r0","r1","nx","ny","nz","ux","uz","vy","vz","len","gi","indices","b","d","e","segmentBuffer","j","coords","MAX_WIRES","stepped","step","buildWireframe","mesh","rowStep","options","colStep","segment","contourLevels","min","nice","buildContours","levels","floor","onSurface","fixed","floorZ","xAt","f","yAt","segments","level","lz","x0","y0","x1","y1","FACES","buildBars","bars","boxes","width","cellX","cellY","hx","hy","cx","cy","za","zb","lo","hi","face","buildLine","points","opacity","createGeometryBuilder","version","signatureOf","s","lutId","stackHash","next","items","targets","counts","total","kept","signature","entry","buildSeries","key","wire","contours","lines","target","pointTarget","style","hash","packedCss"],"sources":["../../../../../charts/src/engine/three-d/geometry.ts"],"sourcesContent":["// Model -> GPU items (points, meshes, line segments) and the CPU data the\n// hover picking needs. Items keep their version (no re-upload) while their\n// signature is unchanged.\n\nimport { packColor, toCss, type Rgba } from \"../color\";\nimport { linearTicks } from \"../scale\";\nimport { contourSegments } from \"./contours\";\nimport { lutIndex, type ColorLut } from \"./colormap\";\nimport {\n toWorld,\n type AxisModel,\n type BarModel,\n type LineModel,\n type Model3D,\n type ScatterModel,\n type SeriesModel,\n type SurfaceModel,\n} from \"./model\";\nimport {\n POINT_DISC,\n POINT_GLOW,\n POINT_SPHERE,\n POINT_STRIDE,\n SEGMENT_STRIDE,\n VERTEX_STRIDE,\n type Item3D,\n type LinesItem,\n type MeshItem,\n type PointsItem,\n} from \"./render-types\";\nimport type {\n Surface3DContourOptions,\n Surface3DWireframeOptions,\n} from \"./types\";\n\n/** Colors the geometry needs, resolved by the chart */\nexport interface GeometryColors {\n /** Color of every series (option or palette) */\n series: Rgba[];\n /** Resolves a CSS color of the data */\n resolve: (value: string) => Rgba;\n /** Sampled color scale */\n lut: ColorLut;\n /** Default wireframe color */\n wire: Rgba;\n}\n\n/** Limits of the CPU (Canvas2D) backend */\nexport interface GeometryBudget {\n /** Largest surface grid side drawn (resampled above) */\n maxGridSide: number;\n /**\n * Largest number of scatter dots drawn (every series together): above,\n * the clouds keep 1 point out of n, and only the kept points can be\n * hovered\n */\n maxPoints: number;\n}\n\nexport const GPU_BUDGET: GeometryBudget = {\n maxGridSide: 2048,\n maxPoints: Infinity,\n};\nexport const CPU_BUDGET: GeometryBudget = {\n maxGridSide: 72,\n maxPoints: 40_000,\n};\n\n/** Picking data of a point cloud (scatter dots, line vertices) */\nexport interface PointTarget {\n kind: \"points\";\n series: number;\n /** World positions, stride `stride` floats */\n positions: Float32Array;\n stride: number;\n count: number;\n /** Diameters in CSS pixels (stride as positions, offset 3) or `null` */\n sized: boolean;\n defaultSize: number;\n /** Index in the series data of every drawn point (`null`: identity) */\n source: Uint32Array | null;\n /** Packed colors (offset 4 of the stride) or the series color */\n packed: Uint32Array | null;\n}\n\n/** Picking data of a surface: its (possibly resampled) world grid */\nexport interface SurfaceTarget {\n kind: \"surface\";\n series: number;\n rows: number;\n cols: number;\n /** World positions of the sampled vertices (x, y, z) */\n positions: Float32Array;\n /** Rows / columns of the data grid the samples come from */\n rowIndex: Int32Array;\n colIndex: Int32Array;\n}\n\n/** Picking data of bars: one world box per bar */\nexport interface BarTarget {\n kind: \"bars\";\n series: number;\n count: number;\n /** min x, y, z, max x, y, z per bar */\n boxes: Float32Array;\n}\n\nexport type PickTarget = PointTarget | SurfaceTarget | BarTarget;\n\nexport interface Geometry {\n items: Item3D[];\n targets: PickTarget[];\n /** Total number of drawn points / cells / bars (summary) */\n counts: number[];\n}\n\n// -------------------------------------------------------------- utilities\n\nlet nextId = 1;\nconst ids = new WeakMap<object, number>();\n/** Stable identity number of an object (data arrays) */\nexport const objectId = (value: object | null | undefined): number => {\n if (!value) return 0;\n let id = ids.get(value);\n if (id === undefined) {\n id = nextId++;\n ids.set(value, id);\n }\n return id;\n};\n\nconst colorKey = (c: Rgba) => c.map((v) => v.toFixed(4)).join(\",\");\n\nconst domainKey = (a: AxisModel) =>\n `${a.domain[0]},${a.domain[1]},${a.half},${a.categories?.length ?? -1}`;\n\nconst isFiniteNumber = (v: number) =>\n v === v && v !== Infinity && v !== -Infinity;\n\n/** Packs the scale color of `value` (NaN -> fallback) */\nconst scaleColor = (\n lut: ColorLut,\n domain: [number, number] | null,\n value: number,\n fallback: number,\n) => {\n if (!domain || !isFiniteNumber(value)) return fallback;\n return lut.packed[lutIndex(value, domain[0], domain[1])];\n};\n\n// ------------------------------------------------------------------ points\n\n/** `0xRRGGBB` -> packed opaque color (r in the low byte) */\nconst packRgb = (rgb: number) =>\n (0xff000000 |\n ((rgb & 0xff) << 16) |\n (rgb & 0xff00) |\n ((rgb >>> 16) & 0xff)) >>>\n 0;\n\nconst buildPoints = (\n m: ScatterModel | LineModel,\n model: Model3D,\n colors: GeometryColors,\n defaultSize: number,\n /** Keeps 1 point out of `stride` (CPU backend) */\n stride = 1,\n): {\n data: ArrayBuffer;\n count: number;\n source: Uint32Array | null;\n sized: boolean;\n} => {\n const { cols } = m;\n const n = Math.ceil(cols.count / stride);\n const buffer = new ArrayBuffer(n * POINT_STRIDE);\n const f32 = new Float32Array(buffer);\n const u32 = new Uint32Array(buffer);\n const seriesColor = packColor(colors.series[m.index] ?? [0.5, 0.5, 0.5, 1]);\n const byScale = m.colorBy !== \"series\";\n const scaleSource = m.colorBy === \"value\" && cols.value ? cols.value : cols.z;\n const cache = new Map<string, number>();\n let source: Uint32Array | null = null;\n if (stride > 1) source = new Uint32Array(n);\n let count = 0;\n const { x: ax, y: ay, z: az } = model;\n // inline world mapping (hot loop for 1M points)\n const sx = (2 * ax.half) / (ax.domain[1] - ax.domain[0] || 1);\n const sy = (2 * ay.half) / (ay.domain[1] - ay.domain[0] || 1);\n const sz = (2 * az.half) / (az.domain[1] - az.domain[0] || 1);\n const ox = -ax.half - ax.domain[0] * sx;\n const oy = -ay.half - ay.domain[0] * sy;\n const oz = -az.half - az.domain[0] * sz;\n for (let i = 0; i < cols.count; i += stride) {\n const x = cols.x[i];\n const y = cols.y[i];\n const z = cols.z[i];\n if (!isFiniteNumber(x) || !isFiniteNumber(y) || !isFiniteNumber(z)) {\n if (!source) {\n source = new Uint32Array(n);\n for (let k = 0; k < count; k++) source[k] = k;\n }\n continue;\n }\n if (source) source[count] = i;\n const o = count * 5;\n f32[o] = x * sx + ox;\n f32[o + 1] = y * sy + oy;\n f32[o + 2] = z * sz + oz;\n const size = cols.size ? cols.size[i] : NaN;\n f32[o + 3] = isFiniteNumber(size) ? size : defaultSize;\n const own = cols.colors?.[i];\n const rgb = cols.rgb ? cols.rgb[i] : NaN;\n let color: number;\n if (own !== undefined) {\n let packed = cache.get(own);\n if (packed === undefined) {\n packed = packColor(colors.resolve(own));\n cache.set(own, packed);\n }\n color = packed;\n } else if (isFiniteNumber(rgb)) {\n color = packRgb(rgb);\n } else if (byScale) {\n color = scaleColor(\n colors.lut,\n model.colorDomain,\n scaleSource[i],\n seriesColor,\n );\n } else {\n color = seriesColor;\n }\n u32[o + 4] = color;\n count++;\n }\n return {\n data: buffer,\n count,\n source: source ? source.subarray(0, count) : null,\n sized: !!cols.size,\n };\n};\n\n// ----------------------------------------------------------------- surface\n\n/** Indices of the sampled rows / columns: every `step`, the last one included */\nconst sampleIndices = (count: number, max: number): Int32Array => {\n if (count <= max) {\n const all = new Int32Array(count);\n for (let i = 0; i < count; i++) all[i] = i;\n return all;\n }\n const out = new Int32Array(max);\n for (let i = 0; i < max; i++)\n out[i] = Math.round((i * (count - 1)) / (max - 1));\n return out;\n};\n\ninterface SurfaceMesh {\n positions: Float32Array;\n rowIndex: Int32Array;\n colIndex: Int32Array;\n mesh: MeshItem | null;\n}\n\nconst buildSurface = (\n m: SurfaceModel,\n model: Model3D,\n colors: GeometryColors,\n budget: GeometryBudget,\n key: string,\n version: number,\n): SurfaceMesh => {\n const { grid } = m;\n const rowIndex = sampleIndices(grid.rows, budget.maxGridSide);\n const colIndex = sampleIndices(grid.cols, budget.maxGridSide);\n const rows = rowIndex.length;\n const cols = colIndex.length;\n const n = rows * cols;\n const positions = new Float32Array(n * 3);\n for (let r = 0; r < rows; r++) {\n const gy = toWorld(model.y, grid.y[rowIndex[r]]);\n for (let c = 0; c < cols; c++) {\n const gx = toWorld(model.x, grid.x[colIndex[c]]);\n const h = grid.z[rowIndex[r] * grid.cols + colIndex[c]];\n const o = (r * cols + c) * 3;\n positions[o] = gx;\n positions[o + 1] = gy;\n positions[o + 2] = isFiniteNumber(h) ? toWorld(model.z, h) : NaN;\n }\n }\n if (m.series.fill === false) {\n return { positions, rowIndex, colIndex, mesh: null };\n }\n const buffer = new ArrayBuffer(n * VERTEX_STRIDE);\n const f32 = new Float32Array(buffer);\n const u32 = new Uint32Array(buffer);\n const seriesColor = packColor(colors.series[m.index] ?? [0.5, 0.5, 0.5, 1]);\n const byValue = m.colorBy === \"value\" && grid.value;\n const P = (r: number, c: number, k: number) =>\n positions[(r * cols + c) * 3 + k];\n const finite = (r: number, c: number) =>\n r >= 0 && r < rows && c >= 0 && c < cols && isFiniteNumber(P(r, c, 2));\n for (let r = 0; r < rows; r++) {\n for (let c = 0; c < cols; c++) {\n const v = r * cols + c;\n const o = v * 7;\n f32[o] = P(r, c, 0);\n f32[o + 1] = P(r, c, 1);\n f32[o + 2] = isFiniteNumber(P(r, c, 2)) ? P(r, c, 2) : 0;\n // normal: cross product of the central (or one-sided) differences\n const c0 = finite(r, c - 1) ? c - 1 : c;\n const c1 = finite(r, c + 1) ? c + 1 : c;\n const r0 = finite(r - 1, c) ? r - 1 : r;\n const r1 = finite(r + 1, c) ? r + 1 : r;\n let nx = 0;\n let ny = 0;\n let nz = 1;\n if (finite(r, c) && c0 !== c1 && r0 !== r1) {\n const ux = P(r, c1, 0) - P(r, c0, 0);\n const uz = P(r, c1, 2) - P(r, c0, 2);\n const vy = P(r1, c, 1) - P(r0, c, 1);\n const vz = P(r1, c, 2) - P(r0, c, 2);\n // u = (ux, 0, uz), v = (0, vy, vz): u × v\n nx = -uz * vy;\n ny = -ux * vz;\n nz = ux * vy;\n const len = Math.hypot(nx, ny, nz) || 1;\n nx /= len;\n ny /= len;\n nz /= len;\n if (nz < 0) {\n nx = -nx;\n ny = -ny;\n nz = -nz;\n }\n }\n f32[o + 3] = nx;\n f32[o + 4] = ny;\n f32[o + 5] = nz;\n const gi = rowIndex[r] * grid.cols + colIndex[c];\n u32[o + 6] =\n m.colorBy === \"series\"\n ? seriesColor\n : scaleColor(\n colors.lut,\n model.colorDomain,\n byValue ? grid.value![gi] : grid.z[gi],\n seriesColor,\n );\n }\n }\n const indices = new Uint32Array((rows - 1) * (cols - 1) * 6);\n let k = 0;\n for (let r = 0; r < rows - 1; r++) {\n for (let c = 0; c < cols - 1; c++) {\n if (\n !finite(r, c) ||\n !finite(r, c + 1) ||\n !finite(r + 1, c) ||\n !finite(r + 1, c + 1)\n ) {\n continue;\n }\n const a = r * cols + c;\n const b = a + 1;\n const d = a + cols;\n const e = d + 1;\n indices[k++] = a;\n indices[k++] = b;\n indices[k++] = e;\n indices[k++] = a;\n indices[k++] = e;\n indices[k++] = d;\n }\n }\n return {\n positions,\n rowIndex,\n colIndex,\n mesh: {\n kind: \"mesh\",\n key,\n version,\n opacity: m.opacity,\n vertices: buffer,\n vertexCount: n,\n indices: indices.subarray(0, k),\n },\n };\n};\n\n/** Segment buffer from a flat list of world coordinates (6 per segment) and packed colors */\nconst segmentBuffer = (coords: number[], packed: number[]) => {\n const count = packed.length;\n const buffer = new ArrayBuffer(count * SEGMENT_STRIDE);\n const f32 = new Float32Array(buffer);\n const u32 = new Uint32Array(buffer);\n for (let i = 0; i < count; i++) {\n const o = i * 7;\n for (let j = 0; j < 6; j++) f32[o + j] = coords[i * 6 + j];\n u32[o + 6] = packed[i];\n }\n return { buffer, count };\n};\n\nconst MAX_WIRES = 64;\n\n/** 0, step, 2 step, … and the last index */\nexport const stepped = (count: number, step: number): number[] => {\n const out: number[] = [];\n for (let i = 0; i < count; i += step) out.push(i);\n if (count > 0 && out[out.length - 1] !== count - 1) out.push(count - 1);\n return out;\n};\n\nconst buildWireframe = (\n mesh: SurfaceMesh,\n options: Surface3DWireframeOptions,\n color: number,\n key: string,\n version: number,\n): LinesItem => {\n const rows = mesh.rowIndex.length;\n const cols = mesh.colIndex.length;\n const P = mesh.positions;\n const coords: number[] = [];\n const packed: number[] = [];\n const rowStep = Math.max(\n 1,\n Math.round(options.step ?? Math.ceil(rows / MAX_WIRES)),\n );\n const colStep = Math.max(\n 1,\n Math.round(options.step ?? Math.ceil(cols / MAX_WIRES)),\n );\n const segment = (a: number, b: number) => {\n if (!isFiniteNumber(P[a * 3 + 2]) || !isFiniteNumber(P[b * 3 + 2])) return;\n coords.push(\n P[a * 3],\n P[a * 3 + 1],\n P[a * 3 + 2],\n P[b * 3],\n P[b * 3 + 1],\n P[b * 3 + 2],\n );\n packed.push(color);\n };\n for (const r of stepped(rows, rowStep)) {\n for (let c = 0; c < cols - 1; c++) segment(r * cols + c, r * cols + c + 1);\n }\n for (const c of stepped(cols, colStep)) {\n for (let r = 0; r < rows - 1; r++)\n segment(r * cols + c, (r + 1) * cols + c);\n }\n const { buffer, count } = segmentBuffer(coords, packed);\n return {\n kind: \"lines\",\n key,\n version,\n opacity: 1,\n data: buffer,\n count,\n width: options.width ?? 1,\n bias: 0.0015,\n };\n};\n\n/** Levels of the contour lines */\nexport const contourLevels = (\n options: Surface3DContourOptions,\n min: number,\n max: number,\n): number[] => {\n if (options.levels) return options.levels.filter(isFiniteNumber);\n if (!(max > min)) return [];\n const count = Math.max(1, Math.round(options.count ?? 10));\n const nice = linearTicks(min, max, count).filter((v) => v > min && v < max);\n if (nice.length >= Math.max(2, count / 2)) return nice;\n return Array.from(\n { length: count },\n (_, i) => min + ((i + 0.5) * (max - min)) / count,\n );\n};\n\nconst buildContours = (\n m: SurfaceModel,\n model: Model3D,\n colors: GeometryColors,\n options: Surface3DContourOptions,\n key: string,\n version: number,\n): LinesItem | null => {\n const { grid } = m;\n const levels = contourLevels(options, grid.extent.z.min, grid.extent.z.max);\n if (!levels.length) return null;\n const floor = options.floor ?? true;\n const onSurface = options.surface ?? false;\n if (!floor && !onSurface) return null;\n const fixed = options.color ? packColor(colors.resolve(options.color)) : null;\n const floorZ = -model.z.half + 0.002;\n // the color of a level follows the scale when the surface is colored by height\n const domain =\n model.colorDomain && m.colorBy !== \"value\"\n ? model.colorDomain\n : ([grid.extent.z.min, grid.extent.z.max] as [number, number]);\n const coords: number[] = [];\n const packed: number[] = [];\n const xAt = (c: number) => {\n const i = Math.floor(c);\n const f = c - i;\n const a = grid.x[Math.min(i, grid.cols - 1)];\n const b = grid.x[Math.min(i + 1, grid.cols - 1)];\n return toWorld(model.x, a + (b - a) * f);\n };\n const yAt = (r: number) => {\n const i = Math.floor(r);\n const f = r - i;\n const a = grid.y[Math.min(i, grid.rows - 1)];\n const b = grid.y[Math.min(i + 1, grid.rows - 1)];\n return toWorld(model.y, a + (b - a) * f);\n };\n const segments: number[] = [];\n for (const level of levels) {\n segments.length = 0;\n contourSegments(grid.z, grid.rows, grid.cols, level, segments);\n if (!segments.length) continue;\n const color =\n fixed ?? colors.lut.packed[lutIndex(level, domain[0], domain[1])];\n const lz = toWorld(model.z, level);\n for (let i = 0; i < segments.length; i += 4) {\n const x0 = xAt(segments[i]);\n const y0 = yAt(segments[i + 1]);\n const x1 = xAt(segments[i + 2]);\n const y1 = yAt(segments[i + 3]);\n if (floor) {\n coords.push(x0, y0, floorZ, x1, y1, floorZ);\n packed.push(color);\n }\n if (onSurface) {\n coords.push(x0, y0, lz, x1, y1, lz);\n packed.push(color);\n }\n }\n }\n if (!packed.length) return null;\n const { buffer, count } = segmentBuffer(coords, packed);\n return {\n kind: \"lines\",\n key,\n version,\n opacity: 1,\n data: buffer,\n count,\n width: options.width ?? 1,\n bias: 0.002,\n };\n};\n\n// -------------------------------------------------------------------- bars\n\n/** Corners of the 6 faces (4 each, counterclockwise from outside) and their normals */\nconst FACES: readonly { n: [number, number, number]; c: number[] }[] = [\n { n: [0, 0, 1], c: [0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1] },\n { n: [0, 0, -1], c: [0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0] },\n { n: [1, 0, 0], c: [1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1] },\n { n: [-1, 0, 0], c: [0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0] },\n { n: [0, 1, 0], c: [0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0] },\n { n: [0, -1, 0], c: [0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1] },\n];\n\nconst buildBars = (\n m: BarModel,\n model: Model3D,\n colors: GeometryColors,\n key: string,\n version: number,\n): { mesh: MeshItem; target: BarTarget } => {\n const { bars } = m;\n const n = bars.count;\n const buffer = new ArrayBuffer(n * 24 * VERTEX_STRIDE);\n const f32 = new Float32Array(buffer);\n const u32 = new Uint32Array(buffer);\n const indices = new Uint32Array(n * 36);\n const boxes = new Float32Array(n * 6);\n const seriesColor = packColor(colors.series[m.index] ?? [0.5, 0.5, 0.5, 1]);\n const width = Math.max(0.05, Math.min(1, m.series.barWidth ?? 0.7));\n const cellX =\n (2 * model.x.half) / Math.max(1, model.x.domain[1] - model.x.domain[0]);\n const cellY =\n (2 * model.y.half) / Math.max(1, model.y.domain[1] - model.y.domain[0]);\n const hx = (cellX * width) / 2;\n const hy = (cellY * width) / 2;\n const cache = new Map<string, number>();\n let v = 0;\n let k = 0;\n for (let i = 0; i < n; i++) {\n const cx = toWorld(model.x, bars.xi[i]);\n const cy = toWorld(model.y, bars.yi[i]);\n const za = toWorld(model.z, bars.z0[i]);\n const zb = toWorld(model.z, bars.z1[i]);\n const lo: [number, number, number] = [cx - hx, cy - hy, Math.min(za, zb)];\n const hi: [number, number, number] = [cx + hx, cy + hy, Math.max(za, zb)];\n boxes.set([lo[0], lo[1], lo[2], hi[0], hi[1], hi[2]], i * 6);\n const own = bars.colors?.[i];\n let color: number;\n if (own !== undefined) {\n color = cache.get(own) ?? packColor(colors.resolve(own));\n cache.set(own, color);\n } else if (m.colorBy === \"series\") {\n color = seriesColor;\n } else {\n const value =\n m.colorBy === \"value\" && bars.value ? bars.value[i] : bars.z[i];\n color = scaleColor(colors.lut, model.colorDomain, value, seriesColor);\n }\n for (const face of FACES) {\n for (let j = 0; j < 4; j++) {\n const o = (v + j) * 7;\n f32[o] = face.c[j * 3] ? hi[0] : lo[0];\n f32[o + 1] = face.c[j * 3 + 1] ? hi[1] : lo[1];\n f32[o + 2] = face.c[j * 3 + 2] ? hi[2] : lo[2];\n f32[o + 3] = face.n[0];\n f32[o + 4] = face.n[1];\n f32[o + 5] = face.n[2];\n u32[o + 6] = color;\n }\n indices[k++] = v;\n indices[k++] = v + 1;\n indices[k++] = v + 2;\n indices[k++] = v;\n indices[k++] = v + 2;\n indices[k++] = v + 3;\n v += 4;\n }\n }\n return {\n mesh: {\n kind: \"mesh\",\n key,\n version,\n opacity: m.opacity,\n vertices: buffer,\n vertexCount: v,\n indices,\n },\n target: { kind: \"bars\", series: m.index, count: n, boxes },\n };\n};\n\n// ------------------------------------------------------------------- lines\n\nconst buildLine = (\n m: LineModel,\n points: { data: ArrayBuffer; count: number; source: Uint32Array | null },\n key: string,\n version: number,\n): LinesItem => {\n const f32 = new Float32Array(points.data);\n const u32 = new Uint32Array(points.data);\n const coords: number[] = [];\n const packed: number[] = [];\n const opacity = m.opacity;\n for (let i = 0; i < points.count - 1; i++) {\n // a gap in the data (NaN) breaks the line\n if (points.source && points.source[i + 1] !== points.source[i] + 1)\n continue;\n const a = i * 5;\n const b = a + 5;\n coords.push(f32[a], f32[a + 1], f32[a + 2], f32[b], f32[b + 1], f32[b + 2]);\n packed.push(u32[a + 4]);\n }\n const { buffer, count } = segmentBuffer(coords, packed);\n return {\n kind: \"lines\",\n key,\n version,\n opacity,\n data: buffer,\n count,\n width: m.series.lineWidth ?? 2,\n bias: 0,\n };\n};\n\n// -------------------------------------------------------------------- main\n\ninterface CacheEntry {\n signature: string;\n items: Item3D[];\n target: PickTarget[];\n count: number;\n}\n\n/** Builds the items of every visible series, reusing the unchanged ones */\nexport const createGeometryBuilder = () => {\n let cache = new Map<string, CacheEntry>();\n let version = 0;\n\n const signatureOf = (\n m: SeriesModel,\n model: Model3D,\n colors: GeometryColors,\n budget: GeometryBudget,\n lutId: number,\n stride: number,\n ): string => {\n const s = m.series as unknown as Record<string, unknown>;\n const options = JSON.stringify({\n type: m.type,\n colorBy: m.colorBy,\n opacity: m.opacity,\n pointSize: s.pointSize,\n pointStyle: s.pointStyle,\n blend: s.blend,\n lineWidth: s.lineWidth,\n perspectiveSize: s.perspectiveSize,\n wireframe: s.wireframe,\n contours: s.contours,\n fill: s.fill,\n barWidth: s.barWidth,\n });\n return [\n objectId(m.series.data as object),\n options,\n domainKey(model.x),\n domainKey(model.y),\n domainKey(model.z),\n model.colorDomain?.join() ?? \"\",\n colorKey(colors.series[m.index] ?? [0, 0, 0, 0]),\n colorKey(colors.wire),\n lutId,\n budget.maxGridSide,\n m.type === \"scatter\" ? stride : 1,\n // stacked bars depend on the other bar series\n m.type === \"bar\" ? stackHash(m) : \"\",\n ].join(\"|\");\n };\n\n return (\n model: Model3D,\n colors: GeometryColors,\n budget: GeometryBudget,\n lutId: number,\n ): Geometry => {\n const next = new Map<string, CacheEntry>();\n const items: Item3D[] = [];\n const targets: PickTarget[] = [];\n const counts: number[] = [];\n // the CPU backend thins every cloud by the same stride\n let total = 0;\n for (const m of model.series)\n if (m.type === \"scatter\" && !m.hidden) total += m.cols.count;\n const stride = Math.max(1, Math.ceil(total / budget.maxPoints));\n for (const m of model.series) {\n const id = `${m.index}:${m.id}`;\n if (m.hidden) {\n counts.push(0);\n // keep the geometry while hidden: showing it again is instant\n const kept = cache.get(id);\n if (kept) next.set(id, kept);\n continue;\n }\n const signature = signatureOf(m, model, colors, budget, lutId, stride);\n let entry = cache.get(id);\n if (!entry || entry.signature !== signature) {\n entry = buildSeries(\n m,\n model,\n colors,\n budget,\n `s${id}`,\n ++version,\n signature,\n stride,\n );\n }\n next.set(id, entry);\n items.push(...entry.items);\n targets.push(...entry.target);\n counts.push(entry.count);\n }\n cache = next;\n return { items, targets, counts };\n };\n};\n\nconst buildSeries = (\n m: SeriesModel,\n model: Model3D,\n colors: GeometryColors,\n budget: GeometryBudget,\n key: string,\n version: number,\n signature: string,\n /** Thinning of the scatter clouds (CPU backend) */\n stride = 1,\n): CacheEntry => {\n switch (m.type) {\n case \"surface\": {\n const mesh = buildSurface(\n m,\n model,\n colors,\n budget,\n `${key}:mesh`,\n version,\n );\n const items: Item3D[] = [];\n if (mesh.mesh) items.push(mesh.mesh);\n const wire = m.series.wireframe;\n if (wire) {\n const o = wire === true ? {} : wire;\n const color = o.color\n ? packColor(colors.resolve(o.color))\n : packColor(colors.wire);\n items.push(buildWireframe(mesh, o, color, `${key}:wire`, version));\n }\n const contours = m.series.contours;\n if (contours) {\n const lines = buildContours(\n m,\n model,\n colors,\n contours === true ? {} : contours,\n `${key}:contours`,\n version,\n );\n if (lines) items.push(lines);\n }\n return {\n signature,\n items,\n target: [\n {\n kind: \"surface\",\n series: m.index,\n rows: mesh.rowIndex.length,\n cols: mesh.colIndex.length,\n positions: mesh.positions,\n rowIndex: mesh.rowIndex,\n colIndex: mesh.colIndex,\n },\n ],\n count: m.grid.rows * m.grid.cols,\n };\n }\n case \"bar\": {\n const { mesh, target } = buildBars(\n m,\n model,\n colors,\n `${key}:bars`,\n version,\n );\n return {\n signature,\n items: [mesh],\n target: [target],\n count: m.bars.count,\n };\n }\n case \"line\": {\n const size = m.series.pointSize ?? 0;\n const points = buildPoints(m, model, colors, size);\n const items: Item3D[] = [buildLine(m, points, `${key}:line`, version)];\n if (size > 0) {\n items.push({\n kind: \"points\",\n key: `${key}:points`,\n version,\n opacity: m.opacity,\n data: points.data,\n count: points.count,\n perspective: false,\n } satisfies PointsItem);\n }\n return {\n signature,\n items,\n target: [\n pointTarget(m.index, points, Math.max(size, m.series.lineWidth ?? 2)),\n ],\n count: points.count,\n };\n }\n default: {\n const size = m.series.pointSize ?? 6;\n const points = buildPoints(m, model, colors, size, stride);\n const style = m.series.pointStyle;\n return {\n signature,\n items: [\n {\n kind: \"points\",\n key: `${key}:points`,\n version,\n opacity: m.opacity,\n data: points.data,\n count: points.count,\n perspective: m.series.perspectiveSize ?? true,\n style:\n style === \"glow\"\n ? POINT_GLOW\n : style === \"disc\"\n ? POINT_DISC\n : POINT_SPHERE,\n additive: m.series.blend === \"additive\",\n thinned: stride,\n },\n ],\n target: [pointTarget(m.index, points, size)],\n // the size of the data, thinned or not\n count: stride > 1 ? m.cols.count : points.count,\n };\n }\n }\n};\n\nconst pointTarget = (\n series: number,\n points: {\n data: ArrayBuffer;\n count: number;\n source: Uint32Array | null;\n sized: boolean;\n },\n defaultSize: number,\n): PointTarget => ({\n kind: \"points\",\n series,\n positions: new Float32Array(points.data),\n stride: 5,\n count: points.count,\n sized: points.sized,\n defaultSize,\n source: points.source,\n packed: new Uint32Array(points.data),\n});\n\nconst stackHash = (m: BarModel) => {\n let hash = m.bars.count;\n for (let i = 0; i < m.bars.count; i++) {\n hash = (hash * 31 + m.bars.z0[i] * 997 + m.bars.z1[i] * 13) % 1e12;\n }\n return String(hash);\n};\n\n/** CSS color of a packed color */\nexport const packedCss = (packed: number): string =>\n toCss([\n (packed & 0xff) / 255,\n ((packed >>> 8) & 0xff) / 255,\n ((packed >>> 16) & 0xff) / 255,\n ((packed >>> 24) & 0xff) / 255,\n ]);\n"],"mappings":"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"}
|
|
@@ -18,6 +18,12 @@ export interface GeometryColors {
|
|
|
18
18
|
export interface GeometryBudget {
|
|
19
19
|
/** Largest surface grid side drawn (resampled above) */
|
|
20
20
|
maxGridSide: number;
|
|
21
|
+
/**
|
|
22
|
+
* Largest number of scatter dots drawn (every series together): above,
|
|
23
|
+
* the clouds keep 1 point out of n, and only the kept points can be
|
|
24
|
+
* hovered
|
|
25
|
+
*/
|
|
26
|
+
maxPoints: number;
|
|
21
27
|
}
|
|
22
28
|
export declare const GPU_BUDGET: GeometryBudget;
|
|
23
29
|
export declare const CPU_BUDGET: GeometryBudget;
|
|
@@ -18,6 +18,12 @@ export interface GeometryColors {
|
|
|
18
18
|
export interface GeometryBudget {
|
|
19
19
|
/** Largest surface grid side drawn (resampled above) */
|
|
20
20
|
maxGridSide: number;
|
|
21
|
+
/**
|
|
22
|
+
* Largest number of scatter dots drawn (every series together): above,
|
|
23
|
+
* the clouds keep 1 point out of n, and only the kept points can be
|
|
24
|
+
* hovered
|
|
25
|
+
*/
|
|
26
|
+
maxPoints: number;
|
|
21
27
|
}
|
|
22
28
|
export declare const GPU_BUDGET: GeometryBudget;
|
|
23
29
|
export declare const CPU_BUDGET: GeometryBudget;
|