minerva-design 1.4.0 → 1.6.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 (824) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +3072 -611
  4. package/dist/angular/fesm2022/minerva-angular.mjs +1491 -5
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +595 -5
  7. package/dist/charts/canvas.d.cts +4 -3
  8. package/dist/charts/canvas.d.ts +4 -3
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +6 -4
  11. package/dist/charts/core.d.ts +6 -4
  12. package/dist/charts/core.js +24 -16
  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 +42 -19
  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.js +155 -127
  20. package/dist/charts/engine/canvas.js.map +1 -1
  21. package/dist/charts/engine/chart.cjs +1 -1
  22. package/dist/charts/engine/chart.cjs.map +1 -1
  23. package/dist/charts/engine/chart.js +370 -255
  24. package/dist/charts/engine/chart.js.map +1 -1
  25. package/dist/charts/engine/color.cjs +1 -1
  26. package/dist/charts/engine/color.cjs.map +1 -1
  27. package/dist/charts/engine/color.d.cts +18 -0
  28. package/dist/charts/engine/color.d.ts +18 -0
  29. package/dist/charts/engine/color.js +48 -2
  30. package/dist/charts/engine/color.js.map +1 -1
  31. package/dist/charts/engine/controller.cjs +2 -2
  32. package/dist/charts/engine/controller.cjs.map +1 -1
  33. package/dist/charts/engine/controller.d.cts +34 -1
  34. package/dist/charts/engine/controller.d.ts +34 -1
  35. package/dist/charts/engine/controller.js +318 -273
  36. package/dist/charts/engine/controller.js.map +1 -1
  37. package/dist/charts/engine/data.cjs +1 -1
  38. package/dist/charts/engine/data.cjs.map +1 -1
  39. package/dist/charts/engine/data.d.cts +3 -1
  40. package/dist/charts/engine/data.d.ts +3 -1
  41. package/dist/charts/engine/data.js +6 -4
  42. package/dist/charts/engine/data.js.map +1 -1
  43. package/dist/charts/engine/defaults.cjs +2 -0
  44. package/dist/charts/engine/defaults.cjs.map +1 -0
  45. package/dist/charts/engine/defaults.d.cts +20 -0
  46. package/dist/charts/engine/defaults.d.ts +20 -0
  47. package/dist/charts/engine/defaults.js +35 -0
  48. package/dist/charts/engine/defaults.js.map +1 -0
  49. package/dist/charts/engine/format.cjs +1 -1
  50. package/dist/charts/engine/format.cjs.map +1 -1
  51. package/dist/charts/engine/format.d.cts +6 -0
  52. package/dist/charts/engine/format.d.ts +6 -0
  53. package/dist/charts/engine/format.js +15 -2
  54. package/dist/charts/engine/format.js.map +1 -1
  55. package/dist/charts/engine/graph/chart.cjs +2 -0
  56. package/dist/charts/engine/graph/chart.cjs.map +1 -0
  57. package/dist/charts/engine/graph/chart.d.cts +3 -0
  58. package/dist/charts/engine/graph/chart.d.ts +3 -0
  59. package/dist/charts/engine/graph/chart.js +1708 -0
  60. package/dist/charts/engine/graph/chart.js.map +1 -0
  61. package/dist/charts/engine/graph/circular.cjs +2 -0
  62. package/dist/charts/engine/graph/circular.cjs.map +1 -0
  63. package/dist/charts/engine/graph/circular.d.cts +16 -0
  64. package/dist/charts/engine/graph/circular.d.ts +16 -0
  65. package/dist/charts/engine/graph/circular.js +62 -0
  66. package/dist/charts/engine/graph/circular.js.map +1 -0
  67. package/dist/charts/engine/graph/dag.cjs +2 -0
  68. package/dist/charts/engine/graph/dag.cjs.map +1 -0
  69. package/dist/charts/engine/graph/dag.d.cts +34 -0
  70. package/dist/charts/engine/graph/dag.d.ts +34 -0
  71. package/dist/charts/engine/graph/dag.js +339 -0
  72. package/dist/charts/engine/graph/dag.js.map +1 -0
  73. package/dist/charts/engine/graph/dom.cjs +2 -0
  74. package/dist/charts/engine/graph/dom.cjs.map +1 -0
  75. package/dist/charts/engine/graph/dom.d.cts +23 -0
  76. package/dist/charts/engine/graph/dom.d.ts +23 -0
  77. package/dist/charts/engine/graph/dom.js +158 -0
  78. package/dist/charts/engine/graph/dom.js.map +1 -0
  79. package/dist/charts/engine/graph/force.cjs +2 -0
  80. package/dist/charts/engine/graph/force.cjs.map +1 -0
  81. package/dist/charts/engine/graph/force.d.cts +76 -0
  82. package/dist/charts/engine/graph/force.d.ts +76 -0
  83. package/dist/charts/engine/graph/force.js +423 -0
  84. package/dist/charts/engine/graph/force.js.map +1 -0
  85. package/dist/charts/engine/graph/geometry.cjs +2 -0
  86. package/dist/charts/engine/graph/geometry.cjs.map +1 -0
  87. package/dist/charts/engine/graph/geometry.d.cts +50 -0
  88. package/dist/charts/engine/graph/geometry.d.ts +50 -0
  89. package/dist/charts/engine/graph/geometry.js +197 -0
  90. package/dist/charts/engine/graph/geometry.js.map +1 -0
  91. package/dist/charts/engine/graph/index.cjs +1 -0
  92. package/dist/charts/engine/graph/index.d.cts +6 -0
  93. package/dist/charts/engine/graph/index.d.ts +6 -0
  94. package/dist/charts/engine/graph/index.js +6 -0
  95. package/dist/charts/engine/graph/labels.cjs +2 -0
  96. package/dist/charts/engine/graph/labels.cjs.map +1 -0
  97. package/dist/charts/engine/graph/labels.d.cts +12 -0
  98. package/dist/charts/engine/graph/labels.d.ts +12 -0
  99. package/dist/charts/engine/graph/labels.js +128 -0
  100. package/dist/charts/engine/graph/labels.js.map +1 -0
  101. package/dist/charts/engine/graph/model.cjs +2 -0
  102. package/dist/charts/engine/graph/model.cjs.map +1 -0
  103. package/dist/charts/engine/graph/model.d.cts +52 -0
  104. package/dist/charts/engine/graph/model.d.ts +52 -0
  105. package/dist/charts/engine/graph/model.js +108 -0
  106. package/dist/charts/engine/graph/model.js.map +1 -0
  107. package/dist/charts/engine/graph/sizing.cjs +2 -0
  108. package/dist/charts/engine/graph/sizing.cjs.map +1 -0
  109. package/dist/charts/engine/graph/sizing.d.cts +33 -0
  110. package/dist/charts/engine/graph/sizing.d.ts +33 -0
  111. package/dist/charts/engine/graph/sizing.js +60 -0
  112. package/dist/charts/engine/graph/sizing.js.map +1 -0
  113. package/dist/charts/engine/graph/tree.cjs +2 -0
  114. package/dist/charts/engine/graph/tree.cjs.map +1 -0
  115. package/dist/charts/engine/graph/tree.d.cts +30 -0
  116. package/dist/charts/engine/graph/tree.d.ts +30 -0
  117. package/dist/charts/engine/graph/tree.js +218 -0
  118. package/dist/charts/engine/graph/tree.js.map +1 -0
  119. package/dist/charts/engine/graph/types.d.cts +640 -0
  120. package/dist/charts/engine/graph/types.d.ts +640 -0
  121. package/dist/charts/engine/graph/worker.cjs +52 -0
  122. package/dist/charts/engine/graph/worker.cjs.map +1 -0
  123. package/dist/charts/engine/graph/worker.d.cts +36 -0
  124. package/dist/charts/engine/graph/worker.d.ts +36 -0
  125. package/dist/charts/engine/graph/worker.js +135 -0
  126. package/dist/charts/engine/graph/worker.js.map +1 -0
  127. package/dist/charts/engine/items.cjs +1 -1
  128. package/dist/charts/engine/items.cjs.map +1 -1
  129. package/dist/charts/engine/items.d.cts +15 -2
  130. package/dist/charts/engine/items.d.ts +15 -2
  131. package/dist/charts/engine/items.js +131 -112
  132. package/dist/charts/engine/items.js.map +1 -1
  133. package/dist/charts/engine/labels.cjs +1 -1
  134. package/dist/charts/engine/labels.cjs.map +1 -1
  135. package/dist/charts/engine/labels.d.cts +17 -0
  136. package/dist/charts/engine/labels.d.ts +17 -0
  137. package/dist/charts/engine/labels.js +28 -4
  138. package/dist/charts/engine/labels.js.map +1 -1
  139. package/dist/charts/engine/layout.cjs +1 -1
  140. package/dist/charts/engine/layout.cjs.map +1 -1
  141. package/dist/charts/engine/layout.d.cts +9 -0
  142. package/dist/charts/engine/layout.d.ts +9 -0
  143. package/dist/charts/engine/layout.js +11 -2
  144. package/dist/charts/engine/layout.js.map +1 -1
  145. package/dist/charts/engine/model.cjs +1 -1
  146. package/dist/charts/engine/model.cjs.map +1 -1
  147. package/dist/charts/engine/model.d.cts +73 -3
  148. package/dist/charts/engine/model.d.ts +73 -3
  149. package/dist/charts/engine/model.js +258 -154
  150. package/dist/charts/engine/model.js.map +1 -1
  151. package/dist/charts/engine/orderbook/field.cjs +37 -0
  152. package/dist/charts/engine/orderbook/field.cjs.map +1 -0
  153. package/dist/charts/engine/orderbook/field.d.cts +92 -0
  154. package/dist/charts/engine/orderbook/field.d.ts +92 -0
  155. package/dist/charts/engine/orderbook/field.js +297 -0
  156. package/dist/charts/engine/orderbook/field.js.map +1 -0
  157. package/dist/charts/engine/orderbook/format.cjs +1 -1
  158. package/dist/charts/engine/orderbook/format.cjs.map +1 -1
  159. package/dist/charts/engine/orderbook/format.d.cts +3 -2
  160. package/dist/charts/engine/orderbook/format.d.ts +3 -2
  161. package/dist/charts/engine/orderbook/format.js +5 -5
  162. package/dist/charts/engine/orderbook/format.js.map +1 -1
  163. package/dist/charts/engine/orderbook/heatmap.cjs +1 -1
  164. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -1
  165. package/dist/charts/engine/orderbook/heatmap.js +566 -475
  166. package/dist/charts/engine/orderbook/heatmap.js.map +1 -1
  167. package/dist/charts/engine/orderbook/host.cjs +1 -1
  168. package/dist/charts/engine/orderbook/host.cjs.map +1 -1
  169. package/dist/charts/engine/orderbook/host.d.cts +8 -1
  170. package/dist/charts/engine/orderbook/host.d.ts +8 -1
  171. package/dist/charts/engine/orderbook/host.js +27 -5
  172. package/dist/charts/engine/orderbook/host.js.map +1 -1
  173. package/dist/charts/engine/orderbook/ladder.cjs +1 -1
  174. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -1
  175. package/dist/charts/engine/orderbook/ladder.js +1 -1
  176. package/dist/charts/engine/orderbook/ladder.js.map +1 -1
  177. package/dist/charts/engine/orderbook/layout.cjs +2 -0
  178. package/dist/charts/engine/orderbook/layout.cjs.map +1 -0
  179. package/dist/charts/engine/orderbook/layout.d.cts +42 -0
  180. package/dist/charts/engine/orderbook/layout.d.ts +42 -0
  181. package/dist/charts/engine/orderbook/layout.js +76 -0
  182. package/dist/charts/engine/orderbook/layout.js.map +1 -0
  183. package/dist/charts/engine/orderbook/tape.cjs +1 -1
  184. package/dist/charts/engine/orderbook/tape.cjs.map +1 -1
  185. package/dist/charts/engine/orderbook/tape.js +4 -4
  186. package/dist/charts/engine/orderbook/tape.js.map +1 -1
  187. package/dist/charts/engine/orderbook/types.d.cts +27 -3
  188. package/dist/charts/engine/orderbook/types.d.ts +27 -3
  189. package/dist/charts/engine/overlay.cjs +1 -1
  190. package/dist/charts/engine/overlay.cjs.map +1 -1
  191. package/dist/charts/engine/overlay.d.cts +27 -0
  192. package/dist/charts/engine/overlay.d.ts +27 -0
  193. package/dist/charts/engine/overlay.js +34 -12
  194. package/dist/charts/engine/overlay.js.map +1 -1
  195. package/dist/charts/engine/presets.cjs +2 -2
  196. package/dist/charts/engine/presets.cjs.map +1 -1
  197. package/dist/charts/engine/presets.d.cts +35 -3
  198. package/dist/charts/engine/presets.d.ts +35 -3
  199. package/dist/charts/engine/presets.js +121 -101
  200. package/dist/charts/engine/presets.js.map +1 -1
  201. package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
  202. package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
  203. package/dist/charts/engine/renderers/canvas2d.js +13 -9
  204. package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
  205. package/dist/charts/engine/renderers/detect.cjs +1 -1
  206. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  207. package/dist/charts/engine/renderers/detect.d.cts +2 -1
  208. package/dist/charts/engine/renderers/detect.d.ts +2 -1
  209. package/dist/charts/engine/renderers/detect.js +23 -21
  210. package/dist/charts/engine/renderers/detect.js.map +1 -1
  211. package/dist/charts/engine/renderers/follow.cjs +2 -0
  212. package/dist/charts/engine/renderers/follow.cjs.map +1 -0
  213. package/dist/charts/engine/renderers/follow.d.cts +8 -0
  214. package/dist/charts/engine/renderers/follow.d.ts +8 -0
  215. package/dist/charts/engine/renderers/follow.js +10 -0
  216. package/dist/charts/engine/renderers/follow.js.map +1 -0
  217. package/dist/charts/engine/renderers/gl-budget.cjs +2 -0
  218. package/dist/charts/engine/renderers/gl-budget.cjs.map +1 -0
  219. package/dist/charts/engine/renderers/gl-budget.d.cts +32 -0
  220. package/dist/charts/engine/renderers/gl-budget.d.ts +32 -0
  221. package/dist/charts/engine/renderers/gl-budget.js +95 -0
  222. package/dist/charts/engine/renderers/gl-budget.js.map +1 -0
  223. package/dist/charts/engine/renderers/gl.cjs +1 -1
  224. package/dist/charts/engine/renderers/gl.cjs.map +1 -1
  225. package/dist/charts/engine/renderers/gl.js +1 -1
  226. package/dist/charts/engine/renderers/gl.js.map +1 -1
  227. package/dist/charts/engine/renderers/shaders.cjs +9 -6
  228. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  229. package/dist/charts/engine/renderers/shaders.d.cts +1 -1
  230. package/dist/charts/engine/renderers/shaders.d.ts +1 -1
  231. package/dist/charts/engine/renderers/shaders.js +9 -6
  232. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  233. package/dist/charts/engine/renderers/types.cjs.map +1 -1
  234. package/dist/charts/engine/renderers/types.d.cts +2 -0
  235. package/dist/charts/engine/renderers/types.d.ts +2 -0
  236. package/dist/charts/engine/renderers/types.js.map +1 -1
  237. package/dist/charts/engine/renderers/webgl.cjs +1 -1
  238. package/dist/charts/engine/renderers/webgl.cjs.map +1 -1
  239. package/dist/charts/engine/renderers/webgl.js +85 -64
  240. package/dist/charts/engine/renderers/webgl.js.map +1 -1
  241. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  242. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  243. package/dist/charts/engine/renderers/webgl2.js +72 -58
  244. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  245. package/dist/charts/engine/renderers/webgpu.cjs +1 -1
  246. package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
  247. package/dist/charts/engine/renderers/webgpu.js +1 -1
  248. package/dist/charts/engine/renderers/webgpu.js.map +1 -1
  249. package/dist/charts/engine/scene.cjs +1 -1
  250. package/dist/charts/engine/scene.cjs.map +1 -1
  251. package/dist/charts/engine/scene.d.cts +104 -4
  252. package/dist/charts/engine/scene.d.ts +104 -4
  253. package/dist/charts/engine/scene.js +412 -193
  254. package/dist/charts/engine/scene.js.map +1 -1
  255. package/dist/charts/engine/shapes/bullet.cjs +1 -1
  256. package/dist/charts/engine/shapes/bullet.cjs.map +1 -1
  257. package/dist/charts/engine/shapes/bullet.js +110 -110
  258. package/dist/charts/engine/shapes/bullet.js.map +1 -1
  259. package/dist/charts/engine/shapes/chart.cjs +1 -1
  260. package/dist/charts/engine/shapes/chart.cjs.map +1 -1
  261. package/dist/charts/engine/shapes/chart.js +4 -1
  262. package/dist/charts/engine/shapes/chart.js.map +1 -1
  263. package/dist/charts/engine/shapes/chord.cjs +2 -0
  264. package/dist/charts/engine/shapes/chord.cjs.map +1 -0
  265. package/dist/charts/engine/shapes/chord.d.cts +18 -0
  266. package/dist/charts/engine/shapes/chord.d.ts +18 -0
  267. package/dist/charts/engine/shapes/chord.js +419 -0
  268. package/dist/charts/engine/shapes/chord.js.map +1 -0
  269. package/dist/charts/engine/shapes/draw.cjs +1 -1
  270. package/dist/charts/engine/shapes/draw.cjs.map +1 -1
  271. package/dist/charts/engine/shapes/draw.d.cts +5 -1
  272. package/dist/charts/engine/shapes/draw.d.ts +5 -1
  273. package/dist/charts/engine/shapes/draw.js +47 -17
  274. package/dist/charts/engine/shapes/draw.js.map +1 -1
  275. package/dist/charts/engine/shapes/hit.cjs +1 -1
  276. package/dist/charts/engine/shapes/hit.cjs.map +1 -1
  277. package/dist/charts/engine/shapes/hit.d.cts +3 -1
  278. package/dist/charts/engine/shapes/hit.d.ts +3 -1
  279. package/dist/charts/engine/shapes/hit.js +75 -46
  280. package/dist/charts/engine/shapes/hit.js.map +1 -1
  281. package/dist/charts/engine/shapes/index.d.cts +3 -2
  282. package/dist/charts/engine/shapes/index.d.ts +3 -2
  283. package/dist/charts/engine/shapes/labels.cjs +1 -1
  284. package/dist/charts/engine/shapes/labels.cjs.map +1 -1
  285. package/dist/charts/engine/shapes/labels.js +12 -4
  286. package/dist/charts/engine/shapes/labels.js.map +1 -1
  287. package/dist/charts/engine/shapes/layout.cjs +2 -2
  288. package/dist/charts/engine/shapes/layout.cjs.map +1 -1
  289. package/dist/charts/engine/shapes/layout.d.cts +3 -1
  290. package/dist/charts/engine/shapes/layout.d.ts +3 -1
  291. package/dist/charts/engine/shapes/layout.js +106 -78
  292. package/dist/charts/engine/shapes/layout.js.map +1 -1
  293. package/dist/charts/engine/shapes/scene.cjs +1 -1
  294. package/dist/charts/engine/shapes/scene.cjs.map +1 -1
  295. package/dist/charts/engine/shapes/scene.d.cts +33 -3
  296. package/dist/charts/engine/shapes/scene.d.ts +33 -3
  297. package/dist/charts/engine/shapes/scene.js +62 -19
  298. package/dist/charts/engine/shapes/scene.js.map +1 -1
  299. package/dist/charts/engine/shapes/types.d.cts +121 -8
  300. package/dist/charts/engine/shapes/types.d.ts +121 -8
  301. package/dist/charts/engine/signature.cjs +1 -1
  302. package/dist/charts/engine/signature.cjs.map +1 -1
  303. package/dist/charts/engine/signature.js +1 -1
  304. package/dist/charts/engine/signature.js.map +1 -1
  305. package/dist/charts/engine/three-d/canvas2d.cjs +1 -1
  306. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -1
  307. package/dist/charts/engine/three-d/canvas2d.d.cts +41 -3
  308. package/dist/charts/engine/three-d/canvas2d.d.ts +41 -3
  309. package/dist/charts/engine/three-d/canvas2d.js +166 -67
  310. package/dist/charts/engine/three-d/canvas2d.js.map +1 -1
  311. package/dist/charts/engine/three-d/chart.cjs +1 -1
  312. package/dist/charts/engine/three-d/chart.cjs.map +1 -1
  313. package/dist/charts/engine/three-d/chart.js +219 -215
  314. package/dist/charts/engine/three-d/chart.js.map +1 -1
  315. package/dist/charts/engine/three-d/detect.cjs +1 -1
  316. package/dist/charts/engine/three-d/detect.cjs.map +1 -1
  317. package/dist/charts/engine/three-d/detect.d.cts +3 -2
  318. package/dist/charts/engine/three-d/detect.d.ts +3 -2
  319. package/dist/charts/engine/three-d/detect.js +22 -20
  320. package/dist/charts/engine/three-d/detect.js.map +1 -1
  321. package/dist/charts/engine/three-d/geometry.cjs +1 -1
  322. package/dist/charts/engine/three-d/geometry.cjs.map +1 -1
  323. package/dist/charts/engine/three-d/geometry.d.cts +6 -0
  324. package/dist/charts/engine/three-d/geometry.d.ts +6 -0
  325. package/dist/charts/engine/three-d/geometry.js +106 -90
  326. package/dist/charts/engine/three-d/geometry.js.map +1 -1
  327. package/dist/charts/engine/three-d/model.cjs +1 -1
  328. package/dist/charts/engine/three-d/model.cjs.map +1 -1
  329. package/dist/charts/engine/three-d/model.d.cts +2 -0
  330. package/dist/charts/engine/three-d/model.d.ts +2 -0
  331. package/dist/charts/engine/three-d/model.js +2 -0
  332. package/dist/charts/engine/three-d/model.js.map +1 -1
  333. package/dist/charts/engine/three-d/oit.cjs +109 -0
  334. package/dist/charts/engine/three-d/oit.cjs.map +1 -0
  335. package/dist/charts/engine/three-d/oit.d.cts +34 -0
  336. package/dist/charts/engine/three-d/oit.d.ts +34 -0
  337. package/dist/charts/engine/three-d/oit.js +111 -0
  338. package/dist/charts/engine/three-d/oit.js.map +1 -0
  339. package/dist/charts/engine/three-d/overlay.cjs +1 -1
  340. package/dist/charts/engine/three-d/overlay.cjs.map +1 -1
  341. package/dist/charts/engine/three-d/overlay.js +43 -36
  342. package/dist/charts/engine/three-d/overlay.js.map +1 -1
  343. package/dist/charts/engine/three-d/render-types.cjs +1 -1
  344. package/dist/charts/engine/three-d/render-types.cjs.map +1 -1
  345. package/dist/charts/engine/three-d/render-types.d.cts +37 -3
  346. package/dist/charts/engine/three-d/render-types.d.ts +37 -3
  347. package/dist/charts/engine/three-d/render-types.js +6 -10
  348. package/dist/charts/engine/three-d/render-types.js.map +1 -1
  349. package/dist/charts/engine/three-d/shaders.cjs +109 -48
  350. package/dist/charts/engine/three-d/shaders.cjs.map +1 -1
  351. package/dist/charts/engine/three-d/shaders.d.cts +12 -5
  352. package/dist/charts/engine/three-d/shaders.d.ts +12 -5
  353. package/dist/charts/engine/three-d/shaders.js +118 -55
  354. package/dist/charts/engine/three-d/shaders.js.map +1 -1
  355. package/dist/charts/engine/three-d/sort.cjs +1 -1
  356. package/dist/charts/engine/three-d/sort.cjs.map +1 -1
  357. package/dist/charts/engine/three-d/sort.d.cts +18 -5
  358. package/dist/charts/engine/three-d/sort.d.ts +18 -5
  359. package/dist/charts/engine/three-d/sort.js +129 -43
  360. package/dist/charts/engine/three-d/sort.js.map +1 -1
  361. package/dist/charts/engine/three-d/types.d.cts +36 -0
  362. package/dist/charts/engine/three-d/types.d.ts +36 -0
  363. package/dist/charts/engine/three-d/webgl.cjs +1 -1
  364. package/dist/charts/engine/three-d/webgl.cjs.map +1 -1
  365. package/dist/charts/engine/three-d/webgl.d.cts +9 -0
  366. package/dist/charts/engine/three-d/webgl.d.ts +9 -0
  367. package/dist/charts/engine/three-d/webgl.js +199 -74
  368. package/dist/charts/engine/three-d/webgl.js.map +1 -1
  369. package/dist/charts/engine/three-d/webgpu.cjs +1 -1
  370. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -1
  371. package/dist/charts/engine/three-d/webgpu.js +231 -94
  372. package/dist/charts/engine/three-d/webgpu.js.map +1 -1
  373. package/dist/charts/engine/trading/chart.cjs +1 -1
  374. package/dist/charts/engine/trading/chart.cjs.map +1 -1
  375. package/dist/charts/engine/trading/chart.d.cts +10 -1
  376. package/dist/charts/engine/trading/chart.d.ts +10 -1
  377. package/dist/charts/engine/trading/chart.js +1677 -813
  378. package/dist/charts/engine/trading/chart.js.map +1 -1
  379. package/dist/charts/engine/trading/drawings.cjs +2 -1
  380. package/dist/charts/engine/trading/drawings.cjs.map +1 -1
  381. package/dist/charts/engine/trading/drawings.d.cts +53 -9
  382. package/dist/charts/engine/trading/drawings.d.ts +53 -9
  383. package/dist/charts/engine/trading/drawings.js +346 -71
  384. package/dist/charts/engine/trading/drawings.js.map +1 -1
  385. package/dist/charts/engine/trading/format.cjs +1 -1
  386. package/dist/charts/engine/trading/format.cjs.map +1 -1
  387. package/dist/charts/engine/trading/format.d.cts +19 -0
  388. package/dist/charts/engine/trading/format.d.ts +19 -0
  389. package/dist/charts/engine/trading/format.js +65 -21
  390. package/dist/charts/engine/trading/format.js.map +1 -1
  391. package/dist/charts/engine/trading/geometry.cjs +1 -1
  392. package/dist/charts/engine/trading/geometry.cjs.map +1 -1
  393. package/dist/charts/engine/trading/geometry.d.cts +16 -0
  394. package/dist/charts/engine/trading/geometry.d.ts +16 -0
  395. package/dist/charts/engine/trading/geometry.js +19 -4
  396. package/dist/charts/engine/trading/geometry.js.map +1 -1
  397. package/dist/charts/engine/trading/index.cjs +1 -1
  398. package/dist/charts/engine/trading/index.d.cts +2 -1
  399. package/dist/charts/engine/trading/index.d.ts +2 -1
  400. package/dist/charts/engine/trading/index.js +4 -3
  401. package/dist/charts/engine/trading/indicators.cjs +1 -1
  402. package/dist/charts/engine/trading/indicators.cjs.map +1 -1
  403. package/dist/charts/engine/trading/indicators.d.cts +180 -10
  404. package/dist/charts/engine/trading/indicators.d.ts +180 -10
  405. package/dist/charts/engine/trading/indicators.js +449 -173
  406. package/dist/charts/engine/trading/indicators.js.map +1 -1
  407. package/dist/charts/engine/trading/labels.cjs +1 -1
  408. package/dist/charts/engine/trading/labels.cjs.map +1 -1
  409. package/dist/charts/engine/trading/labels.js +104 -4
  410. package/dist/charts/engine/trading/labels.js.map +1 -1
  411. package/dist/charts/engine/trading/store.cjs +1 -1
  412. package/dist/charts/engine/trading/store.cjs.map +1 -1
  413. package/dist/charts/engine/trading/store.d.cts +21 -0
  414. package/dist/charts/engine/trading/store.d.ts +21 -0
  415. package/dist/charts/engine/trading/store.js +22 -1
  416. package/dist/charts/engine/trading/store.js.map +1 -1
  417. package/dist/charts/engine/trading/studies.cjs +1 -1
  418. package/dist/charts/engine/trading/studies.cjs.map +1 -1
  419. package/dist/charts/engine/trading/studies.d.cts +49 -8
  420. package/dist/charts/engine/trading/studies.d.ts +49 -8
  421. package/dist/charts/engine/trading/studies.js +352 -93
  422. package/dist/charts/engine/trading/studies.js.map +1 -1
  423. package/dist/charts/engine/trading/sync.cjs +2 -0
  424. package/dist/charts/engine/trading/sync.cjs.map +1 -0
  425. package/dist/charts/engine/trading/sync.d.cts +8 -0
  426. package/dist/charts/engine/trading/sync.d.ts +8 -0
  427. package/dist/charts/engine/trading/sync.js +25 -0
  428. package/dist/charts/engine/trading/sync.js.map +1 -0
  429. package/dist/charts/engine/trading/types.d.cts +514 -16
  430. package/dist/charts/engine/trading/types.d.ts +514 -16
  431. package/dist/charts/engine/types.d.cts +106 -11
  432. package/dist/charts/engine/types.d.ts +106 -11
  433. package/dist/charts/index.cjs +1 -1
  434. package/dist/charts/index.d.cts +3 -2
  435. package/dist/charts/index.d.ts +3 -2
  436. package/dist/charts/index.js +30 -22
  437. package/dist/charts/react/charts.cjs +1 -1
  438. package/dist/charts/react/charts.cjs.map +1 -1
  439. package/dist/charts/react/charts.js +51 -34
  440. package/dist/charts/react/charts.js.map +1 -1
  441. package/dist/charts/react/graph.cjs +2 -0
  442. package/dist/charts/react/graph.cjs.map +1 -0
  443. package/dist/charts/react/graph.d.cts +219 -0
  444. package/dist/charts/react/graph.d.ts +219 -0
  445. package/dist/charts/react/graph.js +160 -0
  446. package/dist/charts/react/graph.js.map +1 -0
  447. package/dist/charts/react/orderbook.cjs +1 -1
  448. package/dist/charts/react/orderbook.cjs.map +1 -1
  449. package/dist/charts/react/orderbook.d.cts +3 -1
  450. package/dist/charts/react/orderbook.d.ts +3 -1
  451. package/dist/charts/react/orderbook.js +1 -0
  452. package/dist/charts/react/orderbook.js.map +1 -1
  453. package/dist/charts/react/shapes.cjs +1 -1
  454. package/dist/charts/react/shapes.cjs.map +1 -1
  455. package/dist/charts/react/shapes.d.cts +88 -4
  456. package/dist/charts/react/shapes.d.ts +88 -4
  457. package/dist/charts/react/shapes.js +55 -12
  458. package/dist/charts/react/shapes.js.map +1 -1
  459. package/dist/charts/react/three-d.cjs +1 -1
  460. package/dist/charts/react/three-d.cjs.map +1 -1
  461. package/dist/charts/react/three-d.d.cts +7 -0
  462. package/dist/charts/react/three-d.d.ts +7 -0
  463. package/dist/charts/react/three-d.js +14 -13
  464. package/dist/charts/react/three-d.js.map +1 -1
  465. package/dist/charts/react/trading.cjs +1 -1
  466. package/dist/charts/react/trading.cjs.map +1 -1
  467. package/dist/charts/react/trading.d.cts +54 -2
  468. package/dist/charts/react/trading.d.ts +54 -2
  469. package/dist/charts/react/trading.js +68 -37
  470. package/dist/charts/react/trading.js.map +1 -1
  471. package/dist/charts/react/types.d.cts +11 -0
  472. package/dist/charts/react/types.d.ts +11 -0
  473. package/dist/core/contracts.cjs +1 -1
  474. package/dist/core/contracts.cjs.map +1 -1
  475. package/dist/core/contracts.js +1 -1
  476. package/dist/core/contracts.js.map +1 -1
  477. package/dist/native/charts/src/canvas.cjs +1 -1
  478. package/dist/native/charts/src/canvas.js +5 -4
  479. package/dist/native/charts/src/engine/axis.cjs +1 -1
  480. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  481. package/dist/native/charts/src/engine/axis.js +42 -19
  482. package/dist/native/charts/src/engine/axis.js.map +1 -1
  483. package/dist/native/charts/src/engine/color.cjs +1 -1
  484. package/dist/native/charts/src/engine/color.cjs.map +1 -1
  485. package/dist/native/charts/src/engine/color.js +47 -5
  486. package/dist/native/charts/src/engine/color.js.map +1 -1
  487. package/dist/native/charts/src/engine/controller.cjs +2 -2
  488. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  489. package/dist/native/charts/src/engine/controller.js +296 -251
  490. package/dist/native/charts/src/engine/controller.js.map +1 -1
  491. package/dist/native/charts/src/engine/data.cjs +1 -1
  492. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  493. package/dist/native/charts/src/engine/data.js +6 -4
  494. package/dist/native/charts/src/engine/data.js.map +1 -1
  495. package/dist/native/charts/src/engine/format.cjs +1 -1
  496. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  497. package/dist/native/charts/src/engine/format.js +15 -2
  498. package/dist/native/charts/src/engine/format.js.map +1 -1
  499. package/dist/native/charts/src/engine/labels.cjs +1 -1
  500. package/dist/native/charts/src/engine/labels.cjs.map +1 -1
  501. package/dist/native/charts/src/engine/labels.js +42 -5
  502. package/dist/native/charts/src/engine/labels.js.map +1 -1
  503. package/dist/native/charts/src/engine/layout.cjs +1 -1
  504. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  505. package/dist/native/charts/src/engine/layout.js +11 -2
  506. package/dist/native/charts/src/engine/layout.js.map +1 -1
  507. package/dist/native/charts/src/engine/model.cjs +1 -1
  508. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  509. package/dist/native/charts/src/engine/model.js +278 -174
  510. package/dist/native/charts/src/engine/model.js.map +1 -1
  511. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  512. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  513. package/dist/native/charts/src/engine/presets.cjs +2 -2
  514. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  515. package/dist/native/charts/src/engine/presets.js +110 -90
  516. package/dist/native/charts/src/engine/presets.js.map +1 -1
  517. package/dist/native/charts/src/engine/scene.cjs +1 -1
  518. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  519. package/dist/native/charts/src/engine/scene.js +421 -202
  520. package/dist/native/charts/src/engine/scene.js.map +1 -1
  521. package/dist/native/charts/src/engine/shapes/bullet.cjs +1 -1
  522. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -1
  523. package/dist/native/charts/src/engine/shapes/bullet.js +110 -110
  524. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -1
  525. package/dist/native/charts/src/engine/shapes/calendar.cjs +1 -1
  526. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -1
  527. package/dist/native/charts/src/engine/shapes/calendar.js +21 -16
  528. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -1
  529. package/dist/native/charts/src/engine/shapes/chord.cjs +2 -0
  530. package/dist/native/charts/src/engine/shapes/chord.cjs.map +1 -0
  531. package/dist/native/charts/src/engine/shapes/chord.js +419 -0
  532. package/dist/native/charts/src/engine/shapes/chord.js.map +1 -0
  533. package/dist/native/charts/src/engine/shapes/draw.cjs +1 -1
  534. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -1
  535. package/dist/native/charts/src/engine/shapes/draw.js +47 -17
  536. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -1
  537. package/dist/native/charts/src/engine/shapes/hit.cjs +1 -1
  538. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -1
  539. package/dist/native/charts/src/engine/shapes/hit.js +73 -44
  540. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -1
  541. package/dist/native/charts/src/engine/shapes/labels.cjs +1 -1
  542. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -1
  543. package/dist/native/charts/src/engine/shapes/labels.js +12 -4
  544. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -1
  545. package/dist/native/charts/src/engine/shapes/layout.cjs +2 -2
  546. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -1
  547. package/dist/native/charts/src/engine/shapes/layout.js +136 -94
  548. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -1
  549. package/dist/native/charts/src/engine/shapes/scene.cjs +1 -1
  550. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -1
  551. package/dist/native/charts/src/engine/shapes/scene.js +62 -19
  552. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -1
  553. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  554. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  555. package/dist/native/components/Chart/ChartBase.js +127 -115
  556. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  557. package/dist/native/components/Chart/charts.cjs +1 -1
  558. package/dist/native/components/Chart/charts.cjs.map +1 -1
  559. package/dist/native/components/Chart/charts.js +8 -5
  560. package/dist/native/components/Chart/charts.js.map +1 -1
  561. package/dist/native/components/Chart/scene.cjs +1 -1
  562. package/dist/native/components/Chart/scene.cjs.map +1 -1
  563. package/dist/native/components/Chart/scene.d.cts +6 -1
  564. package/dist/native/components/Chart/scene.d.ts +6 -1
  565. package/dist/native/components/Chart/scene.js +226 -108
  566. package/dist/native/components/Chart/scene.js.map +1 -1
  567. package/dist/native/components/Chart/types.d.cts +7 -1
  568. package/dist/native/components/Chart/types.d.ts +7 -1
  569. package/dist/native/components/Charts/charts.cjs +1 -1
  570. package/dist/native/components/Charts/charts.cjs.map +1 -1
  571. package/dist/native/components/Charts/charts.js +60 -43
  572. package/dist/native/components/Charts/charts.js.map +1 -1
  573. package/dist/native/components/Charts/types.d.cts +11 -0
  574. package/dist/native/components/Charts/types.d.ts +11 -0
  575. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +1 -1
  576. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -1
  577. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +1 -1
  578. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +1 -1
  579. package/dist/native/components/ShapeChart/ShapeChartBase.js +97 -106
  580. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -1
  581. package/dist/native/components/ShapeChart/charts.cjs +1 -1
  582. package/dist/native/components/ShapeChart/charts.cjs.map +1 -1
  583. package/dist/native/components/ShapeChart/charts.d.cts +6 -1
  584. package/dist/native/components/ShapeChart/charts.d.ts +6 -1
  585. package/dist/native/components/ShapeChart/charts.js +138 -96
  586. package/dist/native/components/ShapeChart/charts.js.map +1 -1
  587. package/dist/native/components/ShapeChart/draw.cjs +1 -1
  588. package/dist/native/components/ShapeChart/draw.cjs.map +1 -1
  589. package/dist/native/components/ShapeChart/draw.d.cts +1 -1
  590. package/dist/native/components/ShapeChart/draw.d.ts +1 -1
  591. package/dist/native/components/ShapeChart/draw.js +26 -17
  592. package/dist/native/components/ShapeChart/draw.js.map +1 -1
  593. package/dist/native/components/ShapeChart/geometry.cjs +1 -1
  594. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -1
  595. package/dist/native/components/ShapeChart/geometry.js +233 -70
  596. package/dist/native/components/ShapeChart/geometry.js.map +1 -1
  597. package/dist/native/components/ShapeChart/index.cjs +1 -1
  598. package/dist/native/components/ShapeChart/index.d.cts +1 -1
  599. package/dist/native/components/ShapeChart/index.d.ts +1 -1
  600. package/dist/native/components/ShapeChart/index.js +2 -2
  601. package/dist/native/components/ShapeChart/recorder.cjs +1 -1
  602. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -1
  603. package/dist/native/components/ShapeChart/recorder.d.cts +10 -1
  604. package/dist/native/components/ShapeChart/recorder.d.ts +10 -1
  605. package/dist/native/components/ShapeChart/recorder.js +19 -10
  606. package/dist/native/components/ShapeChart/recorder.js.map +1 -1
  607. package/dist/native/components/ShapeChart/types.d.cts +95 -8
  608. package/dist/native/components/ShapeChart/types.d.ts +95 -8
  609. package/dist/native/index.cjs +1 -1
  610. package/dist/native/index.js +2 -2
  611. package/dist/native/source/components/Chart/ChartBase.tsx +19 -6
  612. package/dist/native/source/components/Chart/charts.tsx +10 -3
  613. package/dist/native/source/components/Chart/scene.tsx +243 -14
  614. package/dist/native/source/components/Chart/types.ts +7 -0
  615. package/dist/native/source/components/Charts/charts.tsx +37 -2
  616. package/dist/native/source/components/Charts/types.ts +11 -0
  617. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +10 -34
  618. package/dist/native/source/components/ShapeChart/charts.tsx +91 -35
  619. package/dist/native/source/components/ShapeChart/draw.tsx +39 -8
  620. package/dist/native/source/components/ShapeChart/geometry.ts +376 -25
  621. package/dist/native/source/components/ShapeChart/index.ts +1 -0
  622. package/dist/native/source/components/ShapeChart/recorder.ts +20 -5
  623. package/dist/native/source/components/ShapeChart/types.ts +99 -6
  624. package/dist/native/source/manifest.ts +1 -0
  625. package/dist/taro/chart-a11y.d.ts +7 -0
  626. package/dist/taro/charts.d.ts +29 -6
  627. package/dist/taro/index.js +3129 -1902
  628. package/dist/taro/shape-charts.d.ts +99 -5
  629. package/dist/uni/AreaChart.vue +2 -1
  630. package/dist/uni/AreaChart.vue.d.ts +5 -1
  631. package/dist/uni/Badge.vue.d.ts +1 -1
  632. package/dist/uni/BarChart.vue +2 -1
  633. package/dist/uni/BarChart.vue.d.ts +5 -1
  634. package/dist/uni/BoxPlotChart.vue +2 -1
  635. package/dist/uni/BoxPlotChart.vue.d.ts +8 -0
  636. package/dist/uni/BubbleChart.vue +2 -1
  637. package/dist/uni/BubbleChart.vue.d.ts +4 -0
  638. package/dist/uni/BulletChart.vue.d.ts +4 -0
  639. package/dist/uni/CalendarHeatmap.vue.d.ts +2 -0
  640. package/dist/uni/CandlestickChart.vue +2 -1
  641. package/dist/uni/CandlestickChart.vue.d.ts +4 -0
  642. package/dist/uni/Chart.vue +2 -1
  643. package/dist/uni/Chart.vue.d.ts +4 -0
  644. package/dist/uni/ChordChart.vue +93 -0
  645. package/dist/uni/ChordChart.vue.d.ts +136 -0
  646. package/dist/uni/Divider.vue.d.ts +1 -1
  647. package/dist/uni/DonutChart.vue.d.ts +5 -1
  648. package/dist/uni/FunnelChart.vue.d.ts +4 -0
  649. package/dist/uni/GanttChart.vue +2 -1
  650. package/dist/uni/GanttChart.vue.d.ts +15 -0
  651. package/dist/uni/GaugeChart.vue.d.ts +5 -1
  652. package/dist/uni/HeatmapChart.vue +2 -1
  653. package/dist/uni/HeatmapChart.vue.d.ts +8 -2
  654. package/dist/uni/HistogramChart.vue +2 -1
  655. package/dist/uni/HistogramChart.vue.d.ts +4 -0
  656. package/dist/uni/HorizontalBarChart.vue +2 -1
  657. package/dist/uni/HorizontalBarChart.vue.d.ts +3 -1
  658. package/dist/uni/LineChart.vue +2 -1
  659. package/dist/uni/LineChart.vue.d.ts +4 -0
  660. package/dist/uni/MixedChart.vue +2 -1
  661. package/dist/uni/MixedChart.vue.d.ts +4 -0
  662. package/dist/uni/PieChart.vue.d.ts +5 -1
  663. package/dist/uni/QuadrantChart.vue +2 -1
  664. package/dist/uni/QuadrantChart.vue.d.ts +4 -0
  665. package/dist/uni/RadarChart.vue.d.ts +4 -0
  666. package/dist/uni/RadialBarChart.vue.d.ts +4 -0
  667. package/dist/uni/RangeAreaChart.vue +2 -1
  668. package/dist/uni/RangeAreaChart.vue.d.ts +4 -0
  669. package/dist/uni/SankeyChart.vue.d.ts +4 -0
  670. package/dist/uni/ScatterChart.vue +2 -1
  671. package/dist/uni/ScatterChart.vue.d.ts +4 -0
  672. package/dist/uni/Sparkline.vue +2 -1
  673. package/dist/uni/Sparkline.vue.d.ts +4 -0
  674. package/dist/uni/SunburstChart.vue.d.ts +4 -0
  675. package/dist/uni/ToastProvider.vue.d.ts +1 -1
  676. package/dist/uni/TreemapChart.vue.d.ts +4 -0
  677. package/dist/uni/WaterfallChart.vue +2 -1
  678. package/dist/uni/WaterfallChart.vue.d.ts +9 -0
  679. package/dist/uni/chart-a11y.d.ts +7 -0
  680. package/dist/uni/chart-a11y.js +29 -0
  681. package/dist/uni/chart-canvas.d.ts +12 -0
  682. package/dist/uni/chart-canvas.js +15 -1
  683. package/dist/uni/chart-types.d.ts +36 -5
  684. package/dist/uni/chart-types.js +31 -3
  685. package/dist/uni/charts-canvas.js +3 -2
  686. package/dist/uni/index.d.ts +2 -1
  687. package/dist/uni/index.js +1 -0
  688. package/dist/uni/manifest.d.ts +7 -0
  689. package/dist/uni/manifest.js +10 -0
  690. package/dist/uni/named-chart-options.d.ts +11 -2
  691. package/dist/uni/named-chart-options.js +21 -1
  692. package/dist/uni/shape-chart-canvas.d.ts +3 -3
  693. package/dist/uni/shape-chart-canvas.js +17 -58
  694. package/dist/uni/shape-chart-types.d.ts +53 -3
  695. package/dist/uni/shape-chart-types.js +45 -1
  696. package/dist/vue/charts-global.d.ts +48 -0
  697. package/dist/vue/charts.d.ts +18 -0
  698. package/dist/vue/charts.js +56 -0
  699. package/dist/vue/charts.js.map +1 -0
  700. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +2 -0
  701. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +8 -0
  702. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -1
  703. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +8 -2
  704. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  705. package/dist/vue/components/Chart/ChordChart.vue.d.ts +153 -0
  706. package/dist/vue/components/Chart/ChordChart.vue.js +7 -0
  707. package/dist/vue/components/Chart/ChordChart.vue.js.map +1 -0
  708. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js +81 -0
  709. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  710. package/dist/vue/components/Chart/DependencyGraph.vue.d.ts +181 -0
  711. package/dist/vue/components/Chart/DependencyGraph.vue.js +7 -0
  712. package/dist/vue/components/Chart/DependencyGraph.vue.js.map +1 -0
  713. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js +65 -0
  714. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js.map +1 -0
  715. package/dist/vue/components/Chart/GanttChart.vue.d.ts +19 -0
  716. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -1
  717. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +12 -1
  718. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  719. package/dist/vue/components/Chart/GraphChart.vue.d.ts +186 -0
  720. package/dist/vue/components/Chart/GraphChart.vue.js +7 -0
  721. package/dist/vue/components/Chart/GraphChart.vue.js.map +1 -0
  722. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js +62 -0
  723. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  724. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +9 -5
  725. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -1
  726. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +3 -1
  727. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  728. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +2 -0
  729. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +2 -0
  730. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +2 -0
  731. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +2 -0
  732. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +2 -0
  733. package/dist/vue/components/Chart/TradingChart.vue.d.ts +58 -1
  734. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -1
  735. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +31 -0
  736. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  737. package/dist/vue/components/Chart/TreeChart.vue.d.ts +174 -0
  738. package/dist/vue/components/Chart/TreeChart.vue.js +7 -0
  739. package/dist/vue/components/Chart/TreeChart.vue.js.map +1 -0
  740. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js +56 -0
  741. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  742. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +12 -1
  743. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -1
  744. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +8 -2
  745. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  746. package/dist/vue/components/Chart/graph.d.ts +156 -0
  747. package/dist/vue/components/Chart/graph.js +137 -0
  748. package/dist/vue/components/Chart/graph.js.map +1 -0
  749. package/dist/vue/components/Chart/index.d.ts +5 -1
  750. package/dist/vue/components/Chart/index.js +5 -1
  751. package/dist/vue/components/Chart/orderbook.d.ts +5 -1
  752. package/dist/vue/components/Chart/orderbook.js +2 -0
  753. package/dist/vue/components/Chart/orderbook.js.map +1 -1
  754. package/dist/vue/components/Chart/three-d.d.ts +3 -0
  755. package/dist/vue/components/Chart/three-d.js +2 -0
  756. package/dist/vue/components/Chart/three-d.js.map +1 -1
  757. package/dist/vue/components/Chart/trading.d.ts +30 -3
  758. package/dist/vue/components/Chart/trading.js +9 -0
  759. package/dist/vue/components/Chart/trading.js.map +1 -1
  760. package/dist/vue/components/Chart/types.d.ts +74 -2
  761. package/dist/vue/global.d.ts +2 -38
  762. package/dist/vue/groups/charts.js +10 -2
  763. package/dist/vue/groups/charts.js.map +1 -1
  764. package/dist/vue/index.js +6 -2
  765. package/dist/vue/internal/register.d.ts +7 -0
  766. package/dist/vue/internal/register.js +14 -0
  767. package/dist/vue/internal/register.js.map +1 -0
  768. package/dist/vue/plugin.d.ts +9 -4
  769. package/dist/vue/plugin.js +6 -11
  770. package/dist/vue/plugin.js.map +1 -1
  771. package/dist/weapp/area-chart/index.wxml +1 -1
  772. package/dist/weapp/bar-chart/index.wxml +1 -1
  773. package/dist/weapp/box-plot-chart/index.wxml +1 -1
  774. package/dist/weapp/bubble-chart/index.wxml +1 -1
  775. package/dist/weapp/candlestick-chart/index.wxml +1 -1
  776. package/dist/weapp/chart/index.wxml +1 -1
  777. package/dist/weapp/charts/canvas.js +1987 -175
  778. package/dist/weapp/charts/core.js +3 -0
  779. package/dist/weapp/chord-chart/index.js +1 -0
  780. package/dist/weapp/chord-chart/index.json +1 -0
  781. package/dist/weapp/chord-chart/index.wxml +1 -0
  782. package/dist/weapp/chord-chart/index.wxss +1 -0
  783. package/dist/weapp/controls.js +148 -57
  784. package/dist/weapp/gantt-chart/index.wxml +1 -1
  785. package/dist/weapp/heatmap-chart/index.wxml +1 -1
  786. package/dist/weapp/histogram-chart/index.wxml +1 -1
  787. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -1
  788. package/dist/weapp/line-chart/index.wxml +1 -1
  789. package/dist/weapp/mixed-chart/index.wxml +1 -1
  790. package/dist/weapp/quadrant-chart/index.wxml +1 -1
  791. package/dist/weapp/range-area-chart/index.wxml +1 -1
  792. package/dist/weapp/scatter-chart/index.wxml +1 -1
  793. package/dist/weapp/sparkline/index.wxml +1 -1
  794. package/dist/weapp/types.d.ts +96 -4
  795. package/dist/weapp/waterfall-chart/index.wxml +1 -1
  796. package/dist/web-components/components/chart/charts.d.ts +4 -2
  797. package/dist/web-components/components/chart/charts.js +8 -1
  798. package/dist/web-components/components/chart/charts.js.map +1 -1
  799. package/dist/web-components/components/chart/extended.d.ts +21 -7
  800. package/dist/web-components/components/chart/extended.js +29 -9
  801. package/dist/web-components/components/chart/extended.js.map +1 -1
  802. package/dist/web-components/components/chart/shapes-extended.d.ts +37 -1
  803. package/dist/web-components/components/chart/shapes-extended.js +27 -1
  804. package/dist/web-components/components/chart/shapes-extended.js.map +1 -1
  805. package/dist/web-components/components/chart-3d/chart-3d.d.ts +1 -1
  806. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -1
  807. package/dist/web-components/components/graph/graph.d.ts +156 -0
  808. package/dist/web-components/components/graph/graph.js +150 -0
  809. package/dist/web-components/components/graph/graph.js.map +1 -0
  810. package/dist/web-components/components/trading-chart/trading-chart.d.ts +49 -2
  811. package/dist/web-components/components/trading-chart/trading-chart.js +62 -0
  812. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -1
  813. package/dist/web-components/elements/chart.d.ts +1 -1
  814. package/dist/web-components/elements/chart.js +6 -5
  815. package/dist/web-components/elements/chart.js.map +1 -1
  816. package/dist/web-components/elements/graph.d.ts +2 -0
  817. package/dist/web-components/elements/graph.js +12 -0
  818. package/dist/web-components/elements/graph.js.map +1 -0
  819. package/dist/web-components/html-custom-data.json +318 -4
  820. package/dist/web-components/types/react.d.ts +63 -4
  821. package/dist/web-components/types/solid.d.ts +55 -8
  822. package/dist/web-components/types/svelte.d.ts +55 -8
  823. package/dist/web-components/types/vue.d.ts +55 -4
  824. package/package.json +16 -1
