minerva-design 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1337) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +18546 -7329
  4. package/dist/angular/fesm2022/minerva-angular.mjs +8303 -172
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +2809 -0
  7. package/dist/charts/canvas.d.cts +8 -3
  8. package/dist/charts/canvas.d.ts +8 -3
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +10 -5
  11. package/dist/charts/core.d.ts +10 -5
  12. package/dist/charts/core.js +27 -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 +43 -20
  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 +193 -116
  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 +486 -350
  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.d.cts +18 -0
  32. package/dist/charts/engine/color.d.ts +18 -0
  33. package/dist/charts/engine/color.js +47 -1
  34. package/dist/charts/engine/color.js.map +1 -1
  35. package/dist/charts/engine/controller.cjs +2 -2
  36. package/dist/charts/engine/controller.cjs.map +1 -1
  37. package/dist/charts/engine/controller.d.cts +44 -4
  38. package/dist/charts/engine/controller.d.ts +44 -4
  39. package/dist/charts/engine/controller.js +421 -314
  40. package/dist/charts/engine/controller.js.map +1 -1
  41. package/dist/charts/engine/data.cjs +1 -1
  42. package/dist/charts/engine/data.cjs.map +1 -1
  43. package/dist/charts/engine/data.d.cts +9 -1
  44. package/dist/charts/engine/data.d.ts +9 -1
  45. package/dist/charts/engine/data.js +65 -49
  46. package/dist/charts/engine/data.js.map +1 -1
  47. package/dist/charts/engine/defaults.cjs +2 -0
  48. package/dist/charts/engine/defaults.cjs.map +1 -0
  49. package/dist/charts/engine/defaults.d.cts +20 -0
  50. package/dist/charts/engine/defaults.d.ts +20 -0
  51. package/dist/charts/engine/defaults.js +35 -0
  52. package/dist/charts/engine/defaults.js.map +1 -0
  53. package/dist/charts/engine/format.cjs +1 -1
  54. package/dist/charts/engine/format.cjs.map +1 -1
  55. package/dist/charts/engine/format.d.cts +27 -6
  56. package/dist/charts/engine/format.d.ts +27 -6
  57. package/dist/charts/engine/format.js +59 -21
  58. package/dist/charts/engine/format.js.map +1 -1
  59. package/dist/charts/engine/graph/chart.cjs +2 -0
  60. package/dist/charts/engine/graph/chart.cjs.map +1 -0
  61. package/dist/charts/engine/graph/chart.d.cts +3 -0
  62. package/dist/charts/engine/graph/chart.d.ts +3 -0
  63. package/dist/charts/engine/graph/chart.js +1565 -0
  64. package/dist/charts/engine/graph/chart.js.map +1 -0
  65. package/dist/charts/engine/graph/circular.cjs +2 -0
  66. package/dist/charts/engine/graph/circular.cjs.map +1 -0
  67. package/dist/charts/engine/graph/circular.d.cts +16 -0
  68. package/dist/charts/engine/graph/circular.d.ts +16 -0
  69. package/dist/charts/engine/graph/circular.js +62 -0
  70. package/dist/charts/engine/graph/circular.js.map +1 -0
  71. package/dist/charts/engine/graph/dag.cjs +2 -0
  72. package/dist/charts/engine/graph/dag.cjs.map +1 -0
  73. package/dist/charts/engine/graph/dag.d.cts +34 -0
  74. package/dist/charts/engine/graph/dag.d.ts +34 -0
  75. package/dist/charts/engine/graph/dag.js +314 -0
  76. package/dist/charts/engine/graph/dag.js.map +1 -0
  77. package/dist/charts/engine/graph/dom.cjs +2 -0
  78. package/dist/charts/engine/graph/dom.cjs.map +1 -0
  79. package/dist/charts/engine/graph/dom.d.cts +23 -0
  80. package/dist/charts/engine/graph/dom.d.ts +23 -0
  81. package/dist/charts/engine/graph/dom.js +158 -0
  82. package/dist/charts/engine/graph/dom.js.map +1 -0
  83. package/dist/charts/engine/graph/force.cjs +2 -0
  84. package/dist/charts/engine/graph/force.cjs.map +1 -0
  85. package/dist/charts/engine/graph/force.d.cts +67 -0
  86. package/dist/charts/engine/graph/force.d.ts +67 -0
  87. package/dist/charts/engine/graph/force.js +325 -0
  88. package/dist/charts/engine/graph/force.js.map +1 -0
  89. package/dist/charts/engine/graph/geometry.cjs +2 -0
  90. package/dist/charts/engine/graph/geometry.cjs.map +1 -0
  91. package/dist/charts/engine/graph/geometry.d.cts +37 -0
  92. package/dist/charts/engine/graph/geometry.d.ts +37 -0
  93. package/dist/charts/engine/graph/geometry.js +144 -0
  94. package/dist/charts/engine/graph/geometry.js.map +1 -0
  95. package/dist/charts/engine/graph/index.cjs +1 -0
  96. package/dist/charts/engine/graph/index.d.cts +6 -0
  97. package/dist/charts/engine/graph/index.d.ts +6 -0
  98. package/dist/charts/engine/graph/index.js +6 -0
  99. package/dist/charts/engine/graph/labels.cjs +2 -0
  100. package/dist/charts/engine/graph/labels.cjs.map +1 -0
  101. package/dist/charts/engine/graph/labels.d.cts +12 -0
  102. package/dist/charts/engine/graph/labels.d.ts +12 -0
  103. package/dist/charts/engine/graph/labels.js +128 -0
  104. package/dist/charts/engine/graph/labels.js.map +1 -0
  105. package/dist/charts/engine/graph/model.cjs +2 -0
  106. package/dist/charts/engine/graph/model.cjs.map +1 -0
  107. package/dist/charts/engine/graph/model.d.cts +43 -0
  108. package/dist/charts/engine/graph/model.d.ts +43 -0
  109. package/dist/charts/engine/graph/model.js +88 -0
  110. package/dist/charts/engine/graph/model.js.map +1 -0
  111. package/dist/charts/engine/graph/sizing.cjs +2 -0
  112. package/dist/charts/engine/graph/sizing.cjs.map +1 -0
  113. package/dist/charts/engine/graph/sizing.d.cts +33 -0
  114. package/dist/charts/engine/graph/sizing.d.ts +33 -0
  115. package/dist/charts/engine/graph/sizing.js +60 -0
  116. package/dist/charts/engine/graph/sizing.js.map +1 -0
  117. package/dist/charts/engine/graph/tree.cjs +2 -0
  118. package/dist/charts/engine/graph/tree.cjs.map +1 -0
  119. package/dist/charts/engine/graph/tree.d.cts +30 -0
  120. package/dist/charts/engine/graph/tree.d.ts +30 -0
  121. package/dist/charts/engine/graph/tree.js +218 -0
  122. package/dist/charts/engine/graph/tree.js.map +1 -0
  123. package/dist/charts/engine/graph/types.d.cts +626 -0
  124. package/dist/charts/engine/graph/types.d.ts +626 -0
  125. package/dist/charts/engine/graph/worker.cjs +46 -0
  126. package/dist/charts/engine/graph/worker.cjs.map +1 -0
  127. package/dist/charts/engine/graph/worker.d.cts +36 -0
  128. package/dist/charts/engine/graph/worker.d.ts +36 -0
  129. package/dist/charts/engine/graph/worker.js +129 -0
  130. package/dist/charts/engine/graph/worker.js.map +1 -0
  131. package/dist/charts/engine/items.cjs +1 -1
  132. package/dist/charts/engine/items.cjs.map +1 -1
  133. package/dist/charts/engine/items.d.cts +15 -2
  134. package/dist/charts/engine/items.d.ts +15 -2
  135. package/dist/charts/engine/items.js +257 -81
  136. package/dist/charts/engine/items.js.map +1 -1
  137. package/dist/charts/engine/labels.cjs +2 -0
  138. package/dist/charts/engine/labels.cjs.map +1 -0
  139. package/dist/charts/engine/labels.d.cts +13 -0
  140. package/dist/charts/engine/labels.d.ts +13 -0
  141. package/dist/charts/engine/labels.js +98 -0
  142. package/dist/charts/engine/labels.js.map +1 -0
  143. package/dist/charts/engine/layout.cjs +1 -1
  144. package/dist/charts/engine/layout.cjs.map +1 -1
  145. package/dist/charts/engine/layout.d.cts +43 -2
  146. package/dist/charts/engine/layout.d.ts +43 -2
  147. package/dist/charts/engine/layout.js +62 -12
  148. package/dist/charts/engine/layout.js.map +1 -1
  149. package/dist/charts/engine/locale.cjs +2 -0
  150. package/dist/charts/engine/locale.cjs.map +1 -0
  151. package/dist/charts/engine/locale.d.cts +33 -0
  152. package/dist/charts/engine/locale.d.ts +33 -0
  153. package/dist/charts/engine/locale.js +68 -0
  154. package/dist/charts/engine/locale.js.map +1 -0
  155. package/dist/charts/engine/model.cjs +1 -1
  156. package/dist/charts/engine/model.cjs.map +1 -1
  157. package/dist/charts/engine/model.d.cts +77 -2
  158. package/dist/charts/engine/model.d.ts +77 -2
  159. package/dist/charts/engine/model.js +304 -116
  160. package/dist/charts/engine/model.js.map +1 -1
  161. package/dist/charts/engine/orderbook/book.cjs +2 -0
  162. package/dist/charts/engine/orderbook/book.cjs.map +1 -0
  163. package/dist/charts/engine/orderbook/book.d.cts +28 -0
  164. package/dist/charts/engine/orderbook/book.d.ts +28 -0
  165. package/dist/charts/engine/orderbook/book.js +134 -0
  166. package/dist/charts/engine/orderbook/book.js.map +1 -0
  167. package/dist/charts/engine/orderbook/depth.cjs +2 -0
  168. package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
  169. package/dist/charts/engine/orderbook/depth.d.cts +7 -0
  170. package/dist/charts/engine/orderbook/depth.d.ts +7 -0
  171. package/dist/charts/engine/orderbook/depth.js +413 -0
  172. package/dist/charts/engine/orderbook/depth.js.map +1 -0
  173. package/dist/charts/engine/orderbook/format.cjs +2 -0
  174. package/dist/charts/engine/orderbook/format.cjs.map +1 -0
  175. package/dist/charts/engine/orderbook/format.d.cts +49 -0
  176. package/dist/charts/engine/orderbook/format.d.ts +49 -0
  177. package/dist/charts/engine/orderbook/format.js +65 -0
  178. package/dist/charts/engine/orderbook/format.js.map +1 -0
  179. package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
  180. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
  181. package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
  182. package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
  183. package/dist/charts/engine/orderbook/heatmap.js +822 -0
  184. package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
  185. package/dist/charts/engine/orderbook/host.cjs +2 -0
  186. package/dist/charts/engine/orderbook/host.cjs.map +1 -0
  187. package/dist/charts/engine/orderbook/host.d.cts +50 -0
  188. package/dist/charts/engine/orderbook/host.d.ts +50 -0
  189. package/dist/charts/engine/orderbook/host.js +161 -0
  190. package/dist/charts/engine/orderbook/host.js.map +1 -0
  191. package/dist/charts/engine/orderbook/index.cjs +1 -0
  192. package/dist/charts/engine/orderbook/index.d.cts +6 -0
  193. package/dist/charts/engine/orderbook/index.d.ts +6 -0
  194. package/dist/charts/engine/orderbook/index.js +6 -0
  195. package/dist/charts/engine/orderbook/ladder.cjs +2 -0
  196. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
  197. package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
  198. package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
  199. package/dist/charts/engine/orderbook/ladder.js +341 -0
  200. package/dist/charts/engine/orderbook/ladder.js.map +1 -0
  201. package/dist/charts/engine/orderbook/layout.cjs +2 -0
  202. package/dist/charts/engine/orderbook/layout.cjs.map +1 -0
  203. package/dist/charts/engine/orderbook/layout.d.cts +37 -0
  204. package/dist/charts/engine/orderbook/layout.d.ts +37 -0
  205. package/dist/charts/engine/orderbook/layout.js +70 -0
  206. package/dist/charts/engine/orderbook/layout.js.map +1 -0
  207. package/dist/charts/engine/orderbook/tape.cjs +2 -0
  208. package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
  209. package/dist/charts/engine/orderbook/tape.d.cts +6 -0
  210. package/dist/charts/engine/orderbook/tape.d.ts +6 -0
  211. package/dist/charts/engine/orderbook/tape.js +450 -0
  212. package/dist/charts/engine/orderbook/tape.js.map +1 -0
  213. package/dist/charts/engine/orderbook/types.d.cts +751 -0
  214. package/dist/charts/engine/orderbook/types.d.ts +751 -0
  215. package/dist/charts/engine/overlay.cjs +1 -1
  216. package/dist/charts/engine/overlay.cjs.map +1 -1
  217. package/dist/charts/engine/overlay.d.cts +28 -2
  218. package/dist/charts/engine/overlay.d.ts +28 -2
  219. package/dist/charts/engine/overlay.js +138 -96
  220. package/dist/charts/engine/overlay.js.map +1 -1
  221. package/dist/charts/engine/presets.cjs +2 -2
  222. package/dist/charts/engine/presets.cjs.map +1 -1
  223. package/dist/charts/engine/presets.d.cts +273 -3
  224. package/dist/charts/engine/presets.d.ts +273 -3
  225. package/dist/charts/engine/presets.js +390 -38
  226. package/dist/charts/engine/presets.js.map +1 -1
  227. package/dist/charts/engine/renderers/detect.cjs +1 -1
  228. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  229. package/dist/charts/engine/renderers/detect.d.cts +2 -1
  230. package/dist/charts/engine/renderers/detect.d.ts +2 -1
  231. package/dist/charts/engine/renderers/detect.js +24 -19
  232. package/dist/charts/engine/renderers/detect.js.map +1 -1
  233. package/dist/charts/engine/renderers/gl.cjs +2 -0
  234. package/dist/charts/engine/renderers/gl.cjs.map +1 -0
  235. package/dist/charts/engine/renderers/gl.d.cts +21 -0
  236. package/dist/charts/engine/renderers/gl.d.ts +21 -0
  237. package/dist/charts/engine/renderers/gl.js +56 -0
  238. package/dist/charts/engine/renderers/gl.js.map +1 -0
  239. package/dist/charts/engine/renderers/shaders.cjs +143 -1
  240. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  241. package/dist/charts/engine/renderers/shaders.d.cts +16 -0
  242. package/dist/charts/engine/renderers/shaders.d.ts +16 -0
  243. package/dist/charts/engine/renderers/shaders.js +139 -1
  244. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  245. package/dist/charts/engine/renderers/webgl.cjs +2 -0
  246. package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
  247. package/dist/charts/engine/renderers/webgl.d.cts +4 -0
  248. package/dist/charts/engine/renderers/webgl.d.ts +4 -0
  249. package/dist/charts/engine/renderers/webgl.js +133 -0
  250. package/dist/charts/engine/renderers/webgl.js.map +1 -0
  251. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  252. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  253. package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
  254. package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
  255. package/dist/charts/engine/renderers/webgl2.js +59 -108
  256. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  257. package/dist/charts/engine/scale.cjs +1 -1
  258. package/dist/charts/engine/scale.cjs.map +1 -1
  259. package/dist/charts/engine/scale.js +1 -1
  260. package/dist/charts/engine/scale.js.map +1 -1
  261. package/dist/charts/engine/scene.cjs +1 -1
  262. package/dist/charts/engine/scene.cjs.map +1 -1
  263. package/dist/charts/engine/scene.d.cts +71 -8
  264. package/dist/charts/engine/scene.d.ts +71 -8
  265. package/dist/charts/engine/scene.js +465 -183
  266. package/dist/charts/engine/scene.js.map +1 -1
  267. package/dist/charts/engine/shapes/bullet.cjs +2 -0
  268. package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
  269. package/dist/charts/engine/shapes/bullet.d.cts +6 -0
  270. package/dist/charts/engine/shapes/bullet.d.ts +6 -0
  271. package/dist/charts/engine/shapes/bullet.js +255 -0
  272. package/dist/charts/engine/shapes/bullet.js.map +1 -0
  273. package/dist/charts/engine/shapes/calendar.cjs +2 -0
  274. package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
  275. package/dist/charts/engine/shapes/calendar.d.cts +38 -0
  276. package/dist/charts/engine/shapes/calendar.d.ts +38 -0
  277. package/dist/charts/engine/shapes/calendar.js +369 -0
  278. package/dist/charts/engine/shapes/calendar.js.map +1 -0
  279. package/dist/charts/engine/shapes/canvas.cjs +1 -1
  280. package/dist/charts/engine/shapes/canvas.cjs.map +1 -1
  281. package/dist/charts/engine/shapes/canvas.d.cts +7 -0
  282. package/dist/charts/engine/shapes/canvas.d.ts +7 -0
  283. package/dist/charts/engine/shapes/canvas.js +22 -13
  284. package/dist/charts/engine/shapes/canvas.js.map +1 -1
  285. package/dist/charts/engine/shapes/chart.cjs +1 -1
  286. package/dist/charts/engine/shapes/chart.cjs.map +1 -1
  287. package/dist/charts/engine/shapes/chart.d.cts +3 -2
  288. package/dist/charts/engine/shapes/chart.d.ts +3 -2
  289. package/dist/charts/engine/shapes/chart.js +49 -27
  290. package/dist/charts/engine/shapes/chart.js.map +1 -1
  291. package/dist/charts/engine/shapes/chord.cjs +2 -0
  292. package/dist/charts/engine/shapes/chord.cjs.map +1 -0
  293. package/dist/charts/engine/shapes/chord.d.cts +18 -0
  294. package/dist/charts/engine/shapes/chord.d.ts +18 -0
  295. package/dist/charts/engine/shapes/chord.js +414 -0
  296. package/dist/charts/engine/shapes/chord.js.map +1 -0
  297. package/dist/charts/engine/shapes/draw.cjs +1 -1
  298. package/dist/charts/engine/shapes/draw.cjs.map +1 -1
  299. package/dist/charts/engine/shapes/draw.d.cts +7 -1
  300. package/dist/charts/engine/shapes/draw.d.ts +7 -1
  301. package/dist/charts/engine/shapes/draw.js +62 -19
  302. package/dist/charts/engine/shapes/draw.js.map +1 -1
  303. package/dist/charts/engine/shapes/funnel.cjs +1 -1
  304. package/dist/charts/engine/shapes/funnel.cjs.map +1 -1
  305. package/dist/charts/engine/shapes/funnel.js +3 -3
  306. package/dist/charts/engine/shapes/funnel.js.map +1 -1
  307. package/dist/charts/engine/shapes/gauge.cjs +1 -1
  308. package/dist/charts/engine/shapes/gauge.cjs.map +1 -1
  309. package/dist/charts/engine/shapes/gauge.js +132 -95
  310. package/dist/charts/engine/shapes/gauge.js.map +1 -1
  311. package/dist/charts/engine/shapes/hit.cjs +1 -1
  312. package/dist/charts/engine/shapes/hit.cjs.map +1 -1
  313. package/dist/charts/engine/shapes/hit.d.cts +5 -1
  314. package/dist/charts/engine/shapes/hit.d.ts +5 -1
  315. package/dist/charts/engine/shapes/hit.js +89 -39
  316. package/dist/charts/engine/shapes/hit.js.map +1 -1
  317. package/dist/charts/engine/shapes/index.d.cts +6 -2
  318. package/dist/charts/engine/shapes/index.d.ts +6 -2
  319. package/dist/charts/engine/shapes/labels.cjs +2 -0
  320. package/dist/charts/engine/shapes/labels.cjs.map +1 -0
  321. package/dist/charts/engine/shapes/labels.d.cts +14 -0
  322. package/dist/charts/engine/shapes/labels.d.ts +14 -0
  323. package/dist/charts/engine/shapes/labels.js +154 -0
  324. package/dist/charts/engine/shapes/labels.js.map +1 -0
  325. package/dist/charts/engine/shapes/layout.cjs +2 -2
  326. package/dist/charts/engine/shapes/layout.cjs.map +1 -1
  327. package/dist/charts/engine/shapes/layout.d.cts +10 -3
  328. package/dist/charts/engine/shapes/layout.d.ts +10 -3
  329. package/dist/charts/engine/shapes/layout.js +239 -124
  330. package/dist/charts/engine/shapes/layout.js.map +1 -1
  331. package/dist/charts/engine/shapes/pie.cjs +1 -1
  332. package/dist/charts/engine/shapes/pie.cjs.map +1 -1
  333. package/dist/charts/engine/shapes/pie.js +2 -2
  334. package/dist/charts/engine/shapes/pie.js.map +1 -1
  335. package/dist/charts/engine/shapes/radar.cjs +1 -1
  336. package/dist/charts/engine/shapes/radar.cjs.map +1 -1
  337. package/dist/charts/engine/shapes/radar.d.cts +2 -2
  338. package/dist/charts/engine/shapes/radar.d.ts +2 -2
  339. package/dist/charts/engine/shapes/radar.js +50 -49
  340. package/dist/charts/engine/shapes/radar.js.map +1 -1
  341. package/dist/charts/engine/shapes/radialBar.cjs +2 -0
  342. package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
  343. package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
  344. package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
  345. package/dist/charts/engine/shapes/radialBar.js +155 -0
  346. package/dist/charts/engine/shapes/radialBar.js.map +1 -0
  347. package/dist/charts/engine/shapes/runtime.cjs +1 -1
  348. package/dist/charts/engine/shapes/runtime.cjs.map +1 -1
  349. package/dist/charts/engine/shapes/runtime.d.cts +9 -2
  350. package/dist/charts/engine/shapes/runtime.d.ts +9 -2
  351. package/dist/charts/engine/shapes/runtime.js +61 -51
  352. package/dist/charts/engine/shapes/runtime.js.map +1 -1
  353. package/dist/charts/engine/shapes/sankey.cjs +2 -0
  354. package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
  355. package/dist/charts/engine/shapes/sankey.d.cts +29 -0
  356. package/dist/charts/engine/shapes/sankey.d.ts +29 -0
  357. package/dist/charts/engine/shapes/sankey.js +372 -0
  358. package/dist/charts/engine/shapes/sankey.js.map +1 -0
  359. package/dist/charts/engine/shapes/scene.cjs +1 -1
  360. package/dist/charts/engine/shapes/scene.cjs.map +1 -1
  361. package/dist/charts/engine/shapes/scene.d.cts +92 -8
  362. package/dist/charts/engine/shapes/scene.d.ts +92 -8
  363. package/dist/charts/engine/shapes/scene.js +76 -31
  364. package/dist/charts/engine/shapes/scene.js.map +1 -1
  365. package/dist/charts/engine/shapes/sunburst.cjs +2 -0
  366. package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
  367. package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
  368. package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
  369. package/dist/charts/engine/shapes/sunburst.js +261 -0
  370. package/dist/charts/engine/shapes/sunburst.js.map +1 -0
  371. package/dist/charts/engine/shapes/treemap.cjs +1 -1
  372. package/dist/charts/engine/shapes/treemap.cjs.map +1 -1
  373. package/dist/charts/engine/shapes/treemap.js +2 -2
  374. package/dist/charts/engine/shapes/treemap.js.map +1 -1
  375. package/dist/charts/engine/shapes/types.d.cts +550 -12
  376. package/dist/charts/engine/shapes/types.d.ts +550 -12
  377. package/dist/charts/engine/signature.cjs +1 -1
  378. package/dist/charts/engine/signature.cjs.map +1 -1
  379. package/dist/charts/engine/signature.js +1 -1
  380. package/dist/charts/engine/signature.js.map +1 -1
  381. package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
  382. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
  383. package/dist/charts/engine/three-d/canvas2d.d.cts +7 -0
  384. package/dist/charts/engine/three-d/canvas2d.d.ts +7 -0
  385. package/dist/charts/engine/three-d/canvas2d.js +128 -0
  386. package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
  387. package/dist/charts/engine/three-d/chart.cjs +2 -0
  388. package/dist/charts/engine/three-d/chart.cjs.map +1 -0
  389. package/dist/charts/engine/three-d/chart.d.cts +15 -0
  390. package/dist/charts/engine/three-d/chart.d.ts +15 -0
  391. package/dist/charts/engine/three-d/chart.js +621 -0
  392. package/dist/charts/engine/three-d/chart.js.map +1 -0
  393. package/dist/charts/engine/three-d/colormap.cjs +2 -0
  394. package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
  395. package/dist/charts/engine/three-d/colormap.d.cts +16 -0
  396. package/dist/charts/engine/three-d/colormap.d.ts +16 -0
  397. package/dist/charts/engine/three-d/colormap.js +166 -0
  398. package/dist/charts/engine/three-d/colormap.js.map +1 -0
  399. package/dist/charts/engine/three-d/contours.cjs +2 -0
  400. package/dist/charts/engine/three-d/contours.cjs.map +1 -0
  401. package/dist/charts/engine/three-d/contours.d.cts +7 -0
  402. package/dist/charts/engine/three-d/contours.d.ts +7 -0
  403. package/dist/charts/engine/three-d/contours.js +47 -0
  404. package/dist/charts/engine/three-d/contours.js.map +1 -0
  405. package/dist/charts/engine/three-d/detect.cjs +2 -0
  406. package/dist/charts/engine/three-d/detect.cjs.map +1 -0
  407. package/dist/charts/engine/three-d/detect.d.cts +12 -0
  408. package/dist/charts/engine/three-d/detect.d.ts +12 -0
  409. package/dist/charts/engine/three-d/detect.js +37 -0
  410. package/dist/charts/engine/three-d/detect.js.map +1 -0
  411. package/dist/charts/engine/three-d/dom.cjs +2 -0
  412. package/dist/charts/engine/three-d/dom.cjs.map +1 -0
  413. package/dist/charts/engine/three-d/dom.d.cts +21 -0
  414. package/dist/charts/engine/three-d/dom.d.ts +21 -0
  415. package/dist/charts/engine/three-d/dom.js +98 -0
  416. package/dist/charts/engine/three-d/dom.js.map +1 -0
  417. package/dist/charts/engine/three-d/geometry.cjs +2 -0
  418. package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
  419. package/dist/charts/engine/three-d/geometry.d.cts +82 -0
  420. package/dist/charts/engine/three-d/geometry.d.ts +82 -0
  421. package/dist/charts/engine/three-d/geometry.js +545 -0
  422. package/dist/charts/engine/three-d/geometry.js.map +1 -0
  423. package/dist/charts/engine/three-d/hover.cjs +2 -0
  424. package/dist/charts/engine/three-d/hover.cjs.map +1 -0
  425. package/dist/charts/engine/three-d/hover.d.cts +25 -0
  426. package/dist/charts/engine/three-d/hover.d.ts +25 -0
  427. package/dist/charts/engine/three-d/hover.js +131 -0
  428. package/dist/charts/engine/three-d/hover.js.map +1 -0
  429. package/dist/charts/engine/three-d/index.cjs +1 -0
  430. package/dist/charts/engine/three-d/index.d.cts +2 -0
  431. package/dist/charts/engine/three-d/index.d.ts +2 -0
  432. package/dist/charts/engine/three-d/index.js +2 -0
  433. package/dist/charts/engine/three-d/labels.cjs +2 -0
  434. package/dist/charts/engine/three-d/labels.cjs.map +1 -0
  435. package/dist/charts/engine/three-d/labels.d.cts +23 -0
  436. package/dist/charts/engine/three-d/labels.d.ts +23 -0
  437. package/dist/charts/engine/three-d/labels.js +136 -0
  438. package/dist/charts/engine/three-d/labels.js.map +1 -0
  439. package/dist/charts/engine/three-d/math.cjs +2 -0
  440. package/dist/charts/engine/three-d/math.cjs.map +1 -0
  441. package/dist/charts/engine/three-d/math.d.cts +84 -0
  442. package/dist/charts/engine/three-d/math.d.ts +84 -0
  443. package/dist/charts/engine/three-d/math.js +150 -0
  444. package/dist/charts/engine/three-d/math.js.map +1 -0
  445. package/dist/charts/engine/three-d/model.cjs +2 -0
  446. package/dist/charts/engine/three-d/model.cjs.map +1 -0
  447. package/dist/charts/engine/three-d/model.d.cts +132 -0
  448. package/dist/charts/engine/three-d/model.d.ts +132 -0
  449. package/dist/charts/engine/three-d/model.js +279 -0
  450. package/dist/charts/engine/three-d/model.js.map +1 -0
  451. package/dist/charts/engine/three-d/overlay.cjs +2 -0
  452. package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
  453. package/dist/charts/engine/three-d/overlay.d.cts +72 -0
  454. package/dist/charts/engine/three-d/overlay.d.ts +72 -0
  455. package/dist/charts/engine/three-d/overlay.js +204 -0
  456. package/dist/charts/engine/three-d/overlay.js.map +1 -0
  457. package/dist/charts/engine/three-d/pick.cjs +2 -0
  458. package/dist/charts/engine/three-d/pick.cjs.map +1 -0
  459. package/dist/charts/engine/three-d/pick.d.cts +52 -0
  460. package/dist/charts/engine/three-d/pick.d.ts +52 -0
  461. package/dist/charts/engine/three-d/pick.js +220 -0
  462. package/dist/charts/engine/three-d/pick.js.map +1 -0
  463. package/dist/charts/engine/three-d/render-types.cjs +2 -0
  464. package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
  465. package/dist/charts/engine/three-d/render-types.d.cts +103 -0
  466. package/dist/charts/engine/three-d/render-types.d.ts +103 -0
  467. package/dist/charts/engine/three-d/render-types.js +12 -0
  468. package/dist/charts/engine/three-d/render-types.js.map +1 -0
  469. package/dist/charts/engine/three-d/shaders.cjs +311 -0
  470. package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
  471. package/dist/charts/engine/three-d/shaders.d.cts +25 -0
  472. package/dist/charts/engine/three-d/shaders.d.ts +25 -0
  473. package/dist/charts/engine/three-d/shaders.js +210 -0
  474. package/dist/charts/engine/three-d/shaders.js.map +1 -0
  475. package/dist/charts/engine/three-d/sort.cjs +2 -0
  476. package/dist/charts/engine/three-d/sort.cjs.map +1 -0
  477. package/dist/charts/engine/three-d/sort.d.cts +29 -0
  478. package/dist/charts/engine/three-d/sort.d.ts +29 -0
  479. package/dist/charts/engine/three-d/sort.js +145 -0
  480. package/dist/charts/engine/three-d/sort.js.map +1 -0
  481. package/dist/charts/engine/three-d/types.d.cts +615 -0
  482. package/dist/charts/engine/three-d/types.d.ts +615 -0
  483. package/dist/charts/engine/three-d/webgl.cjs +2 -0
  484. package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
  485. package/dist/charts/engine/three-d/webgl.d.cts +10 -0
  486. package/dist/charts/engine/three-d/webgl.d.ts +10 -0
  487. package/dist/charts/engine/three-d/webgl.js +132 -0
  488. package/dist/charts/engine/three-d/webgl.js.map +1 -0
  489. package/dist/charts/engine/three-d/webgpu.cjs +2 -0
  490. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
  491. package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
  492. package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
  493. package/dist/charts/engine/three-d/webgpu.js +260 -0
  494. package/dist/charts/engine/three-d/webgpu.js.map +1 -0
  495. package/dist/charts/engine/time.cjs +1 -1
  496. package/dist/charts/engine/time.cjs.map +1 -1
  497. package/dist/charts/engine/time.d.cts +13 -4
  498. package/dist/charts/engine/time.d.ts +13 -4
  499. package/dist/charts/engine/time.js +156 -91
  500. package/dist/charts/engine/time.js.map +1 -1
  501. package/dist/charts/engine/trading/chart.cjs +2 -0
  502. package/dist/charts/engine/trading/chart.cjs.map +1 -0
  503. package/dist/charts/engine/trading/chart.d.cts +13 -0
  504. package/dist/charts/engine/trading/chart.d.ts +13 -0
  505. package/dist/charts/engine/trading/chart.js +2206 -0
  506. package/dist/charts/engine/trading/chart.js.map +1 -0
  507. package/dist/charts/engine/trading/drawings.cjs +3 -0
  508. package/dist/charts/engine/trading/drawings.cjs.map +1 -0
  509. package/dist/charts/engine/trading/drawings.d.cts +95 -0
  510. package/dist/charts/engine/trading/drawings.d.ts +95 -0
  511. package/dist/charts/engine/trading/drawings.js +423 -0
  512. package/dist/charts/engine/trading/drawings.js.map +1 -0
  513. package/dist/charts/engine/trading/format.cjs +2 -0
  514. package/dist/charts/engine/trading/format.cjs.map +1 -0
  515. package/dist/charts/engine/trading/format.d.cts +73 -0
  516. package/dist/charts/engine/trading/format.d.ts +73 -0
  517. package/dist/charts/engine/trading/format.js +163 -0
  518. package/dist/charts/engine/trading/format.js.map +1 -0
  519. package/dist/charts/engine/trading/geometry.cjs +2 -0
  520. package/dist/charts/engine/trading/geometry.cjs.map +1 -0
  521. package/dist/charts/engine/trading/geometry.d.cts +55 -0
  522. package/dist/charts/engine/trading/geometry.d.ts +55 -0
  523. package/dist/charts/engine/trading/geometry.js +131 -0
  524. package/dist/charts/engine/trading/geometry.js.map +1 -0
  525. package/dist/charts/engine/trading/index.cjs +1 -0
  526. package/dist/charts/engine/trading/index.d.cts +4 -0
  527. package/dist/charts/engine/trading/index.d.ts +4 -0
  528. package/dist/charts/engine/trading/index.js +4 -0
  529. package/dist/charts/engine/trading/indicators.cjs +2 -0
  530. package/dist/charts/engine/trading/indicators.cjs.map +1 -0
  531. package/dist/charts/engine/trading/indicators.d.cts +275 -0
  532. package/dist/charts/engine/trading/indicators.d.ts +275 -0
  533. package/dist/charts/engine/trading/indicators.js +544 -0
  534. package/dist/charts/engine/trading/indicators.js.map +1 -0
  535. package/dist/charts/engine/trading/labels.cjs +2 -0
  536. package/dist/charts/engine/trading/labels.cjs.map +1 -0
  537. package/dist/charts/engine/trading/labels.d.cts +7 -0
  538. package/dist/charts/engine/trading/labels.d.ts +7 -0
  539. package/dist/charts/engine/trading/labels.js +171 -0
  540. package/dist/charts/engine/trading/labels.js.map +1 -0
  541. package/dist/charts/engine/trading/scale.cjs +2 -0
  542. package/dist/charts/engine/trading/scale.cjs.map +1 -0
  543. package/dist/charts/engine/trading/scale.d.cts +46 -0
  544. package/dist/charts/engine/trading/scale.d.ts +46 -0
  545. package/dist/charts/engine/trading/scale.js +100 -0
  546. package/dist/charts/engine/trading/scale.js.map +1 -0
  547. package/dist/charts/engine/trading/store.cjs +2 -0
  548. package/dist/charts/engine/trading/store.cjs.map +1 -0
  549. package/dist/charts/engine/trading/store.d.cts +83 -0
  550. package/dist/charts/engine/trading/store.d.ts +83 -0
  551. package/dist/charts/engine/trading/store.js +150 -0
  552. package/dist/charts/engine/trading/store.js.map +1 -0
  553. package/dist/charts/engine/trading/studies.cjs +2 -0
  554. package/dist/charts/engine/trading/studies.cjs.map +1 -0
  555. package/dist/charts/engine/trading/studies.d.cts +85 -0
  556. package/dist/charts/engine/trading/studies.d.ts +85 -0
  557. package/dist/charts/engine/trading/studies.js +510 -0
  558. package/dist/charts/engine/trading/studies.js.map +1 -0
  559. package/dist/charts/engine/trading/sync.cjs +2 -0
  560. package/dist/charts/engine/trading/sync.cjs.map +1 -0
  561. package/dist/charts/engine/trading/sync.d.cts +8 -0
  562. package/dist/charts/engine/trading/sync.d.ts +8 -0
  563. package/dist/charts/engine/trading/sync.js +25 -0
  564. package/dist/charts/engine/trading/sync.js.map +1 -0
  565. package/dist/charts/engine/trading/types.d.cts +1131 -0
  566. package/dist/charts/engine/trading/types.d.ts +1131 -0
  567. package/dist/charts/engine/types.d.cts +247 -22
  568. package/dist/charts/engine/types.d.ts +247 -22
  569. package/dist/charts/index.cjs +1 -1
  570. package/dist/charts/index.d.cts +8 -4
  571. package/dist/charts/index.d.ts +8 -4
  572. package/dist/charts/index.js +30 -11
  573. package/dist/charts/react/Chart.cjs +1 -1
  574. package/dist/charts/react/Chart.cjs.map +1 -1
  575. package/dist/charts/react/Chart.d.cts +4 -4
  576. package/dist/charts/react/Chart.d.ts +4 -4
  577. package/dist/charts/react/Chart.js +5 -1
  578. package/dist/charts/react/Chart.js.map +1 -1
  579. package/dist/charts/react/charts.cjs +1 -1
  580. package/dist/charts/react/charts.cjs.map +1 -1
  581. package/dist/charts/react/charts.d.cts +39 -1
  582. package/dist/charts/react/charts.d.ts +39 -1
  583. package/dist/charts/react/charts.js +312 -128
  584. package/dist/charts/react/charts.js.map +1 -1
  585. package/dist/charts/react/graph.cjs +2 -0
  586. package/dist/charts/react/graph.cjs.map +1 -0
  587. package/dist/charts/react/graph.d.cts +213 -0
  588. package/dist/charts/react/graph.d.ts +213 -0
  589. package/dist/charts/react/graph.js +159 -0
  590. package/dist/charts/react/graph.js.map +1 -0
  591. package/dist/charts/react/orderbook.cjs +2 -0
  592. package/dist/charts/react/orderbook.cjs.map +1 -0
  593. package/dist/charts/react/orderbook.d.cts +142 -0
  594. package/dist/charts/react/orderbook.d.ts +142 -0
  595. package/dist/charts/react/orderbook.js +182 -0
  596. package/dist/charts/react/orderbook.js.map +1 -0
  597. package/dist/charts/react/shapes.cjs +1 -1
  598. package/dist/charts/react/shapes.cjs.map +1 -1
  599. package/dist/charts/react/shapes.d.cts +374 -9
  600. package/dist/charts/react/shapes.d.ts +374 -9
  601. package/dist/charts/react/shapes.js +323 -93
  602. package/dist/charts/react/shapes.js.map +1 -1
  603. package/dist/charts/react/three-d.cjs +2 -0
  604. package/dist/charts/react/three-d.cjs.map +1 -0
  605. package/dist/charts/react/three-d.d.cts +151 -0
  606. package/dist/charts/react/three-d.d.ts +151 -0
  607. package/dist/charts/react/three-d.js +154 -0
  608. package/dist/charts/react/three-d.js.map +1 -0
  609. package/dist/charts/react/trading.cjs +2 -0
  610. package/dist/charts/react/trading.cjs.map +1 -0
  611. package/dist/charts/react/trading.d.cts +145 -0
  612. package/dist/charts/react/trading.d.ts +145 -0
  613. package/dist/charts/react/trading.js +126 -0
  614. package/dist/charts/react/trading.js.map +1 -0
  615. package/dist/charts/react/types.d.cts +143 -8
  616. package/dist/charts/react/types.d.ts +143 -8
  617. package/dist/core/contracts.cjs +1 -1
  618. package/dist/core/contracts.cjs.map +1 -1
  619. package/dist/core/contracts.js +1 -1
  620. package/dist/core/contracts.js.map +1 -1
  621. package/dist/native/charts/src/canvas.cjs +1 -1
  622. package/dist/native/charts/src/canvas.js +9 -3
  623. package/dist/native/charts/src/engine/axis.cjs +1 -1
  624. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  625. package/dist/native/charts/src/engine/axis.js +43 -20
  626. package/dist/native/charts/src/engine/axis.js.map +1 -1
  627. package/dist/native/charts/src/engine/color.cjs +1 -1
  628. package/dist/native/charts/src/engine/color.cjs.map +1 -1
  629. package/dist/native/charts/src/engine/color.js +47 -5
  630. package/dist/native/charts/src/engine/color.js.map +1 -1
  631. package/dist/native/charts/src/engine/controller.cjs +2 -2
  632. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  633. package/dist/native/charts/src/engine/controller.js +415 -308
  634. package/dist/native/charts/src/engine/controller.js.map +1 -1
  635. package/dist/native/charts/src/engine/data.cjs +1 -1
  636. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  637. package/dist/native/charts/src/engine/data.js +65 -49
  638. package/dist/native/charts/src/engine/data.js.map +1 -1
  639. package/dist/native/charts/src/engine/format.cjs +1 -1
  640. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  641. package/dist/native/charts/src/engine/format.js +59 -21
  642. package/dist/native/charts/src/engine/format.js.map +1 -1
  643. package/dist/native/charts/src/engine/labels.cjs +2 -0
  644. package/dist/native/charts/src/engine/labels.cjs.map +1 -0
  645. package/dist/native/charts/src/engine/labels.js +98 -0
  646. package/dist/native/charts/src/engine/labels.js.map +1 -0
  647. package/dist/native/charts/src/engine/layout.cjs +1 -1
  648. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  649. package/dist/native/charts/src/engine/layout.js +62 -12
  650. package/dist/native/charts/src/engine/layout.js.map +1 -1
  651. package/dist/native/charts/src/engine/locale.cjs +2 -0
  652. package/dist/native/charts/src/engine/locale.cjs.map +1 -0
  653. package/dist/native/charts/src/engine/locale.js +60 -0
  654. package/dist/native/charts/src/engine/locale.js.map +1 -0
  655. package/dist/native/charts/src/engine/model.cjs +1 -1
  656. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  657. package/dist/native/charts/src/engine/model.js +307 -119
  658. package/dist/native/charts/src/engine/model.js.map +1 -1
  659. package/dist/native/charts/src/engine/overlay.cjs +1 -1
  660. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  661. package/dist/native/charts/src/engine/overlay.js +46 -23
  662. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  663. package/dist/native/charts/src/engine/presets.cjs +2 -2
  664. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  665. package/dist/native/charts/src/engine/presets.js +470 -41
  666. package/dist/native/charts/src/engine/presets.js.map +1 -1
  667. package/dist/native/charts/src/engine/scale.cjs +1 -1
  668. package/dist/native/charts/src/engine/scale.cjs.map +1 -1
  669. package/dist/native/charts/src/engine/scale.js +1 -1
  670. package/dist/native/charts/src/engine/scale.js.map +1 -1
  671. package/dist/native/charts/src/engine/scene.cjs +1 -1
  672. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  673. package/dist/native/charts/src/engine/scene.js +489 -207
  674. package/dist/native/charts/src/engine/scene.js.map +1 -1
  675. package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
  676. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
  677. package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
  678. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
  679. package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
  680. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
  681. package/dist/native/charts/src/engine/shapes/calendar.js +369 -0
  682. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
  683. package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
  684. package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
  685. package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
  686. package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
  687. package/dist/native/charts/src/engine/shapes/chord.cjs +2 -0
  688. package/dist/native/charts/src/engine/shapes/chord.cjs.map +1 -0
  689. package/dist/native/charts/src/engine/shapes/chord.js +414 -0
  690. package/dist/native/charts/src/engine/shapes/chord.js.map +1 -0
  691. package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
  692. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
  693. package/dist/native/charts/src/engine/shapes/draw.js +195 -0
  694. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
  695. package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
  696. package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
  697. package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
  698. package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
  699. package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
  700. package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
  701. package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
  702. package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
  703. package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
  704. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
  705. package/dist/native/charts/src/engine/shapes/hit.js +135 -0
  706. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
  707. package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
  708. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
  709. package/dist/native/charts/src/engine/shapes/labels.js +154 -0
  710. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
  711. package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
  712. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
  713. package/dist/native/charts/src/engine/shapes/layout.js +358 -0
  714. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
  715. package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
  716. package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
  717. package/dist/native/charts/src/engine/shapes/pie.js +302 -0
  718. package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
  719. package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
  720. package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
  721. package/dist/native/charts/src/engine/shapes/radar.js +198 -0
  722. package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
  723. package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
  724. package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
  725. package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
  726. package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
  727. package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
  728. package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
  729. package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
  730. package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
  731. package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
  732. package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
  733. package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
  734. package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
  735. package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
  736. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
  737. package/dist/native/charts/src/engine/shapes/scene.js +168 -0
  738. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
  739. package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
  740. package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
  741. package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
  742. package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
  743. package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
  744. package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
  745. package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
  746. package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
  747. package/dist/native/charts/src/engine/time.cjs +1 -1
  748. package/dist/native/charts/src/engine/time.cjs.map +1 -1
  749. package/dist/native/charts/src/engine/time.js +156 -91
  750. package/dist/native/charts/src/engine/time.js.map +1 -1
  751. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  752. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  753. package/dist/native/components/Chart/ChartBase.d.cts +1 -1
  754. package/dist/native/components/Chart/ChartBase.d.ts +1 -1
  755. package/dist/native/components/Chart/ChartBase.js +110 -107
  756. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  757. package/dist/native/components/Chart/charts.cjs +1 -1
  758. package/dist/native/components/Chart/charts.cjs.map +1 -1
  759. package/dist/native/components/Chart/charts.d.cts +6 -1
  760. package/dist/native/components/Chart/charts.d.ts +6 -1
  761. package/dist/native/components/Chart/charts.js +53 -29
  762. package/dist/native/components/Chart/charts.js.map +1 -1
  763. package/dist/native/components/Chart/index.cjs +1 -1
  764. package/dist/native/components/Chart/index.d.cts +1 -1
  765. package/dist/native/components/Chart/index.d.ts +1 -1
  766. package/dist/native/components/Chart/index.js +2 -2
  767. package/dist/native/components/Chart/scene.cjs +1 -1
  768. package/dist/native/components/Chart/scene.cjs.map +1 -1
  769. package/dist/native/components/Chart/scene.js +315 -229
  770. package/dist/native/components/Chart/scene.js.map +1 -1
  771. package/dist/native/components/Chart/types.d.cts +26 -3
  772. package/dist/native/components/Chart/types.d.ts +26 -3
  773. package/dist/native/components/Charts/charts.cjs +2 -0
  774. package/dist/native/components/Charts/charts.cjs.map +1 -0
  775. package/dist/native/components/Charts/charts.d.cts +41 -0
  776. package/dist/native/components/Charts/charts.d.ts +41 -0
  777. package/dist/native/components/Charts/charts.js +350 -0
  778. package/dist/native/components/Charts/charts.js.map +1 -0
  779. package/dist/native/components/Charts/index.cjs +1 -0
  780. package/dist/native/components/Charts/index.d.cts +2 -0
  781. package/dist/native/components/Charts/index.d.ts +2 -0
  782. package/dist/native/components/Charts/index.js +2 -0
  783. package/dist/native/components/Charts/types.d.cts +155 -0
  784. package/dist/native/components/Charts/types.d.ts +155 -0
  785. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
  786. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
  787. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
  788. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
  789. package/dist/native/components/ShapeChart/ShapeChartBase.js +272 -0
  790. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
  791. package/dist/native/components/ShapeChart/charts.cjs +2 -0
  792. package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
  793. package/dist/native/components/ShapeChart/charts.d.cts +43 -0
  794. package/dist/native/components/ShapeChart/charts.d.ts +43 -0
  795. package/dist/native/components/ShapeChart/charts.js +429 -0
  796. package/dist/native/components/ShapeChart/charts.js.map +1 -0
  797. package/dist/native/components/ShapeChart/draw.cjs +2 -0
  798. package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
  799. package/dist/native/components/ShapeChart/draw.d.cts +4 -0
  800. package/dist/native/components/ShapeChart/draw.d.ts +4 -0
  801. package/dist/native/components/ShapeChart/draw.js +113 -0
  802. package/dist/native/components/ShapeChart/draw.js.map +1 -0
  803. package/dist/native/components/ShapeChart/geometry.cjs +2 -0
  804. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
  805. package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
  806. package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
  807. package/dist/native/components/ShapeChart/geometry.js +681 -0
  808. package/dist/native/components/ShapeChart/geometry.js.map +1 -0
  809. package/dist/native/components/ShapeChart/index.cjs +1 -0
  810. package/dist/native/components/ShapeChart/index.d.cts +2 -0
  811. package/dist/native/components/ShapeChart/index.d.ts +2 -0
  812. package/dist/native/components/ShapeChart/index.js +2 -0
  813. package/dist/native/components/ShapeChart/recorder.cjs +2 -0
  814. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
  815. package/dist/native/components/ShapeChart/recorder.d.cts +115 -0
  816. package/dist/native/components/ShapeChart/recorder.d.ts +115 -0
  817. package/dist/native/components/ShapeChart/recorder.js +583 -0
  818. package/dist/native/components/ShapeChart/recorder.js.map +1 -0
  819. package/dist/native/components/ShapeChart/types.d.cts +594 -0
  820. package/dist/native/components/ShapeChart/types.d.ts +594 -0
  821. package/dist/native/index.cjs +1 -1
  822. package/dist/native/index.d.cts +2 -0
  823. package/dist/native/index.d.ts +2 -0
  824. package/dist/native/index.js +14 -10
  825. package/dist/native/manifest.d.cts +6 -4
  826. package/dist/native/manifest.d.ts +6 -4
  827. package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
  828. package/dist/native/source/components/Chart/charts.tsx +42 -6
  829. package/dist/native/source/components/Chart/index.ts +1 -0
  830. package/dist/native/source/components/Chart/scene.tsx +312 -98
  831. package/dist/native/source/components/Chart/types.ts +31 -1
  832. package/dist/native/source/components/Charts/charts.tsx +521 -0
  833. package/dist/native/source/components/Charts/index.ts +14 -0
  834. package/dist/native/source/components/Charts/types.ts +218 -0
  835. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +486 -0
  836. package/dist/native/source/components/ShapeChart/charts.tsx +661 -0
  837. package/dist/native/source/components/ShapeChart/draw.tsx +201 -0
  838. package/dist/native/source/components/ShapeChart/geometry.ts +1366 -0
  839. package/dist/native/source/components/ShapeChart/index.ts +16 -0
  840. package/dist/native/source/components/ShapeChart/recorder.ts +845 -0
  841. package/dist/native/source/components/ShapeChart/types.ts +655 -0
  842. package/dist/native/source/index.ts +2 -0
  843. package/dist/native/source/manifest.ts +31 -4
  844. package/dist/taro/charts.d.ts +229 -4
  845. package/dist/taro/index.d.ts +1 -0
  846. package/dist/taro/index.js +8818 -2093
  847. package/dist/taro/manifest.d.ts +1 -0
  848. package/dist/taro/shape-charts.d.ts +629 -0
  849. package/dist/uni/AreaChart.vue +68 -0
  850. package/dist/uni/AreaChart.vue.d.ts +124 -0
  851. package/dist/uni/Badge.vue.d.ts +1 -1
  852. package/dist/uni/BarChart.vue.d.ts +5 -1
  853. package/dist/uni/BoxPlotChart.vue +66 -0
  854. package/dist/uni/BoxPlotChart.vue.d.ts +110 -0
  855. package/dist/uni/BubbleChart.vue +68 -0
  856. package/dist/uni/BubbleChart.vue.d.ts +110 -0
  857. package/dist/uni/BulletChart.vue +86 -0
  858. package/dist/uni/BulletChart.vue.d.ts +114 -0
  859. package/dist/uni/CalendarHeatmap.vue +92 -0
  860. package/dist/uni/CalendarHeatmap.vue.d.ts +131 -0
  861. package/dist/uni/CandlestickChart.vue +66 -0
  862. package/dist/uni/CandlestickChart.vue.d.ts +104 -0
  863. package/dist/uni/Chart.vue.d.ts +4 -0
  864. package/dist/uni/ChordChart.vue +93 -0
  865. package/dist/uni/ChordChart.vue.d.ts +136 -0
  866. package/dist/uni/DonutChart.vue +72 -0
  867. package/dist/uni/DonutChart.vue.d.ts +118 -0
  868. package/dist/uni/FunnelChart.vue +67 -0
  869. package/dist/uni/FunnelChart.vue.d.ts +108 -0
  870. package/dist/uni/GanttChart.vue +67 -0
  871. package/dist/uni/GanttChart.vue.d.ts +127 -0
  872. package/dist/uni/GaugeChart.vue +77 -0
  873. package/dist/uni/GaugeChart.vue.d.ts +127 -0
  874. package/dist/uni/HeatmapChart.vue +66 -0
  875. package/dist/uni/HeatmapChart.vue.d.ts +120 -0
  876. package/dist/uni/HistogramChart.vue +66 -0
  877. package/dist/uni/HistogramChart.vue.d.ts +125 -0
  878. package/dist/uni/HorizontalBarChart.vue +68 -0
  879. package/dist/uni/HorizontalBarChart.vue.d.ts +129 -0
  880. package/dist/uni/Input.vue.d.ts +1 -1
  881. package/dist/uni/LineChart.vue.d.ts +4 -0
  882. package/dist/uni/MixedChart.vue +68 -0
  883. package/dist/uni/MixedChart.vue.d.ts +110 -0
  884. package/dist/uni/NumberInput.vue.d.ts +1 -1
  885. package/dist/uni/PieChart.vue +72 -0
  886. package/dist/uni/PieChart.vue.d.ts +118 -0
  887. package/dist/uni/QuadrantChart.vue.d.ts +4 -0
  888. package/dist/uni/RadarChart.vue +67 -0
  889. package/dist/uni/RadarChart.vue.d.ts +114 -0
  890. package/dist/uni/RadialBarChart.vue +90 -0
  891. package/dist/uni/RadialBarChart.vue.d.ts +136 -0
  892. package/dist/uni/RangeAreaChart.vue +68 -0
  893. package/dist/uni/RangeAreaChart.vue.d.ts +106 -0
  894. package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
  895. package/dist/uni/SankeyChart.vue +88 -0
  896. package/dist/uni/SankeyChart.vue.d.ts +125 -0
  897. package/dist/uni/ScatterChart.vue.d.ts +4 -0
  898. package/dist/uni/ShapeChart.vue +73 -0
  899. package/dist/uni/ShapeChart.vue.d.ts +54 -0
  900. package/dist/uni/Sparkline.vue +58 -0
  901. package/dist/uni/Sparkline.vue.d.ts +81 -0
  902. package/dist/uni/SunburstChart.vue +90 -0
  903. package/dist/uni/SunburstChart.vue.d.ts +118 -0
  904. package/dist/uni/Textarea.vue.d.ts +1 -1
  905. package/dist/uni/TimePicker.vue.d.ts +1 -1
  906. package/dist/uni/ToastProvider.vue.d.ts +1 -1
  907. package/dist/uni/TreemapChart.vue +65 -0
  908. package/dist/uni/TreemapChart.vue.d.ts +104 -0
  909. package/dist/uni/WaterfallChart.vue +66 -0
  910. package/dist/uni/WaterfallChart.vue.d.ts +134 -0
  911. package/dist/uni/chart-canvas.d.ts +3 -0
  912. package/dist/uni/chart-canvas.js +4 -0
  913. package/dist/uni/chart-types.d.ts +240 -2
  914. package/dist/uni/chart-types.js +198 -0
  915. package/dist/uni/charts-canvas.js +8 -3
  916. package/dist/uni/index.d.ts +27 -1
  917. package/dist/uni/index.js +27 -1
  918. package/dist/uni/manifest.d.ts +279 -0
  919. package/dist/uni/manifest.js +397 -0
  920. package/dist/uni/named-chart-options.d.ts +95 -0
  921. package/dist/uni/named-chart-options.js +173 -0
  922. package/dist/uni/shape-chart-canvas.d.ts +53 -0
  923. package/dist/uni/shape-chart-canvas.js +333 -0
  924. package/dist/uni/shape-chart-types.d.ts +431 -0
  925. package/dist/uni/shape-chart-types.js +305 -0
  926. package/dist/vue/charts-global.d.ts +48 -0
  927. package/dist/vue/charts.d.ts +18 -0
  928. package/dist/vue/charts.js +56 -0
  929. package/dist/vue/charts.js.map +1 -0
  930. package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
  931. package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
  932. package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
  933. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
  934. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  935. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
  936. package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
  937. package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
  938. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
  939. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  940. package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
  941. package/dist/vue/components/Chart/BarChart.vue.js +7 -0
  942. package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
  943. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
  944. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  945. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +120 -0
  946. package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
  947. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
  948. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +63 -0
  949. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  950. package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
  951. package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
  952. package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
  953. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
  954. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  955. package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
  956. package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
  957. package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
  958. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
  959. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  960. package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
  961. package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
  962. package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
  963. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
  964. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  965. package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
  966. package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
  967. package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
  968. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
  969. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  970. package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
  971. package/dist/vue/components/Chart/Chart.vue.js +7 -0
  972. package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
  973. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
  974. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  975. package/dist/vue/components/Chart/ChordChart.vue.d.ts +153 -0
  976. package/dist/vue/components/Chart/ChordChart.vue.js +7 -0
  977. package/dist/vue/components/Chart/ChordChart.vue.js.map +1 -0
  978. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js +81 -0
  979. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  980. package/dist/vue/components/Chart/DependencyGraph.vue.d.ts +179 -0
  981. package/dist/vue/components/Chart/DependencyGraph.vue.js +7 -0
  982. package/dist/vue/components/Chart/DependencyGraph.vue.js.map +1 -0
  983. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js +65 -0
  984. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js.map +1 -0
  985. package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
  986. package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
  987. package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
  988. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
  989. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  990. package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
  991. package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
  992. package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
  993. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
  994. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  995. package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
  996. package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
  997. package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
  998. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
  999. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1000. package/dist/vue/components/Chart/GanttChart.vue.d.ts +136 -0
  1001. package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
  1002. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
  1003. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +101 -0
  1004. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1005. package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
  1006. package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
  1007. package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
  1008. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
  1009. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1010. package/dist/vue/components/Chart/GraphChart.vue.d.ts +184 -0
  1011. package/dist/vue/components/Chart/GraphChart.vue.js +7 -0
  1012. package/dist/vue/components/Chart/GraphChart.vue.js.map +1 -0
  1013. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js +62 -0
  1014. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1015. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +129 -0
  1016. package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
  1017. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
  1018. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +67 -0
  1019. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1020. package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
  1021. package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
  1022. package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
  1023. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
  1024. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1025. package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
  1026. package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
  1027. package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
  1028. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
  1029. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1030. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
  1031. package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
  1032. package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
  1033. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1034. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1035. package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
  1036. package/dist/vue/components/Chart/LineChart.vue.js +7 -0
  1037. package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
  1038. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
  1039. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1040. package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
  1041. package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
  1042. package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
  1043. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1044. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1045. package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
  1046. package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
  1047. package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
  1048. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
  1049. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1050. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +130 -0
  1051. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
  1052. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
  1053. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
  1054. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1055. package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
  1056. package/dist/vue/components/Chart/PieChart.vue.js +7 -0
  1057. package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
  1058. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
  1059. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1060. package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
  1061. package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
  1062. package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
  1063. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
  1064. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1065. package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
  1066. package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
  1067. package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
  1068. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
  1069. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1070. package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
  1071. package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
  1072. package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
  1073. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
  1074. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1075. package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
  1076. package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
  1077. package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
  1078. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
  1079. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1080. package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
  1081. package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
  1082. package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
  1083. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
  1084. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1085. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
  1086. package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
  1087. package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
  1088. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1089. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1090. package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
  1091. package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
  1092. package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
  1093. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
  1094. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1095. package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
  1096. package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
  1097. package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
  1098. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
  1099. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1100. package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
  1101. package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
  1102. package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
  1103. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
  1104. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1105. package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
  1106. package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
  1107. package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
  1108. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
  1109. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1110. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
  1111. package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
  1112. package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
  1113. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
  1114. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1115. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +116 -0
  1116. package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
  1117. package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
  1118. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
  1119. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1120. package/dist/vue/components/Chart/TradingChart.vue.d.ts +208 -0
  1121. package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
  1122. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
  1123. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +101 -0
  1124. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1125. package/dist/vue/components/Chart/TreeChart.vue.d.ts +172 -0
  1126. package/dist/vue/components/Chart/TreeChart.vue.js +7 -0
  1127. package/dist/vue/components/Chart/TreeChart.vue.js.map +1 -0
  1128. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js +56 -0
  1129. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1130. package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
  1131. package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
  1132. package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
  1133. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
  1134. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1135. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +143 -0
  1136. package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
  1137. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
  1138. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +74 -0
  1139. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1140. package/dist/vue/components/Chart/cartesian.d.ts +47 -0
  1141. package/dist/vue/components/Chart/cartesian.js +56 -0
  1142. package/dist/vue/components/Chart/cartesian.js.map +1 -0
  1143. package/dist/vue/components/Chart/engine.d.ts +35 -0
  1144. package/dist/vue/components/Chart/engine.js +35 -0
  1145. package/dist/vue/components/Chart/engine.js.map +1 -0
  1146. package/dist/vue/components/Chart/graph.d.ts +153 -0
  1147. package/dist/vue/components/Chart/graph.js +135 -0
  1148. package/dist/vue/components/Chart/graph.js.map +1 -0
  1149. package/dist/vue/components/Chart/index.d.ts +45 -0
  1150. package/dist/vue/components/Chart/index.js +44 -0
  1151. package/dist/vue/components/Chart/orderbook.d.ts +363 -0
  1152. package/dist/vue/components/Chart/orderbook.js +128 -0
  1153. package/dist/vue/components/Chart/orderbook.js.map +1 -0
  1154. package/dist/vue/components/Chart/props.d.ts +188 -0
  1155. package/dist/vue/components/Chart/props.js +92 -0
  1156. package/dist/vue/components/Chart/props.js.map +1 -0
  1157. package/dist/vue/components/Chart/shape.d.ts +41 -0
  1158. package/dist/vue/components/Chart/shape.js +42 -0
  1159. package/dist/vue/components/Chart/shape.js.map +1 -0
  1160. package/dist/vue/components/Chart/three-d.d.ts +106 -0
  1161. package/dist/vue/components/Chart/three-d.js +88 -0
  1162. package/dist/vue/components/Chart/three-d.js.map +1 -0
  1163. package/dist/vue/components/Chart/trading.d.ts +127 -0
  1164. package/dist/vue/components/Chart/trading.js +63 -0
  1165. package/dist/vue/components/Chart/trading.js.map +1 -0
  1166. package/dist/vue/components/Chart/types.d.ts +209 -0
  1167. package/dist/vue/global.d.ts +2 -0
  1168. package/dist/vue/groups/charts.d.ts +1 -0
  1169. package/dist/vue/groups/charts.js +95 -0
  1170. package/dist/vue/groups/charts.js.map +1 -0
  1171. package/dist/vue/index.d.ts +1 -0
  1172. package/dist/vue/index.js +67 -23
  1173. package/dist/vue/internal/register.d.ts +7 -0
  1174. package/dist/vue/internal/register.js +14 -0
  1175. package/dist/vue/internal/register.js.map +1 -0
  1176. package/dist/vue/plugin.d.ts +9 -4
  1177. package/dist/vue/plugin.js +7 -10
  1178. package/dist/vue/plugin.js.map +1 -1
  1179. package/dist/weapp/area-chart/index.js +1 -0
  1180. package/dist/weapp/area-chart/index.json +1 -0
  1181. package/dist/weapp/area-chart/index.wxml +1 -0
  1182. package/dist/weapp/area-chart/index.wxss +1 -0
  1183. package/dist/weapp/box-plot-chart/index.js +1 -0
  1184. package/dist/weapp/box-plot-chart/index.json +1 -0
  1185. package/dist/weapp/box-plot-chart/index.wxml +1 -0
  1186. package/dist/weapp/box-plot-chart/index.wxss +1 -0
  1187. package/dist/weapp/bubble-chart/index.js +1 -0
  1188. package/dist/weapp/bubble-chart/index.json +1 -0
  1189. package/dist/weapp/bubble-chart/index.wxml +1 -0
  1190. package/dist/weapp/bubble-chart/index.wxss +1 -0
  1191. package/dist/weapp/bullet-chart/index.js +1 -0
  1192. package/dist/weapp/bullet-chart/index.json +1 -0
  1193. package/dist/weapp/bullet-chart/index.wxml +1 -0
  1194. package/dist/weapp/bullet-chart/index.wxss +1 -0
  1195. package/dist/weapp/calendar-heatmap/index.js +1 -0
  1196. package/dist/weapp/calendar-heatmap/index.json +1 -0
  1197. package/dist/weapp/calendar-heatmap/index.wxml +1 -0
  1198. package/dist/weapp/calendar-heatmap/index.wxss +1 -0
  1199. package/dist/weapp/candlestick-chart/index.js +1 -0
  1200. package/dist/weapp/candlestick-chart/index.json +1 -0
  1201. package/dist/weapp/candlestick-chart/index.wxml +1 -0
  1202. package/dist/weapp/candlestick-chart/index.wxss +1 -0
  1203. package/dist/weapp/charts/canvas.js +12976 -0
  1204. package/dist/weapp/charts/core.d.ts +2 -0
  1205. package/dist/weapp/charts/core.js +42 -0
  1206. package/dist/weapp/chord-chart/index.js +1 -0
  1207. package/dist/weapp/chord-chart/index.json +1 -0
  1208. package/dist/weapp/chord-chart/index.wxml +1 -0
  1209. package/dist/weapp/chord-chart/index.wxss +1 -0
  1210. package/dist/weapp/controls.js +1495 -4480
  1211. package/dist/weapp/donut-chart/index.js +1 -0
  1212. package/dist/weapp/donut-chart/index.json +1 -0
  1213. package/dist/weapp/donut-chart/index.wxml +1 -0
  1214. package/dist/weapp/donut-chart/index.wxss +1 -0
  1215. package/dist/weapp/funnel-chart/index.js +1 -0
  1216. package/dist/weapp/funnel-chart/index.json +1 -0
  1217. package/dist/weapp/funnel-chart/index.wxml +1 -0
  1218. package/dist/weapp/funnel-chart/index.wxss +1 -0
  1219. package/dist/weapp/gantt-chart/index.js +1 -0
  1220. package/dist/weapp/gantt-chart/index.json +1 -0
  1221. package/dist/weapp/gantt-chart/index.wxml +1 -0
  1222. package/dist/weapp/gantt-chart/index.wxss +1 -0
  1223. package/dist/weapp/gauge-chart/index.js +1 -0
  1224. package/dist/weapp/gauge-chart/index.json +1 -0
  1225. package/dist/weapp/gauge-chart/index.wxml +1 -0
  1226. package/dist/weapp/gauge-chart/index.wxss +1 -0
  1227. package/dist/weapp/heatmap-chart/index.js +1 -0
  1228. package/dist/weapp/heatmap-chart/index.json +1 -0
  1229. package/dist/weapp/heatmap-chart/index.wxml +1 -0
  1230. package/dist/weapp/heatmap-chart/index.wxss +1 -0
  1231. package/dist/weapp/histogram-chart/index.js +1 -0
  1232. package/dist/weapp/histogram-chart/index.json +1 -0
  1233. package/dist/weapp/histogram-chart/index.wxml +1 -0
  1234. package/dist/weapp/histogram-chart/index.wxss +1 -0
  1235. package/dist/weapp/horizontal-bar-chart/index.js +1 -0
  1236. package/dist/weapp/horizontal-bar-chart/index.json +1 -0
  1237. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
  1238. package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
  1239. package/dist/weapp/mixed-chart/index.js +1 -0
  1240. package/dist/weapp/mixed-chart/index.json +1 -0
  1241. package/dist/weapp/mixed-chart/index.wxml +1 -0
  1242. package/dist/weapp/mixed-chart/index.wxss +1 -0
  1243. package/dist/weapp/pie-chart/index.js +1 -0
  1244. package/dist/weapp/pie-chart/index.json +1 -0
  1245. package/dist/weapp/pie-chart/index.wxml +1 -0
  1246. package/dist/weapp/pie-chart/index.wxss +1 -0
  1247. package/dist/weapp/radar-chart/index.js +1 -0
  1248. package/dist/weapp/radar-chart/index.json +1 -0
  1249. package/dist/weapp/radar-chart/index.wxml +1 -0
  1250. package/dist/weapp/radar-chart/index.wxss +1 -0
  1251. package/dist/weapp/radial-bar-chart/index.js +1 -0
  1252. package/dist/weapp/radial-bar-chart/index.json +1 -0
  1253. package/dist/weapp/radial-bar-chart/index.wxml +1 -0
  1254. package/dist/weapp/radial-bar-chart/index.wxss +1 -0
  1255. package/dist/weapp/range-area-chart/index.js +1 -0
  1256. package/dist/weapp/range-area-chart/index.json +1 -0
  1257. package/dist/weapp/range-area-chart/index.wxml +1 -0
  1258. package/dist/weapp/range-area-chart/index.wxss +1 -0
  1259. package/dist/weapp/sankey-chart/index.js +1 -0
  1260. package/dist/weapp/sankey-chart/index.json +1 -0
  1261. package/dist/weapp/sankey-chart/index.wxml +1 -0
  1262. package/dist/weapp/sankey-chart/index.wxss +1 -0
  1263. package/dist/weapp/shape-chart/index.js +1 -0
  1264. package/dist/weapp/shape-chart/index.json +1 -0
  1265. package/dist/weapp/shape-chart/index.wxml +1 -0
  1266. package/dist/weapp/shape-chart/index.wxss +1 -0
  1267. package/dist/weapp/sparkline/index.js +1 -0
  1268. package/dist/weapp/sparkline/index.json +1 -0
  1269. package/dist/weapp/sparkline/index.wxml +1 -0
  1270. package/dist/weapp/sparkline/index.wxss +1 -0
  1271. package/dist/weapp/sunburst-chart/index.js +1 -0
  1272. package/dist/weapp/sunburst-chart/index.json +1 -0
  1273. package/dist/weapp/sunburst-chart/index.wxml +1 -0
  1274. package/dist/weapp/sunburst-chart/index.wxss +1 -0
  1275. package/dist/weapp/treemap-chart/index.js +1 -0
  1276. package/dist/weapp/treemap-chart/index.json +1 -0
  1277. package/dist/weapp/treemap-chart/index.wxml +1 -0
  1278. package/dist/weapp/treemap-chart/index.wxss +1 -0
  1279. package/dist/weapp/types.d.ts +549 -0
  1280. package/dist/weapp/waterfall-chart/index.js +1 -0
  1281. package/dist/weapp/waterfall-chart/index.json +1 -0
  1282. package/dist/weapp/waterfall-chart/index.wxml +1 -0
  1283. package/dist/weapp/waterfall-chart/index.wxss +1 -0
  1284. package/dist/web-components/components/chart/chart.d.ts +58 -0
  1285. package/dist/web-components/components/chart/chart.js +55 -0
  1286. package/dist/web-components/components/chart/chart.js.map +1 -0
  1287. package/dist/web-components/components/chart/charts.d.ts +254 -0
  1288. package/dist/web-components/components/chart/charts.js +208 -0
  1289. package/dist/web-components/components/chart/charts.js.map +1 -0
  1290. package/dist/web-components/components/chart/engine-element.d.ts +53 -0
  1291. package/dist/web-components/components/chart/engine-element.js +77 -0
  1292. package/dist/web-components/components/chart/engine-element.js.map +1 -0
  1293. package/dist/web-components/components/chart/extended.d.ts +234 -0
  1294. package/dist/web-components/components/chart/extended.js +197 -0
  1295. package/dist/web-components/components/chart/extended.js.map +1 -0
  1296. package/dist/web-components/components/chart/series.d.ts +7 -0
  1297. package/dist/web-components/components/chart/series.js +14 -0
  1298. package/dist/web-components/components/chart/series.js.map +1 -0
  1299. package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
  1300. package/dist/web-components/components/chart/shape-chart.js +161 -0
  1301. package/dist/web-components/components/chart/shape-chart.js.map +1 -0
  1302. package/dist/web-components/components/chart/shapes-extended.d.ts +198 -0
  1303. package/dist/web-components/components/chart/shapes-extended.js +182 -0
  1304. package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
  1305. package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
  1306. package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
  1307. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
  1308. package/dist/web-components/components/graph/graph.d.ts +154 -0
  1309. package/dist/web-components/components/graph/graph.js +149 -0
  1310. package/dist/web-components/components/graph/graph.js.map +1 -0
  1311. package/dist/web-components/components/order-book/order-book.d.ts +165 -0
  1312. package/dist/web-components/components/order-book/order-book.js +174 -0
  1313. package/dist/web-components/components/order-book/order-book.js.map +1 -0
  1314. package/dist/web-components/components/trading-chart/trading-chart.d.ts +143 -0
  1315. package/dist/web-components/components/trading-chart/trading-chart.js +158 -0
  1316. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
  1317. package/dist/web-components/elements/chart-3d.d.ts +2 -0
  1318. package/dist/web-components/elements/chart-3d.js +13 -0
  1319. package/dist/web-components/elements/chart-3d.js.map +1 -0
  1320. package/dist/web-components/elements/chart.d.ts +7 -0
  1321. package/dist/web-components/elements/chart.js +44 -0
  1322. package/dist/web-components/elements/chart.js.map +1 -0
  1323. package/dist/web-components/elements/graph.d.ts +2 -0
  1324. package/dist/web-components/elements/graph.js +12 -0
  1325. package/dist/web-components/elements/graph.js.map +1 -0
  1326. package/dist/web-components/elements/order-book.d.ts +2 -0
  1327. package/dist/web-components/elements/order-book.js +13 -0
  1328. package/dist/web-components/elements/order-book.js.map +1 -0
  1329. package/dist/web-components/elements/trading-chart.d.ts +2 -0
  1330. package/dist/web-components/elements/trading-chart.js +8 -0
  1331. package/dist/web-components/elements/trading-chart.js.map +1 -0
  1332. package/dist/web-components/html-custom-data.json +1470 -38
  1333. package/dist/web-components/types/react.d.ts +494 -0
  1334. package/dist/web-components/types/solid.d.ts +368 -0
  1335. package/dist/web-components/types/svelte.d.ts +368 -0
  1336. package/dist/web-components/types/vue.d.ts +410 -0
  1337. package/package.json +128 -1
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","names":["firstX","data","xs","list","i","item","detectXType","datas","x","axisModel","options","gridDefault","extent","min","max","values","v","smallestStep","step","columns","sorted","k","d","bandOf","category","axis","s","stackValues","totals","percent","byX","stack","count","y","t","running","members","base","top","valid","sums","total","b","DEFAULT_UP","DEFAULT_DOWN","buildModel","resolve","resolver","theme","resolveStaticColor","value","fallback","input","xType","categories","collectCategories","categoryMap","c","resolveX","xResolver","name","yOpts","heatmapData","yCategories","collectYCategories","yType","yCategoryMap","resolveY","resolverKey","usedKeys","series","key","index","entry","cache","normalizeData","type","paletteColor","color","cols","pointColors","resolved","rgba","colorScale","valueRange","cellColors","mix","lo","hi","span","packColor","rampColor","id","toCss","hidden","visible","allScatter","bars","band","slots","stackId","group","slotWidth","stacked","percentStacked","p","slot","stackedLines","candles","candleBand","heatmaps","cx","cy","xOpts","xRange","pad","ensureSpan","pointsOnly","niceDomain","yRange","yValues","filled","zoomOption","zoomAxes","tooltip","yFormat","plottedY","grids","gridOf","grid","GridIndex"],"sources":["../../../../charts/src/engine/model.ts"],"sourcesContent":["// Options -> chart model: normalized data, colors, bar layout, stacks and\n// the full ranges of the axes. Pure (colors go through the theme's resolver).\n\nimport {\n mix,\n packColor,\n rampColor,\n resolveStaticColor,\n toCss,\n type ColorResolver,\n type Rgba,\n} from \"./color\";\nimport {\n collectCategories,\n collectYCategories,\n normalizeData,\n xResolver,\n type SeriesColumns,\n type YResolver,\n} from \"./data\";\nimport { ensureSpan, niceDomain } from \"./scale\";\nimport { GridIndex } from \"./spatial\";\nimport type { ChartTheme } from \"./theme\";\nimport type {\n ChartAxisOptions,\n ChartAxisType,\n ChartCurve,\n ChartOptions,\n ChartSeries,\n ChartSeriesData,\n ChartSeriesType,\n} from \"./types\";\nimport type { Range } from \"./viewport\";\n\nexport interface AxisModel {\n type: ChartAxisType;\n reverse: boolean;\n categories: string[];\n title?: string;\n format?: (value: number) => string;\n grid: boolean;\n visible: boolean;\n tickCount?: number;\n}\n\nexport interface SeriesModel {\n index: number;\n /** Key of the GPU resources and of the data cache */\n key: string;\n id: string;\n name: string;\n type: ChartSeriesType;\n color: Rgba;\n colorCss: string;\n lineWidth: number;\n pointSize: number;\n opacity: number;\n hidden: boolean;\n showLabels: boolean;\n curve: ChartCurve;\n cols: SeriesColumns;\n /** Bars / candlesticks: x offset of the series inside a group and half of the bar width */\n barOffset: number;\n barHalfWidth: number;\n /** Bars: bottom / top of every bar (stacks included) */\n barBase: Float64Array | null;\n barTop: Float64Array | null;\n /** Stacked lines / areas: bottom / top of every point */\n stackBase: Float64Array | null;\n stackTop: Float64Array | null;\n /** Scatter / bar: resolved per-point colors */\n pointColors: (Rgba | undefined)[] | null;\n /** Candlesticks: colors of the rising / falling candles */\n upColor: Rgba;\n downColor: Rgba;\n /** Heatmaps: packed color of every cell (0 = no cell) and half of a cell, in data units */\n cellColors: Uint32Array | null;\n cellHalf: { x: number; y: number };\n /** Heatmaps: ramp of the colors and the values at its ends */\n colorScale: Rgba[];\n valueRange: Range;\n /** Corner radius in CSS pixels (bars, heatmap cells) */\n radius: number;\n /** Tooltip format of the values */\n format?: (value: number) => string;\n}\n\nexport interface ChartModel {\n series: SeriesModel[];\n x: AxisModel;\n y: AxisModel;\n /** Full ranges (zoomed out) */\n base: { x: Range; y: Range };\n /** Every series is a scatter (or a heatmap): nearest tooltips, xy zoom */\n allScatter: boolean;\n zoom: { x: boolean; y: boolean };\n tooltipMode: \"nearest\" | \"axis\";\n /** Y value the areas are filled to */\n baseline: number;\n /** Smallest zoomed spans */\n minSpan: { x: number; y: number };\n /** Stacks are scaled to 100% */\n percent: boolean;\n /** Stack id of every series (`null` when not stacked) */\n stacks: (string | null)[];\n}\n\nexport interface DataCacheEntry {\n data: ChartSeriesData;\n resolverKey: string;\n cols: SeriesColumns;\n}\n\nexport type DataCache = Map<string, DataCacheEntry>;\n\nconst firstX = (data: ChartSeriesData): unknown => {\n if (typeof data === \"object\" && data !== null && !(\"length\" in data)) {\n const xs = (data as { x?: ArrayLike<unknown> }).x;\n return xs && xs.length ? xs[0] : undefined;\n }\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < Math.min(list.length, 8); i++) {\n const item = list[i];\n if (Array.isArray(item)) return item[0];\n if (item && typeof item === \"object\") return (item as { x?: unknown }).x;\n }\n return undefined;\n};\n\n/** Axis type when not given: dates -> time, strings -> category */\nexport const detectXType = (\n datas: readonly ChartSeriesData[],\n): ChartAxisType => {\n for (const data of datas) {\n const x = firstX(data);\n if (x instanceof Date) return \"time\";\n if (typeof x === \"string\") return \"category\";\n }\n return \"linear\";\n};\n\nconst axisModel = (\n options: ChartAxisOptions | undefined,\n type: ChartAxisType,\n categories: string[],\n gridDefault: boolean,\n): AxisModel => ({\n type,\n reverse: !!options?.reverse,\n categories,\n title: options?.title,\n format: options?.format,\n grid: options?.grid ?? gridDefault,\n visible: options?.visible ?? true,\n tickCount: options?.tickCount,\n});\n\nconst extent = (values: ArrayLike<number>): Range => {\n let min = Infinity;\n let max = -Infinity;\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n if (!Number.isFinite(v)) continue;\n if (v < min) min = v;\n if (v > max) max = v;\n }\n return [min, max];\n};\n\n/** Smallest positive gap between consecutive values (bar width on numeric axes) */\nconst smallestStep = (columns: ArrayLike<number>[], sorted: boolean[]) => {\n let step = Infinity;\n columns.forEach((values, k) => {\n const xs = sorted[k] ? values : Float64Array.from(values).sort();\n for (let i = 1; i < xs.length; i++) {\n const d = xs[i] - xs[i - 1];\n if (d > 0 && d < step) step = d;\n }\n });\n return step;\n};\n\nconst bandOf = (list: SeriesModel[], axis: \"x\" | \"y\", category: boolean) => {\n if (category) return 1;\n const step = smallestStep(\n list.map((s) => (axis === \"x\" ? s.cols.x : s.cols.y)),\n list.map((s) => axis === \"x\" && s.cols.sorted),\n );\n return Number.isFinite(step) ? step : 1;\n};\n\n/**\n * Stacks the y values of series sharing a stack id (positive and negative\n * values separately); `percent` scales every stack to 100 at each x\n */\nconst stackValues = (\n list: { s: SeriesModel; stack: string }[],\n percent: boolean,\n): { base: Float64Array; top: Float64Array }[] => {\n const totals = new Map<string, Map<number, [number, number]>>();\n if (percent) {\n for (const { s, stack } of list) {\n let byX = totals.get(stack);\n if (!byX) totals.set(stack, (byX = new Map()));\n const { x, y, count } = s.cols;\n for (let i = 0; i < count; i++) {\n const v = y[i];\n if (!Number.isFinite(v)) continue;\n const t = byX.get(x[i]) ?? [0, 0];\n if (v >= 0) t[0] += v;\n else t[1] -= v;\n byX.set(x[i], t);\n }\n }\n }\n const running = new Map<string, Map<number, [number, number]>>();\n const members = new Map<string, number>();\n for (const { stack } of list)\n members.set(stack, (members.get(stack) ?? 0) + 1);\n return list.map(({ s, stack }) => {\n const { x, y, count } = s.cols;\n if (!percent && members.get(stack) === 1) {\n // alone in its stack (e.g. grouped bars): from zero, no bookkeeping\n const base = new Float64Array(count);\n const top = new Float64Array(count);\n for (let i = 0; i < count; i++) {\n const v = y[i];\n const valid = Number.isFinite(v);\n base[i] = valid ? 0 : NaN;\n top[i] = valid ? v : NaN;\n }\n return { base, top };\n }\n let byX = running.get(stack);\n if (!byX) running.set(stack, (byX = new Map()));\n const sums = totals.get(stack);\n const base = new Float64Array(count);\n const top = new Float64Array(count);\n for (let i = 0; i < count; i++) {\n let v = y[i];\n if (!Number.isFinite(v)) {\n base[i] = NaN;\n top[i] = NaN;\n continue;\n }\n if (sums) {\n const t = sums.get(x[i]);\n const total = t ? (v >= 0 ? t[0] : t[1]) : 0;\n v = total > 0 ? (v / total) * 100 : 0;\n }\n const t = byX.get(x[i]) ?? [0, 0];\n const b = v >= 0 ? t[0] : t[1];\n base[i] = b;\n top[i] = b + v;\n if (v >= 0) t[0] += v;\n else t[1] += v;\n byX.set(x[i], t);\n }\n return { base, top };\n });\n};\n\nconst DEFAULT_UP = \"var(--success-color, #16a34a)\";\nconst DEFAULT_DOWN = \"var(--danger-color, #dc2626)\";\n\nexport const buildModel = (\n options: ChartOptions,\n theme: ChartTheme,\n hidden: ReadonlySet<string>,\n cache: DataCache,\n resolver: ColorResolver | null = null,\n): ChartModel => {\n const resolve: ColorResolver =\n resolver ??\n theme.resolve ??\n ((value, fallback) => resolveStaticColor(value, {}, fallback));\n const input = options.series;\n const datas = input.map((s) => s.data);\n const xType = options.xAxis?.type ?? detectXType(datas);\n const categories =\n xType === \"category\"\n ? [...(options.xAxis?.categories ?? collectCategories(datas))]\n : [];\n const categoryMap = new Map(categories.map((c, i) => [c, i]));\n const resolveX = xResolver(xType, (name) => categoryMap.get(name) ?? NaN);\n\n // category y axis (heatmap rows): explicit, or detected from string y values\n const yOpts = options.yAxis;\n const heatmapData = input\n .filter((s) => s.type === \"heatmap\")\n .map((s) => s.data);\n const yCategories =\n yOpts?.type === \"category\" || (!yOpts?.type && heatmapData.length)\n ? [...(yOpts?.categories ?? collectYCategories(heatmapData))]\n : [];\n const yType: ChartAxisType =\n yOpts?.type === \"category\" || yCategories.length\n ? \"category\"\n : yOpts?.type === \"time\"\n ? \"time\"\n : \"linear\";\n const yCategoryMap = new Map(yCategories.map((c, i) => [c, i]));\n const resolveY: YResolver = (v) =>\n typeof v === \"number\"\n ? v\n : typeof v === \"string\"\n ? yType === \"category\"\n ? (yCategoryMap.get(v) ?? NaN)\n : Number(v)\n : NaN;\n const resolverKey = `${xType}|${categories.join(\"\\u0001\")}|${yType}|${yCategories.join(\"\\u0001\")}`;\n const percent = options.stackMode === \"percent\";\n\n const usedKeys = new Set<string>();\n const series: SeriesModel[] = input.map((s: ChartSeries, index) => {\n let key = s.id ?? `#${index}`;\n while (usedKeys.has(key)) key += \"'\";\n usedKeys.add(key);\n let entry = cache.get(key);\n if (!entry || entry.data !== s.data || entry.resolverKey !== resolverKey) {\n entry = {\n data: s.data,\n resolverKey,\n cols: normalizeData(s.data, resolveX, resolveY),\n };\n cache.set(key, entry);\n }\n const type = s.type ?? \"line\";\n const paletteColor = theme.palette[index % theme.palette.length];\n const color = s.color ? resolve(s.color, paletteColor) : paletteColor;\n const cols = entry.cols;\n let pointColors: (Rgba | undefined)[] | null = null;\n if ((type === \"scatter\" || type === \"bar\") && cols.colors) {\n const resolved = new Map<string, Rgba>();\n pointColors = cols.colors.map((c) => {\n if (c === undefined) return undefined;\n let rgba = resolved.get(c);\n if (!rgba) resolved.set(c, (rgba = resolve(c, color)));\n return rgba;\n });\n }\n let colorScale: Rgba[] = [];\n let valueRange: Range = [0, 1];\n let cellColors: Uint32Array | null = null;\n if (type === \"heatmap\") {\n colorScale =\n s.colorScale && s.colorScale.length\n ? s.colorScale.map((c) => resolve(c, color))\n : [mix(theme.background, color, 0.08), color];\n valueRange = s.valueRange\n ? [s.valueRange[0], s.valueRange[1]]\n : [cols.valueMin, cols.valueMax];\n if (!Number.isFinite(valueRange[0])) valueRange = [0, 1];\n const values = cols.value ?? cols.y;\n const [lo, hi] = valueRange;\n const span = hi - lo || 1;\n cellColors = new Uint32Array(cols.count);\n for (let i = 0; i < cols.count; i++) {\n const v = values[i];\n if (!Number.isFinite(v) || !Number.isFinite(cols.y[i])) continue;\n // 0 means \"no cell\": a fully transparent color packs to 0 as well\n cellColors[i] = packColor(rampColor(colorScale, (v - lo) / span));\n }\n }\n const id = s.id ?? String(index);\n return {\n index,\n key,\n id,\n name: s.name ?? `Series ${index + 1}`,\n type,\n color,\n colorCss: toCss(color),\n lineWidth: s.lineWidth ?? (type === \"candlestick\" ? 1 : 2),\n pointSize: s.pointSize ?? 8,\n opacity:\n s.opacity ?? (type === \"area\" ? 0.28 : type === \"scatter\" ? 0.78 : 1),\n hidden: !!s.hidden || hidden.has(id),\n showLabels: !!s.showLabels,\n curve: s.curve ?? \"linear\",\n cols,\n barOffset: 0,\n barHalfWidth: 0,\n barBase: null,\n barTop: null,\n stackBase: null,\n stackTop: null,\n pointColors,\n upColor:\n type === \"candlestick\"\n ? resolve(s.upColor ?? DEFAULT_UP, [0.09, 0.64, 0.29, 1])\n : color,\n downColor:\n type === \"candlestick\"\n ? resolve(s.downColor ?? DEFAULT_DOWN, [0.86, 0.15, 0.15, 1])\n : color,\n cellColors,\n cellHalf: { x: 0.5, y: 0.5 },\n colorScale,\n valueRange,\n radius: s.radius ?? (type === \"heatmap\" ? 2 : 3),\n format: s.format,\n };\n });\n\n const visible = series.filter((s) => !s.hidden);\n const allScatter =\n series.length > 0 &&\n series.every((s) => s.type === \"scatter\" || s.type === \"heatmap\");\n\n // Bars: groups (one slot per stack) and stacking\n const bars = visible.filter((s) => s.type === \"bar\");\n const band = bandOf(bars, \"x\", xType === \"category\");\n if (bars.length) {\n const slots = new Map<string, number>();\n const stackId = (s: SeriesModel) =>\n input[s.index].stack ?? `\\u0000${s.key}`;\n for (const s of bars) {\n if (!slots.has(stackId(s))) slots.set(stackId(s), slots.size);\n }\n const group = band * (slots.size > 1 ? 0.78 : 0.62);\n const slotWidth = group / slots.size;\n const stacked = stackValues(\n bars.map((s) => ({ s, stack: stackId(s) })),\n false,\n );\n const percentStacked = percent\n ? stackValues(\n bars\n .filter((s) => input[s.index].stack !== undefined)\n .map((s) => ({ s, stack: stackId(s) })),\n true,\n )\n : [];\n let p = 0;\n bars.forEach((s, k) => {\n const slot = slots.get(stackId(s)) ?? 0;\n s.barOffset = -group / 2 + slotWidth * (slot + 0.5);\n s.barHalfWidth = (slotWidth / 2) * (slots.size > 1 ? 0.86 : 1);\n const values =\n percent && input[s.index].stack !== undefined\n ? percentStacked[p++]\n : stacked[k];\n s.barBase = values.base;\n s.barTop = values.top;\n });\n }\n\n // Stacked lines / areas\n const stackedLines = visible.filter(\n (s) =>\n (s.type === \"line\" || s.type === \"area\") &&\n input[s.index].stack !== undefined,\n );\n if (stackedLines.length) {\n const values = stackValues(\n stackedLines.map((s) => ({ s, stack: input[s.index].stack ?? \"\" })),\n percent,\n );\n stackedLines.forEach((s, k) => {\n s.stackBase = values[k].base;\n s.stackTop = values[k].top;\n });\n }\n\n // Candlesticks: one band per x, bodies of 60%\n const candles = visible.filter((s) => s.type === \"candlestick\");\n const candleBand = bandOf(candles, \"x\", xType === \"category\");\n for (const s of candles) s.barHalfWidth = candleBand * 0.3;\n\n // Heatmaps: cells of the size of the smallest step\n const heatmaps = visible.filter((s) => s.type === \"heatmap\");\n if (heatmaps.length) {\n const cx = bandOf(heatmaps, \"x\", xType === \"category\") / 2;\n const cy = bandOf(heatmaps, \"y\", yType === \"category\") / 2;\n for (const s of heatmaps) s.cellHalf = { x: cx, y: cy };\n }\n\n // X range\n const xOpts = options.xAxis;\n let xRange: Range;\n if (xType === \"category\") {\n xRange = [-0.5, Math.max(1, categories.length) - 0.5];\n } else {\n const values: number[] = [];\n for (const s of visible) {\n values.push(s.cols.xMin, s.cols.xMax);\n const pad =\n s.type === \"bar\"\n ? band / 2\n : s.type === \"candlestick\"\n ? candleBand / 2\n : s.type === \"heatmap\"\n ? s.cellHalf.x\n : 0;\n if (pad) values.push(s.cols.xMin - pad, s.cols.xMax + pad);\n }\n xRange = ensureSpan(\n ...extent(values),\n xType === \"time\" ? [Date.now() - 86400000, Date.now()] : [0, 1],\n );\n const pointsOnly = series.every((s) => s.type === \"scatter\");\n if (pointsOnly) {\n const pad = (xRange[1] - xRange[0]) * 0.04;\n xRange = [xRange[0] - pad, xRange[1] + pad];\n }\n const nice = xOpts?.nice ?? (pointsOnly && xType === \"linear\");\n if (nice && xType === \"linear\") {\n xRange = niceDomain(xRange[0], xRange[1], xOpts?.tickCount ?? 6);\n }\n }\n if (xOpts?.min !== undefined) xRange[0] = xOpts.min;\n if (xOpts?.max !== undefined) xRange[1] = xOpts.max;\n xRange = ensureSpan(xRange[0], xRange[1]);\n\n // Y range\n let yRange: Range;\n if (yType === \"category\") {\n yRange = [-0.5, Math.max(1, yCategories.length) - 0.5];\n } else {\n const yValues: number[] = [];\n for (const s of visible) {\n if (s.type === \"bar\" && s.barBase && s.barTop) {\n yValues.push(...extent(s.barBase), ...extent(s.barTop));\n } else if (s.stackBase && s.stackTop) {\n yValues.push(...extent(s.stackBase), ...extent(s.stackTop));\n } else if (s.type === \"heatmap\") {\n yValues.push(s.cols.yMin - s.cellHalf.y, s.cols.yMax + s.cellHalf.y);\n } else {\n yValues.push(s.cols.yMin, s.cols.yMax);\n }\n }\n const filled = bars.length > 0 || visible.some((s) => s.type === \"area\");\n if (bars.length || yOpts?.zero) yValues.push(0);\n if (bars.some((s) => s.showLabels)) {\n // room for the value labels above the tallest bar\n const [lo, hi] = extent(yValues);\n if (hi > 0) yValues.push(hi + (hi - Math.min(0, lo)) * 0.1);\n if (lo < 0) yValues.push(lo - (Math.max(0, hi) - lo) * 0.1);\n }\n yRange = ensureSpan(...extent(yValues));\n if (series.every((s) => s.type === \"scatter\")) {\n const pad = (yRange[1] - yRange[0]) * 0.06;\n yRange = [yRange[0] - pad, yRange[1] + pad];\n } else if (candles.length && !bars.length) {\n // room above / below the wicks\n const pad = (yRange[1] - yRange[0]) * 0.04;\n yRange = [yRange[0] - pad, yRange[1] + pad];\n }\n if ((yOpts?.nice ?? !heatmaps.length) && yType === \"linear\") {\n yRange = niceDomain(yRange[0], yRange[1], yOpts?.tickCount ?? 5);\n }\n if (percent && (bars.length || stackedLines.length)) {\n // 100% stacks: exactly 0-100 (or -100-100)\n yRange = [extent(yValues)[0] < 0 ? -100 : 0, 100];\n }\n if (filled && !yOpts?.zero) {\n // bars start at zero: no padding below / above it\n if (yRange[0] < 0 && extent(yValues)[0] >= 0) yRange[0] = 0;\n }\n }\n if (yOpts?.min !== undefined) yRange[0] = yOpts.min;\n if (yOpts?.max !== undefined) yRange[1] = yOpts.max;\n yRange = ensureSpan(yRange[0], yRange[1]);\n\n const zoomOption =\n options.interaction === false\n ? false\n : options.interaction === true || options.interaction === undefined\n ? true\n : (options.interaction.zoom ?? true);\n const zoomAxes =\n zoomOption === false\n ? { x: false, y: false }\n : zoomOption === true\n ? { x: true, y: allScatter }\n : { x: zoomOption.includes(\"x\"), y: zoomOption.includes(\"y\") };\n\n const tooltip =\n typeof options.tooltip === \"object\" ? options.tooltip : undefined;\n\n const yFormat =\n yOpts?.format ??\n (percent && (bars.length || stackedLines.length)\n ? (v: number) => `${+v.toFixed(1)}%`\n : undefined);\n\n return {\n series,\n x: axisModel(xOpts, xType, categories, false),\n y: {\n ...axisModel(yOpts, yType, yCategories, yType !== \"category\"),\n format: yFormat,\n },\n base: { x: xRange, y: yRange },\n allScatter,\n zoom: zoomAxes,\n tooltipMode: tooltip?.mode ?? (allScatter ? \"nearest\" : \"axis\"),\n baseline: Math.min(Math.max(0, yRange[0]), yRange[1]),\n minSpan: {\n x: xType === \"category\" ? 1 : (xRange[1] - xRange[0]) * 1e-7,\n y: yType === \"category\" ? 1 : (yRange[1] - yRange[0]) * 1e-7,\n },\n percent,\n stacks: input.map((s) =>\n s.stack !== undefined &&\n (s.type === \"bar\" || s.type === \"line\" || s.type === \"area\" || !s.type)\n ? `${s.type === \"bar\" ? \"bar\" : \"line\"}:${s.stack}`\n : null,\n ),\n };\n};\n\n/** Y value drawn for a point: its stacked top for stacks, the close for candles */\nexport const plottedY = (s: SeriesModel, i: number): number =>\n s.barTop ? s.barTop[i] : s.stackTop ? s.stackTop[i] : s.cols.y[i];\n\nconst grids = new WeakMap<SeriesColumns, GridIndex>();\n\n/** Spatial index of a scatter series, built on first use and kept with its data */\nexport const gridOf = (s: SeriesModel): GridIndex => {\n let grid = grids.get(s.cols);\n if (!grid) {\n grid = new GridIndex(s.cols.x, s.cols.y, s.cols.count);\n grids.set(s.cols, grid);\n }\n return grid;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"model.js","names":["LOG_MAP","firstX","data","xs","list","i","item","detectXType","datas","x","axisModel","options","gridDefault","definedEntries","out","value","key","extent","min","max","values","v","smallestStep","step","columns","sorted","k","d","bandOf","category","axis","s","stackValues","totals","percent","byX","stack","count","y","t","running","members","base","top","valid","sums","total","b","DEFAULT_UP","DEFAULT_DOWN","hasDateY","precise","nextStep","power","f","alignedDomain","a0","a1","left","stepL","tickStep","n","lo","hi","ensureSpan","niceDomain","start","mapped","mapColumns","map","hit","raw","mapper","column","a","cols","range","add","c","decades","logColumns","rawBase","zero","toPlotY","model","fromPlotY","floorBases","floor","heatPosition","mid","heatmapStops","dark","luminance","theme","scheme","neutral","mixOklab","end","withLightness","side","negative","color","buildModel","resolve","resolver","resolveStaticColor","fallback","input","locale","resolveLocale","tooltipOptions","labels","chartLabels","xType","categories","collectCategories","categoryMap","resolveX","xResolver","name","yOpts","heatmapData","yCategories","collectYCategories","yType","yLog","yCategoryMap","resolveY","resolverKey","horizontal","usedKeys","series","index","entry","cache","normalizeData","type","paletteColor","pointColors","resolved","rgba","colorScale","valueRange","cellColors","colorMidpoint","colorLut","scale","lut","oklabRamp","ramp","connector","id","toCss","hidden","visible","allScatter","slotted","bars","band","slots","stackId","share","w","group","slotWidth","slot","stackedBars","stacked","percentStacked","p","y0","stackedLines","candles","candleBand","heatmaps","cx","cy","xOpts","xRange","pad","pointsOnly","valuesOf","listBars","log","leftVisible","leftSeries","leftBars","yRange","yValues","filled","yBound","y2Opts","y2","y2Map","rightSeries","y2Log","rightVisible","domain","y2Bound","timeline","zoomOption","zoomAxes","yFormat","formatPercent","valueFormatter","plottedY","grids","gridOf","grid","GridIndex"],"sources":["../../../../charts/src/engine/model.ts"],"sourcesContent":["// Options -> chart model: normalized data, colors, bar layout, stacks and\n// the full ranges of the axes. Pure (colors go through the theme's resolver).\n\nimport {\n luminance,\n mixOklab,\n oklabRamp,\n resolveStaticColor,\n toCss,\n withLightness,\n type ColorResolver,\n type Rgba,\n} from \"./color\";\nimport {\n collectCategories,\n collectYCategories,\n normalizeData,\n xResolver,\n type SeriesColumns,\n type YResolver,\n} from \"./data\";\nimport { formatPercent, valueFormatter } from \"./format\";\nimport { chartLabels } from \"./labels\";\nimport { resolveLocale } from \"./locale\";\nimport { ensureSpan, niceDomain, tickStep } from \"./scale\";\nimport { GridIndex } from \"./spatial\";\nimport type { ChartTheme } from \"./theme\";\nimport type {\n ChartAxisOptions,\n ChartAxisType,\n ChartColorScheme,\n ChartCurve,\n ChartOptions,\n ChartSeries,\n ChartSeriesData,\n ChartLabels,\n ChartSeriesType,\n ChartTimeZone,\n} from \"./types\";\nimport type { Range } from \"./viewport\";\n\nexport interface AxisModel {\n type: ChartAxisType;\n reverse: boolean;\n categories: string[];\n title?: string;\n format?: (value: number) => string;\n grid: boolean;\n visible: boolean;\n tickCount?: number;\n /** Locale of the tick and tooltip labels (historical English texts when omitted) */\n locale?: string;\n /** Calendar of a time axis */\n timeZone?: ChartTimeZone;\n}\n\nexport interface SeriesModel {\n index: number;\n /** Key of the GPU resources and of the data cache */\n key: string;\n id: string;\n name: string;\n type: ChartSeriesType;\n color: Rgba;\n colorCss: string;\n lineWidth: number;\n pointSize: number;\n opacity: number;\n hidden: boolean;\n showLabels: boolean;\n curve: ChartCurve;\n /**\n * Plotted columns: the data, mapped onto the left axis for the series of\n * the right axis (`raw` keeps the values of the data)\n */\n cols: SeriesColumns;\n /** Columns of the data (shown in tooltips and labels) */\n raw: SeriesColumns;\n /** Value axis of the series */\n yAxis: \"left\" | \"right\";\n /** Bars with a start (`y0`): drawn from it, never stacked */\n floating: boolean;\n /** Bars / candlesticks: x offset of the series inside a group and half of the bar width */\n barOffset: number;\n barHalfWidth: number;\n /** Bars: bottom / top of every bar (stacks included) */\n barBase: Float64Array | null;\n barTop: Float64Array | null;\n /** Stacked lines / areas: bottom / top of every point */\n stackBase: Float64Array | null;\n stackTop: Float64Array | null;\n /** Scatter / bar: resolved per-point colors */\n pointColors: (Rgba | undefined)[] | null;\n /** Candlesticks: colors of the rising / falling candles */\n upColor: Rgba;\n downColor: Rgba;\n /** Heatmaps: packed color of every cell (0 = no cell) and half of a cell, in data units */\n cellColors: Uint32Array | null;\n cellHalf: { x: number; y: number };\n /** Heatmaps: ramp of the colors and the values at its ends */\n colorScale: Rgba[];\n valueRange: Range;\n /** Heatmaps: value at the middle of the ramp (`null`: linear over the range) */\n colorMidpoint: number | null;\n /** Heatmaps: 256 packed colors along the ramp (OKLab) */\n colorLut: Uint32Array | null;\n /** Hit tests and tooltips include the series */\n tooltip: boolean;\n /** Box plots: outlier rings or dots, and their diameter */\n outlierShape: \"hollow\" | \"filled\";\n outlierSize: number;\n /** Bars: lines from the end of every bar to the next one */\n connector: { color: Rgba; dash: number[]; width: number } | null;\n /** Corner radius in CSS pixels (bars, heatmap cells) */\n radius: number;\n /** Tooltip format of the values */\n format?: (value: number) => string;\n /** Scatter: name of the `value` of the points */\n valueName?: string;\n}\n\n/**\n * Map of the values of a series onto the plotted (left axis) units:\n * `left = (log ? log10(value) : value) * scale + offset`\n */\nexport interface AxisMap {\n scale: number;\n offset: number;\n /** Logarithmic axis: the values are plotted as their base-10 logarithm */\n log?: boolean;\n}\n\n/** Plotted units of a log axis: the base-10 logarithm of the values */\nconst LOG_MAP: AxisMap = { scale: 1, offset: 0, log: true };\n\nexport interface ChartModel {\n series: SeriesModel[];\n x: AxisModel;\n y: AxisModel;\n /** Right value axis (`yAxis2`), `null` when no series uses it */\n y2: AxisModel | null;\n /** Right axis values -> left axis values */\n y2Map: AxisMap | null;\n /** The x axis runs down the left side, the values along the bottom */\n horizontal: boolean;\n /** Resolved locale (`locale` option, else the page language) */\n locale: string;\n /** Texts of the locale with the `labels` overrides */\n labels: ChartLabels;\n /** Tooltip value of the locale (series without `format`) */\n formatValue: (value: number) => string;\n /** Full ranges (zoomed out) */\n base: { x: Range; y: Range };\n /** Every series is a scatter (or a heatmap): nearest tooltips, xy zoom */\n allScatter: boolean;\n zoom: { x: boolean; y: boolean };\n tooltipMode: \"nearest\" | \"axis\" | \"item\";\n /** Y value the areas are filled to */\n baseline: number;\n /** Smallest zoomed spans */\n minSpan: { x: number; y: number };\n /** Stacks are scaled to 100% */\n percent: boolean;\n /** Stack id of every series (`null` when not stacked) */\n stacks: (string | null)[];\n}\n\nexport interface DataCacheEntry {\n data: ChartSeriesData;\n resolverKey: string;\n cols: SeriesColumns;\n}\n\nexport type DataCache = Map<string, DataCacheEntry>;\n\nconst firstX = (data: ChartSeriesData): unknown => {\n if (typeof data === \"object\" && data !== null && !(\"length\" in data)) {\n const xs = (data as { x?: ArrayLike<unknown> }).x;\n return xs && xs.length ? xs[0] : undefined;\n }\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < Math.min(list.length, 8); i++) {\n const item = list[i];\n if (Array.isArray(item)) return item[0];\n if (item && typeof item === \"object\") return (item as { x?: unknown }).x;\n }\n return undefined;\n};\n\n/** Axis type when not given: dates -> time, strings -> category */\nexport const detectXType = (\n datas: readonly ChartSeriesData[],\n): ChartAxisType => {\n for (const data of datas) {\n const x = firstX(data);\n if (x instanceof Date) return \"time\";\n if (typeof x === \"string\") return \"category\";\n }\n return \"linear\";\n};\n\nconst axisModel = (\n options: ChartAxisOptions | undefined,\n type: ChartAxisType,\n categories: string[],\n gridDefault: boolean,\n locale: string,\n): AxisModel => ({\n type,\n reverse: !!options?.reverse,\n categories,\n title: options?.title,\n format: options?.format,\n grid: options?.grid ?? gridDefault,\n visible: options?.visible ?? true,\n tickCount: options?.tickCount,\n locale,\n timeZone: options?.timeZone ?? \"local\",\n});\n\n/** Defined entries only (`{ open: undefined }` keeps the built-in text) */\nconst definedEntries = <T extends object>(value: T | undefined): Partial<T> => {\n const out: Partial<T> = {};\n if (!value) return out;\n for (const key of Object.keys(value) as (keyof T)[]) {\n if (value[key] !== undefined) out[key] = value[key];\n }\n return out;\n};\n\nconst extent = (values: ArrayLike<number>): Range => {\n let min = Infinity;\n let max = -Infinity;\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n if (!Number.isFinite(v)) continue;\n if (v < min) min = v;\n if (v > max) max = v;\n }\n return [min, max];\n};\n\n/** Smallest positive gap between consecutive values (bar width on numeric axes) */\nconst smallestStep = (columns: ArrayLike<number>[], sorted: boolean[]) => {\n let step = Infinity;\n columns.forEach((values, k) => {\n const xs = sorted[k] ? values : Float64Array.from(values).sort();\n for (let i = 1; i < xs.length; i++) {\n const d = xs[i] - xs[i - 1];\n if (d > 0 && d < step) step = d;\n }\n });\n return step;\n};\n\nconst bandOf = (list: SeriesModel[], axis: \"x\" | \"y\", category: boolean) => {\n if (category) return 1;\n const step = smallestStep(\n list.map((s) => (axis === \"x\" ? s.cols.x : s.cols.y)),\n list.map((s) => axis === \"x\" && s.cols.sorted),\n );\n return Number.isFinite(step) ? step : 1;\n};\n\n/**\n * Stacks the y values of series sharing a stack id (positive and negative\n * values separately); `percent` scales every stack to 100 at each x\n */\nconst stackValues = (\n list: { s: SeriesModel; stack: string }[],\n percent: boolean,\n): { base: Float64Array; top: Float64Array }[] => {\n const totals = new Map<string, Map<number, [number, number]>>();\n if (percent) {\n for (const { s, stack } of list) {\n let byX = totals.get(stack);\n if (!byX) totals.set(stack, (byX = new Map()));\n const { x, y, count } = s.cols;\n for (let i = 0; i < count; i++) {\n const v = y[i];\n if (!Number.isFinite(v)) continue;\n const t = byX.get(x[i]) ?? [0, 0];\n if (v >= 0) t[0] += v;\n else t[1] -= v;\n byX.set(x[i], t);\n }\n }\n }\n const running = new Map<string, Map<number, [number, number]>>();\n const members = new Map<string, number>();\n for (const { stack } of list)\n members.set(stack, (members.get(stack) ?? 0) + 1);\n return list.map(({ s, stack }) => {\n const { x, y, count } = s.cols;\n if (!percent && members.get(stack) === 1) {\n // alone in its stack (e.g. grouped bars): from zero, no bookkeeping\n const base = new Float64Array(count);\n const top = new Float64Array(count);\n for (let i = 0; i < count; i++) {\n const v = y[i];\n const valid = Number.isFinite(v);\n base[i] = valid ? 0 : NaN;\n top[i] = valid ? v : NaN;\n }\n return { base, top };\n }\n let byX = running.get(stack);\n if (!byX) running.set(stack, (byX = new Map()));\n const sums = totals.get(stack);\n const base = new Float64Array(count);\n const top = new Float64Array(count);\n for (let i = 0; i < count; i++) {\n let v = y[i];\n if (!Number.isFinite(v)) {\n base[i] = NaN;\n top[i] = NaN;\n continue;\n }\n if (sums) {\n const t = sums.get(x[i]);\n const total = t ? (v >= 0 ? t[0] : t[1]) : 0;\n v = total > 0 ? (v / total) * 100 : 0;\n }\n const t = byX.get(x[i]) ?? [0, 0];\n const b = v >= 0 ? t[0] : t[1];\n base[i] = b;\n top[i] = b + v;\n if (v >= 0) t[0] += v;\n else t[1] += v;\n byX.set(x[i], t);\n }\n return { base, top };\n });\n};\n\nconst DEFAULT_UP = \"var(--success-color, #16a34a)\";\nconst DEFAULT_DOWN = \"var(--danger-color, #dc2626)\";\n\n/** Dates in the y values (or starts) of objects: a time value axis */\nconst hasDateY = (datas: readonly ChartSeriesData[]): boolean => {\n for (const data of datas) {\n if (typeof data !== \"object\" || data === null || !(\"length\" in data))\n continue;\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < Math.min(list.length, 8); i++) {\n const item = list[i];\n if (item && typeof item === \"object\" && !Array.isArray(item)) {\n const d = item as { y?: unknown; y0?: unknown };\n if (d.y instanceof Date || d.y0 instanceof Date) return true;\n }\n }\n }\n return false;\n};\n\nconst precise = (v: number) => Number(v.toPrecision(12));\n\n/** Next step of the 1, 2, 5 × 10^k sequence */\nconst nextStep = (step: number) => {\n const power = 10 ** Math.floor(Math.log10(step) + 1e-9);\n const f = step / power;\n return (f < 1.5 ? 2 : f < 3.5 ? 5 : 10) * power;\n};\n\n/**\n * Range of the right axis covering [lo, hi] with as many tick intervals as\n * the left range has (its ticks then line up with the left grid)\n */\nexport const alignedDomain = (\n lo: number,\n hi: number,\n left: Range,\n count: number,\n): Range => {\n const [a0, a1] = left;\n const stepL = tickStep(a0, a1, count);\n const n = stepL > 0 ? Math.round((a1 - a0) / stepL) : 0;\n [lo, hi] = ensureSpan(lo, hi);\n if (n < 1 || Math.abs(n * stepL - (a1 - a0)) > stepL * 1e-6) {\n return niceDomain(lo, hi, count);\n }\n let step = tickStep(lo, hi, n);\n for (let k = 0; k < 40 && step > 0; k++) {\n const start = Math.floor(lo / step + 1e-9) * step;\n if (start + n * step >= hi - step * 1e-9) {\n return [precise(start), precise(start + n * step)];\n }\n step = nextStep(step);\n }\n return niceDomain(lo, hi, count);\n};\n\nconst mapped = new WeakMap<\n SeriesColumns,\n { key: string; cols: SeriesColumns }\n>();\n\n/** Columns of a right-axis series in left axis units (cached with the data) */\nconst mapColumns = (raw: SeriesColumns, map: AxisMap): SeriesColumns => {\n const key = `${map.scale},${map.offset},${!!map.log}`;\n const hit = mapped.get(raw);\n if (hit && hit.key === key) return hit.cols;\n const f = mapper(map);\n const column = (a: Float64Array | null) => (a ? a.map(f) : null);\n const cols: SeriesColumns = {\n ...raw,\n y: raw.y.map(f),\n open: column(raw.open),\n high: column(raw.high),\n low: column(raw.low),\n y0: column(raw.y0),\n q1: column(raw.q1),\n q3: column(raw.q3),\n outliers: raw.outliers ? raw.outliers.map((list) => list?.map(f)) : null,\n };\n if (map.log) {\n // zeros and negatives have no logarithm: the extent of the others\n const range: Range = [Infinity, -Infinity];\n const add = (a: ArrayLike<number> | null | undefined) => {\n if (!a) return;\n for (let i = 0; i < a.length; i++) {\n const v = a[i];\n if (!Number.isFinite(v)) continue;\n if (v < range[0]) range[0] = v;\n if (v > range[1]) range[1] = v;\n }\n };\n for (const c of [cols.y, cols.y0, cols.high, cols.low, cols.q1, cols.q3])\n add(c);\n cols.outliers?.forEach((list) => add(list));\n cols.yMin = range[0] <= range[1] ? range[0] : NaN;\n cols.yMax = range[0] <= range[1] ? range[1] : NaN;\n } else {\n const lo = f(raw.yMin);\n const hi = f(raw.yMax);\n cols.yMin = Math.min(lo, hi);\n cols.yMax = Math.max(lo, hi);\n }\n mapped.set(raw, { key, cols });\n return cols;\n};\n\n/** A log range widened to whole decades (`[0.3, 2.4]` -> `[0, 3]`) */\nconst decades = (range: Range): Range => {\n const lo = Math.floor(range[0] + 1e-9);\n const hi = Math.ceil(range[1] - 1e-9);\n return [lo, hi > lo ? hi : lo + 1];\n};\n\n/**\n * Plots a series through a map: its columns, bars, stacks and lower\n * edges (bars / areas of the right axis start at `zero`)\n */\nconst logColumns = (s: SeriesModel, map: AxisMap, zero = -Infinity) => {\n const f = mapper(map);\n const column = (a: Float64Array | null) => (a ? a.map(f) : null);\n const rawBase = s.stackBase;\n s.cols = mapColumns(s.raw, map);\n s.barBase =\n s.barBase && !s.floating\n ? s.barBase.map((v) => (v === 0 ? (map.log ? -Infinity : f(0)) : f(v)))\n : column(s.barBase);\n s.barTop = column(s.barTop);\n s.stackTop = column(s.stackTop);\n s.stackBase =\n rawBase && rawBase === s.raw.y0\n ? s.cols.y0\n : rawBase\n ? column(rawBase)\n : s.type === \"area\"\n ? new Float64Array(s.cols.count).fill(zero)\n : null;\n};\n\n/** Value -> plotted units of a map (`-Infinity` for 0 on log axes) */\nconst mapper =\n (map: AxisMap) =>\n (v: number): number =>\n (map.log ? Math.log10(v) : v) * map.scale + map.offset;\n\n/** Value of the y axis -> plotted y (the logarithm on log axes) */\nexport const toPlotY = (model: { y: AxisModel }, value: number): number =>\n model.y.type === \"log\" ? Math.log10(value) : value;\n\n/** Plotted y -> value of the y axis */\nexport const fromPlotY = (model: { y: AxisModel }, value: number): number =>\n model.y.type === \"log\" ? 10 ** value : value;\n\n/** Replaces the bases of bars / areas on log axes (`-Infinity`) by the bottom of the axis */\nconst floorBases = (s: SeriesModel, floor: number) => {\n for (const a of [s.barBase, s.stackBase]) {\n if (!a) continue;\n for (let i = 0; i < a.length; i++) if (a[i] === -Infinity) a[i] = floor;\n }\n};\n\n/** Position (0-1) of a heatmap value on its color ramp */\nexport const heatPosition = (\n s: Pick<SeriesModel, \"valueRange\" | \"colorMidpoint\">,\n v: number,\n): number => {\n const [lo, hi] = s.valueRange;\n const mid = s.colorMidpoint;\n let t: number;\n if (mid !== null && mid > lo && mid < hi) {\n t =\n v < mid\n ? ((v - lo) / (mid - lo)) * 0.5\n : 0.5 + ((v - mid) / (hi - mid)) * 0.5;\n } else {\n t = (v - lo) / (hi - lo || 1);\n }\n return t < 0 ? 0 : t > 1 ? 1 : t;\n};\n\n/**\n * Built-in ramps of heatmaps, perceptual (OKLab) and theme-aware: light\n * themes go from a near-white tint to a deep hue, dark themes from a dark\n * tint of the surface to a bright saturated hue; diverging ramps meet in a\n * neutral middle\n */\nexport const heatmapStops = (\n scheme: ChartColorScheme,\n color: Rgba,\n theme: ChartTheme,\n negative: Rgba,\n): Rgba[] => {\n const dark = luminance(theme.background) < 0.4;\n if (scheme === \"diverging\") {\n const neutral = mixOklab(\n theme.surface,\n theme.textMuted,\n dark ? 0.12 : 0.08,\n );\n const end = (c: Rgba) =>\n dark ? withLightness(c, 0.7, 1.25) : withLightness(c, 0.5, 1.05);\n const side = (c: Rgba) => mixOklab(neutral, end(c), 0.5);\n return [end(negative), side(negative), neutral, side(color), end(color)];\n }\n return dark\n ? [\n mixOklab(theme.surface, color, 0.14),\n withLightness(color, 0.46, 0.95),\n withLightness(color, 0.64, 1.2),\n withLightness(color, 0.8, 1.15),\n ]\n : [\n mixOklab(theme.surface, color, 0.06),\n withLightness(color, 0.8, 0.6),\n withLightness(color, 0.58, 1),\n withLightness(color, 0.36, 0.9),\n ];\n};\n\nexport const buildModel = (\n options: ChartOptions,\n theme: ChartTheme,\n hidden: ReadonlySet<string>,\n cache: DataCache,\n resolver: ColorResolver | null = null,\n): ChartModel => {\n const resolve: ColorResolver =\n resolver ??\n theme.resolve ??\n ((value, fallback) => resolveStaticColor(value, {}, fallback));\n const input = options.series;\n // resolved at every build: a page language switch shows on the next update\n const locale = resolveLocale(options.locale);\n const tooltipOptions =\n typeof options.tooltip === \"object\" ? options.tooltip : undefined;\n const labels = chartLabels(locale, {\n ...definedEntries(tooltipOptions?.labels),\n ...definedEntries(options.labels),\n });\n const datas = input.map((s) => s.data);\n const xType = options.xAxis?.type ?? detectXType(datas);\n const categories =\n xType === \"category\"\n ? [...(options.xAxis?.categories ?? collectCategories(datas))]\n : [];\n const categoryMap = new Map(categories.map((c, i) => [c, i]));\n const resolveX = xResolver(xType, (name) => categoryMap.get(name) ?? NaN);\n\n // category y axis (heatmap rows): explicit, or detected from string y values\n const yOpts = options.yAxis;\n const heatmapData = input\n .filter((s) => s.type === \"heatmap\")\n .map((s) => s.data);\n const yCategories =\n yOpts?.type === \"category\" || (!yOpts?.type && heatmapData.length)\n ? [...(yOpts?.categories ?? collectYCategories(heatmapData))]\n : [];\n const yType: ChartAxisType =\n yOpts?.type === \"category\" || yCategories.length\n ? \"category\"\n : yOpts?.type === \"time\" || (!yOpts?.type && hasDateY(datas))\n ? \"time\"\n : yOpts?.type === \"log\"\n ? \"log\"\n : \"linear\";\n const yLog = yType === \"log\";\n const yCategoryMap = new Map(yCategories.map((c, i) => [c, i]));\n const resolveY: YResolver = (v) =>\n typeof v === \"number\"\n ? v\n : typeof v === \"string\"\n ? yType === \"category\"\n ? (yCategoryMap.get(v) ?? NaN)\n : yType === \"time\"\n ? Date.parse(v)\n : Number(v)\n : v instanceof Date\n ? v.getTime()\n : NaN;\n const resolverKey = `${xType}|${categories.join(\"\\u0001\")}|${yType}|${yCategories.join(\"\\u0001\")}`;\n const percent = options.stackMode === \"percent\";\n const horizontal = options.orientation === \"horizontal\";\n\n const usedKeys = new Set<string>();\n const series: SeriesModel[] = input.map((s: ChartSeries, index) => {\n let key = s.id ?? `#${index}`;\n while (usedKeys.has(key)) key += \"'\";\n usedKeys.add(key);\n let entry = cache.get(key);\n if (!entry || entry.data !== s.data || entry.resolverKey !== resolverKey) {\n entry = {\n data: s.data,\n resolverKey,\n cols: normalizeData(s.data, resolveX, resolveY),\n };\n cache.set(key, entry);\n }\n const type = s.type ?? \"line\";\n const paletteColor = theme.palette[index % theme.palette.length];\n const color = s.color ? resolve(s.color, paletteColor) : paletteColor;\n const cols = entry.cols;\n let pointColors: (Rgba | undefined)[] | null = null;\n if (\n (type === \"scatter\" || type === \"bar\" || type === \"boxplot\") &&\n cols.colors\n ) {\n const resolved = new Map<string, Rgba>();\n pointColors = cols.colors.map((c) => {\n if (c === undefined) return undefined;\n let rgba = resolved.get(c);\n if (!rgba) resolved.set(c, (rgba = resolve(c, color)));\n return rgba;\n });\n }\n let colorScale: Rgba[] = [];\n let valueRange: Range = [0, 1];\n let cellColors: Uint32Array | null = null;\n let colorMidpoint: number | null = null;\n let colorLut: Uint32Array | null = null;\n if (type === \"heatmap\") {\n const scale = s.colorScale;\n const scheme: ChartColorScheme =\n scale === \"diverging\" ? \"diverging\" : \"sequential\";\n colorScale =\n typeof scale === \"object\" && scale.length\n ? scale.map((c) => resolve(c, color))\n : heatmapStops(\n scheme,\n color,\n theme,\n resolve(DEFAULT_DOWN, [0.86, 0.15, 0.15, 1]),\n );\n valueRange = s.valueRange\n ? [s.valueRange[0], s.valueRange[1]]\n : [cols.valueMin, cols.valueMax];\n if (!Number.isFinite(valueRange[0])) valueRange = [0, 1];\n const [lo, hi] = valueRange;\n colorMidpoint =\n s.colorMidpoint ??\n (scheme === \"diverging\" && typeof scale !== \"object\"\n ? lo < 0 && hi > 0\n ? 0\n : (lo + hi) / 2\n : null);\n const lut = oklabRamp(colorScale);\n colorLut = lut;\n const values = cols.value ?? cols.y;\n const ramp = { valueRange, colorMidpoint };\n cellColors = new Uint32Array(cols.count);\n for (let i = 0; i < cols.count; i++) {\n const v = values[i];\n if (!Number.isFinite(v) || !Number.isFinite(cols.y[i])) continue;\n // 0 means \"no cell\": the ramp never packs to 0\n cellColors[i] = lut[Math.round(heatPosition(ramp, v) * 255)];\n }\n }\n const connector = s.connector\n ? typeof s.connector === \"object\"\n ? s.connector\n : {}\n : null;\n const id = s.id ?? String(index);\n return {\n index,\n key,\n id,\n name: s.name ?? `${labels.series} ${index + 1}`,\n type,\n color,\n colorCss: toCss(color),\n lineWidth:\n s.lineWidth ??\n (type === \"candlestick\" ? 1 : type === \"boxplot\" ? 1.5 : 2),\n pointSize: s.pointSize ?? (type === \"boxplot\" ? 6 : 8),\n opacity:\n s.opacity ??\n (type === \"area\"\n ? 0.28\n : type === \"scatter\"\n ? 0.78\n : type === \"boxplot\"\n ? 0.22\n : 1),\n hidden: !!s.hidden || hidden.has(id),\n showLabels: !!s.showLabels,\n curve: s.curve ?? \"linear\",\n cols,\n raw: cols,\n yAxis: s.yAxis === \"right\" && !horizontal ? \"right\" : \"left\",\n floating: type === \"bar\" && !!cols.y0,\n barOffset: 0,\n barHalfWidth: 0,\n barBase: null,\n barTop: null,\n stackBase: null,\n stackTop: null,\n pointColors,\n upColor:\n type === \"candlestick\"\n ? resolve(s.upColor ?? DEFAULT_UP, [0.09, 0.64, 0.29, 1])\n : color,\n downColor:\n type === \"candlestick\"\n ? resolve(s.downColor ?? DEFAULT_DOWN, [0.86, 0.15, 0.15, 1])\n : color,\n cellColors,\n cellHalf: { x: 0.5, y: 0.5 },\n colorScale,\n valueRange,\n colorMidpoint,\n colorLut,\n tooltip: s.tooltip !== false,\n outlierShape: s.outlierShape ?? \"hollow\",\n outlierSize: s.outlierSize ?? s.pointSize ?? 7,\n connector:\n connector && type === \"bar\"\n ? {\n color: connector.color\n ? resolve(connector.color, theme.textMuted)\n : theme.textMuted,\n dash: [...(connector.dash ?? [3, 3])],\n width: connector.width ?? 1,\n }\n : null,\n radius: s.radius ?? (type === \"heatmap\" ? 2 : type === \"boxplot\" ? 0 : 3),\n format: s.format,\n valueName: s.valueName,\n };\n });\n\n const visible = series.filter((s) => !s.hidden);\n const allScatter =\n series.length > 0 &&\n series.every((s) => s.type === \"scatter\" || s.type === \"heatmap\");\n\n // Bars and box plots: groups (one slot per stack) and stacking; floating\n // bars (with starts) are drawn from their starts\n const slotted = visible.filter(\n (s) => s.type === \"bar\" || s.type === \"boxplot\",\n );\n const bars = visible.filter((s) => s.type === \"bar\");\n const band = bandOf(slotted, \"x\", xType === \"category\");\n if (slotted.length) {\n const slots = new Map<string, number>();\n const stackId = (s: SeriesModel) =>\n input[s.index].stack ?? `\\u0000${s.key}`;\n for (const s of slotted) {\n if (!slots.has(stackId(s))) slots.set(stackId(s), slots.size);\n }\n let share = 0;\n for (const s of slotted) {\n const w = input[s.index].barWidth;\n if (w !== undefined && w > share) share = Math.min(1, w);\n }\n const group = band * (share || (slots.size > 1 ? 0.78 : 0.62));\n const slotWidth = group / slots.size;\n for (const s of slotted) {\n const slot = slots.get(stackId(s)) ?? 0;\n s.barOffset = -group / 2 + slotWidth * (slot + 0.5);\n s.barHalfWidth = (slotWidth / 2) * (slots.size > 1 ? 0.86 : 1);\n }\n const stackedBars = bars.filter((s) => !s.floating);\n const stacked = stackValues(\n stackedBars.map((s) => ({ s, stack: stackId(s) })),\n false,\n );\n const percentStacked = percent\n ? stackValues(\n stackedBars\n .filter((s) => input[s.index].stack !== undefined)\n .map((s) => ({ s, stack: stackId(s) })),\n true,\n )\n : [];\n let p = 0;\n stackedBars.forEach((s, k) => {\n const values =\n percent && input[s.index].stack !== undefined\n ? percentStacked[p++]\n : stacked[k];\n s.barBase = values.base;\n s.barTop = values.top;\n });\n for (const s of bars) {\n const { y, y0, count } = s.cols;\n if (!s.floating || !y0) continue;\n const base = new Float64Array(count);\n const top = new Float64Array(count);\n for (let i = 0; i < count; i++) {\n const valid = Number.isFinite(y[i]);\n base[i] = valid ? (Number.isFinite(y0[i]) ? y0[i] : 0) : NaN;\n top[i] = valid ? y[i] : NaN;\n }\n s.barBase = base;\n s.barTop = top;\n }\n }\n\n // Range areas: filled down to their lower edges\n for (const s of visible) {\n if (s.type === \"area\" && s.cols.y0 && input[s.index].stack === undefined)\n s.stackBase = s.cols.y0;\n }\n\n // Stacked lines / areas\n const stackedLines = visible.filter(\n (s) =>\n (s.type === \"line\" || s.type === \"area\") &&\n input[s.index].stack !== undefined,\n );\n if (stackedLines.length) {\n const values = stackValues(\n stackedLines.map((s) => ({ s, stack: input[s.index].stack ?? \"\" })),\n percent,\n );\n stackedLines.forEach((s, k) => {\n s.stackBase = values[k].base;\n s.stackTop = values[k].top;\n });\n }\n\n // Candlesticks: one band per x, bodies of 60%\n const candles = visible.filter((s) => s.type === \"candlestick\");\n const candleBand = bandOf(candles, \"x\", xType === \"category\");\n for (const s of candles) s.barHalfWidth = candleBand * 0.3;\n\n // Heatmaps: cells of the size of the smallest step\n const heatmaps = visible.filter((s) => s.type === \"heatmap\");\n if (heatmaps.length) {\n const cx = bandOf(heatmaps, \"x\", xType === \"category\") / 2;\n const cy = bandOf(heatmaps, \"y\", yType === \"category\") / 2;\n for (const s of heatmaps) s.cellHalf = { x: cx, y: cy };\n }\n\n // X range\n const xOpts = options.xAxis;\n let xRange: Range;\n if (xType === \"category\") {\n xRange = [-0.5, Math.max(1, categories.length) - 0.5];\n } else {\n const values: number[] = [];\n for (const s of visible) {\n values.push(s.cols.xMin, s.cols.xMax);\n const pad =\n s.type === \"bar\" || s.type === \"boxplot\"\n ? band / 2\n : s.type === \"candlestick\"\n ? candleBand / 2\n : s.type === \"heatmap\"\n ? s.cellHalf.x\n : 0;\n if (pad) values.push(s.cols.xMin - pad, s.cols.xMax + pad);\n }\n xRange = ensureSpan(\n ...extent(values),\n xType === \"time\" ? [Date.now() - 86400000, Date.now()] : [0, 1],\n );\n const pointsOnly = series.every((s) => s.type === \"scatter\");\n if (pointsOnly) {\n const pad = (xRange[1] - xRange[0]) * 0.04;\n xRange = [xRange[0] - pad, xRange[1] + pad];\n }\n const nice = xOpts?.nice ?? (pointsOnly && xType === \"linear\");\n if (nice && xType === \"linear\") {\n xRange = niceDomain(xRange[0], xRange[1], xOpts?.tickCount ?? 6);\n }\n }\n if (xOpts?.min !== undefined) xRange[0] = xOpts.min;\n if (xOpts?.max !== undefined) xRange[1] = xOpts.max;\n xRange = ensureSpan(xRange[0], xRange[1]);\n\n // Log axis: the left series are plotted as logarithms (stacks are summed\n // first); bars and areas from zero start at the bottom of the axis\n if (yLog) {\n for (const s of series) {\n if (s.yAxis === \"right\" || s.type === \"heatmap\") continue;\n logColumns(s, LOG_MAP);\n }\n }\n\n // Y range (left axis: the series of the right axis are mapped onto it)\n const valuesOf = (\n list: SeriesModel[],\n zero: boolean | undefined,\n log = false,\n ) => {\n const values: number[] = [];\n for (const s of list) {\n if (s.type === \"bar\" && s.barBase && s.barTop) {\n values.push(...extent(s.barBase), ...extent(s.barTop));\n } else if (s.stackBase && s.stackTop) {\n values.push(...extent(s.stackBase), ...extent(s.stackTop));\n } else if (s.type === \"heatmap\") {\n values.push(s.cols.yMin - s.cellHalf.y, s.cols.yMax + s.cellHalf.y);\n } else {\n values.push(s.cols.yMin, s.cols.yMax);\n }\n }\n const listBars = list.filter((s) => s.type === \"bar\");\n if (!log && (listBars.some((s) => !s.floating) || zero)) values.push(0);\n if (listBars.some((s) => s.showLabels)) {\n // room for the value labels above the tallest bar\n const [lo, hi] = extent(values);\n if (hi > 0) values.push(hi + (hi - Math.min(0, lo)) * 0.1);\n if (lo < 0) values.push(lo - (Math.max(0, hi) - lo) * 0.1);\n }\n return values;\n };\n const leftVisible = visible.filter((s) => s.yAxis === \"left\");\n const leftSeries = leftVisible.length ? leftVisible : visible;\n const leftBars = leftSeries.filter((s) => s.type === \"bar\");\n let yRange: Range;\n if (yType === \"category\") {\n yRange = [-0.5, Math.max(1, yCategories.length) - 0.5];\n } else {\n const yValues = valuesOf(leftSeries, yOpts?.zero, yLog);\n const filled =\n leftBars.length > 0 || leftSeries.some((s) => s.type === \"area\");\n yRange = ensureSpan(...extent(yValues));\n if (series.every((s) => s.type === \"scatter\")) {\n const pad = (yRange[1] - yRange[0]) * 0.06;\n yRange = [yRange[0] - pad, yRange[1] + pad];\n } else if (\n (candles.length || leftSeries.some((s) => s.type === \"boxplot\")) &&\n !leftBars.length\n ) {\n // room above / below the wicks and the outliers\n const pad = (yRange[1] - yRange[0]) * 0.04;\n yRange = [yRange[0] - pad, yRange[1] + pad];\n }\n if ((yOpts?.nice ?? !heatmaps.length) && yType === \"linear\") {\n yRange = niceDomain(yRange[0], yRange[1], yOpts?.tickCount ?? 5);\n }\n if (yLog && yOpts?.nice !== false) yRange = decades(yRange);\n if (percent && (bars.length || stackedLines.length)) {\n // 100% stacks: exactly 0-100 (or -100-100)\n yRange = [extent(yValues)[0] < 0 ? -100 : 0, 100];\n }\n if (filled && !yOpts?.zero && !yLog) {\n // bars start at zero: no padding below / above it\n if (yRange[0] < 0 && extent(yValues)[0] >= 0) yRange[0] = 0;\n }\n }\n const yBound = (v: number) => (yLog ? Math.log10(v) : v);\n if (yOpts?.min !== undefined) yRange[0] = yBound(yOpts.min);\n if (yOpts?.max !== undefined) yRange[1] = yBound(yOpts.max);\n yRange = ensureSpan(yRange[0], yRange[1]);\n if (yLog) {\n for (const s of series) if (s.yAxis === \"left\") floorBases(s, yRange[0]);\n }\n\n // Right axis: a range aligned on the left ticks; its series are mapped\n // onto the left axis\n const y2Opts = options.yAxis2;\n let y2: AxisModel | null = null;\n let y2Map: AxisMap | null = null;\n const rightSeries = series.filter((s) => s.yAxis === \"right\");\n if (rightSeries.length && yType !== \"category\") {\n const y2Log = y2Opts?.type === \"log\";\n const rightVisible = rightSeries.filter((s) => !s.hidden);\n // log: the extent of the logarithms\n const values = y2Log\n ? rightVisible.flatMap((s) => {\n const c = mapColumns(s.raw, LOG_MAP);\n return [c.yMin, c.yMax];\n })\n : valuesOf(rightVisible, y2Opts?.zero);\n const [lo, hi] = ensureSpan(...extent(values));\n let domain: Range =\n y2Opts?.nice === false\n ? [lo, hi]\n : y2Log\n ? decades([lo, hi])\n : alignedDomain(lo, hi, yRange, yOpts?.tickCount ?? 5);\n const y2Bound = (v: number) => (y2Log ? Math.log10(v) : v);\n if (y2Opts?.min !== undefined) domain[0] = y2Bound(y2Opts.min);\n if (y2Opts?.max !== undefined) domain[1] = y2Bound(y2Opts.max);\n domain = ensureSpan(domain[0], domain[1]);\n const scale = (yRange[1] - yRange[0]) / (domain[1] - domain[0]);\n const map: AxisMap = {\n scale,\n offset: yRange[0] - domain[0] * scale,\n log: y2Log,\n };\n y2Map = map;\n const zero = y2Log\n ? yRange[0]\n : mapper(map)(Math.min(Math.max(0, domain[0]), domain[1]));\n for (const s of rightSeries) {\n logColumns(s, map, zero);\n floorBases(s, yRange[0]);\n }\n y2 = axisModel(y2Opts, y2Log ? \"log\" : \"linear\", [], false, locale);\n }\n\n // range bars on a time axis (Gantt charts): rows are unrelated, the\n // tooltip shows the task under the pointer\n const timeline =\n yType === \"time\" &&\n series.some((s) => s.type === \"bar\") &&\n series.every((s) => (s.type === \"bar\" ? s.floating : s.type === \"scatter\"));\n\n const zoomOption =\n options.interaction === false\n ? false\n : options.interaction === true || options.interaction === undefined\n ? true\n : (options.interaction.zoom ?? true);\n const zoomAxes =\n zoomOption === false\n ? { x: false, y: false }\n : zoomOption === true\n ? { x: true, y: allScatter }\n : { x: zoomOption.includes(\"x\"), y: zoomOption.includes(\"y\") };\n\n const yFormat =\n yOpts?.format ??\n (percent && (bars.length || stackedLines.length)\n ? (v: number) => formatPercent(v, locale)\n : undefined);\n\n return {\n series,\n x: axisModel(xOpts, xType, categories, false, locale),\n y: {\n ...axisModel(yOpts, yType, yCategories, yType !== \"category\", locale),\n format: yFormat,\n },\n y2,\n y2Map,\n horizontal,\n locale,\n labels,\n formatValue: valueFormatter(locale),\n base: { x: xRange, y: yRange },\n allScatter,\n zoom: zoomAxes,\n tooltipMode:\n tooltipOptions?.mode ??\n (allScatter ? \"nearest\" : timeline ? \"item\" : \"axis\"),\n baseline: yLog ? yRange[0] : Math.min(Math.max(0, yRange[0]), yRange[1]),\n minSpan: {\n x: xType === \"category\" ? 1 : (xRange[1] - xRange[0]) * 1e-7,\n y: yType === \"category\" ? 1 : (yRange[1] - yRange[0]) * 1e-7,\n },\n percent,\n stacks: input.map((s) =>\n s.stack !== undefined &&\n (s.type === \"bar\" || s.type === \"line\" || s.type === \"area\" || !s.type)\n ? `${s.type === \"bar\" ? \"bar\" : \"line\"}:${s.stack}`\n : null,\n ),\n };\n};\n\n/** Y value drawn for a point: its stacked top for stacks, the close for candles */\nexport const plottedY = (s: SeriesModel, i: number): number =>\n s.barTop ? s.barTop[i] : s.stackTop ? s.stackTop[i] : s.cols.y[i];\n\nconst grids = new WeakMap<SeriesColumns, GridIndex>();\n\n/** Spatial index of a scatter series, built on first use and kept with its data */\nexport const gridOf = (s: SeriesModel): GridIndex => {\n let grid = grids.get(s.cols);\n if (!grid) {\n grid = new GridIndex(s.cols.x, s.cols.y, s.cols.count);\n grids.set(s.cols, grid);\n }\n return grid;\n};\n"],"mappings":";;;;;;;;AAqIA,IAAMA,IAAmB;CAAE,OAAO;CAAG,QAAQ;CAAG,KAAK;AAAK,GA0CpDC,KAAU,MAAmC;CACjD,IAAI,OAAOC,KAAS,YAAYA,KAAiB,EAAE,YAAYA,IAAO;EACpE,IAAMC,IAAMD,EAAoC;EAChD,OAAOC,KAAMA,EAAG,SAASA,EAAG,KAAK,KAAA;CACnC;CACA,IAAMC,IAAOF;CACb,KAAK,IAAIG,IAAI,GAAGA,IAAI,KAAK,IAAID,EAAK,QAAQ,CAAC,GAAG,KAAK;EACjD,IAAME,IAAOF,EAAKC;EAClB,IAAI,MAAM,QAAQC,CAAI,GAAG,OAAOA,EAAK;EACrC,IAAIA,KAAQ,OAAOA,KAAS,UAAU,OAAQA,EAAyB;CACzE;AAEF,GAGaC,KACX,MACkB;CAClB,KAAK,IAAML,KAAQM,GAAO;EACxB,IAAMC,IAAIR,EAAOC,CAAI;EACrB,IAAIO,aAAa,MAAM,OAAO;EAC9B,IAAI,OAAOA,KAAM,UAAU,OAAO;CACpC;CACA,OAAO;AACT,GAEMC,KACJ,GACA,GACA,GACA,GACA,OACe;CACf;CACA,SAAS,CAAC,CAACC,GAAS;CACpB;CACA,OAAOA,GAAS;CAChB,QAAQA,GAAS;CACjB,MAAMA,GAAS,QAAQC;CACvB,SAASD,GAAS,WAAW;CAC7B,WAAWA,GAAS;CACpB;CACA,UAAUA,GAAS,YAAY;AACjC,IAGME,KAAoC,MAAqC;CAC7E,IAAMC,IAAkB,CAAC;CACzB,IAAI,CAACC,GAAO,OAAOD;CACnB,KAAK,IAAME,KAAO,OAAO,KAAKD,CAAK,GACjC,AAAIA,EAAMC,OAAS,KAAA,MAAW,EAAIA,KAAOD,EAAMC;CAEjD,OAAOF;AACT,GAEMG,KAAU,MAAqC;CACnD,IAAIC,IAAM,UACNC,IAAM;CACV,KAAK,IAAId,IAAI,GAAGA,IAAIe,EAAO,QAAQ,KAAK;EACtC,IAAMC,IAAID,EAAOf;EACjB,AAAK,OAAO,SAASgB,CAAC,MAClBA,IAAIH,MAAK,IAAMG,IACfA,IAAIF,MAAK,IAAME;CACrB;CACA,OAAO,CAACH,GAAKC,CAAG;AAClB,GAGMG,KAAgB,GAA8B,MAAsB;CACxE,IAAIC,IAAO;CAQX,OAPAC,EAAQ,SAAS,GAAQ,MAAM;EAC7B,IAAMrB,IAAKsB,EAAOC,KAAKN,IAAS,aAAa,KAAKA,CAAM,CAAC,CAAC,KAAK;EAC/D,KAAK,IAAIf,IAAI,GAAGA,IAAIF,EAAG,QAAQ,KAAK;GAClC,IAAMwB,IAAIxB,EAAGE,KAAKF,EAAGE,IAAI;GACzB,AAAIsB,IAAI,KAAKA,IAAIJ,MAAM,IAAOI;EAChC;CACF,CAAC,GACMJ;AACT,GAEMK,KAAU,GAAqB,GAAiB,MAAsB;CAC1E,IAAIC,GAAU,OAAO;CACrB,IAAMN,IAAOD,EACXlB,EAAK,KAAK,MAAO0B,MAAS,MAAMC,EAAE,KAAK,IAAIA,EAAE,KAAK,CAAE,GACpD3B,EAAK,KAAK,MAAM0B,MAAS,OAAOC,EAAE,KAAK,MAAM,CAC/C;CACA,OAAO,OAAO,SAASR,CAAI,IAAIA,IAAO;AACxC,GAMMS,KACJ,GACA,MACgD;CAChD,IAAMC,oBAAS,IAAI,IAA2C;CAC9D,IAAIC,GACF,KAAK,IAAM,EAAE,MAAG,cAAW9B,GAAM;EAC/B,IAAI+B,IAAMF,EAAO,IAAIG,CAAK;EAC1B,AAAKD,KAAKF,EAAO,IAAIG,GAAQ,oBAAM,IAAI,IAAI,CAAE;EAC7C,IAAM,EAAE,MAAG,MAAG,aAAUL,EAAE;EAC1B,KAAK,IAAI1B,IAAI,GAAGA,IAAIgC,GAAO,KAAK;GAC9B,IAAMhB,IAAIiB,EAAEjC;GACZ,IAAI,CAAC,OAAO,SAASgB,CAAC,GAAG;GACzB,IAAMkB,IAAIJ,EAAI,IAAI1B,EAAEJ,EAAE,KAAK,CAAC,GAAG,CAAC;GAGhC,AAFIgB,KAAK,IAAG,EAAE,MAAMA,IACf,EAAE,MAAMA,GACbc,EAAI,IAAI1B,EAAEJ,IAAIkC,CAAC;EACjB;CACF;CAEF,IAAMC,oBAAU,IAAI,IAA2C,GACzDC,oBAAU,IAAI,IAAoB;CACxC,KAAK,IAAM,EAAE,cAAWrC,GACtB,EAAQ,IAAIgC,IAAQK,EAAQ,IAAIL,CAAK,KAAK,KAAK,CAAC;CAClD,OAAOhC,EAAK,KAAK,EAAE,MAAG,eAAY;EAChC,IAAM,EAAE,MAAG,MAAG,aAAU2B,EAAE;EAC1B,IAAI,CAACG,KAAWO,EAAQ,IAAIL,CAAK,MAAM,GAAG;GAExC,IAAMM,IAAO,IAAI,aAAaL,CAAK,GAC7BM,IAAM,IAAI,aAAaN,CAAK;GAClC,KAAK,IAAIhC,IAAI,GAAGA,IAAIgC,GAAO,KAAK;IAC9B,IAAMhB,IAAIiB,EAAEjC,IACNuC,IAAQ,OAAO,SAASvB,CAAC;IAE/B,AADA,EAAKhB,KAAKuC,IAAQ,IAAI,KACtB,EAAIvC,KAAKuC,IAAQvB,IAAI;GACvB;GACA,OAAO;IAAE;IAAM;GAAI;EACrB;EACA,IAAIc,IAAMK,EAAQ,IAAIJ,CAAK;EAC3B,AAAKD,KAAKK,EAAQ,IAAIJ,GAAQ,oBAAM,IAAI,IAAI,CAAE;EAC9C,IAAMS,IAAOZ,EAAO,IAAIG,CAAK,GACvBM,IAAO,IAAI,aAAaL,CAAK,GAC7BM,IAAM,IAAI,aAAaN,CAAK;EAClC,KAAK,IAAIhC,IAAI,GAAGA,IAAIgC,GAAO,KAAK;GAC9B,IAAIhB,IAAIiB,EAAEjC;GACV,IAAI,CAAC,OAAO,SAASgB,CAAC,GAAG;IAEvB,AADA,EAAKhB,KAAK,KACV,EAAIA,KAAK;IACT;GACF;GACA,IAAIwC,GAAM;IACR,IAAMN,IAAIM,EAAK,IAAIpC,EAAEJ,EAAE,GACjByC,IAAQP,IAAKlB,KAAK,IAAIkB,EAAE,KAAKA,EAAE,KAAM;IAC3C,IAAIO,IAAQ,IAAKzB,IAAIyB,IAAS,MAAM;GACtC;GACA,IAAMP,IAAIJ,EAAI,IAAI1B,EAAEJ,EAAE,KAAK,CAAC,GAAG,CAAC,GAC1B0C,IAAI1B,KAAK,IAAIkB,EAAE,KAAKA,EAAE;GAK5B,AAJA,EAAKlC,KAAK0C,GACV,EAAI1C,KAAK0C,IAAI1B,GACTA,KAAK,IAAG,EAAE,MAAMA,IACf,EAAE,MAAMA,GACbc,EAAI,IAAI1B,EAAEJ,IAAIkC,CAAC;EACjB;EACA,OAAO;GAAE;GAAM;EAAI;CACrB,CAAC;AACH,GAEMS,KAAa,iCACbC,KAAe,gCAGfC,MAAY,MAA+C;CAC/D,KAAK,IAAMhD,KAAQM,GAAO;EACxB,IAAI,OAAON,KAAS,aAAYA,KAAiB,EAAE,YAAYA,IAC7D;EACF,IAAME,IAAOF;EACb,KAAK,IAAIG,IAAI,GAAGA,IAAI,KAAK,IAAID,EAAK,QAAQ,CAAC,GAAG,KAAK;GACjD,IAAME,IAAOF,EAAKC;GAClB,IAAIC,KAAQ,OAAOA,KAAS,YAAY,CAAC,MAAM,QAAQA,CAAI,GAAG;IAC5D,IAAMqB,IAAIrB;IACV,IAAIqB,EAAE,aAAa,QAAQA,EAAE,cAAc,MAAM,OAAO;GAC1D;EACF;CACF;CACA,OAAO;AACT,GAEMwB,KAAW,MAAc,OAAO9B,EAAE,YAAY,EAAE,CAAC,GAGjD+B,KAAY,MAAiB;CACjC,IAAMC,IAAQ,MAAM,KAAK,MAAM,KAAK,MAAM9B,CAAI,IAAI,IAAI,GAChD+B,IAAI/B,IAAO8B;CACjB,QAAQC,IAAI,MAAM,IAAIA,IAAI,MAAM,IAAI,MAAMD;AAC5C,GAMaE,MACX,GACA,GACA,GACA,MACU;CACV,IAAM,CAACC,GAAIC,KAAMC,GACXC,IAAQC,EAASJ,GAAIC,GAAIpB,CAAK,GAC9BwB,IAAIF,IAAQ,IAAI,KAAK,OAAOF,IAAKD,KAAMG,CAAK,IAAI;CAEtD,IADA,CAACG,GAAIC,KAAMC,EAAWF,GAAIC,CAAE,GACxBF,IAAI,KAAK,KAAK,IAAIA,IAAIF,KAASF,IAAKD,EAAG,IAAIG,IAAQ,MACrD,OAAOM,EAAWH,GAAIC,GAAI1B,CAAK;CAEjC,IAAId,IAAOqC,EAASE,GAAIC,GAAIF,CAAC;CAC7B,KAAK,IAAInC,IAAI,GAAGA,IAAI,MAAMH,IAAO,GAAG,KAAK;EACvC,IAAM2C,IAAQ,KAAK,MAAMJ,IAAKvC,IAAO,IAAI,IAAIA;EAC7C,IAAI2C,IAAQL,IAAItC,KAAQwC,IAAKxC,IAAO,MAClC,OAAO,CAAC4B,EAAQe,CAAK,GAAGf,EAAQe,IAAQL,IAAItC,CAAI,CAAC;EAEnD,IAAO6B,EAAS7B,CAAI;CACtB;CACA,OAAO0C,EAAWH,GAAIC,GAAI1B,CAAK;AACjC,GAEM8B,oBAAS,IAAI,QAGjB,GAGIC,MAAc,GAAoB,MAAgC;CACtE,IAAMpD,IAAM,GAAGqD,EAAI,MAAM,GAAGA,EAAI,OAAO,GAAG,CAAC,CAACA,EAAI,OAC1CC,IAAMH,EAAO,IAAII,CAAG;CAC1B,IAAID,KAAOA,EAAI,QAAQtD,GAAK,OAAOsD,EAAI;CACvC,IAAMhB,IAAIkB,EAAOH,CAAG,GACdI,KAAU,MAA4BC,IAAIA,EAAE,IAAIpB,CAAC,IAAI,MACrDqB,IAAsB;EAC1B,GAAGJ;EACH,GAAGA,EAAI,EAAE,IAAIjB,CAAC;EACd,MAAMmB,EAAOF,EAAI,IAAI;EACrB,MAAME,EAAOF,EAAI,IAAI;EACrB,KAAKE,EAAOF,EAAI,GAAG;EACnB,IAAIE,EAAOF,EAAI,EAAE;EACjB,IAAIE,EAAOF,EAAI,EAAE;EACjB,IAAIE,EAAOF,EAAI,EAAE;EACjB,UAAUA,EAAI,WAAWA,EAAI,SAAS,KAAK,MAASnE,GAAM,IAAIkD,CAAC,CAAC,IAAI;CACtE;CACA,IAAIe,EAAI,KAAK;EAEX,IAAMO,IAAe,CAAC,UAAU,SAAS,GACnCC,KAAO,MAA4C;GACvD,IAAKH,GACL,KAAK,IAAIrE,IAAI,GAAGA,IAAIqE,EAAE,QAAQ,KAAK;IACjC,IAAMrD,IAAIqD,EAAErE;IACZ,AAAK,OAAO,SAASgB,CAAC,MAClBA,IAAIuD,EAAM,OAAI,EAAM,KAAKvD,IACzBA,IAAIuD,EAAM,OAAI,EAAM,KAAKvD;GAC/B;EACF;EACA,KAAK,IAAMyD,KAAK;GAACH,EAAK;GAAGA,EAAK;GAAIA,EAAK;GAAMA,EAAK;GAAKA,EAAK;GAAIA,EAAK;EAAE,GACrE,EAAIG,CAAC;EAGP,AAFAH,EAAK,UAAU,SAAS,MAASE,EAAIzE,CAAI,CAAC,GAC1C,EAAK,OAAOwE,EAAM,MAAMA,EAAM,KAAKA,EAAM,KAAK,KAC9C,EAAK,OAAOA,EAAM,MAAMA,EAAM,KAAKA,EAAM,KAAK;CAChD,OAAO;EACL,IAAMd,IAAKR,EAAEiB,EAAI,IAAI,GACfR,IAAKT,EAAEiB,EAAI,IAAI;EAErB,AADA,EAAK,OAAO,KAAK,IAAIT,GAAIC,CAAE,GAC3B,EAAK,OAAO,KAAK,IAAID,GAAIC,CAAE;CAC7B;CAEA,OADAI,EAAO,IAAII,GAAK;EAAE;EAAK;CAAK,CAAC,GACtBI;AACT,GAGMI,MAAW,MAAwB;CACvC,IAAMjB,IAAK,KAAK,MAAMc,EAAM,KAAK,IAAI,GAC/Bb,IAAK,KAAK,KAAKa,EAAM,KAAK,IAAI;CACpC,OAAO,CAACd,GAAIC,IAAKD,IAAKC,IAAKD,IAAK,CAAC;AACnC,GAMMkB,MAAc,GAAgB,GAAc,IAAO,cAAc;CACrE,IAAM1B,IAAIkB,EAAOH,CAAG,GACdI,KAAU,MAA4BC,IAAIA,EAAE,IAAIpB,CAAC,IAAI,MACrD2B,IAAUlD,EAAE;CAQlB,AAPA,EAAE,OAAOqC,GAAWrC,EAAE,KAAKsC,CAAG,GAC9B,EAAE,UACAtC,EAAE,WAAW,CAACA,EAAE,WACZA,EAAE,QAAQ,KAAK,MAAOV,MAAM,IAAKgD,EAAI,MAAM,YAAYf,EAAE,CAAC,IAAKA,EAAEjC,CAAC,CAAE,IACpEoD,EAAO1C,EAAE,OAAO,GACtB,EAAE,SAAS0C,EAAO1C,EAAE,MAAM,GAC1B,EAAE,WAAW0C,EAAO1C,EAAE,QAAQ,GAC9B,EAAE,YACAkD,KAAWA,MAAYlD,EAAE,IAAI,KACzBA,EAAE,KAAK,KACPkD,IACER,EAAOQ,CAAO,IACdlD,EAAE,SAAS,SACT,IAAI,aAAaA,EAAE,KAAK,KAAK,CAAC,CAAC,KAAKmD,CAAI,IACxC;AACZ,GAGMV,KACH,OACA,OACEH,EAAI,MAAM,KAAK,MAAMhD,CAAC,IAAIA,KAAKgD,EAAI,QAAQA,EAAI,QAGvCc,KAAW,GAAyB,MAC/CC,EAAM,EAAE,SAAS,QAAQ,KAAK,MAAMrE,CAAK,IAAIA,GAGlCsE,KAAa,GAAyB,MACjDD,EAAM,EAAE,SAAS,QAAQ,MAAMrE,IAAQA,GAGnCuE,MAAc,GAAgB,MAAkB;CACpD,KAAK,IAAMZ,KAAK,CAAC3C,EAAE,SAASA,EAAE,SAAS,GACrC,IAAK2C,GACL,KAAK,IAAIrE,IAAI,GAAGA,IAAIqE,EAAE,QAAQ,KAAK,AAAIA,EAAErE,OAAO,cAAW,EAAEA,KAAKkF;AAEtE,GAGaC,MACX,GACA,MACW;CACX,IAAM,CAAC1B,GAAIC,KAAMhC,EAAE,YACb0D,IAAM1D,EAAE,eACVQ;CASJ,OARA,AAMEA,IANEkD,MAAQ,QAAQA,IAAM3B,KAAM2B,IAAM1B,IAElC1C,IAAIoE,KACEpE,IAAIyC,MAAO2B,IAAM3B,KAAO,KAC1B,MAAQzC,IAAIoE,MAAQ1B,IAAK0B,KAAQ,MAElCpE,IAAIyC,MAAOC,IAAKD,KAAM,IAEtBvB,IAAI,IAAI,IAAIA,IAAI,IAAI,IAAIA;AACjC,GAQamD,MACX,GACA,GACA,GACA,MACW;CACX,IAAMC,IAAOC,EAAUC,EAAM,UAAU,IAAI;CAC3C,IAAIC,MAAW,aAAa;EAC1B,IAAMC,IAAUC,EACdH,EAAM,SACNA,EAAM,WACNF,IAAO,MAAO,GAChB,GACMM,KAAO,MACXN,IAAOO,EAAcpB,GAAG,IAAK,IAAI,IAAIoB,EAAcpB,GAAG,IAAK,IAAI,GAC3DqB,KAAQ,MAAYH,EAASD,GAASE,EAAInB,CAAC,GAAG,EAAG;EACvD,OAAO;GAACmB,EAAIG,CAAQ;GAAGD,EAAKC,CAAQ;GAAGL;GAASI,EAAKE,CAAK;GAAGJ,EAAII,CAAK;EAAC;CACzE;CACA,OAAOV,IACH;EACEK,EAASH,EAAM,SAASQ,GAAO,GAAI;EACnCH,EAAcG,GAAO,KAAM,GAAI;EAC/BH,EAAcG,GAAO,KAAM,GAAG;EAC9BH,EAAcG,GAAO,IAAK,IAAI;CAChC,IACA;EACEL,EAASH,EAAM,SAASQ,GAAO,GAAI;EACnCH,EAAcG,GAAO,IAAK,EAAG;EAC7BH,EAAcG,GAAO,KAAM,CAAC;EAC5BH,EAAcG,GAAO,KAAM,EAAG;CAChC;AACN,GAEaC,KACX,GACA,GACA,GACA,GACA,IAAiC,SAClB;CACf,IAAMC,IACJC,KACAX,EAAM,aACJ,GAAO,MAAaY,EAAmB1F,GAAO,CAAC,GAAG2F,CAAQ,IACxDC,IAAQhG,EAAQ,QAEhBiG,IAASC,EAAclG,EAAQ,MAAM,GACrCmG,IACJ,OAAOnG,EAAQ,WAAY,WAAWA,EAAQ,UAAU,KAAA,GACpDoG,IAASC,EAAYJ,GAAQ;EACjC,GAAG/F,EAAeiG,GAAgB,MAAM;EACxC,GAAGjG,EAAeF,EAAQ,MAAM;CAClC,CAAC,GACKH,IAAQmG,EAAM,KAAK,MAAM5E,EAAE,IAAI,GAC/BkF,IAAQtG,EAAQ,OAAO,QAAQJ,EAAYC,CAAK,GAChD0G,IACJD,MAAU,aACN,CAAC,GAAItG,EAAQ,OAAO,cAAcwG,EAAkB3G,CAAK,CAAE,IAC3D,CAAC,GACD4G,KAAc,IAAI,IAAIF,EAAW,KAAK,GAAG,MAAM,CAACpC,GAAGzE,CAAC,CAAC,CAAC,GACtDgH,IAAWC,EAAUL,IAAQ,MAASG,GAAY,IAAIG,CAAI,KAAK,GAAG,GAGlEC,IAAQ7G,EAAQ,OAChB8G,KAAcd,EACjB,QAAQ,MAAM5E,EAAE,SAAS,SAAS,CAAC,CACnC,KAAK,MAAMA,EAAE,IAAI,GACd2F,IACJF,GAAO,SAAS,cAAe,CAACA,GAAO,QAAQC,GAAY,SACvD,CAAC,GAAID,GAAO,cAAcG,EAAmBF,EAAW,CAAE,IAC1D,CAAC,GACDG,IACJJ,GAAO,SAAS,cAAcE,EAAY,SACtC,aACAF,GAAO,SAAS,UAAW,CAACA,GAAO,QAAQtE,GAAS1C,CAAK,IACvD,SACAgH,GAAO,SAAS,QACd,QACA,UACJK,IAAOD,MAAU,OACjBE,KAAe,IAAI,IAAIJ,EAAY,KAAK,GAAG,MAAM,CAAC5C,GAAGzE,CAAC,CAAC,CAAC,GACxD0H,MAAuB,MAC3B,OAAO1G,KAAM,WACTA,IACA,OAAOA,KAAM,WACXuG,MAAU,aACPE,GAAa,IAAIzG,CAAC,KAAK,MACxBuG,MAAU,SACR,KAAK,MAAMvG,CAAC,IACZ,OAAOA,CAAC,IACZA,aAAa,OACXA,EAAE,QAAQ,IACV,KACJ2G,KAAc,GAAGf,EAAM,GAAGC,EAAW,KAAK,GAAQ,EAAE,GAAGU,EAAM,GAAGF,EAAY,KAAK,GAAQ,KACzFxF,IAAUvB,EAAQ,cAAc,WAChCsH,KAAatH,EAAQ,gBAAgB,cAErCuH,qBAAW,IAAI,IAAY,GAC3BC,IAAwBxB,EAAM,KAAK,GAAgB,MAAU;EACjE,IAAI3F,IAAMe,EAAE,MAAM,IAAIqG;EACtB,OAAOF,GAAS,IAAIlH,CAAG,IAAG,KAAO;EACjC,GAAS,IAAIA,CAAG;EAChB,IAAIqH,IAAQC,EAAM,IAAItH,CAAG;EACzB,CAAI,CAACqH,KAASA,EAAM,SAAStG,EAAE,QAAQsG,EAAM,gBAAgBL,QAC3D,IAAQ;GACN,MAAMjG,EAAE;GACR;GACA,MAAMwG,EAAcxG,EAAE,MAAMsF,GAAUU,EAAQ;EAChD,GACAO,EAAM,IAAItH,GAAKqH,CAAK;EAEtB,IAAMG,IAAOzG,EAAE,QAAQ,QACjB0G,IAAe5C,EAAM,QAAQuC,IAAQvC,EAAM,QAAQ,SACnDQ,IAAQtE,EAAE,QAAQwE,EAAQxE,EAAE,OAAO0G,CAAY,IAAIA,GACnD9D,IAAO0D,EAAM,MACfK,IAA2C;EAC/C,KACGF,MAAS,aAAaA,MAAS,SAASA,MAAS,cAClD7D,EAAK,QACL;GACA,IAAMgE,oBAAW,IAAI,IAAkB;GACvC,IAAchE,EAAK,OAAO,KAAK,MAAM;IACnC,IAAIG,MAAM,KAAA,GAAW;IACrB,IAAI8D,IAAOD,EAAS,IAAI7D,CAAC;IAEzB,OADK8D,KAAMD,EAAS,IAAI7D,GAAI,IAAOyB,EAAQzB,GAAGuB,CAAK,CAAE,GAC9CuC;GACT,CAAC;EACH;EACA,IAAIC,IAAqB,CAAC,GACtBC,IAAoB,CAAC,GAAG,CAAC,GACzBC,IAAiC,MACjCC,IAA+B,MAC/BC,IAA+B;EACnC,IAAIT,MAAS,WAAW;GACtB,IAAMU,IAAQnH,EAAE,YACV+D,IACJoD,MAAU,cAAc,cAAc;GAaxC,AAZA,IACE,OAAOA,KAAU,YAAYA,EAAM,SAC/BA,EAAM,KAAK,MAAM3C,EAAQzB,GAAGuB,CAAK,CAAC,IAClCX,GACEI,GACAO,GACAR,GACAU,EAAQtD,IAAc;IAAC;IAAM;IAAM;IAAM;GAAC,CAAC,CAC7C,GACN,IAAalB,EAAE,aACX,CAACA,EAAE,WAAW,IAAIA,EAAE,WAAW,EAAE,IACjC,CAAC4C,EAAK,UAAUA,EAAK,QAAQ,GAC5B,OAAO,SAASmE,EAAW,EAAE,MAAG,IAAa,CAAC,GAAG,CAAC;GACvD,IAAM,CAAChF,GAAIC,KAAM+E;GACjB,IACE/G,EAAE,kBACD+D,MAAW,eAAe,OAAOoD,KAAU,WACxCpF,IAAK,KAAKC,IAAK,IACb,KACCD,IAAKC,KAAM,IACd;GACN,IAAMoF,IAAMC,EAAUP,CAAU;GAChC,IAAWM;GACX,IAAM/H,IAASuD,EAAK,SAASA,EAAK,GAC5B0E,IAAO;IAAE;IAAY;GAAc;GACzC,IAAa,IAAI,YAAY1E,EAAK,KAAK;GACvC,KAAK,IAAItE,IAAI,GAAGA,IAAIsE,EAAK,OAAO,KAAK;IACnC,IAAMtD,IAAID,EAAOf;IACjB,AAAK,OAAO,SAASgB,CAAC,KAAM,OAAO,SAASsD,EAAK,EAAEtE,EAAE,MAErD,EAAWA,KAAK8I,EAAI,KAAK,MAAM3D,GAAa6D,GAAMhI,CAAC,IAAI,GAAG;GAC5D;EACF;EACA,IAAMiI,IAAYvH,EAAE,YAChB,OAAOA,EAAE,aAAc,WACrBA,EAAE,YACF,CAAC,IACH,MACEwH,IAAKxH,EAAE,MAAM,OAAOqG,CAAK;EAC/B,OAAO;GACL;GACA;GACA;GACA,MAAMrG,EAAE,QAAQ,GAAGgF,EAAO,OAAO,GAAGqB,IAAQ;GAC5C;GACA;GACA,UAAUoB,EAAMnD,CAAK;GACrB,WACEtE,EAAE,cACDyG,MAAS,gBAAgB,IAAIA,MAAS,YAAY,MAAM;GAC3D,WAAWzG,EAAE,cAAcyG,MAAS,YAAY,IAAI;GACpD,SACEzG,EAAE,YACDyG,MAAS,SACN,MACAA,MAAS,YACP,MACAA,MAAS,YACP,MACA;GACV,QAAQ,CAAC,CAACzG,EAAE,UAAU0H,EAAO,IAAIF,CAAE;GACnC,YAAY,CAAC,CAACxH,EAAE;GAChB,OAAOA,EAAE,SAAS;GAClB;GACA,KAAK4C;GACL,OAAO5C,EAAE,UAAU,WAAW,CAACkG,KAAa,UAAU;GACtD,UAAUO,MAAS,SAAS,CAAC,CAAC7D,EAAK;GACnC,WAAW;GACX,cAAc;GACd,SAAS;GACT,QAAQ;GACR,WAAW;GACX,UAAU;GACV;GACA,SACE6D,MAAS,gBACLjC,EAAQxE,EAAE,WAAWiB,IAAY;IAAC;IAAM;IAAM;IAAM;GAAC,CAAC,IACtDqD;GACN,WACEmC,MAAS,gBACLjC,EAAQxE,EAAE,aAAakB,IAAc;IAAC;IAAM;IAAM;IAAM;GAAC,CAAC,IAC1DoD;GACN;GACA,UAAU;IAAE,GAAG;IAAK,GAAG;GAAI;GAC3B;GACA;GACA;GACA;GACA,SAAStE,EAAE,YAAY;GACvB,cAAcA,EAAE,gBAAgB;GAChC,aAAaA,EAAE,eAAeA,EAAE,aAAa;GAC7C,WACEuH,KAAad,MAAS,QAClB;IACE,OAAOc,EAAU,QACb/C,EAAQ+C,EAAU,OAAOzD,EAAM,SAAS,IACxCA,EAAM;IACV,MAAM,CAAC,GAAIyD,EAAU,QAAQ,CAAC,GAAG,CAAC,CAAE;IACpC,OAAOA,EAAU,SAAS;GAC5B,IACA;GACN,QAAQvH,EAAE,WAAWyG,MAAS,YAAY,IAAIA,MAAS,YAAY,IAAI;GACvE,QAAQzG,EAAE;GACV,WAAWA,EAAE;EACf;CACF,CAAC,GAEK2H,IAAUvB,EAAO,QAAQ,MAAM,CAACpG,EAAE,MAAM,GACxC4H,IACJxB,EAAO,SAAS,KAChBA,EAAO,OAAO,MAAMpG,EAAE,SAAS,aAAaA,EAAE,SAAS,SAAS,GAI5D6H,IAAUF,EAAQ,QACrB,MAAM3H,EAAE,SAAS,SAASA,EAAE,SAAS,SACxC,GACM8H,IAAOH,EAAQ,QAAQ,MAAM3H,EAAE,SAAS,KAAK,GAC7C+H,KAAOlI,EAAOgI,GAAS,KAAK3C,MAAU,UAAU;CACtD,IAAI2C,EAAQ,QAAQ;EAClB,IAAMG,oBAAQ,IAAI,IAAoB,GAChCC,KAAW,MACfrD,EAAM5E,EAAE,MAAM,CAAC,SAAS,SAASA,EAAE;EACrC,KAAK,IAAMA,KAAK6H,GACd,AAAKG,EAAM,IAAIC,EAAQjI,CAAC,CAAC,KAAGgI,EAAM,IAAIC,EAAQjI,CAAC,GAAGgI,EAAM,IAAI;EAE9D,IAAIE,IAAQ;EACZ,KAAK,IAAMlI,KAAK6H,GAAS;GACvB,IAAMM,IAAIvD,EAAM5E,EAAE,MAAM,CAAC;GACzB,AAAImI,MAAM,KAAA,KAAaA,IAAID,MAAO,IAAQ,KAAK,IAAI,GAAGC,CAAC;EACzD;EACA,IAAMC,IAAQL,MAAQG,MAAUF,EAAM,OAAO,IAAI,MAAO,OAClDK,IAAYD,IAAQJ,EAAM;EAChC,KAAK,IAAMhI,KAAK6H,GAAS;GACvB,IAAMS,IAAON,EAAM,IAAIC,EAAQjI,CAAC,CAAC,KAAK;GAEtC,AADA,EAAE,YAAY,CAACoI,IAAQ,IAAIC,KAAaC,IAAO,KAC/C,EAAE,eAAgBD,IAAY,KAAML,EAAM,OAAO,IAAI,MAAO;EAC9D;EACA,IAAMO,IAAcT,EAAK,QAAQ,MAAM,CAAC9H,EAAE,QAAQ,GAC5CwI,IAAUvI,EACdsI,EAAY,KAAK,OAAO;GAAE;GAAG,OAAON,EAAQjI,CAAC;EAAE,EAAE,GACjD,EACF,GACMyI,IAAiBtI,IACnBF,EACEsI,EACG,QAAQ,MAAM3D,EAAM5E,EAAE,MAAM,CAAC,UAAU,KAAA,CAAS,CAAC,CACjD,KAAK,OAAO;GAAE;GAAG,OAAOiI,EAAQjI,CAAC;EAAE,EAAE,GACxC,EACF,IACA,CAAC,GACD0I,IAAI;EACR,EAAY,SAAS,GAAG,MAAM;GAC5B,IAAMrJ,IACJc,KAAWyE,EAAM5E,EAAE,MAAM,CAAC,UAAU,KAAA,IAChCyI,EAAe,OACfD,EAAQ7I;GAEd,AADA,EAAE,UAAUN,EAAO,MACnB,EAAE,SAASA,EAAO;EACpB,CAAC;EACD,KAAK,IAAMW,KAAK8H,GAAM;GACpB,IAAM,EAAE,MAAG,OAAI,aAAU9H,EAAE;GAC3B,IAAI,CAACA,EAAE,YAAY,CAAC2I,GAAI;GACxB,IAAMhI,IAAO,IAAI,aAAaL,CAAK,GAC7BM,IAAM,IAAI,aAAaN,CAAK;GAClC,KAAK,IAAIhC,IAAI,GAAGA,IAAIgC,GAAO,KAAK;IAC9B,IAAMO,IAAQ,OAAO,SAASN,EAAEjC,EAAE;IAElC,AADA,EAAKA,KAAKuC,IAAS,OAAO,SAAS8H,EAAGrK,EAAE,IAAIqK,EAAGrK,KAAK,IAAK,KACzD,EAAIA,KAAKuC,IAAQN,EAAEjC,KAAK;GAC1B;GAEA,AADA,EAAE,UAAUqC,GACZ,EAAE,SAASC;EACb;CACF;CAGA,KAAK,IAAMZ,KAAK2H,GACd,AAAI3H,EAAE,SAAS,UAAUA,EAAE,KAAK,MAAM4E,EAAM5E,EAAE,MAAM,CAAC,UAAU,KAAA,MAC7D,EAAE,YAAYA,EAAE,KAAK;CAIzB,IAAM4I,IAAejB,EAAQ,QAC1B,OACE3H,EAAE,SAAS,UAAUA,EAAE,SAAS,WACjC4E,EAAM5E,EAAE,MAAM,CAAC,UAAU,KAAA,CAC7B;CACA,IAAI4I,EAAa,QAAQ;EACvB,IAAMvJ,IAASY,EACb2I,EAAa,KAAK,OAAO;GAAE;GAAG,OAAOhE,EAAM5E,EAAE,MAAM,CAAC,SAAS;EAAG,EAAE,GAClEG,CACF;EACA,EAAa,SAAS,GAAG,MAAM;GAE7B,AADA,EAAE,YAAYd,EAAOM,EAAE,CAAC,MACxB,EAAE,WAAWN,EAAOM,EAAE,CAAC;EACzB,CAAC;CACH;CAGA,IAAMkJ,IAAUlB,EAAQ,QAAQ,MAAM3H,EAAE,SAAS,aAAa,GACxD8I,KAAajJ,EAAOgJ,GAAS,KAAK3D,MAAU,UAAU;CAC5D,KAAK,IAAMlF,KAAK6I,GAAS,EAAE,eAAeC,KAAa;CAGvD,IAAMC,IAAWpB,EAAQ,QAAQ,MAAM3H,EAAE,SAAS,SAAS;CAC3D,IAAI+I,EAAS,QAAQ;EACnB,IAAMC,IAAKnJ,EAAOkJ,GAAU,KAAK7D,MAAU,UAAU,IAAI,GACnD+D,IAAKpJ,EAAOkJ,GAAU,KAAKlD,MAAU,UAAU,IAAI;EACzD,KAAK,IAAM7F,KAAK+I,GAAU,EAAE,WAAW;GAAE,GAAGC;GAAI,GAAGC;EAAG;CACxD;CAGA,IAAMC,IAAQtK,EAAQ,OAClBuK;CACJ,IAAIjE,MAAU,YACZ,IAAS,CAAC,KAAM,KAAK,IAAI,GAAGC,EAAW,MAAM,IAAI,EAAG;MAC/C;EACL,IAAM9F,IAAmB,CAAC;EAC1B,KAAK,IAAMW,KAAK2H,GAAS;GACvB,EAAO,KAAK3H,EAAE,KAAK,MAAMA,EAAE,KAAK,IAAI;GACpC,IAAMoJ,IACJpJ,EAAE,SAAS,SAASA,EAAE,SAAS,YAC3B+H,KAAO,IACP/H,EAAE,SAAS,gBACT8I,KAAa,IACb9I,EAAE,SAAS,YACTA,EAAE,SAAS,IACX;GACV,AAAIoJ,KAAK/J,EAAO,KAAKW,EAAE,KAAK,OAAOoJ,GAAKpJ,EAAE,KAAK,OAAOoJ,CAAG;EAC3D;EACA,IAASnH,EACP,GAAG/C,EAAOG,CAAM,GAChB6F,MAAU,SAAS,CAAC,KAAK,IAAI,IAAI,OAAU,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAChE;EACA,IAAMmE,IAAajD,EAAO,OAAO,MAAMpG,EAAE,SAAS,SAAS;EAC3D,IAAIqJ,GAAY;GACd,IAAMD,KAAOD,EAAO,KAAKA,EAAO,MAAM;GACtC,IAAS,CAACA,EAAO,KAAKC,GAAKD,EAAO,KAAKC,CAAG;EAC5C;EAEA,CADaF,GAAO,SAASG,KAAcnE,MAAU,cACzCA,MAAU,aACpB,IAAShD,EAAWiH,EAAO,IAAIA,EAAO,IAAID,GAAO,aAAa,CAAC;CAEnE;CAOA,IANIA,GAAO,QAAQ,KAAA,MAAW,EAAO,KAAKA,EAAM,MAC5CA,GAAO,QAAQ,KAAA,MAAW,EAAO,KAAKA,EAAM,MAChD,IAASjH,EAAWkH,EAAO,IAAIA,EAAO,EAAE,GAIpCrD,GACF,KAAK,IAAM9F,KAAKoG,GACd,AAAIpG,EAAE,UAAU,WAAWA,EAAE,SAAS,aACtCiD,GAAWjD,GAAG/B,CAAO;CAKzB,IAAMqL,MACJ,GACA,GACA,IAAM,OACH;EACH,IAAMjK,IAAmB,CAAC;EAC1B,KAAK,IAAMW,KAAK3B,GACd,AAAI2B,EAAE,SAAS,SAASA,EAAE,WAAWA,EAAE,SACrCX,EAAO,KAAK,GAAGH,EAAOc,EAAE,OAAO,GAAG,GAAGd,EAAOc,EAAE,MAAM,CAAC,IAC5CA,EAAE,aAAaA,EAAE,WAC1BX,EAAO,KAAK,GAAGH,EAAOc,EAAE,SAAS,GAAG,GAAGd,EAAOc,EAAE,QAAQ,CAAC,IAChDA,EAAE,SAAS,YACpBX,EAAO,KAAKW,EAAE,KAAK,OAAOA,EAAE,SAAS,GAAGA,EAAE,KAAK,OAAOA,EAAE,SAAS,CAAC,IAElEX,EAAO,KAAKW,EAAE,KAAK,MAAMA,EAAE,KAAK,IAAI;EAGxC,IAAMuJ,IAAWlL,EAAK,QAAQ,MAAM2B,EAAE,SAAS,KAAK;EAEpD,IADI,CAACwJ,MAAQD,EAAS,MAAM,MAAM,CAACvJ,EAAE,QAAQ,KAAKmD,MAAO9D,EAAO,KAAK,CAAC,GAClEkK,EAAS,MAAM,MAAMvJ,EAAE,UAAU,GAAG;GAEtC,IAAM,CAAC+B,GAAIC,KAAM9C,EAAOG,CAAM;GAE9B,AADI2C,IAAK,KAAG3C,EAAO,KAAK2C,KAAMA,IAAK,KAAK,IAAI,GAAGD,CAAE,KAAK,EAAG,GACrDA,IAAK,KAAG1C,EAAO,KAAK0C,KAAM,KAAK,IAAI,GAAGC,CAAE,IAAID,KAAM,EAAG;EAC3D;EACA,OAAO1C;CACT,GACMoK,KAAc9B,EAAQ,QAAQ,MAAM3H,EAAE,UAAU,MAAM,GACtD0J,IAAaD,GAAY,SAASA,KAAc9B,GAChDgC,KAAWD,EAAW,QAAQ,MAAM1J,EAAE,SAAS,KAAK,GACtD4J;CACJ,IAAI/D,MAAU,YACZ,IAAS,CAAC,KAAM,KAAK,IAAI,GAAGF,EAAY,MAAM,IAAI,EAAG;MAChD;EACL,IAAMkE,IAAUP,GAASI,GAAYjE,GAAO,MAAMK,CAAI,GAChDgE,IACJH,GAAS,SAAS,KAAKD,EAAW,MAAM,MAAM1J,EAAE,SAAS,MAAM;EAEjE,IADA,IAASiC,EAAW,GAAG/C,EAAO2K,CAAO,CAAC,GAClCzD,EAAO,OAAO,MAAMpG,EAAE,SAAS,SAAS,GAAG;GAC7C,IAAMoJ,KAAOQ,EAAO,KAAKA,EAAO,MAAM;GACtC,IAAS,CAACA,EAAO,KAAKR,GAAKQ,EAAO,KAAKR,CAAG;EAC5C,OAAO,KACJP,EAAQ,UAAUa,EAAW,MAAM,MAAM1J,EAAE,SAAS,SAAS,MAC9D,CAAC2J,GAAS,QACV;GAEA,IAAMP,KAAOQ,EAAO,KAAKA,EAAO,MAAM;GACtC,IAAS,CAACA,EAAO,KAAKR,GAAKQ,EAAO,KAAKR,CAAG;EAC5C;EASA,CARK3D,GAAO,QAAQ,CAACsD,EAAS,WAAWlD,MAAU,aACjD,IAAS3D,EAAW0H,EAAO,IAAIA,EAAO,IAAInE,GAAO,aAAa,CAAC,IAE7DK,KAAQL,GAAO,SAAS,OAAO,IAASzC,GAAQ4G,CAAM,IACtDzJ,MAAY2H,EAAK,UAAUc,EAAa,YAE1C,IAAS,CAAC1J,EAAO2K,CAAO,CAAC,CAAC,KAAK,IAAI,OAAO,GAAG,GAAG,IAE9CC,KAAU,CAACrE,GAAO,QAAQ,CAACK,KAEzB8D,EAAO,KAAK,KAAK1K,EAAO2K,CAAO,CAAC,CAAC,MAAM,MAAG,EAAO,KAAK;CAE9D;CACA,IAAME,MAAU,MAAejE,IAAO,KAAK,MAAMxG,CAAC,IAAIA;CAItD,IAHImG,GAAO,QAAQ,KAAA,MAAW,EAAO,KAAKsE,GAAOtE,EAAM,GAAG,IACtDA,GAAO,QAAQ,KAAA,MAAW,EAAO,KAAKsE,GAAOtE,EAAM,GAAG,IAC1D,IAASxD,EAAW2H,EAAO,IAAIA,EAAO,EAAE,GACpC9D,GACG,KAAA,IAAM9F,KAAKoG,GAAQ,AAAIpG,EAAE,UAAU,UAAQuD,GAAWvD,GAAG4J,EAAO,EAAE;CAKzE,IAAMI,IAASpL,EAAQ,QACnBqL,KAAuB,MACvBC,KAAwB,MACtBC,KAAc/D,EAAO,QAAQ,MAAMpG,EAAE,UAAU,OAAO;CAC5D,IAAImK,GAAY,UAAUtE,MAAU,YAAY;EAC9C,IAAMuE,IAAQJ,GAAQ,SAAS,OACzBK,IAAeF,GAAY,QAAQ,MAAM,CAACnK,EAAE,MAAM,GAElDX,IAAS+K,IACXC,EAAa,SAAS,MAAM;GAC1B,IAAMtH,IAAIV,GAAWrC,EAAE,KAAK/B,CAAO;GACnC,OAAO,CAAC8E,EAAE,MAAMA,EAAE,IAAI;EACxB,CAAC,IACDuG,GAASe,GAAcL,GAAQ,IAAI,GACjC,CAACjI,GAAIC,KAAMC,EAAW,GAAG/C,EAAOG,CAAM,CAAC,GACzCiL,IACFN,GAAQ,SAAS,KACb,CAACjI,GAAIC,CAAE,IACPoI,IACEpH,GAAQ,CAACjB,GAAIC,CAAE,CAAC,IAChBR,GAAcO,GAAIC,GAAI4H,GAAQnE,GAAO,aAAa,CAAC,GACrD8E,KAAW,MAAeH,IAAQ,KAAK,MAAM9K,CAAC,IAAIA;EAGxD,AAFI0K,GAAQ,QAAQ,KAAA,MAAW,EAAO,KAAKO,EAAQP,EAAO,GAAG,IACzDA,GAAQ,QAAQ,KAAA,MAAW,EAAO,KAAKO,EAAQP,EAAO,GAAG,IAC7D,IAAS/H,EAAWqI,EAAO,IAAIA,EAAO,EAAE;EACxC,IAAMnD,KAASyC,EAAO,KAAKA,EAAO,OAAOU,EAAO,KAAKA,EAAO,KACtDhI,IAAe;GACnB;GACA,QAAQsH,EAAO,KAAKU,EAAO,KAAKnD;GAChC,KAAKiD;EACP;EACA,KAAQ9H;EACR,IAAMa,IAAOiH,IACTR,EAAO,KACPnH,EAAOH,CAAG,CAAC,CAAC,KAAK,IAAI,KAAK,IAAI,GAAGgI,EAAO,EAAE,GAAGA,EAAO,EAAE,CAAC;EAC3D,KAAK,IAAMtK,KAAKmK,IAEd,AADAlH,GAAWjD,GAAGsC,GAAKa,CAAI,GACvBI,GAAWvD,GAAG4J,EAAO,EAAE;EAEzB,KAAKjL,EAAUqL,GAAQI,IAAQ,QAAQ,UAAU,CAAC,GAAG,IAAOvF,CAAM;CACpE;CAIA,IAAM2F,KACJ3E,MAAU,UACVO,EAAO,MAAM,MAAMpG,EAAE,SAAS,KAAK,KACnCoG,EAAO,OAAO,MAAOpG,EAAE,SAAS,QAAQA,EAAE,WAAWA,EAAE,SAAS,SAAU,GAEtEyK,IACJ7L,EAAQ,gBAAgB,KACpB,KACAA,EAAQ,gBAAgB,MAAQA,EAAQ,gBAAgB,KAAA,IACtD,KACCA,EAAQ,YAAY,QAAQ,IAC/B8L,KACJD,MAAe,KACX;EAAE,GAAG;EAAO,GAAG;CAAM,IACrBA,MAAe,KACb;EAAE,GAAG;EAAM,GAAG7C;CAAW,IACzB;EAAE,GAAG6C,EAAW,SAAS,GAAG;EAAG,GAAGA,EAAW,SAAS,GAAG;CAAE,GAE7DE,KACJlF,GAAO,WACNtF,MAAY2H,EAAK,UAAUc,EAAa,WACpC,MAAcgC,EAActL,GAAGuF,CAAM,IACtC,KAAA;CAEN,OAAO;EACL;EACA,GAAGlG,EAAUuK,GAAOhE,GAAOC,GAAY,IAAON,CAAM;EACpD,GAAG;GACD,GAAGlG,EAAU8G,GAAOI,GAAOF,GAAaE,MAAU,YAAYhB,CAAM;GACpE,QAAQ8F;EACV;EACA;EACA;EACA;EACA;EACA;EACA,aAAaE,EAAehG,CAAM;EAClC,MAAM;GAAE,GAAGsE;GAAQ,GAAGS;EAAO;EAC7B;EACA,MAAMc;EACN,aACE3F,GAAgB,SACf6C,IAAa,YAAY4C,KAAW,SAAS;EAChD,UAAU1E,IAAO8D,EAAO,KAAK,KAAK,IAAI,KAAK,IAAI,GAAGA,EAAO,EAAE,GAAGA,EAAO,EAAE;EACvE,SAAS;GACP,GAAG1E,MAAU,aAAa,KAAKiE,EAAO,KAAKA,EAAO,MAAM;GACxD,GAAGtD,MAAU,aAAa,KAAK+D,EAAO,KAAKA,EAAO,MAAM;EAC1D;EACA;EACA,QAAQhF,EAAM,KAAK,MACjB5E,EAAE,UAAU,KAAA,MACXA,EAAE,SAAS,SAASA,EAAE,SAAS,UAAUA,EAAE,SAAS,UAAU,CAACA,EAAE,QAC9D,GAAGA,EAAE,SAAS,QAAQ,QAAQ,OAAO,GAAGA,EAAE,UAC1C,IACN;CACF;AACF,GAGa8K,MAAY,GAAgB,MACvC9K,EAAE,SAASA,EAAE,OAAO1B,KAAK0B,EAAE,WAAWA,EAAE,SAAS1B,KAAK0B,EAAE,KAAK,EAAE1B,IAE3DyM,oBAAQ,IAAI,QAAkC,GAGvCC,KAAU,MAA8B;CACnD,IAAIC,IAAOF,EAAM,IAAI/K,EAAE,IAAI;CAK3B,OAJKiL,MACH,IAAO,IAAIC,EAAUlL,EAAE,KAAK,GAAGA,EAAE,KAAK,GAAGA,EAAE,KAAK,KAAK,GACrD+K,EAAM,IAAI/K,EAAE,MAAMiL,CAAI,IAEjBA;AACT"}
@@ -0,0 +1,2 @@
1
+ var e=(e=64)=>({prices:new Float64Array(e),sizes:new Float64Array(e),count:0}),t=(e,t)=>{let n=0,r=e.count,i=e.prices;for(;n<r;){let e=n+r>>>1;i[e]<t?n=e+1:r=e}return n},n=(e,t)=>{if(t<=e.prices.length)return;let n=Math.max(t,e.prices.length*2),r=new Float64Array(n),i=new Float64Array(n);r.set(e.prices.subarray(0,e.count)),i.set(e.sizes.subarray(0,e.count)),e.prices=r,e.sizes=i},r=(e,r,i)=>{if(!Number.isFinite(r))return!1;let a=t(e,r),o=a<e.count&&e.prices[a]===r,s=Number.isFinite(i)&&i>0;return o?s?e.sizes[a]!==i&&(e.sizes[a]=i,!0):(e.prices.copyWithin(a,a+1,e.count),e.sizes.copyWithin(a,a+1,e.count),e.count--,!0):s?(n(e,e.count+1),e.prices.copyWithin(a+1,a,e.count),e.sizes.copyWithin(a+1,a,e.count),e.prices[a]=r,e.sizes[a]=i,e.count++,!0):!1},i=(e,t)=>{if(!e)return;if(Array.isArray(e)){for(let n of e)t(n[0],n[1]);return}let{price:n,size:r}=e,i=Math.min(n.length,r.length);for(let e=0;e<i;e++)t(n[e],r[e])},a=e=>{if(!Number.isFinite(e)||e===0)return 0;let t=Math.abs(e);for(let e=0;e<=10;e++){let n=t*10**e;if(Math.abs(n-Math.round(n))<1e-7*Math.max(1,n))return e}return 10},o=(e,t)=>+e.toFixed(Math.min(12,a(t)+1)),s=(e,t,n)=>{if(!(t>0))return e;let r=e/t;return o((n===`bid`?Math.floor(r+1e-9):Math.ceil(r-1e-9))*t,t)},c=(n={})=>{let a=Math.max(1,n.maxLevels??5e3),o=e(),c=e(),l=0,u=NaN,d=e=>e===`bid`?o:c,f=()=>{if(o.count>a){let e=o.count-a;o.prices.copyWithin(0,e,o.count),o.sizes.copyWithin(0,e,o.count),o.count=a}c.count>a&&(c.count=a)},p=(e,t)=>e===`bid`?o.count-1-t:t,m={setSnapshot(e){o.count=0,c.count=0,i(e.bids,(e,t)=>r(o,e,t)),i(e.asks,(e,t)=>r(c,e,t)),f(),e.time!==void 0&&(u=e.time),l++},applyDelta(e){let t=!1;return i(e.bids,(e,n)=>{r(o,e,n)&&(t=!0)}),i(e.asks,(e,n)=>{r(c,e,n)&&(t=!0)}),e.time!==void 0&&(u=e.time),t&&(f(),l++),t},clear(){o.count=0,c.count=0,u=NaN,l++},count:e=>d(e).count,priceAt(e,t){let n=d(e);return t>=0&&t<n.count?n.prices[p(e,t)]:NaN},sizeAt(e,t){let n=d(e);return t>=0&&t<n.count?n.sizes[p(e,t)]:0},sizeOf(e,n){let r=d(e),i=t(r,n);return i<r.count&&r.prices[i]===n?r.sizes[i]:0},bestBid:()=>o.count?o.prices[o.count-1]:NaN,bestAsk:()=>c.count?c.prices[0]:NaN,mid:()=>(m.bestBid()+m.bestAsk())/2,spread:()=>m.bestAsk()-m.bestBid(),levels(e,{step:t=0,limit:n=1/0}={}){let r=d(e),i=r.count,a=Math.min(i,n),o=new Float64Array(a),c=new Float64Array(a),l=0;for(let n=0;n<i;n++){let u=e===`bid`?i-1-n:n,d=t>0?s(r.prices[u],t,e):r.prices[u];if(l>0&&o[l-1]===d){c[l-1]+=r.sizes[u];continue}if(l>=a)break;o[l]=d,c[l]=r.sizes[u],l++}return{price:o.subarray(0,l),size:c.subarray(0,l),count:l}},time:()=>u,version:()=>l};return m},l=(e,t)=>{if(!Array.isArray(t))return e.applyDelta(t);let n=!1;for(let r of t)e.applyDelta(r)&&(n=!0);return n},u=e=>{let t=0;for(let n of[`bid`,`ask`]){let r=Math.min(e.count(n),40);for(let i=0;i<r;i++)t=Math.max(t,a(e.priceAt(n,i)))}return Math.min(8,t)},d=e=>{let t=0;for(let n of[`bid`,`ask`]){let r=Math.min(e.count(n),40);for(let i=0;i<r;i++)t=Math.max(t,a(e.sizeAt(n,i)))}return Math.min(6,t)},f=e=>{let t=1/0;for(let n of[`bid`,`ask`]){let r=Math.min(e.count(n),60);for(let i=1;i<r;i++){let r=Math.abs(e.priceAt(n,i)-e.priceAt(n,i-1));r>0&&r<t&&(t=r)}}return Number.isFinite(t)?o(t,t):0};exports.applyDeltas=l,exports.createOrderBookStore=c,exports.decimalsOf=a,exports.forEachLevel=i,exports.groupPrice=s,exports.inferPriceDecimals=u,exports.inferSizeDecimals=d,exports.inferTickSize=f,exports.roundToStep=o;
2
+ //# sourceMappingURL=book.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"book.cjs","names":["createSide","capacity","lowerBound","lo","hi","side","prices","mid","price","grow","needed","sizes","setLevel","i","found","valid","size","forEachLevel","levels","level","fn","n","decimalsOf","value","abs","d","scaled","roundToStep","step","groupPrice","k","createOrderBookStore","maxLevels","options","bids","asks","version","time","sideOf","trim","drop","physical","index","store","snapshot","p","s","changed","delta","max","limit","count","applyDeltas","deltas","inferPriceDecimals","decimals","inferSizeDecimals","inferTickSize","tick","gap"],"sources":["../../../../../charts/src/engine/orderbook/book.ts"],"sourcesContent":["// Order book store: both sides kept as sorted typed arrays (ascending\n// prices), updated in place by snapshots and deltas. Inserting next to the\n// best price moves the rest of the side with one copyWithin, which stays\n// far below a microsecond per update for books of a few thousand levels.\n\nimport type {\n OrderBookDelta,\n OrderBookLevelColumns,\n OrderBookLevels,\n OrderBookSide,\n OrderBookStore,\n OrderBookStoreOptions,\n} from \"./types\";\n\ninterface Side {\n prices: Float64Array;\n sizes: Float64Array;\n count: number;\n}\n\nconst createSide = (capacity = 64): Side => ({\n prices: new Float64Array(capacity),\n sizes: new Float64Array(capacity),\n count: 0,\n});\n\n/** First index whose price is >= `price` */\nconst lowerBound = (side: Side, price: number): number => {\n let lo = 0;\n let hi = side.count;\n const prices = side.prices;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (prices[mid] < price) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n};\n\nconst grow = (side: Side, needed: number) => {\n if (needed <= side.prices.length) return;\n const capacity = Math.max(needed, side.prices.length * 2);\n const prices = new Float64Array(capacity);\n const sizes = new Float64Array(capacity);\n prices.set(side.prices.subarray(0, side.count));\n sizes.set(side.sizes.subarray(0, side.count));\n side.prices = prices;\n side.sizes = sizes;\n};\n\n/** Sets the size of a price (<= 0 removes it); `true` when it changed */\nconst setLevel = (side: Side, price: number, size: number): boolean => {\n if (!Number.isFinite(price)) return false;\n const i = lowerBound(side, price);\n const found = i < side.count && side.prices[i] === price;\n const valid = Number.isFinite(size) && size > 0;\n if (found) {\n if (!valid) {\n side.prices.copyWithin(i, i + 1, side.count);\n side.sizes.copyWithin(i, i + 1, side.count);\n side.count--;\n return true;\n }\n if (side.sizes[i] === size) return false;\n side.sizes[i] = size;\n return true;\n }\n if (!valid) return false;\n grow(side, side.count + 1);\n side.prices.copyWithin(i + 1, i, side.count);\n side.sizes.copyWithin(i + 1, i, side.count);\n side.prices[i] = price;\n side.sizes[i] = size;\n side.count++;\n return true;\n};\n\n/** Iterates `[price, size]` tuples or columns */\nexport const forEachLevel = (\n levels: OrderBookLevels | undefined,\n fn: (price: number, size: number) => void,\n) => {\n if (!levels) return;\n if (Array.isArray(levels)) {\n for (const level of levels as readonly (readonly [number, number])[]) {\n fn(level[0], level[1]);\n }\n return;\n }\n const { price, size } = levels as OrderBookLevelColumns;\n const n = Math.min(price.length, size.length);\n for (let i = 0; i < n; i++) fn(price[i]!, size[i]!);\n};\n\n/** Number of decimals of a step (0.25 -> 2, 5 -> 0) */\nexport const decimalsOf = (value: number): number => {\n if (!Number.isFinite(value) || value === 0) return 0;\n const abs = Math.abs(value);\n for (let d = 0; d <= 10; d++) {\n const scaled = abs * 10 ** d;\n if (Math.abs(scaled - Math.round(scaled)) < 1e-7 * Math.max(1, scaled))\n return d;\n }\n return 10;\n};\n\n/** Rounds a multiple of a step without float noise */\nexport const roundToStep = (value: number, step: number): number =>\n +value.toFixed(Math.min(12, decimalsOf(step) + 1));\n\n/**\n * Bucket of a price for a grouping step: bids round down, asks up (the\n * aggregated level never looks better than its orders)\n */\nexport const groupPrice = (\n price: number,\n step: number,\n side: OrderBookSide,\n): number => {\n if (!(step > 0)) return price;\n const k = price / step;\n const index = side === \"bid\" ? Math.floor(k + 1e-9) : Math.ceil(k - 1e-9);\n return roundToStep(index * step, step);\n};\n\n/**\n * Creates an order book store: snapshots and deltas in, sorted levels\n * (optionally grouped by a price step) out\n */\nexport const createOrderBookStore = (\n options: OrderBookStoreOptions = {},\n): OrderBookStore => {\n const maxLevels = Math.max(1, options.maxLevels ?? 5000);\n const bids = createSide();\n const asks = createSide();\n let version = 0;\n let time = NaN;\n\n const sideOf = (side: OrderBookSide) => (side === \"bid\" ? bids : asks);\n\n /** Drops the farthest levels above the cap */\n const trim = () => {\n if (bids.count > maxLevels) {\n const drop = bids.count - maxLevels;\n bids.prices.copyWithin(0, drop, bids.count);\n bids.sizes.copyWithin(0, drop, bids.count);\n bids.count = maxLevels;\n }\n if (asks.count > maxLevels) asks.count = maxLevels;\n };\n\n /** Physical index of the `index`-th level from the best one */\n const physical = (side: OrderBookSide, index: number) =>\n side === \"bid\" ? bids.count - 1 - index : index;\n\n const store: OrderBookStore = {\n setSnapshot(snapshot) {\n bids.count = 0;\n asks.count = 0;\n forEachLevel(snapshot.bids, (p, s) => setLevel(bids, p, s));\n forEachLevel(snapshot.asks, (p, s) => setLevel(asks, p, s));\n trim();\n if (snapshot.time !== undefined) time = snapshot.time;\n version++;\n },\n applyDelta(delta: OrderBookDelta) {\n let changed = false;\n forEachLevel(delta.bids, (p, s) => {\n if (setLevel(bids, p, s)) changed = true;\n });\n forEachLevel(delta.asks, (p, s) => {\n if (setLevel(asks, p, s)) changed = true;\n });\n if (delta.time !== undefined) time = delta.time;\n if (changed) {\n trim();\n version++;\n }\n return changed;\n },\n clear() {\n bids.count = 0;\n asks.count = 0;\n time = NaN;\n version++;\n },\n count: (side) => sideOf(side).count,\n priceAt(side, index) {\n const s = sideOf(side);\n return index >= 0 && index < s.count\n ? s.prices[physical(side, index)]!\n : NaN;\n },\n sizeAt(side, index) {\n const s = sideOf(side);\n return index >= 0 && index < s.count\n ? s.sizes[physical(side, index)]!\n : 0;\n },\n sizeOf(side, price) {\n const s = sideOf(side);\n const i = lowerBound(s, price);\n return i < s.count && s.prices[i] === price ? s.sizes[i]! : 0;\n },\n bestBid: () => (bids.count ? bids.prices[bids.count - 1]! : NaN),\n bestAsk: () => (asks.count ? asks.prices[0]! : NaN),\n mid: () => (store.bestBid() + store.bestAsk()) / 2,\n spread: () => store.bestAsk() - store.bestBid(),\n levels(side, { step = 0, limit = Infinity } = {}) {\n const s = sideOf(side);\n const n = s.count;\n const max = Math.min(n, limit);\n const price = new Float64Array(max);\n const size = new Float64Array(max);\n let count = 0;\n for (let k = 0; k < n; k++) {\n const i = side === \"bid\" ? n - 1 - k : k;\n const p =\n step > 0 ? groupPrice(s.prices[i]!, step, side) : s.prices[i]!;\n if (count > 0 && price[count - 1] === p) {\n size[count - 1] += s.sizes[i]!;\n continue;\n }\n if (count >= max) break;\n price[count] = p;\n size[count] = s.sizes[i]!;\n count++;\n }\n return {\n price: price.subarray(0, count),\n size: size.subarray(0, count),\n count,\n };\n },\n time: () => time,\n version: () => version,\n };\n return store;\n};\n\n/** Applies one delta or a list of deltas; `true` when something changed */\nexport const applyDeltas = (\n store: OrderBookStore,\n deltas: OrderBookDelta | readonly OrderBookDelta[],\n): boolean => {\n if (!Array.isArray(deltas)) return store.applyDelta(deltas as OrderBookDelta);\n let changed = false;\n for (const delta of deltas as readonly OrderBookDelta[]) {\n if (store.applyDelta(delta)) changed = true;\n }\n return changed;\n};\n\n/**\n * Decimals of the prices of a book (largest decimals among the best levels),\n * for the default price format\n */\nexport const inferPriceDecimals = (store: OrderBookStore): number => {\n let decimals = 0;\n for (const side of [\"bid\", \"ask\"] as const) {\n const n = Math.min(store.count(side), 40);\n for (let i = 0; i < n; i++) {\n decimals = Math.max(decimals, decimalsOf(store.priceAt(side, i)));\n }\n }\n return Math.min(8, decimals);\n};\n\n/** Decimals of the sizes of a book, for the default size format */\nexport const inferSizeDecimals = (store: OrderBookStore): number => {\n let decimals = 0;\n for (const side of [\"bid\", \"ask\"] as const) {\n const n = Math.min(store.count(side), 40);\n for (let i = 0; i < n; i++) {\n decimals = Math.max(decimals, decimalsOf(store.sizeAt(side, i)));\n }\n }\n return Math.min(6, decimals);\n};\n\n/** Smallest gap between neighbouring prices of the best levels (the tick size) */\nexport const inferTickSize = (store: OrderBookStore): number => {\n let tick = Infinity;\n for (const side of [\"bid\", \"ask\"] as const) {\n const n = Math.min(store.count(side), 60);\n for (let i = 1; i < n; i++) {\n const gap = Math.abs(store.priceAt(side, i) - store.priceAt(side, i - 1));\n if (gap > 0 && gap < tick) tick = gap;\n }\n }\n if (!Number.isFinite(tick)) return 0;\n return roundToStep(tick, tick);\n};\n"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { OrderBookDelta, OrderBookLevels, OrderBookSide, OrderBookStore, OrderBookStoreOptions } from './types.cjs';
2
+ /** Iterates `[price, size]` tuples or columns */
3
+ export declare const forEachLevel: (levels: OrderBookLevels | undefined, fn: (price: number, size: number) => void) => void;
4
+ /** Number of decimals of a step (0.25 -> 2, 5 -> 0) */
5
+ export declare const decimalsOf: (value: number) => number;
6
+ /** Rounds a multiple of a step without float noise */
7
+ export declare const roundToStep: (value: number, step: number) => number;
8
+ /**
9
+ * Bucket of a price for a grouping step: bids round down, asks up (the
10
+ * aggregated level never looks better than its orders)
11
+ */
12
+ export declare const groupPrice: (price: number, step: number, side: OrderBookSide) => number;
13
+ /**
14
+ * Creates an order book store: snapshots and deltas in, sorted levels
15
+ * (optionally grouped by a price step) out
16
+ */
17
+ export declare const createOrderBookStore: (options?: OrderBookStoreOptions) => OrderBookStore;
18
+ /** Applies one delta or a list of deltas; `true` when something changed */
19
+ export declare const applyDeltas: (store: OrderBookStore, deltas: OrderBookDelta | readonly OrderBookDelta[]) => boolean;
20
+ /**
21
+ * Decimals of the prices of a book (largest decimals among the best levels),
22
+ * for the default price format
23
+ */
24
+ export declare const inferPriceDecimals: (store: OrderBookStore) => number;
25
+ /** Decimals of the sizes of a book, for the default size format */
26
+ export declare const inferSizeDecimals: (store: OrderBookStore) => number;
27
+ /** Smallest gap between neighbouring prices of the best levels (the tick size) */
28
+ export declare const inferTickSize: (store: OrderBookStore) => number;
@@ -0,0 +1,28 @@
1
+ import { OrderBookDelta, OrderBookLevels, OrderBookSide, OrderBookStore, OrderBookStoreOptions } from './types.js';
2
+ /** Iterates `[price, size]` tuples or columns */
3
+ export declare const forEachLevel: (levels: OrderBookLevels | undefined, fn: (price: number, size: number) => void) => void;
4
+ /** Number of decimals of a step (0.25 -> 2, 5 -> 0) */
5
+ export declare const decimalsOf: (value: number) => number;
6
+ /** Rounds a multiple of a step without float noise */
7
+ export declare const roundToStep: (value: number, step: number) => number;
8
+ /**
9
+ * Bucket of a price for a grouping step: bids round down, asks up (the
10
+ * aggregated level never looks better than its orders)
11
+ */
12
+ export declare const groupPrice: (price: number, step: number, side: OrderBookSide) => number;
13
+ /**
14
+ * Creates an order book store: snapshots and deltas in, sorted levels
15
+ * (optionally grouped by a price step) out
16
+ */
17
+ export declare const createOrderBookStore: (options?: OrderBookStoreOptions) => OrderBookStore;
18
+ /** Applies one delta or a list of deltas; `true` when something changed */
19
+ export declare const applyDeltas: (store: OrderBookStore, deltas: OrderBookDelta | readonly OrderBookDelta[]) => boolean;
20
+ /**
21
+ * Decimals of the prices of a book (largest decimals among the best levels),
22
+ * for the default price format
23
+ */
24
+ export declare const inferPriceDecimals: (store: OrderBookStore) => number;
25
+ /** Decimals of the sizes of a book, for the default size format */
26
+ export declare const inferSizeDecimals: (store: OrderBookStore) => number;
27
+ /** Smallest gap between neighbouring prices of the best levels (the tick size) */
28
+ export declare const inferTickSize: (store: OrderBookStore) => number;
@@ -0,0 +1,134 @@
1
+ //#region src/engine/orderbook/book.ts
2
+ var e = (e = 64) => ({
3
+ prices: new Float64Array(e),
4
+ sizes: new Float64Array(e),
5
+ count: 0
6
+ }), t = (e, t) => {
7
+ let n = 0, r = e.count, i = e.prices;
8
+ for (; n < r;) {
9
+ let e = n + r >>> 1;
10
+ i[e] < t ? n = e + 1 : r = e;
11
+ }
12
+ return n;
13
+ }, n = (e, t) => {
14
+ if (t <= e.prices.length) return;
15
+ let n = Math.max(t, e.prices.length * 2), r = new Float64Array(n), i = new Float64Array(n);
16
+ r.set(e.prices.subarray(0, e.count)), i.set(e.sizes.subarray(0, e.count)), e.prices = r, e.sizes = i;
17
+ }, r = (e, r, i) => {
18
+ if (!Number.isFinite(r)) return !1;
19
+ let a = t(e, r), o = a < e.count && e.prices[a] === r, s = Number.isFinite(i) && i > 0;
20
+ return o ? s ? e.sizes[a] !== i && (e.sizes[a] = i, !0) : (e.prices.copyWithin(a, a + 1, e.count), e.sizes.copyWithin(a, a + 1, e.count), e.count--, !0) : s ? (n(e, e.count + 1), e.prices.copyWithin(a + 1, a, e.count), e.sizes.copyWithin(a + 1, a, e.count), e.prices[a] = r, e.sizes[a] = i, e.count++, !0) : !1;
21
+ }, i = (e, t) => {
22
+ if (!e) return;
23
+ if (Array.isArray(e)) {
24
+ for (let n of e) t(n[0], n[1]);
25
+ return;
26
+ }
27
+ let { price: n, size: r } = e, i = Math.min(n.length, r.length);
28
+ for (let e = 0; e < i; e++) t(n[e], r[e]);
29
+ }, a = (e) => {
30
+ if (!Number.isFinite(e) || e === 0) return 0;
31
+ let t = Math.abs(e);
32
+ for (let e = 0; e <= 10; e++) {
33
+ let n = t * 10 ** e;
34
+ if (Math.abs(n - Math.round(n)) < 1e-7 * Math.max(1, n)) return e;
35
+ }
36
+ return 10;
37
+ }, o = (e, t) => +e.toFixed(Math.min(12, a(t) + 1)), s = (e, t, n) => {
38
+ if (!(t > 0)) return e;
39
+ let r = e / t;
40
+ return o((n === "bid" ? Math.floor(r + 1e-9) : Math.ceil(r - 1e-9)) * t, t);
41
+ }, c = (n = {}) => {
42
+ let a = Math.max(1, n.maxLevels ?? 5e3), o = e(), c = e(), l = 0, u = NaN, d = (e) => e === "bid" ? o : c, f = () => {
43
+ if (o.count > a) {
44
+ let e = o.count - a;
45
+ o.prices.copyWithin(0, e, o.count), o.sizes.copyWithin(0, e, o.count), o.count = a;
46
+ }
47
+ c.count > a && (c.count = a);
48
+ }, p = (e, t) => e === "bid" ? o.count - 1 - t : t, m = {
49
+ setSnapshot(e) {
50
+ o.count = 0, c.count = 0, i(e.bids, (e, t) => r(o, e, t)), i(e.asks, (e, t) => r(c, e, t)), f(), e.time !== void 0 && (u = e.time), l++;
51
+ },
52
+ applyDelta(e) {
53
+ let t = !1;
54
+ return i(e.bids, (e, n) => {
55
+ r(o, e, n) && (t = !0);
56
+ }), i(e.asks, (e, n) => {
57
+ r(c, e, n) && (t = !0);
58
+ }), e.time !== void 0 && (u = e.time), t && (f(), l++), t;
59
+ },
60
+ clear() {
61
+ o.count = 0, c.count = 0, u = NaN, l++;
62
+ },
63
+ count: (e) => d(e).count,
64
+ priceAt(e, t) {
65
+ let n = d(e);
66
+ return t >= 0 && t < n.count ? n.prices[p(e, t)] : NaN;
67
+ },
68
+ sizeAt(e, t) {
69
+ let n = d(e);
70
+ return t >= 0 && t < n.count ? n.sizes[p(e, t)] : 0;
71
+ },
72
+ sizeOf(e, n) {
73
+ let r = d(e), i = t(r, n);
74
+ return i < r.count && r.prices[i] === n ? r.sizes[i] : 0;
75
+ },
76
+ bestBid: () => o.count ? o.prices[o.count - 1] : NaN,
77
+ bestAsk: () => c.count ? c.prices[0] : NaN,
78
+ mid: () => (m.bestBid() + m.bestAsk()) / 2,
79
+ spread: () => m.bestAsk() - m.bestBid(),
80
+ levels(e, { step: t = 0, limit: n = Infinity } = {}) {
81
+ let r = d(e), i = r.count, a = Math.min(i, n), o = new Float64Array(a), c = new Float64Array(a), l = 0;
82
+ for (let n = 0; n < i; n++) {
83
+ let u = e === "bid" ? i - 1 - n : n, d = t > 0 ? s(r.prices[u], t, e) : r.prices[u];
84
+ if (l > 0 && o[l - 1] === d) {
85
+ c[l - 1] += r.sizes[u];
86
+ continue;
87
+ }
88
+ if (l >= a) break;
89
+ o[l] = d, c[l] = r.sizes[u], l++;
90
+ }
91
+ return {
92
+ price: o.subarray(0, l),
93
+ size: c.subarray(0, l),
94
+ count: l
95
+ };
96
+ },
97
+ time: () => u,
98
+ version: () => l
99
+ };
100
+ return m;
101
+ }, l = (e, t) => {
102
+ if (!Array.isArray(t)) return e.applyDelta(t);
103
+ let n = !1;
104
+ for (let r of t) e.applyDelta(r) && (n = !0);
105
+ return n;
106
+ }, u = (e) => {
107
+ let t = 0;
108
+ for (let n of ["bid", "ask"]) {
109
+ let r = Math.min(e.count(n), 40);
110
+ for (let i = 0; i < r; i++) t = Math.max(t, a(e.priceAt(n, i)));
111
+ }
112
+ return Math.min(8, t);
113
+ }, d = (e) => {
114
+ let t = 0;
115
+ for (let n of ["bid", "ask"]) {
116
+ let r = Math.min(e.count(n), 40);
117
+ for (let i = 0; i < r; i++) t = Math.max(t, a(e.sizeAt(n, i)));
118
+ }
119
+ return Math.min(6, t);
120
+ }, f = (e) => {
121
+ let t = Infinity;
122
+ for (let n of ["bid", "ask"]) {
123
+ let r = Math.min(e.count(n), 60);
124
+ for (let i = 1; i < r; i++) {
125
+ let r = Math.abs(e.priceAt(n, i) - e.priceAt(n, i - 1));
126
+ r > 0 && r < t && (t = r);
127
+ }
128
+ }
129
+ return Number.isFinite(t) ? o(t, t) : 0;
130
+ };
131
+ //#endregion
132
+ export { l as applyDeltas, c as createOrderBookStore, a as decimalsOf, i as forEachLevel, s as groupPrice, u as inferPriceDecimals, d as inferSizeDecimals, f as inferTickSize, o as roundToStep };
133
+
134
+ //# sourceMappingURL=book.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"book.js","names":["createSide","capacity","lowerBound","lo","hi","side","prices","mid","price","grow","needed","sizes","setLevel","i","found","valid","size","forEachLevel","levels","level","n","decimalsOf","value","abs","d","scaled","roundToStep","step","groupPrice","k","createOrderBookStore","maxLevels","options","bids","asks","version","time","sideOf","trim","drop","physical","index","store","snapshot","p","s","changed","delta","max","limit","count","applyDeltas","deltas","inferPriceDecimals","decimals","inferSizeDecimals","inferTickSize","tick","gap"],"sources":["../../../../../charts/src/engine/orderbook/book.ts"],"sourcesContent":["// Order book store: both sides kept as sorted typed arrays (ascending\n// prices), updated in place by snapshots and deltas. Inserting next to the\n// best price moves the rest of the side with one copyWithin, which stays\n// far below a microsecond per update for books of a few thousand levels.\n\nimport type {\n OrderBookDelta,\n OrderBookLevelColumns,\n OrderBookLevels,\n OrderBookSide,\n OrderBookStore,\n OrderBookStoreOptions,\n} from \"./types\";\n\ninterface Side {\n prices: Float64Array;\n sizes: Float64Array;\n count: number;\n}\n\nconst createSide = (capacity = 64): Side => ({\n prices: new Float64Array(capacity),\n sizes: new Float64Array(capacity),\n count: 0,\n});\n\n/** First index whose price is >= `price` */\nconst lowerBound = (side: Side, price: number): number => {\n let lo = 0;\n let hi = side.count;\n const prices = side.prices;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (prices[mid] < price) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n};\n\nconst grow = (side: Side, needed: number) => {\n if (needed <= side.prices.length) return;\n const capacity = Math.max(needed, side.prices.length * 2);\n const prices = new Float64Array(capacity);\n const sizes = new Float64Array(capacity);\n prices.set(side.prices.subarray(0, side.count));\n sizes.set(side.sizes.subarray(0, side.count));\n side.prices = prices;\n side.sizes = sizes;\n};\n\n/** Sets the size of a price (<= 0 removes it); `true` when it changed */\nconst setLevel = (side: Side, price: number, size: number): boolean => {\n if (!Number.isFinite(price)) return false;\n const i = lowerBound(side, price);\n const found = i < side.count && side.prices[i] === price;\n const valid = Number.isFinite(size) && size > 0;\n if (found) {\n if (!valid) {\n side.prices.copyWithin(i, i + 1, side.count);\n side.sizes.copyWithin(i, i + 1, side.count);\n side.count--;\n return true;\n }\n if (side.sizes[i] === size) return false;\n side.sizes[i] = size;\n return true;\n }\n if (!valid) return false;\n grow(side, side.count + 1);\n side.prices.copyWithin(i + 1, i, side.count);\n side.sizes.copyWithin(i + 1, i, side.count);\n side.prices[i] = price;\n side.sizes[i] = size;\n side.count++;\n return true;\n};\n\n/** Iterates `[price, size]` tuples or columns */\nexport const forEachLevel = (\n levels: OrderBookLevels | undefined,\n fn: (price: number, size: number) => void,\n) => {\n if (!levels) return;\n if (Array.isArray(levels)) {\n for (const level of levels as readonly (readonly [number, number])[]) {\n fn(level[0], level[1]);\n }\n return;\n }\n const { price, size } = levels as OrderBookLevelColumns;\n const n = Math.min(price.length, size.length);\n for (let i = 0; i < n; i++) fn(price[i]!, size[i]!);\n};\n\n/** Number of decimals of a step (0.25 -> 2, 5 -> 0) */\nexport const decimalsOf = (value: number): number => {\n if (!Number.isFinite(value) || value === 0) return 0;\n const abs = Math.abs(value);\n for (let d = 0; d <= 10; d++) {\n const scaled = abs * 10 ** d;\n if (Math.abs(scaled - Math.round(scaled)) < 1e-7 * Math.max(1, scaled))\n return d;\n }\n return 10;\n};\n\n/** Rounds a multiple of a step without float noise */\nexport const roundToStep = (value: number, step: number): number =>\n +value.toFixed(Math.min(12, decimalsOf(step) + 1));\n\n/**\n * Bucket of a price for a grouping step: bids round down, asks up (the\n * aggregated level never looks better than its orders)\n */\nexport const groupPrice = (\n price: number,\n step: number,\n side: OrderBookSide,\n): number => {\n if (!(step > 0)) return price;\n const k = price / step;\n const index = side === \"bid\" ? Math.floor(k + 1e-9) : Math.ceil(k - 1e-9);\n return roundToStep(index * step, step);\n};\n\n/**\n * Creates an order book store: snapshots and deltas in, sorted levels\n * (optionally grouped by a price step) out\n */\nexport const createOrderBookStore = (\n options: OrderBookStoreOptions = {},\n): OrderBookStore => {\n const maxLevels = Math.max(1, options.maxLevels ?? 5000);\n const bids = createSide();\n const asks = createSide();\n let version = 0;\n let time = NaN;\n\n const sideOf = (side: OrderBookSide) => (side === \"bid\" ? bids : asks);\n\n /** Drops the farthest levels above the cap */\n const trim = () => {\n if (bids.count > maxLevels) {\n const drop = bids.count - maxLevels;\n bids.prices.copyWithin(0, drop, bids.count);\n bids.sizes.copyWithin(0, drop, bids.count);\n bids.count = maxLevels;\n }\n if (asks.count > maxLevels) asks.count = maxLevels;\n };\n\n /** Physical index of the `index`-th level from the best one */\n const physical = (side: OrderBookSide, index: number) =>\n side === \"bid\" ? bids.count - 1 - index : index;\n\n const store: OrderBookStore = {\n setSnapshot(snapshot) {\n bids.count = 0;\n asks.count = 0;\n forEachLevel(snapshot.bids, (p, s) => setLevel(bids, p, s));\n forEachLevel(snapshot.asks, (p, s) => setLevel(asks, p, s));\n trim();\n if (snapshot.time !== undefined) time = snapshot.time;\n version++;\n },\n applyDelta(delta: OrderBookDelta) {\n let changed = false;\n forEachLevel(delta.bids, (p, s) => {\n if (setLevel(bids, p, s)) changed = true;\n });\n forEachLevel(delta.asks, (p, s) => {\n if (setLevel(asks, p, s)) changed = true;\n });\n if (delta.time !== undefined) time = delta.time;\n if (changed) {\n trim();\n version++;\n }\n return changed;\n },\n clear() {\n bids.count = 0;\n asks.count = 0;\n time = NaN;\n version++;\n },\n count: (side) => sideOf(side).count,\n priceAt(side, index) {\n const s = sideOf(side);\n return index >= 0 && index < s.count\n ? s.prices[physical(side, index)]!\n : NaN;\n },\n sizeAt(side, index) {\n const s = sideOf(side);\n return index >= 0 && index < s.count\n ? s.sizes[physical(side, index)]!\n : 0;\n },\n sizeOf(side, price) {\n const s = sideOf(side);\n const i = lowerBound(s, price);\n return i < s.count && s.prices[i] === price ? s.sizes[i]! : 0;\n },\n bestBid: () => (bids.count ? bids.prices[bids.count - 1]! : NaN),\n bestAsk: () => (asks.count ? asks.prices[0]! : NaN),\n mid: () => (store.bestBid() + store.bestAsk()) / 2,\n spread: () => store.bestAsk() - store.bestBid(),\n levels(side, { step = 0, limit = Infinity } = {}) {\n const s = sideOf(side);\n const n = s.count;\n const max = Math.min(n, limit);\n const price = new Float64Array(max);\n const size = new Float64Array(max);\n let count = 0;\n for (let k = 0; k < n; k++) {\n const i = side === \"bid\" ? n - 1 - k : k;\n const p =\n step > 0 ? groupPrice(s.prices[i]!, step, side) : s.prices[i]!;\n if (count > 0 && price[count - 1] === p) {\n size[count - 1] += s.sizes[i]!;\n continue;\n }\n if (count >= max) break;\n price[count] = p;\n size[count] = s.sizes[i]!;\n count++;\n }\n return {\n price: price.subarray(0, count),\n size: size.subarray(0, count),\n count,\n };\n },\n time: () => time,\n version: () => version,\n };\n return store;\n};\n\n/** Applies one delta or a list of deltas; `true` when something changed */\nexport const applyDeltas = (\n store: OrderBookStore,\n deltas: OrderBookDelta | readonly OrderBookDelta[],\n): boolean => {\n if (!Array.isArray(deltas)) return store.applyDelta(deltas as OrderBookDelta);\n let changed = false;\n for (const delta of deltas as readonly OrderBookDelta[]) {\n if (store.applyDelta(delta)) changed = true;\n }\n return changed;\n};\n\n/**\n * Decimals of the prices of a book (largest decimals among the best levels),\n * for the default price format\n */\nexport const inferPriceDecimals = (store: OrderBookStore): number => {\n let decimals = 0;\n for (const side of [\"bid\", \"ask\"] as const) {\n const n = Math.min(store.count(side), 40);\n for (let i = 0; i < n; i++) {\n decimals = Math.max(decimals, decimalsOf(store.priceAt(side, i)));\n }\n }\n return Math.min(8, decimals);\n};\n\n/** Decimals of the sizes of a book, for the default size format */\nexport const inferSizeDecimals = (store: OrderBookStore): number => {\n let decimals = 0;\n for (const side of [\"bid\", \"ask\"] as const) {\n const n = Math.min(store.count(side), 40);\n for (let i = 0; i < n; i++) {\n decimals = Math.max(decimals, decimalsOf(store.sizeAt(side, i)));\n }\n }\n return Math.min(6, decimals);\n};\n\n/** Smallest gap between neighbouring prices of the best levels (the tick size) */\nexport const inferTickSize = (store: OrderBookStore): number => {\n let tick = Infinity;\n for (const side of [\"bid\", \"ask\"] as const) {\n const n = Math.min(store.count(side), 60);\n for (let i = 1; i < n; i++) {\n const gap = Math.abs(store.priceAt(side, i) - store.priceAt(side, i - 1));\n if (gap > 0 && gap < tick) tick = gap;\n }\n }\n if (!Number.isFinite(tick)) return 0;\n return roundToStep(tick, tick);\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("../color.cjs"),t=require("../locale.cjs"),n=require("../scale.cjs"),r=require("./book.cjs"),i=require("./format.cjs"),a=require("./host.cjs");var o={en:{bids:`Bids`,asks:`Asks`,price:`Price`,amount:`Amount`,total:`Total`,average:`Avg. price`,distance:`From mid`,mid:`Mid`,spread:`Spread`,basisPoints:`bp`,name:`Depth chart`},zh:{bids:`买盘`,asks:`卖盘`,price:`价格`,amount:`累计数量`,total:`累计金额`,average:`均价`,distance:`距中间价`,mid:`中间价`,spread:`价差`,basisPoints:`基点`,name:`深度图`},ja:{bids:`買い`,asks:`売り`,price:`価格`,amount:`累計数量`,total:`累計金額`,average:`平均価格`,distance:`仲値から`,mid:`仲値`,spread:`スプレッド`,basisPoints:`bp`,name:`デプスチャート`},fr:{bids:`Achats`,asks:`Ventes`,price:`Prix`,amount:`Quantité`,total:`Montant`,average:`Prix moyen`,distance:`Écart au médian`,mid:`Médian`,spread:`Écart`,basisPoints:`pb`,name:`Graphique de profondeur`}},s=(s,c={})=>{let l=c,u=r.createOrderBookStore(),d=a.createEmitter(),f=i.createFormatters(l,2,4),p=t.localeLabels(o,l.locale,l.labels),m=!1,h={up:[0,0,0,1],down:[0,0,0,1]},g=null,_=NaN,v=NaN,y=NaN,b=new Float64Array,x=new Float64Array,S=new Float64Array,C=new Float64Array,w=0,T={x:0,y:0,w:0,h:0},E=null,D=``,O=null,k=new Map,A=null,j=a.createHost(s,{className:`minerva-depth-chart`,draw:G,onTheme:()=>F()}),{root:M,doc:N}=j,P=j.createTooltip();M.tabIndex=0,M.setAttribute(`role`,`figure`),M.style.touchAction=`pan-y`;let ee=()=>p;function F(){h=i.sideColors(j.theme,l)}function I(){f=i.createFormatters(l,r.inferPriceDecimals(u),r.inferSizeDecimals(u))}let L=()=>{p=t.localeLabels(o,l.locale,l.labels),M.setAttribute(`aria-label`,l.ariaLabel??p.name),F(),I(),j.invalidate()},R=()=>{let[e,t]=l.rangeLimits??[5e-4,.5];return[Math.min(e,t),Math.max(e,t)]},z=e=>{let t=u.count(`bid`),n=u.count(`ask`);if(!t&&!n)return .01;let r=t?(e-u.priceAt(`bid`,t-1))/e:1/0,i=n?(u.priceAt(`ask`,n-1)-e)/e:1/0,a=Math.min(r,i);return Number.isFinite(a)&&a>0?a:.01},B=e=>{let[t,n]=R();return i.clamp(g??l.range??z(e),t,n)},V=()=>{let e=u.mid();if(Number.isFinite(e))return e;let t=u.bestBid();return Number.isFinite(t)?t:u.bestAsk()},H=(e,t,n)=>{let r=0,i=0,a=u.count(e);for(let n=0;n<a;n++){let a=u.priceAt(e,n);if(e===`bid`?a<t:a>t)break;let o=u.sizeAt(e,n);r+=o,i+=o*a}return{side:e,price:t,amount:r,total:i,average:r>0?i/r:NaN,distance:(t-n)/n}},te=(e,t,n,r)=>{let i=t.length;t.fill(NaN);let a=u.count(e);if(!a)return;let o=l.amount===`quote`,s=l.curve===`linear`,c=e=>n+(e+.5)/i*(r-n),d=u.priceAt(e,0),f=0,p=0,m=d,h=e===`bid`?-1:1,g=e===`bid`?Math.min(i-1,Math.floor((d-n)/(r-n)*i)):Math.max(0,Math.ceil((d-n)/(r-n)*i-1));for(let n=g;n>=0&&n<i;n+=h){let r=c(n);if(e===`bid`?r<=d:r>=d){for(;f<a;){let t=u.priceAt(e,f);if(e===`bid`?t<r:t>r)break;let n=u.sizeAt(e,f);m=t,p+=o?n*t:n,f++}if(s&&f<a){let i=u.priceAt(e,f),a=p+u.sizeAt(e,f)*(o?i:1),s=(r-m)/(i-m);t[n]=Number.isFinite(s)?p+(a-p)*s:p}else t[n]=p}}},U=e=>{b.length!==e&&(b=new Float64Array(e).fill(NaN),x=new Float64Array(e).fill(NaN),S=new Float64Array(e),C=new Float64Array(e))},W=(e,t,n,r)=>{let i=!1;for(let a=0;a<e.length;a++){let o=t[a],s=e[a];if(!Number.isFinite(o)||!Number.isFinite(s)||n>=1){e[a]=o;continue}let c=s+(o-s)*n;if(Math.abs(o-c)>r)i=!0;else{e[a]=o;continue}e[a]=c}return i};function G(t){let r=j.ctx;if(!r)return!1;let{width:a,height:o,dpr:s,theme:c}=j,d=w?t-w:0;w=t;let p=l.animate!==!1,m=p&&d>0?i.ease(d,70):1,g=ee(),E=l.fontSize??(a<360?11:12),D=l.axes!==!1;r.setTransform(s,0,0,s,0,0),r.clearRect(0,0,a,o),r.font=i.fontOf(c,l,400,E);let O=V(),k=Number.isFinite(O)?B(O):.01;_=Number.isFinite(_)&&p?_+(k-_)*m:k,y=Number.isFinite(y)&&Number.isFinite(O)&&p?y+(O-y)*Math.min(1,m*1.5):O;let A=Math.abs(_-k)>k*.001;Math.abs(y-O)>Math.abs(O)*1e-7&&(A=!0);let M=y*(1-_),N=y*(1+_),P=l.legend===!1&&l.midLine===!1?10:30,F=D?E+12:4,I=n.linearTicks(0,Math.max(1,v||1),4),L=D?Math.ceil(Math.max(...I.map(e=>r.measureText(f.compact(e)).width),24))+12:0;T={x:0,y:P,w:Math.max(10,a-L),h:Math.max(10,o-P-F)};let R=Math.max(1,Math.floor(T.w));U(R),Number.isFinite(M)&&N>M?(te(`bid`,S,M,N),te(`ask`,C,M,N)):(S.fill(NaN),C.fill(NaN));let z=0;for(let e=0;e<R;e++){let t=S[e],n=C[e];t>z&&(z=t),n>z&&(z=n)}let H=z>0?n.niceDomain(0,z*1.08,4)[1]:1;v=Number.isFinite(v)&&p?v+(H-v)*m:H,Math.abs(v-H)>H*.001&&(A=!0);let G=v*1e-4;W(b,S,m,G)&&(A=!0),W(x,C,m,G)&&(A=!0);let K=e=>T.y+T.h-e/v*T.h,q=e=>T.x+(e-M)/(N-M)*T.w,J=T.y+T.h,Y=n.linearTicks(0,v,Math.max(2,Math.floor(T.h/48)));if(l.grid!==!1){r.strokeStyle=e.toCss(c.grid),r.lineWidth=1,r.beginPath();for(let e of Y){let t=Math.round(K(e))+.5;r.moveTo(T.x,t),r.lineTo(T.x+T.w,t)}r.stroke()}if(D){r.fillStyle=e.toCss(c.textMuted),r.textAlign=`left`,r.textBaseline=`middle`;for(let e of Y)e!==0&&r.fillText(f.compact(e),T.x+T.w+6,K(e));r.textBaseline=`top`,r.textAlign=`center`;let t=Math.max(2,Math.floor(T.w/110)),i=Number.isFinite(M)?n.linearTicks(M,N,t):[];for(let e of i){let t=q(e),n=f.price(e),i=r.measureText(n).width;t-i/2<2||t+i/2>T.x+T.w-2||r.fillText(n,t,J+6)}r.strokeStyle=e.toCss(c.axis),r.beginPath(),r.moveTo(T.x,Math.round(J)+.5),r.lineTo(T.x+T.w,Math.round(J)+.5),r.stroke()}let X=l.fillOpacity??.28,Z=(t,n)=>{let i=-1,a=-1;for(let e=0;e<R;e++)Number.isFinite(t[e])&&(i<0&&(i=e),a=e);if(i<0)return;let o=T.x+i/R*T.w,s=T.x+(a+1)/R*T.w;r.beginPath(),r.moveTo(o,K(t[i]));for(let e=i;e<=a;e++){let n=K(t[e]),i=T.x+e/R*T.w,a=T.x+(e+1)/R*T.w;r.lineTo(i,n),r.lineTo(a,n)}let c=r.createLinearGradient(0,T.y,0,J);c.addColorStop(0,e.toCss(n,X)),c.addColorStop(1,e.toCss(n,X*.15)),r.save(),r.lineTo(s,J),r.lineTo(o,J),r.closePath(),r.fillStyle=c,r.fill(),r.restore(),r.beginPath(),r.moveTo(o,K(t[i]));for(let e=i;e<=a;e++){let n=K(t[e]);r.lineTo(T.x+e/R*T.w,n),r.lineTo(T.x+(e+1)/R*T.w,n)}r.lineTo(s,J),r.strokeStyle=e.toCss(n),r.lineWidth=1.5,r.lineJoin=`round`,r.stroke()};r.save(),r.beginPath(),r.rect(T.x,T.y-2,T.w,T.h+2),r.clip(),Z(b,h.up),Z(x,h.down);for(let t of l.priceLines??[]){let n=Math.round(q(t.price))+.5;if(n<T.x||n>T.x+T.w)continue;let a=t.color&&c.resolve?c.resolve(t.color,c.text):c.text;if(r.strokeStyle=e.toCss(a,.8),r.setLineDash([4,3]),r.beginPath(),r.moveTo(n,T.y),r.lineTo(n,J),r.stroke(),r.setLineDash([]),t.label){r.font=i.fontOf(c,l,500,E-1);let o=r.measureText(t.label).width+10,s=i.clamp(n-o/2,T.x+2,T.x+T.w-o-2);r.fillStyle=e.toCss(a),i.roundRect(r,s,J-E-10,o,E+6,4),r.fill(),r.fillStyle=e.toCss(c.background),r.textAlign=`left`,r.textBaseline=`middle`,r.fillText(t.label,s+5,J-E/2-7),r.font=i.fontOf(c,l,400,E)}}r.restore();let Q=q(y);if(l.midLine!==!1&&Number.isFinite(Q)){r.strokeStyle=e.toCss(c.textMuted,.55),r.setLineDash([3,3]),r.beginPath(),r.moveTo(Math.round(Q)+.5,T.y),r.lineTo(Math.round(Q)+.5,J),r.stroke(),r.setLineDash([]);let t=u.spread(),n=`${g.mid} ${f.price(O)}`,o=t/O*1e4,s=Number.isFinite(t)?`${g.spread} ${f.price(t)} · ${f.fixed(o,o<10?2:1)} ${g.basisPoints}`:``;r.font=i.fontOf(c,l,600,E);let d=r.measureText(n).width;r.font=i.fontOf(c,l,400,E-1);let p=s?r.measureText(s).width:0,m=a<420,h=m?Math.max(d,p)+16:d+p+28,_=m&&s?E*2+10:E+10,v=i.clamp(Q-h/2,2,a-h-2);r.fillStyle=e.toCss(c.background,.92),r.strokeStyle=e.toCss(c.axis),i.roundRect(r,v,4,h,_,6),r.fill(),r.stroke(),r.textBaseline=`middle`,r.textAlign=`left`,r.fillStyle=e.toCss(c.text),r.font=i.fontOf(c,l,600,E),r.fillText(n,v+8,4+E/2+5),s&&(r.font=i.fontOf(c,l,400,E-1),r.fillStyle=e.toCss(c.textMuted),m?r.fillText(s,v+8,4+E*1.5+6):r.fillText(s,v+20+d,4+E/2+5)),r.font=i.fontOf(c,l,400,E)}if(l.legend!==!1&&a>=300){r.textBaseline=`middle`;let t=4+E/2+5;r.font=i.fontOf(c,l,500,E),r.fillStyle=e.toCss(h.up),r.beginPath(),r.arc(8,t,3.5,0,Math.PI*2),r.fill(),r.textAlign=`left`,r.fillStyle=e.toCss(c.textMuted),r.fillText(g.bids,16,t);let n=T.x+T.w;r.textAlign=`right`,r.fillText(g.asks,n-16,t),r.fillStyle=e.toCss(h.down),r.beginPath(),r.arc(n-8,t,3.5,0,Math.PI*2),r.fill(),r.font=i.fontOf(c,l,400,E)}return ne(r,O,M,N,R,K,E),j.describe(Number.isFinite(O)?`${l.ariaLabel??g.name}. ${g.bids} ${f.price(u.bestBid())}, ${g.asks} ${f.price(u.bestAsk())}, ${g.spread} ${f.price(u.spread())}.`:l.ariaLabel??g.name),A}function ne(t,n,r,o,s,c,p){let{theme:m}=j,g=()=>{j.tooltip.style.display=`none`,P.style.display=`none`,O&&(O=null,D=``,d.emit(`hover`,null))};if(!E||l.tooltip===!1||!Number.isFinite(n)){g();return}let _=i.clamp(E[0],T.x,T.x+T.w-1),v=r+(_-T.x)/T.w*(o-r),S=u.bestBid(),C=u.bestAsk(),w=v<y?`bid`:`ask`;w===`bid`&&!Number.isFinite(S)&&(w=`ask`),w===`ask`&&!Number.isFinite(C)&&(w=`bid`);let k=H(w,v,n),A=2*y-v,M=w===`bid`?`ask`:`bid`,F=l.mirror!==!1&&u.count(M)?H(M,A,n):null,I={...k,mirror:F},L=ee(),R=e=>i.clamp(Math.floor((e-T.x)/T.w*s),0,s-1),z=(e,t)=>(e===`bid`?b:x)[R(t)],B=e=>e===`bid`?h.up:h.down,V=(n,r)=>{let a=z(n,r);if(!Number.isFinite(a))return NaN;let o=c(a);t.strokeStyle=e.toCss(m.textMuted,.6),t.setLineDash([3,3]),t.beginPath(),t.moveTo(Math.round(r)+.5,T.y),t.lineTo(Math.round(r)+.5,T.y+T.h),t.moveTo(T.x,Math.round(o)+.5),t.lineTo(T.x+T.w,Math.round(o)+.5),t.stroke(),t.setLineDash([]);let s=B(n);if(t.fillStyle=e.toCss(s,.2),t.beginPath(),t.arc(r,o,8,0,Math.PI*2),t.fill(),t.fillStyle=e.toCss(s),t.strokeStyle=e.toCss(m.background),t.lineWidth=2,t.beginPath(),t.arc(r,o,4,0,Math.PI*2),t.fill(),t.stroke(),t.lineWidth=1,l.axes!==!1){let n=f.compact(a);t.font=i.fontOf(m,l,500,p-1);let r=t.measureText(n).width+8;t.fillStyle=e.toCss(s),i.roundRect(t,T.x+T.w+2,o-9,r,18,3),t.fill(),t.fillStyle=`#fff`,t.textAlign=`left`,t.textBaseline=`middle`,t.fillText(n,T.x+T.w+6,o),t.font=i.fontOf(m,l,400,p)}return o},te=V(w,_),U=T.x+(A-r)/(o-r)*T.w,W=F&&U>=T.x&&U<=T.x+T.w?V(M,U):NaN,G=e=>[[L.price,f.price(e.price)],[L.amount,f.total(e.amount)],[L.total,f.notional(e.total)],[L.average,f.price(e.average)],[L.distance,f.percent(e.distance,Math.abs(e.distance)<.01?3:2)]],ne=(t,n,r,i)=>{a.tooltipHtml(N,t,{text:n.side===`bid`?L.bids:L.asks,color:e.toCss(B(n.side))},G(n)),t.style.display=`block`,j.placeTooltip(t,r,Number.isFinite(i)?i:T.y+T.h/2,n.side===`bid`?`left`:`right`)};ne(j.tooltip,k,_,te);let K=T.w>=2*(j.tooltip.offsetWidth+24);F&&Number.isFinite(W)&&K?ne(P,F,U,W):P.style.display=`none`;let q=`${k.price}|${k.amount}|${F?.amount??``}`;O=I,q!==D&&(D=q,d.emit(`hover`,I))}let K=(e,t)=>{if(e===null)g=null;else{let[t,n]=R();g=i.clamp(e,t,n)}j.invalidate(),t&&d.emit(`range`,$.getRange())},q=(e,t)=>e>=T.x&&e<=T.x+T.w&&t>=T.y-30&&t<=T.y+T.h,J=e=>{let t=a.localPoint(M,e);if(k.set(e.pointerId,t),A&&k.size===2){let[e,t]=[...k.values()],n=Math.hypot(e[0]-t[0],e[1]-t[1]);n>0&&l.zoomable!==!1&&K(A.range*A.distance/n,!0);return}E=q(t[0],t[1])?t:null,j.invalidate()},Y=e=>{let t=a.localPoint(M,e);if(k.set(e.pointerId,t),k.size===2){let[e,t]=[...k.values()];A={distance:Math.hypot(e[0]-t[0],e[1]-t[1]),range:$.getRange()},E=null}else E=q(t[0],t[1])?t:null;j.invalidate()},X=e=>{k.delete(e.pointerId),k.size<2&&(A=null)},Z=e=>{k.delete(e.pointerId),e.pointerType===`mouse`&&(E=null,j.invalidate())},Q=()=>{O&&d.emit(`click`,O)},re=e=>{l.zoomable!==!1&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),K($.getRange()*Math.exp(e.deltaY*.0025),!0))},ie=()=>{l.zoomable!==!1&&K(null,!0)},ae=e=>{let t=l.zoomable!==!1;switch(e.key){case`+`:case`=`:t&&K($.getRange()/1.25,!0);break;case`-`:t&&K($.getRange()*1.25,!0);break;case`0`:t&&K(null,!0);break;case`ArrowLeft`:case`ArrowRight`:{let t=(e.key===`ArrowLeft`?-1:1)*Math.max(2,T.w/50),n=E?E[0]+t:T.x+T.w/2+t;E=[i.clamp(n,T.x,T.x+T.w-1),T.y+T.h/2],j.invalidate();break}case`Escape`:E=null,j.invalidate();break;case`Enter`:Q();break;default:return}e.preventDefault()},oe=()=>{E&&!k.size&&(E=null,j.invalidate())};M.addEventListener(`pointermove`,J),M.addEventListener(`pointerdown`,Y),M.addEventListener(`pointerup`,X),M.addEventListener(`pointercancel`,X),M.addEventListener(`pointerleave`,Z),M.addEventListener(`click`,Q),M.addEventListener(`wheel`,re,{passive:!1}),M.addEventListener(`dblclick`,ie),M.addEventListener(`keydown`,ae),M.addEventListener(`blur`,oe);let se=()=>{!m&&u.count(`bid`)+u.count(`ask`)>0&&(m=!0,I()),j.invalidate()},$={setBook(e){u.setSnapshot(e),m=!1,se()},applyDeltas(e){r.applyDeltas(u,e)&&se()},clear(){u.clear(),m=!1,j.invalidate()},setOptions(e){e.range!==l.range&&(g=null),l=e,L()},setRange(e){K(e,!1)},getRange(){let e=V();return Number.isFinite(e)?B(e):g??l.range??.01},getStore:()=>u,on:(e,t)=>d.on(e,t),resize(){j.invalidate()},destroy(){M.removeEventListener(`pointermove`,J),M.removeEventListener(`pointerdown`,Y),M.removeEventListener(`pointerup`,X),M.removeEventListener(`pointercancel`,X),M.removeEventListener(`pointerleave`,Z),M.removeEventListener(`click`,Q),M.removeEventListener(`wheel`,re),M.removeEventListener(`dblclick`,ie),M.removeEventListener(`keydown`,ae),M.removeEventListener(`blur`,oe),d.clear(),j.destroy()}};return L(),$};exports.createDepthChart=s;
2
+ //# sourceMappingURL=depth.cjs.map