minerva-design 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1226) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +13630 -4757
  4. package/dist/angular/fesm2022/minerva-angular.mjs +6872 -172
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +2240 -0
  7. package/dist/charts/canvas.d.cts +10 -2
  8. package/dist/charts/canvas.d.ts +10 -2
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +9 -3
  11. package/dist/charts/core.d.ts +9 -3
  12. package/dist/charts/core.js +19 -6
  13. package/dist/charts/engine/axis.cjs +1 -1
  14. package/dist/charts/engine/axis.cjs.map +1 -1
  15. package/dist/charts/engine/axis.js +6 -6
  16. package/dist/charts/engine/axis.js.map +1 -1
  17. package/dist/charts/engine/canvas.cjs +1 -1
  18. package/dist/charts/engine/canvas.cjs.map +1 -1
  19. package/dist/charts/engine/canvas.d.cts +11 -1
  20. package/dist/charts/engine/canvas.d.ts +11 -1
  21. package/dist/charts/engine/canvas.js +161 -99
  22. package/dist/charts/engine/canvas.js.map +1 -1
  23. package/dist/charts/engine/chart.cjs +1 -2
  24. package/dist/charts/engine/chart.cjs.map +1 -1
  25. package/dist/charts/engine/chart.d.cts +1 -1
  26. package/dist/charts/engine/chart.d.ts +1 -1
  27. package/dist/charts/engine/chart.js +390 -349
  28. package/dist/charts/engine/chart.js.map +1 -1
  29. package/dist/charts/engine/color.cjs +1 -1
  30. package/dist/charts/engine/color.cjs.map +1 -1
  31. package/dist/charts/engine/color.d.cts +17 -0
  32. package/dist/charts/engine/color.d.ts +17 -0
  33. package/dist/charts/engine/color.js +27 -3
  34. package/dist/charts/engine/color.js.map +1 -1
  35. package/dist/charts/engine/controller.cjs +2 -2
  36. package/dist/charts/engine/controller.cjs.map +1 -1
  37. package/dist/charts/engine/controller.d.cts +17 -2
  38. package/dist/charts/engine/controller.d.ts +17 -2
  39. package/dist/charts/engine/controller.js +404 -280
  40. package/dist/charts/engine/controller.js.map +1 -1
  41. package/dist/charts/engine/curve.cjs +2 -0
  42. package/dist/charts/engine/curve.cjs.map +1 -0
  43. package/dist/charts/engine/curve.d.cts +15 -0
  44. package/dist/charts/engine/curve.d.ts +15 -0
  45. package/dist/charts/engine/curve.js +56 -0
  46. package/dist/charts/engine/curve.js.map +1 -0
  47. package/dist/charts/engine/data.cjs +1 -1
  48. package/dist/charts/engine/data.cjs.map +1 -1
  49. package/dist/charts/engine/data.d.cts +21 -2
  50. package/dist/charts/engine/data.d.ts +21 -2
  51. package/dist/charts/engine/data.js +117 -43
  52. package/dist/charts/engine/data.js.map +1 -1
  53. package/dist/charts/engine/dom.cjs +1 -1
  54. package/dist/charts/engine/dom.cjs.map +1 -1
  55. package/dist/charts/engine/dom.d.cts +5 -3
  56. package/dist/charts/engine/dom.d.ts +5 -3
  57. package/dist/charts/engine/dom.js +27 -22
  58. package/dist/charts/engine/dom.js.map +1 -1
  59. package/dist/charts/engine/format.cjs +1 -1
  60. package/dist/charts/engine/format.cjs.map +1 -1
  61. package/dist/charts/engine/format.d.cts +21 -6
  62. package/dist/charts/engine/format.d.ts +21 -6
  63. package/dist/charts/engine/format.js +46 -21
  64. package/dist/charts/engine/format.js.map +1 -1
  65. package/dist/charts/engine/items.cjs +1 -1
  66. package/dist/charts/engine/items.cjs.map +1 -1
  67. package/dist/charts/engine/items.js +290 -62
  68. package/dist/charts/engine/items.js.map +1 -1
  69. package/dist/charts/engine/labels.cjs +2 -0
  70. package/dist/charts/engine/labels.cjs.map +1 -0
  71. package/dist/charts/engine/labels.d.cts +13 -0
  72. package/dist/charts/engine/labels.d.ts +13 -0
  73. package/dist/charts/engine/labels.js +74 -0
  74. package/dist/charts/engine/labels.js.map +1 -0
  75. package/dist/charts/engine/layout.cjs +1 -1
  76. package/dist/charts/engine/layout.cjs.map +1 -1
  77. package/dist/charts/engine/layout.d.cts +34 -2
  78. package/dist/charts/engine/layout.d.ts +34 -2
  79. package/dist/charts/engine/layout.js +53 -12
  80. package/dist/charts/engine/layout.js.map +1 -1
  81. package/dist/charts/engine/locale.cjs +2 -0
  82. package/dist/charts/engine/locale.cjs.map +1 -0
  83. package/dist/charts/engine/locale.d.cts +33 -0
  84. package/dist/charts/engine/locale.d.ts +33 -0
  85. package/dist/charts/engine/locale.js +68 -0
  86. package/dist/charts/engine/locale.js.map +1 -0
  87. package/dist/charts/engine/model.cjs +1 -1
  88. package/dist/charts/engine/model.cjs.map +1 -1
  89. package/dist/charts/engine/model.d.cts +68 -3
  90. package/dist/charts/engine/model.d.ts +68 -3
  91. package/dist/charts/engine/model.js +332 -108
  92. package/dist/charts/engine/model.js.map +1 -1
  93. package/dist/charts/engine/orderbook/book.cjs +2 -0
  94. package/dist/charts/engine/orderbook/book.cjs.map +1 -0
  95. package/dist/charts/engine/orderbook/book.d.cts +28 -0
  96. package/dist/charts/engine/orderbook/book.d.ts +28 -0
  97. package/dist/charts/engine/orderbook/book.js +134 -0
  98. package/dist/charts/engine/orderbook/book.js.map +1 -0
  99. package/dist/charts/engine/orderbook/depth.cjs +2 -0
  100. package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
  101. package/dist/charts/engine/orderbook/depth.d.cts +7 -0
  102. package/dist/charts/engine/orderbook/depth.d.ts +7 -0
  103. package/dist/charts/engine/orderbook/depth.js +413 -0
  104. package/dist/charts/engine/orderbook/depth.js.map +1 -0
  105. package/dist/charts/engine/orderbook/format.cjs +2 -0
  106. package/dist/charts/engine/orderbook/format.cjs.map +1 -0
  107. package/dist/charts/engine/orderbook/format.d.cts +48 -0
  108. package/dist/charts/engine/orderbook/format.d.ts +48 -0
  109. package/dist/charts/engine/orderbook/format.js +65 -0
  110. package/dist/charts/engine/orderbook/format.js.map +1 -0
  111. package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
  112. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
  113. package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
  114. package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
  115. package/dist/charts/engine/orderbook/heatmap.js +703 -0
  116. package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
  117. package/dist/charts/engine/orderbook/host.cjs +2 -0
  118. package/dist/charts/engine/orderbook/host.cjs.map +1 -0
  119. package/dist/charts/engine/orderbook/host.d.cts +50 -0
  120. package/dist/charts/engine/orderbook/host.d.ts +50 -0
  121. package/dist/charts/engine/orderbook/host.js +161 -0
  122. package/dist/charts/engine/orderbook/host.js.map +1 -0
  123. package/dist/charts/engine/orderbook/index.cjs +1 -0
  124. package/dist/charts/engine/orderbook/index.d.cts +6 -0
  125. package/dist/charts/engine/orderbook/index.d.ts +6 -0
  126. package/dist/charts/engine/orderbook/index.js +6 -0
  127. package/dist/charts/engine/orderbook/ladder.cjs +2 -0
  128. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
  129. package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
  130. package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
  131. package/dist/charts/engine/orderbook/ladder.js +341 -0
  132. package/dist/charts/engine/orderbook/ladder.js.map +1 -0
  133. package/dist/charts/engine/orderbook/tape.cjs +2 -0
  134. package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
  135. package/dist/charts/engine/orderbook/tape.d.cts +6 -0
  136. package/dist/charts/engine/orderbook/tape.d.ts +6 -0
  137. package/dist/charts/engine/orderbook/tape.js +450 -0
  138. package/dist/charts/engine/orderbook/tape.js.map +1 -0
  139. package/dist/charts/engine/orderbook/types.d.cts +735 -0
  140. package/dist/charts/engine/orderbook/types.d.ts +735 -0
  141. package/dist/charts/engine/overlay.cjs +1 -1
  142. package/dist/charts/engine/overlay.cjs.map +1 -1
  143. package/dist/charts/engine/overlay.d.cts +18 -0
  144. package/dist/charts/engine/overlay.d.ts +18 -0
  145. package/dist/charts/engine/overlay.js +138 -102
  146. package/dist/charts/engine/overlay.js.map +1 -1
  147. package/dist/charts/engine/presets.cjs +2 -2
  148. package/dist/charts/engine/presets.cjs.map +1 -1
  149. package/dist/charts/engine/presets.d.cts +319 -5
  150. package/dist/charts/engine/presets.d.ts +319 -5
  151. package/dist/charts/engine/presets.js +463 -38
  152. package/dist/charts/engine/presets.js.map +1 -1
  153. package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
  154. package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
  155. package/dist/charts/engine/renderers/canvas2d.js +149 -111
  156. package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
  157. package/dist/charts/engine/renderers/detect.cjs +1 -1
  158. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  159. package/dist/charts/engine/renderers/detect.js +18 -15
  160. package/dist/charts/engine/renderers/detect.js.map +1 -1
  161. package/dist/charts/engine/renderers/gl.cjs +2 -0
  162. package/dist/charts/engine/renderers/gl.cjs.map +1 -0
  163. package/dist/charts/engine/renderers/gl.d.cts +21 -0
  164. package/dist/charts/engine/renderers/gl.d.ts +21 -0
  165. package/dist/charts/engine/renderers/gl.js +56 -0
  166. package/dist/charts/engine/renderers/gl.js.map +1 -0
  167. package/dist/charts/engine/renderers/range.cjs +1 -1
  168. package/dist/charts/engine/renderers/range.cjs.map +1 -1
  169. package/dist/charts/engine/renderers/range.js +4 -4
  170. package/dist/charts/engine/renderers/range.js.map +1 -1
  171. package/dist/charts/engine/renderers/shaders.cjs +180 -20
  172. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  173. package/dist/charts/engine/renderers/shaders.d.cts +18 -2
  174. package/dist/charts/engine/renderers/shaders.d.ts +18 -2
  175. package/dist/charts/engine/renderers/shaders.js +176 -20
  176. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  177. package/dist/charts/engine/renderers/types.cjs.map +1 -1
  178. package/dist/charts/engine/renderers/types.d.cts +11 -4
  179. package/dist/charts/engine/renderers/types.d.ts +11 -4
  180. package/dist/charts/engine/renderers/types.js.map +1 -1
  181. package/dist/charts/engine/renderers/webgl.cjs +2 -0
  182. package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
  183. package/dist/charts/engine/renderers/webgl.d.cts +4 -0
  184. package/dist/charts/engine/renderers/webgl.d.ts +4 -0
  185. package/dist/charts/engine/renderers/webgl.js +133 -0
  186. package/dist/charts/engine/renderers/webgl.js.map +1 -0
  187. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  188. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  189. package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
  190. package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
  191. package/dist/charts/engine/renderers/webgl2.js +62 -90
  192. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  193. package/dist/charts/engine/renderers/webgpu.cjs +1 -1
  194. package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
  195. package/dist/charts/engine/renderers/webgpu.js +18 -15
  196. package/dist/charts/engine/renderers/webgpu.js.map +1 -1
  197. package/dist/charts/engine/scale.cjs +1 -1
  198. package/dist/charts/engine/scale.cjs.map +1 -1
  199. package/dist/charts/engine/scale.js +1 -1
  200. package/dist/charts/engine/scale.js.map +1 -1
  201. package/dist/charts/engine/scene.cjs +1 -1
  202. package/dist/charts/engine/scene.cjs.map +1 -1
  203. package/dist/charts/engine/scene.d.cts +32 -9
  204. package/dist/charts/engine/scene.d.ts +32 -9
  205. package/dist/charts/engine/scene.js +363 -122
  206. package/dist/charts/engine/scene.js.map +1 -1
  207. package/dist/charts/engine/shapes/bullet.cjs +2 -0
  208. package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
  209. package/dist/charts/engine/shapes/bullet.d.cts +6 -0
  210. package/dist/charts/engine/shapes/bullet.d.ts +6 -0
  211. package/dist/charts/engine/shapes/bullet.js +255 -0
  212. package/dist/charts/engine/shapes/bullet.js.map +1 -0
  213. package/dist/charts/engine/shapes/calendar.cjs +2 -0
  214. package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
  215. package/dist/charts/engine/shapes/calendar.d.cts +38 -0
  216. package/dist/charts/engine/shapes/calendar.d.ts +38 -0
  217. package/dist/charts/engine/shapes/calendar.js +369 -0
  218. package/dist/charts/engine/shapes/calendar.js.map +1 -0
  219. package/dist/charts/engine/shapes/canvas.cjs +2 -0
  220. package/dist/charts/engine/shapes/canvas.cjs.map +1 -0
  221. package/dist/charts/engine/shapes/canvas.d.cts +65 -0
  222. package/dist/charts/engine/shapes/canvas.d.ts +65 -0
  223. package/dist/charts/engine/shapes/canvas.js +168 -0
  224. package/dist/charts/engine/shapes/canvas.js.map +1 -0
  225. package/dist/charts/engine/shapes/chart.cjs +2 -0
  226. package/dist/charts/engine/shapes/chart.cjs.map +1 -0
  227. package/dist/charts/engine/shapes/chart.d.cts +7 -0
  228. package/dist/charts/engine/shapes/chart.d.ts +7 -0
  229. package/dist/charts/engine/shapes/chart.js +292 -0
  230. package/dist/charts/engine/shapes/chart.js.map +1 -0
  231. package/dist/charts/engine/shapes/draw.cjs +2 -0
  232. package/dist/charts/engine/shapes/draw.cjs.map +1 -0
  233. package/dist/charts/engine/shapes/draw.d.cts +22 -0
  234. package/dist/charts/engine/shapes/draw.d.ts +22 -0
  235. package/dist/charts/engine/shapes/draw.js +165 -0
  236. package/dist/charts/engine/shapes/draw.js.map +1 -0
  237. package/dist/charts/engine/shapes/funnel.cjs +2 -0
  238. package/dist/charts/engine/shapes/funnel.cjs.map +1 -0
  239. package/dist/charts/engine/shapes/funnel.d.cts +6 -0
  240. package/dist/charts/engine/shapes/funnel.d.ts +6 -0
  241. package/dist/charts/engine/shapes/funnel.js +149 -0
  242. package/dist/charts/engine/shapes/funnel.js.map +1 -0
  243. package/dist/charts/engine/shapes/gauge.cjs +2 -0
  244. package/dist/charts/engine/shapes/gauge.cjs.map +1 -0
  245. package/dist/charts/engine/shapes/gauge.d.cts +7 -0
  246. package/dist/charts/engine/shapes/gauge.d.ts +7 -0
  247. package/dist/charts/engine/shapes/gauge.js +210 -0
  248. package/dist/charts/engine/shapes/gauge.js.map +1 -0
  249. package/dist/charts/engine/shapes/hit.cjs +2 -0
  250. package/dist/charts/engine/shapes/hit.cjs.map +1 -0
  251. package/dist/charts/engine/shapes/hit.d.cts +30 -0
  252. package/dist/charts/engine/shapes/hit.d.ts +30 -0
  253. package/dist/charts/engine/shapes/hit.js +145 -0
  254. package/dist/charts/engine/shapes/hit.js.map +1 -0
  255. package/dist/charts/engine/shapes/index.d.cts +12 -0
  256. package/dist/charts/engine/shapes/index.d.ts +12 -0
  257. package/dist/charts/engine/shapes/labels.cjs +2 -0
  258. package/dist/charts/engine/shapes/labels.cjs.map +1 -0
  259. package/dist/charts/engine/shapes/labels.d.cts +14 -0
  260. package/dist/charts/engine/shapes/labels.d.ts +14 -0
  261. package/dist/charts/engine/shapes/labels.js +146 -0
  262. package/dist/charts/engine/shapes/labels.js.map +1 -0
  263. package/dist/charts/engine/shapes/layout.cjs +3 -0
  264. package/dist/charts/engine/shapes/layout.cjs.map +1 -0
  265. package/dist/charts/engine/shapes/layout.d.cts +93 -0
  266. package/dist/charts/engine/shapes/layout.d.ts +93 -0
  267. package/dist/charts/engine/shapes/layout.js +353 -0
  268. package/dist/charts/engine/shapes/layout.js.map +1 -0
  269. package/dist/charts/engine/shapes/pie.cjs +2 -0
  270. package/dist/charts/engine/shapes/pie.cjs.map +1 -0
  271. package/dist/charts/engine/shapes/pie.d.cts +20 -0
  272. package/dist/charts/engine/shapes/pie.d.ts +20 -0
  273. package/dist/charts/engine/shapes/pie.js +302 -0
  274. package/dist/charts/engine/shapes/pie.js.map +1 -0
  275. package/dist/charts/engine/shapes/radar.cjs +2 -0
  276. package/dist/charts/engine/shapes/radar.cjs.map +1 -0
  277. package/dist/charts/engine/shapes/radar.d.cts +8 -0
  278. package/dist/charts/engine/shapes/radar.d.ts +8 -0
  279. package/dist/charts/engine/shapes/radar.js +198 -0
  280. package/dist/charts/engine/shapes/radar.js.map +1 -0
  281. package/dist/charts/engine/shapes/radialBar.cjs +2 -0
  282. package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
  283. package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
  284. package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
  285. package/dist/charts/engine/shapes/radialBar.js +155 -0
  286. package/dist/charts/engine/shapes/radialBar.js.map +1 -0
  287. package/dist/charts/engine/shapes/runtime.cjs +2 -0
  288. package/dist/charts/engine/shapes/runtime.cjs.map +1 -0
  289. package/dist/charts/engine/shapes/runtime.d.cts +36 -0
  290. package/dist/charts/engine/shapes/runtime.d.ts +36 -0
  291. package/dist/charts/engine/shapes/runtime.js +107 -0
  292. package/dist/charts/engine/shapes/runtime.js.map +1 -0
  293. package/dist/charts/engine/shapes/sankey.cjs +2 -0
  294. package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
  295. package/dist/charts/engine/shapes/sankey.d.cts +29 -0
  296. package/dist/charts/engine/shapes/sankey.d.ts +29 -0
  297. package/dist/charts/engine/shapes/sankey.js +372 -0
  298. package/dist/charts/engine/shapes/sankey.js.map +1 -0
  299. package/dist/charts/engine/shapes/scene.cjs +2 -0
  300. package/dist/charts/engine/shapes/scene.cjs.map +1 -0
  301. package/dist/charts/engine/shapes/scene.d.cts +311 -0
  302. package/dist/charts/engine/shapes/scene.d.ts +311 -0
  303. package/dist/charts/engine/shapes/scene.js +125 -0
  304. package/dist/charts/engine/shapes/scene.js.map +1 -0
  305. package/dist/charts/engine/shapes/sunburst.cjs +2 -0
  306. package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
  307. package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
  308. package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
  309. package/dist/charts/engine/shapes/sunburst.js +261 -0
  310. package/dist/charts/engine/shapes/sunburst.js.map +1 -0
  311. package/dist/charts/engine/shapes/treemap.cjs +2 -0
  312. package/dist/charts/engine/shapes/treemap.cjs.map +1 -0
  313. package/dist/charts/engine/shapes/treemap.d.cts +14 -0
  314. package/dist/charts/engine/shapes/treemap.d.ts +14 -0
  315. package/dist/charts/engine/shapes/treemap.js +213 -0
  316. package/dist/charts/engine/shapes/treemap.js.map +1 -0
  317. package/dist/charts/engine/shapes/types.d.cts +719 -0
  318. package/dist/charts/engine/shapes/types.d.ts +719 -0
  319. package/dist/charts/engine/signature.cjs +2 -0
  320. package/dist/charts/engine/signature.cjs.map +1 -0
  321. package/dist/charts/engine/signature.d.cts +9 -0
  322. package/dist/charts/engine/signature.d.ts +9 -0
  323. package/dist/charts/engine/signature.js +13 -0
  324. package/dist/charts/engine/signature.js.map +1 -0
  325. package/dist/charts/engine/theme.cjs +1 -1
  326. package/dist/charts/engine/theme.cjs.map +1 -1
  327. package/dist/charts/engine/theme.d.cts +10 -1
  328. package/dist/charts/engine/theme.d.ts +10 -1
  329. package/dist/charts/engine/theme.js +40 -16
  330. package/dist/charts/engine/theme.js.map +1 -1
  331. package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
  332. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
  333. package/dist/charts/engine/three-d/canvas2d.d.cts +4 -0
  334. package/dist/charts/engine/three-d/canvas2d.d.ts +4 -0
  335. package/dist/charts/engine/three-d/canvas2d.js +104 -0
  336. package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
  337. package/dist/charts/engine/three-d/chart.cjs +2 -0
  338. package/dist/charts/engine/three-d/chart.cjs.map +1 -0
  339. package/dist/charts/engine/three-d/chart.d.cts +15 -0
  340. package/dist/charts/engine/three-d/chart.d.ts +15 -0
  341. package/dist/charts/engine/three-d/chart.js +621 -0
  342. package/dist/charts/engine/three-d/chart.js.map +1 -0
  343. package/dist/charts/engine/three-d/colormap.cjs +2 -0
  344. package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
  345. package/dist/charts/engine/three-d/colormap.d.cts +16 -0
  346. package/dist/charts/engine/three-d/colormap.d.ts +16 -0
  347. package/dist/charts/engine/three-d/colormap.js +166 -0
  348. package/dist/charts/engine/three-d/colormap.js.map +1 -0
  349. package/dist/charts/engine/three-d/contours.cjs +2 -0
  350. package/dist/charts/engine/three-d/contours.cjs.map +1 -0
  351. package/dist/charts/engine/three-d/contours.d.cts +7 -0
  352. package/dist/charts/engine/three-d/contours.d.ts +7 -0
  353. package/dist/charts/engine/three-d/contours.js +47 -0
  354. package/dist/charts/engine/three-d/contours.js.map +1 -0
  355. package/dist/charts/engine/three-d/detect.cjs +2 -0
  356. package/dist/charts/engine/three-d/detect.cjs.map +1 -0
  357. package/dist/charts/engine/three-d/detect.d.cts +11 -0
  358. package/dist/charts/engine/three-d/detect.d.ts +11 -0
  359. package/dist/charts/engine/three-d/detect.js +35 -0
  360. package/dist/charts/engine/three-d/detect.js.map +1 -0
  361. package/dist/charts/engine/three-d/dom.cjs +2 -0
  362. package/dist/charts/engine/three-d/dom.cjs.map +1 -0
  363. package/dist/charts/engine/three-d/dom.d.cts +21 -0
  364. package/dist/charts/engine/three-d/dom.d.ts +21 -0
  365. package/dist/charts/engine/three-d/dom.js +98 -0
  366. package/dist/charts/engine/three-d/dom.js.map +1 -0
  367. package/dist/charts/engine/three-d/geometry.cjs +2 -0
  368. package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
  369. package/dist/charts/engine/three-d/geometry.d.cts +76 -0
  370. package/dist/charts/engine/three-d/geometry.d.ts +76 -0
  371. package/dist/charts/engine/three-d/geometry.js +529 -0
  372. package/dist/charts/engine/three-d/geometry.js.map +1 -0
  373. package/dist/charts/engine/three-d/hover.cjs +2 -0
  374. package/dist/charts/engine/three-d/hover.cjs.map +1 -0
  375. package/dist/charts/engine/three-d/hover.d.cts +25 -0
  376. package/dist/charts/engine/three-d/hover.d.ts +25 -0
  377. package/dist/charts/engine/three-d/hover.js +131 -0
  378. package/dist/charts/engine/three-d/hover.js.map +1 -0
  379. package/dist/charts/engine/three-d/index.cjs +1 -0
  380. package/dist/charts/engine/three-d/index.d.cts +2 -0
  381. package/dist/charts/engine/three-d/index.d.ts +2 -0
  382. package/dist/charts/engine/three-d/index.js +2 -0
  383. package/dist/charts/engine/three-d/labels.cjs +2 -0
  384. package/dist/charts/engine/three-d/labels.cjs.map +1 -0
  385. package/dist/charts/engine/three-d/labels.d.cts +23 -0
  386. package/dist/charts/engine/three-d/labels.d.ts +23 -0
  387. package/dist/charts/engine/three-d/labels.js +136 -0
  388. package/dist/charts/engine/three-d/labels.js.map +1 -0
  389. package/dist/charts/engine/three-d/math.cjs +2 -0
  390. package/dist/charts/engine/three-d/math.cjs.map +1 -0
  391. package/dist/charts/engine/three-d/math.d.cts +84 -0
  392. package/dist/charts/engine/three-d/math.d.ts +84 -0
  393. package/dist/charts/engine/three-d/math.js +150 -0
  394. package/dist/charts/engine/three-d/math.js.map +1 -0
  395. package/dist/charts/engine/three-d/model.cjs +2 -0
  396. package/dist/charts/engine/three-d/model.cjs.map +1 -0
  397. package/dist/charts/engine/three-d/model.d.cts +130 -0
  398. package/dist/charts/engine/three-d/model.d.ts +130 -0
  399. package/dist/charts/engine/three-d/model.js +277 -0
  400. package/dist/charts/engine/three-d/model.js.map +1 -0
  401. package/dist/charts/engine/three-d/overlay.cjs +2 -0
  402. package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
  403. package/dist/charts/engine/three-d/overlay.d.cts +72 -0
  404. package/dist/charts/engine/three-d/overlay.d.ts +72 -0
  405. package/dist/charts/engine/three-d/overlay.js +197 -0
  406. package/dist/charts/engine/three-d/overlay.js.map +1 -0
  407. package/dist/charts/engine/three-d/pick.cjs +2 -0
  408. package/dist/charts/engine/three-d/pick.cjs.map +1 -0
  409. package/dist/charts/engine/three-d/pick.d.cts +52 -0
  410. package/dist/charts/engine/three-d/pick.d.ts +52 -0
  411. package/dist/charts/engine/three-d/pick.js +220 -0
  412. package/dist/charts/engine/three-d/pick.js.map +1 -0
  413. package/dist/charts/engine/three-d/render-types.cjs +2 -0
  414. package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
  415. package/dist/charts/engine/three-d/render-types.d.cts +82 -0
  416. package/dist/charts/engine/three-d/render-types.d.ts +82 -0
  417. package/dist/charts/engine/three-d/render-types.js +13 -0
  418. package/dist/charts/engine/three-d/render-types.js.map +1 -0
  419. package/dist/charts/engine/three-d/shaders.cjs +276 -0
  420. package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
  421. package/dist/charts/engine/three-d/shaders.d.cts +26 -0
  422. package/dist/charts/engine/three-d/shaders.d.ts +26 -0
  423. package/dist/charts/engine/three-d/shaders.js +191 -0
  424. package/dist/charts/engine/three-d/shaders.js.map +1 -0
  425. package/dist/charts/engine/three-d/sort.cjs +2 -0
  426. package/dist/charts/engine/three-d/sort.cjs.map +1 -0
  427. package/dist/charts/engine/three-d/sort.d.cts +18 -0
  428. package/dist/charts/engine/three-d/sort.d.ts +18 -0
  429. package/dist/charts/engine/three-d/sort.js +71 -0
  430. package/dist/charts/engine/three-d/sort.js.map +1 -0
  431. package/dist/charts/engine/three-d/types.d.cts +588 -0
  432. package/dist/charts/engine/three-d/types.d.ts +588 -0
  433. package/dist/charts/engine/three-d/webgl.cjs +2 -0
  434. package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
  435. package/dist/charts/engine/three-d/webgl.d.cts +10 -0
  436. package/dist/charts/engine/three-d/webgl.d.ts +10 -0
  437. package/dist/charts/engine/three-d/webgl.js +130 -0
  438. package/dist/charts/engine/three-d/webgl.js.map +1 -0
  439. package/dist/charts/engine/three-d/webgpu.cjs +2 -0
  440. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
  441. package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
  442. package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
  443. package/dist/charts/engine/three-d/webgpu.js +249 -0
  444. package/dist/charts/engine/three-d/webgpu.js.map +1 -0
  445. package/dist/charts/engine/time.cjs +1 -1
  446. package/dist/charts/engine/time.cjs.map +1 -1
  447. package/dist/charts/engine/time.d.cts +13 -4
  448. package/dist/charts/engine/time.d.ts +13 -4
  449. package/dist/charts/engine/time.js +156 -91
  450. package/dist/charts/engine/time.js.map +1 -1
  451. package/dist/charts/engine/trading/chart.cjs +2 -0
  452. package/dist/charts/engine/trading/chart.cjs.map +1 -0
  453. package/dist/charts/engine/trading/chart.d.cts +3 -0
  454. package/dist/charts/engine/trading/chart.d.ts +3 -0
  455. package/dist/charts/engine/trading/chart.js +1507 -0
  456. package/dist/charts/engine/trading/chart.js.map +1 -0
  457. package/dist/charts/engine/trading/drawings.cjs +2 -0
  458. package/dist/charts/engine/trading/drawings.cjs.map +1 -0
  459. package/dist/charts/engine/trading/drawings.d.cts +57 -0
  460. package/dist/charts/engine/trading/drawings.d.ts +57 -0
  461. package/dist/charts/engine/trading/drawings.js +160 -0
  462. package/dist/charts/engine/trading/drawings.js.map +1 -0
  463. package/dist/charts/engine/trading/format.cjs +2 -0
  464. package/dist/charts/engine/trading/format.cjs.map +1 -0
  465. package/dist/charts/engine/trading/format.d.cts +60 -0
  466. package/dist/charts/engine/trading/format.d.ts +60 -0
  467. package/dist/charts/engine/trading/format.js +131 -0
  468. package/dist/charts/engine/trading/format.js.map +1 -0
  469. package/dist/charts/engine/trading/geometry.cjs +2 -0
  470. package/dist/charts/engine/trading/geometry.cjs.map +1 -0
  471. package/dist/charts/engine/trading/geometry.d.cts +55 -0
  472. package/dist/charts/engine/trading/geometry.d.ts +55 -0
  473. package/dist/charts/engine/trading/geometry.js +131 -0
  474. package/dist/charts/engine/trading/geometry.js.map +1 -0
  475. package/dist/charts/engine/trading/index.cjs +1 -0
  476. package/dist/charts/engine/trading/index.d.cts +3 -0
  477. package/dist/charts/engine/trading/index.d.ts +3 -0
  478. package/dist/charts/engine/trading/index.js +3 -0
  479. package/dist/charts/engine/trading/indicators.cjs +2 -0
  480. package/dist/charts/engine/trading/indicators.cjs.map +1 -0
  481. package/dist/charts/engine/trading/indicators.d.cts +105 -0
  482. package/dist/charts/engine/trading/indicators.d.ts +105 -0
  483. package/dist/charts/engine/trading/indicators.js +268 -0
  484. package/dist/charts/engine/trading/indicators.js.map +1 -0
  485. package/dist/charts/engine/trading/labels.cjs +2 -0
  486. package/dist/charts/engine/trading/labels.cjs.map +1 -0
  487. package/dist/charts/engine/trading/labels.d.cts +7 -0
  488. package/dist/charts/engine/trading/labels.d.ts +7 -0
  489. package/dist/charts/engine/trading/labels.js +91 -0
  490. package/dist/charts/engine/trading/labels.js.map +1 -0
  491. package/dist/charts/engine/trading/scale.cjs +2 -0
  492. package/dist/charts/engine/trading/scale.cjs.map +1 -0
  493. package/dist/charts/engine/trading/scale.d.cts +46 -0
  494. package/dist/charts/engine/trading/scale.d.ts +46 -0
  495. package/dist/charts/engine/trading/scale.js +100 -0
  496. package/dist/charts/engine/trading/scale.js.map +1 -0
  497. package/dist/charts/engine/trading/store.cjs +2 -0
  498. package/dist/charts/engine/trading/store.cjs.map +1 -0
  499. package/dist/charts/engine/trading/store.d.cts +62 -0
  500. package/dist/charts/engine/trading/store.d.ts +62 -0
  501. package/dist/charts/engine/trading/store.js +129 -0
  502. package/dist/charts/engine/trading/store.js.map +1 -0
  503. package/dist/charts/engine/trading/studies.cjs +2 -0
  504. package/dist/charts/engine/trading/studies.cjs.map +1 -0
  505. package/dist/charts/engine/trading/studies.d.cts +52 -0
  506. package/dist/charts/engine/trading/studies.d.ts +52 -0
  507. package/dist/charts/engine/trading/studies.js +254 -0
  508. package/dist/charts/engine/trading/studies.js.map +1 -0
  509. package/dist/charts/engine/trading/types.d.cts +656 -0
  510. package/dist/charts/engine/trading/types.d.ts +656 -0
  511. package/dist/charts/engine/types.d.cts +227 -15
  512. package/dist/charts/engine/types.d.ts +227 -15
  513. package/dist/charts/index.cjs +1 -1
  514. package/dist/charts/index.d.cts +7 -2
  515. package/dist/charts/index.d.ts +7 -2
  516. package/dist/charts/index.js +22 -8
  517. package/dist/charts/react/Chart.cjs +1 -1
  518. package/dist/charts/react/Chart.cjs.map +1 -1
  519. package/dist/charts/react/Chart.d.cts +11 -4
  520. package/dist/charts/react/Chart.d.ts +11 -4
  521. package/dist/charts/react/Chart.js +70 -47
  522. package/dist/charts/react/Chart.js.map +1 -1
  523. package/dist/charts/react/charts.cjs +1 -1
  524. package/dist/charts/react/charts.cjs.map +1 -1
  525. package/dist/charts/react/charts.d.cts +48 -2
  526. package/dist/charts/react/charts.d.ts +48 -2
  527. package/dist/charts/react/charts.js +371 -76
  528. package/dist/charts/react/charts.js.map +1 -1
  529. package/dist/charts/react/orderbook.cjs +2 -0
  530. package/dist/charts/react/orderbook.cjs.map +1 -0
  531. package/dist/charts/react/orderbook.d.cts +142 -0
  532. package/dist/charts/react/orderbook.d.ts +142 -0
  533. package/dist/charts/react/orderbook.js +182 -0
  534. package/dist/charts/react/orderbook.js.map +1 -0
  535. package/dist/charts/react/shapes.cjs +2 -0
  536. package/dist/charts/react/shapes.cjs.map +1 -0
  537. package/dist/charts/react/shapes.d.cts +537 -0
  538. package/dist/charts/react/shapes.d.ts +537 -0
  539. package/dist/charts/react/shapes.js +429 -0
  540. package/dist/charts/react/shapes.js.map +1 -0
  541. package/dist/charts/react/three-d.cjs +2 -0
  542. package/dist/charts/react/three-d.cjs.map +1 -0
  543. package/dist/charts/react/three-d.d.cts +151 -0
  544. package/dist/charts/react/three-d.d.ts +151 -0
  545. package/dist/charts/react/three-d.js +154 -0
  546. package/dist/charts/react/three-d.js.map +1 -0
  547. package/dist/charts/react/trading.cjs +2 -0
  548. package/dist/charts/react/trading.cjs.map +1 -0
  549. package/dist/charts/react/trading.d.cts +93 -0
  550. package/dist/charts/react/trading.d.ts +93 -0
  551. package/dist/charts/react/trading.js +95 -0
  552. package/dist/charts/react/trading.js.map +1 -0
  553. package/dist/charts/react/types.d.cts +200 -7
  554. package/dist/charts/react/types.d.ts +200 -7
  555. package/dist/core/contracts.cjs +1 -1
  556. package/dist/core/contracts.cjs.map +1 -1
  557. package/dist/core/contracts.js +1 -1
  558. package/dist/core/contracts.js.map +1 -1
  559. package/dist/native/charts/src/canvas.cjs +1 -1
  560. package/dist/native/charts/src/canvas.js +9 -3
  561. package/dist/native/charts/src/engine/axis.cjs +1 -1
  562. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  563. package/dist/native/charts/src/engine/axis.js +6 -6
  564. package/dist/native/charts/src/engine/axis.js.map +1 -1
  565. package/dist/native/charts/src/engine/color.cjs +1 -1
  566. package/dist/native/charts/src/engine/color.cjs.map +1 -1
  567. package/dist/native/charts/src/engine/color.js +12 -3
  568. package/dist/native/charts/src/engine/color.js.map +1 -1
  569. package/dist/native/charts/src/engine/controller.cjs +2 -2
  570. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  571. package/dist/native/charts/src/engine/controller.js +418 -294
  572. package/dist/native/charts/src/engine/controller.js.map +1 -1
  573. package/dist/native/charts/src/engine/curve.cjs +2 -0
  574. package/dist/native/charts/src/engine/curve.cjs.map +1 -0
  575. package/dist/native/charts/src/engine/curve.js +56 -0
  576. package/dist/native/charts/src/engine/curve.js.map +1 -0
  577. package/dist/native/charts/src/engine/data.cjs +1 -1
  578. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  579. package/dist/native/charts/src/engine/data.js +117 -43
  580. package/dist/native/charts/src/engine/data.js.map +1 -1
  581. package/dist/native/charts/src/engine/format.cjs +1 -1
  582. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  583. package/dist/native/charts/src/engine/format.js +46 -21
  584. package/dist/native/charts/src/engine/format.js.map +1 -1
  585. package/dist/native/charts/src/engine/labels.cjs +2 -0
  586. package/dist/native/charts/src/engine/labels.cjs.map +1 -0
  587. package/dist/native/charts/src/engine/labels.js +74 -0
  588. package/dist/native/charts/src/engine/labels.js.map +1 -0
  589. package/dist/native/charts/src/engine/layout.cjs +1 -1
  590. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  591. package/dist/native/charts/src/engine/layout.js +53 -12
  592. package/dist/native/charts/src/engine/layout.js.map +1 -1
  593. package/dist/native/charts/src/engine/locale.cjs +2 -0
  594. package/dist/native/charts/src/engine/locale.cjs.map +1 -0
  595. package/dist/native/charts/src/engine/locale.js +60 -0
  596. package/dist/native/charts/src/engine/locale.js.map +1 -0
  597. package/dist/native/charts/src/engine/model.cjs +1 -1
  598. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  599. package/dist/native/charts/src/engine/model.js +335 -111
  600. package/dist/native/charts/src/engine/model.js.map +1 -1
  601. package/dist/native/charts/src/engine/overlay.cjs +1 -1
  602. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  603. package/dist/native/charts/src/engine/overlay.js +54 -31
  604. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  605. package/dist/native/charts/src/engine/presets.cjs +2 -2
  606. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  607. package/dist/native/charts/src/engine/presets.js +456 -34
  608. package/dist/native/charts/src/engine/presets.js.map +1 -1
  609. package/dist/native/charts/src/engine/scale.cjs +1 -1
  610. package/dist/native/charts/src/engine/scale.cjs.map +1 -1
  611. package/dist/native/charts/src/engine/scale.js +1 -1
  612. package/dist/native/charts/src/engine/scale.js.map +1 -1
  613. package/dist/native/charts/src/engine/scene.cjs +1 -1
  614. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  615. package/dist/native/charts/src/engine/scene.js +369 -128
  616. package/dist/native/charts/src/engine/scene.js.map +1 -1
  617. package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
  618. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
  619. package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
  620. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
  621. package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
  622. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
  623. package/dist/native/charts/src/engine/shapes/calendar.js +364 -0
  624. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
  625. package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
  626. package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
  627. package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
  628. package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
  629. package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
  630. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
  631. package/dist/native/charts/src/engine/shapes/draw.js +165 -0
  632. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
  633. package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
  634. package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
  635. package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
  636. package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
  637. package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
  638. package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
  639. package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
  640. package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
  641. package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
  642. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
  643. package/dist/native/charts/src/engine/shapes/hit.js +106 -0
  644. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
  645. package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
  646. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
  647. package/dist/native/charts/src/engine/shapes/labels.js +146 -0
  648. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
  649. package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
  650. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
  651. package/dist/native/charts/src/engine/shapes/layout.js +331 -0
  652. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
  653. package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
  654. package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
  655. package/dist/native/charts/src/engine/shapes/pie.js +302 -0
  656. package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
  657. package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
  658. package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
  659. package/dist/native/charts/src/engine/shapes/radar.js +198 -0
  660. package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
  661. package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
  662. package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
  663. package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
  664. package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
  665. package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
  666. package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
  667. package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
  668. package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
  669. package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
  670. package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
  671. package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
  672. package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
  673. package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
  674. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
  675. package/dist/native/charts/src/engine/shapes/scene.js +125 -0
  676. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
  677. package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
  678. package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
  679. package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
  680. package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
  681. package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
  682. package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
  683. package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
  684. package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
  685. package/dist/native/charts/src/engine/theme.cjs.map +1 -1
  686. package/dist/native/charts/src/engine/theme.js.map +1 -1
  687. package/dist/native/charts/src/engine/time.cjs +1 -1
  688. package/dist/native/charts/src/engine/time.cjs.map +1 -1
  689. package/dist/native/charts/src/engine/time.js +156 -91
  690. package/dist/native/charts/src/engine/time.js.map +1 -1
  691. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  692. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  693. package/dist/native/components/Chart/ChartBase.d.cts +1 -1
  694. package/dist/native/components/Chart/ChartBase.d.ts +1 -1
  695. package/dist/native/components/Chart/ChartBase.js +110 -107
  696. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  697. package/dist/native/components/Chart/charts.cjs +1 -1
  698. package/dist/native/components/Chart/charts.cjs.map +1 -1
  699. package/dist/native/components/Chart/charts.d.cts +6 -1
  700. package/dist/native/components/Chart/charts.d.ts +6 -1
  701. package/dist/native/components/Chart/charts.js +53 -29
  702. package/dist/native/components/Chart/charts.js.map +1 -1
  703. package/dist/native/components/Chart/index.cjs +1 -1
  704. package/dist/native/components/Chart/index.d.cts +1 -1
  705. package/dist/native/components/Chart/index.d.ts +1 -1
  706. package/dist/native/components/Chart/index.js +2 -2
  707. package/dist/native/components/Chart/scene.cjs +1 -1
  708. package/dist/native/components/Chart/scene.cjs.map +1 -1
  709. package/dist/native/components/Chart/scene.js +244 -215
  710. package/dist/native/components/Chart/scene.js.map +1 -1
  711. package/dist/native/components/Chart/types.d.cts +26 -3
  712. package/dist/native/components/Chart/types.d.ts +26 -3
  713. package/dist/native/components/Charts/charts.cjs +2 -0
  714. package/dist/native/components/Charts/charts.cjs.map +1 -0
  715. package/dist/native/components/Charts/charts.d.cts +41 -0
  716. package/dist/native/components/Charts/charts.d.ts +41 -0
  717. package/dist/native/components/Charts/charts.js +338 -0
  718. package/dist/native/components/Charts/charts.js.map +1 -0
  719. package/dist/native/components/Charts/index.cjs +1 -0
  720. package/dist/native/components/Charts/index.d.cts +2 -0
  721. package/dist/native/components/Charts/index.d.ts +2 -0
  722. package/dist/native/components/Charts/index.js +2 -0
  723. package/dist/native/components/Charts/types.d.cts +144 -0
  724. package/dist/native/components/Charts/types.d.ts +144 -0
  725. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
  726. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
  727. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
  728. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
  729. package/dist/native/components/ShapeChart/ShapeChartBase.js +271 -0
  730. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
  731. package/dist/native/components/ShapeChart/charts.cjs +2 -0
  732. package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
  733. package/dist/native/components/ShapeChart/charts.d.cts +38 -0
  734. package/dist/native/components/ShapeChart/charts.d.ts +38 -0
  735. package/dist/native/components/ShapeChart/charts.js +387 -0
  736. package/dist/native/components/ShapeChart/charts.js.map +1 -0
  737. package/dist/native/components/ShapeChart/draw.cjs +2 -0
  738. package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
  739. package/dist/native/components/ShapeChart/draw.d.cts +4 -0
  740. package/dist/native/components/ShapeChart/draw.d.ts +4 -0
  741. package/dist/native/components/ShapeChart/draw.js +104 -0
  742. package/dist/native/components/ShapeChart/draw.js.map +1 -0
  743. package/dist/native/components/ShapeChart/geometry.cjs +2 -0
  744. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
  745. package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
  746. package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
  747. package/dist/native/components/ShapeChart/geometry.js +602 -0
  748. package/dist/native/components/ShapeChart/geometry.js.map +1 -0
  749. package/dist/native/components/ShapeChart/index.cjs +1 -0
  750. package/dist/native/components/ShapeChart/index.d.cts +2 -0
  751. package/dist/native/components/ShapeChart/index.d.ts +2 -0
  752. package/dist/native/components/ShapeChart/index.js +2 -0
  753. package/dist/native/components/ShapeChart/recorder.cjs +2 -0
  754. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
  755. package/dist/native/components/ShapeChart/recorder.d.cts +106 -0
  756. package/dist/native/components/ShapeChart/recorder.d.ts +106 -0
  757. package/dist/native/components/ShapeChart/recorder.js +574 -0
  758. package/dist/native/components/ShapeChart/recorder.js.map +1 -0
  759. package/dist/native/components/ShapeChart/types.d.cts +509 -0
  760. package/dist/native/components/ShapeChart/types.d.ts +509 -0
  761. package/dist/native/index.cjs +1 -1
  762. package/dist/native/index.d.cts +2 -0
  763. package/dist/native/index.d.ts +2 -0
  764. package/dist/native/index.js +14 -10
  765. package/dist/native/manifest.d.cts +6 -4
  766. package/dist/native/manifest.d.ts +6 -4
  767. package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
  768. package/dist/native/source/components/Chart/charts.tsx +42 -6
  769. package/dist/native/source/components/Chart/index.ts +1 -0
  770. package/dist/native/source/components/Chart/scene.tsx +204 -100
  771. package/dist/native/source/components/Chart/types.ts +31 -1
  772. package/dist/native/source/components/Charts/charts.tsx +493 -0
  773. package/dist/native/source/components/Charts/index.ts +14 -0
  774. package/dist/native/source/components/Charts/types.ts +207 -0
  775. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +484 -0
  776. package/dist/native/source/components/ShapeChart/charts.tsx +605 -0
  777. package/dist/native/source/components/ShapeChart/draw.tsx +170 -0
  778. package/dist/native/source/components/ShapeChart/geometry.ts +1185 -0
  779. package/dist/native/source/components/ShapeChart/index.ts +15 -0
  780. package/dist/native/source/components/ShapeChart/recorder.ts +830 -0
  781. package/dist/native/source/components/ShapeChart/types.ts +564 -0
  782. package/dist/native/source/index.ts +2 -0
  783. package/dist/native/source/manifest.ts +30 -4
  784. package/dist/taro/charts.d.ts +209 -4
  785. package/dist/taro/index.d.ts +1 -0
  786. package/dist/taro/index.js +8032 -1891
  787. package/dist/taro/manifest.d.ts +1 -0
  788. package/dist/taro/shape-charts.d.ts +537 -0
  789. package/dist/uni/AreaChart.vue +68 -0
  790. package/dist/uni/AreaChart.vue.d.ts +120 -0
  791. package/dist/uni/Badge.vue.d.ts +1 -1
  792. package/dist/uni/BoxPlotChart.vue +66 -0
  793. package/dist/uni/BoxPlotChart.vue.d.ts +102 -0
  794. package/dist/uni/BubbleChart.vue +68 -0
  795. package/dist/uni/BubbleChart.vue.d.ts +106 -0
  796. package/dist/uni/BulletChart.vue +86 -0
  797. package/dist/uni/BulletChart.vue.d.ts +110 -0
  798. package/dist/uni/CalendarHeatmap.vue +92 -0
  799. package/dist/uni/CalendarHeatmap.vue.d.ts +129 -0
  800. package/dist/uni/CandlestickChart.vue +66 -0
  801. package/dist/uni/CandlestickChart.vue.d.ts +100 -0
  802. package/dist/uni/DonutChart.vue +72 -0
  803. package/dist/uni/DonutChart.vue.d.ts +114 -0
  804. package/dist/uni/FunnelChart.vue +67 -0
  805. package/dist/uni/FunnelChart.vue.d.ts +104 -0
  806. package/dist/uni/GanttChart.vue +67 -0
  807. package/dist/uni/GanttChart.vue.d.ts +123 -0
  808. package/dist/uni/GaugeChart.vue +77 -0
  809. package/dist/uni/GaugeChart.vue.d.ts +123 -0
  810. package/dist/uni/HeatmapChart.vue +66 -0
  811. package/dist/uni/HeatmapChart.vue.d.ts +114 -0
  812. package/dist/uni/HistogramChart.vue +66 -0
  813. package/dist/uni/HistogramChart.vue.d.ts +121 -0
  814. package/dist/uni/HorizontalBarChart.vue +68 -0
  815. package/dist/uni/HorizontalBarChart.vue.d.ts +127 -0
  816. package/dist/uni/Input.vue.d.ts +1 -1
  817. package/dist/uni/MixedChart.vue +68 -0
  818. package/dist/uni/MixedChart.vue.d.ts +106 -0
  819. package/dist/uni/NumberInput.vue.d.ts +1 -1
  820. package/dist/uni/PieChart.vue +72 -0
  821. package/dist/uni/PieChart.vue.d.ts +114 -0
  822. package/dist/uni/RadarChart.vue +67 -0
  823. package/dist/uni/RadarChart.vue.d.ts +110 -0
  824. package/dist/uni/RadialBarChart.vue +90 -0
  825. package/dist/uni/RadialBarChart.vue.d.ts +132 -0
  826. package/dist/uni/RangeAreaChart.vue +68 -0
  827. package/dist/uni/RangeAreaChart.vue.d.ts +102 -0
  828. package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
  829. package/dist/uni/SankeyChart.vue +88 -0
  830. package/dist/uni/SankeyChart.vue.d.ts +121 -0
  831. package/dist/uni/ShapeChart.vue +73 -0
  832. package/dist/uni/ShapeChart.vue.d.ts +54 -0
  833. package/dist/uni/Sparkline.vue +58 -0
  834. package/dist/uni/Sparkline.vue.d.ts +77 -0
  835. package/dist/uni/SunburstChart.vue +90 -0
  836. package/dist/uni/SunburstChart.vue.d.ts +114 -0
  837. package/dist/uni/Textarea.vue.d.ts +1 -1
  838. package/dist/uni/TimePicker.vue.d.ts +1 -1
  839. package/dist/uni/TreemapChart.vue +65 -0
  840. package/dist/uni/TreemapChart.vue.d.ts +100 -0
  841. package/dist/uni/WaterfallChart.vue +66 -0
  842. package/dist/uni/WaterfallChart.vue.d.ts +125 -0
  843. package/dist/uni/chart-types.d.ts +216 -2
  844. package/dist/uni/chart-types.js +174 -0
  845. package/dist/uni/charts-canvas.js +10 -3
  846. package/dist/uni/index.d.ts +26 -1
  847. package/dist/uni/index.js +26 -1
  848. package/dist/uni/manifest.d.ts +272 -0
  849. package/dist/uni/manifest.js +387 -0
  850. package/dist/uni/named-chart-options.d.ts +88 -0
  851. package/dist/uni/named-chart-options.js +156 -0
  852. package/dist/uni/shape-chart-canvas.d.ts +51 -0
  853. package/dist/uni/shape-chart-canvas.js +342 -0
  854. package/dist/uni/shape-chart-types.d.ts +381 -0
  855. package/dist/uni/shape-chart-types.js +261 -0
  856. package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
  857. package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
  858. package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
  859. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
  860. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  861. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
  862. package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
  863. package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
  864. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
  865. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  866. package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
  867. package/dist/vue/components/Chart/BarChart.vue.js +7 -0
  868. package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
  869. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
  870. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  871. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +112 -0
  872. package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
  873. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
  874. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +57 -0
  875. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  876. package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
  877. package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
  878. package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
  879. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
  880. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  881. package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
  882. package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
  883. package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
  884. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
  885. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  886. package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
  887. package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
  888. package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
  889. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
  890. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  891. package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
  892. package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
  893. package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
  894. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
  895. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  896. package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
  897. package/dist/vue/components/Chart/Chart.vue.js +7 -0
  898. package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
  899. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
  900. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  901. package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
  902. package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
  903. package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
  904. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
  905. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  906. package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
  907. package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
  908. package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
  909. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
  910. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  911. package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
  912. package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
  913. package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
  914. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
  915. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  916. package/dist/vue/components/Chart/GanttChart.vue.d.ts +132 -0
  917. package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
  918. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
  919. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +98 -0
  920. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  921. package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
  922. package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
  923. package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
  924. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
  925. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  926. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +125 -0
  927. package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
  928. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
  929. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +65 -0
  930. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  931. package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
  932. package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
  933. package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
  934. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
  935. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  936. package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
  937. package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
  938. package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
  939. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
  940. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  941. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
  942. package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
  943. package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
  944. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  945. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  946. package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
  947. package/dist/vue/components/Chart/LineChart.vue.js +7 -0
  948. package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
  949. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
  950. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  951. package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
  952. package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
  953. package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
  954. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
  955. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  956. package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
  957. package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
  958. package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
  959. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
  960. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
  961. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +128 -0
  962. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
  963. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
  964. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
  965. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  966. package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
  967. package/dist/vue/components/Chart/PieChart.vue.js +7 -0
  968. package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
  969. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
  970. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  971. package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
  972. package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
  973. package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
  974. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
  975. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  976. package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
  977. package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
  978. package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
  979. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
  980. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  981. package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
  982. package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
  983. package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
  984. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
  985. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  986. package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
  987. package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
  988. package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
  989. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
  990. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  991. package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
  992. package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
  993. package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
  994. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
  995. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  996. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
  997. package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
  998. package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
  999. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1000. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1001. package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
  1002. package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
  1003. package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
  1004. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
  1005. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1006. package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
  1007. package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
  1008. package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
  1009. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
  1010. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1011. package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
  1012. package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
  1013. package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
  1014. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
  1015. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1016. package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
  1017. package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
  1018. package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
  1019. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
  1020. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1021. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
  1022. package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
  1023. package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
  1024. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
  1025. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1026. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +114 -0
  1027. package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
  1028. package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
  1029. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
  1030. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1031. package/dist/vue/components/Chart/TradingChart.vue.d.ts +160 -0
  1032. package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
  1033. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
  1034. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +70 -0
  1035. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1036. package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
  1037. package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
  1038. package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
  1039. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
  1040. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1041. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +132 -0
  1042. package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
  1043. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
  1044. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +68 -0
  1045. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1046. package/dist/vue/components/Chart/cartesian.d.ts +47 -0
  1047. package/dist/vue/components/Chart/cartesian.js +56 -0
  1048. package/dist/vue/components/Chart/cartesian.js.map +1 -0
  1049. package/dist/vue/components/Chart/engine.d.ts +35 -0
  1050. package/dist/vue/components/Chart/engine.js +35 -0
  1051. package/dist/vue/components/Chart/engine.js.map +1 -0
  1052. package/dist/vue/components/Chart/index.d.ts +41 -0
  1053. package/dist/vue/components/Chart/index.js +40 -0
  1054. package/dist/vue/components/Chart/orderbook.d.ts +359 -0
  1055. package/dist/vue/components/Chart/orderbook.js +126 -0
  1056. package/dist/vue/components/Chart/orderbook.js.map +1 -0
  1057. package/dist/vue/components/Chart/props.d.ts +188 -0
  1058. package/dist/vue/components/Chart/props.js +92 -0
  1059. package/dist/vue/components/Chart/props.js.map +1 -0
  1060. package/dist/vue/components/Chart/shape.d.ts +41 -0
  1061. package/dist/vue/components/Chart/shape.js +42 -0
  1062. package/dist/vue/components/Chart/shape.js.map +1 -0
  1063. package/dist/vue/components/Chart/three-d.d.ts +106 -0
  1064. package/dist/vue/components/Chart/three-d.js +88 -0
  1065. package/dist/vue/components/Chart/three-d.js.map +1 -0
  1066. package/dist/vue/components/Chart/trading.d.ts +105 -0
  1067. package/dist/vue/components/Chart/trading.js +55 -0
  1068. package/dist/vue/components/Chart/trading.js.map +1 -0
  1069. package/dist/vue/components/Chart/types.d.ts +137 -0
  1070. package/dist/vue/global.d.ts +38 -0
  1071. package/dist/vue/groups/charts.d.ts +1 -0
  1072. package/dist/vue/groups/charts.js +87 -0
  1073. package/dist/vue/groups/charts.js.map +1 -0
  1074. package/dist/vue/index.d.ts +1 -0
  1075. package/dist/vue/index.js +63 -23
  1076. package/dist/vue/plugin.js +12 -10
  1077. package/dist/vue/plugin.js.map +1 -1
  1078. package/dist/weapp/area-chart/index.js +1 -0
  1079. package/dist/weapp/area-chart/index.json +1 -0
  1080. package/dist/weapp/area-chart/index.wxml +1 -0
  1081. package/dist/weapp/area-chart/index.wxss +1 -0
  1082. package/dist/weapp/box-plot-chart/index.js +1 -0
  1083. package/dist/weapp/box-plot-chart/index.json +1 -0
  1084. package/dist/weapp/box-plot-chart/index.wxml +1 -0
  1085. package/dist/weapp/box-plot-chart/index.wxss +1 -0
  1086. package/dist/weapp/bubble-chart/index.js +1 -0
  1087. package/dist/weapp/bubble-chart/index.json +1 -0
  1088. package/dist/weapp/bubble-chart/index.wxml +1 -0
  1089. package/dist/weapp/bubble-chart/index.wxss +1 -0
  1090. package/dist/weapp/bullet-chart/index.js +1 -0
  1091. package/dist/weapp/bullet-chart/index.json +1 -0
  1092. package/dist/weapp/bullet-chart/index.wxml +1 -0
  1093. package/dist/weapp/bullet-chart/index.wxss +1 -0
  1094. package/dist/weapp/calendar-heatmap/index.js +1 -0
  1095. package/dist/weapp/calendar-heatmap/index.json +1 -0
  1096. package/dist/weapp/calendar-heatmap/index.wxml +1 -0
  1097. package/dist/weapp/calendar-heatmap/index.wxss +1 -0
  1098. package/dist/weapp/candlestick-chart/index.js +1 -0
  1099. package/dist/weapp/candlestick-chart/index.json +1 -0
  1100. package/dist/weapp/candlestick-chart/index.wxml +1 -0
  1101. package/dist/weapp/candlestick-chart/index.wxss +1 -0
  1102. package/dist/weapp/charts/canvas.js +11436 -0
  1103. package/dist/weapp/charts/core.d.ts +2 -0
  1104. package/dist/weapp/charts/core.js +41 -0
  1105. package/dist/weapp/controls.js +1428 -3732
  1106. package/dist/weapp/donut-chart/index.js +1 -0
  1107. package/dist/weapp/donut-chart/index.json +1 -0
  1108. package/dist/weapp/donut-chart/index.wxml +1 -0
  1109. package/dist/weapp/donut-chart/index.wxss +1 -0
  1110. package/dist/weapp/funnel-chart/index.js +1 -0
  1111. package/dist/weapp/funnel-chart/index.json +1 -0
  1112. package/dist/weapp/funnel-chart/index.wxml +1 -0
  1113. package/dist/weapp/funnel-chart/index.wxss +1 -0
  1114. package/dist/weapp/gantt-chart/index.js +1 -0
  1115. package/dist/weapp/gantt-chart/index.json +1 -0
  1116. package/dist/weapp/gantt-chart/index.wxml +1 -0
  1117. package/dist/weapp/gantt-chart/index.wxss +1 -0
  1118. package/dist/weapp/gauge-chart/index.js +1 -0
  1119. package/dist/weapp/gauge-chart/index.json +1 -0
  1120. package/dist/weapp/gauge-chart/index.wxml +1 -0
  1121. package/dist/weapp/gauge-chart/index.wxss +1 -0
  1122. package/dist/weapp/heatmap-chart/index.js +1 -0
  1123. package/dist/weapp/heatmap-chart/index.json +1 -0
  1124. package/dist/weapp/heatmap-chart/index.wxml +1 -0
  1125. package/dist/weapp/heatmap-chart/index.wxss +1 -0
  1126. package/dist/weapp/histogram-chart/index.js +1 -0
  1127. package/dist/weapp/histogram-chart/index.json +1 -0
  1128. package/dist/weapp/histogram-chart/index.wxml +1 -0
  1129. package/dist/weapp/histogram-chart/index.wxss +1 -0
  1130. package/dist/weapp/horizontal-bar-chart/index.js +1 -0
  1131. package/dist/weapp/horizontal-bar-chart/index.json +1 -0
  1132. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
  1133. package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
  1134. package/dist/weapp/mixed-chart/index.js +1 -0
  1135. package/dist/weapp/mixed-chart/index.json +1 -0
  1136. package/dist/weapp/mixed-chart/index.wxml +1 -0
  1137. package/dist/weapp/mixed-chart/index.wxss +1 -0
  1138. package/dist/weapp/pie-chart/index.js +1 -0
  1139. package/dist/weapp/pie-chart/index.json +1 -0
  1140. package/dist/weapp/pie-chart/index.wxml +1 -0
  1141. package/dist/weapp/pie-chart/index.wxss +1 -0
  1142. package/dist/weapp/radar-chart/index.js +1 -0
  1143. package/dist/weapp/radar-chart/index.json +1 -0
  1144. package/dist/weapp/radar-chart/index.wxml +1 -0
  1145. package/dist/weapp/radar-chart/index.wxss +1 -0
  1146. package/dist/weapp/radial-bar-chart/index.js +1 -0
  1147. package/dist/weapp/radial-bar-chart/index.json +1 -0
  1148. package/dist/weapp/radial-bar-chart/index.wxml +1 -0
  1149. package/dist/weapp/radial-bar-chart/index.wxss +1 -0
  1150. package/dist/weapp/range-area-chart/index.js +1 -0
  1151. package/dist/weapp/range-area-chart/index.json +1 -0
  1152. package/dist/weapp/range-area-chart/index.wxml +1 -0
  1153. package/dist/weapp/range-area-chart/index.wxss +1 -0
  1154. package/dist/weapp/sankey-chart/index.js +1 -0
  1155. package/dist/weapp/sankey-chart/index.json +1 -0
  1156. package/dist/weapp/sankey-chart/index.wxml +1 -0
  1157. package/dist/weapp/sankey-chart/index.wxss +1 -0
  1158. package/dist/weapp/shape-chart/index.js +1 -0
  1159. package/dist/weapp/shape-chart/index.json +1 -0
  1160. package/dist/weapp/shape-chart/index.wxml +1 -0
  1161. package/dist/weapp/shape-chart/index.wxss +1 -0
  1162. package/dist/weapp/sparkline/index.js +1 -0
  1163. package/dist/weapp/sparkline/index.json +1 -0
  1164. package/dist/weapp/sparkline/index.wxml +1 -0
  1165. package/dist/weapp/sparkline/index.wxss +1 -0
  1166. package/dist/weapp/sunburst-chart/index.js +1 -0
  1167. package/dist/weapp/sunburst-chart/index.json +1 -0
  1168. package/dist/weapp/sunburst-chart/index.wxml +1 -0
  1169. package/dist/weapp/sunburst-chart/index.wxss +1 -0
  1170. package/dist/weapp/treemap-chart/index.js +1 -0
  1171. package/dist/weapp/treemap-chart/index.json +1 -0
  1172. package/dist/weapp/treemap-chart/index.wxml +1 -0
  1173. package/dist/weapp/treemap-chart/index.wxss +1 -0
  1174. package/dist/weapp/types.d.ts +466 -0
  1175. package/dist/weapp/waterfall-chart/index.js +1 -0
  1176. package/dist/weapp/waterfall-chart/index.json +1 -0
  1177. package/dist/weapp/waterfall-chart/index.wxml +1 -0
  1178. package/dist/weapp/waterfall-chart/index.wxss +1 -0
  1179. package/dist/web-components/components/chart/chart.d.ts +58 -0
  1180. package/dist/web-components/components/chart/chart.js +55 -0
  1181. package/dist/web-components/components/chart/chart.js.map +1 -0
  1182. package/dist/web-components/components/chart/charts.d.ts +252 -0
  1183. package/dist/web-components/components/chart/charts.js +201 -0
  1184. package/dist/web-components/components/chart/charts.js.map +1 -0
  1185. package/dist/web-components/components/chart/engine-element.d.ts +53 -0
  1186. package/dist/web-components/components/chart/engine-element.js +77 -0
  1187. package/dist/web-components/components/chart/engine-element.js.map +1 -0
  1188. package/dist/web-components/components/chart/extended.d.ts +224 -0
  1189. package/dist/web-components/components/chart/extended.js +183 -0
  1190. package/dist/web-components/components/chart/extended.js.map +1 -0
  1191. package/dist/web-components/components/chart/series.d.ts +7 -0
  1192. package/dist/web-components/components/chart/series.js +14 -0
  1193. package/dist/web-components/components/chart/series.js.map +1 -0
  1194. package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
  1195. package/dist/web-components/components/chart/shape-chart.js +161 -0
  1196. package/dist/web-components/components/chart/shape-chart.js.map +1 -0
  1197. package/dist/web-components/components/chart/shapes-extended.d.ts +162 -0
  1198. package/dist/web-components/components/chart/shapes-extended.js +156 -0
  1199. package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
  1200. package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
  1201. package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
  1202. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
  1203. package/dist/web-components/components/order-book/order-book.d.ts +165 -0
  1204. package/dist/web-components/components/order-book/order-book.js +174 -0
  1205. package/dist/web-components/components/order-book/order-book.js.map +1 -0
  1206. package/dist/web-components/components/trading-chart/trading-chart.d.ts +96 -0
  1207. package/dist/web-components/components/trading-chart/trading-chart.js +96 -0
  1208. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
  1209. package/dist/web-components/elements/chart-3d.d.ts +2 -0
  1210. package/dist/web-components/elements/chart-3d.js +13 -0
  1211. package/dist/web-components/elements/chart-3d.js.map +1 -0
  1212. package/dist/web-components/elements/chart.d.ts +7 -0
  1213. package/dist/web-components/elements/chart.js +43 -0
  1214. package/dist/web-components/elements/chart.js.map +1 -0
  1215. package/dist/web-components/elements/order-book.d.ts +2 -0
  1216. package/dist/web-components/elements/order-book.js +13 -0
  1217. package/dist/web-components/elements/order-book.js.map +1 -0
  1218. package/dist/web-components/elements/trading-chart.d.ts +2 -0
  1219. package/dist/web-components/elements/trading-chart.js +8 -0
  1220. package/dist/web-components/elements/trading-chart.js.map +1 -0
  1221. package/dist/web-components/html-custom-data.json +1192 -29
  1222. package/dist/web-components/types/react.d.ts +435 -0
  1223. package/dist/web-components/types/solid.d.ts +321 -0
  1224. package/dist/web-components/types/svelte.d.ts +321 -0
  1225. package/dist/web-components/types/vue.d.ts +359 -0
  1226. package/package.json +113 -1