@@ -1,4 +1,42 @@
1
- import { Renderer3D } from './render-types.cjs';
2
- /** Largest number of dots drawn per frame (by stride over every point item) */
3
- export declare const CPU_POINT_BUDGET = 40000;
1
+ import { Frame3D, Renderer3D } from './render-types.cjs';
2
+ /**
3
+ * Alpha and radius factor of a dot standing for `thinned` dots of the full
4
+ * cloud (alpha `alpha`) spread around it: the dot covers their area (radius
5
+ * × √k, at most × 3) and keeps the density of the cloud, k / grow² dots
6
+ * per dot area: their light adds up (additive blending, at most 1) or their
7
+ * coverage stacks, 1 − (1 − alpha)^(k / grow²). A haze of faint dots, as
8
+ * the GPU draws it, instead of sparse bright sparkles.
9
+ */
10
+ export declare const thinnedDot: (alpha: number, thinned: number, additive: boolean, maxGrow?: number) => {
11
+ alpha: number;
12
+ grow: number;
13
+ };
14
+ /**
15
+ * Glow profile (as the GPU shaders): an anti-aliased core and a gaussian
16
+ * halo; `d` and `r` in pixels. Returns the alpha and the whitening.
17
+ */
18
+ export declare const glowProfile: (d: number, r: number) => [number, number];
19
+ /**
20
+ * Lit color (RGB, 0–255) of every vertex of a mesh: Blinn-Phong as in the
21
+ * GPU shaders, two-sided (the normal turned toward the eye)
22
+ */
23
+ export declare const lightVertices: (vertices: ArrayBuffer, count: number, frame: Frame3D) => Float32Array;
24
+ /**
25
+ * Axis of the linear gradient reproducing a value given at the 3 corners of
26
+ * a screen triangle (affine over it): from where it is lowest to where it
27
+ * is highest, and the offset of each corner on it. Null when it hardly
28
+ * changes or the triangle is degenerate.
29
+ */
30
+ export declare const gradientAxis: (x: readonly [number, number, number], y: readonly [number, number, number], s: readonly [number, number, number]) => {
31
+ x0: number;
32
+ y0: number;
33
+ x1: number;
34
+ y1: number;
35
+ t: number[];
36
+ } | null;
4
37
  export declare const createCanvas2d3D: (canvas: HTMLCanvasElement) => Renderer3D | null;
