minerva-design 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +21 -21
- package/custom-elements.json +13630 -4757
- package/dist/angular/fesm2022/minerva-angular.mjs +6872 -172
- package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
- package/dist/angular/types/minerva-angular.d.ts +2240 -0
- package/dist/charts/canvas.d.cts +7 -2
- package/dist/charts/canvas.d.ts +7 -2
- package/dist/charts/core.cjs +1 -1
- package/dist/charts/core.d.cts +7 -4
- package/dist/charts/core.d.ts +7 -4
- package/dist/charts/core.js +19 -8
- package/dist/charts/engine/axis.cjs +1 -1
- package/dist/charts/engine/axis.cjs.map +1 -1
- package/dist/charts/engine/axis.js +6 -6
- 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 +118 -68
- 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 +307 -285
- 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.js +2 -2
- package/dist/charts/engine/color.js.map +1 -1
- package/dist/charts/engine/controller.cjs +1 -1
- package/dist/charts/engine/controller.cjs.map +1 -1
- package/dist/charts/engine/controller.d.cts +12 -3
- package/dist/charts/engine/controller.d.ts +12 -3
- package/dist/charts/engine/controller.js +359 -299
- 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 +6 -0
- package/dist/charts/engine/data.d.ts +6 -0
- package/dist/charts/engine/data.js +63 -49
- package/dist/charts/engine/data.js.map +1 -1
- package/dist/charts/engine/format.cjs +1 -1
- package/dist/charts/engine/format.cjs.map +1 -1
- package/dist/charts/engine/format.d.cts +21 -6
- package/dist/charts/engine/format.d.ts +21 -6
- package/dist/charts/engine/format.js +46 -21
- package/dist/charts/engine/format.js.map +1 -1
- package/dist/charts/engine/items.cjs +1 -1
- package/dist/charts/engine/items.cjs.map +1 -1
- package/dist/charts/engine/items.js +211 -54
- 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 +74 -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 +34 -2
- package/dist/charts/engine/layout.d.ts +34 -2
- package/dist/charts/engine/layout.js +53 -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 +39 -1
- package/dist/charts/engine/model.d.ts +39 -1
- package/dist/charts/engine/model.js +212 -105
- 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 +48 -0
- package/dist/charts/engine/orderbook/format.d.ts +48 -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 +703 -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/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 +735 -0
- package/dist/charts/engine/orderbook/types.d.ts +735 -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 +18 -2
- package/dist/charts/engine/overlay.d.ts +18 -2
- package/dist/charts/engine/overlay.js +132 -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 +249 -1
- package/dist/charts/engine/presets.d.ts +249 -1
- package/dist/charts/engine/presets.js +367 -29
- 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.js +18 -15
- 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 +14 -4
- package/dist/charts/engine/scene.d.ts +14 -4
- package/dist/charts/engine/scene.js +292 -163
- 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 +45 -26
- package/dist/charts/engine/shapes/chart.js.map +1 -1
- 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 +3 -1
- package/dist/charts/engine/shapes/draw.d.ts +3 -1
- package/dist/charts/engine/shapes/draw.js +31 -18
- 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 +3 -1
- package/dist/charts/engine/shapes/hit.d.ts +3 -1
- package/dist/charts/engine/shapes/hit.js +29 -8
- package/dist/charts/engine/shapes/hit.js.map +1 -1
- package/dist/charts/engine/shapes/index.d.cts +4 -1
- package/dist/charts/engine/shapes/index.d.ts +4 -1
- 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 +146 -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 +8 -3
- package/dist/charts/engine/shapes/layout.d.ts +8 -3
- package/dist/charts/engine/shapes/layout.js +200 -113
- 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 +62 -8
- package/dist/charts/engine/shapes/scene.d.ts +62 -8
- package/dist/charts/engine/shapes/scene.js +33 -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 +439 -12
- package/dist/charts/engine/shapes/types.d.ts +439 -12
- 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 +4 -0
- package/dist/charts/engine/three-d/canvas2d.d.ts +4 -0
- package/dist/charts/engine/three-d/canvas2d.js +104 -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 +11 -0
- package/dist/charts/engine/three-d/detect.d.ts +11 -0
- package/dist/charts/engine/three-d/detect.js +35 -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 +76 -0
- package/dist/charts/engine/three-d/geometry.d.ts +76 -0
- package/dist/charts/engine/three-d/geometry.js +529 -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 +130 -0
- package/dist/charts/engine/three-d/model.d.ts +130 -0
- package/dist/charts/engine/three-d/model.js +277 -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 +197 -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 +82 -0
- package/dist/charts/engine/three-d/render-types.d.ts +82 -0
- package/dist/charts/engine/three-d/render-types.js +13 -0
- package/dist/charts/engine/three-d/render-types.js.map +1 -0
- package/dist/charts/engine/three-d/shaders.cjs +276 -0
- package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
- package/dist/charts/engine/three-d/shaders.d.cts +26 -0
- package/dist/charts/engine/three-d/shaders.d.ts +26 -0
- package/dist/charts/engine/three-d/shaders.js +191 -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 +18 -0
- package/dist/charts/engine/three-d/sort.d.ts +18 -0
- package/dist/charts/engine/three-d/sort.js +71 -0
- package/dist/charts/engine/three-d/sort.js.map +1 -0
- package/dist/charts/engine/three-d/types.d.cts +588 -0
- package/dist/charts/engine/three-d/types.d.ts +588 -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 +130 -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 +249 -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 +3 -0
- package/dist/charts/engine/trading/chart.d.ts +3 -0
- package/dist/charts/engine/trading/chart.js +1507 -0
- package/dist/charts/engine/trading/chart.js.map +1 -0
- package/dist/charts/engine/trading/drawings.cjs +2 -0
- package/dist/charts/engine/trading/drawings.cjs.map +1 -0
- package/dist/charts/engine/trading/drawings.d.cts +57 -0
- package/dist/charts/engine/trading/drawings.d.ts +57 -0
- package/dist/charts/engine/trading/drawings.js +160 -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 +60 -0
- package/dist/charts/engine/trading/format.d.ts +60 -0
- package/dist/charts/engine/trading/format.js +131 -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 +3 -0
- package/dist/charts/engine/trading/index.d.ts +3 -0
- package/dist/charts/engine/trading/index.js +3 -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 +105 -0
- package/dist/charts/engine/trading/indicators.d.ts +105 -0
- package/dist/charts/engine/trading/indicators.js +268 -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 +91 -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 +62 -0
- package/dist/charts/engine/trading/store.d.ts +62 -0
- package/dist/charts/engine/trading/store.js +129 -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 +52 -0
- package/dist/charts/engine/trading/studies.d.ts +52 -0
- package/dist/charts/engine/trading/studies.js +254 -0
- package/dist/charts/engine/trading/studies.js.map +1 -0
- package/dist/charts/engine/trading/types.d.cts +656 -0
- package/dist/charts/engine/trading/types.d.ts +656 -0
- package/dist/charts/engine/types.d.cts +165 -14
- package/dist/charts/engine/types.d.ts +165 -14
- package/dist/charts/index.cjs +1 -1
- package/dist/charts/index.d.cts +7 -4
- package/dist/charts/index.d.ts +7 -4
- package/dist/charts/index.js +22 -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 +303 -131
- package/dist/charts/react/charts.js.map +1 -1
- 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 +291 -9
- package/dist/charts/react/shapes.d.ts +291 -9
- package/dist/charts/react/shapes.js +280 -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 +93 -0
- package/dist/charts/react/trading.d.ts +93 -0
- package/dist/charts/react/trading.js +95 -0
- package/dist/charts/react/trading.js.map +1 -0
- package/dist/charts/react/types.d.cts +132 -8
- package/dist/charts/react/types.d.ts +132 -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 +6 -6
- package/dist/native/charts/src/engine/axis.js.map +1 -1
- package/dist/native/charts/src/engine/controller.cjs +1 -1
- package/dist/native/charts/src/engine/controller.cjs.map +1 -1
- package/dist/native/charts/src/engine/controller.js +352 -292
- 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 +63 -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 +46 -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 +74 -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 +53 -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 +223 -116
- 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 +448 -33
- 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 +296 -167
- 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 +364 -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/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 +165 -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 +106 -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 +146 -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 +331 -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 +125 -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 +234 -217
- 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 +338 -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 +144 -0
- package/dist/native/components/Charts/types.d.ts +144 -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 +271 -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 +38 -0
- package/dist/native/components/ShapeChart/charts.d.ts +38 -0
- package/dist/native/components/ShapeChart/charts.js +387 -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 +104 -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 +602 -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 +106 -0
- package/dist/native/components/ShapeChart/recorder.d.ts +106 -0
- package/dist/native/components/ShapeChart/recorder.js +574 -0
- package/dist/native/components/ShapeChart/recorder.js.map +1 -0
- package/dist/native/components/ShapeChart/types.d.cts +509 -0
- package/dist/native/components/ShapeChart/types.d.ts +509 -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 +154 -84
- package/dist/native/source/components/Chart/types.ts +31 -1
- package/dist/native/source/components/Charts/charts.tsx +493 -0
- package/dist/native/source/components/Charts/index.ts +14 -0
- package/dist/native/source/components/Charts/types.ts +207 -0
- package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +484 -0
- package/dist/native/source/components/ShapeChart/charts.tsx +605 -0
- package/dist/native/source/components/ShapeChart/draw.tsx +170 -0
- package/dist/native/source/components/ShapeChart/geometry.ts +1185 -0
- package/dist/native/source/components/ShapeChart/index.ts +15 -0
- package/dist/native/source/components/ShapeChart/recorder.ts +830 -0
- package/dist/native/source/components/ShapeChart/types.ts +564 -0
- package/dist/native/source/index.ts +2 -0
- package/dist/native/source/manifest.ts +30 -4
- package/dist/taro/charts.d.ts +209 -4
- package/dist/taro/index.d.ts +1 -0
- package/dist/taro/index.js +7517 -1856
- package/dist/taro/manifest.d.ts +1 -0
- package/dist/taro/shape-charts.d.ts +537 -0
- package/dist/uni/AreaChart.vue +68 -0
- package/dist/uni/AreaChart.vue.d.ts +120 -0
- package/dist/uni/Badge.vue.d.ts +1 -1
- package/dist/uni/BoxPlotChart.vue +66 -0
- package/dist/uni/BoxPlotChart.vue.d.ts +102 -0
- package/dist/uni/BubbleChart.vue +68 -0
- package/dist/uni/BubbleChart.vue.d.ts +106 -0
- package/dist/uni/BulletChart.vue +86 -0
- package/dist/uni/BulletChart.vue.d.ts +110 -0
- package/dist/uni/CalendarHeatmap.vue +92 -0
- package/dist/uni/CalendarHeatmap.vue.d.ts +129 -0
- package/dist/uni/CandlestickChart.vue +66 -0
- package/dist/uni/CandlestickChart.vue.d.ts +100 -0
- package/dist/uni/DonutChart.vue +72 -0
- package/dist/uni/DonutChart.vue.d.ts +114 -0
- package/dist/uni/FunnelChart.vue +67 -0
- package/dist/uni/FunnelChart.vue.d.ts +104 -0
- package/dist/uni/GanttChart.vue +67 -0
- package/dist/uni/GanttChart.vue.d.ts +123 -0
- package/dist/uni/GaugeChart.vue +77 -0
- package/dist/uni/GaugeChart.vue.d.ts +123 -0
- package/dist/uni/HeatmapChart.vue +66 -0
- package/dist/uni/HeatmapChart.vue.d.ts +114 -0
- package/dist/uni/HistogramChart.vue +66 -0
- package/dist/uni/HistogramChart.vue.d.ts +121 -0
- package/dist/uni/HorizontalBarChart.vue +68 -0
- package/dist/uni/HorizontalBarChart.vue.d.ts +127 -0
- package/dist/uni/Input.vue.d.ts +1 -1
- package/dist/uni/MixedChart.vue +68 -0
- package/dist/uni/MixedChart.vue.d.ts +106 -0
- package/dist/uni/NumberInput.vue.d.ts +1 -1
- package/dist/uni/PieChart.vue +72 -0
- package/dist/uni/PieChart.vue.d.ts +114 -0
- package/dist/uni/RadarChart.vue +67 -0
- package/dist/uni/RadarChart.vue.d.ts +110 -0
- package/dist/uni/RadialBarChart.vue +90 -0
- package/dist/uni/RadialBarChart.vue.d.ts +132 -0
- package/dist/uni/RangeAreaChart.vue +68 -0
- package/dist/uni/RangeAreaChart.vue.d.ts +102 -0
- package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
- package/dist/uni/SankeyChart.vue +88 -0
- package/dist/uni/SankeyChart.vue.d.ts +121 -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 +77 -0
- package/dist/uni/SunburstChart.vue +90 -0
- package/dist/uni/SunburstChart.vue.d.ts +114 -0
- package/dist/uni/Textarea.vue.d.ts +1 -1
- package/dist/uni/TimePicker.vue.d.ts +1 -1
- package/dist/uni/TreemapChart.vue +65 -0
- package/dist/uni/TreemapChart.vue.d.ts +100 -0
- package/dist/uni/WaterfallChart.vue +66 -0
- package/dist/uni/WaterfallChart.vue.d.ts +125 -0
- package/dist/uni/chart-types.d.ts +216 -2
- package/dist/uni/chart-types.js +174 -0
- package/dist/uni/charts-canvas.js +8 -3
- package/dist/uni/index.d.ts +26 -1
- package/dist/uni/index.js +26 -1
- package/dist/uni/manifest.d.ts +272 -0
- package/dist/uni/manifest.js +387 -0
- package/dist/uni/named-chart-options.d.ts +88 -0
- package/dist/uni/named-chart-options.js +156 -0
- package/dist/uni/shape-chart-canvas.d.ts +51 -0
- package/dist/uni/shape-chart-canvas.js +342 -0
- package/dist/uni/shape-chart-types.d.ts +381 -0
- package/dist/uni/shape-chart-types.js +261 -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 +112 -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 +57 -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/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 +132 -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 +98 -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/HeatmapChart.vue.d.ts +125 -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 +65 -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 +128 -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 +114 -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 +160 -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 +70 -0
- package/dist/vue/components/Chart/TradingChart.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 +132 -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 +68 -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/index.d.ts +41 -0
- package/dist/vue/components/Chart/index.js +40 -0
- package/dist/vue/components/Chart/orderbook.d.ts +359 -0
- package/dist/vue/components/Chart/orderbook.js +126 -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 +105 -0
- package/dist/vue/components/Chart/trading.js +55 -0
- package/dist/vue/components/Chart/trading.js.map +1 -0
- package/dist/vue/components/Chart/types.d.ts +137 -0
- package/dist/vue/global.d.ts +38 -0
- package/dist/vue/groups/charts.d.ts +1 -0
- package/dist/vue/groups/charts.js +87 -0
- package/dist/vue/groups/charts.js.map +1 -0
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.js +63 -23
- package/dist/vue/plugin.js +12 -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 +11436 -0
- package/dist/weapp/charts/core.d.ts +2 -0
- package/dist/weapp/charts/core.js +41 -0
- package/dist/weapp/controls.js +1433 -4478
- 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 +466 -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 +252 -0
- package/dist/web-components/components/chart/charts.js +201 -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 +224 -0
- package/dist/web-components/components/chart/extended.js +183 -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 +162 -0
- package/dist/web-components/components/chart/shapes-extended.js +156 -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/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 +96 -0
- package/dist/web-components/components/trading-chart/trading-chart.js +96 -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 +43 -0
- package/dist/web-components/elements/chart.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 +1192 -29
- package/dist/web-components/types/react.d.ts +435 -0
- package/dist/web-components/types/solid.d.ts +321 -0
- package/dist/web-components/types/svelte.d.ts +321 -0
- package/dist/web-components/types/vue.d.ts +359 -0
- package/package.json +113 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { tickStep as e } from "../scale.js";
|
|
2
|
+
//#region src/engine/trading/scale.ts
|
|
3
|
+
var t = (e = "linear") => ({
|
|
4
|
+
mode: e,
|
|
5
|
+
auto: !0,
|
|
6
|
+
min: 0,
|
|
7
|
+
max: 1,
|
|
8
|
+
base: 1,
|
|
9
|
+
top: 0,
|
|
10
|
+
height: 1,
|
|
11
|
+
marginTop: .1,
|
|
12
|
+
marginBottom: .1
|
|
13
|
+
}), n = (e, t) => {
|
|
14
|
+
switch (e.mode) {
|
|
15
|
+
case "log": return t > 0 ? Math.log10(t) : NaN;
|
|
16
|
+
case "percent": return e.base ? (t / e.base - 1) * 100 : NaN;
|
|
17
|
+
default: return t;
|
|
18
|
+
}
|
|
19
|
+
}, r = (e, t) => {
|
|
20
|
+
switch (e.mode) {
|
|
21
|
+
case "log": return 10 ** t;
|
|
22
|
+
case "percent": return (t / 100 + 1) * e.base;
|
|
23
|
+
default: return t;
|
|
24
|
+
}
|
|
25
|
+
}, i = (e) => {
|
|
26
|
+
let t = e.top + e.height * e.marginTop, n = e.height * (1 - e.marginTop - e.marginBottom);
|
|
27
|
+
return {
|
|
28
|
+
top: t,
|
|
29
|
+
h: Math.max(1, n)
|
|
30
|
+
};
|
|
31
|
+
}, a = (e, t) => {
|
|
32
|
+
let { top: n, h: r } = i(e), a = e.max - e.min || 1;
|
|
33
|
+
return n + (e.max - t) / a * r;
|
|
34
|
+
}, o = (e, t) => a(e, n(e, t)), s = (e, t) => {
|
|
35
|
+
let { top: n, h: r } = i(e);
|
|
36
|
+
return e.max - (t - n) / r * (e.max - e.min || 1);
|
|
37
|
+
}, c = (e, t) => r(e, s(e, t)), l = (e, t, n) => {
|
|
38
|
+
let r = t, i = n;
|
|
39
|
+
if (!Number.isFinite(r) || !Number.isFinite(i)) {
|
|
40
|
+
(!Number.isFinite(e.min) || !Number.isFinite(e.max)) && (e.min = 0, e.max = 1);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (r > i && ([r, i] = [i, r]), i - r < 1e-12 * Math.max(1, Math.abs(r))) {
|
|
44
|
+
let t = e.mode === "log" ? .01 : Math.max(Math.abs(r) * .01, 1e-8) || 1;
|
|
45
|
+
r -= t, i += t;
|
|
46
|
+
}
|
|
47
|
+
e.min = r, e.max = i;
|
|
48
|
+
}, u = (e, t) => {
|
|
49
|
+
let n = (e.min + e.max) / 2, r = (e.max - e.min) / 2 * t;
|
|
50
|
+
r > 0 && Number.isFinite(r) && (e.min = n - r, e.max = n + r, e.auto = !1);
|
|
51
|
+
}, d = (e, t) => {
|
|
52
|
+
let { h: n } = i(e), r = t / n * (e.max - e.min);
|
|
53
|
+
e.min += r, e.max += r, e.auto = !1;
|
|
54
|
+
}, f = (e) => {
|
|
55
|
+
if (!(e > 0)) return e;
|
|
56
|
+
let t = 10 ** Math.floor(Math.log10(e)), n = e / t, r = [
|
|
57
|
+
1,
|
|
58
|
+
1.2,
|
|
59
|
+
1.5,
|
|
60
|
+
2,
|
|
61
|
+
2.5,
|
|
62
|
+
3,
|
|
63
|
+
4,
|
|
64
|
+
5,
|
|
65
|
+
6,
|
|
66
|
+
7,
|
|
67
|
+
8,
|
|
68
|
+
10
|
|
69
|
+
], i = r[0];
|
|
70
|
+
for (let e of r) Math.abs(e - n) < Math.abs(i - n) && (i = e);
|
|
71
|
+
return i * t;
|
|
72
|
+
}, p = (t, n = 36) => {
|
|
73
|
+
let { h: r } = i(t), a = (t.max - t.min) * t.height / r, o = t.max - a * (1 - t.marginTop) - 1e-12, s = t.max + a * t.marginTop + 1e-12, c = Math.max(2, Math.floor(t.height / n)), l = e(o, s, c);
|
|
74
|
+
if (!(l > 0)) return {
|
|
75
|
+
scaled: [],
|
|
76
|
+
step: 0
|
|
77
|
+
};
|
|
78
|
+
let u = [];
|
|
79
|
+
if (t.mode === "log") {
|
|
80
|
+
let e = NaN;
|
|
81
|
+
for (let r = Math.ceil(o / l) * l; r <= s; r += l) {
|
|
82
|
+
let i = f(10 ** r), c = Math.log10(i);
|
|
83
|
+
c === e || c < o || c > s || u.length && (c - u[u.length - 1]) / a * t.height < n * .5 || (u.push(c), e = c);
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
scaled: u,
|
|
87
|
+
step: l
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
let d = Math.ceil(o / l - 1e-9), p = Math.floor(s / l + 1e-9);
|
|
91
|
+
for (let e = d; e <= p && u.length < 200; e++) u.push(e * l);
|
|
92
|
+
return {
|
|
93
|
+
scaled: u,
|
|
94
|
+
step: l
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
//#endregion
|
|
98
|
+
export { t as createScale, l as fitScale, r as fromScaled, d as panScale, p as scaleTicks, s as scaledAt, n as toScaled, c as valueAt, o as yOf, a as yOfScaled, u as zoomScale };
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=scale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scale.js","names":["createScale","toScaled","scale","value","fromScaled","scaled","band","top","h","yOfScaled","span","yOf","scaledAt","y","valueAt","fitScale","a","lo","b","hi","pad","zoomScale","mid","half","factor","panScale","delta","dy","niceRound","power","m","steps","best","s","scaleTicks","extra","count","minGap","step","tickStep","previous","t","price","start","end","i"],"sources":["../../../../../charts/src/engine/trading/scale.ts"],"sourcesContent":["// Vertical scales of the panes: linear, logarithmic or percent (change from\n// a base price). Values are mapped to a \"scaled\" space (the price, its\n// log10, or the percent change) in which the scale is linear.\n\nimport { tickStep } from \"../scale\";\nimport type { TradingScaleMode } from \"./types\";\n\nexport interface PaneScale {\n mode: TradingScaleMode;\n /** Fits the visible values (off after the user zoomed the scale) */\n auto: boolean;\n /** Visible range in scaled space */\n min: number;\n max: number;\n /** Base price of the percent mode */\n base: number;\n /** Pane position in CSS pixels */\n top: number;\n height: number;\n /** Empty space above / below the values, as fractions of the height */\n marginTop: number;\n marginBottom: number;\n}\n\nexport const createScale = (mode: TradingScaleMode = \"linear\"): PaneScale => ({\n mode,\n auto: true,\n min: 0,\n max: 1,\n base: 1,\n top: 0,\n height: 1,\n marginTop: 0.1,\n marginBottom: 0.1,\n});\n\n/** Value -> scaled space (NaN when it has no place, e.g. log of <= 0) */\nexport const toScaled = (scale: PaneScale, value: number): number => {\n switch (scale.mode) {\n case \"log\":\n return value > 0 ? Math.log10(value) : NaN;\n case \"percent\":\n return scale.base ? (value / scale.base - 1) * 100 : NaN;\n default:\n return value;\n }\n};\n\nexport const fromScaled = (scale: PaneScale, scaled: number): number => {\n switch (scale.mode) {\n case \"log\":\n return 10 ** scaled;\n case \"percent\":\n return (scaled / 100 + 1) * scale.base;\n default:\n return scaled;\n }\n};\n\n/** Inner band of the pane holding the range (CSS px) */\nconst band = (scale: PaneScale) => {\n const top = scale.top + scale.height * scale.marginTop;\n const h = scale.height * (1 - scale.marginTop - scale.marginBottom);\n return { top, h: Math.max(1, h) };\n};\n\n/** CSS y of a scaled value */\nexport const yOfScaled = (scale: PaneScale, scaled: number): number => {\n const { top, h } = band(scale);\n const span = scale.max - scale.min || 1;\n return top + ((scale.max - scaled) / span) * h;\n};\n\n/** CSS y of a value */\nexport const yOf = (scale: PaneScale, value: number): number =>\n yOfScaled(scale, toScaled(scale, value));\n\n/** Scaled value at a CSS y */\nexport const scaledAt = (scale: PaneScale, y: number): number => {\n const { top, h } = band(scale);\n return scale.max - ((y - top) / h) * (scale.max - scale.min || 1);\n};\n\n/** Value at a CSS y */\nexport const valueAt = (scale: PaneScale, y: number): number =>\n fromScaled(scale, scaledAt(scale, y));\n\n/**\n * Fits the scale to a range of scaled values; a flat range gets some room\n * around it, a missing one keeps the current range\n */\nexport const fitScale = (scale: PaneScale, lo: number, hi: number): void => {\n let a = lo;\n let b = hi;\n if (!Number.isFinite(a) || !Number.isFinite(b)) {\n if (!Number.isFinite(scale.min) || !Number.isFinite(scale.max)) {\n scale.min = 0;\n scale.max = 1;\n }\n return;\n }\n if (a > b) [a, b] = [b, a];\n if (b - a < 1e-12 * Math.max(1, Math.abs(a))) {\n const pad =\n scale.mode === \"log\" ? 0.01 : Math.max(Math.abs(a) * 0.01, 1e-8) || 1;\n a -= pad;\n b += pad;\n }\n scale.min = a;\n scale.max = b;\n};\n\n/** Zooms the range around its center (factor > 1 shows more) */\nexport const zoomScale = (scale: PaneScale, factor: number): void => {\n const mid = (scale.min + scale.max) / 2;\n const half = ((scale.max - scale.min) / 2) * factor;\n if (!(half > 0) || !Number.isFinite(half)) return;\n scale.min = mid - half;\n scale.max = mid + half;\n scale.auto = false;\n};\n\n/** Moves the range by a number of CSS pixels (positive: content goes down) */\nexport const panScale = (scale: PaneScale, dy: number): void => {\n const { h } = band(scale);\n const delta = (dy / h) * (scale.max - scale.min);\n scale.min += delta;\n scale.max += delta;\n scale.auto = false;\n};\n\n/** Rounds to 2 significant digits (1, 1.5, 2, 2.5, 3, ...) for log ticks */\nconst niceRound = (value: number): number => {\n if (!(value > 0)) return value;\n const power = 10 ** Math.floor(Math.log10(value));\n const m = value / power;\n const steps = [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 7, 8, 10];\n let best = steps[0];\n for (const s of steps) if (Math.abs(s - m) < Math.abs(best - m)) best = s;\n return best * power;\n};\n\n/**\n * Ticks of the scale in scaled space, about `minGap` CSS pixels apart.\n * Log ticks are rounded prices; percent ticks are round percents.\n */\nexport const scaleTicks = (\n scale: PaneScale,\n minGap = 36,\n): { scaled: number[]; step: number } => {\n const { h } = band(scale);\n // the range covered by the whole pane, margins included\n const span = scale.max - scale.min;\n const extra = (span * scale.height) / h;\n const lo = scale.max - extra * (1 - scale.marginTop) - 1e-12;\n const hi = scale.max + extra * scale.marginTop + 1e-12;\n const count = Math.max(2, Math.floor(scale.height / minGap));\n const step = tickStep(lo, hi, count);\n if (!(step > 0)) return { scaled: [], step: 0 };\n const scaled: number[] = [];\n if (scale.mode === \"log\") {\n let previous = NaN;\n for (let t = Math.ceil(lo / step) * step; t <= hi; t += step) {\n const price = niceRound(10 ** t);\n const s = Math.log10(price);\n if (s === previous || s < lo || s > hi) continue;\n // keep the ticks at least half the gap apart once rounded\n if (\n scaled.length &&\n ((s - scaled[scaled.length - 1]) / extra) * scale.height < minGap * 0.5\n )\n continue;\n scaled.push(s);\n previous = s;\n }\n return { scaled, step };\n }\n const start = Math.ceil(lo / step - 1e-9);\n const end = Math.floor(hi / step + 1e-9);\n for (let i = start; i <= end && scaled.length < 200; i++)\n scaled.push(i * step);\n return { scaled, step };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=[`time`,`open`,`high`,`low`,`close`,`volume`],t=e=>!Array.isArray(e),n=e=>t(e)?Math.min(e.time.length,e.open.length,e.high.length,e.low.length,e.close.length):e.length,r=e=>({time:new Float64Array(e),open:new Float64Array(e),high:new Float64Array(e),low:new Float64Array(e),close:new Float64Array(e),volume:new Float64Array(e)}),i=()=>({...r(16),length:0,capacity:16,hasVolume:!1}),a=(t,n)=>{if(n<=t.capacity)return;let i=t.capacity;for(;i<n;)i*=2;let a=r(i);for(let n of e)a[n].set(t[n].subarray(0,t.length));Object.assign(t,a),t.capacity=i},o=(e,n,r,i)=>{if(t(n)){for(let t=0;t<i;t++)e.time[r+t]=n.time[t],e.open[r+t]=n.open[t],e.high[r+t]=n.high[t],e.low[r+t]=n.low[t],e.close[r+t]=n.close[t];let t=n.volume;if(t){for(let n=0;n<i;n++){let i=t[n];e.volume[r+n]=Number.isFinite(i)?i:0}e.hasVolume=!0}else e.volume.fill(0,r,r+i);return}for(let t=0;t<i;t++)s(e,r+t,n[t])},s=(e,t,n)=>{e.time[t]=n.time,e.open[t]=n.open,e.high[t]=n.high,e.low[t]=n.low,e.close[t]=n.close;let r=n.volume;r!==void 0&&Number.isFinite(r)?(e.volume[t]=r,e.hasVolume=!0):e.volume[t]=0},c=(e,t)=>{let r=n(t);e.length=0,e.hasVolume=!1,a(e,r),o(e,t,0,r),e.length=r},l=(e,t)=>{let r=n(t),i=-1;for(let n=0;n<r;n++){let r=d(e,u(t,n));r>=0&&(i<0||r<i)&&(i=r)}return i},u=(e,n)=>t(e)?{time:e.time[n],open:e.open[n],high:e.high[n],low:e.low[n],close:e.close[n],...e.volume?{volume:e.volume[n]}:{}}:e[n],d=(e,t)=>{let n=e.length;if(!Number.isFinite(t.time))return-1;if(n>0){let r=e.time[n-1];if(t.time<r)return-1;if(t.time===r)return s(e,n-1,t),n-1}return a(e,n+1),s(e,n,t),e.length=n+1,n},f=(r,i)=>{let s=n(i),c=r.length?r.time[0]:1/0,l=0,u=t(i)?i.time:null;for(;l<s&&(u?u[l]:i[l].time)<c;)l++;if(!l)return 0;let d=r.length,f={time:r.time.slice(0,d),open:r.open.slice(0,d),high:r.high.slice(0,d),low:r.low.slice(0,d),close:r.close.slice(0,d),volume:r.volume.slice(0,d)};r.length=0,a(r,d+l),o(r,i,0,l);for(let t of e)r[t].set(f[t],l);return r.length=d+l,l},p=(e,t)=>({time:e.time[t],open:e.open[t],high:e.high[t],low:e.low[t],close:e.close[t],volume:e.volume[t]}),m=(e,t,n)=>{let r=0,i=t;for(;r<i;){let t=r+i>>>1;e[t]<n?r=t+1:i=t}return r},h=(e,t,n)=>{let r=m(e,t,n);return r<t&&e[r]===n?r:Math.max(0,r-1)},g=()=>({levels:[]}),_=(t,n,i,a)=>{let o=2**a,s=Math.ceil(i/o),c=t.levels[a];if(!c||c.time.length<s){let n={...r(Math.max(16,Math.ceil(s*1.5))),size:o,valid:0};if(c){for(let t of e)n[t].set(c[t].subarray(0,c.valid));n.valid=c.valid}c=n,t.levels[a]=c}if(c.valid>=s)return c;let l=a>1?_(t,n,i,a-1):n,u=a>1?Math.ceil(i/(o/2)):i,d=Math.max(0,Math.min(c.valid,s-1));for(let e=d;e<s;e++){let t=e*2,n=t+1;c.time[e]=l.time[t],c.open[e]=l.open[t],n<u?(c.high[e]=Math.max(l.high[t],l.high[n]),c.low[e]=Math.min(l.low[t],l.low[n]),c.close[e]=l.close[n],c.volume[e]=l.volume[t]+l.volume[n]):(c.high[e]=l.high[t],c.low[e]=l.low[t],c.close[e]=l.close[t],c.volume[e]=l.volume[t])}return c.valid=i%o===0?s:s-1,c};exports.appendBars=l,exports.barAt=u,exports.createPyramid=g,exports.createStore=i,exports.indexOfTime=h,exports.inputLength=n,exports.lowerBoundTime=m,exports.prependBars=f,exports.pyramidLevel=_,exports.readBar=p,exports.setBars=c,exports.updateBar=d;
|
|
2
|
+
//# sourceMappingURL=store.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.cjs","names":["KEYS","isColumns","bars","inputLength","allocate","capacity","createStore","reserve","size","store","next","key","write","i","count","at","volume","v","writeBar","bar","setBars","n","appendBars","first","updateBar","barAt","last","prependBars","time","length","previous","readBar","columns","lowerBoundTime","lo","hi","mid","value","indexOfTime","createPyramid","pyramidLevel","k","groups","level","pyramid","prev","src","prevCount","from","g","a","b"],"sources":["../../../../../charts/src/engine/trading/store.ts"],"sourcesContent":["// Bars in growable Float64Array columns, and a pyramid of aggregated\n// levels (2, 4, 8, ... bars per group) drawn when the chart is zoomed out\n// so far that a bar is narrower than a pixel: a million bars cost the\n// same to draw as a thousand.\n\nimport type { TradingBar, TradingBarColumns, TradingBarsInput } from \"./types\";\n\n/** OHLCV columns; only the first `length` entries are meaningful */\nexport interface OhlcColumns {\n time: Float64Array;\n open: Float64Array;\n high: Float64Array;\n low: Float64Array;\n close: Float64Array;\n volume: Float64Array;\n}\n\nexport interface BarStore extends OhlcColumns {\n length: number;\n /** Size of the columns */\n capacity: number;\n /** Some bar has a volume */\n hasVolume: boolean;\n}\n\nconst KEYS = [\"time\", \"open\", \"high\", \"low\", \"close\", \"volume\"] as const;\n\nconst isColumns = (bars: TradingBarsInput): bars is TradingBarColumns =>\n !Array.isArray(bars);\n\nexport const inputLength = (bars: TradingBarsInput): number =>\n isColumns(bars)\n ? Math.min(\n bars.time.length,\n bars.open.length,\n bars.high.length,\n bars.low.length,\n bars.close.length,\n )\n : bars.length;\n\nconst allocate = (capacity: number): OhlcColumns => ({\n time: new Float64Array(capacity),\n open: new Float64Array(capacity),\n high: new Float64Array(capacity),\n low: new Float64Array(capacity),\n close: new Float64Array(capacity),\n volume: new Float64Array(capacity),\n});\n\nexport const createStore = (): BarStore => ({\n ...allocate(16),\n length: 0,\n capacity: 16,\n hasVolume: false,\n});\n\n/** Grows the columns to hold at least `size` bars (doubling) */\nconst reserve = (store: BarStore, size: number) => {\n if (size <= store.capacity) return;\n let capacity = store.capacity;\n while (capacity < size) capacity *= 2;\n const next = allocate(capacity);\n for (const key of KEYS) next[key].set(store[key].subarray(0, store.length));\n Object.assign(store, next);\n store.capacity = capacity;\n};\n\n/** Writes `count` bars of `bars` at `at` */\nconst write = (\n store: BarStore,\n bars: TradingBarsInput,\n at: number,\n count: number,\n) => {\n if (isColumns(bars)) {\n for (let i = 0; i < count; i++) {\n store.time[at + i] = bars.time[i];\n store.open[at + i] = bars.open[i];\n store.high[at + i] = bars.high[i];\n store.low[at + i] = bars.low[i];\n store.close[at + i] = bars.close[i];\n }\n const volume = bars.volume;\n if (volume) {\n for (let i = 0; i < count; i++) {\n const v = volume[i];\n store.volume[at + i] = Number.isFinite(v) ? v : 0;\n }\n store.hasVolume = true;\n } else {\n store.volume.fill(0, at, at + count);\n }\n return;\n }\n for (let i = 0; i < count; i++) writeBar(store, at + i, bars[i]);\n};\n\nconst writeBar = (store: BarStore, i: number, bar: TradingBar) => {\n store.time[i] = bar.time;\n store.open[i] = bar.open;\n store.high[i] = bar.high;\n store.low[i] = bar.low;\n store.close[i] = bar.close;\n const v = bar.volume;\n if (v !== undefined && Number.isFinite(v)) {\n store.volume[i] = v;\n store.hasVolume = true;\n } else {\n store.volume[i] = 0;\n }\n};\n\n/** Replaces every bar */\nexport const setBars = (store: BarStore, bars: TradingBarsInput): void => {\n const n = inputLength(bars);\n store.length = 0;\n store.hasVolume = false;\n reserve(store, n);\n write(store, bars, 0, n);\n store.length = n;\n};\n\n/**\n * Appends the bars newer than the last one (a bar at the time of the last\n * one replaces it). Returns the index of the first changed bar, or -1.\n */\nexport const appendBars = (store: BarStore, bars: TradingBarsInput): number => {\n const n = inputLength(bars);\n let first = -1;\n for (let i = 0; i < n; i++) {\n const at = updateBar(store, barAt(bars, i));\n if (at >= 0 && (first < 0 || at < first)) first = at;\n }\n return first;\n};\n\n/** The `i`-th bar of an input */\nexport const barAt = (bars: TradingBarsInput, i: number): TradingBar => {\n if (!isColumns(bars)) return bars[i];\n return {\n time: bars.time[i],\n open: bars.open[i],\n high: bars.high[i],\n low: bars.low[i],\n close: bars.close[i],\n ...(bars.volume ? { volume: bars.volume[i] } : {}),\n };\n};\n\n/**\n * Streams a bar: replaces the last bar at the same time, appends a newer\n * one. Returns its index; -1 (ignored) when older than the last bar.\n */\nexport const updateBar = (store: BarStore, bar: TradingBar): number => {\n const n = store.length;\n if (!Number.isFinite(bar.time)) return -1;\n if (n > 0) {\n const last = store.time[n - 1];\n if (bar.time < last) return -1;\n if (bar.time === last) {\n writeBar(store, n - 1, bar);\n return n - 1;\n }\n }\n reserve(store, n + 1);\n writeBar(store, n, bar);\n store.length = n + 1;\n return n;\n};\n\n/** Inserts the bars older than the first one; returns how many were added */\nexport const prependBars = (\n store: BarStore,\n bars: TradingBarsInput,\n): number => {\n const n = inputLength(bars);\n const first = store.length ? store.time[0] : Infinity;\n // keep only the bars strictly older than the current first bar\n let count = 0;\n const time = isColumns(bars) ? bars.time : null;\n while (\n count < n &&\n (time ? time[count] : (bars as readonly TradingBar[])[count].time) < first\n ) {\n count++;\n }\n if (!count) return 0;\n const length = store.length;\n const previous: OhlcColumns = {\n time: store.time.slice(0, length),\n open: store.open.slice(0, length),\n high: store.high.slice(0, length),\n low: store.low.slice(0, length),\n close: store.close.slice(0, length),\n volume: store.volume.slice(0, length),\n };\n store.length = 0;\n reserve(store, length + count);\n write(store, bars, 0, count);\n for (const key of KEYS) store[key].set(previous[key], count);\n store.length = length + count;\n return count;\n};\n\n/** Bar at an index as an object */\nexport const readBar = (columns: OhlcColumns, i: number): TradingBar => ({\n time: columns.time[i],\n open: columns.open[i],\n high: columns.high[i],\n low: columns.low[i],\n close: columns.close[i],\n volume: columns.volume[i],\n});\n\n/** First index whose time is >= `time` (binary search) */\nexport const lowerBoundTime = (\n time: Float64Array,\n n: number,\n value: number,\n): number => {\n let lo = 0;\n let hi = n;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (time[mid] < value) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n};\n\n/**\n * Index of the bar containing `time`: the last bar opening at or before it\n * (0 before the first bar)\n */\nexport const indexOfTime = (\n time: Float64Array,\n n: number,\n value: number,\n): number => {\n const i = lowerBoundTime(time, n, value);\n if (i < n && time[i] === value) return i;\n return Math.max(0, i - 1);\n};\n\n// ---------------------------------------------------------------- pyramid\n\n/** Bars aggregated `size` by `size`, aligned on index 0 */\nexport interface LodLevel extends OhlcColumns {\n size: number;\n /** Groups up to date */\n valid: number;\n}\n\n/** Aggregated levels, built lazily; level k groups 2^k bars */\nexport interface Pyramid {\n levels: (LodLevel | undefined)[];\n}\n\nexport const createPyramid = (): Pyramid => ({ levels: [] });\n\n/** Marks the groups containing bars from `from` on as stale */\nexport const invalidatePyramid = (pyramid: Pyramid, from: number): void => {\n for (const level of pyramid.levels) {\n if (level)\n level.valid = Math.min(level.valid, Math.floor(from / level.size));\n }\n};\n\n/**\n * Level `k` (k >= 1) of `src` (the first `n` bars), computed from level\n * k - 1 for the stale groups only\n */\nexport const pyramidLevel = (\n pyramid: Pyramid,\n src: OhlcColumns,\n n: number,\n k: number,\n): LodLevel => {\n const size = 2 ** k;\n const groups = Math.ceil(n / size);\n let level = pyramid.levels[k];\n if (!level || level.time.length < groups) {\n const capacity = Math.max(16, Math.ceil(groups * 1.5));\n const next: LodLevel = { ...allocate(capacity), size, valid: 0 };\n if (level) {\n for (const key of KEYS)\n next[key].set(level[key].subarray(0, level.valid));\n next.valid = level.valid;\n }\n level = next;\n pyramid.levels[k] = level;\n }\n if (level.valid >= groups) return level;\n // the source of level k: level k - 1 (pairs) or the bars (k = 1)\n const prev = k > 1 ? pyramidLevel(pyramid, src, n, k - 1) : src;\n const prevCount = k > 1 ? Math.ceil(n / (size / 2)) : n;\n // the last group of a level may be partial: always recompute it\n const from = Math.max(0, Math.min(level.valid, groups - 1));\n for (let g = from; g < groups; g++) {\n const a = g * 2;\n const b = a + 1;\n level.time[g] = prev.time[a];\n level.open[g] = prev.open[a];\n if (b < prevCount) {\n level.high[g] = Math.max(prev.high[a], prev.high[b]);\n level.low[g] = Math.min(prev.low[a], prev.low[b]);\n level.close[g] = prev.close[b];\n level.volume[g] = prev.volume[a] + prev.volume[b];\n } else {\n level.high[g] = prev.high[a];\n level.low[g] = prev.low[a];\n level.close[g] = prev.close[a];\n level.volume[g] = prev.volume[a];\n }\n }\n // complete groups stay valid; the partial last one is redone next time\n level.valid = n % size === 0 ? groups : groups - 1;\n return level;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { TradingBar, TradingBarsInput } from './types.cjs';
|
|
2
|
+
/** OHLCV columns; only the first `length` entries are meaningful */
|
|
3
|
+
export interface OhlcColumns {
|
|
4
|
+
time: Float64Array;
|
|
5
|
+
open: Float64Array;
|
|
6
|
+
high: Float64Array;
|
|
7
|
+
low: Float64Array;
|
|
8
|
+
close: Float64Array;
|
|
9
|
+
volume: Float64Array;
|
|
10
|
+
}
|
|
11
|
+
export interface BarStore extends OhlcColumns {
|
|
12
|
+
length: number;
|
|
13
|
+
/** Size of the columns */
|
|
14
|
+
capacity: number;
|
|
15
|
+
/** Some bar has a volume */
|
|
16
|
+
hasVolume: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare const inputLength: (bars: TradingBarsInput) => number;
|
|
19
|
+
export declare const createStore: () => BarStore;
|
|
20
|
+
/** Replaces every bar */
|
|
21
|
+
export declare const setBars: (store: BarStore, bars: TradingBarsInput) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Appends the bars newer than the last one (a bar at the time of the last
|
|
24
|
+
* one replaces it). Returns the index of the first changed bar, or -1.
|
|
25
|
+
*/
|
|
26
|
+
export declare const appendBars: (store: BarStore, bars: TradingBarsInput) => number;
|
|
27
|
+
/** The `i`-th bar of an input */
|
|
28
|
+
export declare const barAt: (bars: TradingBarsInput, i: number) => TradingBar;
|
|
29
|
+
/**
|
|
30
|
+
* Streams a bar: replaces the last bar at the same time, appends a newer
|
|
31
|
+
* one. Returns its index; -1 (ignored) when older than the last bar.
|
|
32
|
+
*/
|
|
33
|
+
export declare const updateBar: (store: BarStore, bar: TradingBar) => number;
|
|
34
|
+
/** Inserts the bars older than the first one; returns how many were added */
|
|
35
|
+
export declare const prependBars: (store: BarStore, bars: TradingBarsInput) => number;
|
|
36
|
+
/** Bar at an index as an object */
|
|
37
|
+
export declare const readBar: (columns: OhlcColumns, i: number) => TradingBar;
|
|
38
|
+
/** First index whose time is >= `time` (binary search) */
|
|
39
|
+
export declare const lowerBoundTime: (time: Float64Array, n: number, value: number) => number;
|
|
40
|
+
/**
|
|
41
|
+
* Index of the bar containing `time`: the last bar opening at or before it
|
|
42
|
+
* (0 before the first bar)
|
|
43
|
+
*/
|
|
44
|
+
export declare const indexOfTime: (time: Float64Array, n: number, value: number) => number;
|
|
45
|
+
/** Bars aggregated `size` by `size`, aligned on index 0 */
|
|
46
|
+
export interface LodLevel extends OhlcColumns {
|
|
47
|
+
size: number;
|
|
48
|
+
/** Groups up to date */
|
|
49
|
+
valid: number;
|
|
50
|
+
}
|
|
51
|
+
/** Aggregated levels, built lazily; level k groups 2^k bars */
|
|
52
|
+
export interface Pyramid {
|
|
53
|
+
levels: (LodLevel | undefined)[];
|
|
54
|
+
}
|
|
55
|
+
export declare const createPyramid: () => Pyramid;
|
|
56
|
+
/** Marks the groups containing bars from `from` on as stale */
|
|
57
|
+
export declare const invalidatePyramid: (pyramid: Pyramid, from: number) => void;
|
|
58
|
+
/**
|
|
59
|
+
* Level `k` (k >= 1) of `src` (the first `n` bars), computed from level
|
|
60
|
+
* k - 1 for the stale groups only
|
|
61
|
+
*/
|
|
62
|
+
export declare const pyramidLevel: (pyramid: Pyramid, src: OhlcColumns, n: number, k: number) => LodLevel;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { TradingBar, TradingBarsInput } from './types.js';
|
|
2
|
+
/** OHLCV columns; only the first `length` entries are meaningful */
|
|
3
|
+
export interface OhlcColumns {
|
|
4
|
+
time: Float64Array;
|
|
5
|
+
open: Float64Array;
|
|
6
|
+
high: Float64Array;
|
|
7
|
+
low: Float64Array;
|
|
8
|
+
close: Float64Array;
|
|
9
|
+
volume: Float64Array;
|
|
10
|
+
}
|
|
11
|
+
export interface BarStore extends OhlcColumns {
|
|
12
|
+
length: number;
|
|
13
|
+
/** Size of the columns */
|
|
14
|
+
capacity: number;
|
|
15
|
+
/** Some bar has a volume */
|
|
16
|
+
hasVolume: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare const inputLength: (bars: TradingBarsInput) => number;
|
|
19
|
+
export declare const createStore: () => BarStore;
|
|
20
|
+
/** Replaces every bar */
|
|
21
|
+
export declare const setBars: (store: BarStore, bars: TradingBarsInput) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Appends the bars newer than the last one (a bar at the time of the last
|
|
24
|
+
* one replaces it). Returns the index of the first changed bar, or -1.
|
|
25
|
+
*/
|
|
26
|
+
export declare const appendBars: (store: BarStore, bars: TradingBarsInput) => number;
|
|
27
|
+
/** The `i`-th bar of an input */
|
|
28
|
+
export declare const barAt: (bars: TradingBarsInput, i: number) => TradingBar;
|
|
29
|
+
/**
|
|
30
|
+
* Streams a bar: replaces the last bar at the same time, appends a newer
|
|
31
|
+
* one. Returns its index; -1 (ignored) when older than the last bar.
|
|
32
|
+
*/
|
|
33
|
+
export declare const updateBar: (store: BarStore, bar: TradingBar) => number;
|
|
34
|
+
/** Inserts the bars older than the first one; returns how many were added */
|
|
35
|
+
export declare const prependBars: (store: BarStore, bars: TradingBarsInput) => number;
|
|
36
|
+
/** Bar at an index as an object */
|
|
37
|
+
export declare const readBar: (columns: OhlcColumns, i: number) => TradingBar;
|
|
38
|
+
/** First index whose time is >= `time` (binary search) */
|
|
39
|
+
export declare const lowerBoundTime: (time: Float64Array, n: number, value: number) => number;
|
|
40
|
+
/**
|
|
41
|
+
* Index of the bar containing `time`: the last bar opening at or before it
|
|
42
|
+
* (0 before the first bar)
|
|
43
|
+
*/
|
|
44
|
+
export declare const indexOfTime: (time: Float64Array, n: number, value: number) => number;
|
|
45
|
+
/** Bars aggregated `size` by `size`, aligned on index 0 */
|
|
46
|
+
export interface LodLevel extends OhlcColumns {
|
|
47
|
+
size: number;
|
|
48
|
+
/** Groups up to date */
|
|
49
|
+
valid: number;
|
|
50
|
+
}
|
|
51
|
+
/** Aggregated levels, built lazily; level k groups 2^k bars */
|
|
52
|
+
export interface Pyramid {
|
|
53
|
+
levels: (LodLevel | undefined)[];
|
|
54
|
+
}
|
|
55
|
+
export declare const createPyramid: () => Pyramid;
|
|
56
|
+
/** Marks the groups containing bars from `from` on as stale */
|
|
57
|
+
export declare const invalidatePyramid: (pyramid: Pyramid, from: number) => void;
|
|
58
|
+
/**
|
|
59
|
+
* Level `k` (k >= 1) of `src` (the first `n` bars), computed from level
|
|
60
|
+
* k - 1 for the stale groups only
|
|
61
|
+
*/
|
|
62
|
+
export declare const pyramidLevel: (pyramid: Pyramid, src: OhlcColumns, n: number, k: number) => LodLevel;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
//#region src/engine/trading/store.ts
|
|
2
|
+
var e = [
|
|
3
|
+
"time",
|
|
4
|
+
"open",
|
|
5
|
+
"high",
|
|
6
|
+
"low",
|
|
7
|
+
"close",
|
|
8
|
+
"volume"
|
|
9
|
+
], t = (e) => !Array.isArray(e), n = (e) => t(e) ? Math.min(e.time.length, e.open.length, e.high.length, e.low.length, e.close.length) : e.length, r = (e) => ({
|
|
10
|
+
time: new Float64Array(e),
|
|
11
|
+
open: new Float64Array(e),
|
|
12
|
+
high: new Float64Array(e),
|
|
13
|
+
low: new Float64Array(e),
|
|
14
|
+
close: new Float64Array(e),
|
|
15
|
+
volume: new Float64Array(e)
|
|
16
|
+
}), i = () => ({
|
|
17
|
+
...r(16),
|
|
18
|
+
length: 0,
|
|
19
|
+
capacity: 16,
|
|
20
|
+
hasVolume: !1
|
|
21
|
+
}), a = (t, n) => {
|
|
22
|
+
if (n <= t.capacity) return;
|
|
23
|
+
let i = t.capacity;
|
|
24
|
+
for (; i < n;) i *= 2;
|
|
25
|
+
let a = r(i);
|
|
26
|
+
for (let n of e) a[n].set(t[n].subarray(0, t.length));
|
|
27
|
+
Object.assign(t, a), t.capacity = i;
|
|
28
|
+
}, o = (e, n, r, i) => {
|
|
29
|
+
if (t(n)) {
|
|
30
|
+
for (let t = 0; t < i; t++) e.time[r + t] = n.time[t], e.open[r + t] = n.open[t], e.high[r + t] = n.high[t], e.low[r + t] = n.low[t], e.close[r + t] = n.close[t];
|
|
31
|
+
let t = n.volume;
|
|
32
|
+
if (t) {
|
|
33
|
+
for (let n = 0; n < i; n++) {
|
|
34
|
+
let i = t[n];
|
|
35
|
+
e.volume[r + n] = Number.isFinite(i) ? i : 0;
|
|
36
|
+
}
|
|
37
|
+
e.hasVolume = !0;
|
|
38
|
+
} else e.volume.fill(0, r, r + i);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
for (let t = 0; t < i; t++) s(e, r + t, n[t]);
|
|
42
|
+
}, s = (e, t, n) => {
|
|
43
|
+
e.time[t] = n.time, e.open[t] = n.open, e.high[t] = n.high, e.low[t] = n.low, e.close[t] = n.close;
|
|
44
|
+
let r = n.volume;
|
|
45
|
+
r !== void 0 && Number.isFinite(r) ? (e.volume[t] = r, e.hasVolume = !0) : e.volume[t] = 0;
|
|
46
|
+
}, c = (e, t) => {
|
|
47
|
+
let r = n(t);
|
|
48
|
+
e.length = 0, e.hasVolume = !1, a(e, r), o(e, t, 0, r), e.length = r;
|
|
49
|
+
}, l = (e, t) => {
|
|
50
|
+
let r = n(t), i = -1;
|
|
51
|
+
for (let n = 0; n < r; n++) {
|
|
52
|
+
let r = d(e, u(t, n));
|
|
53
|
+
r >= 0 && (i < 0 || r < i) && (i = r);
|
|
54
|
+
}
|
|
55
|
+
return i;
|
|
56
|
+
}, u = (e, n) => t(e) ? {
|
|
57
|
+
time: e.time[n],
|
|
58
|
+
open: e.open[n],
|
|
59
|
+
high: e.high[n],
|
|
60
|
+
low: e.low[n],
|
|
61
|
+
close: e.close[n],
|
|
62
|
+
...e.volume ? { volume: e.volume[n] } : {}
|
|
63
|
+
} : e[n], d = (e, t) => {
|
|
64
|
+
let n = e.length;
|
|
65
|
+
if (!Number.isFinite(t.time)) return -1;
|
|
66
|
+
if (n > 0) {
|
|
67
|
+
let r = e.time[n - 1];
|
|
68
|
+
if (t.time < r) return -1;
|
|
69
|
+
if (t.time === r) return s(e, n - 1, t), n - 1;
|
|
70
|
+
}
|
|
71
|
+
return a(e, n + 1), s(e, n, t), e.length = n + 1, n;
|
|
72
|
+
}, f = (r, i) => {
|
|
73
|
+
let s = n(i), c = r.length ? r.time[0] : Infinity, l = 0, u = t(i) ? i.time : null;
|
|
74
|
+
for (; l < s && (u ? u[l] : i[l].time) < c;) l++;
|
|
75
|
+
if (!l) return 0;
|
|
76
|
+
let d = r.length, f = {
|
|
77
|
+
time: r.time.slice(0, d),
|
|
78
|
+
open: r.open.slice(0, d),
|
|
79
|
+
high: r.high.slice(0, d),
|
|
80
|
+
low: r.low.slice(0, d),
|
|
81
|
+
close: r.close.slice(0, d),
|
|
82
|
+
volume: r.volume.slice(0, d)
|
|
83
|
+
};
|
|
84
|
+
r.length = 0, a(r, d + l), o(r, i, 0, l);
|
|
85
|
+
for (let t of e) r[t].set(f[t], l);
|
|
86
|
+
return r.length = d + l, l;
|
|
87
|
+
}, p = (e, t) => ({
|
|
88
|
+
time: e.time[t],
|
|
89
|
+
open: e.open[t],
|
|
90
|
+
high: e.high[t],
|
|
91
|
+
low: e.low[t],
|
|
92
|
+
close: e.close[t],
|
|
93
|
+
volume: e.volume[t]
|
|
94
|
+
}), m = (e, t, n) => {
|
|
95
|
+
let r = 0, i = t;
|
|
96
|
+
for (; r < i;) {
|
|
97
|
+
let t = r + i >>> 1;
|
|
98
|
+
e[t] < n ? r = t + 1 : i = t;
|
|
99
|
+
}
|
|
100
|
+
return r;
|
|
101
|
+
}, h = (e, t, n) => {
|
|
102
|
+
let r = m(e, t, n);
|
|
103
|
+
return r < t && e[r] === n ? r : Math.max(0, r - 1);
|
|
104
|
+
}, g = () => ({ levels: [] }), _ = (t, n, i, a) => {
|
|
105
|
+
let o = 2 ** a, s = Math.ceil(i / o), c = t.levels[a];
|
|
106
|
+
if (!c || c.time.length < s) {
|
|
107
|
+
let n = {
|
|
108
|
+
...r(Math.max(16, Math.ceil(s * 1.5))),
|
|
109
|
+
size: o,
|
|
110
|
+
valid: 0
|
|
111
|
+
};
|
|
112
|
+
if (c) {
|
|
113
|
+
for (let t of e) n[t].set(c[t].subarray(0, c.valid));
|
|
114
|
+
n.valid = c.valid;
|
|
115
|
+
}
|
|
116
|
+
c = n, t.levels[a] = c;
|
|
117
|
+
}
|
|
118
|
+
if (c.valid >= s) return c;
|
|
119
|
+
let l = a > 1 ? _(t, n, i, a - 1) : n, u = a > 1 ? Math.ceil(i / (o / 2)) : i, d = Math.max(0, Math.min(c.valid, s - 1));
|
|
120
|
+
for (let e = d; e < s; e++) {
|
|
121
|
+
let t = e * 2, n = t + 1;
|
|
122
|
+
c.time[e] = l.time[t], c.open[e] = l.open[t], n < u ? (c.high[e] = Math.max(l.high[t], l.high[n]), c.low[e] = Math.min(l.low[t], l.low[n]), c.close[e] = l.close[n], c.volume[e] = l.volume[t] + l.volume[n]) : (c.high[e] = l.high[t], c.low[e] = l.low[t], c.close[e] = l.close[t], c.volume[e] = l.volume[t]);
|
|
123
|
+
}
|
|
124
|
+
return c.valid = i % o === 0 ? s : s - 1, c;
|
|
125
|
+
};
|
|
126
|
+
//#endregion
|
|
127
|
+
export { l as appendBars, u as barAt, g as createPyramid, i as createStore, h as indexOfTime, n as inputLength, m as lowerBoundTime, f as prependBars, _ as pyramidLevel, p as readBar, c as setBars, d as updateBar };
|
|
128
|
+
|
|
129
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","names":["KEYS","isColumns","bars","inputLength","allocate","capacity","createStore","reserve","size","store","next","key","write","i","count","at","volume","v","writeBar","bar","setBars","n","appendBars","first","updateBar","barAt","last","prependBars","time","length","previous","readBar","columns","lowerBoundTime","lo","hi","mid","value","indexOfTime","createPyramid","pyramidLevel","k","groups","level","pyramid","prev","src","prevCount","from","g","a","b"],"sources":["../../../../../charts/src/engine/trading/store.ts"],"sourcesContent":["// Bars in growable Float64Array columns, and a pyramid of aggregated\n// levels (2, 4, 8, ... bars per group) drawn when the chart is zoomed out\n// so far that a bar is narrower than a pixel: a million bars cost the\n// same to draw as a thousand.\n\nimport type { TradingBar, TradingBarColumns, TradingBarsInput } from \"./types\";\n\n/** OHLCV columns; only the first `length` entries are meaningful */\nexport interface OhlcColumns {\n time: Float64Array;\n open: Float64Array;\n high: Float64Array;\n low: Float64Array;\n close: Float64Array;\n volume: Float64Array;\n}\n\nexport interface BarStore extends OhlcColumns {\n length: number;\n /** Size of the columns */\n capacity: number;\n /** Some bar has a volume */\n hasVolume: boolean;\n}\n\nconst KEYS = [\"time\", \"open\", \"high\", \"low\", \"close\", \"volume\"] as const;\n\nconst isColumns = (bars: TradingBarsInput): bars is TradingBarColumns =>\n !Array.isArray(bars);\n\nexport const inputLength = (bars: TradingBarsInput): number =>\n isColumns(bars)\n ? Math.min(\n bars.time.length,\n bars.open.length,\n bars.high.length,\n bars.low.length,\n bars.close.length,\n )\n : bars.length;\n\nconst allocate = (capacity: number): OhlcColumns => ({\n time: new Float64Array(capacity),\n open: new Float64Array(capacity),\n high: new Float64Array(capacity),\n low: new Float64Array(capacity),\n close: new Float64Array(capacity),\n volume: new Float64Array(capacity),\n});\n\nexport const createStore = (): BarStore => ({\n ...allocate(16),\n length: 0,\n capacity: 16,\n hasVolume: false,\n});\n\n/** Grows the columns to hold at least `size` bars (doubling) */\nconst reserve = (store: BarStore, size: number) => {\n if (size <= store.capacity) return;\n let capacity = store.capacity;\n while (capacity < size) capacity *= 2;\n const next = allocate(capacity);\n for (const key of KEYS) next[key].set(store[key].subarray(0, store.length));\n Object.assign(store, next);\n store.capacity = capacity;\n};\n\n/** Writes `count` bars of `bars` at `at` */\nconst write = (\n store: BarStore,\n bars: TradingBarsInput,\n at: number,\n count: number,\n) => {\n if (isColumns(bars)) {\n for (let i = 0; i < count; i++) {\n store.time[at + i] = bars.time[i];\n store.open[at + i] = bars.open[i];\n store.high[at + i] = bars.high[i];\n store.low[at + i] = bars.low[i];\n store.close[at + i] = bars.close[i];\n }\n const volume = bars.volume;\n if (volume) {\n for (let i = 0; i < count; i++) {\n const v = volume[i];\n store.volume[at + i] = Number.isFinite(v) ? v : 0;\n }\n store.hasVolume = true;\n } else {\n store.volume.fill(0, at, at + count);\n }\n return;\n }\n for (let i = 0; i < count; i++) writeBar(store, at + i, bars[i]);\n};\n\nconst writeBar = (store: BarStore, i: number, bar: TradingBar) => {\n store.time[i] = bar.time;\n store.open[i] = bar.open;\n store.high[i] = bar.high;\n store.low[i] = bar.low;\n store.close[i] = bar.close;\n const v = bar.volume;\n if (v !== undefined && Number.isFinite(v)) {\n store.volume[i] = v;\n store.hasVolume = true;\n } else {\n store.volume[i] = 0;\n }\n};\n\n/** Replaces every bar */\nexport const setBars = (store: BarStore, bars: TradingBarsInput): void => {\n const n = inputLength(bars);\n store.length = 0;\n store.hasVolume = false;\n reserve(store, n);\n write(store, bars, 0, n);\n store.length = n;\n};\n\n/**\n * Appends the bars newer than the last one (a bar at the time of the last\n * one replaces it). Returns the index of the first changed bar, or -1.\n */\nexport const appendBars = (store: BarStore, bars: TradingBarsInput): number => {\n const n = inputLength(bars);\n let first = -1;\n for (let i = 0; i < n; i++) {\n const at = updateBar(store, barAt(bars, i));\n if (at >= 0 && (first < 0 || at < first)) first = at;\n }\n return first;\n};\n\n/** The `i`-th bar of an input */\nexport const barAt = (bars: TradingBarsInput, i: number): TradingBar => {\n if (!isColumns(bars)) return bars[i];\n return {\n time: bars.time[i],\n open: bars.open[i],\n high: bars.high[i],\n low: bars.low[i],\n close: bars.close[i],\n ...(bars.volume ? { volume: bars.volume[i] } : {}),\n };\n};\n\n/**\n * Streams a bar: replaces the last bar at the same time, appends a newer\n * one. Returns its index; -1 (ignored) when older than the last bar.\n */\nexport const updateBar = (store: BarStore, bar: TradingBar): number => {\n const n = store.length;\n if (!Number.isFinite(bar.time)) return -1;\n if (n > 0) {\n const last = store.time[n - 1];\n if (bar.time < last) return -1;\n if (bar.time === last) {\n writeBar(store, n - 1, bar);\n return n - 1;\n }\n }\n reserve(store, n + 1);\n writeBar(store, n, bar);\n store.length = n + 1;\n return n;\n};\n\n/** Inserts the bars older than the first one; returns how many were added */\nexport const prependBars = (\n store: BarStore,\n bars: TradingBarsInput,\n): number => {\n const n = inputLength(bars);\n const first = store.length ? store.time[0] : Infinity;\n // keep only the bars strictly older than the current first bar\n let count = 0;\n const time = isColumns(bars) ? bars.time : null;\n while (\n count < n &&\n (time ? time[count] : (bars as readonly TradingBar[])[count].time) < first\n ) {\n count++;\n }\n if (!count) return 0;\n const length = store.length;\n const previous: OhlcColumns = {\n time: store.time.slice(0, length),\n open: store.open.slice(0, length),\n high: store.high.slice(0, length),\n low: store.low.slice(0, length),\n close: store.close.slice(0, length),\n volume: store.volume.slice(0, length),\n };\n store.length = 0;\n reserve(store, length + count);\n write(store, bars, 0, count);\n for (const key of KEYS) store[key].set(previous[key], count);\n store.length = length + count;\n return count;\n};\n\n/** Bar at an index as an object */\nexport const readBar = (columns: OhlcColumns, i: number): TradingBar => ({\n time: columns.time[i],\n open: columns.open[i],\n high: columns.high[i],\n low: columns.low[i],\n close: columns.close[i],\n volume: columns.volume[i],\n});\n\n/** First index whose time is >= `time` (binary search) */\nexport const lowerBoundTime = (\n time: Float64Array,\n n: number,\n value: number,\n): number => {\n let lo = 0;\n let hi = n;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (time[mid] < value) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n};\n\n/**\n * Index of the bar containing `time`: the last bar opening at or before it\n * (0 before the first bar)\n */\nexport const indexOfTime = (\n time: Float64Array,\n n: number,\n value: number,\n): number => {\n const i = lowerBoundTime(time, n, value);\n if (i < n && time[i] === value) return i;\n return Math.max(0, i - 1);\n};\n\n// ---------------------------------------------------------------- pyramid\n\n/** Bars aggregated `size` by `size`, aligned on index 0 */\nexport interface LodLevel extends OhlcColumns {\n size: number;\n /** Groups up to date */\n valid: number;\n}\n\n/** Aggregated levels, built lazily; level k groups 2^k bars */\nexport interface Pyramid {\n levels: (LodLevel | undefined)[];\n}\n\nexport const createPyramid = (): Pyramid => ({ levels: [] });\n\n/** Marks the groups containing bars from `from` on as stale */\nexport const invalidatePyramid = (pyramid: Pyramid, from: number): void => {\n for (const level of pyramid.levels) {\n if (level)\n level.valid = Math.min(level.valid, Math.floor(from / level.size));\n }\n};\n\n/**\n * Level `k` (k >= 1) of `src` (the first `n` bars), computed from level\n * k - 1 for the stale groups only\n */\nexport const pyramidLevel = (\n pyramid: Pyramid,\n src: OhlcColumns,\n n: number,\n k: number,\n): LodLevel => {\n const size = 2 ** k;\n const groups = Math.ceil(n / size);\n let level = pyramid.levels[k];\n if (!level || level.time.length < groups) {\n const capacity = Math.max(16, Math.ceil(groups * 1.5));\n const next: LodLevel = { ...allocate(capacity), size, valid: 0 };\n if (level) {\n for (const key of KEYS)\n next[key].set(level[key].subarray(0, level.valid));\n next.valid = level.valid;\n }\n level = next;\n pyramid.levels[k] = level;\n }\n if (level.valid >= groups) return level;\n // the source of level k: level k - 1 (pairs) or the bars (k = 1)\n const prev = k > 1 ? pyramidLevel(pyramid, src, n, k - 1) : src;\n const prevCount = k > 1 ? Math.ceil(n / (size / 2)) : n;\n // the last group of a level may be partial: always recompute it\n const from = Math.max(0, Math.min(level.valid, groups - 1));\n for (let g = from; g < groups; g++) {\n const a = g * 2;\n const b = a + 1;\n level.time[g] = prev.time[a];\n level.open[g] = prev.open[a];\n if (b < prevCount) {\n level.high[g] = Math.max(prev.high[a], prev.high[b]);\n level.low[g] = Math.min(prev.low[a], prev.low[b]);\n level.close[g] = prev.close[b];\n level.volume[g] = prev.volume[a] + prev.volume[b];\n } else {\n level.high[g] = prev.high[a];\n level.low[g] = prev.low[a];\n level.close[g] = prev.close[a];\n level.volume[g] = prev.volume[a];\n }\n }\n // complete groups stay valid; the partial last one is redone next time\n level.valid = n % size === 0 ? groups : groups - 1;\n return level;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./indicators.cjs");var t=[`#f59e0b`,`#a855f7`,`#0ea5e9`,`#ec4899`,`#14b8a6`,`#6366f1`,`#84cc16`],n=`#a855f7`,r=`#0ea5e9`,i=`#f59e0b`,a=e=>{switch(e.type){case`ma`:case`ema`:case`wma`:return`${e.type}:${e.period}${e.source&&e.source!==`close`?`:${e.source}`:``}`;case`boll`:return`boll:${e.period??20}:${e.multiplier??2}`;case`vwap`:return`vwap:${e.reset??`day`}`;case`volume`:return`volume`;case`macd`:return`macd:${e.fast??12}:${e.slow??26}:${e.signal??9}`;case`rsi`:return`rsi:${e.period??14}`;case`kdj`:return`kdj:${e.period??9}:${e.kPeriod??3}:${e.dPeriod??3}`;default:return`atr:${e.period??14}`}},o=(e,t,n,r)=>{let{open:i,high:a,low:o,close:s}=e;for(let c=r;c<e.length;c++)switch(t){case`open`:n[c]=i[c];break;case`high`:n[c]=a[c];break;case`low`:n[c]=o[c];break;case`hl2`:n[c]=(a[c]+o[c])/2;break;case`hlc3`:n[c]=(a[c]+o[c]+s[c])/3;break;case`ohlc4`:n[c]=(i[c]+a[c]+o[c]+s[c])/4;break;default:n[c]=s[c]}},s=()=>{let e=new Map;return(t,n)=>{let r=e.get(t);if(r&&r.length>=n)return r;let i=new Float64Array(n).fill(NaN);return r&&i.set(r),e.set(t,i),i}},c=(e,t,n=`line`,r=1.5)=>({label:e,values:new Float64Array,color:t,kind:n,width:r}),l=(a,l,u,d)=>{let f=s(),p=`height`in a&&a.height?a.height:110,m={id:l,type:a.type,config:a,height:p,compact:!1},h=(e,t,n)=>{e.outputs.forEach((e,r)=>{e.values=f(n[r]??`out${r}`,t.capacity)})};switch(a.type){case`ma`:case`ema`:case`wma`:{let n=Math.max(1,Math.floor(a.period)||1),r=a.source??`close`,i=`${a.type.toUpperCase()}${n}`,s=a.type===`ma`?e.smaInto:a.type===`ema`?e.emaInto:e.wmaInto,l={...m,overlay:!0,title:i,outputs:[c(i,a.color??t[u%t.length],`line`,a.lineWidth??1.5)],compute(e,t){h(l,e,[`value`]);let i=e.close;r!==`close`&&(i=f(`src`,e.capacity),o(e,r,i,t)),s(i,e.length,n,l.outputs[0].values,t)}};return l}case`boll`:{let t=a.period??20,n=a.multiplier??2,[o,s,l]=a.colors??[i,r,r],u={...m,overlay:!0,title:`BOLL ${t} ${n}`,outputs:[c(`MID`,o??i,`line`,1.25),c(`UB`,s??r,`line`,1.25),c(`LB`,l??s??r,`line`,1.25)],...a.fill===!1?{}:{fill:[1,2]},compute(r,i){h(u,r,[`mid`,`up`,`low`]);let a=f(`dev`,r.capacity),[o,s,c]=u.outputs.map(e=>e.values);e.smaInto(r.close,r.length,t,o,i),e.stdevInto(r.close,r.length,t,a,i);for(let e=i;e<r.length;e++)s[e]=o[e]+n*a[e],c[e]=o[e]-n*a[e]}};return u}case`vwap`:{let t=a.reset??`day`,n={...m,overlay:!0,title:`VWAP`,outputs:[c(`VWAP`,a.color??`#ec4899`,`line`,1.5)],compute(r,i){h(n,r,[`value`]),e.vwapInto(r.high,r.low,r.close,r.volume,r.time,r.length,t,d,n.outputs[0].values,f(`pv`,r.capacity),f(`vol`,r.capacity),i)}};return n}case`volume`:{let t=a.maPeriod,n=[c(`VOL`,``,`volume`)];t&&n.push(c(`MA${t}`,r,`line`,1.25));let i={...m,overlay:!!a.overlay,compact:!0,title:`VOL`,outputs:n,compute(n,r){h(i,n,[`vol`,`ma`]);let a=i.outputs[0].values;a.set(n.volume.subarray(r,n.length),r),t&&e.smaInto(a,n.length,t,i.outputs[1].values,r)}};return i}case`macd`:{let t=a.fast??12,n=a.slow??26,o=a.signal??9,[s,l]=a.colors??[r,i],u={...m,overlay:!1,title:`MACD ${t} ${n} ${o}`,bands:[0],outputs:[c(`MACD`,``,`histogram`),c(`DIF`,s??r,`line`,1.25),c(`DEA`,l??i,`line`,1.25)],compute(r,i){h(u,r,[`hist`,`dif`,`dea`]);let a=r.length,s=f(`fast`,r.capacity),c=f(`slow`,r.capacity),[l,d,p]=u.outputs.map(e=>e.values);e.emaInto(r.close,a,t,s,i),e.emaInto(r.close,a,n,c,i);for(let e=i;e<a;e++)d[e]=s[e]-c[e];e.emaInto(d,a,o,p,i);for(let e=i;e<a;e++)l[e]=d[e]-p[e]}};return u}case`rsi`:{let t=a.period??14,r={...m,overlay:!1,title:`RSI ${t}`,range:[0,100],bands:[a.oversold??30,a.overbought??70],outputs:[c(`RSI${t}`,a.color??n,`line`,1.5)],compute(n,i){h(r,n,[`value`]),e.rsiInto(n.close,n.length,t,r.outputs[0].values,f(`gain`,n.capacity),f(`loss`,n.capacity),i)}};return r}case`kdj`:{let t=a.period??9,o=a.kPeriod??3,s=a.dPeriod??3,[l,u,d]=a.colors??[i,r,n],f={...m,overlay:!1,title:`KDJ ${t} ${o} ${s}`,bands:[20,80],outputs:[c(`K`,l??i,`line`,1.25),c(`D`,u??r,`line`,1.25),c(`J`,d??n,`line`,1.25)],compute(n,r){h(f,n,[`k`,`d`,`j`]);let[i,a,c]=f.outputs.map(e=>e.values);e.kdjInto(n.high,n.low,n.close,n.length,t,o,s,i,a,c,r)}};return f}default:{let t=a.period??14,n={...m,overlay:!1,title:`ATR ${t}`,outputs:[c(`ATR${t}`,a.color??r,`line`,1.5)],compute(r,i){h(n,r,[`value`]);let a=f(`tr`,r.capacity);e.trueRangeInto(r.high,r.low,r.close,r.length,a,i),e.rmaInto(a,r.length,t,n.outputs[0].values,i)}};return n}}},u=(e,t,n)=>{let r=new Set,i=new Set,o=0;return{studies:e.map(e=>{let s=e.id??a(e);for(let t=2;r.has(s);t++)s=`${e.id??a(e)}#${t}`;r.add(s);let c=e.type===`ma`||e.type===`ema`||e.type===`wma`?o++:0,u=t.find(e=>e.id===s);return u&&d(u.config,e)?(u.config=e,i.add(u),u):l(e,s,c,n)}),reused:i}},d=(e,t)=>{if(e===t)return!0;let n=new Set([...Object.keys(e),...Object.keys(t)]);n.delete(`visible`);for(let r of n){let n=e[r],i=t[r];if(n!==i&&!(Array.isArray(n)&&Array.isArray(i)&&n.join()===i.join()))return!1}return!0};exports.LINE_COLORS=t,exports.buildStudies=u,exports.createStudy=l,exports.indicatorKey=a;
|
|
2
|
+
//# sourceMappingURL=studies.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studies.cjs","names":["smaInto","emaInto","wmaInto","require_indicators","LINE_COLORS","VIOLET","INFO","WARNING","indicatorKey","indicator","sourceInto","store","i","from","source","open","high","low","close","columnPool","columns","current","name","capacity","next","output","createStudy","column","paneHeight","config","base","bind","study","names","period","label","kernel","colorIndex","src","k","mid","up","dev","m","u","l","o","reset","utcOffset","maPeriod","outputs","v","fast","slow","signal","lineColor","signalColor","n","f","s","hist","dif","dea","kp","dp","kc","dc","jc","d","j","tr","buildStudies","used","reused","averages","indicators","id","old","previous","sameConfig","a","b","keys","key","va","vb"],"sources":["../../../../../charts/src/engine/trading/studies.ts"],"sourcesContent":["// Indicators of a chart: built from the declarative options, computed into\n// columns as large as the bar store, and recomputed from the first changed\n// bar only (a tick recomputes one value per output).\n\nimport {\n emaInto,\n kdjInto,\n rmaInto,\n rsiInto,\n smaInto,\n stdevInto,\n trueRangeInto,\n vwapInto,\n wmaInto,\n} from \"./indicators\";\nimport type { BarStore } from \"./store\";\nimport type { TradingIndicator, TradingPriceSource } from \"./types\";\n\n/** How an output is drawn */\nexport type StudyOutputKind = \"line\" | \"histogram\" | \"volume\";\n\nexport interface StudyOutput {\n /** Legend label (`\"MA7\"`, `\"DIF\"`) */\n label: string;\n values: Float64Array;\n /** CSS color (may be a `var()`) */\n color: string;\n kind: StudyOutputKind;\n width: number;\n}\n\nexport interface Study {\n id: string;\n type: TradingIndicator[\"type\"];\n config: TradingIndicator;\n /** Drawn over the price (else in its own pane) */\n overlay: boolean;\n /** Legend title (`\"MACD 12 26 9\"`) */\n title: string;\n outputs: StudyOutput[];\n /** Fixed value range of the pane (RSI) */\n range?: readonly [number, number];\n /** Horizontal reference lines (RSI 30 / 70, KDJ 20 / 80, MACD 0) */\n bands?: readonly number[];\n /** Output indices filled between (Bollinger bands) */\n fill?: readonly [number, number];\n /** Default height of its pane */\n height: number;\n /** Values formatted as volumes (compact) rather than prices */\n compact: boolean;\n /** Recomputes the outputs from bar `from` on */\n compute(store: BarStore, from: number): void;\n}\n\n/** Default line colors: vivid hues readable on light and dark backgrounds */\nexport const LINE_COLORS = [\n \"#f59e0b\",\n \"#a855f7\",\n \"#0ea5e9\",\n \"#ec4899\",\n \"#14b8a6\",\n \"#6366f1\",\n \"#84cc16\",\n];\n\nconst VIOLET = \"#a855f7\";\nconst INFO = \"#0ea5e9\";\nconst WARNING = \"#f59e0b\";\n\n/** Default id of an indicator: its type and parameters */\nexport const indicatorKey = (indicator: TradingIndicator): string => {\n switch (indicator.type) {\n case \"ma\":\n case \"ema\":\n case \"wma\":\n return `${indicator.type}:${indicator.period}${\n indicator.source && indicator.source !== \"close\"\n ? `:${indicator.source}`\n : \"\"\n }`;\n case \"boll\":\n return `boll:${indicator.period ?? 20}:${indicator.multiplier ?? 2}`;\n case \"vwap\":\n return `vwap:${indicator.reset ?? \"day\"}`;\n case \"volume\":\n return \"volume\";\n case \"macd\":\n return `macd:${indicator.fast ?? 12}:${indicator.slow ?? 26}:${indicator.signal ?? 9}`;\n case \"rsi\":\n return `rsi:${indicator.period ?? 14}`;\n case \"kdj\":\n return `kdj:${indicator.period ?? 9}:${indicator.kPeriod ?? 3}:${indicator.dPeriod ?? 3}`;\n default:\n return `atr:${indicator.period ?? 14}`;\n }\n};\n\n/** Writes the price `source` of bars `from..n` into `out` */\nconst sourceInto = (\n store: BarStore,\n source: TradingPriceSource,\n out: Float64Array,\n from: number,\n) => {\n const { open, high, low, close } = store;\n for (let i = from; i < store.length; i++) {\n switch (source) {\n case \"open\":\n out[i] = open[i];\n break;\n case \"high\":\n out[i] = high[i];\n break;\n case \"low\":\n out[i] = low[i];\n break;\n case \"hl2\":\n out[i] = (high[i] + low[i]) / 2;\n break;\n case \"hlc3\":\n out[i] = (high[i] + low[i] + close[i]) / 3;\n break;\n case \"ohlc4\":\n out[i] = (open[i] + high[i] + low[i] + close[i]) / 4;\n break;\n default:\n out[i] = close[i];\n }\n }\n};\n\n/**\n * Column set that grows with the store: `get(name)` returns a column of at\n * least `capacity` values, keeping the computed ones\n */\nconst columnPool = () => {\n const columns = new Map<string, Float64Array>();\n return (name: string, capacity: number): Float64Array => {\n const current = columns.get(name);\n if (current && current.length >= capacity) return current;\n const next = new Float64Array(capacity).fill(NaN);\n if (current) next.set(current);\n columns.set(name, next);\n return next;\n };\n};\n\nconst output = (\n label: string,\n color: string,\n kind: StudyOutputKind = \"line\",\n width = 1.5,\n): StudyOutput => ({\n label,\n values: new Float64Array(0),\n color,\n kind,\n width,\n});\n\n/**\n * Builds the runtime of an indicator. `colorIndex` picks the default color\n * of moving averages (one per average).\n */\nexport const createStudy = (\n config: TradingIndicator,\n id: string,\n colorIndex: number,\n utcOffset: number,\n): Study => {\n const column = columnPool();\n const paneHeight = \"height\" in config && config.height ? config.height : 110;\n const base = {\n id,\n type: config.type,\n config,\n height: paneHeight,\n compact: false,\n };\n /** Attaches the output columns (grown with the store) before computing */\n const bind = (study: Study, store: BarStore, names: string[]) => {\n study.outputs.forEach((o, i) => {\n o.values = column(names[i] ?? `out${i}`, store.capacity);\n });\n };\n\n switch (config.type) {\n case \"ma\":\n case \"ema\":\n case \"wma\": {\n const period = Math.max(1, Math.floor(config.period) || 1);\n const source = config.source ?? \"close\";\n const label = `${config.type.toUpperCase()}${period}`;\n const kernel =\n config.type === \"ma\"\n ? smaInto\n : config.type === \"ema\"\n ? emaInto\n : wmaInto;\n const study: Study = {\n ...base,\n overlay: true,\n title: label,\n outputs: [\n output(\n label,\n config.color ?? LINE_COLORS[colorIndex % LINE_COLORS.length],\n \"line\",\n config.lineWidth ?? 1.5,\n ),\n ],\n compute(store, from) {\n bind(study, store, [\"value\"]);\n let src: Float64Array = store.close;\n if (source !== \"close\") {\n src = column(\"src\", store.capacity);\n sourceInto(store, source, src, from);\n }\n kernel(src, store.length, period, study.outputs[0].values, from);\n },\n };\n return study;\n }\n case \"boll\": {\n const period = config.period ?? 20;\n const k = config.multiplier ?? 2;\n const [mid, up, low] = config.colors ?? [WARNING, INFO, INFO];\n const study: Study = {\n ...base,\n overlay: true,\n title: `BOLL ${period} ${k}`,\n outputs: [\n output(\"MID\", mid ?? WARNING, \"line\", 1.25),\n output(\"UB\", up ?? INFO, \"line\", 1.25),\n output(\"LB\", low ?? up ?? INFO, \"line\", 1.25),\n ],\n ...(config.fill === false ? {} : { fill: [1, 2] as const }),\n compute(store, from) {\n bind(study, store, [\"mid\", \"up\", \"low\"]);\n const dev = column(\"dev\", store.capacity);\n const [m, u, l] = study.outputs.map((o) => o.values);\n smaInto(store.close, store.length, period, m, from);\n stdevInto(store.close, store.length, period, dev, from);\n for (let i = from; i < store.length; i++) {\n u[i] = m[i] + k * dev[i];\n l[i] = m[i] - k * dev[i];\n }\n },\n };\n return study;\n }\n case \"vwap\": {\n const reset = config.reset ?? \"day\";\n const study: Study = {\n ...base,\n overlay: true,\n title: \"VWAP\",\n outputs: [output(\"VWAP\", config.color ?? \"#ec4899\", \"line\", 1.5)],\n compute(store, from) {\n bind(study, store, [\"value\"]);\n vwapInto(\n store.high,\n store.low,\n store.close,\n store.volume,\n store.time,\n store.length,\n reset,\n utcOffset,\n study.outputs[0].values,\n column(\"pv\", store.capacity),\n column(\"vol\", store.capacity),\n from,\n );\n },\n };\n return study;\n }\n case \"volume\": {\n const maPeriod = config.maPeriod;\n const outputs = [output(\"VOL\", \"\", \"volume\")];\n if (maPeriod) outputs.push(output(`MA${maPeriod}`, INFO, \"line\", 1.25));\n const study: Study = {\n ...base,\n overlay: !!config.overlay,\n compact: true,\n title: \"VOL\",\n outputs,\n compute(store, from) {\n bind(study, store, [\"vol\", \"ma\"]);\n const v = study.outputs[0].values;\n v.set(store.volume.subarray(from, store.length), from);\n if (maPeriod)\n smaInto(v, store.length, maPeriod, study.outputs[1].values, from);\n },\n };\n return study;\n }\n case \"macd\": {\n const fast = config.fast ?? 12;\n const slow = config.slow ?? 26;\n const signal = config.signal ?? 9;\n const [lineColor, signalColor] = config.colors ?? [INFO, WARNING];\n const study: Study = {\n ...base,\n overlay: false,\n title: `MACD ${fast} ${slow} ${signal}`,\n bands: [0],\n outputs: [\n output(\"MACD\", \"\", \"histogram\"),\n output(\"DIF\", lineColor ?? INFO, \"line\", 1.25),\n output(\"DEA\", signalColor ?? WARNING, \"line\", 1.25),\n ],\n compute(store, from) {\n bind(study, store, [\"hist\", \"dif\", \"dea\"]);\n const n = store.length;\n const f = column(\"fast\", store.capacity);\n const s = column(\"slow\", store.capacity);\n const [hist, dif, dea] = study.outputs.map((o) => o.values);\n emaInto(store.close, n, fast, f, from);\n emaInto(store.close, n, slow, s, from);\n for (let i = from; i < n; i++) dif[i] = f[i] - s[i];\n emaInto(dif, n, signal, dea, from);\n for (let i = from; i < n; i++) hist[i] = dif[i] - dea[i];\n },\n };\n return study;\n }\n case \"rsi\": {\n const period = config.period ?? 14;\n const study: Study = {\n ...base,\n overlay: false,\n title: `RSI ${period}`,\n range: [0, 100],\n bands: [config.oversold ?? 30, config.overbought ?? 70],\n outputs: [output(`RSI${period}`, config.color ?? VIOLET, \"line\", 1.5)],\n compute(store, from) {\n bind(study, store, [\"value\"]);\n rsiInto(\n store.close,\n store.length,\n period,\n study.outputs[0].values,\n column(\"gain\", store.capacity),\n column(\"loss\", store.capacity),\n from,\n );\n },\n };\n return study;\n }\n case \"kdj\": {\n const period = config.period ?? 9;\n const kp = config.kPeriod ?? 3;\n const dp = config.dPeriod ?? 3;\n const [kc, dc, jc] = config.colors ?? [WARNING, INFO, VIOLET];\n const study: Study = {\n ...base,\n overlay: false,\n title: `KDJ ${period} ${kp} ${dp}`,\n bands: [20, 80],\n outputs: [\n output(\"K\", kc ?? WARNING, \"line\", 1.25),\n output(\"D\", dc ?? INFO, \"line\", 1.25),\n output(\"J\", jc ?? VIOLET, \"line\", 1.25),\n ],\n compute(store, from) {\n bind(study, store, [\"k\", \"d\", \"j\"]);\n const [k, d, j] = study.outputs.map((o) => o.values);\n kdjInto(\n store.high,\n store.low,\n store.close,\n store.length,\n period,\n kp,\n dp,\n k,\n d,\n j,\n from,\n );\n },\n };\n return study;\n }\n default: {\n const period = config.period ?? 14;\n const study: Study = {\n ...base,\n overlay: false,\n title: `ATR ${period}`,\n outputs: [output(`ATR${period}`, config.color ?? INFO, \"line\", 1.5)],\n compute(store, from) {\n bind(study, store, [\"value\"]);\n const tr = column(\"tr\", store.capacity);\n trueRangeInto(\n store.high,\n store.low,\n store.close,\n store.length,\n tr,\n from,\n );\n rmaInto(tr, store.length, period, study.outputs[0].values, from);\n },\n };\n return study;\n }\n }\n};\n\n/**\n * Builds the studies of `indicators`, reusing the previous runtime of an\n * indicator whose config is unchanged (same id and same parameters)\n */\nexport const buildStudies = (\n indicators: readonly TradingIndicator[],\n previous: readonly Study[],\n utcOffset: number,\n): { studies: Study[]; reused: Set<Study> } => {\n const used = new Set<string>();\n const reused = new Set<Study>();\n let averages = 0;\n const studies = indicators.map((config) => {\n let id = config.id ?? indicatorKey(config);\n for (let k = 2; used.has(id); k++)\n id = `${config.id ?? indicatorKey(config)}#${k}`;\n used.add(id);\n const colorIndex =\n config.type === \"ma\" || config.type === \"ema\" || config.type === \"wma\"\n ? averages++\n : 0;\n const old = previous.find((s) => s.id === id);\n if (old && sameConfig(old.config, config)) {\n // same parameters: keep the computed values (visibility may differ)\n old.config = config;\n reused.add(old);\n return old;\n }\n return createStudy(config, id, colorIndex, utcOffset);\n });\n return { studies, reused };\n};\n\nconst sameConfig = (a: TradingIndicator, b: TradingIndicator) => {\n if (a === b) return true;\n const keys = new Set([...Object.keys(a), ...Object.keys(b)]);\n keys.delete(\"visible\");\n for (const key of keys) {\n const va = (a as unknown as Record<string, unknown>)[key];\n const vb = (b as unknown as Record<string, unknown>)[key];\n if (va === vb) continue;\n if (Array.isArray(va) && Array.isArray(vb) && va.join() === vb.join())\n continue;\n return false;\n }\n return true;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { BarStore } from './store.cjs';
|
|
2
|
+
import { TradingIndicator } from './types.cjs';
|
|
3
|
+
/** How an output is drawn */
|
|
4
|
+
export type StudyOutputKind = "line" | "histogram" | "volume";
|
|
5
|
+
export interface StudyOutput {
|
|
6
|
+
/** Legend label (`"MA7"`, `"DIF"`) */
|
|
7
|
+
label: string;
|
|
8
|
+
values: Float64Array;
|
|
9
|
+
/** CSS color (may be a `var()`) */
|
|
10
|
+
color: string;
|
|
11
|
+
kind: StudyOutputKind;
|
|
12
|
+
width: number;
|
|
13
|
+
}
|
|
14
|
+
export interface Study {
|
|
15
|
+
id: string;
|
|
16
|
+
type: TradingIndicator["type"];
|
|
17
|
+
config: TradingIndicator;
|
|
18
|
+
/** Drawn over the price (else in its own pane) */
|
|
19
|
+
overlay: boolean;
|
|
20
|
+
/** Legend title (`"MACD 12 26 9"`) */
|
|
21
|
+
title: string;
|
|
22
|
+
outputs: StudyOutput[];
|
|
23
|
+
/** Fixed value range of the pane (RSI) */
|
|
24
|
+
range?: readonly [number, number];
|
|
25
|
+
/** Horizontal reference lines (RSI 30 / 70, KDJ 20 / 80, MACD 0) */
|
|
26
|
+
bands?: readonly number[];
|
|
27
|
+
/** Output indices filled between (Bollinger bands) */
|
|
28
|
+
fill?: readonly [number, number];
|
|
29
|
+
/** Default height of its pane */
|
|
30
|
+
height: number;
|
|
31
|
+
/** Values formatted as volumes (compact) rather than prices */
|
|
32
|
+
compact: boolean;
|
|
33
|
+
/** Recomputes the outputs from bar `from` on */
|
|
34
|
+
compute(store: BarStore, from: number): void;
|
|
35
|
+
}
|
|
36
|
+
/** Default line colors: vivid hues readable on light and dark backgrounds */
|
|
37
|
+
export declare const LINE_COLORS: string[];
|
|
38
|
+
/** Default id of an indicator: its type and parameters */
|
|
39
|
+
export declare const indicatorKey: (indicator: TradingIndicator) => string;
|
|
40
|
+
/**
|
|
41
|
+
* Builds the runtime of an indicator. `colorIndex` picks the default color
|
|
42
|
+
* of moving averages (one per average).
|
|
43
|
+
*/
|
|
44
|
+
export declare const createStudy: (config: TradingIndicator, id: string, colorIndex: number, utcOffset: number) => Study;
|
|
45
|
+
/**
|
|
46
|
+
* Builds the studies of `indicators`, reusing the previous runtime of an
|
|
47
|
+
* indicator whose config is unchanged (same id and same parameters)
|
|
48
|
+
*/
|
|
49
|
+
export declare const buildStudies: (indicators: readonly TradingIndicator[], previous: readonly Study[], utcOffset: number) => {
|
|
50
|
+
studies: Study[];
|
|
51
|
+
reused: Set<Study>;
|
|
52
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { BarStore } from './store.js';
|
|
2
|
+
import { TradingIndicator } from './types.js';
|
|
3
|
+
/** How an output is drawn */
|
|
4
|
+
export type StudyOutputKind = "line" | "histogram" | "volume";
|
|
5
|
+
export interface StudyOutput {
|
|
6
|
+
/** Legend label (`"MA7"`, `"DIF"`) */
|
|
7
|
+
label: string;
|
|
8
|
+
values: Float64Array;
|
|
9
|
+
/** CSS color (may be a `var()`) */
|
|
10
|
+
color: string;
|
|
11
|
+
kind: StudyOutputKind;
|
|
12
|
+
width: number;
|
|
13
|
+
}
|
|
14
|
+
export interface Study {
|
|
15
|
+
id: string;
|
|
16
|
+
type: TradingIndicator["type"];
|
|
17
|
+
config: TradingIndicator;
|
|
18
|
+
/** Drawn over the price (else in its own pane) */
|
|
19
|
+
overlay: boolean;
|
|
20
|
+
/** Legend title (`"MACD 12 26 9"`) */
|
|
21
|
+
title: string;
|
|
22
|
+
outputs: StudyOutput[];
|
|
23
|
+
/** Fixed value range of the pane (RSI) */
|
|
24
|
+
range?: readonly [number, number];
|
|
25
|
+
/** Horizontal reference lines (RSI 30 / 70, KDJ 20 / 80, MACD 0) */
|
|
26
|
+
bands?: readonly number[];
|
|
27
|
+
/** Output indices filled between (Bollinger bands) */
|
|
28
|
+
fill?: readonly [number, number];
|
|
29
|
+
/** Default height of its pane */
|
|
30
|
+
height: number;
|
|
31
|
+
/** Values formatted as volumes (compact) rather than prices */
|
|
32
|
+
compact: boolean;
|
|
33
|
+
/** Recomputes the outputs from bar `from` on */
|
|
34
|
+
compute(store: BarStore, from: number): void;
|
|
35
|
+
}
|
|
36
|
+
/** Default line colors: vivid hues readable on light and dark backgrounds */
|
|
37
|
+
export declare const LINE_COLORS: string[];
|
|
38
|
+
/** Default id of an indicator: its type and parameters */
|
|
39
|
+
export declare const indicatorKey: (indicator: TradingIndicator) => string;
|
|
40
|
+
/**
|
|
41
|
+
* Builds the runtime of an indicator. `colorIndex` picks the default color
|
|
42
|
+
* of moving averages (one per average).
|
|
43
|
+
*/
|
|
44
|
+
export declare const createStudy: (config: TradingIndicator, id: string, colorIndex: number, utcOffset: number) => Study;
|
|
45
|
+
/**
|
|
46
|
+
* Builds the studies of `indicators`, reusing the previous runtime of an
|
|
47
|
+
* indicator whose config is unchanged (same id and same parameters)
|
|
48
|
+
*/
|
|
49
|
+
export declare const buildStudies: (indicators: readonly TradingIndicator[], previous: readonly Study[], utcOffset: number) => {
|
|
50
|
+
studies: Study[];
|
|
51
|
+
reused: Set<Study>;
|
|
52
|
+
};
|