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.
Files changed (1166) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +13630 -4757
  4. package/dist/angular/fesm2022/minerva-angular.mjs +6872 -172
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +2240 -0
  7. package/dist/charts/canvas.d.cts +7 -2
  8. package/dist/charts/canvas.d.ts +7 -2
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +7 -4
  11. package/dist/charts/core.d.ts +7 -4
  12. package/dist/charts/core.js +19 -8
  13. package/dist/charts/engine/axis.cjs +1 -1
  14. package/dist/charts/engine/axis.cjs.map +1 -1
  15. package/dist/charts/engine/axis.js +6 -6
  16. package/dist/charts/engine/axis.js.map +1 -1
  17. package/dist/charts/engine/canvas.cjs +1 -1
  18. package/dist/charts/engine/canvas.cjs.map +1 -1
  19. package/dist/charts/engine/canvas.d.cts +11 -1
  20. package/dist/charts/engine/canvas.d.ts +11 -1
  21. package/dist/charts/engine/canvas.js +118 -68
  22. package/dist/charts/engine/canvas.js.map +1 -1
  23. package/dist/charts/engine/chart.cjs +1 -1
  24. package/dist/charts/engine/chart.cjs.map +1 -1
  25. package/dist/charts/engine/chart.d.cts +1 -1
  26. package/dist/charts/engine/chart.d.ts +1 -1
  27. package/dist/charts/engine/chart.js +307 -285
  28. package/dist/charts/engine/chart.js.map +1 -1
  29. package/dist/charts/engine/color.cjs +1 -1
  30. package/dist/charts/engine/color.cjs.map +1 -1
  31. package/dist/charts/engine/color.js +2 -2
  32. package/dist/charts/engine/color.js.map +1 -1
  33. package/dist/charts/engine/controller.cjs +1 -1
  34. package/dist/charts/engine/controller.cjs.map +1 -1
  35. package/dist/charts/engine/controller.d.cts +12 -3
  36. package/dist/charts/engine/controller.d.ts +12 -3
  37. package/dist/charts/engine/controller.js +359 -299
  38. package/dist/charts/engine/controller.js.map +1 -1
  39. package/dist/charts/engine/data.cjs +1 -1
  40. package/dist/charts/engine/data.cjs.map +1 -1
  41. package/dist/charts/engine/data.d.cts +6 -0
  42. package/dist/charts/engine/data.d.ts +6 -0
  43. package/dist/charts/engine/data.js +63 -49
  44. package/dist/charts/engine/data.js.map +1 -1
  45. package/dist/charts/engine/format.cjs +1 -1
  46. package/dist/charts/engine/format.cjs.map +1 -1
  47. package/dist/charts/engine/format.d.cts +21 -6
  48. package/dist/charts/engine/format.d.ts +21 -6
  49. package/dist/charts/engine/format.js +46 -21
  50. package/dist/charts/engine/format.js.map +1 -1
  51. package/dist/charts/engine/items.cjs +1 -1
  52. package/dist/charts/engine/items.cjs.map +1 -1
  53. package/dist/charts/engine/items.js +211 -54
  54. package/dist/charts/engine/items.js.map +1 -1
  55. package/dist/charts/engine/labels.cjs +2 -0
  56. package/dist/charts/engine/labels.cjs.map +1 -0
  57. package/dist/charts/engine/labels.d.cts +13 -0
  58. package/dist/charts/engine/labels.d.ts +13 -0
  59. package/dist/charts/engine/labels.js +74 -0
  60. package/dist/charts/engine/labels.js.map +1 -0
  61. package/dist/charts/engine/layout.cjs +1 -1
  62. package/dist/charts/engine/layout.cjs.map +1 -1
  63. package/dist/charts/engine/layout.d.cts +34 -2
  64. package/dist/charts/engine/layout.d.ts +34 -2
  65. package/dist/charts/engine/layout.js +53 -12
  66. package/dist/charts/engine/layout.js.map +1 -1
  67. package/dist/charts/engine/locale.cjs +2 -0
  68. package/dist/charts/engine/locale.cjs.map +1 -0
  69. package/dist/charts/engine/locale.d.cts +33 -0
  70. package/dist/charts/engine/locale.d.ts +33 -0
  71. package/dist/charts/engine/locale.js +68 -0
  72. package/dist/charts/engine/locale.js.map +1 -0
  73. package/dist/charts/engine/model.cjs +1 -1
  74. package/dist/charts/engine/model.cjs.map +1 -1
  75. package/dist/charts/engine/model.d.cts +39 -1
  76. package/dist/charts/engine/model.d.ts +39 -1
  77. package/dist/charts/engine/model.js +212 -105
  78. package/dist/charts/engine/model.js.map +1 -1
  79. package/dist/charts/engine/orderbook/book.cjs +2 -0
  80. package/dist/charts/engine/orderbook/book.cjs.map +1 -0
  81. package/dist/charts/engine/orderbook/book.d.cts +28 -0
  82. package/dist/charts/engine/orderbook/book.d.ts +28 -0
  83. package/dist/charts/engine/orderbook/book.js +134 -0
  84. package/dist/charts/engine/orderbook/book.js.map +1 -0
  85. package/dist/charts/engine/orderbook/depth.cjs +2 -0
  86. package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
  87. package/dist/charts/engine/orderbook/depth.d.cts +7 -0
  88. package/dist/charts/engine/orderbook/depth.d.ts +7 -0
  89. package/dist/charts/engine/orderbook/depth.js +413 -0
  90. package/dist/charts/engine/orderbook/depth.js.map +1 -0
  91. package/dist/charts/engine/orderbook/format.cjs +2 -0
  92. package/dist/charts/engine/orderbook/format.cjs.map +1 -0
  93. package/dist/charts/engine/orderbook/format.d.cts +48 -0
  94. package/dist/charts/engine/orderbook/format.d.ts +48 -0
  95. package/dist/charts/engine/orderbook/format.js +65 -0
  96. package/dist/charts/engine/orderbook/format.js.map +1 -0
  97. package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
  98. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
  99. package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
  100. package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
  101. package/dist/charts/engine/orderbook/heatmap.js +703 -0
  102. package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
  103. package/dist/charts/engine/orderbook/host.cjs +2 -0
  104. package/dist/charts/engine/orderbook/host.cjs.map +1 -0
  105. package/dist/charts/engine/orderbook/host.d.cts +50 -0
  106. package/dist/charts/engine/orderbook/host.d.ts +50 -0
  107. package/dist/charts/engine/orderbook/host.js +161 -0
  108. package/dist/charts/engine/orderbook/host.js.map +1 -0
  109. package/dist/charts/engine/orderbook/index.cjs +1 -0
  110. package/dist/charts/engine/orderbook/index.d.cts +6 -0
  111. package/dist/charts/engine/orderbook/index.d.ts +6 -0
  112. package/dist/charts/engine/orderbook/index.js +6 -0
  113. package/dist/charts/engine/orderbook/ladder.cjs +2 -0
  114. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
  115. package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
  116. package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
  117. package/dist/charts/engine/orderbook/ladder.js +341 -0
  118. package/dist/charts/engine/orderbook/ladder.js.map +1 -0
  119. package/dist/charts/engine/orderbook/tape.cjs +2 -0
  120. package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
  121. package/dist/charts/engine/orderbook/tape.d.cts +6 -0
  122. package/dist/charts/engine/orderbook/tape.d.ts +6 -0
  123. package/dist/charts/engine/orderbook/tape.js +450 -0
  124. package/dist/charts/engine/orderbook/tape.js.map +1 -0
  125. package/dist/charts/engine/orderbook/types.d.cts +735 -0
  126. package/dist/charts/engine/orderbook/types.d.ts +735 -0
  127. package/dist/charts/engine/overlay.cjs +1 -1
  128. package/dist/charts/engine/overlay.cjs.map +1 -1
  129. package/dist/charts/engine/overlay.d.cts +18 -2
  130. package/dist/charts/engine/overlay.d.ts +18 -2
  131. package/dist/charts/engine/overlay.js +132 -96
  132. package/dist/charts/engine/overlay.js.map +1 -1
  133. package/dist/charts/engine/presets.cjs +2 -2
  134. package/dist/charts/engine/presets.cjs.map +1 -1
  135. package/dist/charts/engine/presets.d.cts +249 -1
  136. package/dist/charts/engine/presets.d.ts +249 -1
  137. package/dist/charts/engine/presets.js +367 -29
  138. package/dist/charts/engine/presets.js.map +1 -1
  139. package/dist/charts/engine/renderers/detect.cjs +1 -1
  140. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  141. package/dist/charts/engine/renderers/detect.js +18 -15
  142. package/dist/charts/engine/renderers/detect.js.map +1 -1
  143. package/dist/charts/engine/renderers/gl.cjs +2 -0
  144. package/dist/charts/engine/renderers/gl.cjs.map +1 -0
  145. package/dist/charts/engine/renderers/gl.d.cts +21 -0
  146. package/dist/charts/engine/renderers/gl.d.ts +21 -0
  147. package/dist/charts/engine/renderers/gl.js +56 -0
  148. package/dist/charts/engine/renderers/gl.js.map +1 -0
  149. package/dist/charts/engine/renderers/shaders.cjs +143 -1
  150. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  151. package/dist/charts/engine/renderers/shaders.d.cts +16 -0
  152. package/dist/charts/engine/renderers/shaders.d.ts +16 -0
  153. package/dist/charts/engine/renderers/shaders.js +139 -1
  154. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  155. package/dist/charts/engine/renderers/webgl.cjs +2 -0
  156. package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
  157. package/dist/charts/engine/renderers/webgl.d.cts +4 -0
  158. package/dist/charts/engine/renderers/webgl.d.ts +4 -0
  159. package/dist/charts/engine/renderers/webgl.js +133 -0
  160. package/dist/charts/engine/renderers/webgl.js.map +1 -0
  161. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  162. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  163. package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
  164. package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
  165. package/dist/charts/engine/renderers/webgl2.js +59 -108
  166. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  167. package/dist/charts/engine/scale.cjs +1 -1
  168. package/dist/charts/engine/scale.cjs.map +1 -1
  169. package/dist/charts/engine/scale.js +1 -1
  170. package/dist/charts/engine/scale.js.map +1 -1
  171. package/dist/charts/engine/scene.cjs +1 -1
  172. package/dist/charts/engine/scene.cjs.map +1 -1
  173. package/dist/charts/engine/scene.d.cts +14 -4
  174. package/dist/charts/engine/scene.d.ts +14 -4
  175. package/dist/charts/engine/scene.js +292 -163
  176. package/dist/charts/engine/scene.js.map +1 -1
  177. package/dist/charts/engine/shapes/bullet.cjs +2 -0
  178. package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
  179. package/dist/charts/engine/shapes/bullet.d.cts +6 -0
  180. package/dist/charts/engine/shapes/bullet.d.ts +6 -0
  181. package/dist/charts/engine/shapes/bullet.js +255 -0
  182. package/dist/charts/engine/shapes/bullet.js.map +1 -0
  183. package/dist/charts/engine/shapes/calendar.cjs +2 -0
  184. package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
  185. package/dist/charts/engine/shapes/calendar.d.cts +38 -0
  186. package/dist/charts/engine/shapes/calendar.d.ts +38 -0
  187. package/dist/charts/engine/shapes/calendar.js +369 -0
  188. package/dist/charts/engine/shapes/calendar.js.map +1 -0
  189. package/dist/charts/engine/shapes/canvas.cjs +1 -1
  190. package/dist/charts/engine/shapes/canvas.cjs.map +1 -1
  191. package/dist/charts/engine/shapes/canvas.d.cts +7 -0
  192. package/dist/charts/engine/shapes/canvas.d.ts +7 -0
  193. package/dist/charts/engine/shapes/canvas.js +22 -13
  194. package/dist/charts/engine/shapes/canvas.js.map +1 -1
  195. package/dist/charts/engine/shapes/chart.cjs +1 -1
  196. package/dist/charts/engine/shapes/chart.cjs.map +1 -1
  197. package/dist/charts/engine/shapes/chart.d.cts +3 -2
  198. package/dist/charts/engine/shapes/chart.d.ts +3 -2
  199. package/dist/charts/engine/shapes/chart.js +45 -26
  200. package/dist/charts/engine/shapes/chart.js.map +1 -1
  201. package/dist/charts/engine/shapes/draw.cjs +1 -1
  202. package/dist/charts/engine/shapes/draw.cjs.map +1 -1
  203. package/dist/charts/engine/shapes/draw.d.cts +3 -1
  204. package/dist/charts/engine/shapes/draw.d.ts +3 -1
  205. package/dist/charts/engine/shapes/draw.js +31 -18
  206. package/dist/charts/engine/shapes/draw.js.map +1 -1
  207. package/dist/charts/engine/shapes/funnel.cjs +1 -1
  208. package/dist/charts/engine/shapes/funnel.cjs.map +1 -1
  209. package/dist/charts/engine/shapes/funnel.js +3 -3
  210. package/dist/charts/engine/shapes/funnel.js.map +1 -1
  211. package/dist/charts/engine/shapes/gauge.cjs +1 -1
  212. package/dist/charts/engine/shapes/gauge.cjs.map +1 -1
  213. package/dist/charts/engine/shapes/gauge.js +132 -95
  214. package/dist/charts/engine/shapes/gauge.js.map +1 -1
  215. package/dist/charts/engine/shapes/hit.cjs +1 -1
  216. package/dist/charts/engine/shapes/hit.cjs.map +1 -1
  217. package/dist/charts/engine/shapes/hit.d.cts +3 -1
  218. package/dist/charts/engine/shapes/hit.d.ts +3 -1
  219. package/dist/charts/engine/shapes/hit.js +29 -8
  220. package/dist/charts/engine/shapes/hit.js.map +1 -1
  221. package/dist/charts/engine/shapes/index.d.cts +4 -1
  222. package/dist/charts/engine/shapes/index.d.ts +4 -1
  223. package/dist/charts/engine/shapes/labels.cjs +2 -0
  224. package/dist/charts/engine/shapes/labels.cjs.map +1 -0
  225. package/dist/charts/engine/shapes/labels.d.cts +14 -0
  226. package/dist/charts/engine/shapes/labels.d.ts +14 -0
  227. package/dist/charts/engine/shapes/labels.js +146 -0
  228. package/dist/charts/engine/shapes/labels.js.map +1 -0
  229. package/dist/charts/engine/shapes/layout.cjs +2 -2
  230. package/dist/charts/engine/shapes/layout.cjs.map +1 -1
  231. package/dist/charts/engine/shapes/layout.d.cts +8 -3
  232. package/dist/charts/engine/shapes/layout.d.ts +8 -3
  233. package/dist/charts/engine/shapes/layout.js +200 -113
  234. package/dist/charts/engine/shapes/layout.js.map +1 -1
  235. package/dist/charts/engine/shapes/pie.cjs +1 -1
  236. package/dist/charts/engine/shapes/pie.cjs.map +1 -1
  237. package/dist/charts/engine/shapes/pie.js +2 -2
  238. package/dist/charts/engine/shapes/pie.js.map +1 -1
  239. package/dist/charts/engine/shapes/radar.cjs +1 -1
  240. package/dist/charts/engine/shapes/radar.cjs.map +1 -1
  241. package/dist/charts/engine/shapes/radar.d.cts +2 -2
  242. package/dist/charts/engine/shapes/radar.d.ts +2 -2
  243. package/dist/charts/engine/shapes/radar.js +50 -49
  244. package/dist/charts/engine/shapes/radar.js.map +1 -1
  245. package/dist/charts/engine/shapes/radialBar.cjs +2 -0
  246. package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
  247. package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
  248. package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
  249. package/dist/charts/engine/shapes/radialBar.js +155 -0
  250. package/dist/charts/engine/shapes/radialBar.js.map +1 -0
  251. package/dist/charts/engine/shapes/runtime.cjs +1 -1
  252. package/dist/charts/engine/shapes/runtime.cjs.map +1 -1
  253. package/dist/charts/engine/shapes/runtime.d.cts +9 -2
  254. package/dist/charts/engine/shapes/runtime.d.ts +9 -2
  255. package/dist/charts/engine/shapes/runtime.js +61 -51
  256. package/dist/charts/engine/shapes/runtime.js.map +1 -1
  257. package/dist/charts/engine/shapes/sankey.cjs +2 -0
  258. package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
  259. package/dist/charts/engine/shapes/sankey.d.cts +29 -0
  260. package/dist/charts/engine/shapes/sankey.d.ts +29 -0
  261. package/dist/charts/engine/shapes/sankey.js +372 -0
  262. package/dist/charts/engine/shapes/sankey.js.map +1 -0
  263. package/dist/charts/engine/shapes/scene.cjs +1 -1
  264. package/dist/charts/engine/shapes/scene.cjs.map +1 -1
  265. package/dist/charts/engine/shapes/scene.d.cts +62 -8
  266. package/dist/charts/engine/shapes/scene.d.ts +62 -8
  267. package/dist/charts/engine/shapes/scene.js +33 -31
  268. package/dist/charts/engine/shapes/scene.js.map +1 -1
  269. package/dist/charts/engine/shapes/sunburst.cjs +2 -0
  270. package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
  271. package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
  272. package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
  273. package/dist/charts/engine/shapes/sunburst.js +261 -0
  274. package/dist/charts/engine/shapes/sunburst.js.map +1 -0
  275. package/dist/charts/engine/shapes/treemap.cjs +1 -1
  276. package/dist/charts/engine/shapes/treemap.cjs.map +1 -1
  277. package/dist/charts/engine/shapes/treemap.js +2 -2
  278. package/dist/charts/engine/shapes/treemap.js.map +1 -1
  279. package/dist/charts/engine/shapes/types.d.cts +439 -12
  280. package/dist/charts/engine/shapes/types.d.ts +439 -12
  281. package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
  282. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
  283. package/dist/charts/engine/three-d/canvas2d.d.cts +4 -0
  284. package/dist/charts/engine/three-d/canvas2d.d.ts +4 -0
  285. package/dist/charts/engine/three-d/canvas2d.js +104 -0
  286. package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
  287. package/dist/charts/engine/three-d/chart.cjs +2 -0
  288. package/dist/charts/engine/three-d/chart.cjs.map +1 -0
  289. package/dist/charts/engine/three-d/chart.d.cts +15 -0
  290. package/dist/charts/engine/three-d/chart.d.ts +15 -0
  291. package/dist/charts/engine/three-d/chart.js +621 -0
  292. package/dist/charts/engine/three-d/chart.js.map +1 -0
  293. package/dist/charts/engine/three-d/colormap.cjs +2 -0
  294. package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
  295. package/dist/charts/engine/three-d/colormap.d.cts +16 -0
  296. package/dist/charts/engine/three-d/colormap.d.ts +16 -0
  297. package/dist/charts/engine/three-d/colormap.js +166 -0
  298. package/dist/charts/engine/three-d/colormap.js.map +1 -0
  299. package/dist/charts/engine/three-d/contours.cjs +2 -0
  300. package/dist/charts/engine/three-d/contours.cjs.map +1 -0
  301. package/dist/charts/engine/three-d/contours.d.cts +7 -0
  302. package/dist/charts/engine/three-d/contours.d.ts +7 -0
  303. package/dist/charts/engine/three-d/contours.js +47 -0
  304. package/dist/charts/engine/three-d/contours.js.map +1 -0
  305. package/dist/charts/engine/three-d/detect.cjs +2 -0
  306. package/dist/charts/engine/three-d/detect.cjs.map +1 -0
  307. package/dist/charts/engine/three-d/detect.d.cts +11 -0
  308. package/dist/charts/engine/three-d/detect.d.ts +11 -0
  309. package/dist/charts/engine/three-d/detect.js +35 -0
  310. package/dist/charts/engine/three-d/detect.js.map +1 -0
  311. package/dist/charts/engine/three-d/dom.cjs +2 -0
  312. package/dist/charts/engine/three-d/dom.cjs.map +1 -0
  313. package/dist/charts/engine/three-d/dom.d.cts +21 -0
  314. package/dist/charts/engine/three-d/dom.d.ts +21 -0
  315. package/dist/charts/engine/three-d/dom.js +98 -0
  316. package/dist/charts/engine/three-d/dom.js.map +1 -0
  317. package/dist/charts/engine/three-d/geometry.cjs +2 -0
  318. package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
  319. package/dist/charts/engine/three-d/geometry.d.cts +76 -0
  320. package/dist/charts/engine/three-d/geometry.d.ts +76 -0
  321. package/dist/charts/engine/three-d/geometry.js +529 -0
  322. package/dist/charts/engine/three-d/geometry.js.map +1 -0
  323. package/dist/charts/engine/three-d/hover.cjs +2 -0
  324. package/dist/charts/engine/three-d/hover.cjs.map +1 -0
  325. package/dist/charts/engine/three-d/hover.d.cts +25 -0
  326. package/dist/charts/engine/three-d/hover.d.ts +25 -0
  327. package/dist/charts/engine/three-d/hover.js +131 -0
  328. package/dist/charts/engine/three-d/hover.js.map +1 -0
  329. package/dist/charts/engine/three-d/index.cjs +1 -0
  330. package/dist/charts/engine/three-d/index.d.cts +2 -0
  331. package/dist/charts/engine/three-d/index.d.ts +2 -0
  332. package/dist/charts/engine/three-d/index.js +2 -0
  333. package/dist/charts/engine/three-d/labels.cjs +2 -0
  334. package/dist/charts/engine/three-d/labels.cjs.map +1 -0
  335. package/dist/charts/engine/three-d/labels.d.cts +23 -0
  336. package/dist/charts/engine/three-d/labels.d.ts +23 -0
  337. package/dist/charts/engine/three-d/labels.js +136 -0
  338. package/dist/charts/engine/three-d/labels.js.map +1 -0
  339. package/dist/charts/engine/three-d/math.cjs +2 -0
  340. package/dist/charts/engine/three-d/math.cjs.map +1 -0
  341. package/dist/charts/engine/three-d/math.d.cts +84 -0
  342. package/dist/charts/engine/three-d/math.d.ts +84 -0
  343. package/dist/charts/engine/three-d/math.js +150 -0
  344. package/dist/charts/engine/three-d/math.js.map +1 -0
  345. package/dist/charts/engine/three-d/model.cjs +2 -0
  346. package/dist/charts/engine/three-d/model.cjs.map +1 -0
  347. package/dist/charts/engine/three-d/model.d.cts +130 -0
  348. package/dist/charts/engine/three-d/model.d.ts +130 -0
  349. package/dist/charts/engine/three-d/model.js +277 -0
  350. package/dist/charts/engine/three-d/model.js.map +1 -0
  351. package/dist/charts/engine/three-d/overlay.cjs +2 -0
  352. package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
  353. package/dist/charts/engine/three-d/overlay.d.cts +72 -0
  354. package/dist/charts/engine/three-d/overlay.d.ts +72 -0
  355. package/dist/charts/engine/three-d/overlay.js +197 -0
  356. package/dist/charts/engine/three-d/overlay.js.map +1 -0
  357. package/dist/charts/engine/three-d/pick.cjs +2 -0
  358. package/dist/charts/engine/three-d/pick.cjs.map +1 -0
  359. package/dist/charts/engine/three-d/pick.d.cts +52 -0
  360. package/dist/charts/engine/three-d/pick.d.ts +52 -0
  361. package/dist/charts/engine/three-d/pick.js +220 -0
  362. package/dist/charts/engine/three-d/pick.js.map +1 -0
  363. package/dist/charts/engine/three-d/render-types.cjs +2 -0
  364. package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
  365. package/dist/charts/engine/three-d/render-types.d.cts +82 -0
  366. package/dist/charts/engine/three-d/render-types.d.ts +82 -0
  367. package/dist/charts/engine/three-d/render-types.js +13 -0
  368. package/dist/charts/engine/three-d/render-types.js.map +1 -0
  369. package/dist/charts/engine/three-d/shaders.cjs +276 -0
  370. package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
  371. package/dist/charts/engine/three-d/shaders.d.cts +26 -0
  372. package/dist/charts/engine/three-d/shaders.d.ts +26 -0
  373. package/dist/charts/engine/three-d/shaders.js +191 -0
  374. package/dist/charts/engine/three-d/shaders.js.map +1 -0
  375. package/dist/charts/engine/three-d/sort.cjs +2 -0
  376. package/dist/charts/engine/three-d/sort.cjs.map +1 -0
  377. package/dist/charts/engine/three-d/sort.d.cts +18 -0
  378. package/dist/charts/engine/three-d/sort.d.ts +18 -0
  379. package/dist/charts/engine/three-d/sort.js +71 -0
  380. package/dist/charts/engine/three-d/sort.js.map +1 -0
  381. package/dist/charts/engine/three-d/types.d.cts +588 -0
  382. package/dist/charts/engine/three-d/types.d.ts +588 -0
  383. package/dist/charts/engine/three-d/webgl.cjs +2 -0
  384. package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
  385. package/dist/charts/engine/three-d/webgl.d.cts +10 -0
  386. package/dist/charts/engine/three-d/webgl.d.ts +10 -0
  387. package/dist/charts/engine/three-d/webgl.js +130 -0
  388. package/dist/charts/engine/three-d/webgl.js.map +1 -0
  389. package/dist/charts/engine/three-d/webgpu.cjs +2 -0
  390. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
  391. package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
  392. package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
  393. package/dist/charts/engine/three-d/webgpu.js +249 -0
  394. package/dist/charts/engine/three-d/webgpu.js.map +1 -0
  395. package/dist/charts/engine/time.cjs +1 -1
  396. package/dist/charts/engine/time.cjs.map +1 -1
  397. package/dist/charts/engine/time.d.cts +13 -4
  398. package/dist/charts/engine/time.d.ts +13 -4
  399. package/dist/charts/engine/time.js +156 -91
  400. package/dist/charts/engine/time.js.map +1 -1
  401. package/dist/charts/engine/trading/chart.cjs +2 -0
  402. package/dist/charts/engine/trading/chart.cjs.map +1 -0
  403. package/dist/charts/engine/trading/chart.d.cts +3 -0
  404. package/dist/charts/engine/trading/chart.d.ts +3 -0
  405. package/dist/charts/engine/trading/chart.js +1507 -0
  406. package/dist/charts/engine/trading/chart.js.map +1 -0
  407. package/dist/charts/engine/trading/drawings.cjs +2 -0
  408. package/dist/charts/engine/trading/drawings.cjs.map +1 -0
  409. package/dist/charts/engine/trading/drawings.d.cts +57 -0
  410. package/dist/charts/engine/trading/drawings.d.ts +57 -0
  411. package/dist/charts/engine/trading/drawings.js +160 -0
  412. package/dist/charts/engine/trading/drawings.js.map +1 -0
  413. package/dist/charts/engine/trading/format.cjs +2 -0
  414. package/dist/charts/engine/trading/format.cjs.map +1 -0
  415. package/dist/charts/engine/trading/format.d.cts +60 -0
  416. package/dist/charts/engine/trading/format.d.ts +60 -0
  417. package/dist/charts/engine/trading/format.js +131 -0
  418. package/dist/charts/engine/trading/format.js.map +1 -0
  419. package/dist/charts/engine/trading/geometry.cjs +2 -0
  420. package/dist/charts/engine/trading/geometry.cjs.map +1 -0
  421. package/dist/charts/engine/trading/geometry.d.cts +55 -0
  422. package/dist/charts/engine/trading/geometry.d.ts +55 -0
  423. package/dist/charts/engine/trading/geometry.js +131 -0
  424. package/dist/charts/engine/trading/geometry.js.map +1 -0
  425. package/dist/charts/engine/trading/index.cjs +1 -0
  426. package/dist/charts/engine/trading/index.d.cts +3 -0
  427. package/dist/charts/engine/trading/index.d.ts +3 -0
  428. package/dist/charts/engine/trading/index.js +3 -0
  429. package/dist/charts/engine/trading/indicators.cjs +2 -0
  430. package/dist/charts/engine/trading/indicators.cjs.map +1 -0
  431. package/dist/charts/engine/trading/indicators.d.cts +105 -0
  432. package/dist/charts/engine/trading/indicators.d.ts +105 -0
  433. package/dist/charts/engine/trading/indicators.js +268 -0
  434. package/dist/charts/engine/trading/indicators.js.map +1 -0
  435. package/dist/charts/engine/trading/labels.cjs +2 -0
  436. package/dist/charts/engine/trading/labels.cjs.map +1 -0
  437. package/dist/charts/engine/trading/labels.d.cts +7 -0
  438. package/dist/charts/engine/trading/labels.d.ts +7 -0
  439. package/dist/charts/engine/trading/labels.js +91 -0
  440. package/dist/charts/engine/trading/labels.js.map +1 -0
  441. package/dist/charts/engine/trading/scale.cjs +2 -0
  442. package/dist/charts/engine/trading/scale.cjs.map +1 -0
  443. package/dist/charts/engine/trading/scale.d.cts +46 -0
  444. package/dist/charts/engine/trading/scale.d.ts +46 -0
  445. package/dist/charts/engine/trading/scale.js +100 -0
  446. package/dist/charts/engine/trading/scale.js.map +1 -0
  447. package/dist/charts/engine/trading/store.cjs +2 -0
  448. package/dist/charts/engine/trading/store.cjs.map +1 -0
  449. package/dist/charts/engine/trading/store.d.cts +62 -0
  450. package/dist/charts/engine/trading/store.d.ts +62 -0
  451. package/dist/charts/engine/trading/store.js +129 -0
  452. package/dist/charts/engine/trading/store.js.map +1 -0
  453. package/dist/charts/engine/trading/studies.cjs +2 -0
  454. package/dist/charts/engine/trading/studies.cjs.map +1 -0
  455. package/dist/charts/engine/trading/studies.d.cts +52 -0
  456. package/dist/charts/engine/trading/studies.d.ts +52 -0
  457. package/dist/charts/engine/trading/studies.js +254 -0
  458. package/dist/charts/engine/trading/studies.js.map +1 -0
  459. package/dist/charts/engine/trading/types.d.cts +656 -0
  460. package/dist/charts/engine/trading/types.d.ts +656 -0
  461. package/dist/charts/engine/types.d.cts +165 -14
  462. package/dist/charts/engine/types.d.ts +165 -14
  463. package/dist/charts/index.cjs +1 -1
  464. package/dist/charts/index.d.cts +7 -4
  465. package/dist/charts/index.d.ts +7 -4
  466. package/dist/charts/index.js +22 -11
  467. package/dist/charts/react/Chart.cjs +1 -1
  468. package/dist/charts/react/Chart.cjs.map +1 -1
  469. package/dist/charts/react/Chart.d.cts +4 -4
  470. package/dist/charts/react/Chart.d.ts +4 -4
  471. package/dist/charts/react/Chart.js +5 -1
  472. package/dist/charts/react/Chart.js.map +1 -1
  473. package/dist/charts/react/charts.cjs +1 -1
  474. package/dist/charts/react/charts.cjs.map +1 -1
  475. package/dist/charts/react/charts.d.cts +39 -1
  476. package/dist/charts/react/charts.d.ts +39 -1
  477. package/dist/charts/react/charts.js +303 -131
  478. package/dist/charts/react/charts.js.map +1 -1
  479. package/dist/charts/react/orderbook.cjs +2 -0
  480. package/dist/charts/react/orderbook.cjs.map +1 -0
  481. package/dist/charts/react/orderbook.d.cts +142 -0
  482. package/dist/charts/react/orderbook.d.ts +142 -0
  483. package/dist/charts/react/orderbook.js +182 -0
  484. package/dist/charts/react/orderbook.js.map +1 -0
  485. package/dist/charts/react/shapes.cjs +1 -1
  486. package/dist/charts/react/shapes.cjs.map +1 -1
  487. package/dist/charts/react/shapes.d.cts +291 -9
  488. package/dist/charts/react/shapes.d.ts +291 -9
  489. package/dist/charts/react/shapes.js +280 -93
  490. package/dist/charts/react/shapes.js.map +1 -1
  491. package/dist/charts/react/three-d.cjs +2 -0
  492. package/dist/charts/react/three-d.cjs.map +1 -0
  493. package/dist/charts/react/three-d.d.cts +151 -0
  494. package/dist/charts/react/three-d.d.ts +151 -0
  495. package/dist/charts/react/three-d.js +154 -0
  496. package/dist/charts/react/three-d.js.map +1 -0
  497. package/dist/charts/react/trading.cjs +2 -0
  498. package/dist/charts/react/trading.cjs.map +1 -0
  499. package/dist/charts/react/trading.d.cts +93 -0
  500. package/dist/charts/react/trading.d.ts +93 -0
  501. package/dist/charts/react/trading.js +95 -0
  502. package/dist/charts/react/trading.js.map +1 -0
  503. package/dist/charts/react/types.d.cts +132 -8
  504. package/dist/charts/react/types.d.ts +132 -8
  505. package/dist/core/contracts.cjs +1 -1
  506. package/dist/core/contracts.cjs.map +1 -1
  507. package/dist/core/contracts.js +1 -1
  508. package/dist/core/contracts.js.map +1 -1
  509. package/dist/native/charts/src/canvas.cjs +1 -1
  510. package/dist/native/charts/src/canvas.js +9 -3
  511. package/dist/native/charts/src/engine/axis.cjs +1 -1
  512. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  513. package/dist/native/charts/src/engine/axis.js +6 -6
  514. package/dist/native/charts/src/engine/axis.js.map +1 -1
  515. package/dist/native/charts/src/engine/controller.cjs +1 -1
  516. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  517. package/dist/native/charts/src/engine/controller.js +352 -292
  518. package/dist/native/charts/src/engine/controller.js.map +1 -1
  519. package/dist/native/charts/src/engine/data.cjs +1 -1
  520. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  521. package/dist/native/charts/src/engine/data.js +63 -49
  522. package/dist/native/charts/src/engine/data.js.map +1 -1
  523. package/dist/native/charts/src/engine/format.cjs +1 -1
  524. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  525. package/dist/native/charts/src/engine/format.js +46 -21
  526. package/dist/native/charts/src/engine/format.js.map +1 -1
  527. package/dist/native/charts/src/engine/labels.cjs +2 -0
  528. package/dist/native/charts/src/engine/labels.cjs.map +1 -0
  529. package/dist/native/charts/src/engine/labels.js +74 -0
  530. package/dist/native/charts/src/engine/labels.js.map +1 -0
  531. package/dist/native/charts/src/engine/layout.cjs +1 -1
  532. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  533. package/dist/native/charts/src/engine/layout.js +53 -12
  534. package/dist/native/charts/src/engine/layout.js.map +1 -1
  535. package/dist/native/charts/src/engine/locale.cjs +2 -0
  536. package/dist/native/charts/src/engine/locale.cjs.map +1 -0
  537. package/dist/native/charts/src/engine/locale.js +60 -0
  538. package/dist/native/charts/src/engine/locale.js.map +1 -0
  539. package/dist/native/charts/src/engine/model.cjs +1 -1
  540. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  541. package/dist/native/charts/src/engine/model.js +223 -116
  542. package/dist/native/charts/src/engine/model.js.map +1 -1
  543. package/dist/native/charts/src/engine/overlay.cjs +1 -1
  544. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  545. package/dist/native/charts/src/engine/overlay.js +46 -23
  546. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  547. package/dist/native/charts/src/engine/presets.cjs +2 -2
  548. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  549. package/dist/native/charts/src/engine/presets.js +448 -33
  550. package/dist/native/charts/src/engine/presets.js.map +1 -1
  551. package/dist/native/charts/src/engine/scale.cjs +1 -1
  552. package/dist/native/charts/src/engine/scale.cjs.map +1 -1
  553. package/dist/native/charts/src/engine/scale.js +1 -1
  554. package/dist/native/charts/src/engine/scale.js.map +1 -1
  555. package/dist/native/charts/src/engine/scene.cjs +1 -1
  556. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  557. package/dist/native/charts/src/engine/scene.js +296 -167
  558. package/dist/native/charts/src/engine/scene.js.map +1 -1
  559. package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
  560. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
  561. package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
  562. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
  563. package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
  564. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
  565. package/dist/native/charts/src/engine/shapes/calendar.js +364 -0
  566. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
  567. package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
  568. package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
  569. package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
  570. package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
  571. package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
  572. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
  573. package/dist/native/charts/src/engine/shapes/draw.js +165 -0
  574. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
  575. package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
  576. package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
  577. package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
  578. package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
  579. package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
  580. package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
  581. package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
  582. package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
  583. package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
  584. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
  585. package/dist/native/charts/src/engine/shapes/hit.js +106 -0
  586. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
  587. package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
  588. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
  589. package/dist/native/charts/src/engine/shapes/labels.js +146 -0
  590. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
  591. package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
  592. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
  593. package/dist/native/charts/src/engine/shapes/layout.js +331 -0
  594. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
  595. package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
  596. package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
  597. package/dist/native/charts/src/engine/shapes/pie.js +302 -0
  598. package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
  599. package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
  600. package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
  601. package/dist/native/charts/src/engine/shapes/radar.js +198 -0
  602. package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
  603. package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
  604. package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
  605. package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
  606. package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
  607. package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
  608. package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
  609. package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
  610. package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
  611. package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
  612. package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
  613. package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
  614. package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
  615. package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
  616. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
  617. package/dist/native/charts/src/engine/shapes/scene.js +125 -0
  618. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
  619. package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
  620. package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
  621. package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
  622. package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
  623. package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
  624. package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
  625. package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
  626. package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
  627. package/dist/native/charts/src/engine/time.cjs +1 -1
  628. package/dist/native/charts/src/engine/time.cjs.map +1 -1
  629. package/dist/native/charts/src/engine/time.js +156 -91
  630. package/dist/native/charts/src/engine/time.js.map +1 -1
  631. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  632. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  633. package/dist/native/components/Chart/ChartBase.d.cts +1 -1
  634. package/dist/native/components/Chart/ChartBase.d.ts +1 -1
  635. package/dist/native/components/Chart/ChartBase.js +110 -107
  636. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  637. package/dist/native/components/Chart/charts.cjs +1 -1
  638. package/dist/native/components/Chart/charts.cjs.map +1 -1
  639. package/dist/native/components/Chart/charts.d.cts +6 -1
  640. package/dist/native/components/Chart/charts.d.ts +6 -1
  641. package/dist/native/components/Chart/charts.js +53 -29
  642. package/dist/native/components/Chart/charts.js.map +1 -1
  643. package/dist/native/components/Chart/index.cjs +1 -1
  644. package/dist/native/components/Chart/index.d.cts +1 -1
  645. package/dist/native/components/Chart/index.d.ts +1 -1
  646. package/dist/native/components/Chart/index.js +2 -2
  647. package/dist/native/components/Chart/scene.cjs +1 -1
  648. package/dist/native/components/Chart/scene.cjs.map +1 -1
  649. package/dist/native/components/Chart/scene.js +234 -217
  650. package/dist/native/components/Chart/scene.js.map +1 -1
  651. package/dist/native/components/Chart/types.d.cts +26 -3
  652. package/dist/native/components/Chart/types.d.ts +26 -3
  653. package/dist/native/components/Charts/charts.cjs +2 -0
  654. package/dist/native/components/Charts/charts.cjs.map +1 -0
  655. package/dist/native/components/Charts/charts.d.cts +41 -0
  656. package/dist/native/components/Charts/charts.d.ts +41 -0
  657. package/dist/native/components/Charts/charts.js +338 -0
  658. package/dist/native/components/Charts/charts.js.map +1 -0
  659. package/dist/native/components/Charts/index.cjs +1 -0
  660. package/dist/native/components/Charts/index.d.cts +2 -0
  661. package/dist/native/components/Charts/index.d.ts +2 -0
  662. package/dist/native/components/Charts/index.js +2 -0
  663. package/dist/native/components/Charts/types.d.cts +144 -0
  664. package/dist/native/components/Charts/types.d.ts +144 -0
  665. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
  666. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
  667. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
  668. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
  669. package/dist/native/components/ShapeChart/ShapeChartBase.js +271 -0
  670. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
  671. package/dist/native/components/ShapeChart/charts.cjs +2 -0
  672. package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
  673. package/dist/native/components/ShapeChart/charts.d.cts +38 -0
  674. package/dist/native/components/ShapeChart/charts.d.ts +38 -0
  675. package/dist/native/components/ShapeChart/charts.js +387 -0
  676. package/dist/native/components/ShapeChart/charts.js.map +1 -0
  677. package/dist/native/components/ShapeChart/draw.cjs +2 -0
  678. package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
  679. package/dist/native/components/ShapeChart/draw.d.cts +4 -0
  680. package/dist/native/components/ShapeChart/draw.d.ts +4 -0
  681. package/dist/native/components/ShapeChart/draw.js +104 -0
  682. package/dist/native/components/ShapeChart/draw.js.map +1 -0
  683. package/dist/native/components/ShapeChart/geometry.cjs +2 -0
  684. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
  685. package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
  686. package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
  687. package/dist/native/components/ShapeChart/geometry.js +602 -0
  688. package/dist/native/components/ShapeChart/geometry.js.map +1 -0
  689. package/dist/native/components/ShapeChart/index.cjs +1 -0
  690. package/dist/native/components/ShapeChart/index.d.cts +2 -0
  691. package/dist/native/components/ShapeChart/index.d.ts +2 -0
  692. package/dist/native/components/ShapeChart/index.js +2 -0
  693. package/dist/native/components/ShapeChart/recorder.cjs +2 -0
  694. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
  695. package/dist/native/components/ShapeChart/recorder.d.cts +106 -0
  696. package/dist/native/components/ShapeChart/recorder.d.ts +106 -0
  697. package/dist/native/components/ShapeChart/recorder.js +574 -0
  698. package/dist/native/components/ShapeChart/recorder.js.map +1 -0
  699. package/dist/native/components/ShapeChart/types.d.cts +509 -0
  700. package/dist/native/components/ShapeChart/types.d.ts +509 -0
  701. package/dist/native/index.cjs +1 -1
  702. package/dist/native/index.d.cts +2 -0
  703. package/dist/native/index.d.ts +2 -0
  704. package/dist/native/index.js +14 -10
  705. package/dist/native/manifest.d.cts +6 -4
  706. package/dist/native/manifest.d.ts +6 -4
  707. package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
  708. package/dist/native/source/components/Chart/charts.tsx +42 -6
  709. package/dist/native/source/components/Chart/index.ts +1 -0
  710. package/dist/native/source/components/Chart/scene.tsx +154 -84
  711. package/dist/native/source/components/Chart/types.ts +31 -1
  712. package/dist/native/source/components/Charts/charts.tsx +493 -0
  713. package/dist/native/source/components/Charts/index.ts +14 -0
  714. package/dist/native/source/components/Charts/types.ts +207 -0
  715. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +484 -0
  716. package/dist/native/source/components/ShapeChart/charts.tsx +605 -0
  717. package/dist/native/source/components/ShapeChart/draw.tsx +170 -0
  718. package/dist/native/source/components/ShapeChart/geometry.ts +1185 -0
  719. package/dist/native/source/components/ShapeChart/index.ts +15 -0
  720. package/dist/native/source/components/ShapeChart/recorder.ts +830 -0
  721. package/dist/native/source/components/ShapeChart/types.ts +564 -0
  722. package/dist/native/source/index.ts +2 -0
  723. package/dist/native/source/manifest.ts +30 -4
  724. package/dist/taro/charts.d.ts +209 -4
  725. package/dist/taro/index.d.ts +1 -0
  726. package/dist/taro/index.js +7517 -1856
  727. package/dist/taro/manifest.d.ts +1 -0
  728. package/dist/taro/shape-charts.d.ts +537 -0
  729. package/dist/uni/AreaChart.vue +68 -0
  730. package/dist/uni/AreaChart.vue.d.ts +120 -0
  731. package/dist/uni/Badge.vue.d.ts +1 -1
  732. package/dist/uni/BoxPlotChart.vue +66 -0
  733. package/dist/uni/BoxPlotChart.vue.d.ts +102 -0
  734. package/dist/uni/BubbleChart.vue +68 -0
  735. package/dist/uni/BubbleChart.vue.d.ts +106 -0
  736. package/dist/uni/BulletChart.vue +86 -0
  737. package/dist/uni/BulletChart.vue.d.ts +110 -0
  738. package/dist/uni/CalendarHeatmap.vue +92 -0
  739. package/dist/uni/CalendarHeatmap.vue.d.ts +129 -0
  740. package/dist/uni/CandlestickChart.vue +66 -0
  741. package/dist/uni/CandlestickChart.vue.d.ts +100 -0
  742. package/dist/uni/DonutChart.vue +72 -0
  743. package/dist/uni/DonutChart.vue.d.ts +114 -0
  744. package/dist/uni/FunnelChart.vue +67 -0
  745. package/dist/uni/FunnelChart.vue.d.ts +104 -0
  746. package/dist/uni/GanttChart.vue +67 -0
  747. package/dist/uni/GanttChart.vue.d.ts +123 -0
  748. package/dist/uni/GaugeChart.vue +77 -0
  749. package/dist/uni/GaugeChart.vue.d.ts +123 -0
  750. package/dist/uni/HeatmapChart.vue +66 -0
  751. package/dist/uni/HeatmapChart.vue.d.ts +114 -0
  752. package/dist/uni/HistogramChart.vue +66 -0
  753. package/dist/uni/HistogramChart.vue.d.ts +121 -0
  754. package/dist/uni/HorizontalBarChart.vue +68 -0
  755. package/dist/uni/HorizontalBarChart.vue.d.ts +127 -0
  756. package/dist/uni/Input.vue.d.ts +1 -1
  757. package/dist/uni/MixedChart.vue +68 -0
  758. package/dist/uni/MixedChart.vue.d.ts +106 -0
  759. package/dist/uni/NumberInput.vue.d.ts +1 -1
  760. package/dist/uni/PieChart.vue +72 -0
  761. package/dist/uni/PieChart.vue.d.ts +114 -0
  762. package/dist/uni/RadarChart.vue +67 -0
  763. package/dist/uni/RadarChart.vue.d.ts +110 -0
  764. package/dist/uni/RadialBarChart.vue +90 -0
  765. package/dist/uni/RadialBarChart.vue.d.ts +132 -0
  766. package/dist/uni/RangeAreaChart.vue +68 -0
  767. package/dist/uni/RangeAreaChart.vue.d.ts +102 -0
  768. package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
  769. package/dist/uni/SankeyChart.vue +88 -0
  770. package/dist/uni/SankeyChart.vue.d.ts +121 -0
  771. package/dist/uni/ShapeChart.vue +73 -0
  772. package/dist/uni/ShapeChart.vue.d.ts +54 -0
  773. package/dist/uni/Sparkline.vue +58 -0
  774. package/dist/uni/Sparkline.vue.d.ts +77 -0
  775. package/dist/uni/SunburstChart.vue +90 -0
  776. package/dist/uni/SunburstChart.vue.d.ts +114 -0
  777. package/dist/uni/Textarea.vue.d.ts +1 -1
  778. package/dist/uni/TimePicker.vue.d.ts +1 -1
  779. package/dist/uni/TreemapChart.vue +65 -0
  780. package/dist/uni/TreemapChart.vue.d.ts +100 -0
  781. package/dist/uni/WaterfallChart.vue +66 -0
  782. package/dist/uni/WaterfallChart.vue.d.ts +125 -0
  783. package/dist/uni/chart-types.d.ts +216 -2
  784. package/dist/uni/chart-types.js +174 -0
  785. package/dist/uni/charts-canvas.js +8 -3
  786. package/dist/uni/index.d.ts +26 -1
  787. package/dist/uni/index.js +26 -1
  788. package/dist/uni/manifest.d.ts +272 -0
  789. package/dist/uni/manifest.js +387 -0
  790. package/dist/uni/named-chart-options.d.ts +88 -0
  791. package/dist/uni/named-chart-options.js +156 -0
  792. package/dist/uni/shape-chart-canvas.d.ts +51 -0
  793. package/dist/uni/shape-chart-canvas.js +342 -0
  794. package/dist/uni/shape-chart-types.d.ts +381 -0
  795. package/dist/uni/shape-chart-types.js +261 -0
  796. package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
  797. package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
  798. package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
  799. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
  800. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  801. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
  802. package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
  803. package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
  804. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
  805. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  806. package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
  807. package/dist/vue/components/Chart/BarChart.vue.js +7 -0
  808. package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
  809. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
  810. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  811. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +112 -0
  812. package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
  813. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
  814. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +57 -0
  815. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  816. package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
  817. package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
  818. package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
  819. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
  820. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  821. package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
  822. package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
  823. package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
  824. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
  825. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  826. package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
  827. package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
  828. package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
  829. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
  830. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  831. package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
  832. package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
  833. package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
  834. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
  835. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  836. package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
  837. package/dist/vue/components/Chart/Chart.vue.js +7 -0
  838. package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
  839. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
  840. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  841. package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
  842. package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
  843. package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
  844. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
  845. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  846. package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
  847. package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
  848. package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
  849. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
  850. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  851. package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
  852. package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
  853. package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
  854. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
  855. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  856. package/dist/vue/components/Chart/GanttChart.vue.d.ts +132 -0
  857. package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
  858. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
  859. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +98 -0
  860. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  861. package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
  862. package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
  863. package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
  864. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
  865. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  866. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +125 -0
  867. package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
  868. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
  869. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +65 -0
  870. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  871. package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
  872. package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
  873. package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
  874. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
  875. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  876. package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
  877. package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
  878. package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
  879. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
  880. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  881. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
  882. package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
  883. package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
  884. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  885. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  886. package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
  887. package/dist/vue/components/Chart/LineChart.vue.js +7 -0
  888. package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
  889. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
  890. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  891. package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
  892. package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
  893. package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
  894. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
  895. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  896. package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
  897. package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
  898. package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
  899. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
  900. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
  901. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +128 -0
  902. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
  903. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
  904. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
  905. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  906. package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
  907. package/dist/vue/components/Chart/PieChart.vue.js +7 -0
  908. package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
  909. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
  910. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  911. package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
  912. package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
  913. package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
  914. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
  915. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  916. package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
  917. package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
  918. package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
  919. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
  920. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  921. package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
  922. package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
  923. package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
  924. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
  925. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  926. package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
  927. package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
  928. package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
  929. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
  930. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  931. package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
  932. package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
  933. package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
  934. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
  935. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  936. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
  937. package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
  938. package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
  939. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  940. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  941. package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
  942. package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
  943. package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
  944. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
  945. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  946. package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
  947. package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
  948. package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
  949. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
  950. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  951. package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
  952. package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
  953. package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
  954. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
  955. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  956. package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
  957. package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
  958. package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
  959. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
  960. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  961. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
  962. package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
  963. package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
  964. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
  965. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  966. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +114 -0
  967. package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
  968. package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
  969. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
  970. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
  971. package/dist/vue/components/Chart/TradingChart.vue.d.ts +160 -0
  972. package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
  973. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
  974. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +70 -0
  975. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  976. package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
  977. package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
  978. package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
  979. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
  980. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  981. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +132 -0
  982. package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
  983. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
  984. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +68 -0
  985. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  986. package/dist/vue/components/Chart/cartesian.d.ts +47 -0
  987. package/dist/vue/components/Chart/cartesian.js +56 -0
  988. package/dist/vue/components/Chart/cartesian.js.map +1 -0
  989. package/dist/vue/components/Chart/engine.d.ts +35 -0
  990. package/dist/vue/components/Chart/engine.js +35 -0
  991. package/dist/vue/components/Chart/engine.js.map +1 -0
  992. package/dist/vue/components/Chart/index.d.ts +41 -0
  993. package/dist/vue/components/Chart/index.js +40 -0
  994. package/dist/vue/components/Chart/orderbook.d.ts +359 -0
  995. package/dist/vue/components/Chart/orderbook.js +126 -0
  996. package/dist/vue/components/Chart/orderbook.js.map +1 -0
  997. package/dist/vue/components/Chart/props.d.ts +188 -0
  998. package/dist/vue/components/Chart/props.js +92 -0
  999. package/dist/vue/components/Chart/props.js.map +1 -0
  1000. package/dist/vue/components/Chart/shape.d.ts +41 -0
  1001. package/dist/vue/components/Chart/shape.js +42 -0
  1002. package/dist/vue/components/Chart/shape.js.map +1 -0
  1003. package/dist/vue/components/Chart/three-d.d.ts +106 -0
  1004. package/dist/vue/components/Chart/three-d.js +88 -0
  1005. package/dist/vue/components/Chart/three-d.js.map +1 -0
  1006. package/dist/vue/components/Chart/trading.d.ts +105 -0
  1007. package/dist/vue/components/Chart/trading.js +55 -0
  1008. package/dist/vue/components/Chart/trading.js.map +1 -0
  1009. package/dist/vue/components/Chart/types.d.ts +137 -0
  1010. package/dist/vue/global.d.ts +38 -0
  1011. package/dist/vue/groups/charts.d.ts +1 -0
  1012. package/dist/vue/groups/charts.js +87 -0
  1013. package/dist/vue/groups/charts.js.map +1 -0
  1014. package/dist/vue/index.d.ts +1 -0
  1015. package/dist/vue/index.js +63 -23
  1016. package/dist/vue/plugin.js +12 -10
  1017. package/dist/vue/plugin.js.map +1 -1
  1018. package/dist/weapp/area-chart/index.js +1 -0
  1019. package/dist/weapp/area-chart/index.json +1 -0
  1020. package/dist/weapp/area-chart/index.wxml +1 -0
  1021. package/dist/weapp/area-chart/index.wxss +1 -0
  1022. package/dist/weapp/box-plot-chart/index.js +1 -0
  1023. package/dist/weapp/box-plot-chart/index.json +1 -0
  1024. package/dist/weapp/box-plot-chart/index.wxml +1 -0
  1025. package/dist/weapp/box-plot-chart/index.wxss +1 -0
  1026. package/dist/weapp/bubble-chart/index.js +1 -0
  1027. package/dist/weapp/bubble-chart/index.json +1 -0
  1028. package/dist/weapp/bubble-chart/index.wxml +1 -0
  1029. package/dist/weapp/bubble-chart/index.wxss +1 -0
  1030. package/dist/weapp/bullet-chart/index.js +1 -0
  1031. package/dist/weapp/bullet-chart/index.json +1 -0
  1032. package/dist/weapp/bullet-chart/index.wxml +1 -0
  1033. package/dist/weapp/bullet-chart/index.wxss +1 -0
  1034. package/dist/weapp/calendar-heatmap/index.js +1 -0
  1035. package/dist/weapp/calendar-heatmap/index.json +1 -0
  1036. package/dist/weapp/calendar-heatmap/index.wxml +1 -0
  1037. package/dist/weapp/calendar-heatmap/index.wxss +1 -0
  1038. package/dist/weapp/candlestick-chart/index.js +1 -0
  1039. package/dist/weapp/candlestick-chart/index.json +1 -0
  1040. package/dist/weapp/candlestick-chart/index.wxml +1 -0
  1041. package/dist/weapp/candlestick-chart/index.wxss +1 -0
  1042. package/dist/weapp/charts/canvas.js +11436 -0
  1043. package/dist/weapp/charts/core.d.ts +2 -0
  1044. package/dist/weapp/charts/core.js +41 -0
  1045. package/dist/weapp/controls.js +1433 -4478
  1046. package/dist/weapp/donut-chart/index.js +1 -0
  1047. package/dist/weapp/donut-chart/index.json +1 -0
  1048. package/dist/weapp/donut-chart/index.wxml +1 -0
  1049. package/dist/weapp/donut-chart/index.wxss +1 -0
  1050. package/dist/weapp/funnel-chart/index.js +1 -0
  1051. package/dist/weapp/funnel-chart/index.json +1 -0
  1052. package/dist/weapp/funnel-chart/index.wxml +1 -0
  1053. package/dist/weapp/funnel-chart/index.wxss +1 -0
  1054. package/dist/weapp/gantt-chart/index.js +1 -0
  1055. package/dist/weapp/gantt-chart/index.json +1 -0
  1056. package/dist/weapp/gantt-chart/index.wxml +1 -0
  1057. package/dist/weapp/gantt-chart/index.wxss +1 -0
  1058. package/dist/weapp/gauge-chart/index.js +1 -0
  1059. package/dist/weapp/gauge-chart/index.json +1 -0
  1060. package/dist/weapp/gauge-chart/index.wxml +1 -0
  1061. package/dist/weapp/gauge-chart/index.wxss +1 -0
  1062. package/dist/weapp/heatmap-chart/index.js +1 -0
  1063. package/dist/weapp/heatmap-chart/index.json +1 -0
  1064. package/dist/weapp/heatmap-chart/index.wxml +1 -0
  1065. package/dist/weapp/heatmap-chart/index.wxss +1 -0
  1066. package/dist/weapp/histogram-chart/index.js +1 -0
  1067. package/dist/weapp/histogram-chart/index.json +1 -0
  1068. package/dist/weapp/histogram-chart/index.wxml +1 -0
  1069. package/dist/weapp/histogram-chart/index.wxss +1 -0
  1070. package/dist/weapp/horizontal-bar-chart/index.js +1 -0
  1071. package/dist/weapp/horizontal-bar-chart/index.json +1 -0
  1072. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
  1073. package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
  1074. package/dist/weapp/mixed-chart/index.js +1 -0
  1075. package/dist/weapp/mixed-chart/index.json +1 -0
  1076. package/dist/weapp/mixed-chart/index.wxml +1 -0
  1077. package/dist/weapp/mixed-chart/index.wxss +1 -0
  1078. package/dist/weapp/pie-chart/index.js +1 -0
  1079. package/dist/weapp/pie-chart/index.json +1 -0
  1080. package/dist/weapp/pie-chart/index.wxml +1 -0
  1081. package/dist/weapp/pie-chart/index.wxss +1 -0
  1082. package/dist/weapp/radar-chart/index.js +1 -0
  1083. package/dist/weapp/radar-chart/index.json +1 -0
  1084. package/dist/weapp/radar-chart/index.wxml +1 -0
  1085. package/dist/weapp/radar-chart/index.wxss +1 -0
  1086. package/dist/weapp/radial-bar-chart/index.js +1 -0
  1087. package/dist/weapp/radial-bar-chart/index.json +1 -0
  1088. package/dist/weapp/radial-bar-chart/index.wxml +1 -0
  1089. package/dist/weapp/radial-bar-chart/index.wxss +1 -0
  1090. package/dist/weapp/range-area-chart/index.js +1 -0
  1091. package/dist/weapp/range-area-chart/index.json +1 -0
  1092. package/dist/weapp/range-area-chart/index.wxml +1 -0
  1093. package/dist/weapp/range-area-chart/index.wxss +1 -0
  1094. package/dist/weapp/sankey-chart/index.js +1 -0
  1095. package/dist/weapp/sankey-chart/index.json +1 -0
  1096. package/dist/weapp/sankey-chart/index.wxml +1 -0
  1097. package/dist/weapp/sankey-chart/index.wxss +1 -0
  1098. package/dist/weapp/shape-chart/index.js +1 -0
  1099. package/dist/weapp/shape-chart/index.json +1 -0
  1100. package/dist/weapp/shape-chart/index.wxml +1 -0
  1101. package/dist/weapp/shape-chart/index.wxss +1 -0
  1102. package/dist/weapp/sparkline/index.js +1 -0
  1103. package/dist/weapp/sparkline/index.json +1 -0
  1104. package/dist/weapp/sparkline/index.wxml +1 -0
  1105. package/dist/weapp/sparkline/index.wxss +1 -0
  1106. package/dist/weapp/sunburst-chart/index.js +1 -0
  1107. package/dist/weapp/sunburst-chart/index.json +1 -0
  1108. package/dist/weapp/sunburst-chart/index.wxml +1 -0
  1109. package/dist/weapp/sunburst-chart/index.wxss +1 -0
  1110. package/dist/weapp/treemap-chart/index.js +1 -0
  1111. package/dist/weapp/treemap-chart/index.json +1 -0
  1112. package/dist/weapp/treemap-chart/index.wxml +1 -0
  1113. package/dist/weapp/treemap-chart/index.wxss +1 -0
  1114. package/dist/weapp/types.d.ts +466 -0
  1115. package/dist/weapp/waterfall-chart/index.js +1 -0
  1116. package/dist/weapp/waterfall-chart/index.json +1 -0
  1117. package/dist/weapp/waterfall-chart/index.wxml +1 -0
  1118. package/dist/weapp/waterfall-chart/index.wxss +1 -0
  1119. package/dist/web-components/components/chart/chart.d.ts +58 -0
  1120. package/dist/web-components/components/chart/chart.js +55 -0
  1121. package/dist/web-components/components/chart/chart.js.map +1 -0
  1122. package/dist/web-components/components/chart/charts.d.ts +252 -0
  1123. package/dist/web-components/components/chart/charts.js +201 -0
  1124. package/dist/web-components/components/chart/charts.js.map +1 -0
  1125. package/dist/web-components/components/chart/engine-element.d.ts +53 -0
  1126. package/dist/web-components/components/chart/engine-element.js +77 -0
  1127. package/dist/web-components/components/chart/engine-element.js.map +1 -0
  1128. package/dist/web-components/components/chart/extended.d.ts +224 -0
  1129. package/dist/web-components/components/chart/extended.js +183 -0
  1130. package/dist/web-components/components/chart/extended.js.map +1 -0
  1131. package/dist/web-components/components/chart/series.d.ts +7 -0
  1132. package/dist/web-components/components/chart/series.js +14 -0
  1133. package/dist/web-components/components/chart/series.js.map +1 -0
  1134. package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
  1135. package/dist/web-components/components/chart/shape-chart.js +161 -0
  1136. package/dist/web-components/components/chart/shape-chart.js.map +1 -0
  1137. package/dist/web-components/components/chart/shapes-extended.d.ts +162 -0
  1138. package/dist/web-components/components/chart/shapes-extended.js +156 -0
  1139. package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
  1140. package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
  1141. package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
  1142. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
  1143. package/dist/web-components/components/order-book/order-book.d.ts +165 -0
  1144. package/dist/web-components/components/order-book/order-book.js +174 -0
  1145. package/dist/web-components/components/order-book/order-book.js.map +1 -0
  1146. package/dist/web-components/components/trading-chart/trading-chart.d.ts +96 -0
  1147. package/dist/web-components/components/trading-chart/trading-chart.js +96 -0
  1148. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
  1149. package/dist/web-components/elements/chart-3d.d.ts +2 -0
  1150. package/dist/web-components/elements/chart-3d.js +13 -0
  1151. package/dist/web-components/elements/chart-3d.js.map +1 -0
  1152. package/dist/web-components/elements/chart.d.ts +7 -0
  1153. package/dist/web-components/elements/chart.js +43 -0
  1154. package/dist/web-components/elements/chart.js.map +1 -0
  1155. package/dist/web-components/elements/order-book.d.ts +2 -0
  1156. package/dist/web-components/elements/order-book.js +13 -0
  1157. package/dist/web-components/elements/order-book.js.map +1 -0
  1158. package/dist/web-components/elements/trading-chart.d.ts +2 -0
  1159. package/dist/web-components/elements/trading-chart.js +8 -0
  1160. package/dist/web-components/elements/trading-chart.js.map +1 -0
  1161. package/dist/web-components/html-custom-data.json +1192 -29
  1162. package/dist/web-components/types/react.d.ts +435 -0
  1163. package/dist/web-components/types/solid.d.ts +321 -0
  1164. package/dist/web-components/types/svelte.d.ts +321 -0
  1165. package/dist/web-components/types/vue.d.ts +359 -0
  1166. 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
+ };