38
+ /**
39
+ * Alpha of an anti-aliased disc of radius `r` at the distance `d`, with an
40
+ * edge `edge` wide (pixels of the sprite): 1 inside, smooth to 0 outside
41
+ */
42
+ export declare const discProfile: (d: number, r: number, edge: number) => number;
@@ -1,4 +1,42 @@
1
- import { Renderer3D } from './render-types.js';
2
- /** Largest number of dots drawn per frame (by stride over every point item) */
3
- export declare const CPU_POINT_BUDGET = 40000;
1
+ import { Frame3D, Renderer3D } from './render-types.js';
2
+ /**
3
+ * Alpha and radius factor of a dot standing for `thinned` dots of the full
4
+ * cloud (alpha `alpha`) spread around it: the dot covers their area (radius
5
+ * × √k, at most × 3) and keeps the density of the cloud, k / grow² dots
6
+ * per dot area: their light adds up (additive blending, at most 1) or their
7
+ * coverage stacks, 1 − (1 − alpha)^(k / grow²). A haze of faint dots, as
8
+ * the GPU draws it, instead of sparse bright sparkles.
9
+ */
10
+ export declare const thinnedDot: (alpha: number, thinned: number, additive: boolean, maxGrow?: number) => {
11
+ alpha: number;
12
+ grow: number;
13
+ };
14
+ /**
15
+ * Glow profile (as the GPU shaders): an anti-aliased core and a gaussian
16
+ * halo; `d` and `r` in pixels. Returns the alpha and the whitening.
17
+ */
18
+ export declare const glowProfile: (d: number, r: number) => [number, number];
19
+ /**
20
+ * Lit color (RGB, 0–255) of every vertex of a mesh: Blinn-Phong as in the
21
+ * GPU shaders, two-sided (the normal turned toward the eye)
22
+ */
23
+ export declare const lightVertices: (vertices: ArrayBuffer, count: number, frame: Frame3D) => Float32Array;
24
+ /**
25
+ * Axis of the linear gradient reproducing a value given at the 3 corners of
26
+ * a screen triangle (affine over it): from where it is lowest to where it
27
+ * is highest, and the offset of each corner on it. Null when it hardly
28
+ * changes or the triangle is degenerate.
29
+ */
30
+ export declare const gradientAxis: (x: readonly [number, number, number], y: readonly [number, number, number], s: readonly [number, number, number]) => {
31
+ x0: number;
32
+ y0: number;
33
+ x1: number;
34
+ y1: number;
35
+ t: number[];
36
+ } | null;
4
37
  export declare const createCanvas2d3D: (canvas: HTMLCanvasElement) => Renderer3D | null;
