minerva-design 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +21 -21
- package/custom-elements.json +4047 -1703
- package/dist/angular/fesm2022/minerva-angular.mjs +1436 -5
- package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
- package/dist/angular/types/minerva-angular.d.ts +573 -4
- package/dist/charts/canvas.d.cts +2 -2
- package/dist/charts/canvas.d.ts +2 -2
- 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 +154 -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 +365 -251
- 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 +32 -1
- package/dist/charts/engine/controller.d.ts +32 -1
- package/dist/charts/engine/controller.js +310 -263
- 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 +1565 -0
- package/dist/charts/engine/graph/chart.js.map +1 -0
- package/dist/charts/engine/graph/circular.cjs +2 -0
- package/dist/charts/engine/graph/circular.cjs.map +1 -0
- package/dist/charts/engine/graph/circular.d.cts +16 -0
- package/dist/charts/engine/graph/circular.d.ts +16 -0
- package/dist/charts/engine/graph/circular.js +62 -0
- package/dist/charts/engine/graph/circular.js.map +1 -0
- package/dist/charts/engine/graph/dag.cjs +2 -0
- package/dist/charts/engine/graph/dag.cjs.map +1 -0
- package/dist/charts/engine/graph/dag.d.cts +34 -0
- package/dist/charts/engine/graph/dag.d.ts +34 -0
- package/dist/charts/engine/graph/dag.js +314 -0
- package/dist/charts/engine/graph/dag.js.map +1 -0
- package/dist/charts/engine/graph/dom.cjs +2 -0
- package/dist/charts/engine/graph/dom.cjs.map +1 -0
- package/dist/charts/engine/graph/dom.d.cts +23 -0
- package/dist/charts/engine/graph/dom.d.ts +23 -0
- package/dist/charts/engine/graph/dom.js +158 -0
- package/dist/charts/engine/graph/dom.js.map +1 -0
- package/dist/charts/engine/graph/force.cjs +2 -0
- package/dist/charts/engine/graph/force.cjs.map +1 -0
- package/dist/charts/engine/graph/force.d.cts +67 -0
- package/dist/charts/engine/graph/force.d.ts +67 -0
- package/dist/charts/engine/graph/force.js +325 -0
- package/dist/charts/engine/graph/force.js.map +1 -0
- package/dist/charts/engine/graph/geometry.cjs +2 -0
- package/dist/charts/engine/graph/geometry.cjs.map +1 -0
- package/dist/charts/engine/graph/geometry.d.cts +37 -0
- package/dist/charts/engine/graph/geometry.d.ts +37 -0
- package/dist/charts/engine/graph/geometry.js +144 -0
- package/dist/charts/engine/graph/geometry.js.map +1 -0
- package/dist/charts/engine/graph/index.cjs +1 -0
- package/dist/charts/engine/graph/index.d.cts +6 -0
- package/dist/charts/engine/graph/index.d.ts +6 -0
- package/dist/charts/engine/graph/index.js +6 -0
- package/dist/charts/engine/graph/labels.cjs +2 -0
- package/dist/charts/engine/graph/labels.cjs.map +1 -0
- package/dist/charts/engine/graph/labels.d.cts +12 -0
- package/dist/charts/engine/graph/labels.d.ts +12 -0
- package/dist/charts/engine/graph/labels.js +128 -0
- package/dist/charts/engine/graph/labels.js.map +1 -0
- package/dist/charts/engine/graph/model.cjs +2 -0
- package/dist/charts/engine/graph/model.cjs.map +1 -0
- package/dist/charts/engine/graph/model.d.cts +43 -0
- package/dist/charts/engine/graph/model.d.ts +43 -0
- package/dist/charts/engine/graph/model.js +88 -0
- package/dist/charts/engine/graph/model.js.map +1 -0
- package/dist/charts/engine/graph/sizing.cjs +2 -0
- package/dist/charts/engine/graph/sizing.cjs.map +1 -0
- package/dist/charts/engine/graph/sizing.d.cts +33 -0
- package/dist/charts/engine/graph/sizing.d.ts +33 -0
- package/dist/charts/engine/graph/sizing.js +60 -0
- package/dist/charts/engine/graph/sizing.js.map +1 -0
- package/dist/charts/engine/graph/tree.cjs +2 -0
- package/dist/charts/engine/graph/tree.cjs.map +1 -0
- package/dist/charts/engine/graph/tree.d.cts +30 -0
- package/dist/charts/engine/graph/tree.d.ts +30 -0
- package/dist/charts/engine/graph/tree.js +218 -0
- package/dist/charts/engine/graph/tree.js.map +1 -0
- package/dist/charts/engine/graph/types.d.cts +626 -0
- package/dist/charts/engine/graph/types.d.ts +626 -0
- package/dist/charts/engine/graph/worker.cjs +46 -0
- package/dist/charts/engine/graph/worker.cjs.map +1 -0
- package/dist/charts/engine/graph/worker.d.cts +36 -0
- package/dist/charts/engine/graph/worker.d.ts +36 -0
- package/dist/charts/engine/graph/worker.js +129 -0
- package/dist/charts/engine/graph/worker.js.map +1 -0
- package/dist/charts/engine/items.cjs +1 -1
- package/dist/charts/engine/items.cjs.map +1 -1
- package/dist/charts/engine/items.d.cts +15 -2
- package/dist/charts/engine/items.d.ts +15 -2
- package/dist/charts/engine/items.js +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.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 +40 -3
- package/dist/charts/engine/model.d.ts +40 -3
- package/dist/charts/engine/model.js +246 -165
- package/dist/charts/engine/model.js.map +1 -1
- 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 +527 -408
- package/dist/charts/engine/orderbook/heatmap.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 +37 -0
- package/dist/charts/engine/orderbook/layout.d.ts +37 -0
- package/dist/charts/engine/orderbook/layout.js +70 -0
- package/dist/charts/engine/orderbook/layout.js.map +1 -0
- package/dist/charts/engine/orderbook/tape.cjs +1 -1
- package/dist/charts/engine/orderbook/tape.cjs.map +1 -1
- package/dist/charts/engine/orderbook/tape.js +1 -1
- package/dist/charts/engine/orderbook/tape.js.map +1 -1
- package/dist/charts/engine/orderbook/types.d.cts +18 -2
- package/dist/charts/engine/orderbook/types.d.ts +18 -2
- package/dist/charts/engine/overlay.cjs +1 -1
- package/dist/charts/engine/overlay.cjs.map +1 -1
- package/dist/charts/engine/overlay.d.cts +10 -0
- package/dist/charts/engine/overlay.d.ts +10 -0
- package/dist/charts/engine/overlay.js +6 -0
- 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 +25 -3
- package/dist/charts/engine/presets.d.ts +25 -3
- package/dist/charts/engine/presets.js +115 -101
- package/dist/charts/engine/presets.js.map +1 -1
- package/dist/charts/engine/renderers/detect.cjs +1 -1
- package/dist/charts/engine/renderers/detect.cjs.map +1 -1
- package/dist/charts/engine/renderers/detect.d.cts +2 -1
- package/dist/charts/engine/renderers/detect.d.ts +2 -1
- package/dist/charts/engine/renderers/detect.js +23 -21
- package/dist/charts/engine/renderers/detect.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 +57 -4
- package/dist/charts/engine/scene.d.ts +57 -4
- package/dist/charts/engine/scene.js +335 -182
- 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 +414 -0
- package/dist/charts/engine/shapes/chord.js.map +1 -0
- package/dist/charts/engine/shapes/draw.cjs +1 -1
- package/dist/charts/engine/shapes/draw.cjs.map +1 -1
- package/dist/charts/engine/shapes/draw.d.cts +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 +119 -8
- package/dist/charts/engine/shapes/types.d.ts +119 -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 +5 -2
- package/dist/charts/engine/three-d/canvas2d.d.ts +5 -2
- package/dist/charts/engine/three-d/canvas2d.js +89 -65
- package/dist/charts/engine/three-d/canvas2d.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/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 +24 -3
- package/dist/charts/engine/three-d/render-types.d.ts +24 -3
- package/dist/charts/engine/three-d/render-types.js +6 -7
- package/dist/charts/engine/three-d/render-types.js.map +1 -1
- package/dist/charts/engine/three-d/shaders.cjs +63 -28
- package/dist/charts/engine/three-d/shaders.cjs.map +1 -1
- package/dist/charts/engine/three-d/shaders.d.cts +2 -3
- package/dist/charts/engine/three-d/shaders.d.ts +2 -3
- package/dist/charts/engine/three-d/shaders.js +41 -22
- 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 +15 -4
- package/dist/charts/engine/three-d/sort.d.ts +15 -4
- package/dist/charts/engine/three-d/sort.js +117 -43
- package/dist/charts/engine/three-d/sort.js.map +1 -1
- package/dist/charts/engine/three-d/types.d.cts +27 -0
- package/dist/charts/engine/three-d/types.d.ts +27 -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.js +15 -13
- 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 +50 -39
- 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 -0
- package/dist/charts/engine/trading/chart.d.ts +10 -0
- package/dist/charts/engine/trading/chart.js +1475 -776
- 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 +47 -9
- package/dist/charts/engine/trading/drawings.d.ts +47 -9
- package/dist/charts/engine/trading/drawings.js +338 -75
- 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 +13 -0
- package/dist/charts/engine/trading/format.d.ts +13 -0
- package/dist/charts/engine/trading/format.js +51 -19
- package/dist/charts/engine/trading/format.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 +84 -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 +41 -8
- package/dist/charts/engine/trading/studies.d.ts +41 -8
- package/dist/charts/engine/trading/studies.js +349 -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 +484 -9
- package/dist/charts/engine/trading/types.d.ts +484 -9
- package/dist/charts/engine/types.d.cts +82 -8
- package/dist/charts/engine/types.d.ts +82 -8
- 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 +46 -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 +213 -0
- package/dist/charts/react/graph.d.ts +213 -0
- package/dist/charts/react/graph.js +159 -0
- package/dist/charts/react/graph.js.map +1 -0
- package/dist/charts/react/shapes.cjs +1 -1
- package/dist/charts/react/shapes.cjs.map +1 -1
- package/dist/charts/react/shapes.d.cts +87 -4
- package/dist/charts/react/shapes.d.ts +87 -4
- package/dist/charts/react/shapes.js +55 -12
- package/dist/charts/react/shapes.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 +53 -1
- package/dist/charts/react/trading.d.ts +53 -1
- 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 +3 -3
- package/dist/native/charts/src/engine/axis.cjs +1 -1
- package/dist/native/charts/src/engine/axis.cjs.map +1 -1
- package/dist/native/charts/src/engine/axis.js +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 +300 -253
- 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 +28 -4
- 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 +252 -171
- 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 +104 -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 +341 -188
- 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 +414 -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 +117 -90
- 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/scene.cjs +1 -1
- package/dist/native/components/Chart/scene.cjs.map +1 -1
- package/dist/native/components/Chart/scene.js +140 -71
- package/dist/native/components/Chart/scene.js.map +1 -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 +54 -42
- 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.js +1 -0
- 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 +138 -59
- 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 +92 -7
- package/dist/native/components/ShapeChart/types.d.ts +92 -7
- package/dist/native/index.cjs +1 -1
- package/dist/native/index.js +2 -2
- package/dist/native/source/components/Chart/scene.tsx +158 -14
- package/dist/native/source/components/Charts/charts.tsx +30 -2
- package/dist/native/source/components/Charts/types.ts +11 -0
- package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +2 -0
- 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 +189 -8
- 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 +96 -5
- package/dist/native/source/manifest.ts +1 -0
- package/dist/taro/charts.d.ts +25 -5
- package/dist/taro/index.js +3900 -2836
- package/dist/taro/shape-charts.d.ts +96 -4
- package/dist/uni/AreaChart.vue.d.ts +5 -1
- package/dist/uni/Badge.vue.d.ts +1 -1
- package/dist/uni/BarChart.vue.d.ts +5 -1
- package/dist/uni/BoxPlotChart.vue.d.ts +8 -0
- 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.d.ts +4 -0
- package/dist/uni/Chart.vue.d.ts +4 -0
- package/dist/uni/ChordChart.vue +93 -0
- package/dist/uni/ChordChart.vue.d.ts +136 -0
- package/dist/uni/DonutChart.vue.d.ts +4 -0
- package/dist/uni/FunnelChart.vue.d.ts +4 -0
- package/dist/uni/GanttChart.vue.d.ts +4 -0
- package/dist/uni/GaugeChart.vue.d.ts +4 -0
- package/dist/uni/HeatmapChart.vue.d.ts +8 -2
- package/dist/uni/HistogramChart.vue.d.ts +4 -0
- package/dist/uni/HorizontalBarChart.vue.d.ts +3 -1
- package/dist/uni/LineChart.vue.d.ts +4 -0
- package/dist/uni/MixedChart.vue.d.ts +4 -0
- package/dist/uni/PieChart.vue.d.ts +4 -0
- 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.d.ts +4 -0
- package/dist/uni/SankeyChart.vue.d.ts +4 -0
- package/dist/uni/ScatterChart.vue.d.ts +4 -0
- 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.d.ts +9 -0
- package/dist/uni/chart-canvas.d.ts +3 -0
- package/dist/uni/chart-canvas.js +4 -0
- package/dist/uni/chart-types.d.ts +28 -4
- package/dist/uni/chart-types.js +26 -2
- package/dist/uni/charts-canvas.js +1 -1
- 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 +9 -2
- package/dist/uni/named-chart-options.js +18 -1
- package/dist/uni/shape-chart-canvas.d.ts +3 -1
- package/dist/uni/shape-chart-canvas.js +15 -24
- package/dist/uni/shape-chart-types.d.ts +52 -2
- package/dist/uni/shape-chart-types.js +44 -0
- package/dist/vue/charts-global.d.ts +48 -0
- package/dist/vue/charts.d.ts +18 -0
- package/dist/vue/charts.js +56 -0
- package/dist/vue/charts.js.map +1 -0
- package/dist/vue/components/Chart/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 +179 -0
- package/dist/vue/components/Chart/DependencyGraph.vue.js +7 -0
- package/dist/vue/components/Chart/DependencyGraph.vue.js.map +1 -0
- package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GanttChart.vue.d.ts +4 -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 +4 -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 +184 -0
- package/dist/vue/components/Chart/GraphChart.vue.js +7 -0
- package/dist/vue/components/Chart/GraphChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js +62 -0
- package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +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/OrderBookHeatmap.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 +49 -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 +172 -0
- package/dist/vue/components/Chart/TreeChart.vue.js +7 -0
- package/dist/vue/components/Chart/TreeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/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 +153 -0
- package/dist/vue/components/Chart/graph.js +135 -0
- package/dist/vue/components/Chart/graph.js.map +1 -0
- package/dist/vue/components/Chart/index.d.ts +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/trading.d.ts +24 -2
- package/dist/vue/components/Chart/trading.js +8 -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/charts/canvas.js +1687 -147
- package/dist/weapp/charts/core.js +1 -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 +92 -32
- package/dist/weapp/types.d.ts +87 -4
- 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 +17 -7
- package/dist/web-components/components/chart/extended.js +23 -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/graph/graph.d.ts +154 -0
- package/dist/web-components/components/graph/graph.js +149 -0
- package/dist/web-components/components/graph/graph.js.map +1 -0
- package/dist/web-components/components/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 +273 -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,6 +1,9 @@
|
|
|
1
1
|
import { drawOrder as e } from "./render-types.js";
|
|
2
2
|
//#region src/engine/three-d/canvas2d.ts
|
|
3
|
-
var t =
|
|
3
|
+
var t = 0, n = 1, r = 2, i = 32, a = 2.2, o = (e, t) => {
|
|
4
|
+
let n = Math.max(0, Math.min(1, t * .6 + .5 - e)), r = e / t;
|
|
5
|
+
return [n + (1 - n) * Math.exp(-1.2 * r * r), .2 * n];
|
|
6
|
+
}, s = (e, t, n, r, i, a, o) => {
|
|
4
7
|
let s = new Float32Array(i), c = new Float32Array(i), l = new Float32Array(i), u = new Float32Array(i);
|
|
5
8
|
for (let d = 0; d < i; d++) {
|
|
6
9
|
let i = d * n + r, f = t[i], p = t[i + 1], m = t[i + 2], h = e[3] * f + e[7] * p + e[11] * m + e[15], g = 1 / (h > 1e-9 ? h : 1e-9);
|
|
@@ -12,93 +15,114 @@ var t = 4e4, n = 0, r = 1, i = 2, a = (e, t, n, r, i, a, o) => {
|
|
|
12
15
|
z: l,
|
|
13
16
|
w: u
|
|
14
17
|
};
|
|
15
|
-
},
|
|
16
|
-
let
|
|
17
|
-
if (!
|
|
18
|
-
let
|
|
19
|
-
let r =
|
|
20
|
-
return i === void 0 && (i = `rgb(${r >> 16},${r >> 8 & 255},${r & 255})`,
|
|
21
|
-
},
|
|
22
|
-
let
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
D.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
18
|
+
}, c = (e) => e < 0 ? 0 : e > 255 ? 255 : Math.round(e), l = (i) => {
|
|
19
|
+
let o = i.getContext("2d");
|
|
20
|
+
if (!o) return null;
|
|
21
|
+
let l = /* @__PURE__ */ new Map(), f = (e, t, n) => {
|
|
22
|
+
let r = c(e) << 16 | c(t) << 8 | c(n), i = l.get(r);
|
|
23
|
+
return i === void 0 && (i = `rgb(${r >> 16},${r >> 8 & 255},${r & 255})`, l.size > 4096 && l.clear(), l.set(r, i)), i;
|
|
24
|
+
}, p = /* @__PURE__ */ new Map(), m = (e, t, n) => {
|
|
25
|
+
let r = c(e) >> 4 << 8 | c(t) >> 4 << 4 | c(n) >> 4, a = p.get(r);
|
|
26
|
+
return a === void 0 && (a = d(i, (r >> 8 & 15) * 17, (r >> 4 & 15) * 17, (r & 15) * 17), p.set(r, a)), a;
|
|
27
|
+
}, h = (c, l) => {
|
|
28
|
+
let { width: d, height: p } = i, h = l.dpr;
|
|
29
|
+
o.setTransform(1, 0, 0, 1, 0, 0), o.clearRect(0, 0, d, p);
|
|
30
|
+
let g = e(c), _ = l.viewProj, [v, y, b, x] = l.lighting, S = l.light, C = l.fog[0] * 255, w = l.fog[1] * 255, T = l.fog[2] * 255, E = [], D = [], O = [], k = 0;
|
|
31
|
+
for (let e of g) k += e.kind === "mesh" ? e.indices.length / 3 : e.count;
|
|
32
|
+
let A = new Float32Array(k), j = new Uint8Array(k), M = new Uint16Array(k), N = new Uint32Array(k), P = 0;
|
|
33
|
+
g.forEach((e, i) => {
|
|
34
|
+
let a = e.kind === "mesh" ? e.vertices : e.data;
|
|
35
|
+
if (D.push(new Float32Array(a)), O.push(new Uint8Array(a)), e.kind === "mesh") {
|
|
36
|
+
let n = D[i], r = s(_, n, 7, 0, e.vertexCount, d, p);
|
|
37
|
+
E.push(r);
|
|
38
|
+
let a = e.indices;
|
|
39
|
+
for (let e = 0; e + 2 < a.length; e += 3) {
|
|
40
|
+
let n = a[e], o = a[e + 1], s = a[e + 2];
|
|
41
|
+
r.w[n] <= 0 || r.w[o] <= 0 || r.w[s] <= 0 || (A[P] = (r.z[n] + r.z[o] + r.z[s]) / 3, j[P] = t, M[P] = i, N[P] = e, P++);
|
|
38
42
|
}
|
|
39
43
|
} else if (e.kind === "points") {
|
|
40
|
-
let
|
|
41
|
-
|
|
42
|
-
for (let
|
|
44
|
+
let t = D[i], r = s(_, t, 5, 0, e.count, d, p);
|
|
45
|
+
E.push(r);
|
|
46
|
+
for (let t = 0; t < e.count; t++) r.w[t] <= 0 || (A[P] = r.z[t], j[P] = n, M[P] = i, N[P] = t, P++);
|
|
43
47
|
} else {
|
|
44
|
-
let
|
|
45
|
-
|
|
46
|
-
x:
|
|
47
|
-
y:
|
|
48
|
-
z:
|
|
49
|
-
w:
|
|
48
|
+
let t = D[i], n = s(_, t, 7, 0, e.count, d, p), a = s(_, t, 7, 3, e.count, d, p);
|
|
49
|
+
E.push({
|
|
50
|
+
x: u(n.x, a.x),
|
|
51
|
+
y: u(n.y, a.y),
|
|
52
|
+
z: u(n.z, a.z),
|
|
53
|
+
w: u(n.w, a.w)
|
|
50
54
|
});
|
|
51
|
-
let
|
|
52
|
-
for (let
|
|
55
|
+
let o = e.bias * 5;
|
|
56
|
+
for (let t = 0; t < e.count; t++) n.w[t] <= 0 || a.w[t] <= 0 || (A[P] = (n.z[t] + a.z[t]) / 2 - o, j[P] = r, M[P] = i, N[P] = t, P++);
|
|
53
57
|
}
|
|
54
58
|
});
|
|
55
|
-
let
|
|
56
|
-
for (let e = 0; e <
|
|
57
|
-
|
|
58
|
-
let
|
|
59
|
-
e !==
|
|
60
|
-
}, z =
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
let
|
|
65
|
-
if (
|
|
66
|
-
|
|
59
|
+
let F = new Uint32Array(P);
|
|
60
|
+
for (let e = 0; e < P; e++) F[e] = e;
|
|
61
|
+
F.sort((e, t) => A[t] - A[e]), o.lineJoin = "round", o.lineCap = "round";
|
|
62
|
+
let I = -1, L = (e) => {
|
|
63
|
+
e !== I && (o.globalAlpha = e, I = e);
|
|
64
|
+
}, R = !1, z = (e) => {
|
|
65
|
+
e !== R && (o.globalCompositeOperation = e ? "lighter" : "source-over", R = e);
|
|
66
|
+
}, B = l.distance - l.radius;
|
|
67
|
+
for (let e = 0; e < P; e++) {
|
|
68
|
+
let i = F[e], s = g[M[i]], c = E[M[i]], u = D[M[i]], d = O[M[i]];
|
|
69
|
+
if (!s || !c || !u || !d) continue;
|
|
70
|
+
let p = N[i];
|
|
71
|
+
if (z(s.kind === "points" && !!s.additive), s.kind === "mesh" && j[i] === t) {
|
|
72
|
+
let e = s.indices[p], t = s.indices[p + 1], n = s.indices[p + 2], r = u[e * 7], i = u[e * 7 + 1], a = u[e * 7 + 2], m = u[t * 7] - r, h = u[t * 7 + 1] - i, g = u[t * 7 + 2] - a, _ = u[n * 7] - r, C = u[n * 7 + 1] - i, w = u[n * 7 + 2] - a, T = h * w - g * C, E = g * _ - m * w, D = m * C - h * _, O = Math.hypot(T, E, D) || 1;
|
|
67
73
|
T /= O, E /= O, D /= O;
|
|
68
|
-
let k =
|
|
74
|
+
let k = l.eye[0] - r, A = l.eye[1] - i, j = l.eye[2] - a, M = Math.hypot(k, A, j) || 1;
|
|
69
75
|
k /= M, A /= M, j /= M, T * k + E * A + D * j < 0 && (T = -T, E = -E, D = -D);
|
|
70
|
-
let N = Math.max(0, T *
|
|
71
|
-
P /=
|
|
72
|
-
let z = Math.max(0, T * P + E * F + D * I) ** +
|
|
73
|
-
|
|
74
|
-
} else if (
|
|
75
|
-
let e =
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
let N = Math.max(0, T * S[0] + E * S[1] + D * S[2]), P = S[0] + k, F = S[1] + A, I = S[2] + j, R = Math.hypot(P, F, I) || 1;
|
|
77
|
+
P /= R, F /= R, I /= R;
|
|
78
|
+
let z = Math.max(0, T * P + E * F + D * I) ** +x * b * 255, B = v + y * N, V = e * 28 + 24, H = t * 28 + 24, U = n * 28 + 24, W = (d[V] + d[H] + d[U]) / 3, G = (d[V + 1] + d[H + 1] + d[U + 1]) / 3, K = (d[V + 2] + d[H + 2] + d[U + 2]) / 3, q = (d[V + 3] + d[H + 3] + d[U + 3]) / 765, J = f(W * B + z, G * B + z, K * B + z);
|
|
79
|
+
L(s.opacity * q), o.beginPath(), o.moveTo(c.x[e], c.y[e]), o.lineTo(c.x[t], c.y[t]), o.lineTo(c.x[n], c.y[n]), o.closePath(), o.fillStyle = J, o.fill(), s.opacity >= 1 && !s.transparent && (o.strokeStyle = J, o.lineWidth = .75, o.stroke());
|
|
80
|
+
} else if (s.kind === "points" && j[i] === n) {
|
|
81
|
+
let e = s.perspective && !l.orthographic ? Math.max(.5, Math.min(2, l.distance / Math.max(c.w[p], 1e-6))) : 1, t = s.style === 2, n = Math.max(1, s.thinned ?? 1), r = t ? Math.sqrt(Math.sqrt(n)) : 1, i = Math.max(0, u[p * 5 + 3]) * h * e * r / 2, g = Math.max(i, t ? .75 : .5), _ = Math.min(1, i * i / (g * g)), v = p * 20 + 16, y = u[p * 5] - l.eye[0], b = u[p * 5 + 1] - l.eye[1], x = u[p * 5 + 2] - l.eye[2], S = Math.max(0, Math.min(1, (Math.hypot(y, b, x) - B) / (2 * l.radius))) * .45, E = d[v], D = d[v + 1], O = d[v + 2], k = s.opacity * (d[v + 3] / 255) * _ * Math.sqrt(n);
|
|
82
|
+
s.additive ? k *= 1 - S : (E += (C - E) * S, D += (w - D) * S, O += (T - O) * S), L(Math.min(1, k));
|
|
83
|
+
let A = t ? m(E, D, O) : null;
|
|
84
|
+
if (A) {
|
|
85
|
+
let e = g * a;
|
|
86
|
+
o.drawImage(A, c.x[p] - e, c.y[p] - e, e * 2, e * 2);
|
|
87
|
+
} else o.fillStyle = f(E, D, O), g < 1.5 ? o.fillRect(c.x[p] - g, c.y[p] - g, g * 2, g * 2) : (o.beginPath(), o.arc(c.x[p], c.y[p], g, 0, Math.PI * 2), o.fill());
|
|
88
|
+
} else if (s.kind === "lines" && j[i] === r) {
|
|
89
|
+
let e = p * 28 + 24, t = c.x.length / 2;
|
|
90
|
+
L(s.opacity * (d[e + 3] / 255)), o.strokeStyle = f(d[e], d[e + 1], d[e + 2]), o.lineWidth = Math.max(.5, s.width * h), o.beginPath(), o.moveTo(c.x[p], c.y[p]), o.lineTo(c.x[t + p], c.y[t + p]), o.stroke();
|
|
80
91
|
}
|
|
81
92
|
}
|
|
82
|
-
|
|
93
|
+
o.globalAlpha = 1, z(!1);
|
|
83
94
|
};
|
|
84
95
|
return {
|
|
85
96
|
kind: "canvas2d",
|
|
86
|
-
canvas:
|
|
97
|
+
canvas: i,
|
|
87
98
|
resize(e, t) {
|
|
88
|
-
|
|
99
|
+
i.width = Math.max(1, e), i.height = Math.max(1, t);
|
|
89
100
|
},
|
|
90
101
|
render(e, t) {
|
|
91
|
-
|
|
102
|
+
h(e, t);
|
|
92
103
|
},
|
|
93
104
|
destroy() {
|
|
94
|
-
|
|
105
|
+
l.clear(), p.clear(), o.setTransform(1, 0, 0, 1, 0, 0), o.clearRect(0, 0, i.width, i.height);
|
|
95
106
|
}
|
|
96
107
|
};
|
|
97
|
-
},
|
|
108
|
+
}, u = (e, t) => {
|
|
98
109
|
let n = new Float32Array(e.length + t.length);
|
|
99
110
|
return n.set(e, 0), n.set(t, e.length), n;
|
|
111
|
+
}, d = (e, t, n, r) => {
|
|
112
|
+
let s = e.ownerDocument.createElement("canvas");
|
|
113
|
+
s.width = i, s.height = i;
|
|
114
|
+
let c = s.getContext("2d");
|
|
115
|
+
if (!c || typeof c.createImageData != "function") return null;
|
|
116
|
+
let l = c.createImageData(i, i);
|
|
117
|
+
if (!l) return null;
|
|
118
|
+
let u = i / 2, d = u / a;
|
|
119
|
+
for (let e = 0; e < i; e++) for (let a = 0; a < i; a++) {
|
|
120
|
+
let s = Math.hypot(a + .5 - u, e + .5 - u), [c, f] = o(s, d), p = (e * i + a) * 4;
|
|
121
|
+
l.data[p] = t + (255 - t) * f, l.data[p + 1] = n + (255 - n) * f, l.data[p + 2] = r + (255 - r) * f, l.data[p + 3] = s < u ? c * 255 : 0;
|
|
122
|
+
}
|
|
123
|
+
return c.putImageData(l, 0, 0), s;
|
|
100
124
|
};
|
|
101
125
|
//#endregion
|
|
102
|
-
export {
|
|
126
|
+
export { l as createCanvas2d3D, o as glowProfile };
|
|
103
127
|
|
|
104
128
|
//# sourceMappingURL=canvas2d.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas2d.js","names":["CPU_POINT_BUDGET","TRIANGLE","POINT","SEGMENT","projectAll","x","count","y","z","w","i","o","stride","offset","px","data","py","pz","cw","m","iw","width","height","clamp255","v","createCanvas2d3D","ctx","canvas","styles","style","key","r","g","b","s","render","dpr","frame","ordered","drawOrder","items","ambient","diffuse","specular","shininess","L","fogR","fogG","fogB","totalPoints","item","pointStride","projected","floats","bytes","capacity","depth","kind","owner","element","n","raw","f32","k","p","idx","t","a","c","concat","bias","order","currentAlpha","alpha","value","near","u8","e","ax","ay","az","ux","uy","uz","vx","vy","vz","nx","ny","nz","len","ex","ey","ez","el","lambert","hx","hy","hz","hl","spec","light","ca","cb","cc","bl","ac","fill","scale","radius","wx","wy","wz","fog","half","out"],"sources":["../../../../../charts/src/engine/three-d/canvas2d.ts"],"sourcesContent":["// Canvas2D backend of the 3D charts: CPU projection and the painter's\n// algorithm (every triangle, dot and segment sorted back to front), flat\n// lighting per triangle. Point clouds are decimated to a fixed budget; the\n// chart also resamples the surfaces (`CPU_BUDGET`) for this backend.\n\nimport {\n drawOrder,\n type Frame3D,\n type Item3D,\n type Renderer3D,\n} from \"./render-types\";\n\n/** Largest number of dots drawn per frame (by stride over every point item) */\nexport const CPU_POINT_BUDGET = 40_000;\n\nconst TRIANGLE = 0;\nconst POINT = 1;\nconst SEGMENT = 2;\n\ninterface Projected {\n x: Float32Array;\n y: Float32Array;\n z: Float32Array;\n w: Float32Array;\n}\n\nconst projectAll = (\n m: Float32Array,\n data: Float32Array,\n stride: number,\n offset: number,\n count: number,\n width: number,\n height: number,\n): Projected => {\n const x = new Float32Array(count);\n const y = new Float32Array(count);\n const z = new Float32Array(count);\n const w = new Float32Array(count);\n for (let i = 0; i < count; i++) {\n const o = i * stride + offset;\n const px = data[o];\n const py = data[o + 1];\n const pz = data[o + 2];\n const cw = m[3] * px + m[7] * py + m[11] * pz + m[15];\n const iw = 1 / (cw > 1e-9 ? cw : 1e-9);\n x[i] = ((m[0] * px + m[4] * py + m[8] * pz + m[12]) * iw + 1) * 0.5 * width;\n y[i] =\n (1 - (m[1] * px + m[5] * py + m[9] * pz + m[13]) * iw) * 0.5 * height;\n z[i] = (m[2] * px + m[6] * py + m[10] * pz + m[14]) * iw;\n w[i] = cw;\n }\n return { x, y, z, w };\n};\n\nconst clamp255 = (v: number) => (v < 0 ? 0 : v > 255 ? 255 : Math.round(v));\n\nexport const createCanvas2d3D = (\n canvas: HTMLCanvasElement,\n): Renderer3D | null => {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return null;\n const styles = new Map<number, string>();\n const style = (r: number, g: number, b: number) => {\n const key = (clamp255(r) << 16) | (clamp255(g) << 8) | clamp255(b);\n let s = styles.get(key);\n if (s === undefined) {\n s = `rgb(${key >> 16},${(key >> 8) & 255},${key & 255})`;\n if (styles.size > 4096) styles.clear();\n styles.set(key, s);\n }\n return s;\n };\n\n const render = (items: readonly Item3D[], frame: Frame3D) => {\n const { width, height } = canvas;\n const dpr = frame.dpr;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, width, height);\n const ordered = drawOrder(items);\n const m = frame.viewProj;\n const [ambient, diffuse, specular, shininess] = frame.lighting;\n const L = frame.light;\n const fogR = frame.fog[0] * 255;\n const fogG = frame.fog[1] * 255;\n const fogB = frame.fog[2] * 255;\n\n let totalPoints = 0;\n for (const item of ordered)\n if (item.kind === \"points\") totalPoints += item.count;\n const pointStride = Math.max(1, Math.ceil(totalPoints / CPU_POINT_BUDGET));\n\n // ---- collect the primitives\n const projected: (Projected | null)[] = [];\n // typed views of every item (floats and bytes of the same buffer)\n const floats: Float32Array[] = [];\n const bytes: Uint8Array[] = [];\n let capacity = 0;\n for (const item of ordered) {\n capacity +=\n item.kind === \"mesh\"\n ? item.indices.length / 3\n : item.kind === \"points\"\n ? Math.ceil(item.count / pointStride)\n : item.count;\n }\n const depth = new Float32Array(capacity);\n const kind = new Uint8Array(capacity);\n const owner = new Uint16Array(capacity);\n const element = new Uint32Array(capacity);\n let n = 0;\n ordered.forEach((item, k) => {\n const raw = item.kind === \"mesh\" ? item.vertices : item.data;\n floats.push(new Float32Array(raw));\n bytes.push(new Uint8Array(raw));\n if (item.kind === \"mesh\") {\n const f32 = floats[k]!;\n const p = projectAll(m, f32, 7, 0, item.vertexCount, width, height);\n projected.push(p);\n const idx = item.indices;\n for (let t = 0; t + 2 < idx.length; t += 3) {\n const a = idx[t];\n const b = idx[t + 1];\n const c = idx[t + 2];\n if (p.w[a] <= 0 || p.w[b] <= 0 || p.w[c] <= 0) continue;\n depth[n] = (p.z[a] + p.z[b] + p.z[c]) / 3;\n kind[n] = TRIANGLE;\n owner[n] = k;\n element[n] = t;\n n++;\n }\n } else if (item.kind === \"points\") {\n const f32 = floats[k]!;\n const p = projectAll(m, f32, 5, 0, item.count, width, height);\n projected.push(p);\n for (let i = 0; i < item.count; i += pointStride) {\n if (p.w[i] <= 0) continue;\n depth[n] = p.z[i];\n kind[n] = POINT;\n owner[n] = k;\n element[n] = i;\n n++;\n }\n } else {\n const f32 = floats[k]!;\n // both ends: projected as two interleaved point lists\n const a = projectAll(m, f32, 7, 0, item.count, width, height);\n const b = projectAll(m, f32, 7, 3, item.count, width, height);\n projected.push({\n x: concat(a.x, b.x),\n y: concat(a.y, b.y),\n z: concat(a.z, b.z),\n w: concat(a.w, b.w),\n });\n const bias = item.bias * 5;\n for (let i = 0; i < item.count; i++) {\n if (a.w[i] <= 0 || b.w[i] <= 0) continue;\n depth[n] = (a.z[i] + b.z[i]) / 2 - bias;\n kind[n] = SEGMENT;\n owner[n] = k;\n element[n] = i;\n n++;\n }\n }\n });\n const order = new Uint32Array(n);\n for (let i = 0; i < n; i++) order[i] = i;\n order.sort((a, b) => depth[b] - depth[a]);\n\n // ---- draw back to front\n ctx.lineJoin = \"round\";\n ctx.lineCap = \"round\";\n let currentAlpha = -1;\n const alpha = (value: number) => {\n if (value !== currentAlpha) {\n ctx.globalAlpha = value;\n currentAlpha = value;\n }\n };\n const near = frame.distance - frame.radius;\n for (let o = 0; o < n; o++) {\n const i = order[o];\n const item = ordered[owner[i]];\n const p = projected[owner[i]];\n const f32 = floats[owner[i]];\n const u8 = bytes[owner[i]];\n if (!item || !p || !f32 || !u8) continue;\n const e = element[i];\n if (item.kind === \"mesh\" && kind[i] === TRIANGLE) {\n const a = item.indices[e];\n const b = item.indices[e + 1];\n const c = item.indices[e + 2];\n // flat normal facing the camera\n const ax = f32[a * 7],\n ay = f32[a * 7 + 1],\n az = f32[a * 7 + 2];\n const ux = f32[b * 7] - ax,\n uy = f32[b * 7 + 1] - ay,\n uz = f32[b * 7 + 2] - az;\n const vx = f32[c * 7] - ax,\n vy = f32[c * 7 + 1] - ay,\n vz = f32[c * 7 + 2] - az;\n let nx = uy * vz - uz * vy;\n let ny = uz * vx - ux * vz;\n let nz = ux * vy - uy * vx;\n const len = Math.hypot(nx, ny, nz) || 1;\n nx /= len;\n ny /= len;\n nz /= len;\n let ex = frame.eye[0] - ax;\n let ey = frame.eye[1] - ay;\n let ez = frame.eye[2] - az;\n const el = Math.hypot(ex, ey, ez) || 1;\n ex /= el;\n ey /= el;\n ez /= el;\n if (nx * ex + ny * ey + nz * ez < 0) {\n nx = -nx;\n ny = -ny;\n nz = -nz;\n }\n const lambert = Math.max(0, nx * L[0] + ny * L[1] + nz * L[2]);\n let hx = L[0] + ex;\n let hy = L[1] + ey;\n let hz = L[2] + ez;\n const hl = Math.hypot(hx, hy, hz) || 1;\n hx /= hl;\n hy /= hl;\n hz /= hl;\n const spec =\n Math.pow(Math.max(0, nx * hx + ny * hy + nz * hz), shininess) *\n specular *\n 255;\n const light = ambient + diffuse * lambert;\n const ca = a * 28 + 24;\n const cb = b * 28 + 24;\n const cc = c * 28 + 24;\n const r = (u8[ca] + u8[cb] + u8[cc]) / 3;\n const g = (u8[ca + 1] + u8[cb + 1] + u8[cc + 1]) / 3;\n const bl = (u8[ca + 2] + u8[cb + 2] + u8[cc + 2]) / 3;\n const ac = (u8[ca + 3] + u8[cb + 3] + u8[cc + 3]) / 765;\n const fill = style(\n r * light + spec,\n g * light + spec,\n bl * light + spec,\n );\n alpha(item.opacity * ac);\n ctx.beginPath();\n ctx.moveTo(p.x[a], p.y[a]);\n ctx.lineTo(p.x[b], p.y[b]);\n ctx.lineTo(p.x[c], p.y[c]);\n ctx.closePath();\n ctx.fillStyle = fill;\n ctx.fill();\n if (item.opacity >= 1) {\n // hides the seams between neighbouring triangles\n ctx.strokeStyle = fill;\n ctx.lineWidth = 0.75;\n ctx.stroke();\n }\n } else if (item.kind === \"points\" && kind[i] === POINT) {\n const scale =\n item.perspective && !frame.orthographic\n ? Math.max(\n 0.5,\n Math.min(2, frame.distance / Math.max(p.w[e], 1e-6)),\n )\n : 1;\n const radius = Math.max(0.5, (f32[e * 5 + 3] * dpr * scale) / 2);\n const c = e * 20 + 16;\n const wx = f32[e * 5] - frame.eye[0];\n const wy = f32[e * 5 + 1] - frame.eye[1];\n const wz = f32[e * 5 + 2] - frame.eye[2];\n const fog =\n Math.max(\n 0,\n Math.min(1, (Math.hypot(wx, wy, wz) - near) / (2 * frame.radius)),\n ) * 0.45;\n const r = u8[c] + (fogR - u8[c]) * fog;\n const g = u8[c + 1] + (fogG - u8[c + 1]) * fog;\n const b = u8[c + 2] + (fogB - u8[c + 2]) * fog;\n alpha(item.opacity * (u8[c + 3] / 255));\n ctx.fillStyle = style(r, g, b);\n if (radius < 1.5) {\n ctx.fillRect(\n p.x[e] - radius,\n p.y[e] - radius,\n radius * 2,\n radius * 2,\n );\n } else {\n ctx.beginPath();\n ctx.arc(p.x[e], p.y[e], radius, 0, Math.PI * 2);\n ctx.fill();\n }\n } else if (item.kind === \"lines\" && kind[i] === SEGMENT) {\n const c = e * 28 + 24;\n const half = p.x.length / 2;\n alpha(item.opacity * (u8[c + 3] / 255));\n ctx.strokeStyle = style(u8[c], u8[c + 1], u8[c + 2]);\n ctx.lineWidth = Math.max(0.5, item.width * dpr);\n ctx.beginPath();\n ctx.moveTo(p.x[e], p.y[e]);\n ctx.lineTo(p.x[half + e], p.y[half + e]);\n ctx.stroke();\n }\n }\n ctx.globalAlpha = 1;\n };\n\n return {\n kind: \"canvas2d\",\n canvas,\n resize(width, height) {\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n },\n render(items, frame) {\n render(items, frame);\n },\n destroy() {\n styles.clear();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n },\n };\n};\n\nconst concat = (a: Float32Array, b: Float32Array) => {\n const out = new Float32Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canvas2d.js","names":["TRIANGLE","POINT","SEGMENT","SPRITE","GLOW_REACH","glowProfile","core","r","d","q","projectAll","x","count","y","z","w","i","o","stride","offset","px","data","py","pz","cw","m","iw","width","height","clamp255","v","createCanvas2d3D","ctx","canvas","styles","style","key","g","b","s","sprites","sprite","makeSprite","render","dpr","frame","ordered","drawOrder","items","ambient","diffuse","specular","shininess","L","fogR","fogG","fogB","projected","floats","bytes","capacity","item","depth","kind","owner","element","n","raw","f32","k","p","idx","t","a","c","concat","bias","order","currentAlpha","alpha","value","lighter","composite","add","near","u8","e","ax","ay","az","ux","uy","uz","vx","vy","vz","nx","ny","nz","len","ex","ey","ez","el","lambert","hx","hy","hz","hl","spec","light","ca","cb","cc","bl","ac","fill","scale","glow","thinned","grow","radius","coverage","wx","wy","wz","fog","image","reach","half","out","pixels","center","white"],"sources":["../../../../../charts/src/engine/three-d/canvas2d.ts"],"sourcesContent":["// Canvas2D backend of the 3D charts: CPU projection and the painter's\n// algorithm (every triangle, dot and segment of every item sorted back to\n// front together: transparent meshes blend in the right order), flat\n// lighting per triangle. The chart thins the point clouds and resamples the\n// surfaces for this backend (`CPU_BUDGET`): what it gets is what is drawn,\n// and what can be hovered.\n\nimport {\n POINT_GLOW,\n drawOrder,\n type Frame3D,\n type Item3D,\n type Renderer3D,\n} from \"./render-types\";\n\nconst TRIANGLE = 0;\nconst POINT = 1;\nconst SEGMENT = 2;\n\n/** Side of the glow sprites (px); the halo reaches 2.2 × the core radius */\nconst SPRITE = 32;\nconst GLOW_REACH = 2.2;\n\n/**\n * Glow profile (as the GPU shaders): an anti-aliased core and a gaussian\n * halo; `d` and `r` in pixels. Returns the alpha and the whitening.\n */\nexport const glowProfile = (d: number, r: number): [number, number] => {\n const core = Math.max(0, Math.min(1, r * 0.6 + 0.5 - d));\n const q = d / r;\n return [core + (1 - core) * Math.exp(-1.2 * q * q), 0.2 * core];\n};\n\ninterface Projected {\n x: Float32Array;\n y: Float32Array;\n z: Float32Array;\n w: Float32Array;\n}\n\nconst projectAll = (\n m: Float32Array,\n data: Float32Array,\n stride: number,\n offset: number,\n count: number,\n width: number,\n height: number,\n): Projected => {\n const x = new Float32Array(count);\n const y = new Float32Array(count);\n const z = new Float32Array(count);\n const w = new Float32Array(count);\n for (let i = 0; i < count; i++) {\n const o = i * stride + offset;\n const px = data[o];\n const py = data[o + 1];\n const pz = data[o + 2];\n const cw = m[3] * px + m[7] * py + m[11] * pz + m[15];\n const iw = 1 / (cw > 1e-9 ? cw : 1e-9);\n x[i] = ((m[0] * px + m[4] * py + m[8] * pz + m[12]) * iw + 1) * 0.5 * width;\n y[i] =\n (1 - (m[1] * px + m[5] * py + m[9] * pz + m[13]) * iw) * 0.5 * height;\n z[i] = (m[2] * px + m[6] * py + m[10] * pz + m[14]) * iw;\n w[i] = cw;\n }\n return { x, y, z, w };\n};\n\nconst clamp255 = (v: number) => (v < 0 ? 0 : v > 255 ? 255 : Math.round(v));\n\nexport const createCanvas2d3D = (\n canvas: HTMLCanvasElement,\n): Renderer3D | null => {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return null;\n const styles = new Map<number, string>();\n const style = (r: number, g: number, b: number) => {\n const key = (clamp255(r) << 16) | (clamp255(g) << 8) | clamp255(b);\n let s = styles.get(key);\n if (s === undefined) {\n s = `rgb(${key >> 16},${(key >> 8) & 255},${key & 255})`;\n if (styles.size > 4096) styles.clear();\n styles.set(key, s);\n }\n return s;\n };\n // glow sprites by color (4 bits per channel); null: no offscreen canvas\n const sprites = new Map<number, HTMLCanvasElement | null>();\n const sprite = (r: number, g: number, b: number) => {\n const key =\n ((clamp255(r) >> 4) << 8) |\n ((clamp255(g) >> 4) << 4) |\n (clamp255(b) >> 4);\n let s = sprites.get(key);\n if (s === undefined) {\n s = makeSprite(\n canvas,\n ((key >> 8) & 15) * 17,\n ((key >> 4) & 15) * 17,\n (key & 15) * 17,\n );\n sprites.set(key, s);\n }\n return s;\n };\n\n const render = (items: readonly Item3D[], frame: Frame3D) => {\n const { width, height } = canvas;\n const dpr = frame.dpr;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, width, height);\n const ordered = drawOrder(items);\n const m = frame.viewProj;\n const [ambient, diffuse, specular, shininess] = frame.lighting;\n const L = frame.light;\n const fogR = frame.fog[0] * 255;\n const fogG = frame.fog[1] * 255;\n const fogB = frame.fog[2] * 255;\n\n // ---- collect the primitives\n const projected: (Projected | null)[] = [];\n // typed views of every item (floats and bytes of the same buffer)\n const floats: Float32Array[] = [];\n const bytes: Uint8Array[] = [];\n let capacity = 0;\n for (const item of ordered) {\n capacity += item.kind === \"mesh\" ? item.indices.length / 3 : item.count;\n }\n const depth = new Float32Array(capacity);\n const kind = new Uint8Array(capacity);\n const owner = new Uint16Array(capacity);\n const element = new Uint32Array(capacity);\n let n = 0;\n ordered.forEach((item, k) => {\n const raw = item.kind === \"mesh\" ? item.vertices : item.data;\n floats.push(new Float32Array(raw));\n bytes.push(new Uint8Array(raw));\n if (item.kind === \"mesh\") {\n const f32 = floats[k]!;\n const p = projectAll(m, f32, 7, 0, item.vertexCount, width, height);\n projected.push(p);\n const idx = item.indices;\n for (let t = 0; t + 2 < idx.length; t += 3) {\n const a = idx[t];\n const b = idx[t + 1];\n const c = idx[t + 2];\n if (p.w[a] <= 0 || p.w[b] <= 0 || p.w[c] <= 0) continue;\n depth[n] = (p.z[a] + p.z[b] + p.z[c]) / 3;\n kind[n] = TRIANGLE;\n owner[n] = k;\n element[n] = t;\n n++;\n }\n } else if (item.kind === \"points\") {\n const f32 = floats[k]!;\n const p = projectAll(m, f32, 5, 0, item.count, width, height);\n projected.push(p);\n for (let i = 0; i < item.count; i++) {\n if (p.w[i] <= 0) continue;\n depth[n] = p.z[i];\n kind[n] = POINT;\n owner[n] = k;\n element[n] = i;\n n++;\n }\n } else {\n const f32 = floats[k]!;\n // both ends: projected as two interleaved point lists\n const a = projectAll(m, f32, 7, 0, item.count, width, height);\n const b = projectAll(m, f32, 7, 3, item.count, width, height);\n projected.push({\n x: concat(a.x, b.x),\n y: concat(a.y, b.y),\n z: concat(a.z, b.z),\n w: concat(a.w, b.w),\n });\n const bias = item.bias * 5;\n for (let i = 0; i < item.count; i++) {\n if (a.w[i] <= 0 || b.w[i] <= 0) continue;\n depth[n] = (a.z[i] + b.z[i]) / 2 - bias;\n kind[n] = SEGMENT;\n owner[n] = k;\n element[n] = i;\n n++;\n }\n }\n });\n const order = new Uint32Array(n);\n for (let i = 0; i < n; i++) order[i] = i;\n order.sort((a, b) => depth[b] - depth[a]);\n\n // ---- draw back to front\n ctx.lineJoin = \"round\";\n ctx.lineCap = \"round\";\n let currentAlpha = -1;\n const alpha = (value: number) => {\n if (value !== currentAlpha) {\n ctx.globalAlpha = value;\n currentAlpha = value;\n }\n };\n let lighter = false;\n const composite = (add: boolean) => {\n if (add !== lighter) {\n ctx.globalCompositeOperation = add ? \"lighter\" : \"source-over\";\n lighter = add;\n }\n };\n const near = frame.distance - frame.radius;\n for (let o = 0; o < n; o++) {\n const i = order[o];\n const item = ordered[owner[i]];\n const p = projected[owner[i]];\n const f32 = floats[owner[i]];\n const u8 = bytes[owner[i]];\n if (!item || !p || !f32 || !u8) continue;\n const e = element[i];\n composite(item.kind === \"points\" && !!item.additive);\n if (item.kind === \"mesh\" && kind[i] === TRIANGLE) {\n const a = item.indices[e];\n const b = item.indices[e + 1];\n const c = item.indices[e + 2];\n // flat normal facing the camera\n const ax = f32[a * 7],\n ay = f32[a * 7 + 1],\n az = f32[a * 7 + 2];\n const ux = f32[b * 7] - ax,\n uy = f32[b * 7 + 1] - ay,\n uz = f32[b * 7 + 2] - az;\n const vx = f32[c * 7] - ax,\n vy = f32[c * 7 + 1] - ay,\n vz = f32[c * 7 + 2] - az;\n let nx = uy * vz - uz * vy;\n let ny = uz * vx - ux * vz;\n let nz = ux * vy - uy * vx;\n const len = Math.hypot(nx, ny, nz) || 1;\n nx /= len;\n ny /= len;\n nz /= len;\n let ex = frame.eye[0] - ax;\n let ey = frame.eye[1] - ay;\n let ez = frame.eye[2] - az;\n const el = Math.hypot(ex, ey, ez) || 1;\n ex /= el;\n ey /= el;\n ez /= el;\n if (nx * ex + ny * ey + nz * ez < 0) {\n nx = -nx;\n ny = -ny;\n nz = -nz;\n }\n const lambert = Math.max(0, nx * L[0] + ny * L[1] + nz * L[2]);\n let hx = L[0] + ex;\n let hy = L[1] + ey;\n let hz = L[2] + ez;\n const hl = Math.hypot(hx, hy, hz) || 1;\n hx /= hl;\n hy /= hl;\n hz /= hl;\n const spec =\n Math.pow(Math.max(0, nx * hx + ny * hy + nz * hz), shininess) *\n specular *\n 255;\n const light = ambient + diffuse * lambert;\n const ca = a * 28 + 24;\n const cb = b * 28 + 24;\n const cc = c * 28 + 24;\n const r = (u8[ca] + u8[cb] + u8[cc]) / 3;\n const g = (u8[ca + 1] + u8[cb + 1] + u8[cc + 1]) / 3;\n const bl = (u8[ca + 2] + u8[cb + 2] + u8[cc + 2]) / 3;\n const ac = (u8[ca + 3] + u8[cb + 3] + u8[cc + 3]) / 765;\n const fill = style(\n r * light + spec,\n g * light + spec,\n bl * light + spec,\n );\n alpha(item.opacity * ac);\n ctx.beginPath();\n ctx.moveTo(p.x[a], p.y[a]);\n ctx.lineTo(p.x[b], p.y[b]);\n ctx.lineTo(p.x[c], p.y[c]);\n ctx.closePath();\n ctx.fillStyle = fill;\n ctx.fill();\n if (item.opacity >= 1 && !item.transparent) {\n // hides the seams between neighbouring triangles\n ctx.strokeStyle = fill;\n ctx.lineWidth = 0.75;\n ctx.stroke();\n }\n } else if (item.kind === \"points\" && kind[i] === POINT) {\n const scale =\n item.perspective && !frame.orthographic\n ? Math.max(\n 0.5,\n Math.min(2, frame.distance / Math.max(p.w[e], 1e-6)),\n )\n : 1;\n const glow = item.style === POINT_GLOW;\n // thinned clouds: denser (and, glowing, larger) dots\n const thinned = Math.max(1, item.thinned ?? 1);\n const grow = glow ? Math.sqrt(Math.sqrt(thinned)) : 1;\n const raw = (Math.max(0, f32[e * 5 + 3]) * dpr * scale * grow) / 2;\n const radius = Math.max(raw, glow ? 0.75 : 0.5);\n const coverage = Math.min(1, (raw * raw) / (radius * radius));\n const c = e * 20 + 16;\n const wx = f32[e * 5] - frame.eye[0];\n const wy = f32[e * 5 + 1] - frame.eye[1];\n const wz = f32[e * 5 + 2] - frame.eye[2];\n const fog =\n Math.max(\n 0,\n Math.min(1, (Math.hypot(wx, wy, wz) - near) / (2 * frame.radius)),\n ) * 0.45;\n let r = u8[c];\n let g = u8[c + 1];\n let b = u8[c + 2];\n let a =\n item.opacity * (u8[c + 3] / 255) * coverage * Math.sqrt(thinned);\n if (item.additive) {\n a *= 1 - fog;\n } else {\n r += (fogR - r) * fog;\n g += (fogG - g) * fog;\n b += (fogB - b) * fog;\n }\n alpha(Math.min(1, a));\n const image = glow ? sprite(r, g, b) : null;\n if (image) {\n const reach = radius * GLOW_REACH;\n ctx.drawImage(\n image,\n p.x[e] - reach,\n p.y[e] - reach,\n reach * 2,\n reach * 2,\n );\n } else {\n ctx.fillStyle = style(r, g, b);\n if (radius < 1.5) {\n ctx.fillRect(\n p.x[e] - radius,\n p.y[e] - radius,\n radius * 2,\n radius * 2,\n );\n } else {\n ctx.beginPath();\n ctx.arc(p.x[e], p.y[e], radius, 0, Math.PI * 2);\n ctx.fill();\n }\n }\n } else if (item.kind === \"lines\" && kind[i] === SEGMENT) {\n const c = e * 28 + 24;\n const half = p.x.length / 2;\n alpha(item.opacity * (u8[c + 3] / 255));\n ctx.strokeStyle = style(u8[c], u8[c + 1], u8[c + 2]);\n ctx.lineWidth = Math.max(0.5, item.width * dpr);\n ctx.beginPath();\n ctx.moveTo(p.x[e], p.y[e]);\n ctx.lineTo(p.x[half + e], p.y[half + e]);\n ctx.stroke();\n }\n }\n ctx.globalAlpha = 1;\n composite(false);\n };\n\n return {\n kind: \"canvas2d\",\n canvas,\n resize(width, height) {\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n },\n render(items, frame) {\n render(items, frame);\n },\n destroy() {\n styles.clear();\n sprites.clear();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n },\n };\n};\n\nconst concat = (a: Float32Array, b: Float32Array) => {\n const out = new Float32Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n};\n\n/** A glow sprite of a color (`SPRITE` px, the halo filling it), or null */\nconst makeSprite = (\n canvas: HTMLCanvasElement,\n r: number,\n g: number,\n b: number,\n): HTMLCanvasElement | null => {\n const image = canvas.ownerDocument.createElement(\"canvas\");\n image.width = SPRITE;\n image.height = SPRITE;\n const ctx = image.getContext(\"2d\");\n if (!ctx || typeof ctx.createImageData !== \"function\") return null;\n const pixels = ctx.createImageData(SPRITE, SPRITE) as ImageData | undefined;\n if (!pixels) return null;\n const center = SPRITE / 2;\n const radius = center / GLOW_REACH;\n for (let y = 0; y < SPRITE; y++) {\n for (let x = 0; x < SPRITE; x++) {\n const d = Math.hypot(x + 0.5 - center, y + 0.5 - center);\n const [a, white] = glowProfile(d, radius);\n const o = (y * SPRITE + x) * 4;\n pixels.data[o] = r + (255 - r) * white;\n pixels.data[o + 1] = g + (255 - g) * white;\n pixels.data[o + 2] = b + (255 - b) * white;\n pixels.data[o + 3] = d < center ? a * 255 : 0;\n }\n }\n ctx.putImageData(pixels, 0, 0);\n return image;\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./canvas2d.cjs"),
|
|
1
|
+
const e=require("../defaults.cjs"),t=require("./canvas2d.cjs"),n=require("./webgl.cjs"),r=require("./webgpu.cjs");var i=[`webgpu`,`webgl2`,`webgl`,`canvas2d`],a=(e,t=new Set)=>{let n=e===`auto`?0:i.indexOf(e);return i.slice(Math.max(0,n)).filter(e=>!t.has(e))},o=async(e,i,a,o)=>{switch(e){case`webgpu`:return r.createWebGpu3D(i,a,o);case`webgl2`:return n.createWebGl3D(i,2,a,o);case`webgl`:return n.createWebGl3D(i,1,a,o);default:return t.createCanvas2d3D(i)}},s=async(t,n,r,i)=>{let s=e.resolveRendererPreference(t);for(let e of a(s,i)){let t;try{t=await o(e,n(),()=>r(e),s===`auto`||s!==e)}catch{t=null}if(t)return t}return null};exports.createRenderer3D=s,exports.rendererCandidates3D=a;
|
|
2
2
|
//# sourceMappingURL=detect.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.cjs","names":["createWebGpu3D","createWebGl3D","createCanvas2d3D","require_canvas2d","require_webgl","require_webgpu","ORDER","rendererCandidates3D","start","preference","exclude","k","create","kind","canvas","onLost","requireHardware","createRenderer3D","renderer","makeCanvas"],"sources":["../../../../../charts/src/engine/three-d/detect.ts"],"sourcesContent":["// Backend selection of the 3D charts: WebGPU -> WebGL2 -> WebGL -> Canvas2D.\n\nimport type { ChartRendererKind, ChartRendererPreference } from \"../types\";\nimport { createCanvas2d3D } from \"./canvas2d\";\nimport type { Renderer3D } from \"./render-types\";\nimport { createWebGl3D } from \"./webgl\";\nimport { createWebGpu3D } from \"./webgpu\";\n\nconst ORDER: readonly ChartRendererKind[] = [\n \"webgpu\",\n \"webgl2\",\n \"webgl\",\n \"canvas2d\",\n];\n\n/** Backends to try for a preference, best first */\nexport const rendererCandidates3D = (\n preference: ChartRendererPreference,\n exclude: ReadonlySet<ChartRendererKind> = new Set(),\n): ChartRendererKind[] => {\n const start = preference === \"auto\" ? 0 : ORDER.indexOf(preference);\n return ORDER.slice(Math.max(0, start)).filter((k) => !exclude.has(k));\n};\n\nconst create = async (\n kind: ChartRendererKind,\n canvas: HTMLCanvasElement,\n onLost: () => void,\n requireHardware: boolean,\n): Promise<Renderer3D | null> => {\n switch (kind) {\n case \"webgpu\":\n return createWebGpu3D(canvas, onLost, requireHardware);\n case \"webgl2\":\n return createWebGl3D(canvas, 2, onLost, requireHardware);\n case \"webgl\":\n return createWebGl3D(canvas, 1, onLost, requireHardware);\n default:\n return createCanvas2d3D(canvas);\n }\n};\n\n/**\n * Creates the first backend that works, on a fresh canvas for every\n * attempt (a canvas only ever gets one kind of context). Under `auto` and\n * when falling back from the preferred backend, GPUs running in software\n * are skipped: Canvas2D with decimation is faster there.\n */\nexport const createRenderer3D = async (\n
|
|
1
|
+
{"version":3,"file":"detect.cjs","names":["createWebGpu3D","createWebGl3D","createCanvas2d3D","resolveRendererPreference","require_defaults","require_canvas2d","require_webgl","require_webgpu","ORDER","rendererCandidates3D","start","preference","exclude","k","create","kind","canvas","onLost","requireHardware","createRenderer3D","requested","renderer","makeCanvas"],"sources":["../../../../../charts/src/engine/three-d/detect.ts"],"sourcesContent":["// Backend selection of the 3D charts: WebGPU -> WebGL2 -> WebGL -> Canvas2D.\n\nimport { resolveRendererPreference } from \"../defaults\";\nimport type { ChartRendererKind, ChartRendererPreference } from \"../types\";\nimport { createCanvas2d3D } from \"./canvas2d\";\nimport type { Renderer3D } from \"./render-types\";\nimport { createWebGl3D } from \"./webgl\";\nimport { createWebGpu3D } from \"./webgpu\";\n\nconst ORDER: readonly ChartRendererKind[] = [\n \"webgpu\",\n \"webgl2\",\n \"webgl\",\n \"canvas2d\",\n];\n\n/** Backends to try for a preference, best first */\nexport const rendererCandidates3D = (\n preference: ChartRendererPreference,\n exclude: ReadonlySet<ChartRendererKind> = new Set(),\n): ChartRendererKind[] => {\n const start = preference === \"auto\" ? 0 : ORDER.indexOf(preference);\n return ORDER.slice(Math.max(0, start)).filter((k) => !exclude.has(k));\n};\n\nconst create = async (\n kind: ChartRendererKind,\n canvas: HTMLCanvasElement,\n onLost: () => void,\n requireHardware: boolean,\n): Promise<Renderer3D | null> => {\n switch (kind) {\n case \"webgpu\":\n return createWebGpu3D(canvas, onLost, requireHardware);\n case \"webgl2\":\n return createWebGl3D(canvas, 2, onLost, requireHardware);\n case \"webgl\":\n return createWebGl3D(canvas, 1, onLost, requireHardware);\n default:\n return createCanvas2d3D(canvas);\n }\n};\n\n/**\n * Creates the first backend that works, on a fresh canvas for every\n * attempt (a canvas only ever gets one kind of context). Under `auto` and\n * when falling back from the preferred backend, GPUs running in software\n * are skipped: Canvas2D with decimation is faster there. `auto` starts\n * from the global default (`setDefaultChartRenderer`).\n */\nexport const createRenderer3D = async (\n requested: ChartRendererPreference,\n makeCanvas: () => HTMLCanvasElement,\n onLost: (kind: ChartRendererKind) => void,\n exclude?: ReadonlySet<ChartRendererKind>,\n): Promise<Renderer3D | null> => {\n const preference = resolveRendererPreference(requested);\n for (const kind of rendererCandidates3D(preference, exclude)) {\n let renderer: Renderer3D | null;\n try {\n renderer = await create(\n kind,\n makeCanvas(),\n () => onLost(kind),\n preference === \"auto\" || preference !== kind,\n );\n } catch {\n renderer = null;\n }\n if (renderer) return renderer;\n }\n return null;\n};\n"],"mappings":"kHASA,IAAMQ,EAAsC,CAC1C,SACA,SACA,QACA,UACF,EAGaC,GACX,EACA,EAA0C,IAAI,MACtB,CACxB,IAAMC,EAAQC,IAAe,OAAS,EAAIH,EAAM,QAAQG,CAAU,EAClE,OAAOH,EAAM,MAAM,KAAK,IAAI,EAAGE,CAAK,CAAC,CAAC,CAAC,OAAQ,GAAM,CAACE,EAAQ,IAAIC,CAAC,CAAC,CACtE,EAEMC,EAAS,MACb,EACA,EACA,EACA,IAC+B,CAC/B,OAAQC,EAAR,CACE,IAAK,SACH,OAAOf,EAAAA,eAAegB,EAAQC,EAAQC,CAAe,EACvD,IAAK,SACH,OAAOjB,EAAAA,cAAce,EAAQ,EAAGC,EAAQC,CAAe,EACzD,IAAK,QACH,OAAOjB,EAAAA,cAAce,EAAQ,EAAGC,EAAQC,CAAe,EACzD,QACE,OAAOhB,EAAAA,iBAAiBc,CAAM,CAClC,CACF,EASaG,EAAmB,MAC9B,EACA,EACA,EACA,IAC+B,CAC/B,IAAMR,EAAaR,EAAAA,0BAA0BiB,CAAS,EACtD,IAAK,IAAML,KAAQN,EAAqBE,EAAYC,CAAO,EAAG,CAC5D,IAAIS,EACJ,GAAI,CACF,EAAW,MAAMP,EACfC,EACAO,EAAW,MACLL,EAAOF,CAAI,EACjBJ,IAAe,QAAUA,IAAeI,CAC1C,CACF,MAAQ,CACN,EAAW,IACb,CACA,GAAIM,EAAU,OAAOA,CACvB,CACA,OAAO,IACT"}
|
|
@@ -6,6 +6,7 @@ export declare const rendererCandidates3D: (preference: ChartRendererPreference,
|
|
|
6
6
|
* Creates the first backend that works, on a fresh canvas for every
|
|
7
7
|
* attempt (a canvas only ever gets one kind of context). Under `auto` and
|
|
8
8
|
* when falling back from the preferred backend, GPUs running in software
|
|
9
|
-
* are skipped: Canvas2D with decimation is faster there.
|
|
9
|
+
* are skipped: Canvas2D with decimation is faster there. `auto` starts
|
|
10
|
+
* from the global default (`setDefaultChartRenderer`).
|
|
10
11
|
*/
|
|
11
|
-
export declare const createRenderer3D: (
|
|
12
|
+
export declare const createRenderer3D: (requested: ChartRendererPreference, makeCanvas: () => HTMLCanvasElement, onLost: (kind: ChartRendererKind) => void, exclude?: ReadonlySet<ChartRendererKind>) => Promise<Renderer3D | null>;
|
|
@@ -6,6 +6,7 @@ export declare const rendererCandidates3D: (preference: ChartRendererPreference,
|
|
|
6
6
|
* Creates the first backend that works, on a fresh canvas for every
|
|
7
7
|
* attempt (a canvas only ever gets one kind of context). Under `auto` and
|
|
8
8
|
* when falling back from the preferred backend, GPUs running in software
|
|
9
|
-
* are skipped: Canvas2D with decimation is faster there.
|
|
9
|
+
* are skipped: Canvas2D with decimation is faster there. `auto` starts
|
|
10
|
+
* from the global default (`setDefaultChartRenderer`).
|
|
10
11
|
*/
|
|
11
|
-
export declare const createRenderer3D: (
|
|
12
|
+
export declare const createRenderer3D: (requested: ChartRendererPreference, makeCanvas: () => HTMLCanvasElement, onLost: (kind: ChartRendererKind) => void, exclude?: ReadonlySet<ChartRendererKind>) => Promise<Renderer3D | null>;
|
|
@@ -1,35 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { resolveRendererPreference as e } from "../defaults.js";
|
|
2
|
+
import { createCanvas2d3D as t } from "./canvas2d.js";
|
|
3
|
+
import { createWebGl3D as n } from "./webgl.js";
|
|
4
|
+
import { createWebGpu3D as r } from "./webgpu.js";
|
|
4
5
|
//#region src/engine/three-d/detect.ts
|
|
5
|
-
var
|
|
6
|
+
var i = [
|
|
6
7
|
"webgpu",
|
|
7
8
|
"webgl2",
|
|
8
9
|
"webgl",
|
|
9
10
|
"canvas2d"
|
|
10
|
-
],
|
|
11
|
-
let n = e === "auto" ? 0 :
|
|
12
|
-
return
|
|
13
|
-
},
|
|
14
|
-
switch (
|
|
15
|
-
case "webgpu": return
|
|
16
|
-
case "webgl2": return
|
|
17
|
-
case "webgl": return
|
|
18
|
-
default: return
|
|
11
|
+
], a = (e, t = /* @__PURE__ */ new Set()) => {
|
|
12
|
+
let n = e === "auto" ? 0 : i.indexOf(e);
|
|
13
|
+
return i.slice(Math.max(0, n)).filter((e) => !t.has(e));
|
|
14
|
+
}, o = async (e, i, a, o) => {
|
|
15
|
+
switch (e) {
|
|
16
|
+
case "webgpu": return r(i, a, o);
|
|
17
|
+
case "webgl2": return n(i, 2, a, o);
|
|
18
|
+
case "webgl": return n(i, 1, a, o);
|
|
19
|
+
default: return t(i);
|
|
19
20
|
}
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
}, s = async (t, n, r, i) => {
|
|
22
|
+
let s = e(t);
|
|
23
|
+
for (let e of a(s, i)) {
|
|
24
|
+
let t;
|
|
23
25
|
try {
|
|
24
|
-
|
|
26
|
+
t = await o(e, n(), () => r(e), s === "auto" || s !== e);
|
|
25
27
|
} catch {
|
|
26
|
-
|
|
28
|
+
t = null;
|
|
27
29
|
}
|
|
28
|
-
if (
|
|
30
|
+
if (t) return t;
|
|
29
31
|
}
|
|
30
32
|
return null;
|
|
31
33
|
};
|
|
32
34
|
//#endregion
|
|
33
|
-
export {
|
|
35
|
+
export { s as createRenderer3D, a as rendererCandidates3D };
|
|
34
36
|
|
|
35
37
|
//# sourceMappingURL=detect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","names":["ORDER","rendererCandidates3D","start","preference","exclude","k","create","kind","createWebGpu3D","canvas","onLost","requireHardware","createWebGl3D","createCanvas2d3D","createRenderer3D","renderer","makeCanvas"],"sources":["../../../../../charts/src/engine/three-d/detect.ts"],"sourcesContent":["// Backend selection of the 3D charts: WebGPU -> WebGL2 -> WebGL -> Canvas2D.\n\nimport type { ChartRendererKind, ChartRendererPreference } from \"../types\";\nimport { createCanvas2d3D } from \"./canvas2d\";\nimport type { Renderer3D } from \"./render-types\";\nimport { createWebGl3D } from \"./webgl\";\nimport { createWebGpu3D } from \"./webgpu\";\n\nconst ORDER: readonly ChartRendererKind[] = [\n \"webgpu\",\n \"webgl2\",\n \"webgl\",\n \"canvas2d\",\n];\n\n/** Backends to try for a preference, best first */\nexport const rendererCandidates3D = (\n preference: ChartRendererPreference,\n exclude: ReadonlySet<ChartRendererKind> = new Set(),\n): ChartRendererKind[] => {\n const start = preference === \"auto\" ? 0 : ORDER.indexOf(preference);\n return ORDER.slice(Math.max(0, start)).filter((k) => !exclude.has(k));\n};\n\nconst create = async (\n kind: ChartRendererKind,\n canvas: HTMLCanvasElement,\n onLost: () => void,\n requireHardware: boolean,\n): Promise<Renderer3D | null> => {\n switch (kind) {\n case \"webgpu\":\n return createWebGpu3D(canvas, onLost, requireHardware);\n case \"webgl2\":\n return createWebGl3D(canvas, 2, onLost, requireHardware);\n case \"webgl\":\n return createWebGl3D(canvas, 1, onLost, requireHardware);\n default:\n return createCanvas2d3D(canvas);\n }\n};\n\n/**\n * Creates the first backend that works, on a fresh canvas for every\n * attempt (a canvas only ever gets one kind of context). Under `auto` and\n * when falling back from the preferred backend, GPUs running in software\n * are skipped: Canvas2D with decimation is faster there.\n */\nexport const createRenderer3D = async (\n
|
|
1
|
+
{"version":3,"file":"detect.js","names":["ORDER","rendererCandidates3D","start","preference","exclude","k","create","kind","createWebGpu3D","canvas","onLost","requireHardware","createWebGl3D","createCanvas2d3D","createRenderer3D","resolveRendererPreference","requested","renderer","makeCanvas"],"sources":["../../../../../charts/src/engine/three-d/detect.ts"],"sourcesContent":["// Backend selection of the 3D charts: WebGPU -> WebGL2 -> WebGL -> Canvas2D.\n\nimport { resolveRendererPreference } from \"../defaults\";\nimport type { ChartRendererKind, ChartRendererPreference } from \"../types\";\nimport { createCanvas2d3D } from \"./canvas2d\";\nimport type { Renderer3D } from \"./render-types\";\nimport { createWebGl3D } from \"./webgl\";\nimport { createWebGpu3D } from \"./webgpu\";\n\nconst ORDER: readonly ChartRendererKind[] = [\n \"webgpu\",\n \"webgl2\",\n \"webgl\",\n \"canvas2d\",\n];\n\n/** Backends to try for a preference, best first */\nexport const rendererCandidates3D = (\n preference: ChartRendererPreference,\n exclude: ReadonlySet<ChartRendererKind> = new Set(),\n): ChartRendererKind[] => {\n const start = preference === \"auto\" ? 0 : ORDER.indexOf(preference);\n return ORDER.slice(Math.max(0, start)).filter((k) => !exclude.has(k));\n};\n\nconst create = async (\n kind: ChartRendererKind,\n canvas: HTMLCanvasElement,\n onLost: () => void,\n requireHardware: boolean,\n): Promise<Renderer3D | null> => {\n switch (kind) {\n case \"webgpu\":\n return createWebGpu3D(canvas, onLost, requireHardware);\n case \"webgl2\":\n return createWebGl3D(canvas, 2, onLost, requireHardware);\n case \"webgl\":\n return createWebGl3D(canvas, 1, onLost, requireHardware);\n default:\n return createCanvas2d3D(canvas);\n }\n};\n\n/**\n * Creates the first backend that works, on a fresh canvas for every\n * attempt (a canvas only ever gets one kind of context). Under `auto` and\n * when falling back from the preferred backend, GPUs running in software\n * are skipped: Canvas2D with decimation is faster there. `auto` starts\n * from the global default (`setDefaultChartRenderer`).\n */\nexport const createRenderer3D = async (\n requested: ChartRendererPreference,\n makeCanvas: () => HTMLCanvasElement,\n onLost: (kind: ChartRendererKind) => void,\n exclude?: ReadonlySet<ChartRendererKind>,\n): Promise<Renderer3D | null> => {\n const preference = resolveRendererPreference(requested);\n for (const kind of rendererCandidates3D(preference, exclude)) {\n let renderer: Renderer3D | null;\n try {\n renderer = await create(\n kind,\n makeCanvas(),\n () => onLost(kind),\n preference === \"auto\" || preference !== kind,\n );\n } catch {\n renderer = null;\n }\n if (renderer) return renderer;\n }\n return null;\n};\n"],"mappings":";;;;;AASA,IAAMA,IAAsC;CAC1C;CACA;CACA;CACA;AACF,GAGaC,KACX,GACA,oBAA0C,IAAI,IAAI,MAC1B;CACxB,IAAMC,IAAQC,MAAe,SAAS,IAAIH,EAAM,QAAQG,CAAU;CAClE,OAAOH,EAAM,MAAM,KAAK,IAAI,GAAGE,CAAK,CAAC,CAAC,CAAC,QAAQ,MAAM,CAACE,EAAQ,IAAIC,CAAC,CAAC;AACtE,GAEMC,IAAS,OACb,GACA,GACA,GACA,MAC+B;CAC/B,QAAQC,GAAR;EACE,KAAK,UACH,OAAOC,EAAeC,GAAQC,GAAQC,CAAe;EACvD,KAAK,UACH,OAAOC,EAAcH,GAAQ,GAAGC,GAAQC,CAAe;EACzD,KAAK,SACH,OAAOC,EAAcH,GAAQ,GAAGC,GAAQC,CAAe;EACzD,SACE,OAAOE,EAAiBJ,CAAM;CAClC;AACF,GASaK,IAAmB,OAC9B,GACA,GACA,GACA,MAC+B;CAC/B,IAAMX,IAAaY,EAA0BC,CAAS;CACtD,KAAK,IAAMT,KAAQN,EAAqBE,GAAYC,CAAO,GAAG;EAC5D,IAAIa;EACJ,IAAI;GACF,IAAW,MAAMX,EACfC,GACAW,EAAW,SACLR,EAAOH,CAAI,GACjBJ,MAAe,UAAUA,MAAeI,CAC1C;EACF,QAAQ;GACN,IAAW;EACb;EACA,IAAIU,GAAU,OAAOA;CACvB;CACA,OAAO;AACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../color.cjs"),t=require("../scale.cjs"),n=require("./colormap.cjs"),r=require("./contours.cjs"),i=require("./model.cjs");var a={maxGridSide:2048},o={maxGridSide:72},s=1,c=new WeakMap,l=e=>{if(!e)return 0;let t=c.get(e);return t===void 0&&(t=s++,c.set(e,t)),t},u=e=>e.map(e=>e.toFixed(4)).join(`,`),d=e=>`${e.domain[0]},${e.domain[1]},${e.half},${e.categories?.length??-1}`,f=e=>e===e&&e!==1/0&&e!==-1/0,p=(e,t,r,i)=>!t||!f(r)?i:e.packed[n.lutIndex(r,t[0],t[1])],m=(t,n,r,i)=>{let{cols:
|
|
1
|
+
const e=require("../color.cjs"),t=require("../scale.cjs"),n=require("./colormap.cjs"),r=require("./contours.cjs"),i=require("./model.cjs");var a={maxGridSide:2048,maxPoints:1/0},o={maxGridSide:72,maxPoints:4e4},s=1,c=new WeakMap,l=e=>{if(!e)return 0;let t=c.get(e);return t===void 0&&(t=s++,c.set(e,t)),t},u=e=>e.map(e=>e.toFixed(4)).join(`,`),d=e=>`${e.domain[0]},${e.domain[1]},${e.half},${e.categories?.length??-1}`,f=e=>e===e&&e!==1/0&&e!==-1/0,p=(e,t,r,i)=>!t||!f(r)?i:e.packed[n.lutIndex(r,t[0],t[1])],m=e=>(4278190080|(e&255)<<16|e&65280|e>>>16&255)>>>0,h=(t,n,r,i,a=1)=>{let{cols:o}=t,s=Math.ceil(o.count/a),c=new ArrayBuffer(s*20),l=new Float32Array(c),u=new Uint32Array(c),d=e.packColor(r.series[t.index]??[.5,.5,.5,1]),h=t.colorBy!==`series`,g=t.colorBy===`value`&&o.value?o.value:o.z,_=new Map,v=null;a>1&&(v=new Uint32Array(s));let y=0,{x:b,y:x,z:S}=n,C=2*b.half/(b.domain[1]-b.domain[0]||1),w=2*x.half/(x.domain[1]-x.domain[0]||1),T=2*S.half/(S.domain[1]-S.domain[0]||1),E=-b.half-b.domain[0]*C,D=-x.half-x.domain[0]*w,O=-S.half-S.domain[0]*T;for(let t=0;t<o.count;t+=a){let a=o.x[t],c=o.y[t],b=o.z[t];if(!f(a)||!f(c)||!f(b)){if(!v){v=new Uint32Array(s);for(let e=0;e<y;e++)v[e]=e}continue}v&&(v[y]=t);let x=y*5;l[x]=a*C+E,l[x+1]=c*w+D,l[x+2]=b*T+O;let S=o.size?o.size[t]:NaN;l[x+3]=f(S)?S:i;let k=o.colors?.[t],A=o.rgb?o.rgb[t]:NaN,j;if(k!==void 0){let t=_.get(k);t===void 0&&(t=e.packColor(r.resolve(k)),_.set(k,t)),j=t}else j=f(A)?m(A):h?p(r.lut,n.colorDomain,g[t],d):d;u[x+4]=j,y++}return{data:c,count:y,source:v?v.subarray(0,y):null,sized:!!o.size}},g=(e,t)=>{if(e<=t){let t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=n;return t}let n=new Int32Array(t);for(let r=0;r<t;r++)n[r]=Math.round(r*(e-1)/(t-1));return n},_=(t,n,r,a,o,s)=>{let{grid:c}=t,l=g(c.rows,a.maxGridSide),u=g(c.cols,a.maxGridSide),d=l.length,m=u.length,h=d*m,_=new Float32Array(h*3);for(let e=0;e<d;e++){let t=i.toWorld(n.y,c.y[l[e]]);for(let r=0;r<m;r++){let a=i.toWorld(n.x,c.x[u[r]]),o=c.z[l[e]*c.cols+u[r]],s=(e*m+r)*3;_[s]=a,_[s+1]=t,_[s+2]=f(o)?i.toWorld(n.z,o):NaN}}if(t.series.fill===!1)return{positions:_,rowIndex:l,colIndex:u,mesh:null};let v=new ArrayBuffer(h*28),y=new Float32Array(v),b=new Uint32Array(v),x=e.packColor(r.series[t.index]??[.5,.5,.5,1]),S=t.colorBy===`value`&&c.value,C=(e,t,n)=>_[(e*m+t)*3+n],w=(e,t)=>e>=0&&e<d&&t>=0&&t<m&&f(C(e,t,2));for(let e=0;e<d;e++)for(let i=0;i<m;i++){let a=(e*m+i)*7;y[a]=C(e,i,0),y[a+1]=C(e,i,1),y[a+2]=f(C(e,i,2))?C(e,i,2):0;let o=w(e,i-1)?i-1:i,s=w(e,i+1)?i+1:i,d=w(e-1,i)?e-1:e,h=w(e+1,i)?e+1:e,g=0,_=0,v=1;if(w(e,i)&&o!==s&&d!==h){let t=C(e,s,0)-C(e,o,0),n=C(e,s,2)-C(e,o,2),r=C(h,i,1)-C(d,i,1),a=C(h,i,2)-C(d,i,2);g=-n*r,_=-t*a,v=t*r;let c=Math.hypot(g,_,v)||1;g/=c,_/=c,v/=c,v<0&&(g=-g,_=-_,v=-v)}y[a+3]=g,y[a+4]=_,y[a+5]=v;let T=l[e]*c.cols+u[i];b[a+6]=t.colorBy===`series`?x:p(r.lut,n.colorDomain,S?c.value[T]:c.z[T],x)}let T=new Uint32Array((d-1)*(m-1)*6),E=0;for(let e=0;e<d-1;e++)for(let t=0;t<m-1;t++){if(!w(e,t)||!w(e,t+1)||!w(e+1,t)||!w(e+1,t+1))continue;let n=e*m+t,r=n+1,i=n+m,a=i+1;T[E++]=n,T[E++]=r,T[E++]=a,T[E++]=n,T[E++]=a,T[E++]=i}return{positions:_,rowIndex:l,colIndex:u,mesh:{kind:`mesh`,key:o,version:s,opacity:t.opacity,vertices:v,vertexCount:h,indices:T.subarray(0,E)}}},v=(e,t)=>{let n=t.length,r=new ArrayBuffer(n*28),i=new Float32Array(r),a=new Uint32Array(r);for(let r=0;r<n;r++){let n=r*7;for(let t=0;t<6;t++)i[n+t]=e[r*6+t];a[n+6]=t[r]}return{buffer:r,count:n}},y=64,b=(e,t)=>{let n=[];for(let r=0;r<e;r+=t)n.push(r);return e>0&&n[n.length-1]!==e-1&&n.push(e-1),n},x=(e,t,n,r,i)=>{let a=e.rowIndex.length,o=e.colIndex.length,s=e.positions,c=[],l=[],u=Math.max(1,Math.round(t.step??Math.ceil(a/y))),d=Math.max(1,Math.round(t.step??Math.ceil(o/y))),p=(e,t)=>{f(s[e*3+2])&&f(s[t*3+2])&&(c.push(s[e*3],s[e*3+1],s[e*3+2],s[t*3],s[t*3+1],s[t*3+2]),l.push(n))};for(let e of b(a,u))for(let t=0;t<o-1;t++)p(e*o+t,e*o+t+1);for(let e of b(o,d))for(let t=0;t<a-1;t++)p(t*o+e,(t+1)*o+e);let{buffer:m,count:h}=v(c,l);return{kind:`lines`,key:r,version:i,opacity:1,data:m,count:h,width:t.width??1,bias:.0015}},S=(e,n,r)=>{if(e.levels)return e.levels.filter(f);if(!(r>n))return[];let i=Math.max(1,Math.round(e.count??10)),a=t.linearTicks(n,r,i).filter(e=>e>n&&e<r);return a.length>=Math.max(2,i/2)?a:Array.from({length:i},(e,t)=>n+(t+.5)*(r-n)/i)},C=(t,a,o,s,c,l)=>{let{grid:u}=t,d=S(s,u.extent.z.min,u.extent.z.max);if(!d.length)return null;let f=s.floor??!0,p=s.surface??!1;if(!f&&!p)return null;let m=s.color?e.packColor(o.resolve(s.color)):null,h=-a.z.half+.002,g=a.colorDomain&&t.colorBy!==`value`?a.colorDomain:[u.extent.z.min,u.extent.z.max],_=[],y=[],b=e=>{let t=Math.floor(e),n=e-t,r=u.x[Math.min(t,u.cols-1)],o=u.x[Math.min(t+1,u.cols-1)];return i.toWorld(a.x,r+(o-r)*n)},x=e=>{let t=Math.floor(e),n=e-t,r=u.y[Math.min(t,u.rows-1)],o=u.y[Math.min(t+1,u.rows-1)];return i.toWorld(a.y,r+(o-r)*n)},C=[];for(let e of d){if(C.length=0,r.contourSegments(u.z,u.rows,u.cols,e,C),!C.length)continue;let t=m??o.lut.packed[n.lutIndex(e,g[0],g[1])],s=i.toWorld(a.z,e);for(let e=0;e<C.length;e+=4){let n=b(C[e]),r=x(C[e+1]),i=b(C[e+2]),a=x(C[e+3]);f&&(_.push(n,r,h,i,a,h),y.push(t)),p&&(_.push(n,r,s,i,a,s),y.push(t))}}if(!y.length)return null;let{buffer:w,count:T}=v(_,y);return{kind:`lines`,key:c,version:l,opacity:1,data:w,count:T,width:s.width??1,bias:.002}},w=[{n:[0,0,1],c:[0,0,1,1,0,1,1,1,1,0,1,1]},{n:[0,0,-1],c:[0,0,0,0,1,0,1,1,0,1,0,0]},{n:[1,0,0],c:[1,0,0,1,1,0,1,1,1,1,0,1]},{n:[-1,0,0],c:[0,0,0,0,0,1,0,1,1,0,1,0]},{n:[0,1,0],c:[0,1,0,0,1,1,1,1,1,1,1,0]},{n:[0,-1,0],c:[0,0,0,1,0,0,1,0,1,0,0,1]}],T=(t,n,r,a,o)=>{let{bars:s}=t,c=s.count,l=new ArrayBuffer(c*24*28),u=new Float32Array(l),d=new Uint32Array(l),f=new Uint32Array(c*36),m=new Float32Array(c*6),h=e.packColor(r.series[t.index]??[.5,.5,.5,1]),g=Math.max(.05,Math.min(1,t.series.barWidth??.7)),_=2*n.x.half/Math.max(1,n.x.domain[1]-n.x.domain[0]),v=2*n.y.half/Math.max(1,n.y.domain[1]-n.y.domain[0]),y=_*g/2,b=v*g/2,x=new Map,S=0,C=0;for(let a=0;a<c;a++){let o=i.toWorld(n.x,s.xi[a]),c=i.toWorld(n.y,s.yi[a]),l=i.toWorld(n.z,s.z0[a]),g=i.toWorld(n.z,s.z1[a]),_=[o-y,c-b,Math.min(l,g)],v=[o+y,c+b,Math.max(l,g)];m.set([_[0],_[1],_[2],v[0],v[1],v[2]],a*6);let T=s.colors?.[a],E;if(T!==void 0)E=x.get(T)??e.packColor(r.resolve(T)),x.set(T,E);else if(t.colorBy===`series`)E=h;else{let e=t.colorBy===`value`&&s.value?s.value[a]:s.z[a];E=p(r.lut,n.colorDomain,e,h)}for(let e of w){for(let t=0;t<4;t++){let n=(S+t)*7;u[n]=e.c[t*3]?v[0]:_[0],u[n+1]=e.c[t*3+1]?v[1]:_[1],u[n+2]=e.c[t*3+2]?v[2]:_[2],u[n+3]=e.n[0],u[n+4]=e.n[1],u[n+5]=e.n[2],d[n+6]=E}f[C++]=S,f[C++]=S+1,f[C++]=S+2,f[C++]=S,f[C++]=S+2,f[C++]=S+3,S+=4}}return{mesh:{kind:`mesh`,key:a,version:o,opacity:t.opacity,vertices:l,vertexCount:S,indices:f},target:{kind:`bars`,series:t.index,count:c,boxes:m}}},E=(e,t,n,r)=>{let i=new Float32Array(t.data),a=new Uint32Array(t.data),o=[],s=[],c=e.opacity;for(let e=0;e<t.count-1;e++){if(t.source&&t.source[e+1]!==t.source[e]+1)continue;let n=e*5,r=n+5;o.push(i[n],i[n+1],i[n+2],i[r],i[r+1],i[r+2]),s.push(a[n+4])}let{buffer:l,count:u}=v(o,s);return{kind:`lines`,key:n,version:r,opacity:c,data:l,count:u,width:e.series.lineWidth??2,bias:0}},D=()=>{let e=new Map,t=0,n=(e,t,n,r,i,a)=>{let o=e.series,s=JSON.stringify({type:e.type,colorBy:e.colorBy,opacity:e.opacity,pointSize:o.pointSize,pointStyle:o.pointStyle,blend:o.blend,lineWidth:o.lineWidth,perspectiveSize:o.perspectiveSize,wireframe:o.wireframe,contours:o.contours,fill:o.fill,barWidth:o.barWidth});return[l(e.series.data),s,d(t.x),d(t.y),d(t.z),t.colorDomain?.join()??``,u(n.series[e.index]??[0,0,0,0]),u(n.wire),i,r.maxGridSide,e.type===`scatter`?a:1,e.type===`bar`?A(e):``].join(`|`)};return(r,i,a,o)=>{let s=new Map,c=[],l=[],u=[],d=0;for(let e of r.series)e.type===`scatter`&&!e.hidden&&(d+=e.cols.count);let f=Math.max(1,Math.ceil(d/a.maxPoints));for(let d of r.series){let p=`${d.index}:${d.id}`;if(d.hidden){u.push(0);let t=e.get(p);t&&s.set(p,t);continue}let m=n(d,r,i,a,o,f),h=e.get(p);(!h||h.signature!==m)&&(h=O(d,r,i,a,`s${p}`,++t,m,f)),s.set(p,h),c.push(...h.items),l.push(...h.target),u.push(h.count)}return e=s,{items:c,targets:l,counts:u}}},O=(t,n,r,i,a,o,s,c=1)=>{switch(t.type){case`surface`:{let c=_(t,n,r,i,`${a}:mesh`,o),l=[];c.mesh&&l.push(c.mesh);let u=t.series.wireframe;if(u){let t=u===!0?{}:u,n=t.color?e.packColor(r.resolve(t.color)):e.packColor(r.wire);l.push(x(c,t,n,`${a}:wire`,o))}let d=t.series.contours;if(d){let e=C(t,n,r,d===!0?{}:d,`${a}:contours`,o);e&&l.push(e)}return{signature:s,items:l,target:[{kind:`surface`,series:t.index,rows:c.rowIndex.length,cols:c.colIndex.length,positions:c.positions,rowIndex:c.rowIndex,colIndex:c.colIndex}],count:t.grid.rows*t.grid.cols}}case`bar`:{let{mesh:e,target:i}=T(t,n,r,`${a}:bars`,o);return{signature:s,items:[e],target:[i],count:t.bars.count}}case`line`:{let e=t.series.pointSize??0,i=h(t,n,r,e),c=[E(t,i,`${a}:line`,o)];return e>0&&c.push({kind:`points`,key:`${a}:points`,version:o,opacity:t.opacity,data:i.data,count:i.count,perspective:!1}),{signature:s,items:c,target:[k(t.index,i,Math.max(e,t.series.lineWidth??2))],count:i.count}}default:{let e=t.series.pointSize??6,i=h(t,n,r,e,c),l=t.series.pointStyle;return{signature:s,items:[{kind:`points`,key:`${a}:points`,version:o,opacity:t.opacity,data:i.data,count:i.count,perspective:t.series.perspectiveSize??!0,style:l===`glow`?2:+(l===`disc`),additive:t.series.blend===`additive`,thinned:c}],target:[k(t.index,i,e)],count:c>1?t.cols.count:i.count}}}},k=(e,t,n)=>({kind:`points`,series:e,positions:new Float32Array(t.data),stride:5,count:t.count,sized:t.sized,defaultSize:n,source:t.source,packed:new Uint32Array(t.data)}),A=e=>{let t=e.bars.count;for(let n=0;n<e.bars.count;n++)t=(t*31+e.bars.z0[n]*997+e.bars.z1[n]*13)%0xe8d4a51000;return String(t)},j=t=>e.toCss([(t&255)/255,(t>>>8&255)/255,(t>>>16&255)/255,(t>>>24&255)/255]);exports.CPU_BUDGET=o,exports.GPU_BUDGET=a,exports.contourLevels=S,exports.createGeometryBuilder=D,exports.objectId=l,exports.packedCss=j,exports.stepped=b;
|
|
2
2
|
//# sourceMappingURL=geometry.cjs.map
|