minerva-design 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +21 -21
- package/custom-elements.json +18546 -7329
- package/dist/angular/fesm2022/minerva-angular.mjs +8303 -172
- package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
- package/dist/angular/types/minerva-angular.d.ts +2809 -0
- package/dist/charts/canvas.d.cts +8 -3
- package/dist/charts/canvas.d.ts +8 -3
- package/dist/charts/core.cjs +1 -1
- package/dist/charts/core.d.cts +10 -5
- package/dist/charts/core.d.ts +10 -5
- package/dist/charts/core.js +27 -8
- package/dist/charts/engine/axis.cjs +1 -1
- package/dist/charts/engine/axis.cjs.map +1 -1
- package/dist/charts/engine/axis.js +43 -20
- package/dist/charts/engine/axis.js.map +1 -1
- package/dist/charts/engine/canvas.cjs +1 -1
- package/dist/charts/engine/canvas.cjs.map +1 -1
- package/dist/charts/engine/canvas.d.cts +11 -1
- package/dist/charts/engine/canvas.d.ts +11 -1
- package/dist/charts/engine/canvas.js +193 -116
- package/dist/charts/engine/canvas.js.map +1 -1
- package/dist/charts/engine/chart.cjs +1 -1
- package/dist/charts/engine/chart.cjs.map +1 -1
- package/dist/charts/engine/chart.d.cts +1 -1
- package/dist/charts/engine/chart.d.ts +1 -1
- package/dist/charts/engine/chart.js +486 -350
- package/dist/charts/engine/chart.js.map +1 -1
- package/dist/charts/engine/color.cjs +1 -1
- package/dist/charts/engine/color.cjs.map +1 -1
- package/dist/charts/engine/color.d.cts +18 -0
- package/dist/charts/engine/color.d.ts +18 -0
- package/dist/charts/engine/color.js +47 -1
- package/dist/charts/engine/color.js.map +1 -1
- package/dist/charts/engine/controller.cjs +2 -2
- package/dist/charts/engine/controller.cjs.map +1 -1
- package/dist/charts/engine/controller.d.cts +44 -4
- package/dist/charts/engine/controller.d.ts +44 -4
- package/dist/charts/engine/controller.js +421 -314
- package/dist/charts/engine/controller.js.map +1 -1
- package/dist/charts/engine/data.cjs +1 -1
- package/dist/charts/engine/data.cjs.map +1 -1
- package/dist/charts/engine/data.d.cts +9 -1
- package/dist/charts/engine/data.d.ts +9 -1
- package/dist/charts/engine/data.js +65 -49
- package/dist/charts/engine/data.js.map +1 -1
- package/dist/charts/engine/defaults.cjs +2 -0
- package/dist/charts/engine/defaults.cjs.map +1 -0
- package/dist/charts/engine/defaults.d.cts +20 -0
- package/dist/charts/engine/defaults.d.ts +20 -0
- package/dist/charts/engine/defaults.js +35 -0
- package/dist/charts/engine/defaults.js.map +1 -0
- package/dist/charts/engine/format.cjs +1 -1
- package/dist/charts/engine/format.cjs.map +1 -1
- package/dist/charts/engine/format.d.cts +27 -6
- package/dist/charts/engine/format.d.ts +27 -6
- package/dist/charts/engine/format.js +59 -21
- package/dist/charts/engine/format.js.map +1 -1
- package/dist/charts/engine/graph/chart.cjs +2 -0
- package/dist/charts/engine/graph/chart.cjs.map +1 -0
- package/dist/charts/engine/graph/chart.d.cts +3 -0
- package/dist/charts/engine/graph/chart.d.ts +3 -0
- package/dist/charts/engine/graph/chart.js +1565 -0
- package/dist/charts/engine/graph/chart.js.map +1 -0
- package/dist/charts/engine/graph/circular.cjs +2 -0
- package/dist/charts/engine/graph/circular.cjs.map +1 -0
- package/dist/charts/engine/graph/circular.d.cts +16 -0
- package/dist/charts/engine/graph/circular.d.ts +16 -0
- package/dist/charts/engine/graph/circular.js +62 -0
- package/dist/charts/engine/graph/circular.js.map +1 -0
- package/dist/charts/engine/graph/dag.cjs +2 -0
- package/dist/charts/engine/graph/dag.cjs.map +1 -0
- package/dist/charts/engine/graph/dag.d.cts +34 -0
- package/dist/charts/engine/graph/dag.d.ts +34 -0
- package/dist/charts/engine/graph/dag.js +314 -0
- package/dist/charts/engine/graph/dag.js.map +1 -0
- package/dist/charts/engine/graph/dom.cjs +2 -0
- package/dist/charts/engine/graph/dom.cjs.map +1 -0
- package/dist/charts/engine/graph/dom.d.cts +23 -0
- package/dist/charts/engine/graph/dom.d.ts +23 -0
- package/dist/charts/engine/graph/dom.js +158 -0
- package/dist/charts/engine/graph/dom.js.map +1 -0
- package/dist/charts/engine/graph/force.cjs +2 -0
- package/dist/charts/engine/graph/force.cjs.map +1 -0
- package/dist/charts/engine/graph/force.d.cts +67 -0
- package/dist/charts/engine/graph/force.d.ts +67 -0
- package/dist/charts/engine/graph/force.js +325 -0
- package/dist/charts/engine/graph/force.js.map +1 -0
- package/dist/charts/engine/graph/geometry.cjs +2 -0
- package/dist/charts/engine/graph/geometry.cjs.map +1 -0
- package/dist/charts/engine/graph/geometry.d.cts +37 -0
- package/dist/charts/engine/graph/geometry.d.ts +37 -0
- package/dist/charts/engine/graph/geometry.js +144 -0
- package/dist/charts/engine/graph/geometry.js.map +1 -0
- package/dist/charts/engine/graph/index.cjs +1 -0
- package/dist/charts/engine/graph/index.d.cts +6 -0
- package/dist/charts/engine/graph/index.d.ts +6 -0
- package/dist/charts/engine/graph/index.js +6 -0
- package/dist/charts/engine/graph/labels.cjs +2 -0
- package/dist/charts/engine/graph/labels.cjs.map +1 -0
- package/dist/charts/engine/graph/labels.d.cts +12 -0
- package/dist/charts/engine/graph/labels.d.ts +12 -0
- package/dist/charts/engine/graph/labels.js +128 -0
- package/dist/charts/engine/graph/labels.js.map +1 -0
- package/dist/charts/engine/graph/model.cjs +2 -0
- package/dist/charts/engine/graph/model.cjs.map +1 -0
- package/dist/charts/engine/graph/model.d.cts +43 -0
- package/dist/charts/engine/graph/model.d.ts +43 -0
- package/dist/charts/engine/graph/model.js +88 -0
- package/dist/charts/engine/graph/model.js.map +1 -0
- package/dist/charts/engine/graph/sizing.cjs +2 -0
- package/dist/charts/engine/graph/sizing.cjs.map +1 -0
- package/dist/charts/engine/graph/sizing.d.cts +33 -0
- package/dist/charts/engine/graph/sizing.d.ts +33 -0
- package/dist/charts/engine/graph/sizing.js +60 -0
- package/dist/charts/engine/graph/sizing.js.map +1 -0
- package/dist/charts/engine/graph/tree.cjs +2 -0
- package/dist/charts/engine/graph/tree.cjs.map +1 -0
- package/dist/charts/engine/graph/tree.d.cts +30 -0
- package/dist/charts/engine/graph/tree.d.ts +30 -0
- package/dist/charts/engine/graph/tree.js +218 -0
- package/dist/charts/engine/graph/tree.js.map +1 -0
- package/dist/charts/engine/graph/types.d.cts +626 -0
- package/dist/charts/engine/graph/types.d.ts +626 -0
- package/dist/charts/engine/graph/worker.cjs +46 -0
- package/dist/charts/engine/graph/worker.cjs.map +1 -0
- package/dist/charts/engine/graph/worker.d.cts +36 -0
- package/dist/charts/engine/graph/worker.d.ts +36 -0
- package/dist/charts/engine/graph/worker.js +129 -0
- package/dist/charts/engine/graph/worker.js.map +1 -0
- package/dist/charts/engine/items.cjs +1 -1
- package/dist/charts/engine/items.cjs.map +1 -1
- package/dist/charts/engine/items.d.cts +15 -2
- package/dist/charts/engine/items.d.ts +15 -2
- package/dist/charts/engine/items.js +257 -81
- package/dist/charts/engine/items.js.map +1 -1
- package/dist/charts/engine/labels.cjs +2 -0
- package/dist/charts/engine/labels.cjs.map +1 -0
- package/dist/charts/engine/labels.d.cts +13 -0
- package/dist/charts/engine/labels.d.ts +13 -0
- package/dist/charts/engine/labels.js +98 -0
- package/dist/charts/engine/labels.js.map +1 -0
- package/dist/charts/engine/layout.cjs +1 -1
- package/dist/charts/engine/layout.cjs.map +1 -1
- package/dist/charts/engine/layout.d.cts +43 -2
- package/dist/charts/engine/layout.d.ts +43 -2
- package/dist/charts/engine/layout.js +62 -12
- package/dist/charts/engine/layout.js.map +1 -1
- package/dist/charts/engine/locale.cjs +2 -0
- package/dist/charts/engine/locale.cjs.map +1 -0
- package/dist/charts/engine/locale.d.cts +33 -0
- package/dist/charts/engine/locale.d.ts +33 -0
- package/dist/charts/engine/locale.js +68 -0
- package/dist/charts/engine/locale.js.map +1 -0
- package/dist/charts/engine/model.cjs +1 -1
- package/dist/charts/engine/model.cjs.map +1 -1
- package/dist/charts/engine/model.d.cts +77 -2
- package/dist/charts/engine/model.d.ts +77 -2
- package/dist/charts/engine/model.js +304 -116
- package/dist/charts/engine/model.js.map +1 -1
- package/dist/charts/engine/orderbook/book.cjs +2 -0
- package/dist/charts/engine/orderbook/book.cjs.map +1 -0
- package/dist/charts/engine/orderbook/book.d.cts +28 -0
- package/dist/charts/engine/orderbook/book.d.ts +28 -0
- package/dist/charts/engine/orderbook/book.js +134 -0
- package/dist/charts/engine/orderbook/book.js.map +1 -0
- package/dist/charts/engine/orderbook/depth.cjs +2 -0
- package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
- package/dist/charts/engine/orderbook/depth.d.cts +7 -0
- package/dist/charts/engine/orderbook/depth.d.ts +7 -0
- package/dist/charts/engine/orderbook/depth.js +413 -0
- package/dist/charts/engine/orderbook/depth.js.map +1 -0
- package/dist/charts/engine/orderbook/format.cjs +2 -0
- package/dist/charts/engine/orderbook/format.cjs.map +1 -0
- package/dist/charts/engine/orderbook/format.d.cts +49 -0
- package/dist/charts/engine/orderbook/format.d.ts +49 -0
- package/dist/charts/engine/orderbook/format.js +65 -0
- package/dist/charts/engine/orderbook/format.js.map +1 -0
- package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
- package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
- package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
- package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
- package/dist/charts/engine/orderbook/heatmap.js +822 -0
- package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
- package/dist/charts/engine/orderbook/host.cjs +2 -0
- package/dist/charts/engine/orderbook/host.cjs.map +1 -0
- package/dist/charts/engine/orderbook/host.d.cts +50 -0
- package/dist/charts/engine/orderbook/host.d.ts +50 -0
- package/dist/charts/engine/orderbook/host.js +161 -0
- package/dist/charts/engine/orderbook/host.js.map +1 -0
- package/dist/charts/engine/orderbook/index.cjs +1 -0
- package/dist/charts/engine/orderbook/index.d.cts +6 -0
- package/dist/charts/engine/orderbook/index.d.ts +6 -0
- package/dist/charts/engine/orderbook/index.js +6 -0
- package/dist/charts/engine/orderbook/ladder.cjs +2 -0
- package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
- package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
- package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
- package/dist/charts/engine/orderbook/ladder.js +341 -0
- package/dist/charts/engine/orderbook/ladder.js.map +1 -0
- package/dist/charts/engine/orderbook/layout.cjs +2 -0
- package/dist/charts/engine/orderbook/layout.cjs.map +1 -0
- package/dist/charts/engine/orderbook/layout.d.cts +37 -0
- package/dist/charts/engine/orderbook/layout.d.ts +37 -0
- package/dist/charts/engine/orderbook/layout.js +70 -0
- package/dist/charts/engine/orderbook/layout.js.map +1 -0
- package/dist/charts/engine/orderbook/tape.cjs +2 -0
- package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
- package/dist/charts/engine/orderbook/tape.d.cts +6 -0
- package/dist/charts/engine/orderbook/tape.d.ts +6 -0
- package/dist/charts/engine/orderbook/tape.js +450 -0
- package/dist/charts/engine/orderbook/tape.js.map +1 -0
- package/dist/charts/engine/orderbook/types.d.cts +751 -0
- package/dist/charts/engine/orderbook/types.d.ts +751 -0
- package/dist/charts/engine/overlay.cjs +1 -1
- package/dist/charts/engine/overlay.cjs.map +1 -1
- package/dist/charts/engine/overlay.d.cts +28 -2
- package/dist/charts/engine/overlay.d.ts +28 -2
- package/dist/charts/engine/overlay.js +138 -96
- package/dist/charts/engine/overlay.js.map +1 -1
- package/dist/charts/engine/presets.cjs +2 -2
- package/dist/charts/engine/presets.cjs.map +1 -1
- package/dist/charts/engine/presets.d.cts +273 -3
- package/dist/charts/engine/presets.d.ts +273 -3
- package/dist/charts/engine/presets.js +390 -38
- package/dist/charts/engine/presets.js.map +1 -1
- package/dist/charts/engine/renderers/detect.cjs +1 -1
- package/dist/charts/engine/renderers/detect.cjs.map +1 -1
- package/dist/charts/engine/renderers/detect.d.cts +2 -1
- package/dist/charts/engine/renderers/detect.d.ts +2 -1
- package/dist/charts/engine/renderers/detect.js +24 -19
- package/dist/charts/engine/renderers/detect.js.map +1 -1
- package/dist/charts/engine/renderers/gl.cjs +2 -0
- package/dist/charts/engine/renderers/gl.cjs.map +1 -0
- package/dist/charts/engine/renderers/gl.d.cts +21 -0
- package/dist/charts/engine/renderers/gl.d.ts +21 -0
- package/dist/charts/engine/renderers/gl.js +56 -0
- package/dist/charts/engine/renderers/gl.js.map +1 -0
- package/dist/charts/engine/renderers/shaders.cjs +143 -1
- package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
- package/dist/charts/engine/renderers/shaders.d.cts +16 -0
- package/dist/charts/engine/renderers/shaders.d.ts +16 -0
- package/dist/charts/engine/renderers/shaders.js +139 -1
- package/dist/charts/engine/renderers/shaders.js.map +1 -1
- package/dist/charts/engine/renderers/webgl.cjs +2 -0
- package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
- package/dist/charts/engine/renderers/webgl.d.cts +4 -0
- package/dist/charts/engine/renderers/webgl.d.ts +4 -0
- package/dist/charts/engine/renderers/webgl.js +133 -0
- package/dist/charts/engine/renderers/webgl.js.map +1 -0
- package/dist/charts/engine/renderers/webgl2.cjs +1 -1
- package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
- package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
- package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
- package/dist/charts/engine/renderers/webgl2.js +59 -108
- package/dist/charts/engine/renderers/webgl2.js.map +1 -1
- package/dist/charts/engine/scale.cjs +1 -1
- package/dist/charts/engine/scale.cjs.map +1 -1
- package/dist/charts/engine/scale.js +1 -1
- package/dist/charts/engine/scale.js.map +1 -1
- package/dist/charts/engine/scene.cjs +1 -1
- package/dist/charts/engine/scene.cjs.map +1 -1
- package/dist/charts/engine/scene.d.cts +71 -8
- package/dist/charts/engine/scene.d.ts +71 -8
- package/dist/charts/engine/scene.js +465 -183
- package/dist/charts/engine/scene.js.map +1 -1
- package/dist/charts/engine/shapes/bullet.cjs +2 -0
- package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
- package/dist/charts/engine/shapes/bullet.d.cts +6 -0
- package/dist/charts/engine/shapes/bullet.d.ts +6 -0
- package/dist/charts/engine/shapes/bullet.js +255 -0
- package/dist/charts/engine/shapes/bullet.js.map +1 -0
- package/dist/charts/engine/shapes/calendar.cjs +2 -0
- package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
- package/dist/charts/engine/shapes/calendar.d.cts +38 -0
- package/dist/charts/engine/shapes/calendar.d.ts +38 -0
- package/dist/charts/engine/shapes/calendar.js +369 -0
- package/dist/charts/engine/shapes/calendar.js.map +1 -0
- package/dist/charts/engine/shapes/canvas.cjs +1 -1
- package/dist/charts/engine/shapes/canvas.cjs.map +1 -1
- package/dist/charts/engine/shapes/canvas.d.cts +7 -0
- package/dist/charts/engine/shapes/canvas.d.ts +7 -0
- package/dist/charts/engine/shapes/canvas.js +22 -13
- package/dist/charts/engine/shapes/canvas.js.map +1 -1
- package/dist/charts/engine/shapes/chart.cjs +1 -1
- package/dist/charts/engine/shapes/chart.cjs.map +1 -1
- package/dist/charts/engine/shapes/chart.d.cts +3 -2
- package/dist/charts/engine/shapes/chart.d.ts +3 -2
- package/dist/charts/engine/shapes/chart.js +49 -27
- package/dist/charts/engine/shapes/chart.js.map +1 -1
- package/dist/charts/engine/shapes/chord.cjs +2 -0
- package/dist/charts/engine/shapes/chord.cjs.map +1 -0
- package/dist/charts/engine/shapes/chord.d.cts +18 -0
- package/dist/charts/engine/shapes/chord.d.ts +18 -0
- package/dist/charts/engine/shapes/chord.js +414 -0
- package/dist/charts/engine/shapes/chord.js.map +1 -0
- package/dist/charts/engine/shapes/draw.cjs +1 -1
- package/dist/charts/engine/shapes/draw.cjs.map +1 -1
- package/dist/charts/engine/shapes/draw.d.cts +7 -1
- package/dist/charts/engine/shapes/draw.d.ts +7 -1
- package/dist/charts/engine/shapes/draw.js +62 -19
- package/dist/charts/engine/shapes/draw.js.map +1 -1
- package/dist/charts/engine/shapes/funnel.cjs +1 -1
- package/dist/charts/engine/shapes/funnel.cjs.map +1 -1
- package/dist/charts/engine/shapes/funnel.js +3 -3
- package/dist/charts/engine/shapes/funnel.js.map +1 -1
- package/dist/charts/engine/shapes/gauge.cjs +1 -1
- package/dist/charts/engine/shapes/gauge.cjs.map +1 -1
- package/dist/charts/engine/shapes/gauge.js +132 -95
- package/dist/charts/engine/shapes/gauge.js.map +1 -1
- package/dist/charts/engine/shapes/hit.cjs +1 -1
- package/dist/charts/engine/shapes/hit.cjs.map +1 -1
- package/dist/charts/engine/shapes/hit.d.cts +5 -1
- package/dist/charts/engine/shapes/hit.d.ts +5 -1
- package/dist/charts/engine/shapes/hit.js +89 -39
- package/dist/charts/engine/shapes/hit.js.map +1 -1
- package/dist/charts/engine/shapes/index.d.cts +6 -2
- package/dist/charts/engine/shapes/index.d.ts +6 -2
- package/dist/charts/engine/shapes/labels.cjs +2 -0
- package/dist/charts/engine/shapes/labels.cjs.map +1 -0
- package/dist/charts/engine/shapes/labels.d.cts +14 -0
- package/dist/charts/engine/shapes/labels.d.ts +14 -0
- package/dist/charts/engine/shapes/labels.js +154 -0
- package/dist/charts/engine/shapes/labels.js.map +1 -0
- package/dist/charts/engine/shapes/layout.cjs +2 -2
- package/dist/charts/engine/shapes/layout.cjs.map +1 -1
- package/dist/charts/engine/shapes/layout.d.cts +10 -3
- package/dist/charts/engine/shapes/layout.d.ts +10 -3
- package/dist/charts/engine/shapes/layout.js +239 -124
- package/dist/charts/engine/shapes/layout.js.map +1 -1
- package/dist/charts/engine/shapes/pie.cjs +1 -1
- package/dist/charts/engine/shapes/pie.cjs.map +1 -1
- package/dist/charts/engine/shapes/pie.js +2 -2
- package/dist/charts/engine/shapes/pie.js.map +1 -1
- package/dist/charts/engine/shapes/radar.cjs +1 -1
- package/dist/charts/engine/shapes/radar.cjs.map +1 -1
- package/dist/charts/engine/shapes/radar.d.cts +2 -2
- package/dist/charts/engine/shapes/radar.d.ts +2 -2
- package/dist/charts/engine/shapes/radar.js +50 -49
- package/dist/charts/engine/shapes/radar.js.map +1 -1
- package/dist/charts/engine/shapes/radialBar.cjs +2 -0
- package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
- package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
- package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
- package/dist/charts/engine/shapes/radialBar.js +155 -0
- package/dist/charts/engine/shapes/radialBar.js.map +1 -0
- package/dist/charts/engine/shapes/runtime.cjs +1 -1
- package/dist/charts/engine/shapes/runtime.cjs.map +1 -1
- package/dist/charts/engine/shapes/runtime.d.cts +9 -2
- package/dist/charts/engine/shapes/runtime.d.ts +9 -2
- package/dist/charts/engine/shapes/runtime.js +61 -51
- package/dist/charts/engine/shapes/runtime.js.map +1 -1
- package/dist/charts/engine/shapes/sankey.cjs +2 -0
- package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
- package/dist/charts/engine/shapes/sankey.d.cts +29 -0
- package/dist/charts/engine/shapes/sankey.d.ts +29 -0
- package/dist/charts/engine/shapes/sankey.js +372 -0
- package/dist/charts/engine/shapes/sankey.js.map +1 -0
- package/dist/charts/engine/shapes/scene.cjs +1 -1
- package/dist/charts/engine/shapes/scene.cjs.map +1 -1
- package/dist/charts/engine/shapes/scene.d.cts +92 -8
- package/dist/charts/engine/shapes/scene.d.ts +92 -8
- package/dist/charts/engine/shapes/scene.js +76 -31
- package/dist/charts/engine/shapes/scene.js.map +1 -1
- package/dist/charts/engine/shapes/sunburst.cjs +2 -0
- package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
- package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
- package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
- package/dist/charts/engine/shapes/sunburst.js +261 -0
- package/dist/charts/engine/shapes/sunburst.js.map +1 -0
- package/dist/charts/engine/shapes/treemap.cjs +1 -1
- package/dist/charts/engine/shapes/treemap.cjs.map +1 -1
- package/dist/charts/engine/shapes/treemap.js +2 -2
- package/dist/charts/engine/shapes/treemap.js.map +1 -1
- package/dist/charts/engine/shapes/types.d.cts +550 -12
- package/dist/charts/engine/shapes/types.d.ts +550 -12
- package/dist/charts/engine/signature.cjs +1 -1
- package/dist/charts/engine/signature.cjs.map +1 -1
- package/dist/charts/engine/signature.js +1 -1
- package/dist/charts/engine/signature.js.map +1 -1
- package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
- package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
- package/dist/charts/engine/three-d/canvas2d.d.cts +7 -0
- package/dist/charts/engine/three-d/canvas2d.d.ts +7 -0
- package/dist/charts/engine/three-d/canvas2d.js +128 -0
- package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
- package/dist/charts/engine/three-d/chart.cjs +2 -0
- package/dist/charts/engine/three-d/chart.cjs.map +1 -0
- package/dist/charts/engine/three-d/chart.d.cts +15 -0
- package/dist/charts/engine/three-d/chart.d.ts +15 -0
- package/dist/charts/engine/three-d/chart.js +621 -0
- package/dist/charts/engine/three-d/chart.js.map +1 -0
- package/dist/charts/engine/three-d/colormap.cjs +2 -0
- package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
- package/dist/charts/engine/three-d/colormap.d.cts +16 -0
- package/dist/charts/engine/three-d/colormap.d.ts +16 -0
- package/dist/charts/engine/three-d/colormap.js +166 -0
- package/dist/charts/engine/three-d/colormap.js.map +1 -0
- package/dist/charts/engine/three-d/contours.cjs +2 -0
- package/dist/charts/engine/three-d/contours.cjs.map +1 -0
- package/dist/charts/engine/three-d/contours.d.cts +7 -0
- package/dist/charts/engine/three-d/contours.d.ts +7 -0
- package/dist/charts/engine/three-d/contours.js +47 -0
- package/dist/charts/engine/three-d/contours.js.map +1 -0
- package/dist/charts/engine/three-d/detect.cjs +2 -0
- package/dist/charts/engine/three-d/detect.cjs.map +1 -0
- package/dist/charts/engine/three-d/detect.d.cts +12 -0
- package/dist/charts/engine/three-d/detect.d.ts +12 -0
- package/dist/charts/engine/three-d/detect.js +37 -0
- package/dist/charts/engine/three-d/detect.js.map +1 -0
- package/dist/charts/engine/three-d/dom.cjs +2 -0
- package/dist/charts/engine/three-d/dom.cjs.map +1 -0
- package/dist/charts/engine/three-d/dom.d.cts +21 -0
- package/dist/charts/engine/three-d/dom.d.ts +21 -0
- package/dist/charts/engine/three-d/dom.js +98 -0
- package/dist/charts/engine/three-d/dom.js.map +1 -0
- package/dist/charts/engine/three-d/geometry.cjs +2 -0
- package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
- package/dist/charts/engine/three-d/geometry.d.cts +82 -0
- package/dist/charts/engine/three-d/geometry.d.ts +82 -0
- package/dist/charts/engine/three-d/geometry.js +545 -0
- package/dist/charts/engine/three-d/geometry.js.map +1 -0
- package/dist/charts/engine/three-d/hover.cjs +2 -0
- package/dist/charts/engine/three-d/hover.cjs.map +1 -0
- package/dist/charts/engine/three-d/hover.d.cts +25 -0
- package/dist/charts/engine/three-d/hover.d.ts +25 -0
- package/dist/charts/engine/three-d/hover.js +131 -0
- package/dist/charts/engine/three-d/hover.js.map +1 -0
- package/dist/charts/engine/three-d/index.cjs +1 -0
- package/dist/charts/engine/three-d/index.d.cts +2 -0
- package/dist/charts/engine/three-d/index.d.ts +2 -0
- package/dist/charts/engine/three-d/index.js +2 -0
- package/dist/charts/engine/three-d/labels.cjs +2 -0
- package/dist/charts/engine/three-d/labels.cjs.map +1 -0
- package/dist/charts/engine/three-d/labels.d.cts +23 -0
- package/dist/charts/engine/three-d/labels.d.ts +23 -0
- package/dist/charts/engine/three-d/labels.js +136 -0
- package/dist/charts/engine/three-d/labels.js.map +1 -0
- package/dist/charts/engine/three-d/math.cjs +2 -0
- package/dist/charts/engine/three-d/math.cjs.map +1 -0
- package/dist/charts/engine/three-d/math.d.cts +84 -0
- package/dist/charts/engine/three-d/math.d.ts +84 -0
- package/dist/charts/engine/three-d/math.js +150 -0
- package/dist/charts/engine/three-d/math.js.map +1 -0
- package/dist/charts/engine/three-d/model.cjs +2 -0
- package/dist/charts/engine/three-d/model.cjs.map +1 -0
- package/dist/charts/engine/three-d/model.d.cts +132 -0
- package/dist/charts/engine/three-d/model.d.ts +132 -0
- package/dist/charts/engine/three-d/model.js +279 -0
- package/dist/charts/engine/three-d/model.js.map +1 -0
- package/dist/charts/engine/three-d/overlay.cjs +2 -0
- package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
- package/dist/charts/engine/three-d/overlay.d.cts +72 -0
- package/dist/charts/engine/three-d/overlay.d.ts +72 -0
- package/dist/charts/engine/three-d/overlay.js +204 -0
- package/dist/charts/engine/three-d/overlay.js.map +1 -0
- package/dist/charts/engine/three-d/pick.cjs +2 -0
- package/dist/charts/engine/three-d/pick.cjs.map +1 -0
- package/dist/charts/engine/three-d/pick.d.cts +52 -0
- package/dist/charts/engine/three-d/pick.d.ts +52 -0
- package/dist/charts/engine/three-d/pick.js +220 -0
- package/dist/charts/engine/three-d/pick.js.map +1 -0
- package/dist/charts/engine/three-d/render-types.cjs +2 -0
- package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
- package/dist/charts/engine/three-d/render-types.d.cts +103 -0
- package/dist/charts/engine/three-d/render-types.d.ts +103 -0
- package/dist/charts/engine/three-d/render-types.js +12 -0
- package/dist/charts/engine/three-d/render-types.js.map +1 -0
- package/dist/charts/engine/three-d/shaders.cjs +311 -0
- package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
- package/dist/charts/engine/three-d/shaders.d.cts +25 -0
- package/dist/charts/engine/three-d/shaders.d.ts +25 -0
- package/dist/charts/engine/three-d/shaders.js +210 -0
- package/dist/charts/engine/three-d/shaders.js.map +1 -0
- package/dist/charts/engine/three-d/sort.cjs +2 -0
- package/dist/charts/engine/three-d/sort.cjs.map +1 -0
- package/dist/charts/engine/three-d/sort.d.cts +29 -0
- package/dist/charts/engine/three-d/sort.d.ts +29 -0
- package/dist/charts/engine/three-d/sort.js +145 -0
- package/dist/charts/engine/three-d/sort.js.map +1 -0
- package/dist/charts/engine/three-d/types.d.cts +615 -0
- package/dist/charts/engine/three-d/types.d.ts +615 -0
- package/dist/charts/engine/three-d/webgl.cjs +2 -0
- package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
- package/dist/charts/engine/three-d/webgl.d.cts +10 -0
- package/dist/charts/engine/three-d/webgl.d.ts +10 -0
- package/dist/charts/engine/three-d/webgl.js +132 -0
- package/dist/charts/engine/three-d/webgl.js.map +1 -0
- package/dist/charts/engine/three-d/webgpu.cjs +2 -0
- package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
- package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
- package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
- package/dist/charts/engine/three-d/webgpu.js +260 -0
- package/dist/charts/engine/three-d/webgpu.js.map +1 -0
- package/dist/charts/engine/time.cjs +1 -1
- package/dist/charts/engine/time.cjs.map +1 -1
- package/dist/charts/engine/time.d.cts +13 -4
- package/dist/charts/engine/time.d.ts +13 -4
- package/dist/charts/engine/time.js +156 -91
- package/dist/charts/engine/time.js.map +1 -1
- package/dist/charts/engine/trading/chart.cjs +2 -0
- package/dist/charts/engine/trading/chart.cjs.map +1 -0
- package/dist/charts/engine/trading/chart.d.cts +13 -0
- package/dist/charts/engine/trading/chart.d.ts +13 -0
- package/dist/charts/engine/trading/chart.js +2206 -0
- package/dist/charts/engine/trading/chart.js.map +1 -0
- package/dist/charts/engine/trading/drawings.cjs +3 -0
- package/dist/charts/engine/trading/drawings.cjs.map +1 -0
- package/dist/charts/engine/trading/drawings.d.cts +95 -0
- package/dist/charts/engine/trading/drawings.d.ts +95 -0
- package/dist/charts/engine/trading/drawings.js +423 -0
- package/dist/charts/engine/trading/drawings.js.map +1 -0
- package/dist/charts/engine/trading/format.cjs +2 -0
- package/dist/charts/engine/trading/format.cjs.map +1 -0
- package/dist/charts/engine/trading/format.d.cts +73 -0
- package/dist/charts/engine/trading/format.d.ts +73 -0
- package/dist/charts/engine/trading/format.js +163 -0
- package/dist/charts/engine/trading/format.js.map +1 -0
- package/dist/charts/engine/trading/geometry.cjs +2 -0
- package/dist/charts/engine/trading/geometry.cjs.map +1 -0
- package/dist/charts/engine/trading/geometry.d.cts +55 -0
- package/dist/charts/engine/trading/geometry.d.ts +55 -0
- package/dist/charts/engine/trading/geometry.js +131 -0
- package/dist/charts/engine/trading/geometry.js.map +1 -0
- package/dist/charts/engine/trading/index.cjs +1 -0
- package/dist/charts/engine/trading/index.d.cts +4 -0
- package/dist/charts/engine/trading/index.d.ts +4 -0
- package/dist/charts/engine/trading/index.js +4 -0
- package/dist/charts/engine/trading/indicators.cjs +2 -0
- package/dist/charts/engine/trading/indicators.cjs.map +1 -0
- package/dist/charts/engine/trading/indicators.d.cts +275 -0
- package/dist/charts/engine/trading/indicators.d.ts +275 -0
- package/dist/charts/engine/trading/indicators.js +544 -0
- package/dist/charts/engine/trading/indicators.js.map +1 -0
- package/dist/charts/engine/trading/labels.cjs +2 -0
- package/dist/charts/engine/trading/labels.cjs.map +1 -0
- package/dist/charts/engine/trading/labels.d.cts +7 -0
- package/dist/charts/engine/trading/labels.d.ts +7 -0
- package/dist/charts/engine/trading/labels.js +171 -0
- package/dist/charts/engine/trading/labels.js.map +1 -0
- package/dist/charts/engine/trading/scale.cjs +2 -0
- package/dist/charts/engine/trading/scale.cjs.map +1 -0
- package/dist/charts/engine/trading/scale.d.cts +46 -0
- package/dist/charts/engine/trading/scale.d.ts +46 -0
- package/dist/charts/engine/trading/scale.js +100 -0
- package/dist/charts/engine/trading/scale.js.map +1 -0
- package/dist/charts/engine/trading/store.cjs +2 -0
- package/dist/charts/engine/trading/store.cjs.map +1 -0
- package/dist/charts/engine/trading/store.d.cts +83 -0
- package/dist/charts/engine/trading/store.d.ts +83 -0
- package/dist/charts/engine/trading/store.js +150 -0
- package/dist/charts/engine/trading/store.js.map +1 -0
- package/dist/charts/engine/trading/studies.cjs +2 -0
- package/dist/charts/engine/trading/studies.cjs.map +1 -0
- package/dist/charts/engine/trading/studies.d.cts +85 -0
- package/dist/charts/engine/trading/studies.d.ts +85 -0
- package/dist/charts/engine/trading/studies.js +510 -0
- package/dist/charts/engine/trading/studies.js.map +1 -0
- package/dist/charts/engine/trading/sync.cjs +2 -0
- package/dist/charts/engine/trading/sync.cjs.map +1 -0
- package/dist/charts/engine/trading/sync.d.cts +8 -0
- package/dist/charts/engine/trading/sync.d.ts +8 -0
- package/dist/charts/engine/trading/sync.js +25 -0
- package/dist/charts/engine/trading/sync.js.map +1 -0
- package/dist/charts/engine/trading/types.d.cts +1131 -0
- package/dist/charts/engine/trading/types.d.ts +1131 -0
- package/dist/charts/engine/types.d.cts +247 -22
- package/dist/charts/engine/types.d.ts +247 -22
- package/dist/charts/index.cjs +1 -1
- package/dist/charts/index.d.cts +8 -4
- package/dist/charts/index.d.ts +8 -4
- package/dist/charts/index.js +30 -11
- package/dist/charts/react/Chart.cjs +1 -1
- package/dist/charts/react/Chart.cjs.map +1 -1
- package/dist/charts/react/Chart.d.cts +4 -4
- package/dist/charts/react/Chart.d.ts +4 -4
- package/dist/charts/react/Chart.js +5 -1
- package/dist/charts/react/Chart.js.map +1 -1
- package/dist/charts/react/charts.cjs +1 -1
- package/dist/charts/react/charts.cjs.map +1 -1
- package/dist/charts/react/charts.d.cts +39 -1
- package/dist/charts/react/charts.d.ts +39 -1
- package/dist/charts/react/charts.js +312 -128
- package/dist/charts/react/charts.js.map +1 -1
- package/dist/charts/react/graph.cjs +2 -0
- package/dist/charts/react/graph.cjs.map +1 -0
- package/dist/charts/react/graph.d.cts +213 -0
- package/dist/charts/react/graph.d.ts +213 -0
- package/dist/charts/react/graph.js +159 -0
- package/dist/charts/react/graph.js.map +1 -0
- package/dist/charts/react/orderbook.cjs +2 -0
- package/dist/charts/react/orderbook.cjs.map +1 -0
- package/dist/charts/react/orderbook.d.cts +142 -0
- package/dist/charts/react/orderbook.d.ts +142 -0
- package/dist/charts/react/orderbook.js +182 -0
- package/dist/charts/react/orderbook.js.map +1 -0
- package/dist/charts/react/shapes.cjs +1 -1
- package/dist/charts/react/shapes.cjs.map +1 -1
- package/dist/charts/react/shapes.d.cts +374 -9
- package/dist/charts/react/shapes.d.ts +374 -9
- package/dist/charts/react/shapes.js +323 -93
- package/dist/charts/react/shapes.js.map +1 -1
- package/dist/charts/react/three-d.cjs +2 -0
- package/dist/charts/react/three-d.cjs.map +1 -0
- package/dist/charts/react/three-d.d.cts +151 -0
- package/dist/charts/react/three-d.d.ts +151 -0
- package/dist/charts/react/three-d.js +154 -0
- package/dist/charts/react/three-d.js.map +1 -0
- package/dist/charts/react/trading.cjs +2 -0
- package/dist/charts/react/trading.cjs.map +1 -0
- package/dist/charts/react/trading.d.cts +145 -0
- package/dist/charts/react/trading.d.ts +145 -0
- package/dist/charts/react/trading.js +126 -0
- package/dist/charts/react/trading.js.map +1 -0
- package/dist/charts/react/types.d.cts +143 -8
- package/dist/charts/react/types.d.ts +143 -8
- package/dist/core/contracts.cjs +1 -1
- package/dist/core/contracts.cjs.map +1 -1
- package/dist/core/contracts.js +1 -1
- package/dist/core/contracts.js.map +1 -1
- package/dist/native/charts/src/canvas.cjs +1 -1
- package/dist/native/charts/src/canvas.js +9 -3
- package/dist/native/charts/src/engine/axis.cjs +1 -1
- package/dist/native/charts/src/engine/axis.cjs.map +1 -1
- package/dist/native/charts/src/engine/axis.js +43 -20
- package/dist/native/charts/src/engine/axis.js.map +1 -1
- package/dist/native/charts/src/engine/color.cjs +1 -1
- package/dist/native/charts/src/engine/color.cjs.map +1 -1
- package/dist/native/charts/src/engine/color.js +47 -5
- package/dist/native/charts/src/engine/color.js.map +1 -1
- package/dist/native/charts/src/engine/controller.cjs +2 -2
- package/dist/native/charts/src/engine/controller.cjs.map +1 -1
- package/dist/native/charts/src/engine/controller.js +415 -308
- package/dist/native/charts/src/engine/controller.js.map +1 -1
- package/dist/native/charts/src/engine/data.cjs +1 -1
- package/dist/native/charts/src/engine/data.cjs.map +1 -1
- package/dist/native/charts/src/engine/data.js +65 -49
- package/dist/native/charts/src/engine/data.js.map +1 -1
- package/dist/native/charts/src/engine/format.cjs +1 -1
- package/dist/native/charts/src/engine/format.cjs.map +1 -1
- package/dist/native/charts/src/engine/format.js +59 -21
- package/dist/native/charts/src/engine/format.js.map +1 -1
- package/dist/native/charts/src/engine/labels.cjs +2 -0
- package/dist/native/charts/src/engine/labels.cjs.map +1 -0
- package/dist/native/charts/src/engine/labels.js +98 -0
- package/dist/native/charts/src/engine/labels.js.map +1 -0
- package/dist/native/charts/src/engine/layout.cjs +1 -1
- package/dist/native/charts/src/engine/layout.cjs.map +1 -1
- package/dist/native/charts/src/engine/layout.js +62 -12
- package/dist/native/charts/src/engine/layout.js.map +1 -1
- package/dist/native/charts/src/engine/locale.cjs +2 -0
- package/dist/native/charts/src/engine/locale.cjs.map +1 -0
- package/dist/native/charts/src/engine/locale.js +60 -0
- package/dist/native/charts/src/engine/locale.js.map +1 -0
- package/dist/native/charts/src/engine/model.cjs +1 -1
- package/dist/native/charts/src/engine/model.cjs.map +1 -1
- package/dist/native/charts/src/engine/model.js +307 -119
- package/dist/native/charts/src/engine/model.js.map +1 -1
- package/dist/native/charts/src/engine/overlay.cjs +1 -1
- package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
- package/dist/native/charts/src/engine/overlay.js +46 -23
- package/dist/native/charts/src/engine/overlay.js.map +1 -1
- package/dist/native/charts/src/engine/presets.cjs +2 -2
- package/dist/native/charts/src/engine/presets.cjs.map +1 -1
- package/dist/native/charts/src/engine/presets.js +470 -41
- package/dist/native/charts/src/engine/presets.js.map +1 -1
- package/dist/native/charts/src/engine/scale.cjs +1 -1
- package/dist/native/charts/src/engine/scale.cjs.map +1 -1
- package/dist/native/charts/src/engine/scale.js +1 -1
- package/dist/native/charts/src/engine/scale.js.map +1 -1
- package/dist/native/charts/src/engine/scene.cjs +1 -1
- package/dist/native/charts/src/engine/scene.cjs.map +1 -1
- package/dist/native/charts/src/engine/scene.js +489 -207
- package/dist/native/charts/src/engine/scene.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
- package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/calendar.js +369 -0
- package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
- package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/chord.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/chord.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/chord.js +414 -0
- package/dist/native/charts/src/engine/shapes/chord.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/draw.js +195 -0
- package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
- package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
- package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/hit.js +135 -0
- package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/labels.js +154 -0
- package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
- package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/layout.js +358 -0
- package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/pie.js +302 -0
- package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/radar.js +198 -0
- package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
- package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
- package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
- package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/scene.js +168 -0
- package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
- package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
- package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
- package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
- package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
- package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
- package/dist/native/charts/src/engine/time.cjs +1 -1
- package/dist/native/charts/src/engine/time.cjs.map +1 -1
- package/dist/native/charts/src/engine/time.js +156 -91
- package/dist/native/charts/src/engine/time.js.map +1 -1
- package/dist/native/components/Chart/ChartBase.cjs +1 -1
- package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
- package/dist/native/components/Chart/ChartBase.d.cts +1 -1
- package/dist/native/components/Chart/ChartBase.d.ts +1 -1
- package/dist/native/components/Chart/ChartBase.js +110 -107
- package/dist/native/components/Chart/ChartBase.js.map +1 -1
- package/dist/native/components/Chart/charts.cjs +1 -1
- package/dist/native/components/Chart/charts.cjs.map +1 -1
- package/dist/native/components/Chart/charts.d.cts +6 -1
- package/dist/native/components/Chart/charts.d.ts +6 -1
- package/dist/native/components/Chart/charts.js +53 -29
- package/dist/native/components/Chart/charts.js.map +1 -1
- package/dist/native/components/Chart/index.cjs +1 -1
- package/dist/native/components/Chart/index.d.cts +1 -1
- package/dist/native/components/Chart/index.d.ts +1 -1
- package/dist/native/components/Chart/index.js +2 -2
- package/dist/native/components/Chart/scene.cjs +1 -1
- package/dist/native/components/Chart/scene.cjs.map +1 -1
- package/dist/native/components/Chart/scene.js +315 -229
- package/dist/native/components/Chart/scene.js.map +1 -1
- package/dist/native/components/Chart/types.d.cts +26 -3
- package/dist/native/components/Chart/types.d.ts +26 -3
- package/dist/native/components/Charts/charts.cjs +2 -0
- package/dist/native/components/Charts/charts.cjs.map +1 -0
- package/dist/native/components/Charts/charts.d.cts +41 -0
- package/dist/native/components/Charts/charts.d.ts +41 -0
- package/dist/native/components/Charts/charts.js +350 -0
- package/dist/native/components/Charts/charts.js.map +1 -0
- package/dist/native/components/Charts/index.cjs +1 -0
- package/dist/native/components/Charts/index.d.cts +2 -0
- package/dist/native/components/Charts/index.d.ts +2 -0
- package/dist/native/components/Charts/index.js +2 -0
- package/dist/native/components/Charts/types.d.cts +155 -0
- package/dist/native/components/Charts/types.d.ts +155 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.js +272 -0
- package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
- package/dist/native/components/ShapeChart/charts.cjs +2 -0
- package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
- package/dist/native/components/ShapeChart/charts.d.cts +43 -0
- package/dist/native/components/ShapeChart/charts.d.ts +43 -0
- package/dist/native/components/ShapeChart/charts.js +429 -0
- package/dist/native/components/ShapeChart/charts.js.map +1 -0
- package/dist/native/components/ShapeChart/draw.cjs +2 -0
- package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
- package/dist/native/components/ShapeChart/draw.d.cts +4 -0
- package/dist/native/components/ShapeChart/draw.d.ts +4 -0
- package/dist/native/components/ShapeChart/draw.js +113 -0
- package/dist/native/components/ShapeChart/draw.js.map +1 -0
- package/dist/native/components/ShapeChart/geometry.cjs +2 -0
- package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
- package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
- package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
- package/dist/native/components/ShapeChart/geometry.js +681 -0
- package/dist/native/components/ShapeChart/geometry.js.map +1 -0
- package/dist/native/components/ShapeChart/index.cjs +1 -0
- package/dist/native/components/ShapeChart/index.d.cts +2 -0
- package/dist/native/components/ShapeChart/index.d.ts +2 -0
- package/dist/native/components/ShapeChart/index.js +2 -0
- package/dist/native/components/ShapeChart/recorder.cjs +2 -0
- package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
- package/dist/native/components/ShapeChart/recorder.d.cts +115 -0
- package/dist/native/components/ShapeChart/recorder.d.ts +115 -0
- package/dist/native/components/ShapeChart/recorder.js +583 -0
- package/dist/native/components/ShapeChart/recorder.js.map +1 -0
- package/dist/native/components/ShapeChart/types.d.cts +594 -0
- package/dist/native/components/ShapeChart/types.d.ts +594 -0
- package/dist/native/index.cjs +1 -1
- package/dist/native/index.d.cts +2 -0
- package/dist/native/index.d.ts +2 -0
- package/dist/native/index.js +14 -10
- package/dist/native/manifest.d.cts +6 -4
- package/dist/native/manifest.d.ts +6 -4
- package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
- package/dist/native/source/components/Chart/charts.tsx +42 -6
- package/dist/native/source/components/Chart/index.ts +1 -0
- package/dist/native/source/components/Chart/scene.tsx +312 -98
- package/dist/native/source/components/Chart/types.ts +31 -1
- package/dist/native/source/components/Charts/charts.tsx +521 -0
- package/dist/native/source/components/Charts/index.ts +14 -0
- package/dist/native/source/components/Charts/types.ts +218 -0
- package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +486 -0
- package/dist/native/source/components/ShapeChart/charts.tsx +661 -0
- package/dist/native/source/components/ShapeChart/draw.tsx +201 -0
- package/dist/native/source/components/ShapeChart/geometry.ts +1366 -0
- package/dist/native/source/components/ShapeChart/index.ts +16 -0
- package/dist/native/source/components/ShapeChart/recorder.ts +845 -0
- package/dist/native/source/components/ShapeChart/types.ts +655 -0
- package/dist/native/source/index.ts +2 -0
- package/dist/native/source/manifest.ts +31 -4
- package/dist/taro/charts.d.ts +229 -4
- package/dist/taro/index.d.ts +1 -0
- package/dist/taro/index.js +8818 -2093
- package/dist/taro/manifest.d.ts +1 -0
- package/dist/taro/shape-charts.d.ts +629 -0
- package/dist/uni/AreaChart.vue +68 -0
- package/dist/uni/AreaChart.vue.d.ts +124 -0
- package/dist/uni/Badge.vue.d.ts +1 -1
- package/dist/uni/BarChart.vue.d.ts +5 -1
- package/dist/uni/BoxPlotChart.vue +66 -0
- package/dist/uni/BoxPlotChart.vue.d.ts +110 -0
- package/dist/uni/BubbleChart.vue +68 -0
- package/dist/uni/BubbleChart.vue.d.ts +110 -0
- package/dist/uni/BulletChart.vue +86 -0
- package/dist/uni/BulletChart.vue.d.ts +114 -0
- package/dist/uni/CalendarHeatmap.vue +92 -0
- package/dist/uni/CalendarHeatmap.vue.d.ts +131 -0
- package/dist/uni/CandlestickChart.vue +66 -0
- package/dist/uni/CandlestickChart.vue.d.ts +104 -0
- package/dist/uni/Chart.vue.d.ts +4 -0
- package/dist/uni/ChordChart.vue +93 -0
- package/dist/uni/ChordChart.vue.d.ts +136 -0
- package/dist/uni/DonutChart.vue +72 -0
- package/dist/uni/DonutChart.vue.d.ts +118 -0
- package/dist/uni/FunnelChart.vue +67 -0
- package/dist/uni/FunnelChart.vue.d.ts +108 -0
- package/dist/uni/GanttChart.vue +67 -0
- package/dist/uni/GanttChart.vue.d.ts +127 -0
- package/dist/uni/GaugeChart.vue +77 -0
- package/dist/uni/GaugeChart.vue.d.ts +127 -0
- package/dist/uni/HeatmapChart.vue +66 -0
- package/dist/uni/HeatmapChart.vue.d.ts +120 -0
- package/dist/uni/HistogramChart.vue +66 -0
- package/dist/uni/HistogramChart.vue.d.ts +125 -0
- package/dist/uni/HorizontalBarChart.vue +68 -0
- package/dist/uni/HorizontalBarChart.vue.d.ts +129 -0
- package/dist/uni/Input.vue.d.ts +1 -1
- package/dist/uni/LineChart.vue.d.ts +4 -0
- package/dist/uni/MixedChart.vue +68 -0
- package/dist/uni/MixedChart.vue.d.ts +110 -0
- package/dist/uni/NumberInput.vue.d.ts +1 -1
- package/dist/uni/PieChart.vue +72 -0
- package/dist/uni/PieChart.vue.d.ts +118 -0
- package/dist/uni/QuadrantChart.vue.d.ts +4 -0
- package/dist/uni/RadarChart.vue +67 -0
- package/dist/uni/RadarChart.vue.d.ts +114 -0
- package/dist/uni/RadialBarChart.vue +90 -0
- package/dist/uni/RadialBarChart.vue.d.ts +136 -0
- package/dist/uni/RangeAreaChart.vue +68 -0
- package/dist/uni/RangeAreaChart.vue.d.ts +106 -0
- package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
- package/dist/uni/SankeyChart.vue +88 -0
- package/dist/uni/SankeyChart.vue.d.ts +125 -0
- package/dist/uni/ScatterChart.vue.d.ts +4 -0
- package/dist/uni/ShapeChart.vue +73 -0
- package/dist/uni/ShapeChart.vue.d.ts +54 -0
- package/dist/uni/Sparkline.vue +58 -0
- package/dist/uni/Sparkline.vue.d.ts +81 -0
- package/dist/uni/SunburstChart.vue +90 -0
- package/dist/uni/SunburstChart.vue.d.ts +118 -0
- package/dist/uni/Textarea.vue.d.ts +1 -1
- package/dist/uni/TimePicker.vue.d.ts +1 -1
- package/dist/uni/ToastProvider.vue.d.ts +1 -1
- package/dist/uni/TreemapChart.vue +65 -0
- package/dist/uni/TreemapChart.vue.d.ts +104 -0
- package/dist/uni/WaterfallChart.vue +66 -0
- package/dist/uni/WaterfallChart.vue.d.ts +134 -0
- package/dist/uni/chart-canvas.d.ts +3 -0
- package/dist/uni/chart-canvas.js +4 -0
- package/dist/uni/chart-types.d.ts +240 -2
- package/dist/uni/chart-types.js +198 -0
- package/dist/uni/charts-canvas.js +8 -3
- package/dist/uni/index.d.ts +27 -1
- package/dist/uni/index.js +27 -1
- package/dist/uni/manifest.d.ts +279 -0
- package/dist/uni/manifest.js +397 -0
- package/dist/uni/named-chart-options.d.ts +95 -0
- package/dist/uni/named-chart-options.js +173 -0
- package/dist/uni/shape-chart-canvas.d.ts +53 -0
- package/dist/uni/shape-chart-canvas.js +333 -0
- package/dist/uni/shape-chart-types.d.ts +431 -0
- package/dist/uni/shape-chart-types.js +305 -0
- package/dist/vue/charts-global.d.ts +48 -0
- package/dist/vue/charts.d.ts +18 -0
- package/dist/vue/charts.js +56 -0
- package/dist/vue/charts.js.map +1 -0
- package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
- package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
- package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
- package/dist/vue/components/Chart/BarChart.vue.js +7 -0
- package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +120 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
- package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
- package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
- package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
- package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
- package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
- package/dist/vue/components/Chart/Chart.vue.js +7 -0
- package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ChordChart.vue.d.ts +153 -0
- package/dist/vue/components/Chart/ChordChart.vue.js +7 -0
- package/dist/vue/components/Chart/ChordChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DependencyGraph.vue.d.ts +179 -0
- package/dist/vue/components/Chart/DependencyGraph.vue.js +7 -0
- package/dist/vue/components/Chart/DependencyGraph.vue.js.map +1 -0
- package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
- package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
- package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
- package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
- package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
- package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
- package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GanttChart.vue.d.ts +136 -0
- package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
- package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +101 -0
- package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
- package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/GraphChart.vue.d.ts +184 -0
- package/dist/vue/components/Chart/GraphChart.vue.js +7 -0
- package/dist/vue/components/Chart/GraphChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js +62 -0
- package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +129 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
- package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
- package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
- package/dist/vue/components/Chart/LineChart.vue.js +7 -0
- package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
- package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
- package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
- package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
- package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
- package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
- package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +130 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
- package/dist/vue/components/Chart/PieChart.vue.js +7 -0
- package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
- package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
- package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
- package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
- package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
- package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
- package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
- package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
- package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
- package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
- package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
- package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
- package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
- package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
- package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
- package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
- package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +116 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
- package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
- package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TradingChart.vue.d.ts +208 -0
- package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
- package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +101 -0
- package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TreeChart.vue.d.ts +172 -0
- package/dist/vue/components/Chart/TreeChart.vue.js +7 -0
- package/dist/vue/components/Chart/TreeChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
- package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
- package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
- package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +143 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
- package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +74 -0
- package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/vue/components/Chart/cartesian.d.ts +47 -0
- package/dist/vue/components/Chart/cartesian.js +56 -0
- package/dist/vue/components/Chart/cartesian.js.map +1 -0
- package/dist/vue/components/Chart/engine.d.ts +35 -0
- package/dist/vue/components/Chart/engine.js +35 -0
- package/dist/vue/components/Chart/engine.js.map +1 -0
- package/dist/vue/components/Chart/graph.d.ts +153 -0
- package/dist/vue/components/Chart/graph.js +135 -0
- package/dist/vue/components/Chart/graph.js.map +1 -0
- package/dist/vue/components/Chart/index.d.ts +45 -0
- package/dist/vue/components/Chart/index.js +44 -0
- package/dist/vue/components/Chart/orderbook.d.ts +363 -0
- package/dist/vue/components/Chart/orderbook.js +128 -0
- package/dist/vue/components/Chart/orderbook.js.map +1 -0
- package/dist/vue/components/Chart/props.d.ts +188 -0
- package/dist/vue/components/Chart/props.js +92 -0
- package/dist/vue/components/Chart/props.js.map +1 -0
- package/dist/vue/components/Chart/shape.d.ts +41 -0
- package/dist/vue/components/Chart/shape.js +42 -0
- package/dist/vue/components/Chart/shape.js.map +1 -0
- package/dist/vue/components/Chart/three-d.d.ts +106 -0
- package/dist/vue/components/Chart/three-d.js +88 -0
- package/dist/vue/components/Chart/three-d.js.map +1 -0
- package/dist/vue/components/Chart/trading.d.ts +127 -0
- package/dist/vue/components/Chart/trading.js +63 -0
- package/dist/vue/components/Chart/trading.js.map +1 -0
- package/dist/vue/components/Chart/types.d.ts +209 -0
- package/dist/vue/global.d.ts +2 -0
- package/dist/vue/groups/charts.d.ts +1 -0
- package/dist/vue/groups/charts.js +95 -0
- package/dist/vue/groups/charts.js.map +1 -0
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.js +67 -23
- package/dist/vue/internal/register.d.ts +7 -0
- package/dist/vue/internal/register.js +14 -0
- package/dist/vue/internal/register.js.map +1 -0
- package/dist/vue/plugin.d.ts +9 -4
- package/dist/vue/plugin.js +7 -10
- package/dist/vue/plugin.js.map +1 -1
- package/dist/weapp/area-chart/index.js +1 -0
- package/dist/weapp/area-chart/index.json +1 -0
- package/dist/weapp/area-chart/index.wxml +1 -0
- package/dist/weapp/area-chart/index.wxss +1 -0
- package/dist/weapp/box-plot-chart/index.js +1 -0
- package/dist/weapp/box-plot-chart/index.json +1 -0
- package/dist/weapp/box-plot-chart/index.wxml +1 -0
- package/dist/weapp/box-plot-chart/index.wxss +1 -0
- package/dist/weapp/bubble-chart/index.js +1 -0
- package/dist/weapp/bubble-chart/index.json +1 -0
- package/dist/weapp/bubble-chart/index.wxml +1 -0
- package/dist/weapp/bubble-chart/index.wxss +1 -0
- package/dist/weapp/bullet-chart/index.js +1 -0
- package/dist/weapp/bullet-chart/index.json +1 -0
- package/dist/weapp/bullet-chart/index.wxml +1 -0
- package/dist/weapp/bullet-chart/index.wxss +1 -0
- package/dist/weapp/calendar-heatmap/index.js +1 -0
- package/dist/weapp/calendar-heatmap/index.json +1 -0
- package/dist/weapp/calendar-heatmap/index.wxml +1 -0
- package/dist/weapp/calendar-heatmap/index.wxss +1 -0
- package/dist/weapp/candlestick-chart/index.js +1 -0
- package/dist/weapp/candlestick-chart/index.json +1 -0
- package/dist/weapp/candlestick-chart/index.wxml +1 -0
- package/dist/weapp/candlestick-chart/index.wxss +1 -0
- package/dist/weapp/charts/canvas.js +12976 -0
- package/dist/weapp/charts/core.d.ts +2 -0
- package/dist/weapp/charts/core.js +42 -0
- package/dist/weapp/chord-chart/index.js +1 -0
- package/dist/weapp/chord-chart/index.json +1 -0
- package/dist/weapp/chord-chart/index.wxml +1 -0
- package/dist/weapp/chord-chart/index.wxss +1 -0
- package/dist/weapp/controls.js +1495 -4480
- package/dist/weapp/donut-chart/index.js +1 -0
- package/dist/weapp/donut-chart/index.json +1 -0
- package/dist/weapp/donut-chart/index.wxml +1 -0
- package/dist/weapp/donut-chart/index.wxss +1 -0
- package/dist/weapp/funnel-chart/index.js +1 -0
- package/dist/weapp/funnel-chart/index.json +1 -0
- package/dist/weapp/funnel-chart/index.wxml +1 -0
- package/dist/weapp/funnel-chart/index.wxss +1 -0
- package/dist/weapp/gantt-chart/index.js +1 -0
- package/dist/weapp/gantt-chart/index.json +1 -0
- package/dist/weapp/gantt-chart/index.wxml +1 -0
- package/dist/weapp/gantt-chart/index.wxss +1 -0
- package/dist/weapp/gauge-chart/index.js +1 -0
- package/dist/weapp/gauge-chart/index.json +1 -0
- package/dist/weapp/gauge-chart/index.wxml +1 -0
- package/dist/weapp/gauge-chart/index.wxss +1 -0
- package/dist/weapp/heatmap-chart/index.js +1 -0
- package/dist/weapp/heatmap-chart/index.json +1 -0
- package/dist/weapp/heatmap-chart/index.wxml +1 -0
- package/dist/weapp/heatmap-chart/index.wxss +1 -0
- package/dist/weapp/histogram-chart/index.js +1 -0
- package/dist/weapp/histogram-chart/index.json +1 -0
- package/dist/weapp/histogram-chart/index.wxml +1 -0
- package/dist/weapp/histogram-chart/index.wxss +1 -0
- package/dist/weapp/horizontal-bar-chart/index.js +1 -0
- package/dist/weapp/horizontal-bar-chart/index.json +1 -0
- package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
- package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
- package/dist/weapp/mixed-chart/index.js +1 -0
- package/dist/weapp/mixed-chart/index.json +1 -0
- package/dist/weapp/mixed-chart/index.wxml +1 -0
- package/dist/weapp/mixed-chart/index.wxss +1 -0
- package/dist/weapp/pie-chart/index.js +1 -0
- package/dist/weapp/pie-chart/index.json +1 -0
- package/dist/weapp/pie-chart/index.wxml +1 -0
- package/dist/weapp/pie-chart/index.wxss +1 -0
- package/dist/weapp/radar-chart/index.js +1 -0
- package/dist/weapp/radar-chart/index.json +1 -0
- package/dist/weapp/radar-chart/index.wxml +1 -0
- package/dist/weapp/radar-chart/index.wxss +1 -0
- package/dist/weapp/radial-bar-chart/index.js +1 -0
- package/dist/weapp/radial-bar-chart/index.json +1 -0
- package/dist/weapp/radial-bar-chart/index.wxml +1 -0
- package/dist/weapp/radial-bar-chart/index.wxss +1 -0
- package/dist/weapp/range-area-chart/index.js +1 -0
- package/dist/weapp/range-area-chart/index.json +1 -0
- package/dist/weapp/range-area-chart/index.wxml +1 -0
- package/dist/weapp/range-area-chart/index.wxss +1 -0
- package/dist/weapp/sankey-chart/index.js +1 -0
- package/dist/weapp/sankey-chart/index.json +1 -0
- package/dist/weapp/sankey-chart/index.wxml +1 -0
- package/dist/weapp/sankey-chart/index.wxss +1 -0
- package/dist/weapp/shape-chart/index.js +1 -0
- package/dist/weapp/shape-chart/index.json +1 -0
- package/dist/weapp/shape-chart/index.wxml +1 -0
- package/dist/weapp/shape-chart/index.wxss +1 -0
- package/dist/weapp/sparkline/index.js +1 -0
- package/dist/weapp/sparkline/index.json +1 -0
- package/dist/weapp/sparkline/index.wxml +1 -0
- package/dist/weapp/sparkline/index.wxss +1 -0
- package/dist/weapp/sunburst-chart/index.js +1 -0
- package/dist/weapp/sunburst-chart/index.json +1 -0
- package/dist/weapp/sunburst-chart/index.wxml +1 -0
- package/dist/weapp/sunburst-chart/index.wxss +1 -0
- package/dist/weapp/treemap-chart/index.js +1 -0
- package/dist/weapp/treemap-chart/index.json +1 -0
- package/dist/weapp/treemap-chart/index.wxml +1 -0
- package/dist/weapp/treemap-chart/index.wxss +1 -0
- package/dist/weapp/types.d.ts +549 -0
- package/dist/weapp/waterfall-chart/index.js +1 -0
- package/dist/weapp/waterfall-chart/index.json +1 -0
- package/dist/weapp/waterfall-chart/index.wxml +1 -0
- package/dist/weapp/waterfall-chart/index.wxss +1 -0
- package/dist/web-components/components/chart/chart.d.ts +58 -0
- package/dist/web-components/components/chart/chart.js +55 -0
- package/dist/web-components/components/chart/chart.js.map +1 -0
- package/dist/web-components/components/chart/charts.d.ts +254 -0
- package/dist/web-components/components/chart/charts.js +208 -0
- package/dist/web-components/components/chart/charts.js.map +1 -0
- package/dist/web-components/components/chart/engine-element.d.ts +53 -0
- package/dist/web-components/components/chart/engine-element.js +77 -0
- package/dist/web-components/components/chart/engine-element.js.map +1 -0
- package/dist/web-components/components/chart/extended.d.ts +234 -0
- package/dist/web-components/components/chart/extended.js +197 -0
- package/dist/web-components/components/chart/extended.js.map +1 -0
- package/dist/web-components/components/chart/series.d.ts +7 -0
- package/dist/web-components/components/chart/series.js +14 -0
- package/dist/web-components/components/chart/series.js.map +1 -0
- package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
- package/dist/web-components/components/chart/shape-chart.js +161 -0
- package/dist/web-components/components/chart/shape-chart.js.map +1 -0
- package/dist/web-components/components/chart/shapes-extended.d.ts +198 -0
- package/dist/web-components/components/chart/shapes-extended.js +182 -0
- package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
- package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
- package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
- package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
- package/dist/web-components/components/graph/graph.d.ts +154 -0
- package/dist/web-components/components/graph/graph.js +149 -0
- package/dist/web-components/components/graph/graph.js.map +1 -0
- package/dist/web-components/components/order-book/order-book.d.ts +165 -0
- package/dist/web-components/components/order-book/order-book.js +174 -0
- package/dist/web-components/components/order-book/order-book.js.map +1 -0
- package/dist/web-components/components/trading-chart/trading-chart.d.ts +143 -0
- package/dist/web-components/components/trading-chart/trading-chart.js +158 -0
- package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
- package/dist/web-components/elements/chart-3d.d.ts +2 -0
- package/dist/web-components/elements/chart-3d.js +13 -0
- package/dist/web-components/elements/chart-3d.js.map +1 -0
- package/dist/web-components/elements/chart.d.ts +7 -0
- package/dist/web-components/elements/chart.js +44 -0
- package/dist/web-components/elements/chart.js.map +1 -0
- package/dist/web-components/elements/graph.d.ts +2 -0
- package/dist/web-components/elements/graph.js +12 -0
- package/dist/web-components/elements/graph.js.map +1 -0
- package/dist/web-components/elements/order-book.d.ts +2 -0
- package/dist/web-components/elements/order-book.js +13 -0
- package/dist/web-components/elements/order-book.js.map +1 -0
- package/dist/web-components/elements/trading-chart.d.ts +2 -0
- package/dist/web-components/elements/trading-chart.js +8 -0
- package/dist/web-components/elements/trading-chart.js.map +1 -0
- package/dist/web-components/html-custom-data.json +1470 -38
- package/dist/web-components/types/react.d.ts +494 -0
- package/dist/web-components/types/solid.d.ts +368 -0
- package/dist/web-components/types/svelte.d.ts +368 -0
- package/dist/web-components/types/vue.d.ts +410 -0
- package/package.json +128 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../color.cjs"),t=require("../locale.cjs"),n=require("./book.cjs"),r=require("./format.cjs"),i=require("./host.cjs");var a={en:{price:`Price`,size:`Size`,total:`Total`,spread:`Spread`,average:`Avg. price`,sum:`Sum`,notional:`Notional`,buyShare:`B`,sellShare:`S`,bid:`Bid`,ask:`Ask`,basisPoints:`bp`,name:`Order book`},zh:{price:`价格`,size:`数量`,total:`累计`,spread:`价差`,average:`均价`,sum:`累计数量`,notional:`累计金额`,buyShare:`买`,sellShare:`卖`,bid:`买一`,ask:`卖一`,basisPoints:`基点`,name:`订单簿`},ja:{price:`価格`,size:`数量`,total:`累計`,spread:`スプレッド`,average:`平均価格`,sum:`累計数量`,notional:`累計金額`,buyShare:`買`,sellShare:`売`,bid:`最良買気配`,ask:`最良売気配`,basisPoints:`bp`,name:`板情報`},fr:{price:`Prix`,size:`Quantité`,total:`Cumul`,spread:`Écart`,average:`Prix moyen`,sum:`Somme`,notional:`Montant`,buyShare:`A`,sellShare:`V`,bid:`Meilleur achat`,ask:`Meilleure vente`,basisPoints:`pb`,name:`Carnet d’ordres`}},o=[`price`,`size`,`total`],s=(s,c={})=>{let l=c,u=n.createOrderBookStore(),d=i.createEmitter(),f=r.createFormatters(l,2,4),p=f.price,m=t.localeLabels(a,l.locale,l.labels),h=!1,g={up:[0,0,0,1],down:[0,0,0,1]},_=null,v=NaN,y=0,b=new Map,x={bid:[NaN,NaN],ask:[NaN,NaN]},S=!1,C=[],w=null,T=null,E=``,D=null,O=20,k=i.createHost(s,{className:`minerva-order-book`,draw:F,onTheme:()=>{g=r.sideColors(k.theme,l)}}),{root:A,doc:ee}=k;A.tabIndex=0,A.setAttribute(`role`,`figure`),A.style.cursor=`default`;let te=()=>m,j=()=>{let e=l.grouping??0,t=n.inferPriceDecimals(u);f=r.createFormatters(l,e>0?Math.max(n.decimalsOf(e),0):t,n.inferSizeDecimals(u));let i=r.numberFormat(l.locale,Math.max(f.priceDecimals,l.grouping?t:0));p=l.formatPrice?f.price:e=>Number.isFinite(e)?i.format(e):`–`},M=()=>{m=t.localeLabels(a,l.locale,l.labels),A.setAttribute(`aria-label`,l.ariaLabel??m.name)},N=()=>{M(),g=r.sideColors(k.theme,l),j(),b=new Map,S=!1,k.invalidate()},P=(e,t)=>{let{price:n,size:r,count:i}=u.levels(e,{step:l.grouping??0,limit:t}),a=[],o=0,s=0;for(let t=0;t<i;t++){let i=n[t],c=r[t];o+=c,s+=c*i,a.push({side:e,index:t,price:i,size:c,sum:o,notional:s,average:s/o,y:0})}return a};function F(t){let n=k.ctx;if(!n)return!1;let{width:a,height:s,dpr:c,theme:m}=k,h=te(),A=l.mode??`both`,j=a<260,M=l.fontSize??(j?11:12),N=O=Math.max(12,l.rowHeight??(j?18:20)),F=l.header===!1?0:N+2,L=l.spreadRow===!1?0:Math.round(N*1.7),R=l.imbalance===!1?0:24,z=A===`both`?2:1,B=Math.max(0,s-F-L-R),V=Math.max(0,l.rows??Math.floor(B/N/z)),H=j?6:10;n.setTransform(c,0,0,c,0,0),n.clearRect(0,0,a,s);let U=A===`bids`?[]:P(`ask`,V),W=A===`asks`?[]:P(`bid`,V),G=F,K=G;if(A!==`bids`){for(let e of U)e.y=K+(V-1-e.index)*N;G+=V*N}let ne=A===`bids`?F:G;A===`bids`?G=F+L:G+=L;let re=G;for(let e of W)e.y=re+e.index*N;C=[...U,...W];let ie=A===`asks`?K+V*N:ne,q=(l.columns??o).filter((e,t,n)=>n.indexOf(e)===t),J=j&&q.length>2?q.slice(0,2):q,Y=J.length,ae=a-H*2,X=J.map((e,t)=>t===0?H:H+ae*(t===Y-1?1:.24+.76*t/(Y-1))),Z=l.depthBars??`cumulative`,Q=0;for(let e of C)Q=Math.max(Q,Z===`level`?e.size:e.sum);let oe=l.flash!==!1,se=Math.max(1,l.flashDuration??450),ce=new Map,le=!1,ue=e=>{let t=x[e.side];return S&&e.price>t[0]&&e.price<t[1]};for(let e of C){let n=`${e.side}:${e.price}`,r=b.get(n),i;i=r?r.size===e.size?r:{size:e.size,at:t,grew:e.size>r.size}:{size:e.size,at:ue(e)?t:-1/0,grew:!0},ce.set(n,i)}b=ce,S=!0;for(let e of[`bid`,`ask`]){let t=(e===`bid`?W:U).map(e=>e.price);x[e]=t.length?[Math.min(...t),Math.max(...t)]:[NaN,NaN]}if(D=null,w){let[e,t]=w;e>=0&&e<=a&&(D=C.find(e=>t>=e.y&&t<e.y+N)??null)}else if(T){let e=T.side===`ask`?U:W;D=e[Math.min(T.index,e.length-1)]??null}let de=l.largeOrderThreshold??1/0,fe=e.toCss(m.text),$=e.toCss(m.textMuted);F&&(n.font=r.fontOf(m,l,400,M-1),n.fillStyle=$,n.textBaseline=`middle`,J.forEach((e,t)=>{n.textAlign=t===0?`left`:`right`,n.fillText(h[e],X[t],N/2+1)}));for(let i of C){let o=i.side===`bid`?g.up:g.down,s=`${i.side}:${i.price}`,c=i.size>=de;if(D&&D.side===i.side&&i.index<=D.index&&(n.fillStyle=e.toCss(m.text,i===D?.09:.045),n.fillRect(0,i.y,a,N)),Z!==`none`&&Q>0){let t=(Z===`level`?i.size:i.sum)/Q*a;n.fillStyle=e.toCss(o,.14),n.fillRect(a-t,i.y+1,t,N-2)}c&&(n.fillStyle=e.toCss(o,.16),n.fillRect(0,i.y+1,a,N-2),n.fillStyle=e.toCss(o),n.fillRect(0,i.y+2,3,N-4));let u=b.get(s),d=0;if(oe&&u&&Number.isFinite(u.at)){let e=(t-u.at)/se;e<1&&(d=(1-e)*(1-e),le=!0)}n.textBaseline=`middle`;let p=i.y+N/2+.5;J.forEach((t,a)=>{if(n.textAlign=a===0?`left`:`right`,t===`price`)n.font=r.fontOf(m,l,500,M),n.fillStyle=e.toCss(o),n.fillText(f.price(i.price),X[a]+(c&&a===0?4:0),p);else if(t===`size`){n.font=r.fontOf(m,l,c?700:400,M);let t=f.size(i.size);if(d>0&&u){let s=n.measureText(t).width+10,c=a===0?X[a]-5:X[a]-s+5;n.fillStyle=e.toCss(u.grew?o:m.textMuted,(u.grew?.45:.3)*d),r.roundRect(n,c,i.y+2,s,N-4,3),n.fill()}n.fillStyle=fe,n.fillText(t,X[a],p)}else n.font=r.fontOf(m,l,400,M),n.fillStyle=$,n.fillText(l.total===`quote`?f.notional(i.notional):f.total(i.sum),X[a],p)})}if(D){n.strokeStyle=e.toCss(m.textMuted,.7),n.setLineDash([3,3]),n.beginPath();let t=D.side===`bid`?D.y+N-.5:D.y+.5;n.moveTo(0,t),n.lineTo(a,t),n.stroke(),n.setLineDash([])}if(L){let t=u.mid(),i=_??t;Number.isFinite(i)&&i!==v&&(Number.isFinite(v)&&(y=i>v?1:i<v?-1:y),v=i);let o=ie;n.fillStyle=e.toCss(m.text,.035),n.fillRect(0,o,a,L),n.strokeStyle=e.toCss(m.grid),n.beginPath(),n.moveTo(0,Math.round(o)+.5),n.lineTo(a,Math.round(o)+.5),n.moveTo(0,Math.round(o+L)-.5),n.lineTo(a,Math.round(o+L)-.5),n.stroke();let s=y>0?g.up:y<0?g.down:m.text,c=o+L/2+.5;n.textBaseline=`middle`,n.textAlign=`left`,n.font=r.fontOf(m,l,700,M+(j?2:4)),n.fillStyle=e.toCss(s);let d=p(i);n.fillText(d,H,c);let b=H+n.measureText(d).width+6;if(y!==0){let e=j?4:5;n.beginPath(),y>0?(n.moveTo(b,c+e*.6),n.lineTo(b+e,c-e*.7),n.lineTo(b+e*2,c+e*.6)):(n.moveTo(b,c-e*.6),n.lineTo(b+e,c+e*.7),n.lineTo(b+e*2,c-e*.6)),n.closePath(),n.fill(),b+=e*2+6}let x=u.spread();if(Number.isFinite(x)){n.textAlign=`right`,n.font=r.fontOf(m,l,400,M-1);let e=x/t*1e4,i=`${p(x)} · ${f.fixed(e,e<10?2:1)} ${h.basisPoints}`;if(n.fillStyle=fe,n.fillText(i,a-H,c),!j){let e=n.measureText(i).width;n.fillStyle=$;let t=`${h.spread}`;a-H-e-8-n.measureText(t).width>b&&n.fillText(t,a-H-e-8,c)}}}if(R){let t=0,i=0;for(let e of W)t+=e.size;for(let e of U)i+=e.size;let o=t+i,c=o>0?t/o:.5,u=s-R+6,d=R-10,p=a-H*2,_=H+p*c;n.save(),r.roundRect(n,H,u,p,d,3),n.clip(),n.fillStyle=e.toCss(g.up,.22),n.fillRect(H,u,_-H,d),n.fillStyle=e.toCss(g.down,.22),n.fillRect(_,u,H+p-_,d),n.restore(),n.fillStyle=e.toCss(m.background),n.fillRect(_-1,u,2,d),n.font=r.fontOf(m,l,600,M-1),n.textBaseline=`middle`,n.textAlign=`left`,n.fillStyle=e.toCss(g.up);let v=u+d/2+.5;n.fillText(`${h.buyShare} ${f.percent(c,1,!1)}`,H+6,v),n.textAlign=`right`,n.fillStyle=e.toCss(g.down),n.fillText(`${f.percent(1-c,1,!1)} ${h.sellShare}`,H+p-6,v)}if(D&&l.tooltip!==!1){let t=D.side===`bid`?g.up:g.down;i.tooltipHtml(ee,k.tooltip,{text:f.price(D.price),color:e.toCss(t)},[[h.average,p(D.average)],[h.sum,f.total(D.sum)],[h.notional,f.notional(D.notional)]]),k.tooltip.style.display=`block`;let n=w?w[0]:a*.4;k.placeTooltip(k.tooltip,n,D.y+N/2,n>a/2?`left`:`right`)}else k.tooltip.style.display=`none`;let pe=D?`${D.side}|${D.index}|${D.price}|${D.size}|${D.sum}`:``;pe!==E&&(E=pe,d.emit(`hover`,D?I(D):null));let me=u.bestBid(),he=u.bestAsk();return k.describe(`${l.ariaLabel??h.name}. ${h.bid} ${p(me)}, ${h.ask} ${p(he)}, ${h.spread} ${p(he-me)}.`),le}let I=e=>({side:e.side,index:e.index,price:e.price,size:e.size,sum:e.sum,notional:e.notional,average:e.average}),L=e=>{w=i.localPoint(A,e),T=null,k.invalidate()},R=()=>{w=null,k.invalidate()},z=e=>{let[t,n]=i.localPoint(A,e),r=C.find(e=>n>=e.y&&n<e.y+O);r&&t>=0&&d.emit(`levelClick`,I(r))},B=e=>{let t=[],n=C.filter(e=>e.side===`ask`),i=C.filter(e=>e.side===`bid`);for(let e=n.length-1;e>=0;e--)t.push({side:`ask`,index:e});for(let e=0;e<i.length;e++)t.push({side:`bid`,index:e});if(!t.length)return;let a=T?t.findIndex(e=>e.side===T.side&&e.index===T.index):-1;switch(e.key){case`ArrowDown`:case`ArrowUp`:{let i=e.key===`ArrowDown`;T=t[a>=0?r.clamp(a+(i?1:-1),0,t.length-1):i?Math.min(n.length,t.length-1):Math.max(0,n.length-1)]??null,w=null,k.invalidate();break}case`Enter`:case` `:D&&d.emit(`levelClick`,I(D));break;case`Escape`:T=null,k.invalidate();break;default:return}e.preventDefault()},V=()=>{T&&(T=null,k.invalidate())};A.addEventListener(`pointermove`,L),A.addEventListener(`pointerleave`,R),A.addEventListener(`click`,z),A.addEventListener(`keydown`,B),A.addEventListener(`blur`,V);let H=()=>{!h&&u.count(`bid`)+u.count(`ask`)>0&&(h=!0,j()),k.invalidate()};return N(),{setBook(e){u.setSnapshot(e),h=!1,H()},applyDeltas(e){n.applyDeltas(u,e)&&H()},clear(){u.clear(),h=!1,b=new Map,S=!1,k.invalidate()},setLastPrice(e){_=e!==null&&Number.isFinite(e)?e:null,k.invalidate()},setOptions(e){let t=(e.grouping??0)!==(l.grouping??0)||e.mode!==l.mode;l=e,t?N():(M(),g=r.sideColors(k.theme,l),j(),k.invalidate())},getStore:()=>u,on:(e,t)=>d.on(e,t),resize(){k.invalidate()},destroy(){A.removeEventListener(`pointermove`,L),A.removeEventListener(`pointerleave`,R),A.removeEventListener(`click`,z),A.removeEventListener(`keydown`,B),A.removeEventListener(`blur`,V),d.clear(),k.destroy()}}};exports.createOrderBook=s;
|
|
2
|
+
//# sourceMappingURL=ladder.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ladder.cjs","names":["createOrderBookStore","createEmitter","createFormatters","localeLabels","createHost","sideColors","inferPriceDecimals","decimalsOf","inferSizeDecimals","numberFormat","toCss","fontOf","localPoint","clamp","applyDeltas","require_color","require_locale","require_book","require_format","require_host","LABELS","COLUMNS","createOrderBook","options","initial","store","emitter","fmt","finePrice","texts","inferred","colors","lastPrice","previousLast","lastDirection","flashes","shownRange","drawn","rows","hoverAt","keyRow","hoverKey","hovered","rowHeight","host","container","root","labels","refreshFormat","grouping","raw","fine","v","applyTexts","applyOptions","sideRows","side","out","sum","notional","i","count","p","price","s","size","draw","ctx","l","mode","compact","width","fontSize","rh","headerH","spreadH","imbalanceH","sides","avail","height","perSide","pad","dpr","asks","bids","y","asksTop","row","spreadY","bidsTop","spreadTop","cols","all","c","shownCols","n","inner","colX","j","barsMode","barMax","flash","duration","nextFlashes","animating","inside","range","key","previous","entry","now","prices","r","hx","hy","list","threshold","text","theme","muted","color","large","w","f","flashAlpha","age","ty","label","x","edge","mid","shown","sy","dirColor","cy","priceText","spread","bps","right","rw","bidSum","askSum","share","by","bh","bw","split","doc","ax","toEvent","bb","ba","onPointerMove","event","onPointerLeave","onClick","onKeyDown","order","current","o","down","onBlur","changed","snapshot","deltas","regroup","next","handler"],"sources":["../../../../../charts/src/engine/orderbook/ladder.ts"],"sourcesContent":["// createOrderBook: the price ladder (asks above the spread row, bids below)\n// drawn with Canvas2D. Any number of deltas between two frames cost one\n// draw of the visible rows; changed levels flash, walls stand out, hovering\n// sums the levels up to the pointer.\n\nimport { toCss, type Rgba } from \"../color\";\nimport {\n applyDeltas,\n createOrderBookStore,\n decimalsOf,\n inferPriceDecimals,\n inferSizeDecimals,\n} from \"./book\";\nimport {\n clamp,\n createFormatters,\n fontOf,\n numberFormat,\n roundRect,\n sideColors,\n type Formatters,\n} from \"./format\";\nimport { localeLabels, type LabelDictionary } from \"../locale\";\nimport { createEmitter, createHost, localPoint, tooltipHtml } from \"./host\";\nimport type {\n OrderBookEventMap,\n OrderBookInstance,\n OrderBookLabels,\n OrderBookLevelEvent,\n OrderBookOptions,\n OrderBookSide,\n} from \"./types\";\n\nconst LABELS: LabelDictionary<OrderBookLabels> = {\n en: {\n price: \"Price\",\n size: \"Size\",\n total: \"Total\",\n spread: \"Spread\",\n average: \"Avg. price\",\n sum: \"Sum\",\n notional: \"Notional\",\n buyShare: \"B\",\n sellShare: \"S\",\n bid: \"Bid\",\n ask: \"Ask\",\n basisPoints: \"bp\",\n name: \"Order book\",\n },\n zh: {\n price: \"价格\",\n size: \"数量\",\n total: \"累计\",\n spread: \"价差\",\n average: \"均价\",\n sum: \"累计数量\",\n notional: \"累计金额\",\n buyShare: \"买\",\n sellShare: \"卖\",\n bid: \"买一\",\n ask: \"卖一\",\n basisPoints: \"基点\",\n name: \"订单簿\",\n },\n ja: {\n price: \"価格\",\n size: \"数量\",\n total: \"累計\",\n spread: \"スプレッド\",\n average: \"平均価格\",\n sum: \"累計数量\",\n notional: \"累計金額\",\n buyShare: \"買\",\n sellShare: \"売\",\n bid: \"最良買気配\",\n ask: \"最良売気配\",\n basisPoints: \"bp\",\n name: \"板情報\",\n },\n fr: {\n price: \"Prix\",\n size: \"Quantité\",\n total: \"Cumul\",\n spread: \"Écart\",\n average: \"Prix moyen\",\n sum: \"Somme\",\n notional: \"Montant\",\n buyShare: \"A\",\n sellShare: \"V\",\n bid: \"Meilleur achat\",\n ask: \"Meilleure vente\",\n basisPoints: \"pb\",\n name: \"Carnet d’ordres\",\n },\n};\n\nconst COLUMNS = [\"price\", \"size\", \"total\"] as const;\n\ninterface Row extends OrderBookLevelEvent {\n /** Top of the row, CSS pixels */\n y: number;\n}\n\ninterface Flash {\n size: number;\n at: number;\n grew: boolean;\n}\n\n/**\n * Creates an order book ladder in `container`: asks, spread row and bids\n * with depth bars, grouping, flashes on changes and a hover summary.\n */\nexport const createOrderBook = (\n container: HTMLElement,\n initial: OrderBookOptions = {},\n): OrderBookInstance => {\n let options = initial;\n const store = createOrderBookStore();\n const emitter = createEmitter<OrderBookEventMap>();\n let fmt: Formatters = createFormatters(options, 2, 4);\n let finePrice = fmt.price;\n /** Texts in the locale, resolved on every option update */\n let texts = localeLabels(LABELS, options.locale, options.labels);\n let inferred = false;\n let colors = { up: [0, 0, 0, 1] as Rgba, down: [0, 0, 0, 1] as Rgba };\n let lastPrice: number | null = null;\n let previousLast = NaN;\n let lastDirection = 0;\n let flashes = new Map<string, Flash>();\n /** Price range of the rows of the previous frame, per side */\n const shownRange: Record<OrderBookSide, [number, number]> = {\n bid: [NaN, NaN],\n ask: [NaN, NaN],\n };\n let drawn = false;\n let rows: Row[] = [];\n let hoverAt: [number, number] | null = null;\n /** Keyboard selection: side and index from the spread */\n let keyRow: { side: OrderBookSide; index: number } | null = null;\n let hoverKey = \"\";\n let hovered: Row | null = null;\n let rowHeight = 20;\n\n const host = createHost(container, {\n className: \"minerva-order-book\",\n draw,\n onTheme: () => {\n colors = sideColors(host.theme, options);\n },\n });\n const { root, doc } = host;\n root.tabIndex = 0;\n root.setAttribute(\"role\", \"figure\");\n root.style.cursor = \"default\";\n\n const labels = () => texts;\n\n const refreshFormat = () => {\n const grouping = options.grouping ?? 0;\n const raw = inferPriceDecimals(store);\n fmt = createFormatters(\n options,\n grouping > 0 ? Math.max(decimalsOf(grouping), 0) : raw,\n inferSizeDecimals(store),\n );\n // the spread row keeps the raw tick precision (a 0.1 spread is not \"0\")\n const fine = numberFormat(\n options.locale,\n Math.max(fmt.priceDecimals, options.grouping ? raw : 0),\n );\n finePrice = options.formatPrice\n ? fmt.price\n : (v) => (Number.isFinite(v) ? fine.format(v) : \"–\");\n };\n\n const applyTexts = () => {\n texts = localeLabels(LABELS, options.locale, options.labels);\n root.setAttribute(\"aria-label\", options.ariaLabel ?? texts.name);\n };\n\n const applyOptions = () => {\n applyTexts();\n colors = sideColors(host.theme, options);\n refreshFormat();\n // grouping changes the rows: no flash for the new buckets\n flashes = new Map();\n drawn = false;\n host.invalidate();\n };\n\n /** Levels of a side with their cumulative values */\n const sideRows = (side: OrderBookSide, limit: number): Row[] => {\n const { price, size, count } = store.levels(side, {\n step: options.grouping ?? 0,\n limit,\n });\n const out: Row[] = [];\n let sum = 0;\n let notional = 0;\n for (let i = 0; i < count; i++) {\n const p = price[i]!;\n const s = size[i]!;\n sum += s;\n notional += s * p;\n out.push({\n side,\n index: i,\n price: p,\n size: s,\n sum,\n notional,\n average: notional / sum,\n y: 0,\n });\n }\n return out;\n };\n\n function draw(now: number): boolean {\n const ctx = host.ctx;\n if (!ctx) return false;\n const { width, height, dpr, theme } = host;\n const l = labels();\n const mode = options.mode ?? \"both\";\n const compact = width < 260;\n const fontSize = options.fontSize ?? (compact ? 11 : 12);\n const rh = (rowHeight = Math.max(\n 12,\n options.rowHeight ?? (compact ? 18 : 20),\n ));\n const headerH = options.header === false ? 0 : rh + 2;\n const spreadH = options.spreadRow === false ? 0 : Math.round(rh * 1.7);\n const imbalanceH = options.imbalance === false ? 0 : 24;\n const sides = mode === \"both\" ? 2 : 1;\n const avail = Math.max(0, height - headerH - spreadH - imbalanceH);\n const perSide = Math.max(0, options.rows ?? Math.floor(avail / rh / sides));\n const pad = compact ? 6 : 10;\n\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.clearRect(0, 0, width, height);\n\n const asks = mode === \"bids\" ? [] : sideRows(\"ask\", perSide);\n const bids = mode === \"asks\" ? [] : sideRows(\"bid\", perSide);\n\n // vertical layout\n let y = headerH;\n const asksTop = y;\n if (mode !== \"bids\") {\n for (const row of asks) row.y = asksTop + (perSide - 1 - row.index) * rh;\n y += perSide * rh;\n }\n const spreadY = mode === \"bids\" ? headerH : y;\n if (mode !== \"bids\") y += spreadH;\n else y = headerH + spreadH;\n const bidsTop = y;\n for (const row of bids) row.y = bidsTop + row.index * rh;\n rows = [...asks, ...bids];\n const spreadTop = mode === \"asks\" ? asksTop + perSide * rh : spreadY;\n\n // columns\n const cols = (options.columns ?? COLUMNS).filter(\n (c, i, all) => all.indexOf(c) === i,\n );\n const shownCols = compact && cols.length > 2 ? cols.slice(0, 2) : cols;\n const n = shownCols.length;\n const inner = width - pad * 2;\n const colX = shownCols.map((_, j) =>\n j === 0\n ? pad\n : pad + inner * (j === n - 1 ? 1 : 0.24 + (0.76 * j) / (n - 1)),\n );\n\n // depth bar scale\n const barsMode = options.depthBars ?? \"cumulative\";\n let barMax = 0;\n for (const row of rows) {\n barMax = Math.max(barMax, barsMode === \"level\" ? row.size : row.sum);\n }\n\n // flashes: compare with the sizes of the previous frame\n const flash = options.flash !== false;\n const duration = Math.max(1, options.flashDuration ?? 450);\n const nextFlashes = new Map<string, Flash>();\n let animating = false;\n const inside = (row: Row) => {\n const range = shownRange[row.side];\n return drawn && row.price > range[0] && row.price < range[1];\n };\n for (const row of rows) {\n const key = `${row.side}:${row.price}`;\n const previous = flashes.get(key);\n let entry: Flash;\n // a level scrolling into view is not new: only levels appearing\n // between the rows already shown flash\n if (!previous)\n entry = {\n size: row.size,\n at: inside(row) ? now : -Infinity,\n grew: true,\n };\n else if (previous.size !== row.size)\n entry = { size: row.size, at: now, grew: row.size > previous.size };\n else entry = previous;\n nextFlashes.set(key, entry);\n }\n flashes = nextFlashes;\n drawn = true;\n for (const side of [\"bid\", \"ask\"] as const) {\n const list = side === \"bid\" ? bids : asks;\n const prices = list.map((r) => r.price);\n shownRange[side] = prices.length\n ? [Math.min(...prices), Math.max(...prices)]\n : [NaN, NaN];\n }\n\n // hover: rows from the spread to the hovered one\n hovered = null;\n if (hoverAt) {\n const [hx, hy] = hoverAt;\n if (hx >= 0 && hx <= width)\n hovered = rows.find((r) => hy >= r.y && hy < r.y + rh) ?? null;\n } else if (keyRow) {\n const list = keyRow.side === \"ask\" ? asks : bids;\n hovered = list[Math.min(keyRow.index, list.length - 1)] ?? null;\n }\n\n const threshold = options.largeOrderThreshold ?? Infinity;\n const text = toCss(theme.text);\n const muted = toCss(theme.textMuted);\n\n // header\n if (headerH) {\n ctx.font = fontOf(theme, options, 400, fontSize - 1);\n ctx.fillStyle = muted;\n ctx.textBaseline = \"middle\";\n shownCols.forEach((c, j) => {\n ctx.textAlign = j === 0 ? \"left\" : \"right\";\n ctx.fillText(l[c], colX[j]!, rh / 2 + 1);\n });\n }\n\n // rows\n for (const row of rows) {\n const color = row.side === \"bid\" ? colors.up : colors.down;\n const key = `${row.side}:${row.price}`;\n const large = row.size >= threshold;\n // hover band (cumulative selection)\n if (hovered && hovered.side === row.side && row.index <= hovered.index) {\n ctx.fillStyle = toCss(theme.text, row === hovered ? 0.09 : 0.045);\n ctx.fillRect(0, row.y, width, rh);\n }\n // depth bar\n if (barsMode !== \"none\" && barMax > 0) {\n const value = barsMode === \"level\" ? row.size : row.sum;\n const w = (value / barMax) * width;\n ctx.fillStyle = toCss(color, 0.14);\n ctx.fillRect(width - w, row.y + 1, w, rh - 2);\n }\n if (large) {\n ctx.fillStyle = toCss(color, 0.16);\n ctx.fillRect(0, row.y + 1, width, rh - 2);\n ctx.fillStyle = toCss(color);\n ctx.fillRect(0, row.y + 2, 3, rh - 4);\n }\n // flash: behind the size that changed (a whole-row flash makes a\n // ladder at 200 updates/s flicker)\n const f = flashes.get(key);\n let flashAlpha = 0;\n if (flash && f && Number.isFinite(f.at)) {\n const age = (now - f.at) / duration;\n if (age < 1) {\n flashAlpha = (1 - age) * (1 - age);\n animating = true;\n }\n }\n // texts\n ctx.textBaseline = \"middle\";\n const ty = row.y + rh / 2 + 0.5;\n shownCols.forEach((c, j) => {\n ctx.textAlign = j === 0 ? \"left\" : \"right\";\n if (c === \"price\") {\n ctx.font = fontOf(theme, options, 500, fontSize);\n ctx.fillStyle = toCss(color);\n ctx.fillText(\n fmt.price(row.price),\n colX[j]! + (large && j === 0 ? 4 : 0),\n ty,\n );\n } else if (c === \"size\") {\n ctx.font = fontOf(theme, options, large ? 700 : 400, fontSize);\n const label = fmt.size(row.size);\n if (flashAlpha > 0 && f) {\n const w = ctx.measureText(label).width + 10;\n const x = j === 0 ? colX[j]! - 5 : colX[j]! - w + 5;\n ctx.fillStyle = toCss(\n f.grew ? color : theme.textMuted,\n (f.grew ? 0.45 : 0.3) * flashAlpha,\n );\n roundRect(ctx, x, row.y + 2, w, rh - 4, 3);\n ctx.fill();\n }\n ctx.fillStyle = text;\n ctx.fillText(label, colX[j]!, ty);\n } else {\n ctx.font = fontOf(theme, options, 400, fontSize);\n ctx.fillStyle = muted;\n ctx.fillText(\n options.total === \"quote\"\n ? fmt.notional(row.notional)\n : fmt.total(row.sum),\n colX[j]!,\n ty,\n );\n }\n });\n }\n if (hovered) {\n // edge of the selection\n ctx.strokeStyle = toCss(theme.textMuted, 0.7);\n ctx.setLineDash([3, 3]);\n ctx.beginPath();\n const edge =\n hovered.side === \"bid\" ? hovered.y + rh - 0.5 : hovered.y + 0.5;\n ctx.moveTo(0, edge);\n ctx.lineTo(width, edge);\n ctx.stroke();\n ctx.setLineDash([]);\n }\n\n // spread row\n if (spreadH) {\n const mid = store.mid();\n const shown = lastPrice ?? mid;\n if (Number.isFinite(shown) && shown !== previousLast) {\n if (Number.isFinite(previousLast))\n lastDirection =\n shown > previousLast\n ? 1\n : shown < previousLast\n ? -1\n : lastDirection;\n previousLast = shown;\n }\n const sy = spreadTop;\n ctx.fillStyle = toCss(theme.text, 0.035);\n ctx.fillRect(0, sy, width, spreadH);\n ctx.strokeStyle = toCss(theme.grid);\n ctx.beginPath();\n ctx.moveTo(0, Math.round(sy) + 0.5);\n ctx.lineTo(width, Math.round(sy) + 0.5);\n ctx.moveTo(0, Math.round(sy + spreadH) - 0.5);\n ctx.lineTo(width, Math.round(sy + spreadH) - 0.5);\n ctx.stroke();\n const dirColor =\n lastDirection > 0\n ? colors.up\n : lastDirection < 0\n ? colors.down\n : theme.text;\n const cy = sy + spreadH / 2 + 0.5;\n ctx.textBaseline = \"middle\";\n ctx.textAlign = \"left\";\n ctx.font = fontOf(theme, options, 700, fontSize + (compact ? 2 : 4));\n ctx.fillStyle = toCss(dirColor);\n const priceText = finePrice(shown);\n ctx.fillText(priceText, pad, cy);\n let x = pad + ctx.measureText(priceText).width + 6;\n if (lastDirection !== 0) {\n // arrow of the last move\n const s = compact ? 4 : 5;\n ctx.beginPath();\n if (lastDirection > 0) {\n ctx.moveTo(x, cy + s * 0.6);\n ctx.lineTo(x + s, cy - s * 0.7);\n ctx.lineTo(x + s * 2, cy + s * 0.6);\n } else {\n ctx.moveTo(x, cy - s * 0.6);\n ctx.lineTo(x + s, cy + s * 0.7);\n ctx.lineTo(x + s * 2, cy - s * 0.6);\n }\n ctx.closePath();\n ctx.fill();\n x += s * 2 + 6;\n }\n const spread = store.spread();\n if (Number.isFinite(spread)) {\n ctx.textAlign = \"right\";\n ctx.font = fontOf(theme, options, 400, fontSize - 1);\n const bps = (spread / mid) * 1e4;\n const right = `${finePrice(spread)} · ${fmt.fixed(bps, bps < 10 ? 2 : 1)} ${l.basisPoints}`;\n ctx.fillStyle = text;\n ctx.fillText(right, width - pad, cy);\n if (!compact) {\n const rw = ctx.measureText(right).width;\n ctx.fillStyle = muted;\n const label = `${l.spread}`;\n if (width - pad - rw - 8 - ctx.measureText(label).width > x)\n ctx.fillText(label, width - pad - rw - 8, cy);\n }\n }\n }\n\n // imbalance bar\n if (imbalanceH) {\n let bidSum = 0;\n let askSum = 0;\n for (const r of bids) bidSum += r.size;\n for (const r of asks) askSum += r.size;\n const all = bidSum + askSum;\n const share = all > 0 ? bidSum / all : 0.5;\n const by = height - imbalanceH + 6;\n const bh = imbalanceH - 10;\n const bw = width - pad * 2;\n const split = pad + bw * share;\n ctx.save();\n roundRect(ctx, pad, by, bw, bh, 3);\n ctx.clip();\n ctx.fillStyle = toCss(colors.up, 0.22);\n ctx.fillRect(pad, by, split - pad, bh);\n ctx.fillStyle = toCss(colors.down, 0.22);\n ctx.fillRect(split, by, pad + bw - split, bh);\n ctx.restore();\n ctx.fillStyle = toCss(theme.background);\n ctx.fillRect(split - 1, by, 2, bh);\n ctx.font = fontOf(theme, options, 600, fontSize - 1);\n ctx.textBaseline = \"middle\";\n ctx.textAlign = \"left\";\n ctx.fillStyle = toCss(colors.up);\n const mid = by + bh / 2 + 0.5;\n ctx.fillText(\n `${l.buyShare} ${fmt.percent(share, 1, false)}`,\n pad + 6,\n mid,\n );\n ctx.textAlign = \"right\";\n ctx.fillStyle = toCss(colors.down);\n ctx.fillText(\n `${fmt.percent(1 - share, 1, false)} ${l.sellShare}`,\n pad + bw - 6,\n mid,\n );\n }\n\n // tooltip and hover event\n if (hovered && options.tooltip !== false) {\n const color = hovered.side === \"bid\" ? colors.up : colors.down;\n tooltipHtml(\n doc,\n host.tooltip,\n { text: fmt.price(hovered.price), color: toCss(color) },\n [\n [l.average, finePrice(hovered.average)],\n [l.sum, fmt.total(hovered.sum)],\n [l.notional, fmt.notional(hovered.notional)],\n ],\n );\n host.tooltip.style.display = \"block\";\n const ax = hoverAt ? hoverAt[0] : width * 0.4;\n host.placeTooltip(\n host.tooltip,\n ax,\n hovered.y + rh / 2,\n ax > width / 2 ? \"left\" : \"right\",\n );\n } else {\n host.tooltip.style.display = \"none\";\n }\n const key = hovered\n ? `${hovered.side}|${hovered.index}|${hovered.price}|${hovered.size}|${hovered.sum}`\n : \"\";\n if (key !== hoverKey) {\n hoverKey = key;\n emitter.emit(\"hover\", hovered ? toEvent(hovered) : null);\n }\n\n const bb = store.bestBid();\n const ba = store.bestAsk();\n host.describe(\n `${options.ariaLabel ?? l.name}. ${l.bid} ${finePrice(bb)}, ${l.ask} ${finePrice(ba)}, ${l.spread} ${finePrice(ba - bb)}.`,\n );\n return animating;\n }\n\n const toEvent = (row: Row): OrderBookLevelEvent => ({\n side: row.side,\n index: row.index,\n price: row.price,\n size: row.size,\n sum: row.sum,\n notional: row.notional,\n average: row.average,\n });\n\n // ---------------------------------------------------------- interaction\n\n const onPointerMove = (event: PointerEvent) => {\n hoverAt = localPoint(root, event);\n keyRow = null;\n host.invalidate();\n };\n const onPointerLeave = () => {\n hoverAt = null;\n host.invalidate();\n };\n const onClick = (event: MouseEvent) => {\n const [x, y] = localPoint(root, event);\n const row = rows.find((r) => y >= r.y && y < r.y + rowHeight);\n if (row && x >= 0) emitter.emit(\"levelClick\", toEvent(row));\n };\n const onKeyDown = (event: KeyboardEvent) => {\n const order: { side: OrderBookSide; index: number }[] = [];\n const asks = rows.filter((r) => r.side === \"ask\");\n const bids = rows.filter((r) => r.side === \"bid\");\n for (let i = asks.length - 1; i >= 0; i--)\n order.push({ side: \"ask\", index: i });\n for (let i = 0; i < bids.length; i++) order.push({ side: \"bid\", index: i });\n if (!order.length) return;\n const current = keyRow\n ? order.findIndex(\n (o) => o.side === keyRow!.side && o.index === keyRow!.index,\n )\n : -1;\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowUp\": {\n const down = event.key === \"ArrowDown\";\n // first press: the best level on that side of the spread\n const next =\n current >= 0\n ? clamp(current + (down ? 1 : -1), 0, order.length - 1)\n : down\n ? Math.min(asks.length, order.length - 1)\n : Math.max(0, asks.length - 1);\n keyRow = order[next] ?? null;\n hoverAt = null;\n host.invalidate();\n break;\n }\n case \"Enter\":\n case \" \":\n if (hovered) emitter.emit(\"levelClick\", toEvent(hovered));\n break;\n case \"Escape\":\n keyRow = null;\n host.invalidate();\n break;\n default:\n return;\n }\n event.preventDefault();\n };\n const onBlur = () => {\n if (keyRow) {\n keyRow = null;\n host.invalidate();\n }\n };\n root.addEventListener(\"pointermove\", onPointerMove);\n root.addEventListener(\"pointerleave\", onPointerLeave);\n root.addEventListener(\"click\", onClick);\n root.addEventListener(\"keydown\", onKeyDown);\n root.addEventListener(\"blur\", onBlur);\n\n const changed = () => {\n if (!inferred && store.count(\"bid\") + store.count(\"ask\") > 0) {\n inferred = true;\n refreshFormat();\n }\n host.invalidate();\n };\n\n const instance: OrderBookInstance = {\n setBook(snapshot) {\n store.setSnapshot(snapshot);\n inferred = false;\n changed();\n },\n applyDeltas(deltas) {\n if (applyDeltas(store, deltas)) changed();\n },\n clear() {\n store.clear();\n inferred = false;\n flashes = new Map();\n drawn = false;\n host.invalidate();\n },\n setLastPrice(price) {\n lastPrice = price !== null && Number.isFinite(price) ? price : null;\n host.invalidate();\n },\n setOptions(next) {\n const regroup =\n (next.grouping ?? 0) !== (options.grouping ?? 0) ||\n next.mode !== options.mode;\n options = next;\n if (regroup) applyOptions();\n else {\n applyTexts();\n colors = sideColors(host.theme, options);\n refreshFormat();\n host.invalidate();\n }\n },\n getStore: () => store,\n on: (event, handler) => emitter.on(event, handler),\n resize() {\n host.invalidate();\n },\n destroy() {\n root.removeEventListener(\"pointermove\", onPointerMove);\n root.removeEventListener(\"pointerleave\", onPointerLeave);\n root.removeEventListener(\"click\", onClick);\n root.removeEventListener(\"keydown\", onKeyDown);\n root.removeEventListener(\"blur\", onBlur);\n emitter.clear();\n host.destroy();\n },\n };\n applyOptions();\n return instance;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OrderBookInstance, OrderBookOptions } from './types.cjs';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an order book ladder in `container`: asks, spread row and bids
|
|
4
|
+
* with depth bars, grouping, flashes on changes and a hover summary.
|
|
5
|
+
*/
|
|
6
|
+
export declare const createOrderBook: (container: HTMLElement, initial?: OrderBookOptions) => OrderBookInstance;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OrderBookInstance, OrderBookOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an order book ladder in `container`: asks, spread row and bids
|
|
4
|
+
* with depth bars, grouping, flashes on changes and a hover summary.
|
|
5
|
+
*/
|
|
6
|
+
export declare const createOrderBook: (container: HTMLElement, initial?: OrderBookOptions) => OrderBookInstance;
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { toCss as e } from "../color.js";
|
|
2
|
+
import { localeLabels as t } from "../locale.js";
|
|
3
|
+
import { applyDeltas as n, createOrderBookStore as r, decimalsOf as i, inferPriceDecimals as a, inferSizeDecimals as o } from "./book.js";
|
|
4
|
+
import { clamp as s, createFormatters as c, fontOf as l, numberFormat as u, roundRect as d, sideColors as f } from "./format.js";
|
|
5
|
+
import { createEmitter as p, createHost as m, localPoint as h, tooltipHtml as g } from "./host.js";
|
|
6
|
+
//#region src/engine/orderbook/ladder.ts
|
|
7
|
+
var _ = {
|
|
8
|
+
en: {
|
|
9
|
+
price: "Price",
|
|
10
|
+
size: "Size",
|
|
11
|
+
total: "Total",
|
|
12
|
+
spread: "Spread",
|
|
13
|
+
average: "Avg. price",
|
|
14
|
+
sum: "Sum",
|
|
15
|
+
notional: "Notional",
|
|
16
|
+
buyShare: "B",
|
|
17
|
+
sellShare: "S",
|
|
18
|
+
bid: "Bid",
|
|
19
|
+
ask: "Ask",
|
|
20
|
+
basisPoints: "bp",
|
|
21
|
+
name: "Order book"
|
|
22
|
+
},
|
|
23
|
+
zh: {
|
|
24
|
+
price: "价格",
|
|
25
|
+
size: "数量",
|
|
26
|
+
total: "累计",
|
|
27
|
+
spread: "价差",
|
|
28
|
+
average: "均价",
|
|
29
|
+
sum: "累计数量",
|
|
30
|
+
notional: "累计金额",
|
|
31
|
+
buyShare: "买",
|
|
32
|
+
sellShare: "卖",
|
|
33
|
+
bid: "买一",
|
|
34
|
+
ask: "卖一",
|
|
35
|
+
basisPoints: "基点",
|
|
36
|
+
name: "订单簿"
|
|
37
|
+
},
|
|
38
|
+
ja: {
|
|
39
|
+
price: "価格",
|
|
40
|
+
size: "数量",
|
|
41
|
+
total: "累計",
|
|
42
|
+
spread: "スプレッド",
|
|
43
|
+
average: "平均価格",
|
|
44
|
+
sum: "累計数量",
|
|
45
|
+
notional: "累計金額",
|
|
46
|
+
buyShare: "買",
|
|
47
|
+
sellShare: "売",
|
|
48
|
+
bid: "最良買気配",
|
|
49
|
+
ask: "最良売気配",
|
|
50
|
+
basisPoints: "bp",
|
|
51
|
+
name: "板情報"
|
|
52
|
+
},
|
|
53
|
+
fr: {
|
|
54
|
+
price: "Prix",
|
|
55
|
+
size: "Quantité",
|
|
56
|
+
total: "Cumul",
|
|
57
|
+
spread: "Écart",
|
|
58
|
+
average: "Prix moyen",
|
|
59
|
+
sum: "Somme",
|
|
60
|
+
notional: "Montant",
|
|
61
|
+
buyShare: "A",
|
|
62
|
+
sellShare: "V",
|
|
63
|
+
bid: "Meilleur achat",
|
|
64
|
+
ask: "Meilleure vente",
|
|
65
|
+
basisPoints: "pb",
|
|
66
|
+
name: "Carnet d’ordres"
|
|
67
|
+
}
|
|
68
|
+
}, v = [
|
|
69
|
+
"price",
|
|
70
|
+
"size",
|
|
71
|
+
"total"
|
|
72
|
+
], y = (y, ee = {}) => {
|
|
73
|
+
let b = ee, x = r(), S = p(), C = c(b, 2, 4), w = C.price, T = t(_, b.locale, b.labels), E = !1, D = {
|
|
74
|
+
up: [
|
|
75
|
+
0,
|
|
76
|
+
0,
|
|
77
|
+
0,
|
|
78
|
+
1
|
|
79
|
+
],
|
|
80
|
+
down: [
|
|
81
|
+
0,
|
|
82
|
+
0,
|
|
83
|
+
0,
|
|
84
|
+
1
|
|
85
|
+
]
|
|
86
|
+
}, O = null, k = NaN, A = 0, j = /* @__PURE__ */ new Map(), te = {
|
|
87
|
+
bid: [NaN, NaN],
|
|
88
|
+
ask: [NaN, NaN]
|
|
89
|
+
}, M = !1, N = [], P = null, F = null, I = "", L = null, ne = 20, R = m(y, {
|
|
90
|
+
className: "minerva-order-book",
|
|
91
|
+
draw: oe,
|
|
92
|
+
onTheme: () => {
|
|
93
|
+
D = f(R.theme, b);
|
|
94
|
+
}
|
|
95
|
+
}), { root: z, doc: re } = R;
|
|
96
|
+
z.tabIndex = 0, z.setAttribute("role", "figure"), z.style.cursor = "default";
|
|
97
|
+
let ie = () => T, B = () => {
|
|
98
|
+
let e = b.grouping ?? 0, t = a(x);
|
|
99
|
+
C = c(b, e > 0 ? Math.max(i(e), 0) : t, o(x));
|
|
100
|
+
let n = u(b.locale, Math.max(C.priceDecimals, b.grouping ? t : 0));
|
|
101
|
+
w = b.formatPrice ? C.price : (e) => Number.isFinite(e) ? n.format(e) : "–";
|
|
102
|
+
}, V = () => {
|
|
103
|
+
T = t(_, b.locale, b.labels), z.setAttribute("aria-label", b.ariaLabel ?? T.name);
|
|
104
|
+
}, H = () => {
|
|
105
|
+
V(), D = f(R.theme, b), B(), j = /* @__PURE__ */ new Map(), M = !1, R.invalidate();
|
|
106
|
+
}, ae = (e, t) => {
|
|
107
|
+
let { price: n, size: r, count: i } = x.levels(e, {
|
|
108
|
+
step: b.grouping ?? 0,
|
|
109
|
+
limit: t
|
|
110
|
+
}), a = [], o = 0, s = 0;
|
|
111
|
+
for (let t = 0; t < i; t++) {
|
|
112
|
+
let i = n[t], c = r[t];
|
|
113
|
+
o += c, s += c * i, a.push({
|
|
114
|
+
side: e,
|
|
115
|
+
index: t,
|
|
116
|
+
price: i,
|
|
117
|
+
size: c,
|
|
118
|
+
sum: o,
|
|
119
|
+
notional: s,
|
|
120
|
+
average: s / o,
|
|
121
|
+
y: 0
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return a;
|
|
125
|
+
};
|
|
126
|
+
function oe(t) {
|
|
127
|
+
let n = R.ctx;
|
|
128
|
+
if (!n) return !1;
|
|
129
|
+
let { width: r, height: i, dpr: a, theme: o } = R, s = ie(), c = b.mode ?? "both", u = r < 260, f = b.fontSize ?? (u ? 11 : 12), p = ne = Math.max(12, b.rowHeight ?? (u ? 18 : 20)), m = b.header === !1 ? 0 : p + 2, h = b.spreadRow === !1 ? 0 : Math.round(p * 1.7), _ = b.imbalance === !1 ? 0 : 24, y = c === "both" ? 2 : 1, ee = Math.max(0, i - m - h - _), T = Math.max(0, b.rows ?? Math.floor(ee / p / y)), E = u ? 6 : 10;
|
|
130
|
+
n.setTransform(a, 0, 0, a, 0, 0), n.clearRect(0, 0, r, i);
|
|
131
|
+
let z = c === "bids" ? [] : ae("ask", T), B = c === "asks" ? [] : ae("bid", T), V = m, H = V;
|
|
132
|
+
if (c !== "bids") {
|
|
133
|
+
for (let e of z) e.y = H + (T - 1 - e.index) * p;
|
|
134
|
+
V += T * p;
|
|
135
|
+
}
|
|
136
|
+
let oe = c === "bids" ? m : V;
|
|
137
|
+
c === "bids" ? V = m + h : V += h;
|
|
138
|
+
let W = V;
|
|
139
|
+
for (let e of B) e.y = W + e.index * p;
|
|
140
|
+
N = [...z, ...B];
|
|
141
|
+
let G = c === "asks" ? H + T * p : oe, K = (b.columns ?? v).filter((e, t, n) => n.indexOf(e) === t), q = u && K.length > 2 ? K.slice(0, 2) : K, J = q.length, Y = r - E * 2, X = q.map((e, t) => t === 0 ? E : E + Y * (t === J - 1 ? 1 : .24 + .76 * t / (J - 1))), Z = b.depthBars ?? "cumulative", Q = 0;
|
|
142
|
+
for (let e of N) Q = Math.max(Q, Z === "level" ? e.size : e.sum);
|
|
143
|
+
let se = b.flash !== !1, ce = Math.max(1, b.flashDuration ?? 450), le = /* @__PURE__ */ new Map(), ue = !1, de = (e) => {
|
|
144
|
+
let t = te[e.side];
|
|
145
|
+
return M && e.price > t[0] && e.price < t[1];
|
|
146
|
+
};
|
|
147
|
+
for (let e of N) {
|
|
148
|
+
let n = `${e.side}:${e.price}`, r = j.get(n), i;
|
|
149
|
+
i = r ? r.size === e.size ? r : {
|
|
150
|
+
size: e.size,
|
|
151
|
+
at: t,
|
|
152
|
+
grew: e.size > r.size
|
|
153
|
+
} : {
|
|
154
|
+
size: e.size,
|
|
155
|
+
at: de(e) ? t : -Infinity,
|
|
156
|
+
grew: !0
|
|
157
|
+
}, le.set(n, i);
|
|
158
|
+
}
|
|
159
|
+
j = le, M = !0;
|
|
160
|
+
for (let e of ["bid", "ask"]) {
|
|
161
|
+
let t = (e === "bid" ? B : z).map((e) => e.price);
|
|
162
|
+
te[e] = t.length ? [Math.min(...t), Math.max(...t)] : [NaN, NaN];
|
|
163
|
+
}
|
|
164
|
+
if (L = null, P) {
|
|
165
|
+
let [e, t] = P;
|
|
166
|
+
e >= 0 && e <= r && (L = N.find((e) => t >= e.y && t < e.y + p) ?? null);
|
|
167
|
+
} else if (F) {
|
|
168
|
+
let e = F.side === "ask" ? z : B;
|
|
169
|
+
L = e[Math.min(F.index, e.length - 1)] ?? null;
|
|
170
|
+
}
|
|
171
|
+
let fe = b.largeOrderThreshold ?? Infinity, pe = e(o.text), $ = e(o.textMuted);
|
|
172
|
+
m && (n.font = l(o, b, 400, f - 1), n.fillStyle = $, n.textBaseline = "middle", q.forEach((e, t) => {
|
|
173
|
+
n.textAlign = t === 0 ? "left" : "right", n.fillText(s[e], X[t], p / 2 + 1);
|
|
174
|
+
}));
|
|
175
|
+
for (let i of N) {
|
|
176
|
+
let a = i.side === "bid" ? D.up : D.down, s = `${i.side}:${i.price}`, c = i.size >= fe;
|
|
177
|
+
if (L && L.side === i.side && i.index <= L.index && (n.fillStyle = e(o.text, i === L ? .09 : .045), n.fillRect(0, i.y, r, p)), Z !== "none" && Q > 0) {
|
|
178
|
+
let t = (Z === "level" ? i.size : i.sum) / Q * r;
|
|
179
|
+
n.fillStyle = e(a, .14), n.fillRect(r - t, i.y + 1, t, p - 2);
|
|
180
|
+
}
|
|
181
|
+
c && (n.fillStyle = e(a, .16), n.fillRect(0, i.y + 1, r, p - 2), n.fillStyle = e(a), n.fillRect(0, i.y + 2, 3, p - 4));
|
|
182
|
+
let u = j.get(s), m = 0;
|
|
183
|
+
if (se && u && Number.isFinite(u.at)) {
|
|
184
|
+
let e = (t - u.at) / ce;
|
|
185
|
+
e < 1 && (m = (1 - e) * (1 - e), ue = !0);
|
|
186
|
+
}
|
|
187
|
+
n.textBaseline = "middle";
|
|
188
|
+
let h = i.y + p / 2 + .5;
|
|
189
|
+
q.forEach((t, r) => {
|
|
190
|
+
if (n.textAlign = r === 0 ? "left" : "right", t === "price") n.font = l(o, b, 500, f), n.fillStyle = e(a), n.fillText(C.price(i.price), X[r] + (c && r === 0 ? 4 : 0), h);
|
|
191
|
+
else if (t === "size") {
|
|
192
|
+
n.font = l(o, b, c ? 700 : 400, f);
|
|
193
|
+
let t = C.size(i.size);
|
|
194
|
+
if (m > 0 && u) {
|
|
195
|
+
let s = n.measureText(t).width + 10, c = r === 0 ? X[r] - 5 : X[r] - s + 5;
|
|
196
|
+
n.fillStyle = e(u.grew ? a : o.textMuted, (u.grew ? .45 : .3) * m), d(n, c, i.y + 2, s, p - 4, 3), n.fill();
|
|
197
|
+
}
|
|
198
|
+
n.fillStyle = pe, n.fillText(t, X[r], h);
|
|
199
|
+
} else n.font = l(o, b, 400, f), n.fillStyle = $, n.fillText(b.total === "quote" ? C.notional(i.notional) : C.total(i.sum), X[r], h);
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
if (L) {
|
|
203
|
+
n.strokeStyle = e(o.textMuted, .7), n.setLineDash([3, 3]), n.beginPath();
|
|
204
|
+
let t = L.side === "bid" ? L.y + p - .5 : L.y + .5;
|
|
205
|
+
n.moveTo(0, t), n.lineTo(r, t), n.stroke(), n.setLineDash([]);
|
|
206
|
+
}
|
|
207
|
+
if (h) {
|
|
208
|
+
let t = x.mid(), i = O ?? t;
|
|
209
|
+
Number.isFinite(i) && i !== k && (Number.isFinite(k) && (A = i > k ? 1 : i < k ? -1 : A), k = i);
|
|
210
|
+
let a = G;
|
|
211
|
+
n.fillStyle = e(o.text, .035), n.fillRect(0, a, r, h), n.strokeStyle = e(o.grid), n.beginPath(), n.moveTo(0, Math.round(a) + .5), n.lineTo(r, Math.round(a) + .5), n.moveTo(0, Math.round(a + h) - .5), n.lineTo(r, Math.round(a + h) - .5), n.stroke();
|
|
212
|
+
let c = A > 0 ? D.up : A < 0 ? D.down : o.text, d = a + h / 2 + .5;
|
|
213
|
+
n.textBaseline = "middle", n.textAlign = "left", n.font = l(o, b, 700, f + (u ? 2 : 4)), n.fillStyle = e(c);
|
|
214
|
+
let p = w(i);
|
|
215
|
+
n.fillText(p, E, d);
|
|
216
|
+
let m = E + n.measureText(p).width + 6;
|
|
217
|
+
if (A !== 0) {
|
|
218
|
+
let e = u ? 4 : 5;
|
|
219
|
+
n.beginPath(), A > 0 ? (n.moveTo(m, d + e * .6), n.lineTo(m + e, d - e * .7), n.lineTo(m + e * 2, d + e * .6)) : (n.moveTo(m, d - e * .6), n.lineTo(m + e, d + e * .7), n.lineTo(m + e * 2, d - e * .6)), n.closePath(), n.fill(), m += e * 2 + 6;
|
|
220
|
+
}
|
|
221
|
+
let g = x.spread();
|
|
222
|
+
if (Number.isFinite(g)) {
|
|
223
|
+
n.textAlign = "right", n.font = l(o, b, 400, f - 1);
|
|
224
|
+
let e = g / t * 1e4, i = `${w(g)} · ${C.fixed(e, e < 10 ? 2 : 1)} ${s.basisPoints}`;
|
|
225
|
+
if (n.fillStyle = pe, n.fillText(i, r - E, d), !u) {
|
|
226
|
+
let e = n.measureText(i).width;
|
|
227
|
+
n.fillStyle = $;
|
|
228
|
+
let t = `${s.spread}`;
|
|
229
|
+
r - E - e - 8 - n.measureText(t).width > m && n.fillText(t, r - E - e - 8, d);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
if (_) {
|
|
234
|
+
let t = 0, a = 0;
|
|
235
|
+
for (let e of B) t += e.size;
|
|
236
|
+
for (let e of z) a += e.size;
|
|
237
|
+
let c = t + a, u = c > 0 ? t / c : .5, p = i - _ + 6, m = _ - 10, h = r - E * 2, g = E + h * u;
|
|
238
|
+
n.save(), d(n, E, p, h, m, 3), n.clip(), n.fillStyle = e(D.up, .22), n.fillRect(E, p, g - E, m), n.fillStyle = e(D.down, .22), n.fillRect(g, p, E + h - g, m), n.restore(), n.fillStyle = e(o.background), n.fillRect(g - 1, p, 2, m), n.font = l(o, b, 600, f - 1), n.textBaseline = "middle", n.textAlign = "left", n.fillStyle = e(D.up);
|
|
239
|
+
let v = p + m / 2 + .5;
|
|
240
|
+
n.fillText(`${s.buyShare} ${C.percent(u, 1, !1)}`, E + 6, v), n.textAlign = "right", n.fillStyle = e(D.down), n.fillText(`${C.percent(1 - u, 1, !1)} ${s.sellShare}`, E + h - 6, v);
|
|
241
|
+
}
|
|
242
|
+
if (L && b.tooltip !== !1) {
|
|
243
|
+
let t = L.side === "bid" ? D.up : D.down;
|
|
244
|
+
g(re, R.tooltip, {
|
|
245
|
+
text: C.price(L.price),
|
|
246
|
+
color: e(t)
|
|
247
|
+
}, [
|
|
248
|
+
[s.average, w(L.average)],
|
|
249
|
+
[s.sum, C.total(L.sum)],
|
|
250
|
+
[s.notional, C.notional(L.notional)]
|
|
251
|
+
]), R.tooltip.style.display = "block";
|
|
252
|
+
let n = P ? P[0] : r * .4;
|
|
253
|
+
R.placeTooltip(R.tooltip, n, L.y + p / 2, n > r / 2 ? "left" : "right");
|
|
254
|
+
} else R.tooltip.style.display = "none";
|
|
255
|
+
let me = L ? `${L.side}|${L.index}|${L.price}|${L.size}|${L.sum}` : "";
|
|
256
|
+
me !== I && (I = me, S.emit("hover", L ? U(L) : null));
|
|
257
|
+
let he = x.bestBid(), ge = x.bestAsk();
|
|
258
|
+
return R.describe(`${b.ariaLabel ?? s.name}. ${s.bid} ${w(he)}, ${s.ask} ${w(ge)}, ${s.spread} ${w(ge - he)}.`), ue;
|
|
259
|
+
}
|
|
260
|
+
let U = (e) => ({
|
|
261
|
+
side: e.side,
|
|
262
|
+
index: e.index,
|
|
263
|
+
price: e.price,
|
|
264
|
+
size: e.size,
|
|
265
|
+
sum: e.sum,
|
|
266
|
+
notional: e.notional,
|
|
267
|
+
average: e.average
|
|
268
|
+
}), W = (e) => {
|
|
269
|
+
P = h(z, e), F = null, R.invalidate();
|
|
270
|
+
}, G = () => {
|
|
271
|
+
P = null, R.invalidate();
|
|
272
|
+
}, K = (e) => {
|
|
273
|
+
let [t, n] = h(z, e), r = N.find((e) => n >= e.y && n < e.y + ne);
|
|
274
|
+
r && t >= 0 && S.emit("levelClick", U(r));
|
|
275
|
+
}, q = (e) => {
|
|
276
|
+
let t = [], n = N.filter((e) => e.side === "ask"), r = N.filter((e) => e.side === "bid");
|
|
277
|
+
for (let e = n.length - 1; e >= 0; e--) t.push({
|
|
278
|
+
side: "ask",
|
|
279
|
+
index: e
|
|
280
|
+
});
|
|
281
|
+
for (let e = 0; e < r.length; e++) t.push({
|
|
282
|
+
side: "bid",
|
|
283
|
+
index: e
|
|
284
|
+
});
|
|
285
|
+
if (!t.length) return;
|
|
286
|
+
let i = F ? t.findIndex((e) => e.side === F.side && e.index === F.index) : -1;
|
|
287
|
+
switch (e.key) {
|
|
288
|
+
case "ArrowDown":
|
|
289
|
+
case "ArrowUp": {
|
|
290
|
+
let r = e.key === "ArrowDown";
|
|
291
|
+
F = t[i >= 0 ? s(i + (r ? 1 : -1), 0, t.length - 1) : r ? Math.min(n.length, t.length - 1) : Math.max(0, n.length - 1)] ?? null, P = null, R.invalidate();
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
case "Enter":
|
|
295
|
+
case " ":
|
|
296
|
+
L && S.emit("levelClick", U(L));
|
|
297
|
+
break;
|
|
298
|
+
case "Escape":
|
|
299
|
+
F = null, R.invalidate();
|
|
300
|
+
break;
|
|
301
|
+
default: return;
|
|
302
|
+
}
|
|
303
|
+
e.preventDefault();
|
|
304
|
+
}, J = () => {
|
|
305
|
+
F && (F = null, R.invalidate());
|
|
306
|
+
};
|
|
307
|
+
z.addEventListener("pointermove", W), z.addEventListener("pointerleave", G), z.addEventListener("click", K), z.addEventListener("keydown", q), z.addEventListener("blur", J);
|
|
308
|
+
let Y = () => {
|
|
309
|
+
!E && x.count("bid") + x.count("ask") > 0 && (E = !0, B()), R.invalidate();
|
|
310
|
+
};
|
|
311
|
+
return H(), {
|
|
312
|
+
setBook(e) {
|
|
313
|
+
x.setSnapshot(e), E = !1, Y();
|
|
314
|
+
},
|
|
315
|
+
applyDeltas(e) {
|
|
316
|
+
n(x, e) && Y();
|
|
317
|
+
},
|
|
318
|
+
clear() {
|
|
319
|
+
x.clear(), E = !1, j = /* @__PURE__ */ new Map(), M = !1, R.invalidate();
|
|
320
|
+
},
|
|
321
|
+
setLastPrice(e) {
|
|
322
|
+
O = e !== null && Number.isFinite(e) ? e : null, R.invalidate();
|
|
323
|
+
},
|
|
324
|
+
setOptions(e) {
|
|
325
|
+
let t = (e.grouping ?? 0) !== (b.grouping ?? 0) || e.mode !== b.mode;
|
|
326
|
+
b = e, t ? H() : (V(), D = f(R.theme, b), B(), R.invalidate());
|
|
327
|
+
},
|
|
328
|
+
getStore: () => x,
|
|
329
|
+
on: (e, t) => S.on(e, t),
|
|
330
|
+
resize() {
|
|
331
|
+
R.invalidate();
|
|
332
|
+
},
|
|
333
|
+
destroy() {
|
|
334
|
+
z.removeEventListener("pointermove", W), z.removeEventListener("pointerleave", G), z.removeEventListener("click", K), z.removeEventListener("keydown", q), z.removeEventListener("blur", J), S.clear(), R.destroy();
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
};
|
|
338
|
+
//#endregion
|
|
339
|
+
export { y as createOrderBook };
|
|
340
|
+
|
|
341
|
+
//# sourceMappingURL=ladder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ladder.js","names":["LABELS","COLUMNS","createOrderBook","options","initial","store","createOrderBookStore","emitter","createEmitter","fmt","createFormatters","finePrice","texts","localeLabels","inferred","colors","lastPrice","previousLast","lastDirection","flashes","shownRange","drawn","rows","hoverAt","keyRow","hoverKey","hovered","rowHeight","host","createHost","container","sideColors","root","labels","refreshFormat","grouping","raw","inferPriceDecimals","decimalsOf","inferSizeDecimals","fine","numberFormat","v","applyTexts","applyOptions","sideRows","side","out","sum","notional","i","count","p","price","s","size","draw","ctx","l","mode","compact","width","fontSize","rh","headerH","spreadH","imbalanceH","sides","avail","height","perSide","pad","dpr","asks","bids","y","asksTop","row","spreadY","bidsTop","spreadTop","cols","all","c","shownCols","n","inner","colX","j","barsMode","barMax","flash","duration","nextFlashes","animating","inside","range","key","previous","entry","now","prices","r","hx","hy","list","threshold","text","toCss","theme","muted","fontOf","color","large","w","f","flashAlpha","age","ty","label","x","roundRect","edge","mid","shown","sy","dirColor","cy","priceText","spread","bps","right","rw","bidSum","askSum","share","by","bh","bw","split","tooltipHtml","doc","ax","toEvent","bb","ba","onPointerMove","localPoint","event","onPointerLeave","onClick","onKeyDown","order","current","o","down","clamp","onBlur","changed","snapshot","applyDeltas","deltas","regroup","next","handler"],"sources":["../../../../../charts/src/engine/orderbook/ladder.ts"],"sourcesContent":["// createOrderBook: the price ladder (asks above the spread row, bids below)\n// drawn with Canvas2D. Any number of deltas between two frames cost one\n// draw of the visible rows; changed levels flash, walls stand out, hovering\n// sums the levels up to the pointer.\n\nimport { toCss, type Rgba } from \"../color\";\nimport {\n applyDeltas,\n createOrderBookStore,\n decimalsOf,\n inferPriceDecimals,\n inferSizeDecimals,\n} from \"./book\";\nimport {\n clamp,\n createFormatters,\n fontOf,\n numberFormat,\n roundRect,\n sideColors,\n type Formatters,\n} from \"./format\";\nimport { localeLabels, type LabelDictionary } from \"../locale\";\nimport { createEmitter, createHost, localPoint, tooltipHtml } from \"./host\";\nimport type {\n OrderBookEventMap,\n OrderBookInstance,\n OrderBookLabels,\n OrderBookLevelEvent,\n OrderBookOptions,\n OrderBookSide,\n} from \"./types\";\n\nconst LABELS: LabelDictionary<OrderBookLabels> = {\n en: {\n price: \"Price\",\n size: \"Size\",\n total: \"Total\",\n spread: \"Spread\",\n average: \"Avg. price\",\n sum: \"Sum\",\n notional: \"Notional\",\n buyShare: \"B\",\n sellShare: \"S\",\n bid: \"Bid\",\n ask: \"Ask\",\n basisPoints: \"bp\",\n name: \"Order book\",\n },\n zh: {\n price: \"价格\",\n size: \"数量\",\n total: \"累计\",\n spread: \"价差\",\n average: \"均价\",\n sum: \"累计数量\",\n notional: \"累计金额\",\n buyShare: \"买\",\n sellShare: \"卖\",\n bid: \"买一\",\n ask: \"卖一\",\n basisPoints: \"基点\",\n name: \"订单簿\",\n },\n ja: {\n price: \"価格\",\n size: \"数量\",\n total: \"累計\",\n spread: \"スプレッド\",\n average: \"平均価格\",\n sum: \"累計数量\",\n notional: \"累計金額\",\n buyShare: \"買\",\n sellShare: \"売\",\n bid: \"最良買気配\",\n ask: \"最良売気配\",\n basisPoints: \"bp\",\n name: \"板情報\",\n },\n fr: {\n price: \"Prix\",\n size: \"Quantité\",\n total: \"Cumul\",\n spread: \"Écart\",\n average: \"Prix moyen\",\n sum: \"Somme\",\n notional: \"Montant\",\n buyShare: \"A\",\n sellShare: \"V\",\n bid: \"Meilleur achat\",\n ask: \"Meilleure vente\",\n basisPoints: \"pb\",\n name: \"Carnet d’ordres\",\n },\n};\n\nconst COLUMNS = [\"price\", \"size\", \"total\"] as const;\n\ninterface Row extends OrderBookLevelEvent {\n /** Top of the row, CSS pixels */\n y: number;\n}\n\ninterface Flash {\n size: number;\n at: number;\n grew: boolean;\n}\n\n/**\n * Creates an order book ladder in `container`: asks, spread row and bids\n * with depth bars, grouping, flashes on changes and a hover summary.\n */\nexport const createOrderBook = (\n container: HTMLElement,\n initial: OrderBookOptions = {},\n): OrderBookInstance => {\n let options = initial;\n const store = createOrderBookStore();\n const emitter = createEmitter<OrderBookEventMap>();\n let fmt: Formatters = createFormatters(options, 2, 4);\n let finePrice = fmt.price;\n /** Texts in the locale, resolved on every option update */\n let texts = localeLabels(LABELS, options.locale, options.labels);\n let inferred = false;\n let colors = { up: [0, 0, 0, 1] as Rgba, down: [0, 0, 0, 1] as Rgba };\n let lastPrice: number | null = null;\n let previousLast = NaN;\n let lastDirection = 0;\n let flashes = new Map<string, Flash>();\n /** Price range of the rows of the previous frame, per side */\n const shownRange: Record<OrderBookSide, [number, number]> = {\n bid: [NaN, NaN],\n ask: [NaN, NaN],\n };\n let drawn = false;\n let rows: Row[] = [];\n let hoverAt: [number, number] | null = null;\n /** Keyboard selection: side and index from the spread */\n let keyRow: { side: OrderBookSide; index: number } | null = null;\n let hoverKey = \"\";\n let hovered: Row | null = null;\n let rowHeight = 20;\n\n const host = createHost(container, {\n className: \"minerva-order-book\",\n draw,\n onTheme: () => {\n colors = sideColors(host.theme, options);\n },\n });\n const { root, doc } = host;\n root.tabIndex = 0;\n root.setAttribute(\"role\", \"figure\");\n root.style.cursor = \"default\";\n\n const labels = () => texts;\n\n const refreshFormat = () => {\n const grouping = options.grouping ?? 0;\n const raw = inferPriceDecimals(store);\n fmt = createFormatters(\n options,\n grouping > 0 ? Math.max(decimalsOf(grouping), 0) : raw,\n inferSizeDecimals(store),\n );\n // the spread row keeps the raw tick precision (a 0.1 spread is not \"0\")\n const fine = numberFormat(\n options.locale,\n Math.max(fmt.priceDecimals, options.grouping ? raw : 0),\n );\n finePrice = options.formatPrice\n ? fmt.price\n : (v) => (Number.isFinite(v) ? fine.format(v) : \"–\");\n };\n\n const applyTexts = () => {\n texts = localeLabels(LABELS, options.locale, options.labels);\n root.setAttribute(\"aria-label\", options.ariaLabel ?? texts.name);\n };\n\n const applyOptions = () => {\n applyTexts();\n colors = sideColors(host.theme, options);\n refreshFormat();\n // grouping changes the rows: no flash for the new buckets\n flashes = new Map();\n drawn = false;\n host.invalidate();\n };\n\n /** Levels of a side with their cumulative values */\n const sideRows = (side: OrderBookSide, limit: number): Row[] => {\n const { price, size, count } = store.levels(side, {\n step: options.grouping ?? 0,\n limit,\n });\n const out: Row[] = [];\n let sum = 0;\n let notional = 0;\n for (let i = 0; i < count; i++) {\n const p = price[i]!;\n const s = size[i]!;\n sum += s;\n notional += s * p;\n out.push({\n side,\n index: i,\n price: p,\n size: s,\n sum,\n notional,\n average: notional / sum,\n y: 0,\n });\n }\n return out;\n };\n\n function draw(now: number): boolean {\n const ctx = host.ctx;\n if (!ctx) return false;\n const { width, height, dpr, theme } = host;\n const l = labels();\n const mode = options.mode ?? \"both\";\n const compact = width < 260;\n const fontSize = options.fontSize ?? (compact ? 11 : 12);\n const rh = (rowHeight = Math.max(\n 12,\n options.rowHeight ?? (compact ? 18 : 20),\n ));\n const headerH = options.header === false ? 0 : rh + 2;\n const spreadH = options.spreadRow === false ? 0 : Math.round(rh * 1.7);\n const imbalanceH = options.imbalance === false ? 0 : 24;\n const sides = mode === \"both\" ? 2 : 1;\n const avail = Math.max(0, height - headerH - spreadH - imbalanceH);\n const perSide = Math.max(0, options.rows ?? Math.floor(avail / rh / sides));\n const pad = compact ? 6 : 10;\n\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.clearRect(0, 0, width, height);\n\n const asks = mode === \"bids\" ? [] : sideRows(\"ask\", perSide);\n const bids = mode === \"asks\" ? [] : sideRows(\"bid\", perSide);\n\n // vertical layout\n let y = headerH;\n const asksTop = y;\n if (mode !== \"bids\") {\n for (const row of asks) row.y = asksTop + (perSide - 1 - row.index) * rh;\n y += perSide * rh;\n }\n const spreadY = mode === \"bids\" ? headerH : y;\n if (mode !== \"bids\") y += spreadH;\n else y = headerH + spreadH;\n const bidsTop = y;\n for (const row of bids) row.y = bidsTop + row.index * rh;\n rows = [...asks, ...bids];\n const spreadTop = mode === \"asks\" ? asksTop + perSide * rh : spreadY;\n\n // columns\n const cols = (options.columns ?? COLUMNS).filter(\n (c, i, all) => all.indexOf(c) === i,\n );\n const shownCols = compact && cols.length > 2 ? cols.slice(0, 2) : cols;\n const n = shownCols.length;\n const inner = width - pad * 2;\n const colX = shownCols.map((_, j) =>\n j === 0\n ? pad\n : pad + inner * (j === n - 1 ? 1 : 0.24 + (0.76 * j) / (n - 1)),\n );\n\n // depth bar scale\n const barsMode = options.depthBars ?? \"cumulative\";\n let barMax = 0;\n for (const row of rows) {\n barMax = Math.max(barMax, barsMode === \"level\" ? row.size : row.sum);\n }\n\n // flashes: compare with the sizes of the previous frame\n const flash = options.flash !== false;\n const duration = Math.max(1, options.flashDuration ?? 450);\n const nextFlashes = new Map<string, Flash>();\n let animating = false;\n const inside = (row: Row) => {\n const range = shownRange[row.side];\n return drawn && row.price > range[0] && row.price < range[1];\n };\n for (const row of rows) {\n const key = `${row.side}:${row.price}`;\n const previous = flashes.get(key);\n let entry: Flash;\n // a level scrolling into view is not new: only levels appearing\n // between the rows already shown flash\n if (!previous)\n entry = {\n size: row.size,\n at: inside(row) ? now : -Infinity,\n grew: true,\n };\n else if (previous.size !== row.size)\n entry = { size: row.size, at: now, grew: row.size > previous.size };\n else entry = previous;\n nextFlashes.set(key, entry);\n }\n flashes = nextFlashes;\n drawn = true;\n for (const side of [\"bid\", \"ask\"] as const) {\n const list = side === \"bid\" ? bids : asks;\n const prices = list.map((r) => r.price);\n shownRange[side] = prices.length\n ? [Math.min(...prices), Math.max(...prices)]\n : [NaN, NaN];\n }\n\n // hover: rows from the spread to the hovered one\n hovered = null;\n if (hoverAt) {\n const [hx, hy] = hoverAt;\n if (hx >= 0 && hx <= width)\n hovered = rows.find((r) => hy >= r.y && hy < r.y + rh) ?? null;\n } else if (keyRow) {\n const list = keyRow.side === \"ask\" ? asks : bids;\n hovered = list[Math.min(keyRow.index, list.length - 1)] ?? null;\n }\n\n const threshold = options.largeOrderThreshold ?? Infinity;\n const text = toCss(theme.text);\n const muted = toCss(theme.textMuted);\n\n // header\n if (headerH) {\n ctx.font = fontOf(theme, options, 400, fontSize - 1);\n ctx.fillStyle = muted;\n ctx.textBaseline = \"middle\";\n shownCols.forEach((c, j) => {\n ctx.textAlign = j === 0 ? \"left\" : \"right\";\n ctx.fillText(l[c], colX[j]!, rh / 2 + 1);\n });\n }\n\n // rows\n for (const row of rows) {\n const color = row.side === \"bid\" ? colors.up : colors.down;\n const key = `${row.side}:${row.price}`;\n const large = row.size >= threshold;\n // hover band (cumulative selection)\n if (hovered && hovered.side === row.side && row.index <= hovered.index) {\n ctx.fillStyle = toCss(theme.text, row === hovered ? 0.09 : 0.045);\n ctx.fillRect(0, row.y, width, rh);\n }\n // depth bar\n if (barsMode !== \"none\" && barMax > 0) {\n const value = barsMode === \"level\" ? row.size : row.sum;\n const w = (value / barMax) * width;\n ctx.fillStyle = toCss(color, 0.14);\n ctx.fillRect(width - w, row.y + 1, w, rh - 2);\n }\n if (large) {\n ctx.fillStyle = toCss(color, 0.16);\n ctx.fillRect(0, row.y + 1, width, rh - 2);\n ctx.fillStyle = toCss(color);\n ctx.fillRect(0, row.y + 2, 3, rh - 4);\n }\n // flash: behind the size that changed (a whole-row flash makes a\n // ladder at 200 updates/s flicker)\n const f = flashes.get(key);\n let flashAlpha = 0;\n if (flash && f && Number.isFinite(f.at)) {\n const age = (now - f.at) / duration;\n if (age < 1) {\n flashAlpha = (1 - age) * (1 - age);\n animating = true;\n }\n }\n // texts\n ctx.textBaseline = \"middle\";\n const ty = row.y + rh / 2 + 0.5;\n shownCols.forEach((c, j) => {\n ctx.textAlign = j === 0 ? \"left\" : \"right\";\n if (c === \"price\") {\n ctx.font = fontOf(theme, options, 500, fontSize);\n ctx.fillStyle = toCss(color);\n ctx.fillText(\n fmt.price(row.price),\n colX[j]! + (large && j === 0 ? 4 : 0),\n ty,\n );\n } else if (c === \"size\") {\n ctx.font = fontOf(theme, options, large ? 700 : 400, fontSize);\n const label = fmt.size(row.size);\n if (flashAlpha > 0 && f) {\n const w = ctx.measureText(label).width + 10;\n const x = j === 0 ? colX[j]! - 5 : colX[j]! - w + 5;\n ctx.fillStyle = toCss(\n f.grew ? color : theme.textMuted,\n (f.grew ? 0.45 : 0.3) * flashAlpha,\n );\n roundRect(ctx, x, row.y + 2, w, rh - 4, 3);\n ctx.fill();\n }\n ctx.fillStyle = text;\n ctx.fillText(label, colX[j]!, ty);\n } else {\n ctx.font = fontOf(theme, options, 400, fontSize);\n ctx.fillStyle = muted;\n ctx.fillText(\n options.total === \"quote\"\n ? fmt.notional(row.notional)\n : fmt.total(row.sum),\n colX[j]!,\n ty,\n );\n }\n });\n }\n if (hovered) {\n // edge of the selection\n ctx.strokeStyle = toCss(theme.textMuted, 0.7);\n ctx.setLineDash([3, 3]);\n ctx.beginPath();\n const edge =\n hovered.side === \"bid\" ? hovered.y + rh - 0.5 : hovered.y + 0.5;\n ctx.moveTo(0, edge);\n ctx.lineTo(width, edge);\n ctx.stroke();\n ctx.setLineDash([]);\n }\n\n // spread row\n if (spreadH) {\n const mid = store.mid();\n const shown = lastPrice ?? mid;\n if (Number.isFinite(shown) && shown !== previousLast) {\n if (Number.isFinite(previousLast))\n lastDirection =\n shown > previousLast\n ? 1\n : shown < previousLast\n ? -1\n : lastDirection;\n previousLast = shown;\n }\n const sy = spreadTop;\n ctx.fillStyle = toCss(theme.text, 0.035);\n ctx.fillRect(0, sy, width, spreadH);\n ctx.strokeStyle = toCss(theme.grid);\n ctx.beginPath();\n ctx.moveTo(0, Math.round(sy) + 0.5);\n ctx.lineTo(width, Math.round(sy) + 0.5);\n ctx.moveTo(0, Math.round(sy + spreadH) - 0.5);\n ctx.lineTo(width, Math.round(sy + spreadH) - 0.5);\n ctx.stroke();\n const dirColor =\n lastDirection > 0\n ? colors.up\n : lastDirection < 0\n ? colors.down\n : theme.text;\n const cy = sy + spreadH / 2 + 0.5;\n ctx.textBaseline = \"middle\";\n ctx.textAlign = \"left\";\n ctx.font = fontOf(theme, options, 700, fontSize + (compact ? 2 : 4));\n ctx.fillStyle = toCss(dirColor);\n const priceText = finePrice(shown);\n ctx.fillText(priceText, pad, cy);\n let x = pad + ctx.measureText(priceText).width + 6;\n if (lastDirection !== 0) {\n // arrow of the last move\n const s = compact ? 4 : 5;\n ctx.beginPath();\n if (lastDirection > 0) {\n ctx.moveTo(x, cy + s * 0.6);\n ctx.lineTo(x + s, cy - s * 0.7);\n ctx.lineTo(x + s * 2, cy + s * 0.6);\n } else {\n ctx.moveTo(x, cy - s * 0.6);\n ctx.lineTo(x + s, cy + s * 0.7);\n ctx.lineTo(x + s * 2, cy - s * 0.6);\n }\n ctx.closePath();\n ctx.fill();\n x += s * 2 + 6;\n }\n const spread = store.spread();\n if (Number.isFinite(spread)) {\n ctx.textAlign = \"right\";\n ctx.font = fontOf(theme, options, 400, fontSize - 1);\n const bps = (spread / mid) * 1e4;\n const right = `${finePrice(spread)} · ${fmt.fixed(bps, bps < 10 ? 2 : 1)} ${l.basisPoints}`;\n ctx.fillStyle = text;\n ctx.fillText(right, width - pad, cy);\n if (!compact) {\n const rw = ctx.measureText(right).width;\n ctx.fillStyle = muted;\n const label = `${l.spread}`;\n if (width - pad - rw - 8 - ctx.measureText(label).width > x)\n ctx.fillText(label, width - pad - rw - 8, cy);\n }\n }\n }\n\n // imbalance bar\n if (imbalanceH) {\n let bidSum = 0;\n let askSum = 0;\n for (const r of bids) bidSum += r.size;\n for (const r of asks) askSum += r.size;\n const all = bidSum + askSum;\n const share = all > 0 ? bidSum / all : 0.5;\n const by = height - imbalanceH + 6;\n const bh = imbalanceH - 10;\n const bw = width - pad * 2;\n const split = pad + bw * share;\n ctx.save();\n roundRect(ctx, pad, by, bw, bh, 3);\n ctx.clip();\n ctx.fillStyle = toCss(colors.up, 0.22);\n ctx.fillRect(pad, by, split - pad, bh);\n ctx.fillStyle = toCss(colors.down, 0.22);\n ctx.fillRect(split, by, pad + bw - split, bh);\n ctx.restore();\n ctx.fillStyle = toCss(theme.background);\n ctx.fillRect(split - 1, by, 2, bh);\n ctx.font = fontOf(theme, options, 600, fontSize - 1);\n ctx.textBaseline = \"middle\";\n ctx.textAlign = \"left\";\n ctx.fillStyle = toCss(colors.up);\n const mid = by + bh / 2 + 0.5;\n ctx.fillText(\n `${l.buyShare} ${fmt.percent(share, 1, false)}`,\n pad + 6,\n mid,\n );\n ctx.textAlign = \"right\";\n ctx.fillStyle = toCss(colors.down);\n ctx.fillText(\n `${fmt.percent(1 - share, 1, false)} ${l.sellShare}`,\n pad + bw - 6,\n mid,\n );\n }\n\n // tooltip and hover event\n if (hovered && options.tooltip !== false) {\n const color = hovered.side === \"bid\" ? colors.up : colors.down;\n tooltipHtml(\n doc,\n host.tooltip,\n { text: fmt.price(hovered.price), color: toCss(color) },\n [\n [l.average, finePrice(hovered.average)],\n [l.sum, fmt.total(hovered.sum)],\n [l.notional, fmt.notional(hovered.notional)],\n ],\n );\n host.tooltip.style.display = \"block\";\n const ax = hoverAt ? hoverAt[0] : width * 0.4;\n host.placeTooltip(\n host.tooltip,\n ax,\n hovered.y + rh / 2,\n ax > width / 2 ? \"left\" : \"right\",\n );\n } else {\n host.tooltip.style.display = \"none\";\n }\n const key = hovered\n ? `${hovered.side}|${hovered.index}|${hovered.price}|${hovered.size}|${hovered.sum}`\n : \"\";\n if (key !== hoverKey) {\n hoverKey = key;\n emitter.emit(\"hover\", hovered ? toEvent(hovered) : null);\n }\n\n const bb = store.bestBid();\n const ba = store.bestAsk();\n host.describe(\n `${options.ariaLabel ?? l.name}. ${l.bid} ${finePrice(bb)}, ${l.ask} ${finePrice(ba)}, ${l.spread} ${finePrice(ba - bb)}.`,\n );\n return animating;\n }\n\n const toEvent = (row: Row): OrderBookLevelEvent => ({\n side: row.side,\n index: row.index,\n price: row.price,\n size: row.size,\n sum: row.sum,\n notional: row.notional,\n average: row.average,\n });\n\n // ---------------------------------------------------------- interaction\n\n const onPointerMove = (event: PointerEvent) => {\n hoverAt = localPoint(root, event);\n keyRow = null;\n host.invalidate();\n };\n const onPointerLeave = () => {\n hoverAt = null;\n host.invalidate();\n };\n const onClick = (event: MouseEvent) => {\n const [x, y] = localPoint(root, event);\n const row = rows.find((r) => y >= r.y && y < r.y + rowHeight);\n if (row && x >= 0) emitter.emit(\"levelClick\", toEvent(row));\n };\n const onKeyDown = (event: KeyboardEvent) => {\n const order: { side: OrderBookSide; index: number }[] = [];\n const asks = rows.filter((r) => r.side === \"ask\");\n const bids = rows.filter((r) => r.side === \"bid\");\n for (let i = asks.length - 1; i >= 0; i--)\n order.push({ side: \"ask\", index: i });\n for (let i = 0; i < bids.length; i++) order.push({ side: \"bid\", index: i });\n if (!order.length) return;\n const current = keyRow\n ? order.findIndex(\n (o) => o.side === keyRow!.side && o.index === keyRow!.index,\n )\n : -1;\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowUp\": {\n const down = event.key === \"ArrowDown\";\n // first press: the best level on that side of the spread\n const next =\n current >= 0\n ? clamp(current + (down ? 1 : -1), 0, order.length - 1)\n : down\n ? Math.min(asks.length, order.length - 1)\n : Math.max(0, asks.length - 1);\n keyRow = order[next] ?? null;\n hoverAt = null;\n host.invalidate();\n break;\n }\n case \"Enter\":\n case \" \":\n if (hovered) emitter.emit(\"levelClick\", toEvent(hovered));\n break;\n case \"Escape\":\n keyRow = null;\n host.invalidate();\n break;\n default:\n return;\n }\n event.preventDefault();\n };\n const onBlur = () => {\n if (keyRow) {\n keyRow = null;\n host.invalidate();\n }\n };\n root.addEventListener(\"pointermove\", onPointerMove);\n root.addEventListener(\"pointerleave\", onPointerLeave);\n root.addEventListener(\"click\", onClick);\n root.addEventListener(\"keydown\", onKeyDown);\n root.addEventListener(\"blur\", onBlur);\n\n const changed = () => {\n if (!inferred && store.count(\"bid\") + store.count(\"ask\") > 0) {\n inferred = true;\n refreshFormat();\n }\n host.invalidate();\n };\n\n const instance: OrderBookInstance = {\n setBook(snapshot) {\n store.setSnapshot(snapshot);\n inferred = false;\n changed();\n },\n applyDeltas(deltas) {\n if (applyDeltas(store, deltas)) changed();\n },\n clear() {\n store.clear();\n inferred = false;\n flashes = new Map();\n drawn = false;\n host.invalidate();\n },\n setLastPrice(price) {\n lastPrice = price !== null && Number.isFinite(price) ? price : null;\n host.invalidate();\n },\n setOptions(next) {\n const regroup =\n (next.grouping ?? 0) !== (options.grouping ?? 0) ||\n next.mode !== options.mode;\n options = next;\n if (regroup) applyOptions();\n else {\n applyTexts();\n colors = sideColors(host.theme, options);\n refreshFormat();\n host.invalidate();\n }\n },\n getStore: () => store,\n on: (event, handler) => emitter.on(event, handler),\n resize() {\n host.invalidate();\n },\n destroy() {\n root.removeEventListener(\"pointermove\", onPointerMove);\n root.removeEventListener(\"pointerleave\", onPointerLeave);\n root.removeEventListener(\"click\", onClick);\n root.removeEventListener(\"keydown\", onKeyDown);\n root.removeEventListener(\"blur\", onBlur);\n emitter.clear();\n host.destroy();\n },\n };\n applyOptions();\n return instance;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=(e,t,n,r,i,a=2)=>{let[o,s]=i,c=e.map((e,t)=>({label:e,i:t})).filter(({label:e})=>Number.isFinite(e.y)).sort((e,t)=>e.label.y-t.label.y||e.i-t.i),l=t=>{let n=0;t.items.forEach((r,i)=>{n+=e[r].y-t.offsets[i]});let r=n/t.items.length;t.top=Math.max(o,Math.min(r,s-t.height))},u=[];for(let{label:e,i:t}of c){let n={items:[t],offsets:[e.h/2],height:e.h,top:e.y-e.h/2};for(l(n),u.push(n);u.length>1;){let e=u[u.length-1],t=u[u.length-2];if(t.top+t.height+a<=e.top)break;let n=t.height+a;t.items.push(...e.items),t.offsets.push(...e.offsets.map(e=>e+n)),t.height+=a+e.height,u.pop(),l(t)}}let d=e.map(()=>null);for(let e of u)e.items.forEach((t,n)=>{d[t]=e.top+e.offsets[n]});let f=(e,t,n,r)=>Math.abs(e-n)<(t+r)/2+a;t&&d.forEach((n,r)=>{n!==null&&f(n,e[r].h,t.y,t.h)&&(d[r]=null)});let p=[];return d.forEach((t,n)=>{t!==null&&p.push({y:t,h:e[n].h})}),t&&p.push(t),{pinned:d,ticks:n.map(e=>e-r/2>=o&&e+r/2<=s&&!p.some(t=>f(e,r,t.y,t.h)))}},t=(e,t,n,r,i)=>{if(!Number.isFinite(t)||!Number.isFinite(n))return e?[e[0],e[1]]:[NaN,NaN];let a=i!==void 0&&i>0?i:Math.max(r,(n-t)*1.6);if(e&&Number.isFinite(e[0])&&Number.isFinite(e[1])){let r=e[1]-e[0],o=r*.12,s=t>=e[0]+o&&n<=e[1]-o,c=i!==void 0&&i>0?Math.abs(r/i-1)<1e-6:r<=a*1.8;if(s&&c)return[e[0],e[1]]}let o=(t+n)/2;return[o-a/2,o+a/2]},n=(e,t,n,r)=>[t-(Number.isFinite(e)?Math.max(Math.min(r,n),Math.min(n,t-e)):n),t],r=e=>{if(!(e>0)||!Number.isFinite(e))return 0;let t=10**Math.floor(Math.log10(e));for(let n of[1,2,2.5,5,10])if(n*t>=e*(1-1e-9))return n*t;return 10*t};exports.fitPriceRange=t,exports.fitTimeRange=n,exports.layoutAxisLabels=e,exports.niceCeil=r;
|
|
2
|
+
//# sourceMappingURL=layout.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.cjs","names":["layoutAxisLabels","top","bottom","bounds","order","pinned","label","a","b","place","sum","block","item","k","ideal","blocks","i","last","previous","gap","shift","o","centers","overlaps","ah","bh","hover","y","shown","ticks","tickHeight","fitPriceRange","lo","hi","current","want","fixedSpan","minSpan","span","margin","inside","sized","center","fitTimeRange","right","first","window","niceCeil","value","power","m"],"sources":["../../../../../charts/src/engine/orderbook/layout.ts"],"sourcesContent":["// Pure layout helpers of the order book widgets: price-axis label collision\n// resolution and the view fitting of the liquidity heatmap.\n\n/** A label on a vertical axis: center and height, in pixels */\nexport interface AxisLabel {\n y: number;\n h: number;\n}\n\n/** Result of `layoutAxisLabels` */\nexport interface AxisLabelLayout {\n /** Centers of the pinned labels (moved apart), `null` when hidden by the hover label */\n pinned: (number | null)[];\n /** Whether each tick label stays visible */\n ticks: boolean[];\n}\n\n/**\n * Resolves the collisions of the labels of a price axis. Priority: the\n * hover label stays where it is and hides the pinned labels it covers;\n * pinned labels (best bid / ask, last trade) never overlap each other: a\n * group of overlapping ones is stacked, in order, around their desired\n * positions and kept within `bounds`; tick labels under any of them are\n * hidden.\n */\nexport const layoutAxisLabels = (\n pinned: readonly AxisLabel[],\n hover: AxisLabel | null,\n ticks: readonly number[],\n tickHeight: number,\n bounds: readonly [number, number],\n gap = 2,\n): AxisLabelLayout => {\n const [top, bottom] = bounds;\n // blocks of stacked labels, top to bottom\n interface Block {\n items: number[];\n /** Offset of each item's center from the block's top */\n offsets: number[];\n height: number;\n top: number;\n }\n const order = pinned\n .map((label, i) => ({ label, i }))\n .filter(({ label }) => Number.isFinite(label.y))\n .sort((a, b) => a.label.y - b.label.y || a.i - b.i);\n const place = (block: Block) => {\n let sum = 0;\n block.items.forEach((item, k) => {\n sum += pinned[item]!.y - block.offsets[k]!;\n });\n const ideal = sum / block.items.length;\n block.top = Math.max(top, Math.min(ideal, bottom - block.height));\n };\n const blocks: Block[] = [];\n for (const { label, i } of order) {\n const block: Block = {\n items: [i],\n offsets: [label.h / 2],\n height: label.h,\n top: label.y - label.h / 2,\n };\n place(block);\n blocks.push(block);\n // merge with the blocks above while they overlap\n while (blocks.length > 1) {\n const last = blocks[blocks.length - 1]!;\n const previous = blocks[blocks.length - 2]!;\n if (previous.top + previous.height + gap <= last.top) break;\n const shift = previous.height + gap;\n previous.items.push(...last.items);\n previous.offsets.push(...last.offsets.map((o) => o + shift));\n previous.height += gap + last.height;\n blocks.pop();\n place(previous);\n }\n }\n const centers: (number | null)[] = pinned.map(() => null);\n for (const block of blocks) {\n block.items.forEach((item, k) => {\n centers[item] = block.top + block.offsets[k]!;\n });\n }\n const overlaps = (a: number, ah: number, b: number, bh: number) =>\n Math.abs(a - b) < (ah + bh) / 2 + gap;\n if (hover) {\n centers.forEach((y, i) => {\n if (y !== null && overlaps(y, pinned[i]!.h, hover.y, hover.h))\n centers[i] = null;\n });\n }\n const shown: AxisLabel[] = [];\n centers.forEach((y, i) => {\n if (y !== null) shown.push({ y, h: pinned[i]!.h });\n });\n if (hover) shown.push(hover);\n return {\n pinned: centers,\n ticks: ticks.map(\n (y) =>\n y - tickHeight / 2 >= top &&\n y + tickHeight / 2 <= bottom &&\n !shown.some((label) => overlaps(y, tickHeight, label.y, label.h)),\n ),\n };\n};\n\n/**\n * Price range of a following heatmap view, with hysteresis: the current\n * range is kept while the traded prices (`lo` – `hi`, best bid / ask of the\n * window) stay inside its inner part and it is not much too wide; otherwise\n * a range centered on them, `minSpan` or 1.6 × their spread high. With\n * `fixedSpan` (the user zoomed the prices) only the center moves.\n */\nexport const fitPriceRange = (\n current: readonly [number, number] | null,\n lo: number,\n hi: number,\n minSpan: number,\n fixedSpan?: number,\n): [number, number] => {\n if (!Number.isFinite(lo) || !Number.isFinite(hi)) {\n return current ? [current[0], current[1]] : [NaN, NaN];\n }\n const want =\n fixedSpan !== undefined && fixedSpan > 0\n ? fixedSpan\n : Math.max(minSpan, (hi - lo) * 1.6);\n if (current && Number.isFinite(current[0]) && Number.isFinite(current[1])) {\n const span = current[1] - current[0];\n const margin = span * 0.12;\n const inside = lo >= current[0] + margin && hi <= current[1] - margin;\n const sized =\n fixedSpan !== undefined && fixedSpan > 0\n ? Math.abs(span / fixedSpan - 1) < 1e-6\n : span <= want * 1.8;\n if (inside && sized) return [current[0], current[1]];\n }\n const center = (lo + hi) / 2;\n return [center - want / 2, center + want / 2];\n};\n\n/**\n * Time range of a following heatmap view ending at `right`: `window` wide\n * once the data covers it; before that, the span of the data (at least\n * `minSpan`), so a short history fills the plot from the left.\n */\nexport const fitTimeRange = (\n first: number,\n right: number,\n window: number,\n minSpan: number,\n): [number, number] => {\n const span = Number.isFinite(first)\n ? Math.max(Math.min(minSpan, window), Math.min(window, right - first))\n : window;\n return [right - span, right];\n};\n\n/** Smallest \"nice\" number (1, 2, 2.5, 5 × 10ⁿ) at least `value` */\nexport const niceCeil = (value: number): number => {\n if (!(value > 0) || !Number.isFinite(value)) return 0;\n const power = 10 ** Math.floor(Math.log10(value));\n for (const m of [1, 2, 2.5, 5, 10]) {\n if (m * power >= value * (1 - 1e-9)) return m * power;\n }\n return 10 * power;\n};\n"],"mappings":"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"}
|