38
+ /**
39
+ * Alpha of an anti-aliased disc of radius `r` at the distance `d`, with an
40
+ * edge `edge` wide (pixels of the sprite): 1 inside, smooth to 0 outside
41
+ */
42
+ export declare const discProfile: (d: number, r: number, edge: number) => number;
@@ -1,6 +1,26 @@
1
1
  import { drawOrder as e } from "./render-types.js";
2
2
  //#region src/engine/three-d/canvas2d.ts
3
- var t = 4e4, n = 0, r = 1, i = 2, a = (e, t, n, r, i, a, o) => {
3
+ var t = 0, n = 1, r = 2, i = 32, a = 2.2, o = 4, s = 1.25, c = 3, l = (e, t, n, r = c) => {
4
+ let i = Math.max(1, t);
5
+ if (e <= 0) return {
6
+ alpha: 0,
7
+ grow: 1
8
+ };
9
+ let a = Math.max(1, Math.min(r, Math.sqrt(i))), o = i / (a * a);
10
+ return n ? {
11
+ alpha: Math.min(1, e * o),
12
+ grow: a
13
+ } : o === 1 ? {
14
+ alpha: Math.min(e, 1),
15
+ grow: a
16
+ } : {
17
+ alpha: 1 - (1 - Math.min(e, .999)) ** o,
18
+ grow: a
19
+ };
20
+ }, u = (e, t) => {
21
+ let n = Math.max(0, Math.min(1, t * .6 + .5 - e)), r = e / t;
22
+ return [n + (1 - n) * Math.exp(-1.2 * r * r), .2 * n];
23
+ }, d = (e, t, n, r, i, a, o) => {
4
24
  let s = new Float32Array(i), c = new Float32Array(i), l = new Float32Array(i), u = new Float32Array(i);
5
25
  for (let d = 0; d < i; d++) {
6
26
  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);
@@ -12,93 +32,172 @@ var t = 4e4, n = 0, r = 1, i = 2, a = (e, t, n, r, i, a, o) => {
12
32
  z: l,
13
33
  w: u
14
34
  };
15
- }, o = (e) => e < 0 ? 0 : e > 255 ? 255 : Math.round(e), s = (s) => {
16
- let l = s.getContext("2d");
17
- if (!l) return null;
18
- let u = /* @__PURE__ */ new Map(), d = (e, t, n) => {
19
- let r = o(e) << 16 | o(t) << 8 | o(n), i = u.get(r);
20
- return i === void 0 && (i = `rgb(${r >> 16},${r >> 8 & 255},${r & 255})`, u.size > 4096 && u.clear(), u.set(r, i)), i;
21
- }, f = (o, u) => {
22
- let { width: f, height: p } = s, m = u.dpr;
23
- l.setTransform(1, 0, 0, 1, 0, 0), l.clearRect(0, 0, f, p);
24
- let h = e(o), g = u.viewProj, [_, v, y, b] = u.lighting, x = u.light, S = u.fog[0] * 255, C = u.fog[1] * 255, w = u.fog[2] * 255, T = 0;
25
- for (let e of h) e.kind === "points" && (T += e.count);
26
- let E = Math.max(1, Math.ceil(T / t)), D = [], O = [], k = [], A = 0;
27
- for (let e of h) A += e.kind === "mesh" ? e.indices.length / 3 : e.kind === "points" ? Math.ceil(e.count / E) : e.count;
28
- let j = new Float32Array(A), M = new Uint8Array(A), N = new Uint16Array(A), P = new Uint32Array(A), F = 0;
29
- h.forEach((e, t) => {
30
- let o = e.kind === "mesh" ? e.vertices : e.data;
31
- if (O.push(new Float32Array(o)), k.push(new Uint8Array(o)), e.kind === "mesh") {
32
- let r = O[t], i = a(g, r, 7, 0, e.vertexCount, f, p);
33
- D.push(i);
34
- let o = e.indices;
35
- for (let e = 0; e + 2 < o.length; e += 3) {
36
- let r = o[e], a = o[e + 1], s = o[e + 2];
37
- i.w[r] <= 0 || i.w[a] <= 0 || i.w[s] <= 0 || (j[F] = (i.z[r] + i.z[a] + i.z[s]) / 3, M[F] = n, N[F] = t, P[F] = e, F++);
35
+ }, f = (e) => e < 0 ? 0 : e > 255 ? 255 : Math.round(e), p = (e, t, n) => {
36
+ let r = new Float32Array(e), i = new Uint8Array(e), a = new Float32Array(t * 3), [o, s, c, l] = n.lighting, [u, d, f] = n.light, [p, m, h] = n.eye;
37
+ for (let e = 0; e < t; e++) {
38
+ let t = e * 7, n = r[t + 3], g = r[t + 4], _ = r[t + 5], v = Math.hypot(n, g, _);
39
+ v > 1e-6 ? (n /= v, g /= v, _ /= v) : (n = 0, g = 0, _ = 1);
40
+ let y = p - r[t], b = m - r[t + 1], x = h - r[t + 2], S = Math.hypot(y, b, x) || 1;
41
+ y /= S, b /= S, x /= S, n * y + g * b + _ * x < 0 && (n = -n, g = -g, _ = -_);
42
+ let C = Math.max(0, n * u + g * d + _ * f), w = u + y, T = d + b, E = f + x, D = Math.hypot(w, T, E) || 1;
43
+ w /= D, T /= D, E /= D;
44
+ let O = c > 0 ? Math.max(0, n * w + g * T + _ * E) ** +l * c * 255 : 0, k = o + s * C, A = e * 28 + 24;
45
+ a[e * 3] = i[A] * k + O, a[e * 3 + 1] = i[A + 1] * k + O, a[e * 3 + 2] = i[A + 2] * k + O;
46
+ }
47
+ return a;
48
+ }, m = (e, t, n) => {
49
+ let r = e[1] - e[0], i = t[1] - t[0], a = e[2] - e[0], o = t[2] - t[0], s = r * o - i * a;
50
+ if (Math.abs(s) < 1e-6) return null;
51
+ let c = n[1] - n[0], l = n[2] - n[0], u = (c * o - l * i) / s, d = (r * l - a * c) / s, f = u * u + d * d, p = Math.min(n[0], n[1], n[2]), m = Math.max(n[0], n[1], n[2]);
52
+ if (!(f > 1e-12) || m - p < 1e-6) return null;
53
+ let h = (p - n[0]) / f, g = (m - n[0]) / f;
54
+ return {
55
+ x0: e[0] + u * h,
56
+ y0: t[0] + d * h,
57
+ x1: e[0] + u * g,
58
+ y1: t[0] + d * g,
59
+ t: [
60
+ 0,
61
+ 1,
62
+ 2
63
+ ].map((e) => (n[e] - p) / (m - p))
64
+ };
65
+ }, h = 14, g = (i) => {
66
+ let u = i.getContext("2d");
67
+ if (!u) return null;
68
+ let g = /* @__PURE__ */ new Map(), y = (e, t, n) => {
69
+ let r = f(e) << 16 | f(t) << 8 | f(n), i = g.get(r);
70
+ return i === void 0 && (i = `rgb(${r >> 16},${r >> 8 & 255},${r & 255})`, g.size > 4096 && g.clear(), g.set(r, i)), i;
71
+ }, b = /* @__PURE__ */ new Map(), x = (e, t, n, r) => {
72
+ let a = !!e << 12 | f(t) >> 4 << 8 | f(n) >> 4 << 4 | f(r) >> 4, o = b.get(a);
73
+ return o === void 0 && (o = v(i, e, (a >> 8 & 15) * 17, (a >> 4 & 15) * 17, (a & 15) * 17), b.set(a, o)), o;
74
+ }, S = (f, g) => {
75
+ let { width: v, height: b } = i, S = g.dpr;
76
+ u.setTransform(1, 0, 0, 1, 0, 0), u.clearRect(0, 0, v, b);
77
+ let C = e(f), w = g.viewProj, T = g.fog[0] * 255, E = g.fog[1] * 255, D = g.fog[2] * 255, O = [], k = [], A = [], j = [], M = 0;
78
+ for (let e of C) M += e.kind === "mesh" ? e.indices.length / 3 : e.count;
79
+ let N = new Float32Array(M), P = new Uint8Array(M), F = new Uint16Array(M), I = new Uint32Array(M), L = 0;
80
+ C.forEach((e, i) => {
81
+ let a = e.kind === "mesh" ? e.vertices : e.data;
82
+ if (k.push(new Float32Array(a)), A.push(new Uint8Array(a)), j.push(e.kind === "mesh" ? p(e.vertices, e.vertexCount, g) : null), e.kind === "mesh") {
83
+ let n = k[i], r = d(w, n, 7, 0, e.vertexCount, v, b);
84
+ O.push(r);
85
+ let a = e.indices;
86
+ for (let e = 0; e + 2 < a.length; e += 3) {
87
+ let n = a[e], o = a[e + 1], s = a[e + 2];
88
+ r.w[n] <= 0 || r.w[o] <= 0 || r.w[s] <= 0 || (N[L] = (r.z[n] + r.z[o] + r.z[s]) / 3, P[L] = t, F[L] = i, I[L] = e, L++);
38
89
  }
39
90
  } else if (e.kind === "points") {
40
- let n = O[t], i = a(g, n, 5, 0, e.count, f, p);
41
- D.push(i);
42
- for (let n = 0; n < e.count; n += E) i.w[n] <= 0 || (j[F] = i.z[n], M[F] = r, N[F] = t, P[F] = n, F++);
91
+ let t = k[i], r = d(w, t, 5, 0, e.count, v, b);
92
+ O.push(r);
93
+ for (let t = 0; t < e.count; t++) r.w[t] <= 0 || (N[L] = r.z[t], P[L] = n, F[L] = i, I[L] = t, L++);
43
94
  } else {
44
- let n = O[t], r = a(g, n, 7, 0, e.count, f, p), o = a(g, n, 7, 3, e.count, f, p);
45
- D.push({
46
- x: c(r.x, o.x),
47
- y: c(r.y, o.y),
48
- z: c(r.z, o.z),
49
- w: c(r.w, o.w)
95
+ let t = k[i], n = d(w, t, 7, 0, e.count, v, b), a = d(w, t, 7, 3, e.count, v, b);
96
+ O.push({
97
+ x: _(n.x, a.x),
98
+ y: _(n.y, a.y),
99
+ z: _(n.z, a.z),
100
+ w: _(n.w, a.w)
50
101
  });
51
- let s = e.bias * 5;
52
- for (let n = 0; n < e.count; n++) r.w[n] <= 0 || o.w[n] <= 0 || (j[F] = (r.z[n] + o.z[n]) / 2 - s, M[F] = i, N[F] = t, P[F] = n, F++);
102
+ let o = e.bias * 5;
103
+ for (let t = 0; t < e.count; t++) n.w[t] <= 0 || a.w[t] <= 0 || (N[L] = (n.z[t] + a.z[t]) / 2 - o, P[L] = r, F[L] = i, I[L] = t, L++);
53
104
  }
54
105
  });
55
- let I = new Uint32Array(F);
56
- for (let e = 0; e < F; e++) I[e] = e;
57
- I.sort((e, t) => j[t] - j[e]), l.lineJoin = "round", l.lineCap = "round";
58
- let L = -1, R = (e) => {
59
- e !== L && (l.globalAlpha = e, L = e);
60
- }, z = u.distance - u.radius;
61
- for (let e = 0; e < F; e++) {
62
- let t = I[e], a = h[N[t]], o = D[N[t]], s = O[N[t]], c = k[N[t]];
63
- if (!a || !o || !s || !c) continue;
64
- let f = P[t];
65
- if (a.kind === "mesh" && M[t] === n) {
66
- let e = a.indices[f], t = a.indices[f + 1], n = a.indices[f + 2], r = s[e * 7], i = s[e * 7 + 1], p = s[e * 7 + 2], m = s[t * 7] - r, h = s[t * 7 + 1] - i, g = s[t * 7 + 2] - p, S = s[n * 7] - r, C = s[n * 7 + 1] - i, w = s[n * 7 + 2] - p, T = h * w - g * C, E = g * S - m * w, D = m * C - h * S, O = Math.hypot(T, E, D) || 1;
67
- T /= O, E /= O, D /= O;
68
- let k = u.eye[0] - r, A = u.eye[1] - i, j = u.eye[2] - p, M = Math.hypot(k, A, j) || 1;
69
- k /= M, A /= M, j /= M, T * k + E * A + D * j < 0 && (T = -T, E = -E, D = -D);
70
- let N = Math.max(0, T * x[0] + E * x[1] + D * x[2]), P = x[0] + k, F = x[1] + A, I = x[2] + j, L = Math.hypot(P, F, I) || 1;
71
- P /= L, F /= L, I /= L;
72
- let z = Math.max(0, T * P + E * F + D * I) ** +b * y * 255, B = _ + v * N, V = e * 28 + 24, H = t * 28 + 24, U = n * 28 + 24, W = (c[V] + c[H] + c[U]) / 3, G = (c[V + 1] + c[H + 1] + c[U + 1]) / 3, K = (c[V + 2] + c[H + 2] + c[U + 2]) / 3, q = (c[V + 3] + c[H + 3] + c[U + 3]) / 765, J = d(W * B + z, G * B + z, K * B + z);
73
- R(a.opacity * q), l.beginPath(), l.moveTo(o.x[e], o.y[e]), l.lineTo(o.x[t], o.y[t]), l.lineTo(o.x[n], o.y[n]), l.closePath(), l.fillStyle = J, l.fill(), a.opacity >= 1 && (l.strokeStyle = J, l.lineWidth = .75, l.stroke());
74
- } else if (a.kind === "points" && M[t] === r) {
75
- let e = a.perspective && !u.orthographic ? Math.max(.5, Math.min(2, u.distance / Math.max(o.w[f], 1e-6))) : 1, t = Math.max(.5, s[f * 5 + 3] * m * e / 2), n = f * 20 + 16, r = s[f * 5] - u.eye[0], i = s[f * 5 + 1] - u.eye[1], p = s[f * 5 + 2] - u.eye[2], h = Math.max(0, Math.min(1, (Math.hypot(r, i, p) - z) / (2 * u.radius))) * .45, g = c[n] + (S - c[n]) * h, _ = c[n + 1] + (C - c[n + 1]) * h, v = c[n + 2] + (w - c[n + 2]) * h;
76
- R(a.opacity * (c[n + 3] / 255)), l.fillStyle = d(g, _, v), t < 1.5 ? l.fillRect(o.x[f] - t, o.y[f] - t, t * 2, t * 2) : (l.beginPath(), l.arc(o.x[f], o.y[f], t, 0, Math.PI * 2), l.fill());
77
- } else if (a.kind === "lines" && M[t] === i) {
78
- let e = f * 28 + 24, t = o.x.length / 2;
79
- R(a.opacity * (c[e + 3] / 255)), l.strokeStyle = d(c[e], c[e + 1], c[e + 2]), l.lineWidth = Math.max(.5, a.width * m), l.beginPath(), l.moveTo(o.x[f], o.y[f]), l.lineTo(o.x[t + f], o.y[t + f]), l.stroke();
106
+ let R = new Uint32Array(L);
107
+ for (let e = 0; e < L; e++) R[e] = e;
108
+ R.sort((e, t) => N[t] - N[e]), u.lineJoin = "round", u.lineCap = "round";
109
+ let z = -1, B = (e) => {
110
+ e !== z && (u.globalAlpha = e, z = e);
111
+ }, V = !1, H = (e) => {
112
+ e !== V && (u.globalCompositeOperation = e ? "lighter" : "source-over", V = e);
113
+ }, U = g.distance - g.radius, W = Math.max(0, g.exposure);
114
+ for (let e = 0; e < L; e++) {
115
+ let i = R[e], d = C[F[i]], f = O[F[i]], p = k[F[i]], _ = A[F[i]];
116
+ if (!d || !f || !p || !_) continue;
117
+ let v = I[i];
118
+ if (H(d.kind === "points" && !!d.additive), d.kind === "mesh" && P[i] === t) {
119
+ let e = d.indices[v], t = d.indices[v + 1], n = d.indices[v + 2], r = j[F[i]];
120
+ if (!r) continue;
121
+ let a = e * 28 + 24, o = t * 28 + 24, s = n * 28 + 24, c = (_[a + 3] + _[o + 3] + _[s + 3]) / 765, l = y((r[e * 3] + r[t * 3] + r[n * 3]) / 3, (r[e * 3 + 1] + r[t * 3 + 1] + r[n * 3 + 1]) / 3, (r[e * 3 + 2] + r[t * 3 + 2] + r[n * 3 + 2]) / 3), p = 0, g = 0;
122
+ for (let i = 0; i < 3; i++) {
123
+ let a = r[e * 3 + i], o = r[t * 3 + i], s = r[n * 3 + i], c = Math.max(a, o, s) - Math.min(a, o, s);
124
+ c > g && (g = c, p = i);
125
+ }
126
+ if (g > h) {
127
+ let i = m([
128
+ f.x[e],
129
+ f.x[t],
130
+ f.x[n]
131
+ ], [
132
+ f.y[e],
133
+ f.y[t],
134
+ f.y[n]
135
+ ], [
136
+ r[e * 3 + p],
137
+ r[t * 3 + p],
138
+ r[n * 3 + p]
139
+ ]);
140
+ if (i) {
141
+ let a = u.createLinearGradient(i.x0, i.y0, i.x1, i.y1);
142
+ [
143
+ e,
144
+ t,
145
+ n
146
+ ].forEach((e, t) => a.addColorStop(i.t[t], y(r[e * 3], r[e * 3 + 1], r[e * 3 + 2]))), l = a;
147
+ }
148
+ }
149
+ B(d.opacity * c), u.beginPath(), u.moveTo(f.x[e], f.y[e]), u.lineTo(f.x[t], f.y[t]), u.lineTo(f.x[n], f.y[n]), u.closePath(), u.fillStyle = l, u.fill(), d.opacity >= 1 && !d.transparent && (u.strokeStyle = l, u.lineWidth = Math.max(1, S * .6), u.stroke());
150
+ } else if (d.kind === "points" && P[i] === n) {
151
+ let e = d.perspective && !g.orthographic ? Math.max(.5, Math.min(2, g.distance / Math.max(f.w[v], 1e-6))) : 1, t = d.style === 2, n = !!d.additive, r = Math.max(0, p[v * 5 + 3]) * S * e / 2, i = t ? .75 : .5, m = v * 20 + 16, h = p[v * 5] - g.eye[0], b = p[v * 5 + 1] - g.eye[1], C = p[v * 5 + 2] - g.eye[2], w = Math.max(0, Math.min(1, (Math.hypot(h, b, C) - U) / (2 * g.radius))) * .45, O = _[m], k = _[m + 1], A = _[m + 2], j = d.opacity * (_[m + 3] / 255) * Math.min(1, r * r / (i * i));
152
+ n ? j *= (1 - w) * W : (O += (T - O) * w, k += (E - k) * w, A += (D - A) * w);
153
+ let M = l(j, d.thinned ?? 1, n, n ? c : 1 + 2 * Math.max(0, Math.min(1, (4 - r) / 2.5))), N = Math.max(r, i) * M.grow;
154
+ B(M.alpha);
155
+ let P = t || N <= o ? x(t, O, k, A) : null;
156
+ if (P) {
157
+ let e = t ? N * a : N * s;
158
+ u.drawImage(P, f.x[v] - e, f.y[v] - e, e * 2, e * 2);
159
+ } else u.fillStyle = y(O, k, A), u.beginPath(), u.arc(f.x[v], f.y[v], N, 0, Math.PI * 2), u.fill();
160
+ } else if (d.kind === "lines" && P[i] === r) {
161
+ let e = v * 28 + 24, t = f.x.length / 2;
162
+ B(d.opacity * (_[e + 3] / 255)), u.strokeStyle = y(_[e], _[e + 1], _[e + 2]), u.lineWidth = Math.max(.5, d.width * S), u.beginPath(), u.moveTo(f.x[v], f.y[v]), u.lineTo(f.x[t + v], f.y[t + v]), u.stroke();
80
163
  }
81
164
  }
82
- l.globalAlpha = 1;
165
+ u.globalAlpha = 1, H(!1);
83
166
  };
84
167
  return {
85
168
  kind: "canvas2d",
86
- canvas: s,
169
+ canvas: i,
87
170
  resize(e, t) {
88
- s.width = Math.max(1, e), s.height = Math.max(1, t);
171
+ i.width = Math.max(1, e), i.height = Math.max(1, t);
89
172
  },
90
173
  render(e, t) {
91
- f(e, t);
174
+ S(e, t);
92
175
  },
93
176
  destroy() {
94
- u.clear(), l.setTransform(1, 0, 0, 1, 0, 0), l.clearRect(0, 0, s.width, s.height);
177
+ g.clear(), b.clear(), u.setTransform(1, 0, 0, 1, 0, 0), u.clearRect(0, 0, i.width, i.height);
95
178
  }
96
179
  };
97
- }, c = (e, t) => {
180
+ }, _ = (e, t) => {
98
181
  let n = new Float32Array(e.length + t.length);
99
182
  return n.set(e, 0), n.set(t, e.length), n;
183
+ }, v = (e, t, n, r, o) => {
184
+ let c = e.ownerDocument.createElement("canvas");
185
+ c.width = i, c.height = i;
186
+ let l = c.getContext("2d");
187
+ if (!l || typeof l.createImageData != "function") return null;
188
+ let d = l.createImageData(i, i);
189
+ if (!d) return null;
190
+ let f = i / 2, p = f / (t ? a : s);
191
+ for (let e = 0; e < i; e++) for (let a = 0; a < i; a++) {
192
+ let s = Math.hypot(a + .5 - f, e + .5 - f), [c, l] = t ? u(s, p) : [y(s, p, f - p), 0], m = (e * i + a) * 4;
193
+ d.data[m] = n + (255 - n) * l, d.data[m + 1] = r + (255 - r) * l, d.data[m + 2] = o + (255 - o) * l, d.data[m + 3] = s < f ? c * 255 : 0;
194
+ }
195
+ return l.putImageData(d, 0, 0), c;
196
+ }, y = (e, t, n) => {
197
+ let r = Math.max(0, Math.min(1, (t + n / 2 - e) / n));
198
+ return r * r * (3 - 2 * r);
100
199
  };
101
200
  //#endregion
102
- export { t as CPU_POINT_BUDGET, s as createCanvas2d3D };
201
+ export { g as createCanvas2d3D, y as discProfile, u as glowProfile, m as gradientAxis, p as lightVertices, l as thinnedDot };
103
202
 
104
203
  //# sourceMappingURL=canvas2d.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvas2d.js","names":["CPU_POINT_BUDGET","TRIANGLE","POINT","SEGMENT","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","r","g","b","s","render","dpr","frame","ordered","drawOrder","items","ambient","diffuse","specular","shininess","L","fogR","fogG","fogB","totalPoints","item","pointStride","projected","floats","bytes","capacity","depth","kind","owner","element","n","raw","f32","k","p","idx","t","a","c","concat","bias","order","currentAlpha","alpha","value","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","radius","wx","wy","wz","fog","half","out"],"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 sorted back to front), flat\n// lighting per triangle. Point clouds are decimated to a fixed budget; the\n// chart also resamples the surfaces (`CPU_BUDGET`) for this backend.\n\nimport {\n drawOrder,\n type Frame3D,\n type Item3D,\n type Renderer3D,\n} from \"./render-types\";\n\n/** Largest number of dots drawn per frame (by stride over every point item) */\nexport const CPU_POINT_BUDGET = 40_000;\n\nconst TRIANGLE = 0;\nconst POINT = 1;\nconst SEGMENT = 2;\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\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 let totalPoints = 0;\n for (const item of ordered)\n if (item.kind === \"points\") totalPoints += item.count;\n const pointStride = Math.max(1, Math.ceil(totalPoints / CPU_POINT_BUDGET));\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 +=\n item.kind === \"mesh\"\n ? item.indices.length / 3\n : item.kind === \"points\"\n ? Math.ceil(item.count / pointStride)\n : 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 += pointStride) {\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 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 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) {\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 radius = Math.max(0.5, (f32[e * 5 + 3] * dpr * scale) / 2);\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 const r = u8[c] + (fogR - u8[c]) * fog;\n const g = u8[c + 1] + (fogG - u8[c + 1]) * fog;\n const b = u8[c + 2] + (fogB - u8[c + 2]) * fog;\n alpha(item.opacity * (u8[c + 3] / 255));\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 } 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 };\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 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"],"mappings":"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"}
1
+ {"version":3,"file":"canvas2d.js","names":["TRIANGLE","POINT","SEGMENT","SPRITE","GLOW_REACH","SPRITE_DISC_MAX","DISC_REACH","MAX_GROW","thinnedDot","k","thinned","alpha","grow","maxGrow","density","additive","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","lightVertices","f32","vertices","u8","out","ambient","diffuse","specular","shininess","frame","lx","ly","lz","cx","cy","cz","nx","ny","nz","len","ex","ey","ez","el","lambert","hx","hy","hz","hl","spec","light","c","gradientAxis","d1x","d1y","d2x","d2y","det","ds1","s","ds2","gx","gy","gg","lo","hi","k0","k1","GRADIENT_SPREAD","createCanvas2d3D","ctx","canvas","styles","style","key","g","b","sprites","sprite","makeSprite","glow","render","dpr","ordered","drawOrder","items","fogR","fogG","fogB","projected","floats","bytes","lit","capacity","item","depth","kind","owner","element","n","raw","p","idx","t","a","concat","bias","order","currentAlpha","value","lighter","composite","add","near","exposure","e","lc","ca","cb","cc","ac","fill","channel","spread","ch","va","vb","vc","axis","gradient","scale","raw0","min","wx","wy","wz","fog","dot","radius","image","reach","half","pixels","center","white","discProfile","edge"],"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 and dots blend in the right order),\n// lighting per vertex as on the GPU (gradients across the triangles whose\n// corners differ). The chart thins the point clouds and resamples\n// the surfaces for this backend (`CPU_BUDGET`): what it gets is what is\n// drawn, and what can be hovered. Small dots are anti-aliased sprites (soft\n// discs, glows); a cloud thinned to 1 dot out of k keeps the look of the\n// full cloud (`thinnedDot`).\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 sprites (px); the glow halo reaches 2.2 × the core radius */\nconst SPRITE = 32;\nconst GLOW_REACH = 2.2;\n/** Dots up to this radius (device px) are disc sprites, larger ones arcs */\nconst SPRITE_DISC_MAX = 4;\n/** The disc sprites extend past the dot radius by this factor (soft edge) */\nconst DISC_REACH = 1.25;\n/** Largest growth of the radius of a thinned dot */\nconst MAX_GROW = 3;\n\n/**\n * Alpha and radius factor of a dot standing for `thinned` dots of the full\n * cloud (alpha `alpha`) spread around it: the dot covers their area (radius\n * × √k, at most × 3) and keeps the density of the cloud, k / grow² dots\n * per dot area: their light adds up (additive blending, at most 1) or their\n * coverage stacks, 1 − (1 − alpha)^(k / grow²). A haze of faint dots, as\n * the GPU draws it, instead of sparse bright sparkles.\n */\nexport const thinnedDot = (\n alpha: number,\n thinned: number,\n additive: boolean,\n maxGrow = MAX_GROW,\n): { alpha: number; grow: number } => {\n const k = Math.max(1, thinned);\n if (alpha <= 0) return { alpha: 0, grow: 1 };\n const grow = Math.max(1, Math.min(maxGrow, Math.sqrt(k)));\n const density = k / (grow * grow);\n if (additive) return { alpha: Math.min(1, alpha * density), grow };\n const a = Math.min(alpha, 0.999);\n if (density === 1) return { alpha: Math.min(alpha, 1), grow };\n return { alpha: 1 - Math.pow(1 - a, density), grow };\n};\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\n/**\n * Lit color (RGB, 0–255) of every vertex of a mesh: Blinn-Phong as in the\n * GPU shaders, two-sided (the normal turned toward the eye)\n */\nexport const lightVertices = (\n vertices: ArrayBuffer,\n count: number,\n frame: Frame3D,\n): Float32Array => {\n const f32 = new Float32Array(vertices);\n const u8 = new Uint8Array(vertices);\n const out = new Float32Array(count * 3);\n const [ambient, diffuse, specular, shininess] = frame.lighting;\n const [lx, ly, lz] = frame.light;\n const [cx, cy, cz] = frame.eye;\n for (let v = 0; v < count; v++) {\n const o = v * 7;\n let nx = f32[o + 3];\n let ny = f32[o + 4];\n let nz = f32[o + 5];\n const len = Math.hypot(nx, ny, nz);\n if (len > 1e-6) {\n nx /= len;\n ny /= len;\n nz /= len;\n } else {\n nx = 0;\n ny = 0;\n nz = 1;\n }\n let ex = cx - f32[o];\n let ey = cy - f32[o + 1];\n let ez = cz - f32[o + 2];\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 * lx + ny * ly + nz * lz);\n let hx = lx + ex;\n let hy = ly + ey;\n let hz = lz + ez;\n const hl = Math.hypot(hx, hy, hz) || 1;\n hx /= hl;\n hy /= hl;\n hz /= hl;\n const spec =\n specular > 0\n ? Math.pow(Math.max(0, nx * hx + ny * hy + nz * hz), shininess) *\n specular *\n 255\n : 0;\n const light = ambient + diffuse * lambert;\n const c = v * 28 + 24;\n out[v * 3] = u8[c] * light + spec;\n out[v * 3 + 1] = u8[c + 1] * light + spec;\n out[v * 3 + 2] = u8[c + 2] * light + spec;\n }\n return out;\n};\n\n/**\n * Axis of the linear gradient reproducing a value given at the 3 corners of\n * a screen triangle (affine over it): from where it is lowest to where it\n * is highest, and the offset of each corner on it. Null when it hardly\n * changes or the triangle is degenerate.\n */\nexport const gradientAxis = (\n x: readonly [number, number, number],\n y: readonly [number, number, number],\n s: readonly [number, number, number],\n): { x0: number; y0: number; x1: number; y1: number; t: number[] } | null => {\n const d1x = x[1] - x[0];\n const d1y = y[1] - y[0];\n const d2x = x[2] - x[0];\n const d2y = y[2] - y[0];\n const det = d1x * d2y - d1y * d2x;\n if (Math.abs(det) < 1e-6) return null;\n const ds1 = s[1] - s[0];\n const ds2 = s[2] - s[0];\n // screen gradient of the value: g · d1 = ds1, g · d2 = ds2\n const gx = (ds1 * d2y - ds2 * d1y) / det;\n const gy = (d1x * ds2 - d2x * ds1) / det;\n const gg = gx * gx + gy * gy;\n const lo = Math.min(s[0], s[1], s[2]);\n const hi = Math.max(s[0], s[1], s[2]);\n if (!(gg > 1e-12) || hi - lo < 1e-6) return null;\n const k0 = (lo - s[0]) / gg;\n const k1 = (hi - s[0]) / gg;\n return {\n x0: x[0] + gx * k0,\n y0: y[0] + gy * k0,\n x1: x[0] + gx * k1,\n y1: y[0] + gy * k1,\n t: [0, 1, 2].map((i) => (s[i]! - lo) / (hi - lo)),\n };\n};\n\n/**\n * Triangles whose corner colors differ by more than this (0–255, on one\n * channel) are filled with a gradient (smooth like the GPU): the others,\n * most of a surface, with their mean color (much cheaper)\n */\nconst GRADIENT_SPREAD = 14;\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 // sprites by shape and color (4 bits per channel); null: no offscreen canvas\n const sprites = new Map<number, HTMLCanvasElement | null>();\n const sprite = (glow: boolean, r: number, g: number, b: number) => {\n const key =\n ((glow ? 1 : 0) << 12) |\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 glow,\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 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 // lit color of every mesh vertex (null for dots and segments)\n const lit: (Float32Array | null)[] = [];\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 lit.push(\n item.kind === \"mesh\"\n ? lightVertices(item.vertices, item.vertexCount, frame)\n : null,\n );\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 const exposure = Math.max(0, frame.exposure);\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 // smooth shading like the GPU (per-fragment there): the colors of\n // the lit vertices, blended by a gradient where they differ (steep\n // cells of a color-mapped surface), else their mean. One flat color\n // per triangle shows the grid as rings and steps on curved surfaces.\n const lc = lit[owner[i]];\n if (!lc) continue;\n const ca = a * 28 + 24;\n const cb = b * 28 + 24;\n const cc = c * 28 + 24;\n const ac = (u8[ca + 3] + u8[cb + 3] + u8[cc + 3]) / 765;\n let fill: string | CanvasGradient = style(\n (lc[a * 3] + lc[b * 3] + lc[c * 3]) / 3,\n (lc[a * 3 + 1] + lc[b * 3 + 1] + lc[c * 3 + 1]) / 3,\n (lc[a * 3 + 2] + lc[b * 3 + 2] + lc[c * 3 + 2]) / 3,\n );\n // the channel that changes most gives the axis of the gradient\n let channel = 0;\n let spread = 0;\n for (let ch = 0; ch < 3; ch++) {\n const va = lc[a * 3 + ch];\n const vb = lc[b * 3 + ch];\n const vc = lc[c * 3 + ch];\n const d = Math.max(va, vb, vc) - Math.min(va, vb, vc);\n if (d > spread) {\n spread = d;\n channel = ch;\n }\n }\n if (spread > GRADIENT_SPREAD) {\n const axis = gradientAxis(\n [p.x[a], p.x[b], p.x[c]],\n [p.y[a], p.y[b], p.y[c]],\n [lc[a * 3 + channel], lc[b * 3 + channel], lc[c * 3 + channel]],\n );\n if (axis) {\n const gradient = ctx.createLinearGradient(\n axis.x0,\n axis.y0,\n axis.x1,\n axis.y1,\n );\n [a, b, c].forEach((v, k) =>\n gradient.addColorStop(\n axis.t[k]!,\n style(lc[v * 3], lc[v * 3 + 1], lc[v * 3 + 2]),\n ),\n );\n fill = gradient;\n }\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 anti-aliasing seams between neighbouring triangles\n ctx.strokeStyle = fill;\n ctx.lineWidth = Math.max(1, dpr * 0.6);\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 const additive = !!item.additive;\n const raw0 = (Math.max(0, f32[e * 5 + 3]) * dpr * scale) / 2;\n const min = glow ? 0.75 : 0.5;\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 // alpha of the dot as the GPU draws it (sub-pixel dots: by area)\n let a =\n item.opacity *\n (u8[c + 3] / 255) *\n Math.min(1, (raw0 * raw0) / (min * min));\n if (additive) {\n a *= (1 - fog) * exposure;\n } else {\n r += (fogR - r) * fog;\n g += (fogG - g) * fog;\n b += (fogB - b) * fog;\n }\n // thinned clouds: each dot stands for the dropped ones (blended\n // dots grow only while small: big markers keep their size)\n const dot = thinnedDot(\n a,\n item.thinned ?? 1,\n additive,\n additive\n ? MAX_GROW\n : 1 + (MAX_GROW - 1) * Math.max(0, Math.min(1, (4 - raw0) / 2.5)),\n );\n const radius = Math.max(raw0, min) * dot.grow;\n alpha(dot.alpha);\n const image =\n glow || radius <= SPRITE_DISC_MAX ? sprite(glow, r, g, b) : null;\n if (image) {\n const reach = glow ? radius * GLOW_REACH : radius * DISC_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 ctx.beginPath();\n ctx.arc(p.x[e], p.y[e], radius, 0, Math.PI * 2);\n ctx.fill();\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/**\n * A sprite of a color (`SPRITE` px): a glow (core and halo filling it) or\n * an anti-aliased disc (radius `SPRITE / 2 / DISC_REACH`, a soft 1 px edge\n * once scaled to the dot); null without offscreen canvas\n */\nconst makeSprite = (\n canvas: HTMLCanvasElement,\n glow: boolean,\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 ? GLOW_REACH : DISC_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] = glow\n ? glowProfile(d, radius)\n : [discProfile(d, radius, center - radius), 0];\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\n/**\n * Alpha of an anti-aliased disc of radius `r` at the distance `d`, with an\n * edge `edge` wide (pixels of the sprite): 1 inside, smooth to 0 outside\n */\nexport const discProfile = (d: number, r: number, edge: number): number => {\n const t = Math.max(0, Math.min(1, (r + edge / 2 - d) / edge));\n return t * t * (3 - 2 * t);\n};\n"],"mappings":"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"}
@@ -1,2 +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;
1
+ const e=require("../color.cjs"),t=require("../locale.cjs"),n=require("../scale.cjs"),r=require("../renderers/follow.cjs"),i=require("../theme.cjs"),a=require("./colormap.cjs"),o=require("./detect.cjs"),s=require("./dom.cjs"),c=require("./labels.cjs"),l=require("./model.cjs"),u=require("./geometry.cjs"),d=require("./hover.cjs"),f=require("./math.cjs"),p=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))))},re={ambient:.5,diffuse:.6,specular:.25,shininess:32},ie=12,ae=.45,oe=5,se=380,ce=e=>f.clampCamera({azimuth:e?.azimuth??f.DEFAULT_CAMERA.azimuth,elevation:e?.elevation??f.DEFAULT_CAMERA.elevation,zoom:e?.zoom??f.DEFAULT_CAMERA.zoom,pan:[0,0],projection:e?.projection??f.DEFAULT_CAMERA.projection}),m=e=>({...e,pan:[e.pan[0],e.pan[1]]}),le=(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,ue=(e,t,n)=>{let r=(t.azimuth-e.azimuth)%360;return r>180&&(r-=360),r<-180&&(r+=360),f.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})},de=(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}}},fe=(fe,me)=>{let h=fe.ownerDocument,g=h.defaultView,_=s.createChart3DDom(fe),v=_.stage,y=me,b=i.readTheme(_.root,y.palette),he=0,x=!1,S=new Map,C=(e,t)=>{S.get(e)?.forEach(e=>e(t))},ge=new Set,w=l.buildModel(y),T,E,_e=``,ve=0,ye=u.createGeometryBuilder(),D={items:[],targets:[],counts:[]},O=!0,be=ee.createPicker(),xe=te.createDepthSorter(),k=null,Se=0,Ce=()=>{},we=new Promise(e=>{Ce=e}),A=ce(y.camera),Te=JSON.stringify(y.camera??{}),j=m(A),M=null,N=0,P=!0,F=null,I=null,L=p.overlayStyle(b,pe(b)),R=null,z=null,B=null,V=null,Ee=!1,H=!0,U=0,W=typeof g?.matchMedia==`function`?g.matchMedia(`(prefers-reduced-motion: reduce)`):null,G=()=>{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}},De=()=>{let e=y.autoRotate;return e===!0?ie:typeof e==`number`&&Number.isFinite(e)?e:0},Oe=()=>y.colorBar!==!1&&!!w.colorDomain,ke=()=>({...y,series:y.series.map((e,t)=>{let n=e.id??String(t);return ge.has(n)?{...e,hidden:!e.hidden}:e})}),Ae=t=>b.resolve?b.resolve(t,[.5,.5,.5,1]):e.parseColor(t)??[.5,.5,.5,1],je=()=>{let t=`${JSON.stringify(y.colorScale??`viridis`)}|${he}`;(t!==_e||!E)&&(_e=t,E=a.colorLut(a.colorStops(y.colorScale,(t,n)=>b.resolve?b.resolve(t,n):e.parseColor(t)??n)),ve++);let n=b.palette.length?b.palette:[b.primary];T={series:w.series.map((e,t)=>e.color?Ae(e.color):n[t%n.length]??b.primary),resolve:Ae,lut:E,wire:[b.text[0],b.text[1],b.text[2],.38]}},K=()=>{w=l.buildModel(ke()),je(),O=!0,L=p.overlayStyle(b,pe(b)),Ne(),Pe(),q(!0),R&&V&&Ge(V.x,V.y)},Me=``,Ne=()=>{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,o=i.position===`bottom`,l=`${r}|${o}|${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===Me)return;Me=l;let u=[..._.legend.children].indexOf(h.activeElement);_.legend.replaceChildren(),_.legend.style.display=r?`flex`:`none`,r&&(_.legend.style.order=o?`1`:`0`,_.legend.style.padding=o?`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`,()=>{ge.has(t.id)?ge.delete(t.id):ge.add(t.id);let{labels:e}=w.locale;_.live.textContent=c.fill(t.hidden?e.shown:e.hidden,{name:t.name}),K()})),s.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(s.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())},Pe=()=>{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?c.fill(e.chartNamed,{names:n}):e.chart)),G()?.keyboard?v.tabIndex=0:v.removeAttribute(`tabindex`),v.style.cursor=G()?.rotate?`grab`:`default`;let r=[];r.push(c.fill(e.seriesCount,{count:t(w.series.length)}));for(let n of w.series){let i=n.name||c.fill(e.series,{n:n.index+1}),a=n.type===`surface`?c.fill(e.grid,{rows:t(n.grid.rows),cols:t(n.grid.cols)}):n.type===`bar`?c.fill(e.bars,{count:t(n.bars.count)}):c.fill(n.type===`line`?e.vertices:e.points,{count:t(n.cols.count)});r.push(c.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):c.fill(e.range,{min:n.format(n.domain[0]),max:n.format(n.domain[1])});r.push(c.fill(n.title?e.axisTitled:e.axis,{axis:t.toUpperCase(),title:n.title,range:i}))}_.summary.textContent=r.join(` `)};function q(e=!0){e&&(P=!0),!(x||N||!g)&&(N=g.requestAnimationFrame(Le))}let Fe=()=>De()!==0&&H&&!Ee&&!X&&!M&&!W?.matches&&h.visibilityState!==`hidden`,Ie=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,f.normalize(t)};function Le(e){if(N=0,x)return;let t=v.clientWidth,n=v.clientHeight;if(t<=0||n<=0)return;let r=g?.devicePixelRatio||1;if(M){let t=Math.min(1,(e-M.start)/se),n=1-(1-t)**3;j=ue(M.from,M.to,n),t>=1&&(j=m(M.to),M=null,C(`camera`,m(j))),P=!0}else if(Fe()){let t=U?Math.min(.1,(e-U)/1e3):0;t>0&&(j=f.clampCamera({...j,azimuth:j.azimuth-De()*t}),P=!0),U=e}else U=0;s.sizeCanvas(_.background,t,n,r),s.sizeCanvas(_.foreground,t,n,r);let i=de(t,n,Oe()),a=y.camera?.fov??32,o=[w.x.half,w.y.half,w.z.half],c=f.cameraFrame(j,o,t,n,i.fit,a);if(F=c,I=i,P){P=!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&&p.drawWalls(e,c,w,L)),k){O&&(D=ye(w,T,k.kind===`canvas2d`?u.CPU_BUDGET:u.GPU_BUDGET,ve),O=!1,be.reset());let e=Math.max(1,Math.round(t*r)),i=Math.max(1,Math.round(n*r));(k.canvas.width!==e||k.canvas.height!==i)&&k.resize(e,i),k.canvas.style.width=`${t}px`,k.canvas.style.height=`${n}px`;let a=y.lighting??{},o={viewProj:c.viewProj,eye:c.eye,light:Ie(c),orthographic:c.orthographic,distance:c.distance,radius:c.radius,width:e,height:i,dpr:r,lighting:[a.ambient??re.ambient,a.diffuse??re.diffuse,a.specular??re.specular,a.shininess??re.shininess],fog:b.background,exposure:Math.max(0,y.exposure??1)};k.render(k.kind===`canvas2d`||k.orderIndependent?D.items:xe(D.items,o),o)}}Re(c,i,t,n,r),(M||Fe())&&q(!0)}let Re=(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&&p.drawAxes(a,e,w,L,{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:{};p.drawColorBar(a,t.bar,E,w.colorDomain,e.format??ze(),e.title??(w.colorFromZ?w.z.title:``),L,n)}if(R&&z){let t=d.highlightShape(D.targets,R,z.color);t&&p.drawHighlight(a,e,w,t,L)}}},ze=()=>{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},Be=()=>y.tooltip!==!1,Ve=()=>({x:v.offsetLeft,y:v.offsetTop}),J=e=>{let t=e&&!O?d.hoverEvent(w,D.targets,e,T,Ve()):null,n=t===null!=(z===null)||!!t&&!!z&&(t.seriesIndex!==z.seriesIndex||t.index!==z.index||t.type!==z.type);if(R=t?e:null,z=t,He(),F&&I){let e=v.clientWidth,t=v.clientHeight;e>0&&t>0&&Re(F,I,e,t,g?.devicePixelRatio||1)}n&&C(`hover`,t)},He=()=>{let e=_.tooltip;if(!z||!R||!Be()){e.style.display=`none`;return}let t=typeof y.tooltip==`object`?y.tooltip.render:void 0,n=t?t(z):Ue(z);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=R.x+16;s+a>r-4&&(s=R.x-16-a),s=Math.max(4,s);let c=Math.max(4,Math.min(i-o-4,R.y-o/2));e.style.transform=`translate(${Math.round(s)}px, ${Math.round(c)}px)`},Ue=e=>{let t=h.createDocumentFragment(),n=s.style(h.createElement(`div`),{display:`flex`,alignItems:`center`,gap:`6px`,fontWeight:`600`,marginBottom:`4px`,color:`var(--text-color, #1f2937)`});n.append(s.swatch(h,e.color,e.type!==`bar`),h.createTextNode(e.seriesName||c.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 d.tooltipRows(w,e,r)){let e=s.style(h.createElement(`div`),{display:`flex`,alignItems:`center`,gap:`8px`}),r=s.style(h.createElement(`span`),{flex:`1 1 auto`,color:`var(--text-secondary-color, #6b7280)`});r.textContent=n.name;let i=s.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},We=(e,t)=>!F||O||!k?null:be.pick(D.targets,F,e,t),Y=0,Ge=(e,t)=>{B={x:e,y:t},!Y&&g&&(Y=g.requestAnimationFrame(()=>{Y=0;let e=B;B=null,!(!e||x||X)&&J(We(e.x,e.y))}))},X=null,Z=new Map,Q=e=>{let t=v.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}},Ke=()=>I?.fit.height??Math.max(1,v.clientHeight),$=(e,t=!0)=>{let n=f.clampCamera(e);le(n,j)||(j=n,M=null,R&&J(null),q(!0),t&&C(`camera`,m(j)))},qe=e=>{if(W?.matches||!g){$(e);return}M={from:m(j),to:m(e),start:g.performance.now()},q(!0)},Je=()=>{let e=[...Z.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}}},Ye=(e,t)=>{X={mode:e,pointers:Z,start:m(j),origin:t,distance:e===`pinch`?Je().distance:0,moved:!1},M=null,R&&J(null),v.style.cursor=e===`rotate`?`grabbing`:`move`},Xe=e=>{let t=G();if(!t)return;let n=Q(e);if(Z.set(e.pointerId,n),v.setPointerCapture?.(e.pointerId),Z.size===2&&(t.zoom||t.pan)){Ye(`pinch`,Je().center);return}if(Z.size>1)return;let r=t.pan&&(e.button===2||e.shiftKey||e.button===1);r?Ye(`pan`,n):t.rotate&&e.button===0?Ye(`rotate`,n):X=null,(r||e.button===1)&&e.preventDefault()},Ze=e=>{let t=Q(e);if(V=t,Z.has(e.pointerId)&&Z.set(e.pointerId,t),!X){if(e.pointerType===`touch`&&Z.size)return;(Be()||S.get(`hover`)?.size||S.get(`click`)?.size)&&Ge(t.x,t.y);return}let n=G();if(!n)return;if(X.mode===`pinch`){let{distance:e,center:t}=Je(),r=X.distance>0?e/X.distance:1,i=Ke();$({...X.start,zoom:n.zoom?X.start.zoom*r:X.start.zoom,pan:n.pan?[X.start.pan[0]+(t.x-X.origin.x)/i,X.start.pan[1]+(t.y-X.origin.y)/i]:X.start.pan}),X.moved=!0;return}let r=t.x-X.origin.x,i=t.y-X.origin.y;if(!(!X.moved&&Math.hypot(r,i)<3)){if(X.moved=!0,X.mode===`pan`){let e=Ke();$({...X.start,pan:[X.start.pan[0]+r/e,X.start.pan[1]+i/e]})}else $({...X.start,azimuth:X.start.azimuth-r*ae,elevation:X.start.elevation+i*ae})}},Qe=e=>{let t=X;if(Z.delete(e.pointerId),v.hasPointerCapture?.(e.pointerId)&&v.releasePointerCapture(e.pointerId),Z.size===1&&t?.mode===`pinch`){let e=[...Z.values()][0];Ye(`rotate`,e);return}if(!Z.size){if(X=null,v.style.cursor=G()?.rotate?`grab`:`default`,t&&!t.moved&&e.button===0){let t=Q(e),n=We(t.x,t.y);J(n),z&&C(`click`,z)}Fe()&&q(!1)}},$e=e=>{Z.delete(e.pointerId),Z.size||(X=null,v.style.cursor=G()?.rotate?`grab`:`default`)},et=e=>{e.pointerType!==`touch`&&(Ee=!0)},tt=()=>{Ee=!1,B=null,V=null,!X&&R&&J(null),Fe()&&q(!1)},nt=e=>{let t=G();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=j.zoom/r,a=I;if(!a){$({...j,zoom:i});return}let o=f.clampCamera({...j,zoom:i}),s=o.zoom/j.zoom,c=a.fit.height,l=a.fit.x+a.fit.width/2+j.pan[0]*c,u=a.fit.y+a.fit.height/2+j.pan[1]*c,d=Q(e),p=d.x-s*(d.x-l),ee=d.y-s*(d.y-u);$({...o,pan:[j.pan[0]+(p-l)/c,j.pan[1]+(ee-u)/c]}),R&&J(null)},rt=e=>{G()&&(e.preventDefault(),qe(A))},it=e=>{G()?.pan&&e.preventDefault()},at=()=>{let e;try{e=v.matches(`:focus-visible`)}catch{e=!0}e&&(v.style.boxShadow=`0 0 0 2px var(--primary-color, #4f46e5)`)},ot=()=>{v.style.boxShadow=``},st=e=>{let t=G();if(!t?.keyboard)return;let n=null,r=e.shiftKey?15:oe;switch(e.key){case`ArrowLeft`:t.rotate&&(n={...j,azimuth:j.azimuth+r});break;case`ArrowRight`:t.rotate&&(n={...j,azimuth:j.azimuth-r});break;case`ArrowUp`:t.rotate&&(n={...j,elevation:j.elevation+r});break;case`ArrowDown`:t.rotate&&(n={...j,elevation:j.elevation-r});break;case`+`:case`=`:t.zoom&&(n={...j,zoom:j.zoom*1.2});break;case`-`:case`_`:t.zoom&&(n={...j,zoom:j.zoom/1.2});break;case`0`:case`Home`:e.preventDefault(),qe(A);return;case`Escape`:V=null,R&&(e.preventDefault(),J(null));return;default:return}n&&(e.preventDefault(),$(n))};v.addEventListener(`pointerdown`,Xe),v.addEventListener(`pointermove`,Ze),v.addEventListener(`pointerup`,Qe),v.addEventListener(`pointercancel`,$e),v.addEventListener(`pointerenter`,et),v.addEventListener(`pointerleave`,tt),v.addEventListener(`wheel`,nt,{passive:!1}),v.addEventListener(`dblclick`,rt),v.addEventListener(`contextmenu`,it),v.addEventListener(`keydown`,st),v.addEventListener(`focus`,at),v.addEventListener(`blur`,ot);let ct=typeof ResizeObserver==`function`?new ResizeObserver(()=>{be.reset(),q(!0)}):null;ct?.observe(v);let lt=typeof IntersectionObserver==`function`?new IntersectionObserver(e=>{let t=e[e.length-1];if(!t)return;let n=H;H=t.isIntersecting,H&&!n&&q(!0)}):null;lt?.observe(v);let ut=()=>{h.visibilityState!==`hidden`&&q(!1)};h.addEventListener(`visibilitychange`,ut);let dt=null,ft=()=>{pt(),q(!0)},pt=()=>{dt?.removeEventListener?.(`change`,ft),dt=typeof g?.matchMedia==`function`?g.matchMedia(`(resolution: ${g.devicePixelRatio||1}dppx)`):null,dt?.addEventListener?.(`change`,ft)};pt();let mt=()=>q(!1);W?.addEventListener?.(`change`,mt);let ht=()=>{if(x)return;let e=i.readTheme(_.root,y.palette);i.themeColorsChanged(b,e)&&he++,b=e,K()},gt=i.watchTheme(ht),_t=typeof g?.MutationObserver==`function`?new g.MutationObserver(()=>{!x&&t.resolveLocale(y.locale)!==w.locale.locale&&K()}):null;_t?.observe(h.documentElement,{attributes:!0,attributeFilter:[`lang`]});let vt=async(e=new Set)=>{let t=++Se,n=await o.createRenderer3D(y.renderer??`auto`,()=>{let e=s.layerCanvas(h);return e.className=`minerva-chart-data`,e},t=>{x||k?.kind!==t||(k.destroy(),k.canvas.remove(),k=null,vt(new Set([...e,t])))},e);if(x||t!==Se){n?.destroy();return}k&&(k.destroy(),k.canvas.remove()),k=n,O=!0,n?(_.root.dataset.renderer=n.kind,v.insertBefore(n.canvas,_.foreground),C(`renderer`,n.kind)):delete _.root.dataset.renderer,Ce(n?.kind??null),q(!0)};je(),K(),vt();let yt=r.followDefaultRenderer(()=>y.renderer,()=>void vt());return{setOptions(e){if(x)return;let t=y;y=e,(e.palette??[]).join()!==(t.palette??[]).join()&&(b=i.readTheme(_.root,e.palette),he++);let n=JSON.stringify(e.camera??{});n!==Te&&(Te=n,A=ce(e.camera),$({...A})),(e.renderer??`auto`)!==(t.renderer??`auto`)&&vt(),K()},resize(){be.reset(),q(!0)},resetCamera(){$(m(A))},getCamera:()=>m(j),setCamera(e){x||$({azimuth:e.azimuth??j.azimuth,elevation:e.elevation??j.elevation,zoom:e.zoom??j.zoom,pan:e.pan?[e.pan[0],e.pan[1]]:j.pan,projection:e.projection??j.projection})},getRenderer:()=>k?.kind??null,ready:we,refreshTheme:ht,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,Se++,N&&g?.cancelAnimationFrame(N),Y&&g?.cancelAnimationFrame(Y),N=0,Y=0,ct?.disconnect(),lt?.disconnect(),h.removeEventListener(`visibilitychange`,ut),dt?.removeEventListener?.(`change`,ft),W?.removeEventListener?.(`change`,mt),yt(),gt(),_t?.disconnect(),v.removeEventListener(`pointerdown`,Xe),v.removeEventListener(`pointermove`,Ze),v.removeEventListener(`pointerup`,Qe),v.removeEventListener(`pointercancel`,$e),v.removeEventListener(`pointerenter`,et),v.removeEventListener(`pointerleave`,tt),v.removeEventListener(`wheel`,nt),v.removeEventListener(`dblclick`,rt),v.removeEventListener(`contextmenu`,it),v.removeEventListener(`keydown`,st),v.removeEventListener(`focus`,at),v.removeEventListener(`blur`,ot),k?.destroy(),k=null,S.clear(),Ce(null),_.root.remove())}}};function pe(t){return e.luminance(t.background)<.4||e.luminance(t.text)>.6}exports.createChart3D=fe,exports.initialCamera=ce,exports.stageLayout=de;
2
2
  //# sourceMappingURL=chart.cjs.map