@@ -0,0 +1,130 @@
1
+ import { drawOrder as e } from "./render-types.js";
2
+ import { GLSL_ATTRIBUTES as t, glslPrograms as n, itemUniforms as r, writesDepth as i } from "./shaders.js";
3
+ //#region src/engine/three-d/webgl.ts
4
+ var a = /swiftshader|llvmpipe|softpipe|software|basic render driver|microsoft basic/i, o = (e) => {
5
+ let t = e.getExtension("WEBGL_debug_renderer_info"), n = t ? e.getParameter(t.UNMASKED_RENDERER_WEBGL) : e.getParameter(e.RENDERER);
6
+ return a.test(String(n ?? ""));
7
+ }, s = [
8
+ "u_viewProj",
9
+ "u_viewport",
10
+ "u_eye",
11
+ "u_light",
12
+ "u_material",
13
+ "u_params",
14
+ "u_fog"
15
+ ], c = (e, t, n) => {
16
+ let r = (t, n) => {
17
+ let r = e.createShader(t);
18
+ return r ? (e.shaderSource(r, n), e.compileShader(r), e.getShaderParameter(r, e.COMPILE_STATUS) ? r : (e.deleteShader(r), null)) : null;
19
+ }, i = r(e.VERTEX_SHADER, t.vertex), a = r(e.FRAGMENT_SHADER, t.fragment), o = e.createProgram();
20
+ if (!i || !a || !o) return null;
21
+ if (e.attachShader(o, i), e.attachShader(o, a), n.forEach((t, n) => e.bindAttribLocation(o, n, t)), e.linkProgram(o), e.deleteShader(i), e.deleteShader(a), !e.getProgramParameter(o, e.LINK_STATUS)) return e.deleteProgram(o), null;
22
+ let c = {};
23
+ for (let t of s) c[t] = e.getUniformLocation(o, t);
24
+ return {
25
+ program: o,
26
+ uniforms: c
27
+ };
28
+ }, l = new Float32Array([
29
+ 0,
30
+ 0,
31
+ 1,
32
+ 0,
33
+ 0,
34
+ 1,
35
+ 1,
36
+ 1
37
+ ]), u = 4, d = (a, s, d, f = !1) => {
38
+ let p = {
39
+ alpha: !0,
40
+ premultipliedAlpha: !0,
41
+ antialias: !0,
42
+ depth: !0,
43
+ stencil: !1,
44
+ preserveDrawingBuffer: !1,
45
+ failIfMajorPerformanceCaveat: f
46
+ }, m = a.getContext(s === 2 ? "webgl2" : "webgl", p);
47
+ if (!m) return null;
48
+ let h = () => m.getExtension("WEBGL_lose_context")?.loseContext(), g = s === 2 ? m : null, _ = g ? null : m.getExtension("ANGLE_instanced_arrays"), v = g ? !0 : !!m.getExtension("OES_element_index_uint");
49
+ if (!g && (!_ || !v) || f && o(m)) return h(), null;
50
+ let y = (e, t) => {
51
+ g ? g.vertexAttribDivisor(e, t) : _?.vertexAttribDivisorANGLE(e, t);
52
+ }, b = (e) => {
53
+ g ? g.drawArraysInstanced(m.TRIANGLE_STRIP, 0, 4, e) : _?.drawArraysInstancedANGLE(m.TRIANGLE_STRIP, 0, 4, e);
54
+ }, x = n(s), S = c(m, x.points, t.points), C = c(m, x.mesh, t.mesh), w = c(m, x.lines, t.lines), T = m.createBuffer();
55
+ if (!S || !C || !w || !T) return h(), null;
56
+ let E = {
57
+ points: S,
58
+ mesh: C,
59
+ lines: w
60
+ };
61
+ m.bindBuffer(m.ARRAY_BUFFER, T), m.bufferData(m.ARRAY_BUFFER, l, m.STATIC_DRAW);
62
+ let D = !1, O = (e) => {
63
+ e.preventDefault(), D = !0, d();
64
+ };
65
+ a.addEventListener("webglcontextlost", O);
66
+ let k = /* @__PURE__ */ new Map(), A = /* @__PURE__ */ new Float32Array(40), j = (e, t, n, r, i, a) => {
67
+ m.enableVertexAttribArray(e), m.vertexAttribPointer(e, t, n, n === m.UNSIGNED_BYTE, r, i), y(e, +!!a);
68
+ }, M = (e, t) => {
69
+ let n = m.FLOAT, r = m.UNSIGNED_BYTE, i;
70
+ e.kind === "mesh" ? (m.bindBuffer(m.ARRAY_BUFFER, t.vertex), j(0, 3, n, 28, 0, !1), j(1, 3, n, 28, 12, !1), j(2, 4, r, 28, 24, !1), i = 3) : (m.bindBuffer(m.ARRAY_BUFFER, T), j(0, 2, n, 0, 0, !1), m.bindBuffer(m.ARRAY_BUFFER, t.vertex), e.kind === "points" ? (j(1, 3, n, 20, 0, !0), j(2, 1, n, 20, 12, !0), j(3, 4, r, 20, 16, !0)) : (j(1, 3, n, 28, 0, !0), j(2, 3, n, 28, 12, !0), j(3, 4, r, 28, 24, !0)), i = 4);
71
+ for (let e = i; e < u; e++) m.disableVertexAttribArray(e), y(e, 0);
72
+ }, N = (e) => {
73
+ let t = k.get(e.key);
74
+ if (t && t.version === e.version && t.kind === e.kind) return e.kind === "mesh" && t.index && (e.order ?? 0) !== t.order && (m.bindBuffer(m.ELEMENT_ARRAY_BUFFER, t.index), m.bufferSubData(m.ELEMENT_ARRAY_BUFFER, 0, e.indices), t.order = e.order ?? 0), t;
75
+ t && (m.deleteBuffer(t.vertex), t.index && m.deleteBuffer(t.index), k.delete(e.key));
76
+ let n = m.createBuffer();
77
+ if (!n) return null;
78
+ m.bindBuffer(m.ARRAY_BUFFER, n), m.bufferData(m.ARRAY_BUFFER, e.kind === "mesh" ? e.vertices : e.data, m.STATIC_DRAW);
79
+ let r = null;
80
+ if (e.kind === "mesh") {
81
+ if (r = m.createBuffer(), !r) return m.deleteBuffer(n), null;
82
+ m.bindBuffer(m.ELEMENT_ARRAY_BUFFER, r), m.bufferData(m.ELEMENT_ARRAY_BUFFER, e.indices, e.order === void 0 ? m.STATIC_DRAW : m.DYNAMIC_DRAW);
83
+ }
84
+ let i = {
85
+ version: e.version,
86
+ kind: e.kind,
87
+ vertex: n,
88
+ index: r,
89
+ order: e.kind === "mesh" ? e.order ?? 0 : 0
90
+ };
91
+ return k.set(e.key, i), i;
92
+ };
93
+ return {
94
+ kind: s === 2 ? "webgl2" : "webgl",
95
+ canvas: a,
96
+ resize(e, t) {
97
+ a.width = Math.max(1, e), a.height = Math.max(1, t);
98
+ },
99
+ render(t, n) {
100
+ if (D || m.isContextLost()) return;
101
+ m.viewport(0, 0, a.width, a.height), m.clearColor(0, 0, 0, 0), m.clearDepth(1), m.depthMask(!0), m.clear(m.COLOR_BUFFER_BIT | m.DEPTH_BUFFER_BIT), m.enable(m.BLEND), m.blendFunc(m.ONE, m.ONE_MINUS_SRC_ALPHA), m.enable(m.DEPTH_TEST), m.depthFunc(m.LEQUAL), m.disable(m.CULL_FACE);
102
+ let o = /* @__PURE__ */ new Set();
103
+ for (let a of e(t)) {
104
+ o.add(a.key);
105
+ let e = a.kind === "mesh" ? a.indices.length : a.count;
106
+ if (e <= 0) continue;
107
+ let t = N(a);
108
+ if (!t) continue;
109
+ let s = E[a.kind];
110
+ m.useProgram(s.program);
111
+ let c = r(a, n, A), l = s.uniforms;
112
+ m.uniformMatrix4fv(l.u_viewProj, !1, c.subarray(0, 16)), m.uniform4fv(l.u_viewport, c.subarray(16, 20)), m.uniform4fv(l.u_eye, c.subarray(20, 24)), m.uniform4fv(l.u_light, c.subarray(24, 28)), m.uniform4fv(l.u_material, c.subarray(28, 32)), m.uniform4fv(l.u_params, c.subarray(32, 36)), m.uniform4fv(l.u_fog, c.subarray(36, 40)), m.depthMask(i(a)), M(a, t), a.kind === "mesh" ? (m.bindBuffer(m.ELEMENT_ARRAY_BUFFER, t.index), m.drawElements(m.TRIANGLES, e, m.UNSIGNED_INT, 0)) : b(e);
113
+ }
114
+ m.depthMask(!0);
115
+ for (let [e, t] of k) o.has(e) || (m.deleteBuffer(t.vertex), t.index && m.deleteBuffer(t.index), k.delete(e));
116
+ },
117
+ destroy() {
118
+ if (a.removeEventListener("webglcontextlost", O), !m.isContextLost()) {
119
+ for (let e of k.values()) m.deleteBuffer(e.vertex), e.index && m.deleteBuffer(e.index);
120
+ for (let e of Object.values(E)) m.deleteProgram(e.program);
121
+ m.deleteBuffer(T);
122
+ }
123
+ k.clear(), h();
124
+ }
125
+ };
126
+ };
127
+ //#endregion
128
+ export { a as SOFTWARE_RENDERER, d as createWebGl3D, o as isSoftwareRenderer };
129
+
130
+ //# sourceMappingURL=webgl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl.js","names":["SOFTWARE_RENDERER","isSoftwareRenderer","info","gl","name","UNIFORMS","compile","shader","s","type","code","vs","source","fs","program","attributes","i","uniforms","CORNERS","MAX_LOCATIONS","createWebGl3D","requireHardware","canvas","version","loseContext","gl2","angle","uint","divisor","location","value","drawInstanced","count","sources","glslPrograms","points","GLSL_ATTRIBUTES","mesh","lines","corners","programs","lost","handleLost","event","onLost","resources","uniformData","attribute","size","stride","offset","bind","F","U8","used","item","res","upload","existing","vertex","index","width","height","seen","drawOrder","items","u","itemUniforms","frame","loc","writesDepth","key","p"],"sources":["../../../../../charts/src/engine/three-d/webgl.ts"],"sourcesContent":["// WebGL2 / WebGL (1) backend of the 3D charts: the same GLSL for both\n// (a macro prefix makes it GLSL ES 3.0), instancing through WebGL2 or\n// ANGLE_instanced_arrays, 32-bit indices through WebGL2 or\n// OES_element_index_uint. Attributes are bound for every draw (no vertex\n// array objects in WebGL 1): a few calls per item.\n\nimport type { RendererLostHandler } from \"../renderers/types\";\nimport {\n POINT_STRIDE,\n SEGMENT_STRIDE,\n VERTEX_STRIDE,\n drawOrder,\n type Item3D,\n type Renderer3D,\n} from \"./render-types\";\nimport {\n GLSL_ATTRIBUTES,\n glslPrograms,\n itemUniforms,\n writesDepth,\n type GlslSource,\n} from \"./shaders\";\n\ntype Gl = WebGLRenderingContext | WebGL2RenderingContext;\n\n/** Software rasterizers behind a WebGL context */\nexport const SOFTWARE_RENDERER =\n /swiftshader|llvmpipe|softpipe|software|basic render driver|microsoft basic/i;\n\nexport const isSoftwareRenderer = (gl: Gl): boolean => {\n const info = gl.getExtension(\"WEBGL_debug_renderer_info\");\n const name = info\n ? gl.getParameter(info.UNMASKED_RENDERER_WEBGL)\n : gl.getParameter(gl.RENDERER);\n return SOFTWARE_RENDERER.test(String(name ?? \"\"));\n};\n\nconst UNIFORMS = [\n \"u_viewProj\",\n \"u_viewport\",\n \"u_eye\",\n \"u_light\",\n \"u_material\",\n \"u_params\",\n \"u_fog\",\n] as const;\n\ninterface Program {\n program: WebGLProgram;\n uniforms: Record<(typeof UNIFORMS)[number], WebGLUniformLocation | null>;\n}\n\nconst compile = (\n gl: Gl,\n source: GlslSource,\n attributes: readonly string[],\n): Program | null => {\n const shader = (type: number, code: string) => {\n const s = gl.createShader(type);\n if (!s) return null;\n gl.shaderSource(s, code);\n gl.compileShader(s);\n if (!gl.getShaderParameter(s, gl.COMPILE_STATUS)) {\n gl.deleteShader(s);\n return null;\n }\n return s;\n };\n const vs = shader(gl.VERTEX_SHADER, source.vertex);\n const fs = shader(gl.FRAGMENT_SHADER, source.fragment);\n const program = gl.createProgram();\n if (!vs || !fs || !program) return null;\n gl.attachShader(program, vs);\n gl.attachShader(program, fs);\n attributes.forEach((name, i) => gl.bindAttribLocation(program, i, name));\n gl.linkProgram(program);\n gl.deleteShader(vs);\n gl.deleteShader(fs);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n gl.deleteProgram(program);\n return null;\n }\n const uniforms = {} as Program[\"uniforms\"];\n for (const name of UNIFORMS)\n uniforms[name] = gl.getUniformLocation(program, name);\n return { program, uniforms };\n};\n\ninterface ItemResources {\n version: number;\n kind: Item3D[\"kind\"];\n vertex: WebGLBuffer;\n index: WebGLBuffer | null;\n /** `order` of the uploaded indices (meshes) */\n order: number;\n}\n\n/** Corners of the triangle strip of a billboard / segment */\nconst CORNERS = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]);\nconst MAX_LOCATIONS = 4;\n\nexport const createWebGl3D = (\n canvas: HTMLCanvasElement,\n version: 1 | 2,\n onLost: RendererLostHandler,\n /** Refuses software rendering: the decimating Canvas2D backend is faster there */\n requireHardware = false,\n): Renderer3D | null => {\n const attributes: WebGLContextAttributes = {\n alpha: true,\n premultipliedAlpha: true,\n antialias: true,\n depth: true,\n stencil: false,\n preserveDrawingBuffer: false,\n failIfMajorPerformanceCaveat: requireHardware,\n };\n const gl = canvas.getContext(\n version === 2 ? \"webgl2\" : \"webgl\",\n attributes,\n ) as Gl | null;\n if (!gl) return null;\n const loseContext = () =>\n gl.getExtension(\"WEBGL_lose_context\")?.loseContext();\n const gl2 = version === 2 ? (gl as WebGL2RenderingContext) : null;\n const angle = gl2 ? null : gl.getExtension(\"ANGLE_instanced_arrays\");\n const uint = gl2 ? true : !!gl.getExtension(\"OES_element_index_uint\");\n if (\n (!gl2 && (!angle || !uint)) ||\n (requireHardware && isSoftwareRenderer(gl))\n ) {\n loseContext();\n return null;\n }\n const divisor = (location: number, value: number) => {\n if (gl2) gl2.vertexAttribDivisor(location, value);\n else angle?.vertexAttribDivisorANGLE(location, value);\n };\n const drawInstanced = (count: number) => {\n if (gl2) gl2.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, count);\n else angle?.drawArraysInstancedANGLE(gl.TRIANGLE_STRIP, 0, 4, count);\n };\n\n const sources = glslPrograms(version);\n const points = compile(gl, sources.points, GLSL_ATTRIBUTES.points);\n const mesh = compile(gl, sources.mesh, GLSL_ATTRIBUTES.mesh);\n const lines = compile(gl, sources.lines, GLSL_ATTRIBUTES.lines);\n const corners = gl.createBuffer();\n if (!points || !mesh || !lines || !corners) {\n loseContext();\n return null;\n }\n const programs = { points, mesh, lines };\n gl.bindBuffer(gl.ARRAY_BUFFER, corners);\n gl.bufferData(gl.ARRAY_BUFFER, CORNERS, gl.STATIC_DRAW);\n\n let lost = false;\n const handleLost = (event: Event) => {\n event.preventDefault();\n lost = true;\n onLost();\n };\n canvas.addEventListener(\"webglcontextlost\", handleLost);\n\n const resources = new Map<string, ItemResources>();\n const uniformData = new Float32Array(40);\n\n const attribute = (\n location: number,\n size: number,\n type: number,\n stride: number,\n offset: number,\n perInstance: boolean,\n ) => {\n gl.enableVertexAttribArray(location);\n gl.vertexAttribPointer(\n location,\n size,\n type,\n type === gl.UNSIGNED_BYTE,\n stride,\n offset,\n );\n divisor(location, perInstance ? 1 : 0);\n };\n\n const bind = (item: Item3D, res: ItemResources) => {\n const F = gl.FLOAT;\n const U8 = gl.UNSIGNED_BYTE;\n let used: number;\n if (item.kind === \"mesh\") {\n gl.bindBuffer(gl.ARRAY_BUFFER, res.vertex);\n attribute(0, 3, F, VERTEX_STRIDE, 0, false);\n attribute(1, 3, F, VERTEX_STRIDE, 12, false);\n attribute(2, 4, U8, VERTEX_STRIDE, 24, false);\n used = 3;\n } else {\n gl.bindBuffer(gl.ARRAY_BUFFER, corners);\n attribute(0, 2, F, 0, 0, false);\n gl.bindBuffer(gl.ARRAY_BUFFER, res.vertex);\n if (item.kind === \"points\") {\n attribute(1, 3, F, POINT_STRIDE, 0, true);\n attribute(2, 1, F, POINT_STRIDE, 12, true);\n attribute(3, 4, U8, POINT_STRIDE, 16, true);\n } else {\n attribute(1, 3, F, SEGMENT_STRIDE, 0, true);\n attribute(2, 3, F, SEGMENT_STRIDE, 12, true);\n attribute(3, 4, U8, SEGMENT_STRIDE, 24, true);\n }\n used = 4;\n }\n for (let i = used; i < MAX_LOCATIONS; i++) {\n gl.disableVertexAttribArray(i);\n divisor(i, 0);\n }\n };\n\n const upload = (item: Item3D): ItemResources | null => {\n const existing = resources.get(item.key);\n if (\n existing &&\n existing.version === item.version &&\n existing.kind === item.kind\n ) {\n // same mesh, triangles in a new order (transparent, sorted by depth)\n if (\n item.kind === \"mesh\" &&\n existing.index &&\n (item.order ?? 0) !== existing.order\n ) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, existing.index);\n gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, 0, item.indices);\n existing.order = item.order ?? 0;\n }\n return existing;\n }\n if (existing) {\n gl.deleteBuffer(existing.vertex);\n if (existing.index) gl.deleteBuffer(existing.index);\n resources.delete(item.key);\n }\n const vertex = gl.createBuffer();\n if (!vertex) return null;\n gl.bindBuffer(gl.ARRAY_BUFFER, vertex);\n gl.bufferData(\n gl.ARRAY_BUFFER,\n item.kind === \"mesh\" ? item.vertices : item.data,\n gl.STATIC_DRAW,\n );\n let index: WebGLBuffer | null = null;\n if (item.kind === \"mesh\") {\n index = gl.createBuffer();\n if (!index) {\n gl.deleteBuffer(vertex);\n return null;\n }\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, index);\n gl.bufferData(\n gl.ELEMENT_ARRAY_BUFFER,\n item.indices,\n item.order === undefined ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW,\n );\n }\n const res = {\n version: item.version,\n kind: item.kind,\n vertex,\n index,\n order: item.kind === \"mesh\" ? (item.order ?? 0) : 0,\n };\n resources.set(item.key, res);\n return res;\n };\n\n return {\n kind: version === 2 ? \"webgl2\" : \"webgl\",\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 if (lost || gl.isContextLost()) return;\n gl.viewport(0, 0, canvas.width, canvas.height);\n gl.clearColor(0, 0, 0, 0);\n gl.clearDepth(1);\n gl.depthMask(true);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.enable(gl.DEPTH_TEST);\n gl.depthFunc(gl.LEQUAL);\n gl.disable(gl.CULL_FACE);\n const seen = new Set<string>();\n for (const item of drawOrder(items)) {\n seen.add(item.key);\n const count = item.kind === \"mesh\" ? item.indices.length : item.count;\n if (count <= 0) continue;\n const res = upload(item);\n if (!res) continue;\n const program = programs[item.kind];\n gl.useProgram(program.program);\n const u = itemUniforms(item, frame, uniformData);\n const loc = program.uniforms;\n gl.uniformMatrix4fv(loc.u_viewProj, false, u.subarray(0, 16));\n gl.uniform4fv(loc.u_viewport, u.subarray(16, 20));\n gl.uniform4fv(loc.u_eye, u.subarray(20, 24));\n gl.uniform4fv(loc.u_light, u.subarray(24, 28));\n gl.uniform4fv(loc.u_material, u.subarray(28, 32));\n gl.uniform4fv(loc.u_params, u.subarray(32, 36));\n gl.uniform4fv(loc.u_fog, u.subarray(36, 40));\n gl.depthMask(writesDepth(item));\n bind(item, res);\n if (item.kind === \"mesh\") {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, res.index);\n gl.drawElements(gl.TRIANGLES, count, gl.UNSIGNED_INT, 0);\n } else {\n drawInstanced(count);\n }\n }\n gl.depthMask(true);\n for (const [key, res] of resources) {\n if (!seen.has(key)) {\n gl.deleteBuffer(res.vertex);\n if (res.index) gl.deleteBuffer(res.index);\n resources.delete(key);\n }\n }\n },\n destroy() {\n canvas.removeEventListener(\"webglcontextlost\", handleLost);\n if (!gl.isContextLost()) {\n for (const res of resources.values()) {\n gl.deleteBuffer(res.vertex);\n if (res.index) gl.deleteBuffer(res.index);\n }\n for (const p of Object.values(programs)) gl.deleteProgram(p.program);\n gl.deleteBuffer(corners);\n }\n resources.clear();\n loseContext();\n },\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("./render-types.cjs"),t=require("./shaders.cjs");var n=16,r=32,i=8,a=16,o=4,s=async(s,c,l=!1)=>{let u=typeof navigator<`u`?navigator.gpu:void 0;if(!u)return null;let d=await u.requestAdapter();if(!d)return null;let f=d;if(l&&(f.info?.isFallbackAdapter||f.isFallbackAdapter))return null;let p=await d.requestDevice(),m=s.getContext(`webgpu`);if(!m)return p.destroy(),null;let h=u.getPreferredCanvasFormat();m.configure({device:p,format:h,alphaMode:`premultiplied`});let g=!1;p.lost.then(()=>{g||c()});let _=p.createBindGroupLayout({entries:[{binding:0,visibility:3,buffer:{type:`uniform`}}]}),v=p.createPipelineLayout({bindGroupLayouts:[_]}),y={color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}},b=(e,t,n,r)=>{let i=p.createShaderModule({code:e});return p.createRenderPipeline({layout:v,vertex:{module:i,entryPoint:`vs`,buffers:t},fragment:{module:i,entryPoint:`fs`,targets:[{format:h,blend:y}]},primitive:{topology:n,cullMode:`none`},depthStencil:{format:`depth24plus`,depthWriteEnabled:r,depthCompare:`less-equal`},multisample:{count:o}})},x=[{arrayStride:20,stepMode:`instance`,attributes:[{shaderLocation:0,offset:0,format:`float32x3`},{shaderLocation:1,offset:12,format:`float32`},{shaderLocation:2,offset:16,format:`unorm8x4`}]}],S=[{arrayStride:28,stepMode:`vertex`,attributes:[{shaderLocation:0,offset:0,format:`float32x3`},{shaderLocation:1,offset:12,format:`float32x3`},{shaderLocation:2,offset:24,format:`unorm8x4`}]}],C=[{arrayStride:28,stepMode:`instance`,attributes:[{shaderLocation:0,offset:0,format:`float32x3`},{shaderLocation:1,offset:12,format:`float32x3`},{shaderLocation:2,offset:24,format:`unorm8x4`}]}],w={points:[b(t.WGSL_POINTS,x,`triangle-strip`,!1),b(t.WGSL_POINTS,x,`triangle-strip`,!0)],mesh:[b(t.WGSL_MESH,S,`triangle-list`,!1),b(t.WGSL_MESH,S,`triangle-list`,!0)],lines:[b(t.WGSL_LINES,C,`triangle-strip`,!1),b(t.WGSL_LINES,C,`triangle-strip`,!0)]},T=null,E=()=>{let e=s.width,t=s.height;return T&&T.width===e&&T.height===t?T:(T?.color.destroy(),T?.depth.destroy(),T={width:e,height:t,color:p.createTexture({size:[e,t],sampleCount:o,format:h,usage:a}),depth:p.createTexture({size:[e,t],sampleCount:o,format:`depth24plus`,usage:a})},T)},D=new Map,O=new Float32Array(40),k=(e,t)=>{let n=e.byteLength;if(n<=0)return null;let r=p.createBuffer({size:Math.max(16,Math.ceil(n/4)*4),usage:t|i});return e instanceof Uint32Array?p.queue.writeBuffer(r,0,e.buffer,e.byteOffset,n):p.queue.writeBuffer(r,0,e),r},A=e=>{e.vertex?.destroy(),e.index?.destroy()},j=e=>{let t=D.get(e.key);if(t&&t.version===e.version&&t.kind===e.kind){if(e.kind===`mesh`&&t.index&&(e.order??0)!==t.order){let{indices:n}=e;p.queue.writeBuffer(t.index,0,n.buffer,n.byteOffset,n.byteLength),t.order=e.order??0}return t}t&&A(t);let i=k(e.kind===`mesh`?e.vertices:e.data,r),a=e.kind===`mesh`?k(e.indices,n):null;if(t)t.version=e.version,t.kind=e.kind,t.vertex=i,t.index=a,t.order=e.kind===`mesh`?e.order??0:0;else{let n=p.createBuffer({size:160,usage:72});t={version:e.version,kind:e.kind,vertex:i,index:a,order:e.kind===`mesh`?e.order??0:0,uniform:n,bindGroup:p.createBindGroup({layout:_,entries:[{binding:0,resource:{buffer:n}}]})},D.set(e.key,t)}return t};return{kind:`webgpu`,canvas:s,resize(e,t){s.width=Math.max(1,e),s.height=Math.max(1,t)},render(n,r){if(g)return;let{color:i,depth:a}=E(),o=p.createCommandEncoder(),s=o.beginRenderPass({colorAttachments:[{view:i.createView(),resolveTarget:m.getCurrentTexture().createView(),clearValue:{r:0,g:0,b:0,a:0},loadOp:`clear`,storeOp:`discard`}],depthStencilAttachment:{view:a.createView(),depthClearValue:1,depthLoadOp:`clear`,depthStoreOp:`discard`}}),c=new Set;for(let i of e.drawOrder(n)){c.add(i.key);let e=i.kind===`mesh`?i.indices.length:i.count;if(e<=0)continue;let n=j(i);if(!n.vertex)continue;p.queue.writeBuffer(n.uniform,0,t.itemUniforms(i,r,O));let a=w[i.kind],o=a[t.writesDepth(i)?a.length-1:0];if(o){if(s.setPipeline(o),s.setBindGroup(0,n.bindGroup),s.setVertexBuffer(0,n.vertex),i.kind===`mesh`){if(!n.index)continue;s.setIndexBuffer(n.index,`uint32`),s.drawIndexed(e)}else s.draw(4,e)}}s.end(),p.queue.submit([o.finish()]);for(let[e,t]of D)c.has(e)||(A(t),t.uniform.destroy(),D.delete(e))},destroy(){g=!0;for(let e of D.values())A(e),e.uniform.destroy();D.clear(),T?.color.destroy(),T?.depth.destroy(),T=null,m.unconfigure(),p.destroy()}}};exports.createWebGpu3D=s;
2
+ //# sourceMappingURL=webgpu.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu.cjs","names":["WGSL_POINTS","WGSL_MESH","WGSL_LINES","drawOrder","itemUniforms","writesDepth","require_render_types","require_shaders","BUFFER_INDEX","BUFFER_VERTEX","BUFFER_COPY_DST","TEXTURE_RENDER_ATTACHMENT","SAMPLES","createWebGpu3D","gpu","adapter","fallback","requireHardware","device","context","canvas","format","destroyed","onLost","bindGroupLayout","layout","blend","pipeline","module","depthWrite","pointBuffers","meshBuffers","lineBuffers","pipelines","targets","renderTargets","width","height","resources","uniformData","buffer","bytes","data","gpuBuffer","usage","release","res","upload","item","indices","vertex","index","uniform","encoder","pass","color","depth","seen","items","count","frame","variants","chosen","key"],"sources":["../../../../../charts/src/engine/three-d/webgpu.ts"],"sourcesContent":["// WebGPU backend of the 3D charts: 4× MSAA, a depth buffer, one draw per\n// item (instanced billboards / segments, indexed triangles).\n\nimport type { RendererLostHandler } from \"../renderers/types\";\nimport {\n POINT_STRIDE,\n SEGMENT_STRIDE,\n VERTEX_STRIDE,\n drawOrder,\n type Item3D,\n type Renderer3D,\n} from \"./render-types\";\nimport {\n UNIFORM_BYTES,\n WGSL_LINES,\n WGSL_MESH,\n WGSL_POINTS,\n itemUniforms,\n writesDepth,\n} from \"./shaders\";\n\n// lib.dom has the WebGPU interfaces but not these constant objects\nconst BUFFER_INDEX = 0x10;\nconst BUFFER_VERTEX = 0x20;\nconst BUFFER_UNIFORM = 0x40;\nconst BUFFER_COPY_DST = 0x08;\nconst STAGE_VERTEX = 0x1;\nconst STAGE_FRAGMENT = 0x2;\nconst TEXTURE_RENDER_ATTACHMENT = 0x10;\n\nconst SAMPLES = 4;\n\ninterface ItemResources {\n version: number;\n kind: Item3D[\"kind\"];\n vertex: GPUBuffer | null;\n index: GPUBuffer | null;\n /** `order` of the uploaded indices (meshes) */\n order: number;\n uniform: GPUBuffer;\n bindGroup: GPUBindGroup;\n}\n\ntype GpuNavigator = Navigator & { gpu?: GPU };\n\nexport const createWebGpu3D = async (\n canvas: HTMLCanvasElement,\n onLost: RendererLostHandler,\n /** Refuses fallback (software) adapters */\n requireHardware = false,\n): Promise<Renderer3D | null> => {\n const gpu =\n typeof navigator !== \"undefined\"\n ? (navigator as GpuNavigator).gpu\n : undefined;\n if (!gpu) return null;\n const adapter = await gpu.requestAdapter();\n if (!adapter) return null;\n const fallback = adapter as GPUAdapter & {\n isFallbackAdapter?: boolean;\n info?: { isFallbackAdapter?: boolean };\n };\n if (\n requireHardware &&\n (fallback.info?.isFallbackAdapter || fallback.isFallbackAdapter)\n ) {\n return null;\n }\n const device = await adapter.requestDevice();\n const context = canvas.getContext(\"webgpu\") as GPUCanvasContext | null;\n if (!context) {\n device.destroy();\n return null;\n }\n const format = gpu.getPreferredCanvasFormat();\n context.configure({ device, format, alphaMode: \"premultiplied\" });\n\n let destroyed = false;\n void device.lost.then(() => {\n if (!destroyed) onLost();\n });\n\n const bindGroupLayout = device.createBindGroupLayout({\n entries: [\n {\n binding: 0,\n visibility: STAGE_VERTEX | STAGE_FRAGMENT,\n buffer: { type: \"uniform\" },\n },\n ],\n });\n const layout = device.createPipelineLayout({\n bindGroupLayouts: [bindGroupLayout],\n });\n const blend: GPUBlendState = {\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\",\n },\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\",\n },\n };\n const pipeline = (\n code: string,\n buffers: GPUVertexBufferLayout[],\n topology: GPUPrimitiveTopology,\n depthWrite: boolean,\n ) => {\n const module = device.createShaderModule({ code });\n return device.createRenderPipeline({\n layout,\n vertex: { module, entryPoint: \"vs\", buffers },\n fragment: { module, entryPoint: \"fs\", targets: [{ format, blend }] },\n primitive: { topology, cullMode: \"none\" },\n depthStencil: {\n format: \"depth24plus\",\n depthWriteEnabled: depthWrite,\n depthCompare: \"less-equal\",\n },\n multisample: { count: SAMPLES },\n });\n };\n const pointBuffers: GPUVertexBufferLayout[] = [\n {\n arrayStride: POINT_STRIDE,\n stepMode: \"instance\",\n attributes: [\n { shaderLocation: 0, offset: 0, format: \"float32x3\" },\n { shaderLocation: 1, offset: 12, format: \"float32\" },\n { shaderLocation: 2, offset: 16, format: \"unorm8x4\" },\n ],\n },\n ];\n const meshBuffers: GPUVertexBufferLayout[] = [\n {\n arrayStride: VERTEX_STRIDE,\n stepMode: \"vertex\",\n attributes: [\n { shaderLocation: 0, offset: 0, format: \"float32x3\" },\n { shaderLocation: 1, offset: 12, format: \"float32x3\" },\n { shaderLocation: 2, offset: 24, format: \"unorm8x4\" },\n ],\n },\n ];\n const lineBuffers: GPUVertexBufferLayout[] = [\n {\n arrayStride: SEGMENT_STRIDE,\n stepMode: \"instance\",\n attributes: [\n { shaderLocation: 0, offset: 0, format: \"float32x3\" },\n { shaderLocation: 1, offset: 12, format: \"float32x3\" },\n { shaderLocation: 2, offset: 24, format: \"unorm8x4\" },\n ],\n },\n ];\n const pipelines = {\n points: [\n pipeline(WGSL_POINTS, pointBuffers, \"triangle-strip\", false),\n pipeline(WGSL_POINTS, pointBuffers, \"triangle-strip\", true),\n ],\n mesh: [\n pipeline(WGSL_MESH, meshBuffers, \"triangle-list\", false),\n pipeline(WGSL_MESH, meshBuffers, \"triangle-list\", true),\n ],\n lines: [\n pipeline(WGSL_LINES, lineBuffers, \"triangle-strip\", false),\n pipeline(WGSL_LINES, lineBuffers, \"triangle-strip\", true),\n ],\n };\n\n let targets: {\n width: number;\n height: number;\n color: GPUTexture;\n depth: GPUTexture;\n } | null = null;\n const renderTargets = () => {\n const width = canvas.width;\n const height = canvas.height;\n if (targets && targets.width === width && targets.height === height)\n return targets;\n targets?.color.destroy();\n targets?.depth.destroy();\n targets = {\n width,\n height,\n color: device.createTexture({\n size: [width, height],\n sampleCount: SAMPLES,\n format,\n usage: TEXTURE_RENDER_ATTACHMENT,\n }),\n depth: device.createTexture({\n size: [width, height],\n sampleCount: SAMPLES,\n format: \"depth24plus\",\n usage: TEXTURE_RENDER_ATTACHMENT,\n }),\n };\n return targets;\n };\n\n const resources = new Map<string, ItemResources>();\n const uniformData = new Float32Array(UNIFORM_BYTES / 4);\n\n const buffer = (data: ArrayBuffer | Uint32Array, usage: number) => {\n const bytes = data.byteLength;\n if (bytes <= 0) return null;\n const gpuBuffer = device.createBuffer({\n size: Math.max(16, Math.ceil(bytes / 4) * 4),\n usage: usage | BUFFER_COPY_DST,\n });\n if (data instanceof Uint32Array) {\n device.queue.writeBuffer(\n gpuBuffer,\n 0,\n data.buffer,\n data.byteOffset,\n bytes,\n );\n } else {\n device.queue.writeBuffer(gpuBuffer, 0, data);\n }\n return gpuBuffer;\n };\n\n const release = (res: ItemResources) => {\n res.vertex?.destroy();\n res.index?.destroy();\n };\n\n const upload = (item: Item3D): ItemResources => {\n let res = resources.get(item.key);\n if (res && res.version === item.version && res.kind === item.kind) {\n // same mesh, triangles in a new order (transparent, sorted by depth)\n if (\n item.kind === \"mesh\" &&\n res.index &&\n (item.order ?? 0) !== res.order\n ) {\n const { indices } = item;\n device.queue.writeBuffer(\n res.index,\n 0,\n indices.buffer,\n indices.byteOffset,\n indices.byteLength,\n );\n res.order = item.order ?? 0;\n }\n return res;\n }\n if (res) release(res);\n const vertex = buffer(\n item.kind === \"mesh\" ? item.vertices : item.data,\n BUFFER_VERTEX,\n );\n const index =\n item.kind === \"mesh\" ? buffer(item.indices, BUFFER_INDEX) : null;\n if (!res) {\n const uniform = device.createBuffer({\n size: UNIFORM_BYTES,\n usage: BUFFER_UNIFORM | BUFFER_COPY_DST,\n });\n res = {\n version: item.version,\n kind: item.kind,\n vertex,\n index,\n order: item.kind === \"mesh\" ? (item.order ?? 0) : 0,\n uniform,\n bindGroup: device.createBindGroup({\n layout: bindGroupLayout,\n entries: [{ binding: 0, resource: { buffer: uniform } }],\n }),\n };\n resources.set(item.key, res);\n } else {\n res.version = item.version;\n res.kind = item.kind;\n res.vertex = vertex;\n res.index = index;\n res.order = item.kind === \"mesh\" ? (item.order ?? 0) : 0;\n }\n return res;\n };\n\n return {\n kind: \"webgpu\",\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 if (destroyed) return;\n const { color, depth } = renderTargets();\n const encoder = device.createCommandEncoder();\n const pass = encoder.beginRenderPass({\n colorAttachments: [\n {\n view: color.createView(),\n resolveTarget: context.getCurrentTexture().createView(),\n clearValue: { r: 0, g: 0, b: 0, a: 0 },\n loadOp: \"clear\",\n storeOp: \"discard\",\n },\n ],\n depthStencilAttachment: {\n view: depth.createView(),\n depthClearValue: 1,\n depthLoadOp: \"clear\",\n depthStoreOp: \"discard\",\n },\n });\n const seen = new Set<string>();\n for (const item of drawOrder(items)) {\n seen.add(item.key);\n const count = item.kind === \"mesh\" ? item.indices.length : item.count;\n if (count <= 0) continue;\n const res = upload(item);\n if (!res.vertex) continue;\n device.queue.writeBuffer(\n res.uniform,\n 0,\n itemUniforms(item, frame, uniformData),\n );\n const variants = pipelines[item.kind];\n const chosen = variants[writesDepth(item) ? variants.length - 1 : 0];\n if (!chosen) continue;\n pass.setPipeline(chosen);\n pass.setBindGroup(0, res.bindGroup);\n pass.setVertexBuffer(0, res.vertex);\n if (item.kind === \"mesh\") {\n if (!res.index) continue;\n pass.setIndexBuffer(res.index, \"uint32\");\n pass.drawIndexed(count);\n } else {\n pass.draw(4, count);\n }\n }\n pass.end();\n device.queue.submit([encoder.finish()]);\n for (const [key, res] of resources) {\n if (!seen.has(key)) {\n release(res);\n res.uniform.destroy();\n resources.delete(key);\n }\n }\n },\n destroy() {\n destroyed = true;\n for (const res of resources.values()) {\n release(res);\n res.uniform.destroy();\n }\n resources.clear();\n targets?.color.destroy();\n targets?.depth.destroy();\n targets = null;\n context.unconfigure();\n device.destroy();\n },\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { RendererLostHandler } from '../renderers/types.cjs';
2
+ import { Renderer3D } from './render-types.cjs';
3
+ export declare const createWebGpu3D: (canvas: HTMLCanvasElement, onLost: RendererLostHandler,
4
+ /** Refuses fallback (software) adapters */
5
+ requireHardware?: boolean) => Promise<Renderer3D | null>;
@@ -0,0 +1,5 @@
1
+ import { RendererLostHandler } from '../renderers/types.js';
2
+ import { Renderer3D } from './render-types.js';
3
+ export declare const createWebGpu3D: (canvas: HTMLCanvasElement, onLost: RendererLostHandler,
4
+ /** Refuses fallback (software) adapters */
5
+ requireHardware?: boolean) => Promise<Renderer3D | null>;
@@ -0,0 +1,249 @@
1
+ import { drawOrder as e } from "./render-types.js";
2
+ import { WGSL_LINES as t, WGSL_MESH as n, WGSL_POINTS as r, itemUniforms as i, writesDepth as a } from "./shaders.js";
3
+ //#region src/engine/three-d/webgpu.ts
4
+ var o = 16, s = 32, c = 8, l = 16, u = 4, d = async (d, f, p = !1) => {
5
+ let m = typeof navigator < "u" ? navigator.gpu : void 0;
6
+ if (!m) return null;
7
+ let h = await m.requestAdapter();
8
+ if (!h) return null;
9
+ let g = h;
10
+ if (p && (g.info?.isFallbackAdapter || g.isFallbackAdapter)) return null;
11
+ let _ = await h.requestDevice(), v = d.getContext("webgpu");
12
+ if (!v) return _.destroy(), null;
13
+ let y = m.getPreferredCanvasFormat();
14
+ v.configure({
15
+ device: _,
16
+ format: y,
17
+ alphaMode: "premultiplied"
18
+ });
19
+ let b = !1;
20
+ _.lost.then(() => {
21
+ b || f();
22
+ });
23
+ let x = _.createBindGroupLayout({ entries: [{
24
+ binding: 0,
25
+ visibility: 3,
26
+ buffer: { type: "uniform" }
27
+ }] }), S = _.createPipelineLayout({ bindGroupLayouts: [x] }), C = {
28
+ color: {
29
+ srcFactor: "one",
30
+ dstFactor: "one-minus-src-alpha",
31
+ operation: "add"
32
+ },
33
+ alpha: {
34
+ srcFactor: "one",
35
+ dstFactor: "one-minus-src-alpha",
36
+ operation: "add"
37
+ }
38
+ }, w = (e, t, n, r) => {
39
+ let i = _.createShaderModule({ code: e });
40
+ return _.createRenderPipeline({
41
+ layout: S,
42
+ vertex: {
43
+ module: i,
44
+ entryPoint: "vs",
45
+ buffers: t
46
+ },
47
+ fragment: {
48
+ module: i,
49
+ entryPoint: "fs",
50
+ targets: [{
51
+ format: y,
52
+ blend: C
53
+ }]
54
+ },
55
+ primitive: {
56
+ topology: n,
57
+ cullMode: "none"
58
+ },
59
+ depthStencil: {
60
+ format: "depth24plus",
61
+ depthWriteEnabled: r,
62
+ depthCompare: "less-equal"
63
+ },
64
+ multisample: { count: u }
65
+ });
66
+ }, T = [{
67
+ arrayStride: 20,
68
+ stepMode: "instance",
69
+ attributes: [
70
+ {
71
+ shaderLocation: 0,
72
+ offset: 0,
73
+ format: "float32x3"
74
+ },
75
+ {
76
+ shaderLocation: 1,
77
+ offset: 12,
78
+ format: "float32"
79
+ },
80
+ {
81
+ shaderLocation: 2,
82
+ offset: 16,
83
+ format: "unorm8x4"
84
+ }
85
+ ]
86
+ }], E = [{
87
+ arrayStride: 28,
88
+ stepMode: "vertex",
89
+ attributes: [
90
+ {
91
+ shaderLocation: 0,
92
+ offset: 0,
93
+ format: "float32x3"
94
+ },
95
+ {
96
+ shaderLocation: 1,
97
+ offset: 12,
98
+ format: "float32x3"
99
+ },
100
+ {
101
+ shaderLocation: 2,
102
+ offset: 24,
103
+ format: "unorm8x4"
104
+ }
105
+ ]
106
+ }], D = [{
107
+ arrayStride: 28,
108
+ stepMode: "instance",
109
+ attributes: [
110
+ {
111
+ shaderLocation: 0,
112
+ offset: 0,
113
+ format: "float32x3"
114
+ },
115
+ {
116
+ shaderLocation: 1,
117
+ offset: 12,
118
+ format: "float32x3"
119
+ },
120
+ {
121
+ shaderLocation: 2,
122
+ offset: 24,
123
+ format: "unorm8x4"
124
+ }
125
+ ]
126
+ }], O = {
127
+ points: [w(r, T, "triangle-strip", !1), w(r, T, "triangle-strip", !0)],
128
+ mesh: [w(n, E, "triangle-list", !1), w(n, E, "triangle-list", !0)],
129
+ lines: [w(t, D, "triangle-strip", !1), w(t, D, "triangle-strip", !0)]
130
+ }, k = null, A = () => {
131
+ let e = d.width, t = d.height;
132
+ return k && k.width === e && k.height === t ? k : (k?.color.destroy(), k?.depth.destroy(), k = {
133
+ width: e,
134
+ height: t,
135
+ color: _.createTexture({
136
+ size: [e, t],
137
+ sampleCount: u,
138
+ format: y,
139
+ usage: l
140
+ }),
141
+ depth: _.createTexture({
142
+ size: [e, t],
143
+ sampleCount: u,
144
+ format: "depth24plus",
145
+ usage: l
146
+ })
147
+ }, k);
148
+ }, j = /* @__PURE__ */ new Map(), M = /* @__PURE__ */ new Float32Array(40), N = (e, t) => {
149
+ let n = e.byteLength;
150
+ if (n <= 0) return null;
151
+ let r = _.createBuffer({
152
+ size: Math.max(16, Math.ceil(n / 4) * 4),
153
+ usage: t | c
154
+ });
155
+ return e instanceof Uint32Array ? _.queue.writeBuffer(r, 0, e.buffer, e.byteOffset, n) : _.queue.writeBuffer(r, 0, e), r;
156
+ }, P = (e) => {
157
+ e.vertex?.destroy(), e.index?.destroy();
158
+ }, F = (e) => {
159
+ let t = j.get(e.key);
160
+ if (t && t.version === e.version && t.kind === e.kind) {
161
+ if (e.kind === "mesh" && t.index && (e.order ?? 0) !== t.order) {
162
+ let { indices: n } = e;
163
+ _.queue.writeBuffer(t.index, 0, n.buffer, n.byteOffset, n.byteLength), t.order = e.order ?? 0;
164
+ }
165
+ return t;
166
+ }
167
+ t && P(t);
168
+ let n = N(e.kind === "mesh" ? e.vertices : e.data, s), r = e.kind === "mesh" ? N(e.indices, o) : null;
169
+ if (t) t.version = e.version, t.kind = e.kind, t.vertex = n, t.index = r, t.order = e.kind === "mesh" ? e.order ?? 0 : 0;
170
+ else {
171
+ let i = _.createBuffer({
172
+ size: 160,
173
+ usage: 72
174
+ });
175
+ t = {
176
+ version: e.version,
177
+ kind: e.kind,
178
+ vertex: n,
179
+ index: r,
180
+ order: e.kind === "mesh" ? e.order ?? 0 : 0,
181
+ uniform: i,
182
+ bindGroup: _.createBindGroup({
183
+ layout: x,
184
+ entries: [{
185
+ binding: 0,
186
+ resource: { buffer: i }
187
+ }]
188
+ })
189
+ }, j.set(e.key, t);
190
+ }
191
+ return t;
192
+ };
193
+ return {
194
+ kind: "webgpu",
195
+ canvas: d,
196
+ resize(e, t) {
197
+ d.width = Math.max(1, e), d.height = Math.max(1, t);
198
+ },
199
+ render(t, n) {
200
+ if (b) return;
201
+ let { color: r, depth: o } = A(), s = _.createCommandEncoder(), c = s.beginRenderPass({
202
+ colorAttachments: [{
203
+ view: r.createView(),
204
+ resolveTarget: v.getCurrentTexture().createView(),
205
+ clearValue: {
206
+ r: 0,
207
+ g: 0,
208
+ b: 0,
209
+ a: 0
210
+ },
211
+ loadOp: "clear",
212
+ storeOp: "discard"
213
+ }],
214
+ depthStencilAttachment: {
215
+ view: o.createView(),
216
+ depthClearValue: 1,
217
+ depthLoadOp: "clear",
218
+ depthStoreOp: "discard"
219
+ }
220
+ }), l = /* @__PURE__ */ new Set();
221
+ for (let r of e(t)) {
222
+ l.add(r.key);
223
+ let e = r.kind === "mesh" ? r.indices.length : r.count;
224
+ if (e <= 0) continue;
225
+ let t = F(r);
226
+ if (!t.vertex) continue;
227
+ _.queue.writeBuffer(t.uniform, 0, i(r, n, M));
228
+ let o = O[r.kind], s = o[a(r) ? o.length - 1 : 0];
229
+ if (s) {
230
+ if (c.setPipeline(s), c.setBindGroup(0, t.bindGroup), c.setVertexBuffer(0, t.vertex), r.kind === "mesh") {
231
+ if (!t.index) continue;
232
+ c.setIndexBuffer(t.index, "uint32"), c.drawIndexed(e);
233
+ } else c.draw(4, e);
234
+ }
235
+ }
236
+ c.end(), _.queue.submit([s.finish()]);
237
+ for (let [e, t] of j) l.has(e) || (P(t), t.uniform.destroy(), j.delete(e));
238
+ },
239
+ destroy() {
240
+ b = !0;
241
+ for (let e of j.values()) P(e), e.uniform.destroy();
242
+ j.clear(), k?.color.destroy(), k?.depth.destroy(), k = null, v.unconfigure(), _.destroy();
243
+ }
244
+ };
245
+ };
246
+ //#endregion
247
+ export { d as createWebGpu3D };
248
+
249
+ //# sourceMappingURL=webgpu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu.js","names":["BUFFER_INDEX","BUFFER_VERTEX","BUFFER_COPY_DST","TEXTURE_RENDER_ATTACHMENT","SAMPLES","createWebGpu3D","gpu","adapter","fallback","requireHardware","device","context","canvas","format","destroyed","onLost","bindGroupLayout","layout","blend","pipeline","module","depthWrite","pointBuffers","meshBuffers","lineBuffers","pipelines","WGSL_POINTS","WGSL_MESH","WGSL_LINES","targets","renderTargets","width","height","resources","uniformData","buffer","bytes","data","gpuBuffer","usage","release","res","upload","item","indices","vertex","index","uniform","encoder","pass","color","depth","seen","drawOrder","items","count","itemUniforms","frame","variants","chosen","writesDepth","key"],"sources":["../../../../../charts/src/engine/three-d/webgpu.ts"],"sourcesContent":["// WebGPU backend of the 3D charts: 4× MSAA, a depth buffer, one draw per\n// item (instanced billboards / segments, indexed triangles).\n\nimport type { RendererLostHandler } from \"../renderers/types\";\nimport {\n POINT_STRIDE,\n SEGMENT_STRIDE,\n VERTEX_STRIDE,\n drawOrder,\n type Item3D,\n type Renderer3D,\n} from \"./render-types\";\nimport {\n UNIFORM_BYTES,\n WGSL_LINES,\n WGSL_MESH,\n WGSL_POINTS,\n itemUniforms,\n writesDepth,\n} from \"./shaders\";\n\n// lib.dom has the WebGPU interfaces but not these constant objects\nconst BUFFER_INDEX = 0x10;\nconst BUFFER_VERTEX = 0x20;\nconst BUFFER_UNIFORM = 0x40;\nconst BUFFER_COPY_DST = 0x08;\nconst STAGE_VERTEX = 0x1;\nconst STAGE_FRAGMENT = 0x2;\nconst TEXTURE_RENDER_ATTACHMENT = 0x10;\n\nconst SAMPLES = 4;\n\ninterface ItemResources {\n version: number;\n kind: Item3D[\"kind\"];\n vertex: GPUBuffer | null;\n index: GPUBuffer | null;\n /** `order` of the uploaded indices (meshes) */\n order: number;\n uniform: GPUBuffer;\n bindGroup: GPUBindGroup;\n}\n\ntype GpuNavigator = Navigator & { gpu?: GPU };\n\nexport const createWebGpu3D = async (\n canvas: HTMLCanvasElement,\n onLost: RendererLostHandler,\n /** Refuses fallback (software) adapters */\n requireHardware = false,\n): Promise<Renderer3D | null> => {\n const gpu =\n typeof navigator !== \"undefined\"\n ? (navigator as GpuNavigator).gpu\n : undefined;\n if (!gpu) return null;\n const adapter = await gpu.requestAdapter();\n if (!adapter) return null;\n const fallback = adapter as GPUAdapter & {\n isFallbackAdapter?: boolean;\n info?: { isFallbackAdapter?: boolean };\n };\n if (\n requireHardware &&\n (fallback.info?.isFallbackAdapter || fallback.isFallbackAdapter)\n ) {\n return null;\n }\n const device = await adapter.requestDevice();\n const context = canvas.getContext(\"webgpu\") as GPUCanvasContext | null;\n if (!context) {\n device.destroy();\n return null;\n }\n const format = gpu.getPreferredCanvasFormat();\n context.configure({ device, format, alphaMode: \"premultiplied\" });\n\n let destroyed = false;\n void device.lost.then(() => {\n if (!destroyed) onLost();\n });\n\n const bindGroupLayout = device.createBindGroupLayout({\n entries: [\n {\n binding: 0,\n visibility: STAGE_VERTEX | STAGE_FRAGMENT,\n buffer: { type: \"uniform\" },\n },\n ],\n });\n const layout = device.createPipelineLayout({\n bindGroupLayouts: [bindGroupLayout],\n });\n const blend: GPUBlendState = {\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\",\n },\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\",\n },\n };\n const pipeline = (\n code: string,\n buffers: GPUVertexBufferLayout[],\n topology: GPUPrimitiveTopology,\n depthWrite: boolean,\n ) => {\n const module = device.createShaderModule({ code });\n return device.createRenderPipeline({\n layout,\n vertex: { module, entryPoint: \"vs\", buffers },\n fragment: { module, entryPoint: \"fs\", targets: [{ format, blend }] },\n primitive: { topology, cullMode: \"none\" },\n depthStencil: {\n format: \"depth24plus\",\n depthWriteEnabled: depthWrite,\n depthCompare: \"less-equal\",\n },\n multisample: { count: SAMPLES },\n });\n };\n const pointBuffers: GPUVertexBufferLayout[] = [\n {\n arrayStride: POINT_STRIDE,\n stepMode: \"instance\",\n attributes: [\n { shaderLocation: 0, offset: 0, format: \"float32x3\" },\n { shaderLocation: 1, offset: 12, format: \"float32\" },\n { shaderLocation: 2, offset: 16, format: \"unorm8x4\" },\n ],\n },\n ];\n const meshBuffers: GPUVertexBufferLayout[] = [\n {\n arrayStride: VERTEX_STRIDE,\n stepMode: \"vertex\",\n attributes: [\n { shaderLocation: 0, offset: 0, format: \"float32x3\" },\n { shaderLocation: 1, offset: 12, format: \"float32x3\" },\n { shaderLocation: 2, offset: 24, format: \"unorm8x4\" },\n ],\n },\n ];\n const lineBuffers: GPUVertexBufferLayout[] = [\n {\n arrayStride: SEGMENT_STRIDE,\n stepMode: \"instance\",\n attributes: [\n { shaderLocation: 0, offset: 0, format: \"float32x3\" },\n { shaderLocation: 1, offset: 12, format: \"float32x3\" },\n { shaderLocation: 2, offset: 24, format: \"unorm8x4\" },\n ],\n },\n ];\n const pipelines = {\n points: [\n pipeline(WGSL_POINTS, pointBuffers, \"triangle-strip\", false),\n pipeline(WGSL_POINTS, pointBuffers, \"triangle-strip\", true),\n ],\n mesh: [\n pipeline(WGSL_MESH, meshBuffers, \"triangle-list\", false),\n pipeline(WGSL_MESH, meshBuffers, \"triangle-list\", true),\n ],\n lines: [\n pipeline(WGSL_LINES, lineBuffers, \"triangle-strip\", false),\n pipeline(WGSL_LINES, lineBuffers, \"triangle-strip\", true),\n ],\n };\n\n let targets: {\n width: number;\n height: number;\n color: GPUTexture;\n depth: GPUTexture;\n } | null = null;\n const renderTargets = () => {\n const width = canvas.width;\n const height = canvas.height;\n if (targets && targets.width === width && targets.height === height)\n return targets;\n targets?.color.destroy();\n targets?.depth.destroy();\n targets = {\n width,\n height,\n color: device.createTexture({\n size: [width, height],\n sampleCount: SAMPLES,\n format,\n usage: TEXTURE_RENDER_ATTACHMENT,\n }),\n depth: device.createTexture({\n size: [width, height],\n sampleCount: SAMPLES,\n format: \"depth24plus\",\n usage: TEXTURE_RENDER_ATTACHMENT,\n }),\n };\n return targets;\n };\n\n const resources = new Map<string, ItemResources>();\n const uniformData = new Float32Array(UNIFORM_BYTES / 4);\n\n const buffer = (data: ArrayBuffer | Uint32Array, usage: number) => {\n const bytes = data.byteLength;\n if (bytes <= 0) return null;\n const gpuBuffer = device.createBuffer({\n size: Math.max(16, Math.ceil(bytes / 4) * 4),\n usage: usage | BUFFER_COPY_DST,\n });\n if (data instanceof Uint32Array) {\n device.queue.writeBuffer(\n gpuBuffer,\n 0,\n data.buffer,\n data.byteOffset,\n bytes,\n );\n } else {\n device.queue.writeBuffer(gpuBuffer, 0, data);\n }\n return gpuBuffer;\n };\n\n const release = (res: ItemResources) => {\n res.vertex?.destroy();\n res.index?.destroy();\n };\n\n const upload = (item: Item3D): ItemResources => {\n let res = resources.get(item.key);\n if (res && res.version === item.version && res.kind === item.kind) {\n // same mesh, triangles in a new order (transparent, sorted by depth)\n if (\n item.kind === \"mesh\" &&\n res.index &&\n (item.order ?? 0) !== res.order\n ) {\n const { indices } = item;\n device.queue.writeBuffer(\n res.index,\n 0,\n indices.buffer,\n indices.byteOffset,\n indices.byteLength,\n );\n res.order = item.order ?? 0;\n }\n return res;\n }\n if (res) release(res);\n const vertex = buffer(\n item.kind === \"mesh\" ? item.vertices : item.data,\n BUFFER_VERTEX,\n );\n const index =\n item.kind === \"mesh\" ? buffer(item.indices, BUFFER_INDEX) : null;\n if (!res) {\n const uniform = device.createBuffer({\n size: UNIFORM_BYTES,\n usage: BUFFER_UNIFORM | BUFFER_COPY_DST,\n });\n res = {\n version: item.version,\n kind: item.kind,\n vertex,\n index,\n order: item.kind === \"mesh\" ? (item.order ?? 0) : 0,\n uniform,\n bindGroup: device.createBindGroup({\n layout: bindGroupLayout,\n entries: [{ binding: 0, resource: { buffer: uniform } }],\n }),\n };\n resources.set(item.key, res);\n } else {\n res.version = item.version;\n res.kind = item.kind;\n res.vertex = vertex;\n res.index = index;\n res.order = item.kind === \"mesh\" ? (item.order ?? 0) : 0;\n }\n return res;\n };\n\n return {\n kind: \"webgpu\",\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 if (destroyed) return;\n const { color, depth } = renderTargets();\n const encoder = device.createCommandEncoder();\n const pass = encoder.beginRenderPass({\n colorAttachments: [\n {\n view: color.createView(),\n resolveTarget: context.getCurrentTexture().createView(),\n clearValue: { r: 0, g: 0, b: 0, a: 0 },\n loadOp: \"clear\",\n storeOp: \"discard\",\n },\n ],\n depthStencilAttachment: {\n view: depth.createView(),\n depthClearValue: 1,\n depthLoadOp: \"clear\",\n depthStoreOp: \"discard\",\n },\n });\n const seen = new Set<string>();\n for (const item of drawOrder(items)) {\n seen.add(item.key);\n const count = item.kind === \"mesh\" ? item.indices.length : item.count;\n if (count <= 0) continue;\n const res = upload(item);\n if (!res.vertex) continue;\n device.queue.writeBuffer(\n res.uniform,\n 0,\n itemUniforms(item, frame, uniformData),\n );\n const variants = pipelines[item.kind];\n const chosen = variants[writesDepth(item) ? variants.length - 1 : 0];\n if (!chosen) continue;\n pass.setPipeline(chosen);\n pass.setBindGroup(0, res.bindGroup);\n pass.setVertexBuffer(0, res.vertex);\n if (item.kind === \"mesh\") {\n if (!res.index) continue;\n pass.setIndexBuffer(res.index, \"uint32\");\n pass.drawIndexed(count);\n } else {\n pass.draw(4, count);\n }\n }\n pass.end();\n device.queue.submit([encoder.finish()]);\n for (const [key, res] of resources) {\n if (!seen.has(key)) {\n release(res);\n res.uniform.destroy();\n resources.delete(key);\n }\n }\n },\n destroy() {\n destroyed = true;\n for (const res of resources.values()) {\n release(res);\n res.uniform.destroy();\n }\n resources.clear();\n targets?.color.destroy();\n targets?.depth.destroy();\n targets = null;\n context.unconfigure();\n device.destroy();\n },\n };\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("./scale.cjs");var t=1e3,n=60*t,r=60*n,i=24*r,a=30*i,o=365*i,s=[{unit:`second`,step:1,ms:t},{unit:`second`,step:5,ms:5*t},{unit:`second`,step:15,ms:15*t},{unit:`second`,step:30,ms:30*t},{unit:`minute`,step:1,ms:n},{unit:`minute`,step:5,ms:5*n},{unit:`minute`,step:15,ms:15*n},{unit:`minute`,step:30,ms:30*n},{unit:`hour`,step:1,ms:r},{unit:`hour`,step:3,ms:3*r},{unit:`hour`,step:6,ms:6*r},{unit:`hour`,step:12,ms:12*r},{unit:`day`,step:1,ms:i},{unit:`day`,step:2,ms:2*i},{unit:`day`,step:7,ms:7*i},{unit:`month`,step:1,ms:a},{unit:`month`,step:3,ms:3*a},{unit:`month`,step:6,ms:6*a}],c=(e,t=2)=>String(e).padStart(t,`0`),l=(n,r)=>{let i=n/Math.max(1,r);if(i<t*.75)return{unit:`millisecond`,step:e.tickStep(0,n,r),ms:1};for(let e of s)if(e.ms>=i*.75)return e;let a=Math.max(1,e.tickStep(0,n/o,r));return{unit:`year`,step:Math.round(a),ms:Math.round(a)*o}},u=(e,{unit:t,step:n})=>{let r=new Date(e);switch(t){case`second`:r.setMilliseconds(0),r.setSeconds(r.getSeconds()-r.getSeconds()%n);break;case`minute`:r.setSeconds(0,0),r.setMinutes(r.getMinutes()-r.getMinutes()%n);break;case`hour`:r.setMinutes(0,0,0),r.setHours(r.getHours()-r.getHours()%n);break;case`day`:r.setHours(0,0,0,0),n===7&&r.setDate(r.getDate()-(r.getDay()+6)%7);break;case`month`:r.setHours(0,0,0,0),r.setDate(1),r.setMonth(r.getMonth()-r.getMonth()%n);break;case`year`:r.setHours(0,0,0,0),r.setMonth(0,1),r.setFullYear(r.getFullYear()-r.getFullYear()%n)}return r},d=(e,{unit:t,step:n})=>{switch(t){case`second`:e.setSeconds(e.getSeconds()+n);break;case`minute`:e.setMinutes(e.getMinutes()+n);break;case`hour`:e.setHours(e.getHours()+n);break;case`day`:e.setDate(e.getDate()+n);break;case`month`:e.setMonth(e.getMonth()+n);break;case`year`:e.setFullYear(e.getFullYear()+n)}},f=(t,n,r)=>{t>n&&([t,n]=[n,t]);let i=l(n-t,r);if(i.unit===`millisecond`)return{values:e.linearTicks(t,n,r),unit:`millisecond`,format:e=>g(e,`millisecond`)};let a=[],o=u(t,i);for(;o.getTime()<t;)d(o,i);for(;o.getTime()<=n&&a.length<500;)a.push(o.getTime()),d(o,i);let{unit:s}=i;return{values:a,unit:s,format:e=>h(e,s)}},p=e=>`${e.getFullYear()}-${c(e.getMonth()+1)}-${c(e.getDate())}`,m=e=>`${c(e.getHours())}:${c(e.getMinutes())}`,h=(e,t)=>{let n=new Date(e),r=n.getHours()===0&&n.getMinutes()===0&&n.getSeconds()===0;switch(t){case`second`:return`${m(n)}:${c(n.getSeconds())}`;case`minute`:case`hour`:return r?`${c(n.getMonth()+1)}-${c(n.getDate())}`:m(n);case`day`:return n.getMonth()===0&&n.getDate()===1?String(n.getFullYear()):`${c(n.getMonth()+1)}-${c(n.getDate())}`;case`month`:return n.getMonth()===0?String(n.getFullYear()):`${n.getFullYear()}-${c(n.getMonth()+1)}`;default:return String(n.getFullYear())}},g=(e,t=`minute`)=>{let n=new Date(e);if(Number.isNaN(n.getTime()))return`–`;switch(t){case`millisecond`:return`${p(n)} ${m(n)}:${c(n.getSeconds())}.${c(n.getMilliseconds(),3)}`;case`second`:return`${p(n)} ${m(n)}:${c(n.getSeconds())}`;case`minute`:case`hour`:return`${p(n)} ${m(n)}`;default:return p(n)}};exports.formatTime=g,exports.timeTicks=f;
1
+ const e=require("./locale.cjs"),t=require("./scale.cjs");var n=1e3,r=60*n,i=60*r,a=24*i,o=30*a,s=365*a,c=[{unit:`second`,step:1,ms:n},{unit:`second`,step:5,ms:5*n},{unit:`second`,step:15,ms:15*n},{unit:`second`,step:30,ms:30*n},{unit:`minute`,step:1,ms:r},{unit:`minute`,step:5,ms:5*r},{unit:`minute`,step:15,ms:15*r},{unit:`minute`,step:30,ms:30*r},{unit:`hour`,step:1,ms:i},{unit:`hour`,step:3,ms:3*i},{unit:`hour`,step:6,ms:6*i},{unit:`hour`,step:12,ms:12*i},{unit:`day`,step:1,ms:a},{unit:`day`,step:2,ms:2*a},{unit:`day`,step:7,ms:7*a},{unit:`month`,step:1,ms:o},{unit:`month`,step:3,ms:3*o},{unit:`month`,step:6,ms:6*o}],l=(e,t=2)=>String(e).padStart(t,`0`),u=(e,t)=>{let n=new Date(e);return t?{year:n.getUTCFullYear(),month:n.getUTCMonth(),date:n.getUTCDate(),day:n.getUTCDay(),hours:n.getUTCHours(),minutes:n.getUTCMinutes(),seconds:n.getUTCSeconds(),ms:n.getUTCMilliseconds()}:{year:n.getFullYear(),month:n.getMonth(),date:n.getDate(),day:n.getDay(),hours:n.getHours(),minutes:n.getMinutes(),seconds:n.getSeconds(),ms:n.getMilliseconds()}},d=(e,t,n,r=1,i=0,a=0,o=0)=>{if(e){let e=Date.UTC(t,n,r,i,a,o);if(t>=0&&t<100){let t=new Date(e);return t.setUTCFullYear(t.getUTCFullYear()-1900),t.getTime()}return e}let s=new Date(t,n,r,i,a,o);return t>=0&&t<100&&s.setFullYear(s.getFullYear()-1900),s.getTime()},f=(e,r)=>{let i=e/Math.max(1,r);if(i<n*.75)return{unit:`millisecond`,step:t.tickStep(0,e,r),ms:1};for(let e of c)if(e.ms>=i*.75)return e;let a=Math.max(1,t.tickStep(0,e/s,r));return{unit:`year`,step:Math.round(a),ms:Math.round(a)*s}},p=(e,{unit:t,step:n},r)=>{let i=u(e,r);switch(t){case`second`:return d(r,i.year,i.month,i.date,i.hours,i.minutes,i.seconds-i.seconds%n);case`minute`:return d(r,i.year,i.month,i.date,i.hours,i.minutes-i.minutes%n);case`hour`:return d(r,i.year,i.month,i.date,i.hours-i.hours%n);case`day`:return d(r,i.year,i.month,i.date-(n===7?(i.day+6)%7:0));case`month`:return d(r,i.year,i.month-i.month%n);case`year`:return d(r,i.year-i.year%n,0);default:return e}},m=(e,{unit:t,step:n},r)=>{let{year:i,month:a,date:o,hours:s,minutes:c,seconds:l}=u(e,r);switch(t){case`second`:return d(r,i,a,o,s,c,l+n);case`minute`:return d(r,i,a,o,s,c+n,l);case`hour`:return d(r,i,a,o,s+n,c,l);case`day`:return d(r,i,a,o+n,s,c,l);case`month`:return d(r,i,a+n,o,s,c,l);case`year`:return d(r,i+n,a,o,s,c,l);default:return e+n}},h=(e,n,r,i,a=`local`)=>{e>n&&([e,n]=[n,e]);let o=f(n-e,r);if(o.unit===`millisecond`)return{values:t.linearTicks(e,n,r),unit:`millisecond`,format:e=>w(e,`millisecond`,i,a)};let s=a===`utc`,c=[],l=p(e,o,s);for(;l<e;)l=m(l,o,s);for(;l<=n&&c.length<500;)c.push(l),l=m(l,o,s);let{unit:u}=o;return{values:c,unit:u,format:e=>C(e,u,i,a)}},g=e=>`${e.year}-${l(e.month+1)}-${l(e.date)}`,_=e=>`${l(e.hours)}:${l(e.minutes)}`,v={hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`},y={...v,second:`2-digit`},b={month:`short`,day:`numeric`},x={year:`numeric`,month:`short`,day:`numeric`},S=(t,n,r)=>e.dateFormat(t,n===`utc`?{...r,timeZone:`UTC`}:r),C=(e,t,n,r)=>{let i=u(e,r===`utc`),a=i.hours===0&&i.minutes===0&&i.seconds===0,o=i.month===0&&i.date===1;if(n){let s=t=>S(n,r,t).format(e);switch(t){case`second`:return s(y);case`minute`:case`hour`:return s(a?b:v);case`day`:return s(o?{year:`numeric`}:b);case`month`:return s(i.month===0?{year:`numeric`}:{month:`short`});default:return s({year:`numeric`})}}switch(t){case`second`:return`${_(i)}:${l(i.seconds)}`;case`minute`:case`hour`:return a?`${l(i.month+1)}-${l(i.date)}`:_(i);case`day`:return o?String(i.year):`${l(i.month+1)}-${l(i.date)}`;case`month`:return i.month===0?String(i.year):`${i.year}-${l(i.month+1)}`;default:return String(i.year)}},w=(e,t=`minute`,n,r=`local`)=>{if(!Number.isFinite(e)||Number.isNaN(new Date(e).getTime()))return`–`;let i=u(e,r===`utc`);if(n){let a=t=>S(n,r,t).format(e);switch(t){case`millisecond`:return`${a({...x,...y})}.${l(i.ms,3)}`;case`second`:return a({...x,...y});case`minute`:case`hour`:return a({...x,...v});default:return a({...x,weekday:`short`})}}switch(t){case`millisecond`:return`${g(i)} ${_(i)}:${l(i.seconds)}.${l(i.ms,3)}`;case`second`:return`${g(i)} ${_(i)}:${l(i.seconds)}`;case`minute`:case`hour`:return`${g(i)} ${_(i)}`;default:return g(i)}};exports.formatTime=w,exports.timeTicks=h;
2
2
  //# sourceMappingURL=time.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"time.cjs","names":["tickStep","linearTicks","require_scale","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","INTERVALS","pad","n","width","chooseInterval","target","span","count","interval","years","floorTo","d","t","unit","step","advance","timeTicks","min","max","formatTime","v","values","formatTick","ymd","hm","value","midnight"],"sources":["../../../../charts/src/engine/time.ts"],"sourcesContent":["// Ticks and labels of time axes (timestamps in ms, local time).\n\nimport { linearTicks, tickStep } from \"./scale\";\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\nexport type TimeUnit =\n \"millisecond\" | \"second\" | \"minute\" | \"hour\" | \"day\" | \"month\" | \"year\";\n\ninterface Interval {\n unit: TimeUnit;\n step: number;\n /** Approximate duration (ms) */\n ms: number;\n}\n\nconst INTERVALS: Interval[] = [\n { unit: \"second\", step: 1, ms: SECOND },\n { unit: \"second\", step: 5, ms: 5 * SECOND },\n { unit: \"second\", step: 15, ms: 15 * SECOND },\n { unit: \"second\", step: 30, ms: 30 * SECOND },\n { unit: \"minute\", step: 1, ms: MINUTE },\n { unit: \"minute\", step: 5, ms: 5 * MINUTE },\n { unit: \"minute\", step: 15, ms: 15 * MINUTE },\n { unit: \"minute\", step: 30, ms: 30 * MINUTE },\n { unit: \"hour\", step: 1, ms: HOUR },\n { unit: \"hour\", step: 3, ms: 3 * HOUR },\n { unit: \"hour\", step: 6, ms: 6 * HOUR },\n { unit: \"hour\", step: 12, ms: 12 * HOUR },\n { unit: \"day\", step: 1, ms: DAY },\n { unit: \"day\", step: 2, ms: 2 * DAY },\n { unit: \"day\", step: 7, ms: 7 * DAY },\n { unit: \"month\", step: 1, ms: MONTH },\n { unit: \"month\", step: 3, ms: 3 * MONTH },\n { unit: \"month\", step: 6, ms: 6 * MONTH },\n];\n\nconst pad = (n: number, width = 2) => String(n).padStart(width, \"0\");\n\nconst chooseInterval = (span: number, count: number): Interval => {\n const target = span / Math.max(1, count);\n if (target < SECOND * 0.75) {\n return { unit: \"millisecond\", step: tickStep(0, span, count), ms: 1 };\n }\n for (const interval of INTERVALS) {\n if (interval.ms >= target * 0.75) return interval;\n }\n const years = Math.max(1, tickStep(0, span / YEAR, count));\n return {\n unit: \"year\",\n step: Math.round(years),\n ms: Math.round(years) * YEAR,\n };\n};\n\n/** Start of the tick sequence: `t` floored to the unit, aligned on the step */\nconst floorTo = (t: number, { unit, step }: Interval): Date => {\n const d = new Date(t);\n switch (unit) {\n case \"second\":\n d.setMilliseconds(0);\n d.setSeconds(d.getSeconds() - (d.getSeconds() % step));\n break;\n case \"minute\":\n d.setSeconds(0, 0);\n d.setMinutes(d.getMinutes() - (d.getMinutes() % step));\n break;\n case \"hour\":\n d.setMinutes(0, 0, 0);\n d.setHours(d.getHours() - (d.getHours() % step));\n break;\n case \"day\":\n d.setHours(0, 0, 0, 0);\n // weeks start on Monday\n if (step === 7) d.setDate(d.getDate() - ((d.getDay() + 6) % 7));\n break;\n case \"month\":\n d.setHours(0, 0, 0, 0);\n d.setDate(1);\n d.setMonth(d.getMonth() - (d.getMonth() % step));\n break;\n case \"year\":\n d.setHours(0, 0, 0, 0);\n d.setMonth(0, 1);\n d.setFullYear(d.getFullYear() - (d.getFullYear() % step));\n break;\n default:\n break;\n }\n return d;\n};\n\nconst advance = (d: Date, { unit, step }: Interval) => {\n switch (unit) {\n case \"second\":\n d.setSeconds(d.getSeconds() + step);\n break;\n case \"minute\":\n d.setMinutes(d.getMinutes() + step);\n break;\n case \"hour\":\n d.setHours(d.getHours() + step);\n break;\n case \"day\":\n d.setDate(d.getDate() + step);\n break;\n case \"month\":\n d.setMonth(d.getMonth() + step);\n break;\n case \"year\":\n d.setFullYear(d.getFullYear() + step);\n break;\n default:\n break;\n }\n};\n\nexport interface TimeTicks {\n values: number[];\n unit: TimeUnit;\n format: (value: number) => string;\n}\n\n/** Calendar-aligned ticks between two timestamps */\nexport const timeTicks = (\n min: number,\n max: number,\n count: number,\n): TimeTicks => {\n if (min > max) [min, max] = [max, min];\n const interval = chooseInterval(max - min, count);\n if (interval.unit === \"millisecond\") {\n return {\n values: linearTicks(min, max, count),\n unit: \"millisecond\",\n format: (v) => formatTime(v, \"millisecond\"),\n };\n }\n const values: number[] = [];\n const d = floorTo(min, interval);\n while (d.getTime() < min) advance(d, interval);\n while (d.getTime() <= max && values.length < 500) {\n values.push(d.getTime());\n advance(d, interval);\n }\n const { unit } = interval;\n return { values, unit, format: (v) => formatTick(v, unit) };\n};\n\nconst ymd = (d: Date) =>\n `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\nconst hm = (d: Date) => `${pad(d.getHours())}:${pad(d.getMinutes())}`;\n\n/** Short tick label; day boundaries show the date, year boundaries the year */\nconst formatTick = (value: number, unit: TimeUnit): string => {\n const d = new Date(value);\n const midnight =\n d.getHours() === 0 && d.getMinutes() === 0 && d.getSeconds() === 0;\n switch (unit) {\n case \"second\":\n return `${hm(d)}:${pad(d.getSeconds())}`;\n case \"minute\":\n case \"hour\":\n return midnight ? `${pad(d.getMonth() + 1)}-${pad(d.getDate())}` : hm(d);\n case \"day\":\n return d.getMonth() === 0 && d.getDate() === 1\n ? String(d.getFullYear())\n : `${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n case \"month\":\n return d.getMonth() === 0\n ? String(d.getFullYear())\n : `${d.getFullYear()}-${pad(d.getMonth() + 1)}`;\n default:\n return String(d.getFullYear());\n }\n};\n\n/** Full label (tooltips): precision follows the unit of the ticks */\nexport const formatTime = (\n value: number,\n unit: TimeUnit = \"minute\",\n): string => {\n const d = new Date(value);\n if (Number.isNaN(d.getTime())) return \"–\";\n switch (unit) {\n case \"millisecond\":\n return `${ymd(d)} ${hm(d)}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(), 3)}`;\n case \"second\":\n return `${ymd(d)} ${hm(d)}:${pad(d.getSeconds())}`;\n case \"minute\":\n case \"hour\":\n return `${ymd(d)} ${hm(d)}`;\n default:\n return ymd(d);\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"time.cjs","names":["tickStep","linearTicks","dateFormat","require_locale","require_scale","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","INTERVALS","pad","n","width","partsOf","d","t","utc","timeOf","year","month","date","hours","minutes","seconds","chooseInterval","target","span","count","interval","years","floorTo","p","unit","step","advance","timeTicks","min","max","formatTime","v","locale","timeZone","values","formatTick","ymd","hm","HM","HMS","MONTH_DAY","DATE","intl","options","value","midnight","newYear","f"],"sources":["../../../../charts/src/engine/time.ts"],"sourcesContent":["// Ticks and labels of time axes (timestamps in ms). Calendar steps follow\n// the local time or UTC (`timeZone`); labels use `Intl.DateTimeFormat` of a\n// locale (month / weekday names), or ISO-like texts without a locale.\n\nimport { dateFormat } from \"./locale\";\nimport { linearTicks, tickStep } from \"./scale\";\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\nexport type TimeUnit =\n \"millisecond\" | \"second\" | \"minute\" | \"hour\" | \"day\" | \"month\" | \"year\";\n\n/** Time zone of the calendar of a time axis */\nexport type TimeZone = \"local\" | \"utc\";\n\ninterface Interval {\n unit: TimeUnit;\n step: number;\n /** Approximate duration (ms) */\n ms: number;\n}\n\nconst INTERVALS: Interval[] = [\n { unit: \"second\", step: 1, ms: SECOND },\n { unit: \"second\", step: 5, ms: 5 * SECOND },\n { unit: \"second\", step: 15, ms: 15 * SECOND },\n { unit: \"second\", step: 30, ms: 30 * SECOND },\n { unit: \"minute\", step: 1, ms: MINUTE },\n { unit: \"minute\", step: 5, ms: 5 * MINUTE },\n { unit: \"minute\", step: 15, ms: 15 * MINUTE },\n { unit: \"minute\", step: 30, ms: 30 * MINUTE },\n { unit: \"hour\", step: 1, ms: HOUR },\n { unit: \"hour\", step: 3, ms: 3 * HOUR },\n { unit: \"hour\", step: 6, ms: 6 * HOUR },\n { unit: \"hour\", step: 12, ms: 12 * HOUR },\n { unit: \"day\", step: 1, ms: DAY },\n { unit: \"day\", step: 2, ms: 2 * DAY },\n { unit: \"day\", step: 7, ms: 7 * DAY },\n { unit: \"month\", step: 1, ms: MONTH },\n { unit: \"month\", step: 3, ms: 3 * MONTH },\n { unit: \"month\", step: 6, ms: 6 * MONTH },\n];\n\nconst pad = (n: number, width = 2) => String(n).padStart(width, \"0\");\n\n/** Calendar fields of a timestamp */\ninterface Parts {\n year: number;\n /** 0-11 */\n month: number;\n date: number;\n /** 0 = Sunday */\n day: number;\n hours: number;\n minutes: number;\n seconds: number;\n ms: number;\n}\n\nconst partsOf = (t: number, utc: boolean): Parts => {\n const d = new Date(t);\n return utc\n ? {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth(),\n date: d.getUTCDate(),\n day: d.getUTCDay(),\n hours: d.getUTCHours(),\n minutes: d.getUTCMinutes(),\n seconds: d.getUTCSeconds(),\n ms: d.getUTCMilliseconds(),\n }\n : {\n year: d.getFullYear(),\n month: d.getMonth(),\n date: d.getDate(),\n day: d.getDay(),\n hours: d.getHours(),\n minutes: d.getMinutes(),\n seconds: d.getSeconds(),\n ms: d.getMilliseconds(),\n };\n};\n\n/** Timestamp of calendar fields (out of range fields carry over) */\nconst timeOf = (\n utc: boolean,\n year: number,\n month: number,\n date = 1,\n hours = 0,\n minutes = 0,\n seconds = 0,\n): number => {\n if (utc) {\n const t = Date.UTC(year, month, date, hours, minutes, seconds);\n // years 0-99 are mapped to 1900-1999 by Date.UTC\n if (year >= 0 && year < 100) {\n const d = new Date(t);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n return d.getTime();\n }\n return t;\n }\n const d = new Date(year, month, date, hours, minutes, seconds);\n if (year >= 0 && year < 100) d.setFullYear(d.getFullYear() - 1900);\n return d.getTime();\n};\n\nconst chooseInterval = (span: number, count: number): Interval => {\n const target = span / Math.max(1, count);\n if (target < SECOND * 0.75) {\n return { unit: \"millisecond\", step: tickStep(0, span, count), ms: 1 };\n }\n for (const interval of INTERVALS) {\n if (interval.ms >= target * 0.75) return interval;\n }\n const years = Math.max(1, tickStep(0, span / YEAR, count));\n return {\n unit: \"year\",\n step: Math.round(years),\n ms: Math.round(years) * YEAR,\n };\n};\n\n/** Start of the tick sequence: `t` floored to the unit, aligned on the step */\nconst floorTo = (t: number, { unit, step }: Interval, utc: boolean): number => {\n const p = partsOf(t, utc);\n switch (unit) {\n case \"second\":\n return timeOf(\n utc,\n p.year,\n p.month,\n p.date,\n p.hours,\n p.minutes,\n p.seconds - (p.seconds % step),\n );\n case \"minute\":\n return timeOf(\n utc,\n p.year,\n p.month,\n p.date,\n p.hours,\n p.minutes - (p.minutes % step),\n );\n case \"hour\":\n return timeOf(utc, p.year, p.month, p.date, p.hours - (p.hours % step));\n case \"day\":\n // weeks start on Monday\n return timeOf(\n utc,\n p.year,\n p.month,\n p.date - (step === 7 ? (p.day + 6) % 7 : 0),\n );\n case \"month\":\n return timeOf(utc, p.year, p.month - (p.month % step));\n case \"year\":\n return timeOf(utc, p.year - (p.year % step), 0);\n default:\n return t;\n }\n};\n\nconst advance = (t: number, { unit, step }: Interval, utc: boolean): number => {\n const p = partsOf(t, utc);\n const { year, month, date, hours, minutes, seconds } = p;\n switch (unit) {\n case \"second\":\n return timeOf(utc, year, month, date, hours, minutes, seconds + step);\n case \"minute\":\n return timeOf(utc, year, month, date, hours, minutes + step, seconds);\n case \"hour\":\n return timeOf(utc, year, month, date, hours + step, minutes, seconds);\n case \"day\":\n return timeOf(utc, year, month, date + step, hours, minutes, seconds);\n case \"month\":\n return timeOf(utc, year, month + step, date, hours, minutes, seconds);\n case \"year\":\n return timeOf(utc, year + step, month, date, hours, minutes, seconds);\n default:\n return t + step;\n }\n};\n\nexport interface TimeTicks {\n values: number[];\n unit: TimeUnit;\n format: (value: number) => string;\n}\n\n/**\n * Calendar-aligned ticks between two timestamps\n * @param locale labels in this locale (ISO-like labels without it)\n * @param timeZone calendar of the steps and labels\n */\nexport const timeTicks = (\n min: number,\n max: number,\n count: number,\n locale?: string,\n timeZone: TimeZone = \"local\",\n): TimeTicks => {\n if (min > max) [min, max] = [max, min];\n const interval = chooseInterval(max - min, count);\n if (interval.unit === \"millisecond\") {\n return {\n values: linearTicks(min, max, count),\n unit: \"millisecond\",\n format: (v) => formatTime(v, \"millisecond\", locale, timeZone),\n };\n }\n const utc = timeZone === \"utc\";\n const values: number[] = [];\n let t = floorTo(min, interval, utc);\n while (t < min) t = advance(t, interval, utc);\n while (t <= max && values.length < 500) {\n values.push(t);\n t = advance(t, interval, utc);\n }\n const { unit } = interval;\n return {\n values,\n unit,\n format: (v) => formatTick(v, unit, locale, timeZone),\n };\n};\n\nconst ymd = (p: Parts) => `${p.year}-${pad(p.month + 1)}-${pad(p.date)}`;\nconst hm = (p: Parts) => `${pad(p.hours)}:${pad(p.minutes)}`;\n\nconst HM: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hourCycle: \"h23\",\n};\nconst HMS: Intl.DateTimeFormatOptions = { ...HM, second: \"2-digit\" };\nconst MONTH_DAY: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"numeric\",\n};\nconst DATE: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n};\n\n/** Cached formatter of a locale and time zone */\nconst intl = (\n locale: string,\n timeZone: TimeZone,\n options: Intl.DateTimeFormatOptions,\n) =>\n dateFormat(\n locale,\n timeZone === \"utc\" ? { ...options, timeZone: \"UTC\" } : options,\n );\n\n/** Short tick label; day boundaries show the date, year boundaries the year */\nconst formatTick = (\n value: number,\n unit: TimeUnit,\n locale: string | undefined,\n timeZone: TimeZone,\n): string => {\n const p = partsOf(value, timeZone === \"utc\");\n const midnight = p.hours === 0 && p.minutes === 0 && p.seconds === 0;\n const newYear = p.month === 0 && p.date === 1;\n if (locale) {\n const f = (options: Intl.DateTimeFormatOptions) =>\n intl(locale, timeZone, options).format(value);\n switch (unit) {\n case \"second\":\n return f(HMS);\n case \"minute\":\n case \"hour\":\n return f(midnight ? MONTH_DAY : HM);\n case \"day\":\n return f(newYear ? { year: \"numeric\" } : MONTH_DAY);\n case \"month\":\n return f(p.month === 0 ? { year: \"numeric\" } : { month: \"short\" });\n default:\n return f({ year: \"numeric\" });\n }\n }\n switch (unit) {\n case \"second\":\n return `${hm(p)}:${pad(p.seconds)}`;\n case \"minute\":\n case \"hour\":\n return midnight ? `${pad(p.month + 1)}-${pad(p.date)}` : hm(p);\n case \"day\":\n return newYear ? String(p.year) : `${pad(p.month + 1)}-${pad(p.date)}`;\n case \"month\":\n return p.month === 0 ? String(p.year) : `${p.year}-${pad(p.month + 1)}`;\n default:\n return String(p.year);\n }\n};\n\n/**\n * Full label (tooltips): precision follows the unit of the ticks; dates\n * show the weekday with a `locale`\n */\nexport const formatTime = (\n value: number,\n unit: TimeUnit = \"minute\",\n locale?: string,\n timeZone: TimeZone = \"local\",\n): string => {\n if (!Number.isFinite(value) || Number.isNaN(new Date(value).getTime()))\n return \"–\";\n const p = partsOf(value, timeZone === \"utc\");\n if (locale) {\n const f = (options: Intl.DateTimeFormatOptions) =>\n intl(locale, timeZone, options).format(value);\n switch (unit) {\n case \"millisecond\":\n return `${f({ ...DATE, ...HMS })}.${pad(p.ms, 3)}`;\n case \"second\":\n return f({ ...DATE, ...HMS });\n case \"minute\":\n case \"hour\":\n return f({ ...DATE, ...HM });\n default:\n return f({ ...DATE, weekday: \"short\" });\n }\n }\n switch (unit) {\n case \"millisecond\":\n return `${ymd(p)} ${hm(p)}:${pad(p.seconds)}.${pad(p.ms, 3)}`;\n case \"second\":\n return `${ymd(p)} ${hm(p)}:${pad(p.seconds)}`;\n case \"minute\":\n case \"hour\":\n return `${ymd(p)} ${hm(p)}`;\n default:\n return ymd(p);\n }\n};\n"],"mappings":"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"}