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":"signature.js","names":["ids","counter","idOf","id","value","itemsSignature","model","signature","themeKey","base","s","stackOf"],"sources":["../../../../charts/src/engine/signature.ts"],"sourcesContent":["// Signature of what the render items (GPU buffers) of a model depend on:\n// when it is unchanged, the items of the previous model can be kept.\n\nimport type { ChartModel } from \"./model\";\n\nconst ids = new WeakMap<object, number>();\nlet counter = 0;\n\n/** Stable id of an object (data columns compare by identity) */\nconst idOf = (value: object): number => {\n let id = ids.get(value);\n if (id === undefined) ids.set(value, (id = ++counter));\n return id;\n};\n\n/**\n * Every input of `buildItems` (and of the origin of its positions): data\n * identity, types, colors, visibility, widths, bar layout, stacks, curves,\n * radii, candlestick and heatmap colors. `themeKey` covers the colors resolved\n * from the theme that the model doesn't spell out (per-point colors);\n * `stackOf` gives the `stack` option of a series.\n */\nexport const itemsSignature = (\n model: ChartModel,\n themeKey: number | string,\n stackOf: (index: number) => string | undefined,\n): string => {\n const { base } = model;\n let signature = `${themeKey}|${model.baseline}|${model.percent}|${base.x[0]},${base.x[1]}|${base.y[0]},${base.y[1]}`;\n for (const s of model.series) {\n signature += `\\n${s.key}|${s.type}|${idOf(s.cols)}|${s.colorCss}|${s.hidden}|${s.lineWidth}|${s.pointSize}|${s.opacity}|${s.barOffset}|${s.barHalfWidth}|${stackOf(s.index) ?? \"\"}|${s.curve}|${s.radius}`;\n if (s.type === \"candlestick\") signature += `|${s.upColor}/${s.downColor}`;\n else if (s.type === \"heatmap\")\n signature += `|${s.colorScale.join(\";\")}/${s.valueRange[0]},${s.valueRange[1]}/${s.cellHalf.x},${s.cellHalf.y}`;\n }\n return signature;\n};\n"],"mappings":";AAKA,IAAMA,oBAAM,IAAI,QAAwB,GACpCC,IAAU,GAGRC,KAAQ,MAA0B;CACtC,IAAIC,IAAKH,EAAI,IAAII,CAAK;CAEtB,OADID,MAAO,KAAA,KAAWH,EAAI,IAAII,GAAQ,IAAK,EAAEH,CAAQ,GAC9CE;AACT,GASaE,KACX,GACA,GACA,MACW;CACX,IAAM,EAAE,YAASC,GACbC,IAAY,GAAGC,EAAS,GAAGF,EAAM,SAAS,GAAGA,EAAM,QAAQ,GAAGG,EAAK,EAAE,GAAG,GAAGA,EAAK,EAAE,GAAG,GAAGA,EAAK,EAAE,GAAG,GAAGA,EAAK,EAAE;CAChH,KAAK,IAAMC,KAAKJ,EAAM,QAEpB,AADA,KAAa,KAAKI,EAAE,IAAI,GAAGA,EAAE,KAAK,GAAGR,EAAKQ,EAAE,IAAI,EAAE,GAAGA,EAAE,SAAS,GAAGA,EAAE,OAAO,GAAGA,EAAE,UAAU,GAAGA,EAAE,UAAU,GAAGA,EAAE,QAAQ,GAAGA,EAAE,UAAU,GAAGA,EAAE,aAAa,GAAGC,EAAQD,EAAE,KAAK,KAAK,GAAG,GAAGA,EAAE,MAAM,GAAGA,EAAE,UAC9LA,EAAE,SAAS,gBAAe,KAAa,IAAIA,EAAE,QAAQ,GAAGA,EAAE,cACrDA,EAAE,SAAS,cAClB,KAAa,IAAIA,EAAE,WAAW,KAAK,GAAG,EAAE,GAAGA,EAAE,WAAW,GAAG,GAAGA,EAAE,WAAW,GAAG,GAAGA,EAAE,SAAS,EAAE,GAAGA,EAAE,SAAS;CAEhH,OAAOH;AACT"}
1
+ {"version":3,"file":"signature.js","names":["ids","counter","idOf","id","value","itemsSignature","model","signature","themeKey","base","s","stackOf"],"sources":["../../../../charts/src/engine/signature.ts"],"sourcesContent":["// Signature of what the render items (GPU buffers) of a model depend on:\n// when it is unchanged, the items of the previous model can be kept.\n\nimport type { ChartModel } from \"./model\";\n\nconst ids = new WeakMap<object, number>();\nlet counter = 0;\n\n/** Stable id of an object (data columns compare by identity) */\nconst idOf = (value: object): number => {\n let id = ids.get(value);\n if (id === undefined) ids.set(value, (id = ++counter));\n return id;\n};\n\n/**\n * Every input of `buildItems` (and of the origin of its positions): data\n * identity, types, colors, visibility, widths, bar layout, stacks, curves,\n * radii, candlestick and heatmap colors. `themeKey` covers the colors resolved\n * from the theme that the model doesn't spell out (per-point colors);\n * `stackOf` gives the `stack` option of a series.\n */\nexport const itemsSignature = (\n model: ChartModel,\n themeKey: number | string,\n stackOf: (index: number) => string | undefined,\n): string => {\n const { base } = model;\n let signature = `${themeKey}|${model.baseline}|${model.percent}|${base.x[0]},${base.x[1]}|${base.y[0]},${base.y[1]}`;\n for (const s of model.series) {\n signature += `\\n${s.key}|${s.type}|${idOf(s.cols)}|${s.colorCss}|${s.hidden}|${s.lineWidth}|${s.pointSize}|${s.opacity}|${s.barOffset}|${s.barHalfWidth}|${stackOf(s.index) ?? \"\"}|${s.curve}|${s.radius}`;\n if (s.type === \"candlestick\") signature += `|${s.upColor}/${s.downColor}`;\n else if (s.type === \"heatmap\")\n signature += `|${s.colorScale.join(\";\")}/${s.valueRange[0]},${s.valueRange[1]}/${s.colorMidpoint}/${s.cellHalf.x},${s.cellHalf.y}`;\n else if (s.type === \"boxplot\")\n signature += `|${s.outlierShape}/${s.outlierSize}`;\n }\n return signature;\n};\n"],"mappings":";AAKA,IAAMA,oBAAM,IAAI,QAAwB,GACpCC,IAAU,GAGRC,KAAQ,MAA0B;CACtC,IAAIC,IAAKH,EAAI,IAAII,CAAK;CAEtB,OADID,MAAO,KAAA,KAAWH,EAAI,IAAII,GAAQ,IAAK,EAAEH,CAAQ,GAC9CE;AACT,GASaE,KACX,GACA,GACA,MACW;CACX,IAAM,EAAE,YAASC,GACbC,IAAY,GAAGC,EAAS,GAAGF,EAAM,SAAS,GAAGA,EAAM,QAAQ,GAAGG,EAAK,EAAE,GAAG,GAAGA,EAAK,EAAE,GAAG,GAAGA,EAAK,EAAE,GAAG,GAAGA,EAAK,EAAE;CAChH,KAAK,IAAMC,KAAKJ,EAAM,QAEpB,AADA,KAAa,KAAKI,EAAE,IAAI,GAAGA,EAAE,KAAK,GAAGR,EAAKQ,EAAE,IAAI,EAAE,GAAGA,EAAE,SAAS,GAAGA,EAAE,OAAO,GAAGA,EAAE,UAAU,GAAGA,EAAE,UAAU,GAAGA,EAAE,QAAQ,GAAGA,EAAE,UAAU,GAAGA,EAAE,aAAa,GAAGC,EAAQD,EAAE,KAAK,KAAK,GAAG,GAAGA,EAAE,MAAM,GAAGA,EAAE,UAC9LA,EAAE,SAAS,gBAAe,KAAa,IAAIA,EAAE,QAAQ,GAAGA,EAAE,cACrDA,EAAE,SAAS,YAClB,KAAa,IAAIA,EAAE,WAAW,KAAK,GAAG,EAAE,GAAGA,EAAE,WAAW,GAAG,GAAGA,EAAE,WAAW,GAAG,GAAGA,EAAE,cAAc,GAAGA,EAAE,SAAS,EAAE,GAAGA,EAAE,SAAS,MACxHA,EAAE,SAAS,cAClB,KAAa,IAAIA,EAAE,aAAa,GAAGA,EAAE;CAEzC,OAAOH;AACT"}
@@ -0,0 +1,2 @@
1
+ const e=require("./render-types.cjs");var t=0,n=1,r=2,i=32,a=2.2,o=(e,t)=>{let n=Math.max(0,Math.min(1,t*.6+.5-e)),r=e/t;return[n+(1-n)*Math.exp(-1.2*r*r),.2*n]},s=(e,t,n,r,i,a,o)=>{let s=new Float32Array(i),c=new Float32Array(i),l=new Float32Array(i),u=new Float32Array(i);for(let d=0;d<i;d++){let i=d*n+r,f=t[i],p=t[i+1],m=t[i+2],h=e[3]*f+e[7]*p+e[11]*m+e[15],g=1/(h>1e-9?h:1e-9);s[d]=((e[0]*f+e[4]*p+e[8]*m+e[12])*g+1)*.5*a,c[d]=(1-(e[1]*f+e[5]*p+e[9]*m+e[13])*g)*.5*o,l[d]=(e[2]*f+e[6]*p+e[10]*m+e[14])*g,u[d]=h}return{x:s,y:c,z:l,w:u}},c=e=>e<0?0:e>255?255:Math.round(e),l=i=>{let o=i.getContext(`2d`);if(!o)return null;let l=new Map,f=(e,t,n)=>{let r=c(e)<<16|c(t)<<8|c(n),i=l.get(r);return i===void 0&&(i=`rgb(${r>>16},${r>>8&255},${r&255})`,l.size>4096&&l.clear(),l.set(r,i)),i},p=new Map,m=(e,t,n)=>{let r=c(e)>>4<<8|c(t)>>4<<4|c(n)>>4,a=p.get(r);return a===void 0&&(a=d(i,(r>>8&15)*17,(r>>4&15)*17,(r&15)*17),p.set(r,a)),a},h=(c,l)=>{let{width:d,height:p}=i,h=l.dpr;o.setTransform(1,0,0,1,0,0),o.clearRect(0,0,d,p);let g=e.drawOrder(c),_=l.viewProj,[v,y,b,x]=l.lighting,S=l.light,C=l.fog[0]*255,w=l.fog[1]*255,T=l.fog[2]*255,E=[],D=[],O=[],k=0;for(let e of g)k+=e.kind===`mesh`?e.indices.length/3:e.count;let A=new Float32Array(k),j=new Uint8Array(k),M=new Uint16Array(k),N=new Uint32Array(k),P=0;g.forEach((e,i)=>{let a=e.kind===`mesh`?e.vertices:e.data;if(D.push(new Float32Array(a)),O.push(new Uint8Array(a)),e.kind===`mesh`){let n=D[i],r=s(_,n,7,0,e.vertexCount,d,p);E.push(r);let a=e.indices;for(let e=0;e+2<a.length;e+=3){let n=a[e],o=a[e+1],s=a[e+2];r.w[n]<=0||r.w[o]<=0||r.w[s]<=0||(A[P]=(r.z[n]+r.z[o]+r.z[s])/3,j[P]=t,M[P]=i,N[P]=e,P++)}}else if(e.kind===`points`){let t=D[i],r=s(_,t,5,0,e.count,d,p);E.push(r);for(let t=0;t<e.count;t++)r.w[t]<=0||(A[P]=r.z[t],j[P]=n,M[P]=i,N[P]=t,P++)}else{let t=D[i],n=s(_,t,7,0,e.count,d,p),a=s(_,t,7,3,e.count,d,p);E.push({x:u(n.x,a.x),y:u(n.y,a.y),z:u(n.z,a.z),w:u(n.w,a.w)});let o=e.bias*5;for(let t=0;t<e.count;t++)n.w[t]<=0||a.w[t]<=0||(A[P]=(n.z[t]+a.z[t])/2-o,j[P]=r,M[P]=i,N[P]=t,P++)}});let F=new Uint32Array(P);for(let e=0;e<P;e++)F[e]=e;F.sort((e,t)=>A[t]-A[e]),o.lineJoin=`round`,o.lineCap=`round`;let I=-1,L=e=>{e!==I&&(o.globalAlpha=e,I=e)},R=!1,z=e=>{e!==R&&(o.globalCompositeOperation=e?`lighter`:`source-over`,R=e)},B=l.distance-l.radius;for(let e=0;e<P;e++){let i=F[e],s=g[M[i]],c=E[M[i]],u=D[M[i]],d=O[M[i]];if(!s||!c||!u||!d)continue;let p=N[i];if(z(s.kind===`points`&&!!s.additive),s.kind===`mesh`&&j[i]===t){let e=s.indices[p],t=s.indices[p+1],n=s.indices[p+2],r=u[e*7],i=u[e*7+1],a=u[e*7+2],m=u[t*7]-r,h=u[t*7+1]-i,g=u[t*7+2]-a,_=u[n*7]-r,C=u[n*7+1]-i,w=u[n*7+2]-a,T=h*w-g*C,E=g*_-m*w,D=m*C-h*_,O=Math.hypot(T,E,D)||1;T/=O,E/=O,D/=O;let k=l.eye[0]-r,A=l.eye[1]-i,j=l.eye[2]-a,M=Math.hypot(k,A,j)||1;k/=M,A/=M,j/=M,T*k+E*A+D*j<0&&(T=-T,E=-E,D=-D);let N=Math.max(0,T*S[0]+E*S[1]+D*S[2]),P=S[0]+k,F=S[1]+A,I=S[2]+j,R=Math.hypot(P,F,I)||1;P/=R,F/=R,I/=R;let z=Math.max(0,T*P+E*F+D*I)**+x*b*255,B=v+y*N,V=e*28+24,H=t*28+24,U=n*28+24,W=(d[V]+d[H]+d[U])/3,G=(d[V+1]+d[H+1]+d[U+1])/3,K=(d[V+2]+d[H+2]+d[U+2])/3,q=(d[V+3]+d[H+3]+d[U+3])/765,J=f(W*B+z,G*B+z,K*B+z);L(s.opacity*q),o.beginPath(),o.moveTo(c.x[e],c.y[e]),o.lineTo(c.x[t],c.y[t]),o.lineTo(c.x[n],c.y[n]),o.closePath(),o.fillStyle=J,o.fill(),s.opacity>=1&&!s.transparent&&(o.strokeStyle=J,o.lineWidth=.75,o.stroke())}else if(s.kind===`points`&&j[i]===n){let e=s.perspective&&!l.orthographic?Math.max(.5,Math.min(2,l.distance/Math.max(c.w[p],1e-6))):1,t=s.style===2,n=Math.max(1,s.thinned??1),r=t?Math.sqrt(Math.sqrt(n)):1,i=Math.max(0,u[p*5+3])*h*e*r/2,g=Math.max(i,t?.75:.5),_=Math.min(1,i*i/(g*g)),v=p*20+16,y=u[p*5]-l.eye[0],b=u[p*5+1]-l.eye[1],x=u[p*5+2]-l.eye[2],S=Math.max(0,Math.min(1,(Math.hypot(y,b,x)-B)/(2*l.radius)))*.45,E=d[v],D=d[v+1],O=d[v+2],k=s.opacity*(d[v+3]/255)*_*Math.sqrt(n);s.additive?k*=1-S:(E+=(C-E)*S,D+=(w-D)*S,O+=(T-O)*S),L(Math.min(1,k));let A=t?m(E,D,O):null;if(A){let e=g*a;o.drawImage(A,c.x[p]-e,c.y[p]-e,e*2,e*2)}else o.fillStyle=f(E,D,O),g<1.5?o.fillRect(c.x[p]-g,c.y[p]-g,g*2,g*2):(o.beginPath(),o.arc(c.x[p],c.y[p],g,0,Math.PI*2),o.fill())}else if(s.kind===`lines`&&j[i]===r){let e=p*28+24,t=c.x.length/2;L(s.opacity*(d[e+3]/255)),o.strokeStyle=f(d[e],d[e+1],d[e+2]),o.lineWidth=Math.max(.5,s.width*h),o.beginPath(),o.moveTo(c.x[p],c.y[p]),o.lineTo(c.x[t+p],c.y[t+p]),o.stroke()}}o.globalAlpha=1,z(!1)};return{kind:`canvas2d`,canvas:i,resize(e,t){i.width=Math.max(1,e),i.height=Math.max(1,t)},render(e,t){h(e,t)},destroy(){l.clear(),p.clear(),o.setTransform(1,0,0,1,0,0),o.clearRect(0,0,i.width,i.height)}}},u=(e,t)=>{let n=new Float32Array(e.length+t.length);return n.set(e,0),n.set(t,e.length),n},d=(e,t,n,r)=>{let s=e.ownerDocument.createElement(`canvas`);s.width=i,s.height=i;let c=s.getContext(`2d`);if(!c||typeof c.createImageData!=`function`)return null;let l=c.createImageData(i,i);if(!l)return null;let u=i/2,d=u/a;for(let e=0;e<i;e++)for(let a=0;a<i;a++){let s=Math.hypot(a+.5-u,e+.5-u),[c,f]=o(s,d),p=(e*i+a)*4;l.data[p]=t+(255-t)*f,l.data[p+1]=n+(255-n)*f,l.data[p+2]=r+(255-r)*f,l.data[p+3]=s<u?c*255:0}return c.putImageData(l,0,0),s};exports.createCanvas2d3D=l,exports.glowProfile=o;
2
+ //# sourceMappingURL=canvas2d.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas2d.cjs","names":["drawOrder","require_render_types","TRIANGLE","POINT","SEGMENT","SPRITE","GLOW_REACH","glowProfile","core","r","d","q","projectAll","x","count","y","z","w","i","o","stride","offset","px","data","py","pz","cw","m","iw","width","height","clamp255","v","createCanvas2d3D","ctx","canvas","styles","style","key","g","b","s","sprites","sprite","makeSprite","render","dpr","frame","ordered","items","ambient","diffuse","specular","shininess","L","fogR","fogG","fogB","projected","floats","bytes","capacity","item","depth","kind","owner","element","n","raw","f32","k","p","idx","t","a","c","concat","bias","order","currentAlpha","alpha","value","lighter","composite","add","near","u8","e","ax","ay","az","ux","uy","uz","vx","vy","vz","nx","ny","nz","len","ex","ey","ez","el","lambert","hx","hy","hz","hl","spec","light","ca","cb","cc","bl","ac","fill","scale","glow","thinned","grow","radius","coverage","wx","wy","wz","fog","image","reach","half","out","pixels","center","white"],"sources":["../../../../../charts/src/engine/three-d/canvas2d.ts"],"sourcesContent":["// Canvas2D backend of the 3D charts: CPU projection and the painter's\n// algorithm (every triangle, dot and segment of every item sorted back to\n// front together: transparent meshes blend in the right order), flat\n// lighting per triangle. The chart thins the point clouds and resamples the\n// surfaces for this backend (`CPU_BUDGET`): what it gets is what is drawn,\n// and what can be hovered.\n\nimport {\n POINT_GLOW,\n drawOrder,\n type Frame3D,\n type Item3D,\n type Renderer3D,\n} from \"./render-types\";\n\nconst TRIANGLE = 0;\nconst POINT = 1;\nconst SEGMENT = 2;\n\n/** Side of the glow sprites (px); the halo reaches 2.2 × the core radius */\nconst SPRITE = 32;\nconst GLOW_REACH = 2.2;\n\n/**\n * Glow profile (as the GPU shaders): an anti-aliased core and a gaussian\n * halo; `d` and `r` in pixels. Returns the alpha and the whitening.\n */\nexport const glowProfile = (d: number, r: number): [number, number] => {\n const core = Math.max(0, Math.min(1, r * 0.6 + 0.5 - d));\n const q = d / r;\n return [core + (1 - core) * Math.exp(-1.2 * q * q), 0.2 * core];\n};\n\ninterface Projected {\n x: Float32Array;\n y: Float32Array;\n z: Float32Array;\n w: Float32Array;\n}\n\nconst projectAll = (\n m: Float32Array,\n data: Float32Array,\n stride: number,\n offset: number,\n count: number,\n width: number,\n height: number,\n): Projected => {\n const x = new Float32Array(count);\n const y = new Float32Array(count);\n const z = new Float32Array(count);\n const w = new Float32Array(count);\n for (let i = 0; i < count; i++) {\n const o = i * stride + offset;\n const px = data[o];\n const py = data[o + 1];\n const pz = data[o + 2];\n const cw = m[3] * px + m[7] * py + m[11] * pz + m[15];\n const iw = 1 / (cw > 1e-9 ? cw : 1e-9);\n x[i] = ((m[0] * px + m[4] * py + m[8] * pz + m[12]) * iw + 1) * 0.5 * width;\n y[i] =\n (1 - (m[1] * px + m[5] * py + m[9] * pz + m[13]) * iw) * 0.5 * height;\n z[i] = (m[2] * px + m[6] * py + m[10] * pz + m[14]) * iw;\n w[i] = cw;\n }\n return { x, y, z, w };\n};\n\nconst clamp255 = (v: number) => (v < 0 ? 0 : v > 255 ? 255 : Math.round(v));\n\nexport const createCanvas2d3D = (\n canvas: HTMLCanvasElement,\n): Renderer3D | null => {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return null;\n const styles = new Map<number, string>();\n const style = (r: number, g: number, b: number) => {\n const key = (clamp255(r) << 16) | (clamp255(g) << 8) | clamp255(b);\n let s = styles.get(key);\n if (s === undefined) {\n s = `rgb(${key >> 16},${(key >> 8) & 255},${key & 255})`;\n if (styles.size > 4096) styles.clear();\n styles.set(key, s);\n }\n return s;\n };\n // glow sprites by color (4 bits per channel); null: no offscreen canvas\n const sprites = new Map<number, HTMLCanvasElement | null>();\n const sprite = (r: number, g: number, b: number) => {\n const key =\n ((clamp255(r) >> 4) << 8) |\n ((clamp255(g) >> 4) << 4) |\n (clamp255(b) >> 4);\n let s = sprites.get(key);\n if (s === undefined) {\n s = makeSprite(\n canvas,\n ((key >> 8) & 15) * 17,\n ((key >> 4) & 15) * 17,\n (key & 15) * 17,\n );\n sprites.set(key, s);\n }\n return s;\n };\n\n const render = (items: readonly Item3D[], frame: Frame3D) => {\n const { width, height } = canvas;\n const dpr = frame.dpr;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, width, height);\n const ordered = drawOrder(items);\n const m = frame.viewProj;\n const [ambient, diffuse, specular, shininess] = frame.lighting;\n const L = frame.light;\n const fogR = frame.fog[0] * 255;\n const fogG = frame.fog[1] * 255;\n const fogB = frame.fog[2] * 255;\n\n // ---- collect the primitives\n const projected: (Projected | null)[] = [];\n // typed views of every item (floats and bytes of the same buffer)\n const floats: Float32Array[] = [];\n const bytes: Uint8Array[] = [];\n let capacity = 0;\n for (const item of ordered) {\n capacity += item.kind === \"mesh\" ? item.indices.length / 3 : item.count;\n }\n const depth = new Float32Array(capacity);\n const kind = new Uint8Array(capacity);\n const owner = new Uint16Array(capacity);\n const element = new Uint32Array(capacity);\n let n = 0;\n ordered.forEach((item, k) => {\n const raw = item.kind === \"mesh\" ? item.vertices : item.data;\n floats.push(new Float32Array(raw));\n bytes.push(new Uint8Array(raw));\n if (item.kind === \"mesh\") {\n const f32 = floats[k]!;\n const p = projectAll(m, f32, 7, 0, item.vertexCount, width, height);\n projected.push(p);\n const idx = item.indices;\n for (let t = 0; t + 2 < idx.length; t += 3) {\n const a = idx[t];\n const b = idx[t + 1];\n const c = idx[t + 2];\n if (p.w[a] <= 0 || p.w[b] <= 0 || p.w[c] <= 0) continue;\n depth[n] = (p.z[a] + p.z[b] + p.z[c]) / 3;\n kind[n] = TRIANGLE;\n owner[n] = k;\n element[n] = t;\n n++;\n }\n } else if (item.kind === \"points\") {\n const f32 = floats[k]!;\n const p = projectAll(m, f32, 5, 0, item.count, width, height);\n projected.push(p);\n for (let i = 0; i < item.count; i++) {\n if (p.w[i] <= 0) continue;\n depth[n] = p.z[i];\n kind[n] = POINT;\n owner[n] = k;\n element[n] = i;\n n++;\n }\n } else {\n const f32 = floats[k]!;\n // both ends: projected as two interleaved point lists\n const a = projectAll(m, f32, 7, 0, item.count, width, height);\n const b = projectAll(m, f32, 7, 3, item.count, width, height);\n projected.push({\n x: concat(a.x, b.x),\n y: concat(a.y, b.y),\n z: concat(a.z, b.z),\n w: concat(a.w, b.w),\n });\n const bias = item.bias * 5;\n for (let i = 0; i < item.count; i++) {\n if (a.w[i] <= 0 || b.w[i] <= 0) continue;\n depth[n] = (a.z[i] + b.z[i]) / 2 - bias;\n kind[n] = SEGMENT;\n owner[n] = k;\n element[n] = i;\n n++;\n }\n }\n });\n const order = new Uint32Array(n);\n for (let i = 0; i < n; i++) order[i] = i;\n order.sort((a, b) => depth[b] - depth[a]);\n\n // ---- draw back to front\n ctx.lineJoin = \"round\";\n ctx.lineCap = \"round\";\n let currentAlpha = -1;\n const alpha = (value: number) => {\n if (value !== currentAlpha) {\n ctx.globalAlpha = value;\n currentAlpha = value;\n }\n };\n let lighter = false;\n const composite = (add: boolean) => {\n if (add !== lighter) {\n ctx.globalCompositeOperation = add ? \"lighter\" : \"source-over\";\n lighter = add;\n }\n };\n const near = frame.distance - frame.radius;\n for (let o = 0; o < n; o++) {\n const i = order[o];\n const item = ordered[owner[i]];\n const p = projected[owner[i]];\n const f32 = floats[owner[i]];\n const u8 = bytes[owner[i]];\n if (!item || !p || !f32 || !u8) continue;\n const e = element[i];\n composite(item.kind === \"points\" && !!item.additive);\n if (item.kind === \"mesh\" && kind[i] === TRIANGLE) {\n const a = item.indices[e];\n const b = item.indices[e + 1];\n const c = item.indices[e + 2];\n // flat normal facing the camera\n const ax = f32[a * 7],\n ay = f32[a * 7 + 1],\n az = f32[a * 7 + 2];\n const ux = f32[b * 7] - ax,\n uy = f32[b * 7 + 1] - ay,\n uz = f32[b * 7 + 2] - az;\n const vx = f32[c * 7] - ax,\n vy = f32[c * 7 + 1] - ay,\n vz = f32[c * 7 + 2] - az;\n let nx = uy * vz - uz * vy;\n let ny = uz * vx - ux * vz;\n let nz = ux * vy - uy * vx;\n const len = Math.hypot(nx, ny, nz) || 1;\n nx /= len;\n ny /= len;\n nz /= len;\n let ex = frame.eye[0] - ax;\n let ey = frame.eye[1] - ay;\n let ez = frame.eye[2] - az;\n const el = Math.hypot(ex, ey, ez) || 1;\n ex /= el;\n ey /= el;\n ez /= el;\n if (nx * ex + ny * ey + nz * ez < 0) {\n nx = -nx;\n ny = -ny;\n nz = -nz;\n }\n const lambert = Math.max(0, nx * L[0] + ny * L[1] + nz * L[2]);\n let hx = L[0] + ex;\n let hy = L[1] + ey;\n let hz = L[2] + ez;\n const hl = Math.hypot(hx, hy, hz) || 1;\n hx /= hl;\n hy /= hl;\n hz /= hl;\n const spec =\n Math.pow(Math.max(0, nx * hx + ny * hy + nz * hz), shininess) *\n specular *\n 255;\n const light = ambient + diffuse * lambert;\n const ca = a * 28 + 24;\n const cb = b * 28 + 24;\n const cc = c * 28 + 24;\n const r = (u8[ca] + u8[cb] + u8[cc]) / 3;\n const g = (u8[ca + 1] + u8[cb + 1] + u8[cc + 1]) / 3;\n const bl = (u8[ca + 2] + u8[cb + 2] + u8[cc + 2]) / 3;\n const ac = (u8[ca + 3] + u8[cb + 3] + u8[cc + 3]) / 765;\n const fill = style(\n r * light + spec,\n g * light + spec,\n bl * light + spec,\n );\n alpha(item.opacity * ac);\n ctx.beginPath();\n ctx.moveTo(p.x[a], p.y[a]);\n ctx.lineTo(p.x[b], p.y[b]);\n ctx.lineTo(p.x[c], p.y[c]);\n ctx.closePath();\n ctx.fillStyle = fill;\n ctx.fill();\n if (item.opacity >= 1 && !item.transparent) {\n // hides the seams between neighbouring triangles\n ctx.strokeStyle = fill;\n ctx.lineWidth = 0.75;\n ctx.stroke();\n }\n } else if (item.kind === \"points\" && kind[i] === POINT) {\n const scale =\n item.perspective && !frame.orthographic\n ? Math.max(\n 0.5,\n Math.min(2, frame.distance / Math.max(p.w[e], 1e-6)),\n )\n : 1;\n const glow = item.style === POINT_GLOW;\n // thinned clouds: denser (and, glowing, larger) dots\n const thinned = Math.max(1, item.thinned ?? 1);\n const grow = glow ? Math.sqrt(Math.sqrt(thinned)) : 1;\n const raw = (Math.max(0, f32[e * 5 + 3]) * dpr * scale * grow) / 2;\n const radius = Math.max(raw, glow ? 0.75 : 0.5);\n const coverage = Math.min(1, (raw * raw) / (radius * radius));\n const c = e * 20 + 16;\n const wx = f32[e * 5] - frame.eye[0];\n const wy = f32[e * 5 + 1] - frame.eye[1];\n const wz = f32[e * 5 + 2] - frame.eye[2];\n const fog =\n Math.max(\n 0,\n Math.min(1, (Math.hypot(wx, wy, wz) - near) / (2 * frame.radius)),\n ) * 0.45;\n let r = u8[c];\n let g = u8[c + 1];\n let b = u8[c + 2];\n let a =\n item.opacity * (u8[c + 3] / 255) * coverage * Math.sqrt(thinned);\n if (item.additive) {\n a *= 1 - fog;\n } else {\n r += (fogR - r) * fog;\n g += (fogG - g) * fog;\n b += (fogB - b) * fog;\n }\n alpha(Math.min(1, a));\n const image = glow ? sprite(r, g, b) : null;\n if (image) {\n const reach = radius * GLOW_REACH;\n ctx.drawImage(\n image,\n p.x[e] - reach,\n p.y[e] - reach,\n reach * 2,\n reach * 2,\n );\n } else {\n ctx.fillStyle = style(r, g, b);\n if (radius < 1.5) {\n ctx.fillRect(\n p.x[e] - radius,\n p.y[e] - radius,\n radius * 2,\n radius * 2,\n );\n } else {\n ctx.beginPath();\n ctx.arc(p.x[e], p.y[e], radius, 0, Math.PI * 2);\n ctx.fill();\n }\n }\n } else if (item.kind === \"lines\" && kind[i] === SEGMENT) {\n const c = e * 28 + 24;\n const half = p.x.length / 2;\n alpha(item.opacity * (u8[c + 3] / 255));\n ctx.strokeStyle = style(u8[c], u8[c + 1], u8[c + 2]);\n ctx.lineWidth = Math.max(0.5, item.width * dpr);\n ctx.beginPath();\n ctx.moveTo(p.x[e], p.y[e]);\n ctx.lineTo(p.x[half + e], p.y[half + e]);\n ctx.stroke();\n }\n }\n ctx.globalAlpha = 1;\n composite(false);\n };\n\n return {\n kind: \"canvas2d\",\n canvas,\n resize(width, height) {\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n },\n render(items, frame) {\n render(items, frame);\n },\n destroy() {\n styles.clear();\n sprites.clear();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n },\n };\n};\n\nconst concat = (a: Float32Array, b: Float32Array) => {\n const out = new Float32Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n};\n\n/** A glow sprite of a color (`SPRITE` px, the halo filling it), or null */\nconst makeSprite = (\n canvas: HTMLCanvasElement,\n r: number,\n g: number,\n b: number,\n): HTMLCanvasElement | null => {\n const image = canvas.ownerDocument.createElement(\"canvas\");\n image.width = SPRITE;\n image.height = SPRITE;\n const ctx = image.getContext(\"2d\");\n if (!ctx || typeof ctx.createImageData !== \"function\") return null;\n const pixels = ctx.createImageData(SPRITE, SPRITE) as ImageData | undefined;\n if (!pixels) return null;\n const center = SPRITE / 2;\n const radius = center / GLOW_REACH;\n for (let y = 0; y < SPRITE; y++) {\n for (let x = 0; x < SPRITE; x++) {\n const d = Math.hypot(x + 0.5 - center, y + 0.5 - center);\n const [a, white] = glowProfile(d, radius);\n const o = (y * SPRITE + x) * 4;\n pixels.data[o] = r + (255 - r) * white;\n pixels.data[o + 1] = g + (255 - g) * white;\n pixels.data[o + 2] = b + (255 - b) * white;\n pixels.data[o + 3] = d < center ? a * 255 : 0;\n }\n }\n ctx.putImageData(pixels, 0, 0);\n return image;\n};\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Renderer3D } from './render-types.cjs';
2
+ /**
3
+ * Glow profile (as the GPU shaders): an anti-aliased core and a gaussian
4
+ * halo; `d` and `r` in pixels. Returns the alpha and the whitening.
5
+ */
6
+ export declare const glowProfile: (d: number, r: number) => [number, number];
7
+ export declare const createCanvas2d3D: (canvas: HTMLCanvasElement) => Renderer3D | null;
@@ -0,0 +1,7 @@
1
+ import { Renderer3D } from './render-types.js';
2
+ /**
3
+ * Glow profile (as the GPU shaders): an anti-aliased core and a gaussian
4
+ * halo; `d` and `r` in pixels. Returns the alpha and the whitening.
5
+ */
6
+ export declare const glowProfile: (d: number, r: number) => [number, number];
7
+ export declare const createCanvas2d3D: (canvas: HTMLCanvasElement) => Renderer3D | null;
@@ -0,0 +1,128 @@
1
+ import { drawOrder as e } from "./render-types.js";
2
+ //#region src/engine/three-d/canvas2d.ts
3
+ var t = 0, n = 1, r = 2, i = 32, a = 2.2, o = (e, t) => {
4
+ let n = Math.max(0, Math.min(1, t * .6 + .5 - e)), r = e / t;
5
+ return [n + (1 - n) * Math.exp(-1.2 * r * r), .2 * n];
6
+ }, s = (e, t, n, r, i, a, o) => {
7
+ let s = new Float32Array(i), c = new Float32Array(i), l = new Float32Array(i), u = new Float32Array(i);
8
+ for (let d = 0; d < i; d++) {
9
+ let i = d * n + r, f = t[i], p = t[i + 1], m = t[i + 2], h = e[3] * f + e[7] * p + e[11] * m + e[15], g = 1 / (h > 1e-9 ? h : 1e-9);
10
+ s[d] = ((e[0] * f + e[4] * p + e[8] * m + e[12]) * g + 1) * .5 * a, c[d] = (1 - (e[1] * f + e[5] * p + e[9] * m + e[13]) * g) * .5 * o, l[d] = (e[2] * f + e[6] * p + e[10] * m + e[14]) * g, u[d] = h;
11
+ }
12
+ return {
13
+ x: s,
14
+ y: c,
15
+ z: l,
16
+ w: u
17
+ };
18
+ }, c = (e) => e < 0 ? 0 : e > 255 ? 255 : Math.round(e), l = (i) => {
19
+ let o = i.getContext("2d");
20
+ if (!o) return null;
21
+ let l = /* @__PURE__ */ new Map(), f = (e, t, n) => {
22
+ let r = c(e) << 16 | c(t) << 8 | c(n), i = l.get(r);
23
+ return i === void 0 && (i = `rgb(${r >> 16},${r >> 8 & 255},${r & 255})`, l.size > 4096 && l.clear(), l.set(r, i)), i;
24
+ }, p = /* @__PURE__ */ new Map(), m = (e, t, n) => {
25
+ let r = c(e) >> 4 << 8 | c(t) >> 4 << 4 | c(n) >> 4, a = p.get(r);
26
+ return a === void 0 && (a = d(i, (r >> 8 & 15) * 17, (r >> 4 & 15) * 17, (r & 15) * 17), p.set(r, a)), a;
27
+ }, h = (c, l) => {
28
+ let { width: d, height: p } = i, h = l.dpr;
29
+ o.setTransform(1, 0, 0, 1, 0, 0), o.clearRect(0, 0, d, p);
30
+ let g = e(c), _ = l.viewProj, [v, y, b, x] = l.lighting, S = l.light, C = l.fog[0] * 255, w = l.fog[1] * 255, T = l.fog[2] * 255, E = [], D = [], O = [], k = 0;
31
+ for (let e of g) k += e.kind === "mesh" ? e.indices.length / 3 : e.count;
32
+ let A = new Float32Array(k), j = new Uint8Array(k), M = new Uint16Array(k), N = new Uint32Array(k), P = 0;
33
+ g.forEach((e, i) => {
34
+ let a = e.kind === "mesh" ? e.vertices : e.data;
35
+ if (D.push(new Float32Array(a)), O.push(new Uint8Array(a)), e.kind === "mesh") {
36
+ let n = D[i], r = s(_, n, 7, 0, e.vertexCount, d, p);
37
+ E.push(r);
38
+ let a = e.indices;
39
+ for (let e = 0; e + 2 < a.length; e += 3) {
40
+ let n = a[e], o = a[e + 1], s = a[e + 2];
41
+ r.w[n] <= 0 || r.w[o] <= 0 || r.w[s] <= 0 || (A[P] = (r.z[n] + r.z[o] + r.z[s]) / 3, j[P] = t, M[P] = i, N[P] = e, P++);
42
+ }
43
+ } else if (e.kind === "points") {
44
+ let t = D[i], r = s(_, t, 5, 0, e.count, d, p);
45
+ E.push(r);
46
+ for (let t = 0; t < e.count; t++) r.w[t] <= 0 || (A[P] = r.z[t], j[P] = n, M[P] = i, N[P] = t, P++);
47
+ } else {
48
+ let t = D[i], n = s(_, t, 7, 0, e.count, d, p), a = s(_, t, 7, 3, e.count, d, p);
49
+ E.push({
50
+ x: u(n.x, a.x),
51
+ y: u(n.y, a.y),
52
+ z: u(n.z, a.z),
53
+ w: u(n.w, a.w)
54
+ });
55
+ let o = e.bias * 5;
56
+ for (let t = 0; t < e.count; t++) n.w[t] <= 0 || a.w[t] <= 0 || (A[P] = (n.z[t] + a.z[t]) / 2 - o, j[P] = r, M[P] = i, N[P] = t, P++);
57
+ }
58
+ });
59
+ let F = new Uint32Array(P);
60
+ for (let e = 0; e < P; e++) F[e] = e;
61
+ F.sort((e, t) => A[t] - A[e]), o.lineJoin = "round", o.lineCap = "round";
62
+ let I = -1, L = (e) => {
63
+ e !== I && (o.globalAlpha = e, I = e);
64
+ }, R = !1, z = (e) => {
65
+ e !== R && (o.globalCompositeOperation = e ? "lighter" : "source-over", R = e);
66
+ }, B = l.distance - l.radius;
67
+ for (let e = 0; e < P; e++) {
68
+ let i = F[e], s = g[M[i]], c = E[M[i]], u = D[M[i]], d = O[M[i]];
69
+ if (!s || !c || !u || !d) continue;
70
+ let p = N[i];
71
+ if (z(s.kind === "points" && !!s.additive), s.kind === "mesh" && j[i] === t) {
72
+ let e = s.indices[p], t = s.indices[p + 1], n = s.indices[p + 2], r = u[e * 7], i = u[e * 7 + 1], a = u[e * 7 + 2], m = u[t * 7] - r, h = u[t * 7 + 1] - i, g = u[t * 7 + 2] - a, _ = u[n * 7] - r, C = u[n * 7 + 1] - i, w = u[n * 7 + 2] - a, T = h * w - g * C, E = g * _ - m * w, D = m * C - h * _, O = Math.hypot(T, E, D) || 1;
73
+ T /= O, E /= O, D /= O;
74
+ let k = l.eye[0] - r, A = l.eye[1] - i, j = l.eye[2] - a, M = Math.hypot(k, A, j) || 1;
75
+ k /= M, A /= M, j /= M, T * k + E * A + D * j < 0 && (T = -T, E = -E, D = -D);
76
+ let N = Math.max(0, T * S[0] + E * S[1] + D * S[2]), P = S[0] + k, F = S[1] + A, I = S[2] + j, R = Math.hypot(P, F, I) || 1;
77
+ P /= R, F /= R, I /= R;
78
+ let z = Math.max(0, T * P + E * F + D * I) ** +x * b * 255, B = v + y * N, V = e * 28 + 24, H = t * 28 + 24, U = n * 28 + 24, W = (d[V] + d[H] + d[U]) / 3, G = (d[V + 1] + d[H + 1] + d[U + 1]) / 3, K = (d[V + 2] + d[H + 2] + d[U + 2]) / 3, q = (d[V + 3] + d[H + 3] + d[U + 3]) / 765, J = f(W * B + z, G * B + z, K * B + z);
79
+ L(s.opacity * q), o.beginPath(), o.moveTo(c.x[e], c.y[e]), o.lineTo(c.x[t], c.y[t]), o.lineTo(c.x[n], c.y[n]), o.closePath(), o.fillStyle = J, o.fill(), s.opacity >= 1 && !s.transparent && (o.strokeStyle = J, o.lineWidth = .75, o.stroke());
80
+ } else if (s.kind === "points" && j[i] === n) {
81
+ let e = s.perspective && !l.orthographic ? Math.max(.5, Math.min(2, l.distance / Math.max(c.w[p], 1e-6))) : 1, t = s.style === 2, n = Math.max(1, s.thinned ?? 1), r = t ? Math.sqrt(Math.sqrt(n)) : 1, i = Math.max(0, u[p * 5 + 3]) * h * e * r / 2, g = Math.max(i, t ? .75 : .5), _ = Math.min(1, i * i / (g * g)), v = p * 20 + 16, y = u[p * 5] - l.eye[0], b = u[p * 5 + 1] - l.eye[1], x = u[p * 5 + 2] - l.eye[2], S = Math.max(0, Math.min(1, (Math.hypot(y, b, x) - B) / (2 * l.radius))) * .45, E = d[v], D = d[v + 1], O = d[v + 2], k = s.opacity * (d[v + 3] / 255) * _ * Math.sqrt(n);
82
+ s.additive ? k *= 1 - S : (E += (C - E) * S, D += (w - D) * S, O += (T - O) * S), L(Math.min(1, k));
83
+ let A = t ? m(E, D, O) : null;
84
+ if (A) {
85
+ let e = g * a;
86
+ o.drawImage(A, c.x[p] - e, c.y[p] - e, e * 2, e * 2);
87
+ } else o.fillStyle = f(E, D, O), g < 1.5 ? o.fillRect(c.x[p] - g, c.y[p] - g, g * 2, g * 2) : (o.beginPath(), o.arc(c.x[p], c.y[p], g, 0, Math.PI * 2), o.fill());
88
+ } else if (s.kind === "lines" && j[i] === r) {
89
+ let e = p * 28 + 24, t = c.x.length / 2;
90
+ L(s.opacity * (d[e + 3] / 255)), o.strokeStyle = f(d[e], d[e + 1], d[e + 2]), o.lineWidth = Math.max(.5, s.width * h), o.beginPath(), o.moveTo(c.x[p], c.y[p]), o.lineTo(c.x[t + p], c.y[t + p]), o.stroke();
91
+ }
92
+ }
93
+ o.globalAlpha = 1, z(!1);
94
+ };
95
+ return {
96
+ kind: "canvas2d",
97
+ canvas: i,
98
+ resize(e, t) {
99
+ i.width = Math.max(1, e), i.height = Math.max(1, t);
100
+ },
101
+ render(e, t) {
102
+ h(e, t);
103
+ },
104
+ destroy() {
105
+ l.clear(), p.clear(), o.setTransform(1, 0, 0, 1, 0, 0), o.clearRect(0, 0, i.width, i.height);
106
+ }
107
+ };
108
+ }, u = (e, t) => {
109
+ let n = new Float32Array(e.length + t.length);
110
+ return n.set(e, 0), n.set(t, e.length), n;
111
+ }, d = (e, t, n, r) => {
112
+ let s = e.ownerDocument.createElement("canvas");
113
+ s.width = i, s.height = i;
114
+ let c = s.getContext("2d");
115
+ if (!c || typeof c.createImageData != "function") return null;
116
+ let l = c.createImageData(i, i);
117
+ if (!l) return null;
118
+ let u = i / 2, d = u / a;
119
+ for (let e = 0; e < i; e++) for (let a = 0; a < i; a++) {
120
+ let s = Math.hypot(a + .5 - u, e + .5 - u), [c, f] = o(s, d), p = (e * i + a) * 4;
121
+ l.data[p] = t + (255 - t) * f, l.data[p + 1] = n + (255 - n) * f, l.data[p + 2] = r + (255 - r) * f, l.data[p + 3] = s < u ? c * 255 : 0;
122
+ }
123
+ return c.putImageData(l, 0, 0), s;
124
+ };
125
+ //#endregion
126
+ export { l as createCanvas2d3D, o as glowProfile };
127
+
128
+ //# sourceMappingURL=canvas2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas2d.js","names":["TRIANGLE","POINT","SEGMENT","SPRITE","GLOW_REACH","glowProfile","core","r","d","q","projectAll","x","count","y","z","w","i","o","stride","offset","px","data","py","pz","cw","m","iw","width","height","clamp255","v","createCanvas2d3D","ctx","canvas","styles","style","key","g","b","s","sprites","sprite","makeSprite","render","dpr","frame","ordered","drawOrder","items","ambient","diffuse","specular","shininess","L","fogR","fogG","fogB","projected","floats","bytes","capacity","item","depth","kind","owner","element","n","raw","f32","k","p","idx","t","a","c","concat","bias","order","currentAlpha","alpha","value","lighter","composite","add","near","u8","e","ax","ay","az","ux","uy","uz","vx","vy","vz","nx","ny","nz","len","ex","ey","ez","el","lambert","hx","hy","hz","hl","spec","light","ca","cb","cc","bl","ac","fill","scale","glow","thinned","grow","radius","coverage","wx","wy","wz","fog","image","reach","half","out","pixels","center","white"],"sources":["../../../../../charts/src/engine/three-d/canvas2d.ts"],"sourcesContent":["// Canvas2D backend of the 3D charts: CPU projection and the painter's\n// algorithm (every triangle, dot and segment of every item sorted back to\n// front together: transparent meshes blend in the right order), flat\n// lighting per triangle. The chart thins the point clouds and resamples the\n// surfaces for this backend (`CPU_BUDGET`): what it gets is what is drawn,\n// and what can be hovered.\n\nimport {\n POINT_GLOW,\n drawOrder,\n type Frame3D,\n type Item3D,\n type Renderer3D,\n} from \"./render-types\";\n\nconst TRIANGLE = 0;\nconst POINT = 1;\nconst SEGMENT = 2;\n\n/** Side of the glow sprites (px); the halo reaches 2.2 × the core radius */\nconst SPRITE = 32;\nconst GLOW_REACH = 2.2;\n\n/**\n * Glow profile (as the GPU shaders): an anti-aliased core and a gaussian\n * halo; `d` and `r` in pixels. Returns the alpha and the whitening.\n */\nexport const glowProfile = (d: number, r: number): [number, number] => {\n const core = Math.max(0, Math.min(1, r * 0.6 + 0.5 - d));\n const q = d / r;\n return [core + (1 - core) * Math.exp(-1.2 * q * q), 0.2 * core];\n};\n\ninterface Projected {\n x: Float32Array;\n y: Float32Array;\n z: Float32Array;\n w: Float32Array;\n}\n\nconst projectAll = (\n m: Float32Array,\n data: Float32Array,\n stride: number,\n offset: number,\n count: number,\n width: number,\n height: number,\n): Projected => {\n const x = new Float32Array(count);\n const y = new Float32Array(count);\n const z = new Float32Array(count);\n const w = new Float32Array(count);\n for (let i = 0; i < count; i++) {\n const o = i * stride + offset;\n const px = data[o];\n const py = data[o + 1];\n const pz = data[o + 2];\n const cw = m[3] * px + m[7] * py + m[11] * pz + m[15];\n const iw = 1 / (cw > 1e-9 ? cw : 1e-9);\n x[i] = ((m[0] * px + m[4] * py + m[8] * pz + m[12]) * iw + 1) * 0.5 * width;\n y[i] =\n (1 - (m[1] * px + m[5] * py + m[9] * pz + m[13]) * iw) * 0.5 * height;\n z[i] = (m[2] * px + m[6] * py + m[10] * pz + m[14]) * iw;\n w[i] = cw;\n }\n return { x, y, z, w };\n};\n\nconst clamp255 = (v: number) => (v < 0 ? 0 : v > 255 ? 255 : Math.round(v));\n\nexport const createCanvas2d3D = (\n canvas: HTMLCanvasElement,\n): Renderer3D | null => {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return null;\n const styles = new Map<number, string>();\n const style = (r: number, g: number, b: number) => {\n const key = (clamp255(r) << 16) | (clamp255(g) << 8) | clamp255(b);\n let s = styles.get(key);\n if (s === undefined) {\n s = `rgb(${key >> 16},${(key >> 8) & 255},${key & 255})`;\n if (styles.size > 4096) styles.clear();\n styles.set(key, s);\n }\n return s;\n };\n // glow sprites by color (4 bits per channel); null: no offscreen canvas\n const sprites = new Map<number, HTMLCanvasElement | null>();\n const sprite = (r: number, g: number, b: number) => {\n const key =\n ((clamp255(r) >> 4) << 8) |\n ((clamp255(g) >> 4) << 4) |\n (clamp255(b) >> 4);\n let s = sprites.get(key);\n if (s === undefined) {\n s = makeSprite(\n canvas,\n ((key >> 8) & 15) * 17,\n ((key >> 4) & 15) * 17,\n (key & 15) * 17,\n );\n sprites.set(key, s);\n }\n return s;\n };\n\n const render = (items: readonly Item3D[], frame: Frame3D) => {\n const { width, height } = canvas;\n const dpr = frame.dpr;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, width, height);\n const ordered = drawOrder(items);\n const m = frame.viewProj;\n const [ambient, diffuse, specular, shininess] = frame.lighting;\n const L = frame.light;\n const fogR = frame.fog[0] * 255;\n const fogG = frame.fog[1] * 255;\n const fogB = frame.fog[2] * 255;\n\n // ---- collect the primitives\n const projected: (Projected | null)[] = [];\n // typed views of every item (floats and bytes of the same buffer)\n const floats: Float32Array[] = [];\n const bytes: Uint8Array[] = [];\n let capacity = 0;\n for (const item of ordered) {\n capacity += item.kind === \"mesh\" ? item.indices.length / 3 : item.count;\n }\n const depth = new Float32Array(capacity);\n const kind = new Uint8Array(capacity);\n const owner = new Uint16Array(capacity);\n const element = new Uint32Array(capacity);\n let n = 0;\n ordered.forEach((item, k) => {\n const raw = item.kind === \"mesh\" ? item.vertices : item.data;\n floats.push(new Float32Array(raw));\n bytes.push(new Uint8Array(raw));\n if (item.kind === \"mesh\") {\n const f32 = floats[k]!;\n const p = projectAll(m, f32, 7, 0, item.vertexCount, width, height);\n projected.push(p);\n const idx = item.indices;\n for (let t = 0; t + 2 < idx.length; t += 3) {\n const a = idx[t];\n const b = idx[t + 1];\n const c = idx[t + 2];\n if (p.w[a] <= 0 || p.w[b] <= 0 || p.w[c] <= 0) continue;\n depth[n] = (p.z[a] + p.z[b] + p.z[c]) / 3;\n kind[n] = TRIANGLE;\n owner[n] = k;\n element[n] = t;\n n++;\n }\n } else if (item.kind === \"points\") {\n const f32 = floats[k]!;\n const p = projectAll(m, f32, 5, 0, item.count, width, height);\n projected.push(p);\n for (let i = 0; i < item.count; i++) {\n if (p.w[i] <= 0) continue;\n depth[n] = p.z[i];\n kind[n] = POINT;\n owner[n] = k;\n element[n] = i;\n n++;\n }\n } else {\n const f32 = floats[k]!;\n // both ends: projected as two interleaved point lists\n const a = projectAll(m, f32, 7, 0, item.count, width, height);\n const b = projectAll(m, f32, 7, 3, item.count, width, height);\n projected.push({\n x: concat(a.x, b.x),\n y: concat(a.y, b.y),\n z: concat(a.z, b.z),\n w: concat(a.w, b.w),\n });\n const bias = item.bias * 5;\n for (let i = 0; i < item.count; i++) {\n if (a.w[i] <= 0 || b.w[i] <= 0) continue;\n depth[n] = (a.z[i] + b.z[i]) / 2 - bias;\n kind[n] = SEGMENT;\n owner[n] = k;\n element[n] = i;\n n++;\n }\n }\n });\n const order = new Uint32Array(n);\n for (let i = 0; i < n; i++) order[i] = i;\n order.sort((a, b) => depth[b] - depth[a]);\n\n // ---- draw back to front\n ctx.lineJoin = \"round\";\n ctx.lineCap = \"round\";\n let currentAlpha = -1;\n const alpha = (value: number) => {\n if (value !== currentAlpha) {\n ctx.globalAlpha = value;\n currentAlpha = value;\n }\n };\n let lighter = false;\n const composite = (add: boolean) => {\n if (add !== lighter) {\n ctx.globalCompositeOperation = add ? \"lighter\" : \"source-over\";\n lighter = add;\n }\n };\n const near = frame.distance - frame.radius;\n for (let o = 0; o < n; o++) {\n const i = order[o];\n const item = ordered[owner[i]];\n const p = projected[owner[i]];\n const f32 = floats[owner[i]];\n const u8 = bytes[owner[i]];\n if (!item || !p || !f32 || !u8) continue;\n const e = element[i];\n composite(item.kind === \"points\" && !!item.additive);\n if (item.kind === \"mesh\" && kind[i] === TRIANGLE) {\n const a = item.indices[e];\n const b = item.indices[e + 1];\n const c = item.indices[e + 2];\n // flat normal facing the camera\n const ax = f32[a * 7],\n ay = f32[a * 7 + 1],\n az = f32[a * 7 + 2];\n const ux = f32[b * 7] - ax,\n uy = f32[b * 7 + 1] - ay,\n uz = f32[b * 7 + 2] - az;\n const vx = f32[c * 7] - ax,\n vy = f32[c * 7 + 1] - ay,\n vz = f32[c * 7 + 2] - az;\n let nx = uy * vz - uz * vy;\n let ny = uz * vx - ux * vz;\n let nz = ux * vy - uy * vx;\n const len = Math.hypot(nx, ny, nz) || 1;\n nx /= len;\n ny /= len;\n nz /= len;\n let ex = frame.eye[0] - ax;\n let ey = frame.eye[1] - ay;\n let ez = frame.eye[2] - az;\n const el = Math.hypot(ex, ey, ez) || 1;\n ex /= el;\n ey /= el;\n ez /= el;\n if (nx * ex + ny * ey + nz * ez < 0) {\n nx = -nx;\n ny = -ny;\n nz = -nz;\n }\n const lambert = Math.max(0, nx * L[0] + ny * L[1] + nz * L[2]);\n let hx = L[0] + ex;\n let hy = L[1] + ey;\n let hz = L[2] + ez;\n const hl = Math.hypot(hx, hy, hz) || 1;\n hx /= hl;\n hy /= hl;\n hz /= hl;\n const spec =\n Math.pow(Math.max(0, nx * hx + ny * hy + nz * hz), shininess) *\n specular *\n 255;\n const light = ambient + diffuse * lambert;\n const ca = a * 28 + 24;\n const cb = b * 28 + 24;\n const cc = c * 28 + 24;\n const r = (u8[ca] + u8[cb] + u8[cc]) / 3;\n const g = (u8[ca + 1] + u8[cb + 1] + u8[cc + 1]) / 3;\n const bl = (u8[ca + 2] + u8[cb + 2] + u8[cc + 2]) / 3;\n const ac = (u8[ca + 3] + u8[cb + 3] + u8[cc + 3]) / 765;\n const fill = style(\n r * light + spec,\n g * light + spec,\n bl * light + spec,\n );\n alpha(item.opacity * ac);\n ctx.beginPath();\n ctx.moveTo(p.x[a], p.y[a]);\n ctx.lineTo(p.x[b], p.y[b]);\n ctx.lineTo(p.x[c], p.y[c]);\n ctx.closePath();\n ctx.fillStyle = fill;\n ctx.fill();\n if (item.opacity >= 1 && !item.transparent) {\n // hides the seams between neighbouring triangles\n ctx.strokeStyle = fill;\n ctx.lineWidth = 0.75;\n ctx.stroke();\n }\n } else if (item.kind === \"points\" && kind[i] === POINT) {\n const scale =\n item.perspective && !frame.orthographic\n ? Math.max(\n 0.5,\n Math.min(2, frame.distance / Math.max(p.w[e], 1e-6)),\n )\n : 1;\n const glow = item.style === POINT_GLOW;\n // thinned clouds: denser (and, glowing, larger) dots\n const thinned = Math.max(1, item.thinned ?? 1);\n const grow = glow ? Math.sqrt(Math.sqrt(thinned)) : 1;\n const raw = (Math.max(0, f32[e * 5 + 3]) * dpr * scale * grow) / 2;\n const radius = Math.max(raw, glow ? 0.75 : 0.5);\n const coverage = Math.min(1, (raw * raw) / (radius * radius));\n const c = e * 20 + 16;\n const wx = f32[e * 5] - frame.eye[0];\n const wy = f32[e * 5 + 1] - frame.eye[1];\n const wz = f32[e * 5 + 2] - frame.eye[2];\n const fog =\n Math.max(\n 0,\n Math.min(1, (Math.hypot(wx, wy, wz) - near) / (2 * frame.radius)),\n ) * 0.45;\n let r = u8[c];\n let g = u8[c + 1];\n let b = u8[c + 2];\n let a =\n item.opacity * (u8[c + 3] / 255) * coverage * Math.sqrt(thinned);\n if (item.additive) {\n a *= 1 - fog;\n } else {\n r += (fogR - r) * fog;\n g += (fogG - g) * fog;\n b += (fogB - b) * fog;\n }\n alpha(Math.min(1, a));\n const image = glow ? sprite(r, g, b) : null;\n if (image) {\n const reach = radius * GLOW_REACH;\n ctx.drawImage(\n image,\n p.x[e] - reach,\n p.y[e] - reach,\n reach * 2,\n reach * 2,\n );\n } else {\n ctx.fillStyle = style(r, g, b);\n if (radius < 1.5) {\n ctx.fillRect(\n p.x[e] - radius,\n p.y[e] - radius,\n radius * 2,\n radius * 2,\n );\n } else {\n ctx.beginPath();\n ctx.arc(p.x[e], p.y[e], radius, 0, Math.PI * 2);\n ctx.fill();\n }\n }\n } else if (item.kind === \"lines\" && kind[i] === SEGMENT) {\n const c = e * 28 + 24;\n const half = p.x.length / 2;\n alpha(item.opacity * (u8[c + 3] / 255));\n ctx.strokeStyle = style(u8[c], u8[c + 1], u8[c + 2]);\n ctx.lineWidth = Math.max(0.5, item.width * dpr);\n ctx.beginPath();\n ctx.moveTo(p.x[e], p.y[e]);\n ctx.lineTo(p.x[half + e], p.y[half + e]);\n ctx.stroke();\n }\n }\n ctx.globalAlpha = 1;\n composite(false);\n };\n\n return {\n kind: \"canvas2d\",\n canvas,\n resize(width, height) {\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n },\n render(items, frame) {\n render(items, frame);\n },\n destroy() {\n styles.clear();\n sprites.clear();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n },\n };\n};\n\nconst concat = (a: Float32Array, b: Float32Array) => {\n const out = new Float32Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n};\n\n/** A glow sprite of a color (`SPRITE` px, the halo filling it), or null */\nconst makeSprite = (\n canvas: HTMLCanvasElement,\n r: number,\n g: number,\n b: number,\n): HTMLCanvasElement | null => {\n const image = canvas.ownerDocument.createElement(\"canvas\");\n image.width = SPRITE;\n image.height = SPRITE;\n const ctx = image.getContext(\"2d\");\n if (!ctx || typeof ctx.createImageData !== \"function\") return null;\n const pixels = ctx.createImageData(SPRITE, SPRITE) as ImageData | undefined;\n if (!pixels) return null;\n const center = SPRITE / 2;\n const radius = center / GLOW_REACH;\n for (let y = 0; y < SPRITE; y++) {\n for (let x = 0; x < SPRITE; x++) {\n const d = Math.hypot(x + 0.5 - center, y + 0.5 - center);\n const [a, white] = glowProfile(d, radius);\n const o = (y * SPRITE + x) * 4;\n pixels.data[o] = r + (255 - r) * white;\n pixels.data[o + 1] = g + (255 - g) * white;\n pixels.data[o + 2] = b + (255 - b) * white;\n pixels.data[o + 3] = d < center ? a * 255 : 0;\n }\n }\n ctx.putImageData(pixels, 0, 0);\n return image;\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("../color.cjs"),t=require("../locale.cjs"),n=require("../scale.cjs"),r=require("../theme.cjs"),i=require("./colormap.cjs"),a=require("./detect.cjs"),o=require("./dom.cjs"),s=require("./labels.cjs"),c=require("./model.cjs"),l=require("./geometry.cjs"),u=require("./hover.cjs"),d=require("./math.cjs"),f=require("./overlay.cjs"),ee=require("./pick.cjs"),te=require("./sort.cjs");var ne=(e,t,n)=>{let r=t===1?e*16:t===2?e*400:e;return Math.exp(Math.max(-1,Math.min(1,r*(n?.01:.0025))))},p={ambient:.5,diffuse:.6,specular:.25,shininess:32},re=12,ie=.45,ae=5,oe=380,se=e=>d.clampCamera({azimuth:e?.azimuth??d.DEFAULT_CAMERA.azimuth,elevation:e?.elevation??d.DEFAULT_CAMERA.elevation,zoom:e?.zoom??d.DEFAULT_CAMERA.zoom,pan:[0,0],projection:e?.projection??d.DEFAULT_CAMERA.projection}),m=e=>({...e,pan:[e.pan[0],e.pan[1]]}),ce=(e,t)=>e.azimuth===t.azimuth&&e.elevation===t.elevation&&e.zoom===t.zoom&&e.pan[0]===t.pan[0]&&e.pan[1]===t.pan[1]&&e.projection===t.projection,le=(e,t,n)=>{let r=(t.azimuth-e.azimuth)%360;return r>180&&(r-=360),r<-180&&(r+=360),d.clampCamera({azimuth:e.azimuth+r*n,elevation:e.elevation+(t.elevation-e.elevation)*n,zoom:e.zoom*(t.zoom/e.zoom)**+n,pan:[e.pan[0]+(t.pan[0]-e.pan[0])*n,e.pan[1]+(t.pan[1]-e.pan[1])*n],projection:n<.5?e.projection:t.projection})},ue=(e,t,n)=>{let r=Math.max(30,Math.min(72,e*.08)),i=Math.max(14,Math.min(28,t*.05)),a=Math.max(30,Math.min(56,t*.1)),o=n?74:0,s={x:r,y:i,width:Math.max(10,e-r*2-o),height:Math.max(10,t-i-a)};if(!n)return{fit:s,bar:null};let c=Math.max(40,Math.min(260,t*.62));return{fit:s,bar:{x:e-66,y:(t-c)/2+8,w:12,h:c}}},de=(de,pe)=>{let h=de.ownerDocument,g=h.defaultView,_=o.createChart3DDom(de),v=_.stage,y=pe,b=r.readTheme(_.root,y.palette),me=0,x=!1,S=new Map,C=(e,t)=>{S.get(e)?.forEach(e=>e(t))},he=new Set,w=c.buildModel(y),T,E,ge=``,_e=0,ve=l.createGeometryBuilder(),D={items:[],targets:[],counts:[]},O=!0,k=ee.createPicker(),ye=te.createDepthSorter(),A=null,be=0,xe=()=>{},Se=new Promise(e=>{xe=e}),j=se(y.camera),Ce=JSON.stringify(y.camera??{}),M=m(j),N=null,P=0,F=!0,I=null,L=null,R=f.overlayStyle(b,fe(b)),z=null,B=null,V=null,H=null,we=!1,U=!0,W=0,G=typeof g?.matchMedia==`function`?g.matchMedia(`(prefers-reduced-motion: reduce)`):null,K=()=>{let e=y.interaction;if(e===!1)return null;let t=typeof e==`object`?e:{};return{rotate:t.rotate??!0,zoom:t.zoom??!0,wheel:t.wheel??`modifier`,pan:t.pan??!0,keyboard:t.keyboard??!0}},Te=()=>{let e=y.autoRotate;return e===!0?re:typeof e==`number`&&Number.isFinite(e)?e:0},Ee=()=>y.colorBar!==!1&&!!w.colorDomain,De=()=>({...y,series:y.series.map((e,t)=>{let n=e.id??String(t);return he.has(n)?{...e,hidden:!e.hidden}:e})}),Oe=t=>b.resolve?b.resolve(t,[.5,.5,.5,1]):e.parseColor(t)??[.5,.5,.5,1],ke=()=>{let t=`${JSON.stringify(y.colorScale??`viridis`)}|${me}`;(t!==ge||!E)&&(ge=t,E=i.colorLut(i.colorStops(y.colorScale,(t,n)=>b.resolve?b.resolve(t,n):e.parseColor(t)??n)),_e++);let n=b.palette.length?b.palette:[b.primary];T={series:w.series.map((e,t)=>e.color?Oe(e.color):n[t%n.length]??b.primary),resolve:Oe,lut:E,wire:[b.text[0],b.text[1],b.text[2],.38]}},q=()=>{w=c.buildModel(De()),ke(),O=!0,R=f.overlayStyle(b,fe(b)),je(),Me(),J(!0),z&&H&&Ue(H.x,H.y)},Ae=``,je=()=>{let t=y.legend,n=w.series.filter(e=>e.name).length,r=t===void 0?n>1:!!t,i=typeof t==`object`?t:{},a=i.toggle??!0,c=i.position===`bottom`,l=`${r}|${c}|${a}`;if(r&&w.series.forEach((t,n)=>{l+=`\n${t.id}\u0001${t.name}\u0001${e.toCss(T.series[n]??b.primary)}\u0001${t.hidden}`}),l===Ae)return;Ae=l;let u=[..._.legend.children].indexOf(h.activeElement);_.legend.replaceChildren(),_.legend.style.display=r?`flex`:`none`,r&&(_.legend.style.order=c?`1`:`0`,_.legend.style.padding=c?`8px 4px 0`:`0 4px 8px`,w.series.forEach((t,n)=>{if(!t.name)return;let r=h.createElement(a?`button`:`span`);r instanceof HTMLButtonElement&&(r.type=`button`,r.setAttribute(`aria-pressed`,String(!t.hidden)),r.addEventListener(`click`,()=>{he.has(t.id)?he.delete(t.id):he.add(t.id);let{labels:e}=w.locale;_.live.textContent=s.fill(t.hidden?e.shown:e.hidden,{name:t.name}),q()})),o.style(r,{display:`inline-flex`,alignItems:`center`,gap:`6px`,padding:`2px 4px`,margin:`0`,border:`0`,borderRadius:`4px`,background:`none`,font:`inherit`,color:`var(--text-secondary-color, #6b7280)`,cursor:a?`pointer`:`default`,opacity:t.hidden?`0.45`:`1`,textDecoration:t.hidden?`line-through`:`none`}),r.append(o.swatch(h,e.toCss(T.series[n]??b.primary),t.type!==`bar`&&t.type!==`surface`),h.createTextNode(t.name)),_.legend.appendChild(r)}),u>=0&&_.legend.children[u]?.focus())},Me=()=>{let{labels:e,count:t}=w.locale,n=w.series.map(e=>e.name).filter(Boolean).join(e.listSeparator);v.setAttribute(`aria-roledescription`,e.chart),v.setAttribute(`aria-label`,y.ariaLabel??(n?s.fill(e.chartNamed,{names:n}):e.chart)),K()?.keyboard?v.tabIndex=0:v.removeAttribute(`tabindex`),v.style.cursor=K()?.rotate?`grab`:`default`;let r=[];r.push(s.fill(e.seriesCount,{count:t(w.series.length)}));for(let n of w.series){let i=n.name||s.fill(e.series,{n:n.index+1}),a=n.type===`surface`?s.fill(e.grid,{rows:t(n.grid.rows),cols:t(n.grid.cols)}):n.type===`bar`?s.fill(e.bars,{count:t(n.bars.count)}):s.fill(n.type===`line`?e.vertices:e.points,{count:t(n.cols.count)});r.push(s.fill(n.hidden?e.seriesSummaryHidden:e.seriesSummary,{name:i,type:e[n.type],size:a}))}for(let t of[`x`,`y`,`z`]){let n=w[t],i=n.categories?n.categories.join(e.listSeparator):s.fill(e.range,{min:n.format(n.domain[0]),max:n.format(n.domain[1])});r.push(s.fill(n.title?e.axisTitled:e.axis,{axis:t.toUpperCase(),title:n.title,range:i}))}_.summary.textContent=r.join(` `)};function J(e=!0){e&&(F=!0),!(x||P||!g)&&(P=g.requestAnimationFrame(Fe))}let Ne=()=>Te()!==0&&U&&!we&&!Z&&!N&&!G?.matches&&h.visibilityState!==`hidden`,Pe=e=>{let t=[0,0,0];for(let n=0;n<3;n++)t[n]=-e.right[n]*.35+e.up[n]*.55-e.forward[n]*.7;return t[2]+=.35,d.normalize(t)};function Fe(e){if(P=0,x)return;let t=v.clientWidth,n=v.clientHeight;if(t<=0||n<=0)return;let r=g?.devicePixelRatio||1;if(N){let t=Math.min(1,(e-N.start)/oe),n=1-(1-t)**3;M=le(N.from,N.to,n),t>=1&&(M=m(N.to),N=null,C(`camera`,m(M))),F=!0}else if(Ne()){let t=W?Math.min(.1,(e-W)/1e3):0;t>0&&(M=d.clampCamera({...M,azimuth:M.azimuth-Te()*t}),F=!0),W=e}else W=0;o.sizeCanvas(_.background,t,n,r),o.sizeCanvas(_.foreground,t,n,r);let i=ue(t,n,Ee()),a=y.camera?.fov??32,s=[w.x.half,w.y.half,w.z.half],c=d.cameraFrame(M,s,t,n,i.fit,a);if(I=c,L=i,F){F=!1;let e=_.background.getContext(`2d`);if(e&&(e.setTransform(r,0,0,r,0,0),e.clearRect(0,0,t,n),y.box!==!1&&f.drawWalls(e,c,w,R)),A){O&&(D=ve(w,T,A.kind===`canvas2d`?l.CPU_BUDGET:l.GPU_BUDGET,_e),O=!1,k.reset());let e=Math.max(1,Math.round(t*r)),i=Math.max(1,Math.round(n*r));(A.canvas.width!==e||A.canvas.height!==i)&&A.resize(e,i),A.canvas.style.width=`${t}px`,A.canvas.style.height=`${n}px`;let a=y.lighting??{},o={viewProj:c.viewProj,eye:c.eye,light:Pe(c),orthographic:c.orthographic,distance:c.distance,radius:c.radius,width:e,height:i,dpr:r,lighting:[a.ambient??p.ambient,a.diffuse??p.diffuse,a.specular??p.specular,a.shininess??p.shininess],fog:b.background};A.render(A.kind===`canvas2d`?D.items:ye(D.items,o),o)}}Ie(c,i,t,n,r),(N||Ne())&&J(!0)}let Ie=(e,t,n,r,i)=>{let a=_.foreground.getContext(`2d`);if(a){if(a.setTransform(i,0,0,i,0,0),a.clearRect(0,0,n,r),y.box!==!1&&f.drawAxes(a,e,w,R,{left:4,top:4,right:t.bar?t.bar.x-10:n-4,bottom:r-4}),t.bar&&w.colorDomain){let e=typeof y.colorBar==`object`?y.colorBar:{};f.drawColorBar(a,t.bar,E,w.colorDomain,e.format??Le(),e.title??(w.colorFromZ?w.z.title:``),R,n)}if(z&&B){let t=u.highlightShape(D.targets,z,B.color);t&&f.drawHighlight(a,e,w,t,R)}}},Le=()=>{let e=w.colorDomain,{locale:t}=w;if(!e)return t.value;if(w.colorFromZ&&y.zAxis?.format)return y.zAxis.format;let r=n.tickStep(e[0],e[1],5);return r>0?t.ticks(r,Math.max(Math.abs(e[0]),Math.abs(e[1]))):t.value},Re=()=>y.tooltip!==!1,ze=()=>({x:v.offsetLeft,y:v.offsetTop}),Y=e=>{let t=e&&!O?u.hoverEvent(w,D.targets,e,T,ze()):null,n=t===null!=(B===null)||!!t&&!!B&&(t.seriesIndex!==B.seriesIndex||t.index!==B.index||t.type!==B.type);if(z=t?e:null,B=t,Be(),I&&L){let e=v.clientWidth,t=v.clientHeight;e>0&&t>0&&Ie(I,L,e,t,g?.devicePixelRatio||1)}n&&C(`hover`,t)},Be=()=>{let e=_.tooltip;if(!B||!z||!Re()){e.style.display=`none`;return}let t=typeof y.tooltip==`object`?y.tooltip.render:void 0,n=t?t(B):Ve(B);if(n===null){e.style.display=`none`;return}typeof n==`string`?e.textContent=n:e.replaceChildren(n),e.style.display=`block`;let r=v.clientWidth,i=v.clientHeight,a=e.offsetWidth,o=e.offsetHeight,s=z.x+16;s+a>r-4&&(s=z.x-16-a),s=Math.max(4,s);let c=Math.max(4,Math.min(i-o-4,z.y-o/2));e.style.transform=`translate(${Math.round(s)}px, ${Math.round(c)}px)`},Ve=e=>{let t=h.createDocumentFragment(),n=o.style(h.createElement(`div`),{display:`flex`,alignItems:`center`,gap:`6px`,fontWeight:`600`,marginBottom:`4px`,color:`var(--text-color, #1f2937)`});n.append(o.swatch(h,e.color,e.type!==`bar`),h.createTextNode(e.seriesName||s.fill(w.locale.labels.series,{n:e.seriesIndex+1}))),t.append(n);let r=typeof y.colorBar==`object`&&y.colorBar.title?y.colorBar.title:``;for(let n of u.tooltipRows(w,e,r)){let e=o.style(h.createElement(`div`),{display:`flex`,alignItems:`center`,gap:`8px`}),r=o.style(h.createElement(`span`),{flex:`1 1 auto`,color:`var(--text-secondary-color, #6b7280)`});r.textContent=n.name;let i=o.style(h.createElement(`span`),{fontWeight:n.name?`600`:`400`,fontVariantNumeric:`tabular-nums`,marginLeft:n.name?`12px`:`0`});i.textContent=n.value,n.name?e.append(r,i):e.append(i),t.append(e)}return t},He=(e,t)=>!I||O||!A?null:k.pick(D.targets,I,e,t),X=0,Ue=(e,t)=>{V={x:e,y:t},!X&&g&&(X=g.requestAnimationFrame(()=>{X=0;let e=V;V=null,!(!e||x||Z)&&Y(He(e.x,e.y))}))},Z=null,Q=new Map,We=e=>{let t=v.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}},Ge=()=>L?.fit.height??Math.max(1,v.clientHeight),$=(e,t=!0)=>{let n=d.clampCamera(e);ce(n,M)||(M=n,N=null,z&&Y(null),J(!0),t&&C(`camera`,m(M)))},Ke=e=>{if(G?.matches||!g){$(e);return}N={from:m(M),to:m(e),start:g.performance.now()},J(!0)},qe=()=>{let e=[...Q.values()],t=e[0]??{x:0,y:0},n=e[1]??t;return{distance:Math.hypot(t.x-n.x,t.y-n.y),center:{x:(t.x+n.x)/2,y:(t.y+n.y)/2}}},Je=(e,t)=>{Z={mode:e,pointers:Q,start:m(M),origin:t,distance:e===`pinch`?qe().distance:0,moved:!1},N=null,z&&Y(null),v.style.cursor=e===`rotate`?`grabbing`:`move`},Ye=e=>{let t=K();if(!t)return;let n=We(e);if(Q.set(e.pointerId,n),v.setPointerCapture?.(e.pointerId),Q.size===2&&(t.zoom||t.pan)){Je(`pinch`,qe().center);return}if(Q.size>1)return;let r=t.pan&&(e.button===2||e.shiftKey||e.button===1);r?Je(`pan`,n):t.rotate&&e.button===0?Je(`rotate`,n):Z=null,(r||e.button===1)&&e.preventDefault()},Xe=e=>{let t=We(e);if(H=t,Q.has(e.pointerId)&&Q.set(e.pointerId,t),!Z){if(e.pointerType===`touch`&&Q.size)return;(Re()||S.get(`hover`)?.size||S.get(`click`)?.size)&&Ue(t.x,t.y);return}let n=K();if(!n)return;if(Z.mode===`pinch`){let{distance:e,center:t}=qe(),r=Z.distance>0?e/Z.distance:1,i=Ge();$({...Z.start,zoom:n.zoom?Z.start.zoom*r:Z.start.zoom,pan:n.pan?[Z.start.pan[0]+(t.x-Z.origin.x)/i,Z.start.pan[1]+(t.y-Z.origin.y)/i]:Z.start.pan}),Z.moved=!0;return}let r=t.x-Z.origin.x,i=t.y-Z.origin.y;if(!(!Z.moved&&Math.hypot(r,i)<3)){if(Z.moved=!0,Z.mode===`pan`){let e=Ge();$({...Z.start,pan:[Z.start.pan[0]+r/e,Z.start.pan[1]+i/e]})}else $({...Z.start,azimuth:Z.start.azimuth-r*ie,elevation:Z.start.elevation+i*ie})}},Ze=e=>{let t=Z;if(Q.delete(e.pointerId),v.hasPointerCapture?.(e.pointerId)&&v.releasePointerCapture(e.pointerId),Q.size===1&&t?.mode===`pinch`){let e=[...Q.values()][0];Je(`rotate`,e);return}if(!Q.size){if(Z=null,v.style.cursor=K()?.rotate?`grab`:`default`,t&&!t.moved&&e.button===0){let t=We(e),n=He(t.x,t.y);Y(n),B&&C(`click`,B)}Ne()&&J(!1)}},Qe=e=>{Q.delete(e.pointerId),Q.size||(Z=null,v.style.cursor=K()?.rotate?`grab`:`default`)},$e=e=>{e.pointerType!==`touch`&&(we=!0)},et=()=>{we=!1,V=null,H=null,!Z&&z&&Y(null),Ne()&&J(!1)},tt=e=>{let t=K();if(!t?.zoom)return;let n=e.ctrlKey&&!e.metaKey;if(t.wheel===`modifier`&&!e.ctrlKey&&!e.metaKey)return;e.preventDefault();let r=ne(e.deltaY,e.deltaMode,n),i=M.zoom/r,a=L;if(!a){$({...M,zoom:i});return}let o=d.clampCamera({...M,zoom:i}),s=o.zoom/M.zoom,c=a.fit.height,l=a.fit.x+a.fit.width/2+M.pan[0]*c,u=a.fit.y+a.fit.height/2+M.pan[1]*c,f=We(e),ee=f.x-s*(f.x-l),te=f.y-s*(f.y-u);$({...o,pan:[M.pan[0]+(ee-l)/c,M.pan[1]+(te-u)/c]}),z&&Y(null)},nt=e=>{K()&&(e.preventDefault(),Ke(j))},rt=e=>{K()?.pan&&e.preventDefault()},it=()=>{let e;try{e=v.matches(`:focus-visible`)}catch{e=!0}e&&(v.style.boxShadow=`0 0 0 2px var(--primary-color, #4f46e5)`)},at=()=>{v.style.boxShadow=``},ot=e=>{let t=K();if(!t?.keyboard)return;let n=null,r=e.shiftKey?15:ae;switch(e.key){case`ArrowLeft`:t.rotate&&(n={...M,azimuth:M.azimuth+r});break;case`ArrowRight`:t.rotate&&(n={...M,azimuth:M.azimuth-r});break;case`ArrowUp`:t.rotate&&(n={...M,elevation:M.elevation+r});break;case`ArrowDown`:t.rotate&&(n={...M,elevation:M.elevation-r});break;case`+`:case`=`:t.zoom&&(n={...M,zoom:M.zoom*1.2});break;case`-`:case`_`:t.zoom&&(n={...M,zoom:M.zoom/1.2});break;case`0`:case`Home`:e.preventDefault(),Ke(j);return;case`Escape`:H=null,z&&(e.preventDefault(),Y(null));return;default:return}n&&(e.preventDefault(),$(n))};v.addEventListener(`pointerdown`,Ye),v.addEventListener(`pointermove`,Xe),v.addEventListener(`pointerup`,Ze),v.addEventListener(`pointercancel`,Qe),v.addEventListener(`pointerenter`,$e),v.addEventListener(`pointerleave`,et),v.addEventListener(`wheel`,tt,{passive:!1}),v.addEventListener(`dblclick`,nt),v.addEventListener(`contextmenu`,rt),v.addEventListener(`keydown`,ot),v.addEventListener(`focus`,it),v.addEventListener(`blur`,at);let st=typeof ResizeObserver==`function`?new ResizeObserver(()=>{k.reset(),J(!0)}):null;st?.observe(v);let ct=typeof IntersectionObserver==`function`?new IntersectionObserver(e=>{let t=e[e.length-1];if(!t)return;let n=U;U=t.isIntersecting,U&&!n&&J(!0)}):null;ct?.observe(v);let lt=()=>{h.visibilityState!==`hidden`&&J(!1)};h.addEventListener(`visibilitychange`,lt);let ut=null,dt=()=>{ft(),J(!0)},ft=()=>{ut?.removeEventListener?.(`change`,dt),ut=typeof g?.matchMedia==`function`?g.matchMedia(`(resolution: ${g.devicePixelRatio||1}dppx)`):null,ut?.addEventListener?.(`change`,dt)};ft();let pt=()=>J(!1);G?.addEventListener?.(`change`,pt);let mt=()=>{if(x)return;let e=r.readTheme(_.root,y.palette);r.themeColorsChanged(b,e)&&me++,b=e,q()},ht=r.watchTheme(mt),gt=typeof g?.MutationObserver==`function`?new g.MutationObserver(()=>{!x&&t.resolveLocale(y.locale)!==w.locale.locale&&q()}):null;gt?.observe(h.documentElement,{attributes:!0,attributeFilter:[`lang`]});let _t=async(e=new Set)=>{let t=++be,n=await a.createRenderer3D(y.renderer??`auto`,()=>{let e=o.layerCanvas(h);return e.className=`minerva-chart-data`,e},t=>{x||A?.kind!==t||(A.destroy(),A.canvas.remove(),A=null,_t(new Set([...e,t])))},e);if(x||t!==be){n?.destroy();return}A&&(A.destroy(),A.canvas.remove()),A=n,O=!0,n?(_.root.dataset.renderer=n.kind,v.insertBefore(n.canvas,_.foreground),C(`renderer`,n.kind)):delete _.root.dataset.renderer,xe(n?.kind??null),J(!0)};return ke(),q(),_t(),{setOptions(e){if(x)return;let t=y;y=e,(e.palette??[]).join()!==(t.palette??[]).join()&&(b=r.readTheme(_.root,e.palette),me++);let n=JSON.stringify(e.camera??{});n!==Ce&&(Ce=n,j=se(e.camera),$({...j})),(e.renderer??`auto`)!==(t.renderer??`auto`)&&_t(),q()},resize(){k.reset(),J(!0)},resetCamera(){$(m(j))},getCamera:()=>m(M),setCamera(e){x||$({azimuth:e.azimuth??M.azimuth,elevation:e.elevation??M.elevation,zoom:e.zoom??M.zoom,pan:e.pan?[e.pan[0],e.pan[1]]:M.pan,projection:e.projection??M.projection})},getRenderer:()=>A?.kind??null,ready:Se,refreshTheme:mt,on(e,t){let n=S.get(e);return n||(n=new Set,S.set(e,n)),n.add(t),()=>{n.delete(t)}},destroy(){x||(x=!0,be++,P&&g?.cancelAnimationFrame(P),X&&g?.cancelAnimationFrame(X),P=0,X=0,st?.disconnect(),ct?.disconnect(),h.removeEventListener(`visibilitychange`,lt),ut?.removeEventListener?.(`change`,dt),G?.removeEventListener?.(`change`,pt),ht(),gt?.disconnect(),v.removeEventListener(`pointerdown`,Ye),v.removeEventListener(`pointermove`,Xe),v.removeEventListener(`pointerup`,Ze),v.removeEventListener(`pointercancel`,Qe),v.removeEventListener(`pointerenter`,$e),v.removeEventListener(`pointerleave`,et),v.removeEventListener(`wheel`,tt),v.removeEventListener(`dblclick`,nt),v.removeEventListener(`contextmenu`,rt),v.removeEventListener(`keydown`,ot),v.removeEventListener(`focus`,it),v.removeEventListener(`blur`,at),A?.destroy(),A=null,S.clear(),xe(null),_.root.remove())}}};function fe(t){return e.luminance(t.background)<.4||e.luminance(t.text)>.6}exports.createChart3D=de,exports.initialCamera=se,exports.stageLayout=ue;
2
+ //# sourceMappingURL=chart.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.cjs","names":["clampCamera","DEFAULT_CAMERA","createChart3DDom","readTheme","buildModel","createGeometryBuilder","createPicker","createDepthSorter","overlayStyle","parseColor","colorLut","colorStops","toCss","fill","swatch","normalize","cameraFrame","CPU_BUDGET","GPU_BUDGET","highlightShape","tickStep","hoverEvent","style","tooltipRows","themeColorsChanged","watchTheme","resolveLocale","createRenderer3D","layerCanvas","luminance","require_color","require_locale","require_scale","require_theme","require_colormap","require_detect","require_dom","require_labels","require_model","require_geometry","require_hover","require_math","require_overlay","require_pick","require_sort","wheelFactor","pixels","deltaMode","deltaY","pinch","DEFAULT_LIGHTING","ROTATE_SPEED","DRAG_DEGREES","KEY_DEGREES","TWEEN_MS","initialCamera","camera","copyCamera","c","sameCamera","a","b","lerpCamera","da","t","stageLayout","side","width","top","height","bottom","barSpace","colorBar","fit","h","createChart3D","doc","container","win","dom","stage","options","initialOptions","theme","themeVersion","destroyed","listeners","emit","type","fn","event","toggled","model","colors","lut","lutKey","lutId","buildGeometry","geometry","geometryDirty","picker","sortTransparent","renderer","rendererToken","resolveReady","ready","resolve","homeCamera","cameraKey","tween","frameId","dataDirty","lastFrame","lastLayout","overlay","isDark","hoverHit","hoverEvt","pendingHover","lastPointer","pointerInside","visible","lastRotate","reducedMotion","interaction","o","rotateSpeed","showsColorBar","effectiveOptions","id","s","i","resolveColor","value","refreshColors","key","f","palette","m","rebuild","renderLegend","updateAccessibility","invalidate","scheduleHover","legendKey","named","show","config","toggle","focused","item","labels","names","lines","count","name","size","axis","range","data","frame","rotating","drag","lightDirection","v","dpr","time","eased","dt","layout","fov","half","bg","w","l","frame3d","drawForeground","fg","colorBarFormat","shape","d","locale","step","tooltipEnabled","stageOffset","setHover","hit","changed","renderTooltip","tip","custom","content","defaultTooltip","tw","th","x","y","fragment","header","valueName","row","el","n","pickAt","hoverFrame","p","pointers","local","r","fitHeight","setCameraInternal","clamped","next","notify","animateTo","target","pinchInfo","pts","startDrag","mode","onPointerDown","ia","pan","onPointerMove","scale","distance","center","dx","dy","onPointerUp","wasDrag","rest","onPointerCancel","onPointerEnter","onPointerLeave","onWheel","factor","zoom","ratio","cx","cy","nx","ny","onDoubleClick","onContextMenu","onFocus","keyboard","onBlur","onKeyDown","resizeObserver","intersection","entry","entries","was","onVisibility","dprQuery","onDprChange","watchDpr","onMotionChange","refreshTheme","unwatchTheme","langObserver","initRenderer","token","canvas","kind","exclude","previous","set","listener"],"sources":["../../../../../charts/src/engine/three-d/chart.ts"],"sourcesContent":["// createChart3D: 3D scatter / surface / bar / line charts. The data layer\n// is drawn by a GPU backend (WebGPU -> WebGL2 -> WebGL) or by Canvas2D (CPU\n// projection, painter's algorithm); walls, labels, color bar and hover\n// highlight are 2D canvases around it. Frames are drawn on demand: the only\n// animation loop is the optional auto rotation (paused off-screen, while\n// hovered and with prefers-reduced-motion).\n\nimport { luminance, parseColor, toCss, type Rgba } from \"../color\";\nimport { resolveLocale } from \"../locale\";\nimport { tickStep } from \"../scale\";\nimport {\n readTheme,\n themeColorsChanged,\n watchTheme,\n type ChartTheme,\n} from \"../theme\";\nimport type { ChartRendererKind } from \"../types\";\nimport { colorLut, colorStops, type ColorLut } from \"./colormap\";\nimport { createRenderer3D } from \"./detect\";\nimport {\n createChart3DDom,\n layerCanvas,\n sizeCanvas,\n style,\n swatch,\n} from \"./dom\";\nimport {\n CPU_BUDGET,\n GPU_BUDGET,\n createGeometryBuilder,\n type Geometry,\n type GeometryColors,\n} from \"./geometry\";\nimport { highlightShape, hoverEvent, tooltipRows } from \"./hover\";\nimport { fill } from \"./labels\";\nimport {\n DEFAULT_CAMERA,\n cameraFrame,\n clampCamera,\n normalize,\n type CameraFrame,\n type FitRect,\n type Vec3,\n} from \"./math\";\nimport { buildModel, type Model3D } from \"./model\";\nimport {\n drawAxes,\n drawColorBar,\n drawHighlight,\n drawWalls,\n overlayStyle,\n type HighlightShape,\n type OverlayStyle,\n} from \"./overlay\";\nimport { createPicker, type PickHit } from \"./pick\";\nimport type { Frame3D, Renderer3D } from \"./render-types\";\nimport { createDepthSorter } from \"./sort\";\nimport type {\n Chart3DCameraOptions,\n Chart3DCameraState,\n Chart3DEventMap,\n Chart3DHoverEvent,\n Chart3DInstance,\n Chart3DInteractionOptions,\n Chart3DOptions,\n} from \"./types\";\n\n/** Zoom factor of a wheel event (same feel as the 2D charts) */\nconst wheelFactor = (deltaY: number, deltaMode: number, pinch: boolean) => {\n const pixels =\n deltaMode === 1 ? deltaY * 16 : deltaMode === 2 ? deltaY * 400 : deltaY;\n const speed = pinch ? 0.01 : 0.0025;\n return Math.exp(Math.max(-1, Math.min(1, pixels * speed)));\n};\n\nconst DEFAULT_LIGHTING = {\n ambient: 0.5,\n diffuse: 0.6,\n specular: 0.25,\n shininess: 32,\n};\n\nconst ROTATE_SPEED = 12;\nconst DRAG_DEGREES = 0.45;\nconst KEY_DEGREES = 5;\nconst TWEEN_MS = 380;\n\n/** Camera of the options (also the one restored by a reset) */\nexport const initialCamera = (\n camera: Chart3DCameraOptions | undefined,\n): Chart3DCameraState =>\n clampCamera({\n azimuth: camera?.azimuth ?? DEFAULT_CAMERA.azimuth,\n elevation: camera?.elevation ?? DEFAULT_CAMERA.elevation,\n zoom: camera?.zoom ?? DEFAULT_CAMERA.zoom,\n pan: [0, 0],\n projection: camera?.projection ?? DEFAULT_CAMERA.projection,\n });\n\nconst copyCamera = (c: Chart3DCameraState): Chart3DCameraState => ({\n ...c,\n pan: [c.pan[0], c.pan[1]],\n});\n\nconst sameCamera = (a: Chart3DCameraState, b: Chart3DCameraState) =>\n a.azimuth === b.azimuth &&\n a.elevation === b.elevation &&\n a.zoom === b.zoom &&\n a.pan[0] === b.pan[0] &&\n a.pan[1] === b.pan[1] &&\n a.projection === b.projection;\n\n/** Interpolated camera (shortest way around for the azimuth) */\nconst lerpCamera = (\n a: Chart3DCameraState,\n b: Chart3DCameraState,\n t: number,\n): Chart3DCameraState => {\n let da = (b.azimuth - a.azimuth) % 360;\n if (da > 180) da -= 360;\n if (da < -180) da += 360;\n return clampCamera({\n azimuth: a.azimuth + da * t,\n elevation: a.elevation + (b.elevation - a.elevation) * t,\n zoom: a.zoom * Math.pow(b.zoom / a.zoom, t),\n pan: [\n a.pan[0] + (b.pan[0] - a.pan[0]) * t,\n a.pan[1] + (b.pan[1] - a.pan[1]) * t,\n ],\n projection: t < 0.5 ? a.projection : b.projection,\n });\n};\n\n/** Layout of the stage: area the box is fitted into and the color bar */\nexport const stageLayout = (\n width: number,\n height: number,\n colorBar: boolean,\n): {\n fit: FitRect;\n bar: { x: number; y: number; w: number; h: number } | null;\n} => {\n const side = Math.max(30, Math.min(72, width * 0.08));\n const top = Math.max(14, Math.min(28, height * 0.05));\n const bottom = Math.max(30, Math.min(56, height * 0.1));\n const barSpace = colorBar ? 74 : 0;\n const fit: FitRect = {\n x: side,\n y: top,\n width: Math.max(10, width - side * 2 - barSpace),\n height: Math.max(10, height - top - bottom),\n };\n if (!colorBar) return { fit, bar: null };\n const h = Math.max(40, Math.min(260, height * 0.62));\n return {\n fit,\n bar: { x: width - 66, y: (height - h) / 2 + 8, w: 12, h },\n };\n};\n\nexport const createChart3D = (\n container: HTMLElement,\n initialOptions: Chart3DOptions,\n): Chart3DInstance => {\n const doc = container.ownerDocument;\n const win = doc.defaultView;\n const dom = createChart3DDom(container);\n const stage = dom.stage;\n let options = initialOptions;\n let theme: ChartTheme = readTheme(dom.root, options.palette);\n let themeVersion = 0;\n let destroyed = false;\n\n const listeners = new Map<keyof Chart3DEventMap, Set<(e: never) => void>>();\n const emit = <K extends keyof Chart3DEventMap>(\n type: K,\n event: Chart3DEventMap[K],\n ) => {\n listeners\n .get(type)\n ?.forEach((fn) => (fn as (e: Chart3DEventMap[K]) => void)(event));\n };\n\n // ------------------------------------------------------------- state\n\n /** Series whose visibility the legend flipped (ids) */\n const toggled = new Set<string>();\n let model: Model3D = buildModel(options);\n let colors: GeometryColors;\n let lut: ColorLut;\n let lutKey = \"\";\n let lutId = 0;\n const buildGeometry = createGeometryBuilder();\n let geometry: Geometry = { items: [], targets: [], counts: [] };\n let geometryDirty = true;\n const picker = createPicker();\n const sortTransparent = createDepthSorter();\n\n let renderer: Renderer3D | null = null;\n let rendererToken = 0;\n let resolveReady: (kind: ChartRendererKind | null) => void = () => {};\n const ready = new Promise<ChartRendererKind | null>((resolve) => {\n resolveReady = resolve;\n });\n\n let homeCamera = initialCamera(options.camera);\n let cameraKey = JSON.stringify(options.camera ?? {});\n let camera = copyCamera(homeCamera);\n let tween: {\n from: Chart3DCameraState;\n to: Chart3DCameraState;\n start: number;\n } | null = null;\n\n let frameId = 0;\n let dataDirty = true;\n let lastFrame: CameraFrame | null = null;\n let lastLayout: ReturnType<typeof stageLayout> | null = null;\n let overlay: OverlayStyle = overlayStyle(theme, isDark(theme));\n\n let hoverHit: PickHit | null = null;\n let hoverEvt: Chart3DHoverEvent | null = null;\n let pendingHover: { x: number; y: number } | null = null;\n let lastPointer: { x: number; y: number } | null = null;\n let pointerInside = false;\n let visible = true;\n let lastRotate = 0;\n\n const reducedMotion =\n typeof win?.matchMedia === \"function\"\n ? win.matchMedia(\"(prefers-reduced-motion: reduce)\")\n : null;\n\n // ------------------------------------------------------------ options\n\n const interaction = (): Required<Chart3DInteractionOptions> | null => {\n const o = options.interaction;\n if (o === false) return null;\n const c = typeof o === \"object\" ? o : {};\n return {\n rotate: c.rotate ?? true,\n zoom: c.zoom ?? true,\n wheel: c.wheel ?? \"modifier\",\n pan: c.pan ?? true,\n keyboard: c.keyboard ?? true,\n };\n };\n\n const rotateSpeed = () => {\n const a = options.autoRotate;\n if (a === true) return ROTATE_SPEED;\n return typeof a === \"number\" && Number.isFinite(a) ? a : 0;\n };\n\n const showsColorBar = () => {\n const o = options.colorBar;\n if (o === false) return false;\n return !!model.colorDomain;\n };\n\n const effectiveOptions = (): Chart3DOptions => ({\n ...options,\n series: options.series.map((s, i) => {\n const id = s.id ?? String(i);\n return toggled.has(id) ? { ...s, hidden: !s.hidden } : s;\n }),\n });\n\n const resolveColor = (value: string): Rgba =>\n theme.resolve\n ? theme.resolve(value, [0.5, 0.5, 0.5, 1])\n : (parseColor(value) ?? [0.5, 0.5, 0.5, 1]);\n\n const refreshColors = () => {\n const key = `${JSON.stringify(options.colorScale ?? \"viridis\")}|${themeVersion}`;\n if (key !== lutKey || !lut) {\n lutKey = key;\n lut = colorLut(\n colorStops(options.colorScale, (c, f) =>\n theme.resolve ? theme.resolve(c, f) : (parseColor(c) ?? f),\n ),\n );\n lutId++;\n }\n const palette = theme.palette.length ? theme.palette : [theme.primary];\n colors = {\n series: model.series.map((m, i) =>\n m.color\n ? resolveColor(m.color)\n : (palette[i % palette.length] ?? theme.primary),\n ),\n resolve: resolveColor,\n lut,\n wire: [theme.text[0], theme.text[1], theme.text[2], 0.38],\n };\n };\n\n const rebuild = () => {\n model = buildModel(effectiveOptions());\n refreshColors();\n geometryDirty = true;\n overlay = overlayStyle(theme, isDark(theme));\n renderLegend();\n updateAccessibility();\n invalidate(true);\n // the hovered item may have moved (live data): pick it again after the frame\n if (hoverHit && lastPointer) scheduleHover(lastPointer.x, lastPointer.y);\n };\n\n // ------------------------------------------------------------- legend\n\n let legendKey = \"\";\n const renderLegend = () => {\n const o = options.legend;\n const named = model.series.filter((s) => s.name).length;\n const show = o === undefined ? named > 1 : !!o;\n const config = typeof o === \"object\" ? o : {};\n const toggle = config.toggle ?? true;\n const bottom = config.position === \"bottom\";\n let key = `${show}|${bottom}|${toggle}`;\n if (show) {\n model.series.forEach((s, i) => {\n key += `\\n${s.id}\\u0001${s.name}\\u0001${toCss(colors.series[i] ?? theme.primary)}\\u0001${s.hidden}`;\n });\n }\n if (key === legendKey) return;\n legendKey = key;\n const focused = [...dom.legend.children].indexOf(\n doc.activeElement as Element,\n );\n dom.legend.replaceChildren();\n dom.legend.style.display = show ? \"flex\" : \"none\";\n if (!show) return;\n dom.legend.style.order = bottom ? \"1\" : \"0\";\n dom.legend.style.padding = bottom ? \"8px 4px 0\" : \"0 4px 8px\";\n model.series.forEach((s, i) => {\n if (!s.name) return;\n const item = doc.createElement(toggle ? \"button\" : \"span\");\n if (item instanceof HTMLButtonElement) {\n item.type = \"button\";\n item.setAttribute(\"aria-pressed\", String(!s.hidden));\n item.addEventListener(\"click\", () => {\n if (toggled.has(s.id)) toggled.delete(s.id);\n else toggled.add(s.id);\n const { labels } = model.locale;\n dom.live.textContent = fill(s.hidden ? labels.shown : labels.hidden, {\n name: s.name,\n });\n rebuild();\n });\n }\n style(item, {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"6px\",\n padding: \"2px 4px\",\n margin: \"0\",\n border: \"0\",\n borderRadius: \"4px\",\n background: \"none\",\n font: \"inherit\",\n color: \"var(--text-secondary-color, #6b7280)\",\n cursor: toggle ? \"pointer\" : \"default\",\n opacity: s.hidden ? \"0.45\" : \"1\",\n textDecoration: s.hidden ? \"line-through\" : \"none\",\n });\n item.append(\n swatch(\n doc,\n toCss(colors.series[i] ?? theme.primary),\n s.type !== \"bar\" && s.type !== \"surface\",\n ),\n doc.createTextNode(s.name),\n );\n dom.legend.appendChild(item);\n });\n if (focused >= 0)\n (dom.legend.children[focused] as HTMLElement | undefined)?.focus();\n };\n\n // ------------------------------------------------------ accessibility\n\n const updateAccessibility = () => {\n const { labels, count } = model.locale;\n const names = model.series\n .map((s) => s.name)\n .filter(Boolean)\n .join(labels.listSeparator);\n stage.setAttribute(\"aria-roledescription\", labels.chart);\n stage.setAttribute(\n \"aria-label\",\n options.ariaLabel ??\n (names ? fill(labels.chartNamed, { names }) : labels.chart),\n );\n const keyboard = interaction()?.keyboard;\n if (keyboard) stage.tabIndex = 0;\n else stage.removeAttribute(\"tabindex\");\n stage.style.cursor = interaction()?.rotate ? \"grab\" : \"default\";\n const lines: string[] = [];\n lines.push(fill(labels.seriesCount, { count: count(model.series.length) }));\n for (const m of model.series) {\n const name = m.name || fill(labels.series, { n: m.index + 1 });\n const size =\n m.type === \"surface\"\n ? fill(labels.grid, {\n rows: count(m.grid.rows),\n cols: count(m.grid.cols),\n })\n : m.type === \"bar\"\n ? fill(labels.bars, { count: count(m.bars.count) })\n : fill(m.type === \"line\" ? labels.vertices : labels.points, {\n count: count(m.cols.count),\n });\n lines.push(\n fill(m.hidden ? labels.seriesSummaryHidden : labels.seriesSummary, {\n name,\n type: labels[m.type],\n size,\n }),\n );\n }\n for (const key of [\"x\", \"y\", \"z\"] as const) {\n const axis = model[key];\n const range = axis.categories\n ? axis.categories.join(labels.listSeparator)\n : fill(labels.range, {\n min: axis.format(axis.domain[0]),\n max: axis.format(axis.domain[1]),\n });\n lines.push(\n fill(axis.title ? labels.axisTitled : labels.axis, {\n axis: key.toUpperCase(),\n title: axis.title,\n range,\n }),\n );\n }\n dom.summary.textContent = lines.join(\" \");\n };\n\n // -------------------------------------------------------------- frame\n\n function invalidate(data = true) {\n if (data) dataDirty = true;\n if (destroyed || frameId || !win) return;\n frameId = win.requestAnimationFrame(frame);\n }\n\n const rotating = () =>\n rotateSpeed() !== 0 &&\n visible &&\n !pointerInside &&\n !drag &&\n !tween &&\n !reducedMotion?.matches &&\n !(doc.visibilityState === \"hidden\");\n\n const lightDirection = (f: CameraFrame): Vec3 => {\n // a headlight from the upper left, slightly raised towards the sky\n const v: Vec3 = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n v[i] = -f.right[i]! * 0.35 + f.up[i]! * 0.55 - f.forward[i]! * 0.7;\n }\n v[2] += 0.35;\n return normalize(v);\n };\n\n function frame(time: number) {\n frameId = 0;\n if (destroyed) return;\n const width = stage.clientWidth;\n const height = stage.clientHeight;\n if (width <= 0 || height <= 0) return;\n const dpr = win?.devicePixelRatio || 1;\n // camera animations\n if (tween) {\n const t = Math.min(1, (time - tween.start) / TWEEN_MS);\n const eased = 1 - Math.pow(1 - t, 3);\n camera = lerpCamera(tween.from, tween.to, eased);\n if (t >= 1) {\n camera = copyCamera(tween.to);\n tween = null;\n emit(\"camera\", copyCamera(camera));\n }\n dataDirty = true;\n } else if (rotating()) {\n const dt = lastRotate ? Math.min(0.1, (time - lastRotate) / 1000) : 0;\n if (dt > 0) {\n camera = clampCamera({\n ...camera,\n azimuth: camera.azimuth - rotateSpeed() * dt,\n });\n dataDirty = true;\n }\n lastRotate = time;\n } else {\n lastRotate = 0;\n }\n\n sizeCanvas(dom.background, width, height, dpr);\n sizeCanvas(dom.foreground, width, height, dpr);\n const layout = stageLayout(width, height, showsColorBar());\n const fov = options.camera?.fov ?? 32;\n const half: Vec3 = [model.x.half, model.y.half, model.z.half];\n const f = cameraFrame(camera, half, width, height, layout.fit, fov);\n lastFrame = f;\n lastLayout = layout;\n\n if (dataDirty) {\n dataDirty = false;\n const bg = dom.background.getContext(\"2d\");\n if (bg) {\n bg.setTransform(dpr, 0, 0, dpr, 0, 0);\n bg.clearRect(0, 0, width, height);\n if (options.box !== false) drawWalls(bg, f, model, overlay);\n }\n if (renderer) {\n if (geometryDirty) {\n geometry = buildGeometry(\n model,\n colors,\n renderer.kind === \"canvas2d\" ? CPU_BUDGET : GPU_BUDGET,\n lutId,\n );\n geometryDirty = false;\n picker.reset();\n }\n const w = Math.max(1, Math.round(width * dpr));\n const h = Math.max(1, Math.round(height * dpr));\n if (renderer.canvas.width !== w || renderer.canvas.height !== h)\n renderer.resize(w, h);\n renderer.canvas.style.width = `${width}px`;\n renderer.canvas.style.height = `${height}px`;\n const l = options.lighting ?? {};\n const frame3d: Frame3D = {\n viewProj: f.viewProj,\n eye: f.eye,\n light: lightDirection(f),\n orthographic: f.orthographic,\n distance: f.distance,\n radius: f.radius,\n width: w,\n height: h,\n dpr,\n lighting: [\n l.ambient ?? DEFAULT_LIGHTING.ambient,\n l.diffuse ?? DEFAULT_LIGHTING.diffuse,\n l.specular ?? DEFAULT_LIGHTING.specular,\n l.shininess ?? DEFAULT_LIGHTING.shininess,\n ],\n fog: theme.background,\n };\n renderer.render(\n renderer.kind === \"canvas2d\"\n ? geometry.items\n : sortTransparent(geometry.items, frame3d),\n frame3d,\n );\n }\n }\n drawForeground(f, layout, width, height, dpr);\n if (tween || rotating()) invalidate(true);\n }\n\n const drawForeground = (\n f: CameraFrame,\n layout: ReturnType<typeof stageLayout>,\n width: number,\n height: number,\n dpr: number,\n ) => {\n const fg = dom.foreground.getContext(\"2d\");\n if (!fg) return;\n fg.setTransform(dpr, 0, 0, dpr, 0, 0);\n fg.clearRect(0, 0, width, height);\n if (options.box !== false) {\n drawAxes(fg, f, model, overlay, {\n left: 4,\n top: 4,\n right: layout.bar ? layout.bar.x - 10 : width - 4,\n bottom: height - 4,\n });\n }\n if (layout.bar && model.colorDomain) {\n const o = typeof options.colorBar === \"object\" ? options.colorBar : {};\n drawColorBar(\n fg,\n layout.bar,\n lut,\n model.colorDomain,\n o.format ?? colorBarFormat(),\n o.title ?? (model.colorFromZ ? model.z.title : \"\"),\n overlay,\n width,\n );\n }\n if (hoverHit && hoverEvt) {\n const shape: HighlightShape | null = highlightShape(\n geometry.targets,\n hoverHit,\n hoverEvt.color,\n );\n if (shape) drawHighlight(fg, f, model, shape, overlay);\n }\n };\n\n const colorBarFormat = () => {\n const d = model.colorDomain;\n const { locale } = model;\n if (!d) return locale.value;\n if (model.colorFromZ && options.zAxis?.format) return options.zAxis.format;\n const step = tickStep(d[0], d[1], 5);\n return step > 0\n ? locale.ticks(step, Math.max(Math.abs(d[0]), Math.abs(d[1])))\n : locale.value;\n };\n\n // -------------------------------------------------------------- hover\n\n const tooltipEnabled = () => options.tooltip !== false;\n\n const stageOffset = () => ({ x: stage.offsetLeft, y: stage.offsetTop });\n\n const setHover = (hit: PickHit | null) => {\n const event =\n hit && !geometryDirty\n ? hoverEvent(model, geometry.targets, hit, colors, stageOffset())\n : null;\n const changed =\n (event === null) !== (hoverEvt === null) ||\n (!!event &&\n !!hoverEvt &&\n (event.seriesIndex !== hoverEvt.seriesIndex ||\n event.index !== hoverEvt.index ||\n event.type !== hoverEvt.type));\n hoverHit = event ? hit : null;\n hoverEvt = event;\n renderTooltip();\n if (lastFrame && lastLayout) {\n const width = stage.clientWidth;\n const height = stage.clientHeight;\n if (width > 0 && height > 0)\n drawForeground(\n lastFrame,\n lastLayout,\n width,\n height,\n win?.devicePixelRatio || 1,\n );\n }\n if (changed) emit(\"hover\", event);\n };\n\n const renderTooltip = () => {\n const tip = dom.tooltip;\n if (!hoverEvt || !hoverHit || !tooltipEnabled()) {\n tip.style.display = \"none\";\n return;\n }\n const custom =\n typeof options.tooltip === \"object\" ? options.tooltip.render : undefined;\n const content = custom ? custom(hoverEvt) : defaultTooltip(hoverEvt);\n if (content === null) {\n tip.style.display = \"none\";\n return;\n }\n if (typeof content === \"string\") tip.textContent = content;\n else tip.replaceChildren(content);\n tip.style.display = \"block\";\n const width = stage.clientWidth;\n const height = stage.clientHeight;\n const tw = tip.offsetWidth;\n const th = tip.offsetHeight;\n let x = hoverHit.x + 16;\n if (x + tw > width - 4) x = hoverHit.x - 16 - tw;\n x = Math.max(4, x);\n const y = Math.max(4, Math.min(height - th - 4, hoverHit.y - th / 2));\n tip.style.transform = `translate(${Math.round(x)}px, ${Math.round(y)}px)`;\n };\n\n const defaultTooltip = (event: Chart3DHoverEvent): Node => {\n const fragment = doc.createDocumentFragment();\n const header = style(doc.createElement(\"div\"), {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n fontWeight: \"600\",\n marginBottom: \"4px\",\n color: \"var(--text-color, #1f2937)\",\n });\n header.append(\n swatch(doc, event.color, event.type !== \"bar\"),\n doc.createTextNode(\n event.seriesName ||\n fill(model.locale.labels.series, { n: event.seriesIndex + 1 }),\n ),\n );\n fragment.append(header);\n const valueName =\n typeof options.colorBar === \"object\" && options.colorBar.title\n ? options.colorBar.title\n : \"\";\n for (const row of tooltipRows(model, event, valueName)) {\n const el = style(doc.createElement(\"div\"), {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n });\n const n = style(doc.createElement(\"span\"), {\n flex: \"1 1 auto\",\n color: \"var(--text-secondary-color, #6b7280)\",\n });\n n.textContent = row.name;\n const v = style(doc.createElement(\"span\"), {\n fontWeight: row.name ? \"600\" : \"400\",\n fontVariantNumeric: \"tabular-nums\",\n marginLeft: row.name ? \"12px\" : \"0\",\n });\n v.textContent = row.value;\n if (row.name) el.append(n, v);\n else el.append(v);\n fragment.append(el);\n }\n return fragment;\n };\n\n const pickAt = (x: number, y: number): PickHit | null => {\n if (!lastFrame || geometryDirty || !renderer) return null;\n return picker.pick(geometry.targets, lastFrame, x, y);\n };\n\n let hoverFrame = 0;\n const scheduleHover = (x: number, y: number) => {\n pendingHover = { x, y };\n if (hoverFrame || !win) return;\n hoverFrame = win.requestAnimationFrame(() => {\n hoverFrame = 0;\n const p = pendingHover;\n pendingHover = null;\n if (!p || destroyed || drag) return;\n setHover(pickAt(p.x, p.y));\n });\n };\n\n // -------------------------------------------------------- interaction\n\n interface DragState {\n mode: \"rotate\" | \"pan\" | \"pinch\";\n pointers: Map<number, { x: number; y: number }>;\n start: Chart3DCameraState;\n origin: { x: number; y: number };\n distance: number;\n moved: boolean;\n }\n let drag: DragState | null = null;\n const pointers = new Map<number, { x: number; y: number }>();\n\n const local = (e: { clientX: number; clientY: number }) => {\n const r = stage.getBoundingClientRect();\n return { x: e.clientX - r.left, y: e.clientY - r.top };\n };\n\n const fitHeight = () =>\n lastLayout?.fit.height ?? Math.max(1, stage.clientHeight);\n\n const setCameraInternal = (next: Chart3DCameraState, notify = true) => {\n const clamped = clampCamera(next);\n if (sameCamera(clamped, camera)) return;\n camera = clamped;\n tween = null;\n if (hoverHit) setHover(null);\n invalidate(true);\n if (notify) emit(\"camera\", copyCamera(camera));\n };\n\n const animateTo = (target: Chart3DCameraState) => {\n if (reducedMotion?.matches || !win) {\n setCameraInternal(target);\n return;\n }\n tween = {\n from: copyCamera(camera),\n to: copyCamera(target),\n start: win.performance.now(),\n };\n invalidate(true);\n };\n\n const pinchInfo = () => {\n const pts = [...pointers.values()];\n const a = pts[0] ?? { x: 0, y: 0 };\n const b = pts[1] ?? a;\n return {\n distance: Math.hypot(a.x - b.x, a.y - b.y),\n center: { x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 },\n };\n };\n\n const startDrag = (\n mode: DragState[\"mode\"],\n origin: { x: number; y: number },\n ) => {\n drag = {\n mode,\n pointers,\n start: copyCamera(camera),\n origin,\n distance: mode === \"pinch\" ? pinchInfo().distance : 0,\n moved: false,\n };\n tween = null;\n if (hoverHit) setHover(null);\n stage.style.cursor = mode === \"rotate\" ? \"grabbing\" : \"move\";\n };\n\n const onPointerDown = (e: PointerEvent) => {\n const ia = interaction();\n if (!ia) return;\n const p = local(e);\n pointers.set(e.pointerId, p);\n stage.setPointerCapture?.(e.pointerId);\n if (pointers.size === 2 && (ia.zoom || ia.pan)) {\n startDrag(\"pinch\", pinchInfo().center);\n return;\n }\n if (pointers.size > 1) return;\n const pan = ia.pan && (e.button === 2 || e.shiftKey || e.button === 1);\n if (pan) startDrag(\"pan\", p);\n else if (ia.rotate && e.button === 0) startDrag(\"rotate\", p);\n else drag = null;\n if (pan || e.button === 1) e.preventDefault();\n };\n\n const onPointerMove = (e: PointerEvent) => {\n const p = local(e);\n lastPointer = p;\n if (pointers.has(e.pointerId)) pointers.set(e.pointerId, p);\n if (!drag) {\n if (e.pointerType === \"touch\" && pointers.size) return;\n if (\n tooltipEnabled() ||\n listeners.get(\"hover\")?.size ||\n listeners.get(\"click\")?.size\n )\n scheduleHover(p.x, p.y);\n return;\n }\n const ia = interaction();\n if (!ia) return;\n if (drag.mode === \"pinch\") {\n const { distance, center } = pinchInfo();\n const scale = drag.distance > 0 ? distance / drag.distance : 1;\n const h = fitHeight();\n setCameraInternal({\n ...drag.start,\n zoom: ia.zoom ? drag.start.zoom * scale : drag.start.zoom,\n pan: ia.pan\n ? [\n drag.start.pan[0] + (center.x - drag.origin.x) / h,\n drag.start.pan[1] + (center.y - drag.origin.y) / h,\n ]\n : drag.start.pan,\n });\n drag.moved = true;\n return;\n }\n const dx = p.x - drag.origin.x;\n const dy = p.y - drag.origin.y;\n if (!drag.moved && Math.hypot(dx, dy) < 3) return;\n drag.moved = true;\n if (drag.mode === \"pan\") {\n const h = fitHeight();\n setCameraInternal({\n ...drag.start,\n pan: [drag.start.pan[0] + dx / h, drag.start.pan[1] + dy / h],\n });\n } else {\n setCameraInternal({\n ...drag.start,\n azimuth: drag.start.azimuth - dx * DRAG_DEGREES,\n elevation: drag.start.elevation + dy * DRAG_DEGREES,\n });\n }\n };\n\n const onPointerUp = (e: PointerEvent) => {\n const wasDrag = drag;\n pointers.delete(e.pointerId);\n if (stage.hasPointerCapture?.(e.pointerId))\n stage.releasePointerCapture(e.pointerId);\n if (pointers.size === 1 && wasDrag?.mode === \"pinch\") {\n // continue with the remaining finger as a rotation\n const rest = [...pointers.values()][0]!;\n startDrag(\"rotate\", rest);\n return;\n }\n if (pointers.size) return;\n drag = null;\n stage.style.cursor = interaction()?.rotate ? \"grab\" : \"default\";\n if (wasDrag && !wasDrag.moved && e.button === 0) {\n const p = local(e);\n const hit = pickAt(p.x, p.y);\n setHover(hit);\n if (hoverEvt) emit(\"click\", hoverEvt);\n }\n if (rotating()) invalidate(false);\n };\n\n const onPointerCancel = (e: PointerEvent) => {\n pointers.delete(e.pointerId);\n if (!pointers.size) {\n drag = null;\n stage.style.cursor = interaction()?.rotate ? \"grab\" : \"default\";\n }\n };\n\n const onPointerEnter = (e: PointerEvent) => {\n if (e.pointerType !== \"touch\") pointerInside = true;\n };\n\n const onPointerLeave = () => {\n pointerInside = false;\n pendingHover = null;\n lastPointer = null;\n if (!drag && hoverHit) setHover(null);\n if (rotating()) invalidate(false);\n };\n\n const onWheel = (e: WheelEvent) => {\n const ia = interaction();\n if (!ia?.zoom) return;\n const pinch = e.ctrlKey && !e.metaKey;\n if (ia.wheel === \"modifier\" && !e.ctrlKey && !e.metaKey) return;\n e.preventDefault();\n const factor = wheelFactor(e.deltaY, e.deltaMode, pinch);\n const zoom = camera.zoom / factor;\n // keep the point under the pointer in place\n const layout = lastLayout;\n if (!layout) {\n setCameraInternal({ ...camera, zoom });\n return;\n }\n const clamped = clampCamera({ ...camera, zoom });\n const ratio = clamped.zoom / camera.zoom;\n const h = layout.fit.height;\n const cx = layout.fit.x + layout.fit.width / 2 + camera.pan[0] * h;\n const cy = layout.fit.y + layout.fit.height / 2 + camera.pan[1] * h;\n const m = local(e);\n const nx = m.x - ratio * (m.x - cx);\n const ny = m.y - ratio * (m.y - cy);\n setCameraInternal({\n ...clamped,\n pan: [camera.pan[0] + (nx - cx) / h, camera.pan[1] + (ny - cy) / h],\n });\n if (hoverHit) setHover(null);\n };\n\n const onDoubleClick = (e: MouseEvent) => {\n if (!interaction()) return;\n e.preventDefault();\n animateTo(homeCamera);\n };\n\n const onContextMenu = (e: MouseEvent) => {\n if (interaction()?.pan) e.preventDefault();\n };\n\n // a focus ring for keyboard users only\n const onFocus = () => {\n let keyboard: boolean;\n try {\n keyboard = stage.matches(\":focus-visible\");\n } catch {\n keyboard = true;\n }\n if (keyboard)\n stage.style.boxShadow = \"0 0 0 2px var(--primary-color, #4f46e5)\";\n };\n\n const onBlur = () => {\n stage.style.boxShadow = \"\";\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n const ia = interaction();\n if (!ia?.keyboard) return;\n let next: Chart3DCameraState | null = null;\n const step = e.shiftKey ? KEY_DEGREES * 3 : KEY_DEGREES;\n switch (e.key) {\n case \"ArrowLeft\":\n if (ia.rotate) next = { ...camera, azimuth: camera.azimuth + step };\n break;\n case \"ArrowRight\":\n if (ia.rotate) next = { ...camera, azimuth: camera.azimuth - step };\n break;\n case \"ArrowUp\":\n if (ia.rotate) next = { ...camera, elevation: camera.elevation + step };\n break;\n case \"ArrowDown\":\n if (ia.rotate) next = { ...camera, elevation: camera.elevation - step };\n break;\n case \"+\":\n case \"=\":\n if (ia.zoom) next = { ...camera, zoom: camera.zoom * 1.2 };\n break;\n case \"-\":\n case \"_\":\n if (ia.zoom) next = { ...camera, zoom: camera.zoom / 1.2 };\n break;\n case \"0\":\n case \"Home\":\n e.preventDefault();\n animateTo(homeCamera);\n return;\n case \"Escape\":\n lastPointer = null;\n if (hoverHit) {\n e.preventDefault();\n setHover(null);\n }\n return;\n default:\n return;\n }\n if (!next) return;\n e.preventDefault();\n setCameraInternal(next);\n };\n\n stage.addEventListener(\"pointerdown\", onPointerDown);\n stage.addEventListener(\"pointermove\", onPointerMove);\n stage.addEventListener(\"pointerup\", onPointerUp);\n stage.addEventListener(\"pointercancel\", onPointerCancel);\n stage.addEventListener(\"pointerenter\", onPointerEnter);\n stage.addEventListener(\"pointerleave\", onPointerLeave);\n stage.addEventListener(\"wheel\", onWheel, { passive: false });\n stage.addEventListener(\"dblclick\", onDoubleClick);\n stage.addEventListener(\"contextmenu\", onContextMenu);\n stage.addEventListener(\"keydown\", onKeyDown);\n stage.addEventListener(\"focus\", onFocus);\n stage.addEventListener(\"blur\", onBlur);\n\n // ----------------------------------------------------------- watchers\n\n const resizeObserver =\n typeof ResizeObserver === \"function\"\n ? new ResizeObserver(() => {\n picker.reset();\n invalidate(true);\n })\n : null;\n resizeObserver?.observe(stage);\n\n const intersection =\n typeof IntersectionObserver === \"function\"\n ? new IntersectionObserver((entries) => {\n const entry = entries[entries.length - 1];\n if (!entry) return;\n const was = visible;\n visible = entry.isIntersecting;\n if (visible && !was) invalidate(true);\n })\n : null;\n intersection?.observe(stage);\n\n const onVisibility = () => {\n if (doc.visibilityState !== \"hidden\") invalidate(false);\n };\n doc.addEventListener(\"visibilitychange\", onVisibility);\n\n // device pixel ratio changes (zoom, moving to another screen)\n let dprQuery: MediaQueryList | null = null;\n const onDprChange = () => {\n watchDpr();\n invalidate(true);\n };\n const watchDpr = () => {\n dprQuery?.removeEventListener?.(\"change\", onDprChange);\n dprQuery =\n typeof win?.matchMedia === \"function\"\n ? win.matchMedia(`(resolution: ${win.devicePixelRatio || 1}dppx)`)\n : null;\n dprQuery?.addEventListener?.(\"change\", onDprChange);\n };\n watchDpr();\n\n const onMotionChange = () => invalidate(false);\n reducedMotion?.addEventListener?.(\"change\", onMotionChange);\n\n const refreshTheme = () => {\n if (destroyed) return;\n const next = readTheme(dom.root, options.palette);\n if (themeColorsChanged(theme, next)) themeVersion++;\n theme = next;\n rebuild();\n };\n const unwatchTheme = watchTheme(refreshTheme);\n\n // texts follow the page language when no `locale` is set\n const langObserver =\n typeof win?.MutationObserver === \"function\"\n ? new win.MutationObserver(() => {\n if (\n !destroyed &&\n resolveLocale(options.locale) !== model.locale.locale\n )\n rebuild();\n })\n : null;\n langObserver?.observe(doc.documentElement, {\n attributes: true,\n attributeFilter: [\"lang\"],\n });\n\n // ----------------------------------------------------------- renderer\n\n const initRenderer = async (exclude: Set<ChartRendererKind> = new Set()) => {\n const token = ++rendererToken;\n const next = await createRenderer3D(\n options.renderer ?? \"auto\",\n () => {\n const canvas = layerCanvas(doc);\n canvas.className = \"minerva-chart-data\";\n return canvas;\n },\n (kind) => {\n if (destroyed || renderer?.kind !== kind) return;\n renderer.destroy();\n renderer.canvas.remove();\n renderer = null;\n void initRenderer(new Set([...exclude, kind]));\n },\n exclude,\n );\n if (destroyed || token !== rendererToken) {\n next?.destroy();\n return;\n }\n if (renderer) {\n renderer.destroy();\n renderer.canvas.remove();\n }\n renderer = next;\n geometryDirty = true;\n if (next) {\n dom.root.dataset.renderer = next.kind;\n stage.insertBefore(next.canvas, dom.foreground);\n emit(\"renderer\", next.kind);\n } else {\n delete dom.root.dataset.renderer;\n }\n resolveReady(next?.kind ?? null);\n invalidate(true);\n };\n\n refreshColors();\n rebuild();\n void initRenderer();\n\n // ---------------------------------------------------------------- api\n\n const instance: Chart3DInstance = {\n setOptions(next) {\n if (destroyed) return;\n const previous = options;\n options = next;\n if ((next.palette ?? []).join() !== (previous.palette ?? []).join()) {\n theme = readTheme(dom.root, next.palette);\n themeVersion++;\n }\n const key = JSON.stringify(next.camera ?? {});\n if (key !== cameraKey) {\n cameraKey = key;\n homeCamera = initialCamera(next.camera);\n setCameraInternal({ ...homeCamera });\n }\n if ((next.renderer ?? \"auto\") !== (previous.renderer ?? \"auto\"))\n void initRenderer();\n rebuild();\n },\n resize() {\n picker.reset();\n invalidate(true);\n },\n resetCamera() {\n setCameraInternal(copyCamera(homeCamera));\n },\n getCamera: () => copyCamera(camera),\n setCamera(next) {\n if (destroyed) return;\n setCameraInternal({\n azimuth: next.azimuth ?? camera.azimuth,\n elevation: next.elevation ?? camera.elevation,\n zoom: next.zoom ?? camera.zoom,\n pan: next.pan ? [next.pan[0], next.pan[1]] : camera.pan,\n projection: next.projection ?? camera.projection,\n });\n },\n getRenderer: () => renderer?.kind ?? null,\n ready,\n refreshTheme,\n on(type, listener) {\n let set = listeners.get(type);\n if (!set) {\n set = new Set();\n listeners.set(type, set);\n }\n set.add(listener as (e: never) => void);\n return () => {\n set.delete(listener as (e: never) => void);\n };\n },\n destroy() {\n if (destroyed) return;\n destroyed = true;\n rendererToken++;\n if (frameId) win?.cancelAnimationFrame(frameId);\n if (hoverFrame) win?.cancelAnimationFrame(hoverFrame);\n frameId = 0;\n hoverFrame = 0;\n resizeObserver?.disconnect();\n intersection?.disconnect();\n doc.removeEventListener(\"visibilitychange\", onVisibility);\n dprQuery?.removeEventListener?.(\"change\", onDprChange);\n reducedMotion?.removeEventListener?.(\"change\", onMotionChange);\n unwatchTheme();\n langObserver?.disconnect();\n stage.removeEventListener(\"pointerdown\", onPointerDown);\n stage.removeEventListener(\"pointermove\", onPointerMove);\n stage.removeEventListener(\"pointerup\", onPointerUp);\n stage.removeEventListener(\"pointercancel\", onPointerCancel);\n stage.removeEventListener(\"pointerenter\", onPointerEnter);\n stage.removeEventListener(\"pointerleave\", onPointerLeave);\n stage.removeEventListener(\"wheel\", onWheel);\n stage.removeEventListener(\"dblclick\", onDoubleClick);\n stage.removeEventListener(\"contextmenu\", onContextMenu);\n stage.removeEventListener(\"keydown\", onKeyDown);\n stage.removeEventListener(\"focus\", onFocus);\n stage.removeEventListener(\"blur\", onBlur);\n renderer?.destroy();\n renderer = null;\n listeners.clear();\n resolveReady(null);\n dom.root.remove();\n },\n };\n return instance;\n};\n\nfunction isDark(theme: ChartTheme): boolean {\n return luminance(theme.background) < 0.4 || luminance(theme.text) > 0.6;\n}\n"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { FitRect } from './math.cjs';
2
+ import { Chart3DCameraOptions, Chart3DCameraState, Chart3DInstance, Chart3DOptions } from './types.cjs';
3
+ /** Camera of the options (also the one restored by a reset) */
4
+ export declare const initialCamera: (camera: Chart3DCameraOptions | undefined) => Chart3DCameraState;
5
+ /** Layout of the stage: area the box is fitted into and the color bar */
6
+ export declare const stageLayout: (width: number, height: number, colorBar: boolean) => {
7
+ fit: FitRect;
8
+ bar: {
9
+ x: number;
10
+ y: number;
11
+ w: number;
12
+ h: number;
13
+ } | null;
14
+ };
15
+ export declare const createChart3D: (container: HTMLElement, initialOptions: Chart3DOptions) => Chart3DInstance;
@@ -0,0 +1,15 @@
1
+ import { FitRect } from './math.js';
2
+ import { Chart3DCameraOptions, Chart3DCameraState, Chart3DInstance, Chart3DOptions } from './types.js';
3
+ /** Camera of the options (also the one restored by a reset) */
4
+ export declare const initialCamera: (camera: Chart3DCameraOptions | undefined) => Chart3DCameraState;
5
+ /** Layout of the stage: area the box is fitted into and the color bar */
6
+ export declare const stageLayout: (width: number, height: number, colorBar: boolean) => {
7
+ fit: FitRect;
8
+ bar: {
9
+ x: number;
10
+ y: number;
11
+ w: number;
12
+ h: number;
13
+ } | null;
14
+ };
15
+ export declare const createChart3D: (container: HTMLElement, initialOptions: Chart3DOptions) => Chart3DInstance;