minerva-design 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1166) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +13630 -4757
  4. package/dist/angular/fesm2022/minerva-angular.mjs +6872 -172
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +2240 -0
  7. package/dist/charts/canvas.d.cts +7 -2
  8. package/dist/charts/canvas.d.ts +7 -2
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +7 -4
  11. package/dist/charts/core.d.ts +7 -4
  12. package/dist/charts/core.js +19 -8
  13. package/dist/charts/engine/axis.cjs +1 -1
  14. package/dist/charts/engine/axis.cjs.map +1 -1
  15. package/dist/charts/engine/axis.js +6 -6
  16. package/dist/charts/engine/axis.js.map +1 -1
  17. package/dist/charts/engine/canvas.cjs +1 -1
  18. package/dist/charts/engine/canvas.cjs.map +1 -1
  19. package/dist/charts/engine/canvas.d.cts +11 -1
  20. package/dist/charts/engine/canvas.d.ts +11 -1
  21. package/dist/charts/engine/canvas.js +118 -68
  22. package/dist/charts/engine/canvas.js.map +1 -1
  23. package/dist/charts/engine/chart.cjs +1 -1
  24. package/dist/charts/engine/chart.cjs.map +1 -1
  25. package/dist/charts/engine/chart.d.cts +1 -1
  26. package/dist/charts/engine/chart.d.ts +1 -1
  27. package/dist/charts/engine/chart.js +307 -285
  28. package/dist/charts/engine/chart.js.map +1 -1
  29. package/dist/charts/engine/color.cjs +1 -1
  30. package/dist/charts/engine/color.cjs.map +1 -1
  31. package/dist/charts/engine/color.js +2 -2
  32. package/dist/charts/engine/color.js.map +1 -1
  33. package/dist/charts/engine/controller.cjs +1 -1
  34. package/dist/charts/engine/controller.cjs.map +1 -1
  35. package/dist/charts/engine/controller.d.cts +12 -3
  36. package/dist/charts/engine/controller.d.ts +12 -3
  37. package/dist/charts/engine/controller.js +359 -299
  38. package/dist/charts/engine/controller.js.map +1 -1
  39. package/dist/charts/engine/data.cjs +1 -1
  40. package/dist/charts/engine/data.cjs.map +1 -1
  41. package/dist/charts/engine/data.d.cts +6 -0
  42. package/dist/charts/engine/data.d.ts +6 -0
  43. package/dist/charts/engine/data.js +63 -49
  44. package/dist/charts/engine/data.js.map +1 -1
  45. package/dist/charts/engine/format.cjs +1 -1
  46. package/dist/charts/engine/format.cjs.map +1 -1
  47. package/dist/charts/engine/format.d.cts +21 -6
  48. package/dist/charts/engine/format.d.ts +21 -6
  49. package/dist/charts/engine/format.js +46 -21
  50. package/dist/charts/engine/format.js.map +1 -1
  51. package/dist/charts/engine/items.cjs +1 -1
  52. package/dist/charts/engine/items.cjs.map +1 -1
  53. package/dist/charts/engine/items.js +211 -54
  54. package/dist/charts/engine/items.js.map +1 -1
  55. package/dist/charts/engine/labels.cjs +2 -0
  56. package/dist/charts/engine/labels.cjs.map +1 -0
  57. package/dist/charts/engine/labels.d.cts +13 -0
  58. package/dist/charts/engine/labels.d.ts +13 -0
  59. package/dist/charts/engine/labels.js +74 -0
  60. package/dist/charts/engine/labels.js.map +1 -0
  61. package/dist/charts/engine/layout.cjs +1 -1
  62. package/dist/charts/engine/layout.cjs.map +1 -1
  63. package/dist/charts/engine/layout.d.cts +34 -2
  64. package/dist/charts/engine/layout.d.ts +34 -2
  65. package/dist/charts/engine/layout.js +53 -12
  66. package/dist/charts/engine/layout.js.map +1 -1
  67. package/dist/charts/engine/locale.cjs +2 -0
  68. package/dist/charts/engine/locale.cjs.map +1 -0
  69. package/dist/charts/engine/locale.d.cts +33 -0
  70. package/dist/charts/engine/locale.d.ts +33 -0
  71. package/dist/charts/engine/locale.js +68 -0
  72. package/dist/charts/engine/locale.js.map +1 -0
  73. package/dist/charts/engine/model.cjs +1 -1
  74. package/dist/charts/engine/model.cjs.map +1 -1
  75. package/dist/charts/engine/model.d.cts +39 -1
  76. package/dist/charts/engine/model.d.ts +39 -1
  77. package/dist/charts/engine/model.js +212 -105
  78. package/dist/charts/engine/model.js.map +1 -1
  79. package/dist/charts/engine/orderbook/book.cjs +2 -0
  80. package/dist/charts/engine/orderbook/book.cjs.map +1 -0
  81. package/dist/charts/engine/orderbook/book.d.cts +28 -0
  82. package/dist/charts/engine/orderbook/book.d.ts +28 -0
  83. package/dist/charts/engine/orderbook/book.js +134 -0
  84. package/dist/charts/engine/orderbook/book.js.map +1 -0
  85. package/dist/charts/engine/orderbook/depth.cjs +2 -0
  86. package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
  87. package/dist/charts/engine/orderbook/depth.d.cts +7 -0
  88. package/dist/charts/engine/orderbook/depth.d.ts +7 -0
  89. package/dist/charts/engine/orderbook/depth.js +413 -0
  90. package/dist/charts/engine/orderbook/depth.js.map +1 -0
  91. package/dist/charts/engine/orderbook/format.cjs +2 -0
  92. package/dist/charts/engine/orderbook/format.cjs.map +1 -0
  93. package/dist/charts/engine/orderbook/format.d.cts +48 -0
  94. package/dist/charts/engine/orderbook/format.d.ts +48 -0
  95. package/dist/charts/engine/orderbook/format.js +65 -0
  96. package/dist/charts/engine/orderbook/format.js.map +1 -0
  97. package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
  98. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
  99. package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
  100. package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
  101. package/dist/charts/engine/orderbook/heatmap.js +703 -0
  102. package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
  103. package/dist/charts/engine/orderbook/host.cjs +2 -0
  104. package/dist/charts/engine/orderbook/host.cjs.map +1 -0
  105. package/dist/charts/engine/orderbook/host.d.cts +50 -0
  106. package/dist/charts/engine/orderbook/host.d.ts +50 -0
  107. package/dist/charts/engine/orderbook/host.js +161 -0
  108. package/dist/charts/engine/orderbook/host.js.map +1 -0
  109. package/dist/charts/engine/orderbook/index.cjs +1 -0
  110. package/dist/charts/engine/orderbook/index.d.cts +6 -0
  111. package/dist/charts/engine/orderbook/index.d.ts +6 -0
  112. package/dist/charts/engine/orderbook/index.js +6 -0
  113. package/dist/charts/engine/orderbook/ladder.cjs +2 -0
  114. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
  115. package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
  116. package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
  117. package/dist/charts/engine/orderbook/ladder.js +341 -0
  118. package/dist/charts/engine/orderbook/ladder.js.map +1 -0
  119. package/dist/charts/engine/orderbook/tape.cjs +2 -0
  120. package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
  121. package/dist/charts/engine/orderbook/tape.d.cts +6 -0
  122. package/dist/charts/engine/orderbook/tape.d.ts +6 -0
  123. package/dist/charts/engine/orderbook/tape.js +450 -0
  124. package/dist/charts/engine/orderbook/tape.js.map +1 -0
  125. package/dist/charts/engine/orderbook/types.d.cts +735 -0
  126. package/dist/charts/engine/orderbook/types.d.ts +735 -0
  127. package/dist/charts/engine/overlay.cjs +1 -1
  128. package/dist/charts/engine/overlay.cjs.map +1 -1
  129. package/dist/charts/engine/overlay.d.cts +18 -2
  130. package/dist/charts/engine/overlay.d.ts +18 -2
  131. package/dist/charts/engine/overlay.js +132 -96
  132. package/dist/charts/engine/overlay.js.map +1 -1
  133. package/dist/charts/engine/presets.cjs +2 -2
  134. package/dist/charts/engine/presets.cjs.map +1 -1
  135. package/dist/charts/engine/presets.d.cts +249 -1
  136. package/dist/charts/engine/presets.d.ts +249 -1
  137. package/dist/charts/engine/presets.js +367 -29
  138. package/dist/charts/engine/presets.js.map +1 -1
  139. package/dist/charts/engine/renderers/detect.cjs +1 -1
  140. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  141. package/dist/charts/engine/renderers/detect.js +18 -15
  142. package/dist/charts/engine/renderers/detect.js.map +1 -1
  143. package/dist/charts/engine/renderers/gl.cjs +2 -0
  144. package/dist/charts/engine/renderers/gl.cjs.map +1 -0
  145. package/dist/charts/engine/renderers/gl.d.cts +21 -0
  146. package/dist/charts/engine/renderers/gl.d.ts +21 -0
  147. package/dist/charts/engine/renderers/gl.js +56 -0
  148. package/dist/charts/engine/renderers/gl.js.map +1 -0
  149. package/dist/charts/engine/renderers/shaders.cjs +143 -1
  150. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  151. package/dist/charts/engine/renderers/shaders.d.cts +16 -0
  152. package/dist/charts/engine/renderers/shaders.d.ts +16 -0
  153. package/dist/charts/engine/renderers/shaders.js +139 -1
  154. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  155. package/dist/charts/engine/renderers/webgl.cjs +2 -0
  156. package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
  157. package/dist/charts/engine/renderers/webgl.d.cts +4 -0
  158. package/dist/charts/engine/renderers/webgl.d.ts +4 -0
  159. package/dist/charts/engine/renderers/webgl.js +133 -0
  160. package/dist/charts/engine/renderers/webgl.js.map +1 -0
  161. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  162. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  163. package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
  164. package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
  165. package/dist/charts/engine/renderers/webgl2.js +59 -108
  166. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  167. package/dist/charts/engine/scale.cjs +1 -1
  168. package/dist/charts/engine/scale.cjs.map +1 -1
  169. package/dist/charts/engine/scale.js +1 -1
  170. package/dist/charts/engine/scale.js.map +1 -1
  171. package/dist/charts/engine/scene.cjs +1 -1
  172. package/dist/charts/engine/scene.cjs.map +1 -1
  173. package/dist/charts/engine/scene.d.cts +14 -4
  174. package/dist/charts/engine/scene.d.ts +14 -4
  175. package/dist/charts/engine/scene.js +292 -163
  176. package/dist/charts/engine/scene.js.map +1 -1
  177. package/dist/charts/engine/shapes/bullet.cjs +2 -0
  178. package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
  179. package/dist/charts/engine/shapes/bullet.d.cts +6 -0
  180. package/dist/charts/engine/shapes/bullet.d.ts +6 -0
  181. package/dist/charts/engine/shapes/bullet.js +255 -0
  182. package/dist/charts/engine/shapes/bullet.js.map +1 -0
  183. package/dist/charts/engine/shapes/calendar.cjs +2 -0
  184. package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
  185. package/dist/charts/engine/shapes/calendar.d.cts +38 -0
  186. package/dist/charts/engine/shapes/calendar.d.ts +38 -0
  187. package/dist/charts/engine/shapes/calendar.js +369 -0
  188. package/dist/charts/engine/shapes/calendar.js.map +1 -0
  189. package/dist/charts/engine/shapes/canvas.cjs +1 -1
  190. package/dist/charts/engine/shapes/canvas.cjs.map +1 -1
  191. package/dist/charts/engine/shapes/canvas.d.cts +7 -0
  192. package/dist/charts/engine/shapes/canvas.d.ts +7 -0
  193. package/dist/charts/engine/shapes/canvas.js +22 -13
  194. package/dist/charts/engine/shapes/canvas.js.map +1 -1
  195. package/dist/charts/engine/shapes/chart.cjs +1 -1
  196. package/dist/charts/engine/shapes/chart.cjs.map +1 -1
  197. package/dist/charts/engine/shapes/chart.d.cts +3 -2
  198. package/dist/charts/engine/shapes/chart.d.ts +3 -2
  199. package/dist/charts/engine/shapes/chart.js +45 -26
  200. package/dist/charts/engine/shapes/chart.js.map +1 -1
  201. package/dist/charts/engine/shapes/draw.cjs +1 -1
  202. package/dist/charts/engine/shapes/draw.cjs.map +1 -1
  203. package/dist/charts/engine/shapes/draw.d.cts +3 -1
  204. package/dist/charts/engine/shapes/draw.d.ts +3 -1
  205. package/dist/charts/engine/shapes/draw.js +31 -18
  206. package/dist/charts/engine/shapes/draw.js.map +1 -1
  207. package/dist/charts/engine/shapes/funnel.cjs +1 -1
  208. package/dist/charts/engine/shapes/funnel.cjs.map +1 -1
  209. package/dist/charts/engine/shapes/funnel.js +3 -3
  210. package/dist/charts/engine/shapes/funnel.js.map +1 -1
  211. package/dist/charts/engine/shapes/gauge.cjs +1 -1
  212. package/dist/charts/engine/shapes/gauge.cjs.map +1 -1
  213. package/dist/charts/engine/shapes/gauge.js +132 -95
  214. package/dist/charts/engine/shapes/gauge.js.map +1 -1
  215. package/dist/charts/engine/shapes/hit.cjs +1 -1
  216. package/dist/charts/engine/shapes/hit.cjs.map +1 -1
  217. package/dist/charts/engine/shapes/hit.d.cts +3 -1
  218. package/dist/charts/engine/shapes/hit.d.ts +3 -1
  219. package/dist/charts/engine/shapes/hit.js +29 -8
  220. package/dist/charts/engine/shapes/hit.js.map +1 -1
  221. package/dist/charts/engine/shapes/index.d.cts +4 -1
  222. package/dist/charts/engine/shapes/index.d.ts +4 -1
  223. package/dist/charts/engine/shapes/labels.cjs +2 -0
  224. package/dist/charts/engine/shapes/labels.cjs.map +1 -0
  225. package/dist/charts/engine/shapes/labels.d.cts +14 -0
  226. package/dist/charts/engine/shapes/labels.d.ts +14 -0
  227. package/dist/charts/engine/shapes/labels.js +146 -0
  228. package/dist/charts/engine/shapes/labels.js.map +1 -0
  229. package/dist/charts/engine/shapes/layout.cjs +2 -2
  230. package/dist/charts/engine/shapes/layout.cjs.map +1 -1
  231. package/dist/charts/engine/shapes/layout.d.cts +8 -3
  232. package/dist/charts/engine/shapes/layout.d.ts +8 -3
  233. package/dist/charts/engine/shapes/layout.js +200 -113
  234. package/dist/charts/engine/shapes/layout.js.map +1 -1
  235. package/dist/charts/engine/shapes/pie.cjs +1 -1
  236. package/dist/charts/engine/shapes/pie.cjs.map +1 -1
  237. package/dist/charts/engine/shapes/pie.js +2 -2
  238. package/dist/charts/engine/shapes/pie.js.map +1 -1
  239. package/dist/charts/engine/shapes/radar.cjs +1 -1
  240. package/dist/charts/engine/shapes/radar.cjs.map +1 -1
  241. package/dist/charts/engine/shapes/radar.d.cts +2 -2
  242. package/dist/charts/engine/shapes/radar.d.ts +2 -2
  243. package/dist/charts/engine/shapes/radar.js +50 -49
  244. package/dist/charts/engine/shapes/radar.js.map +1 -1
  245. package/dist/charts/engine/shapes/radialBar.cjs +2 -0
  246. package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
  247. package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
  248. package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
  249. package/dist/charts/engine/shapes/radialBar.js +155 -0
  250. package/dist/charts/engine/shapes/radialBar.js.map +1 -0
  251. package/dist/charts/engine/shapes/runtime.cjs +1 -1
  252. package/dist/charts/engine/shapes/runtime.cjs.map +1 -1
  253. package/dist/charts/engine/shapes/runtime.d.cts +9 -2
  254. package/dist/charts/engine/shapes/runtime.d.ts +9 -2
  255. package/dist/charts/engine/shapes/runtime.js +61 -51
  256. package/dist/charts/engine/shapes/runtime.js.map +1 -1
  257. package/dist/charts/engine/shapes/sankey.cjs +2 -0
  258. package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
  259. package/dist/charts/engine/shapes/sankey.d.cts +29 -0
  260. package/dist/charts/engine/shapes/sankey.d.ts +29 -0
  261. package/dist/charts/engine/shapes/sankey.js +372 -0
  262. package/dist/charts/engine/shapes/sankey.js.map +1 -0
  263. package/dist/charts/engine/shapes/scene.cjs +1 -1
  264. package/dist/charts/engine/shapes/scene.cjs.map +1 -1
  265. package/dist/charts/engine/shapes/scene.d.cts +62 -8
  266. package/dist/charts/engine/shapes/scene.d.ts +62 -8
  267. package/dist/charts/engine/shapes/scene.js +33 -31
  268. package/dist/charts/engine/shapes/scene.js.map +1 -1
  269. package/dist/charts/engine/shapes/sunburst.cjs +2 -0
  270. package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
  271. package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
  272. package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
  273. package/dist/charts/engine/shapes/sunburst.js +261 -0
  274. package/dist/charts/engine/shapes/sunburst.js.map +1 -0
  275. package/dist/charts/engine/shapes/treemap.cjs +1 -1
  276. package/dist/charts/engine/shapes/treemap.cjs.map +1 -1
  277. package/dist/charts/engine/shapes/treemap.js +2 -2
  278. package/dist/charts/engine/shapes/treemap.js.map +1 -1
  279. package/dist/charts/engine/shapes/types.d.cts +439 -12
  280. package/dist/charts/engine/shapes/types.d.ts +439 -12
  281. package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
  282. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
  283. package/dist/charts/engine/three-d/canvas2d.d.cts +4 -0
  284. package/dist/charts/engine/three-d/canvas2d.d.ts +4 -0
  285. package/dist/charts/engine/three-d/canvas2d.js +104 -0
  286. package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
  287. package/dist/charts/engine/three-d/chart.cjs +2 -0
  288. package/dist/charts/engine/three-d/chart.cjs.map +1 -0
  289. package/dist/charts/engine/three-d/chart.d.cts +15 -0
  290. package/dist/charts/engine/three-d/chart.d.ts +15 -0
  291. package/dist/charts/engine/three-d/chart.js +621 -0
  292. package/dist/charts/engine/three-d/chart.js.map +1 -0
  293. package/dist/charts/engine/three-d/colormap.cjs +2 -0
  294. package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
  295. package/dist/charts/engine/three-d/colormap.d.cts +16 -0
  296. package/dist/charts/engine/three-d/colormap.d.ts +16 -0
  297. package/dist/charts/engine/three-d/colormap.js +166 -0
  298. package/dist/charts/engine/three-d/colormap.js.map +1 -0
  299. package/dist/charts/engine/three-d/contours.cjs +2 -0
  300. package/dist/charts/engine/three-d/contours.cjs.map +1 -0
  301. package/dist/charts/engine/three-d/contours.d.cts +7 -0
  302. package/dist/charts/engine/three-d/contours.d.ts +7 -0
  303. package/dist/charts/engine/three-d/contours.js +47 -0
  304. package/dist/charts/engine/three-d/contours.js.map +1 -0
  305. package/dist/charts/engine/three-d/detect.cjs +2 -0
  306. package/dist/charts/engine/three-d/detect.cjs.map +1 -0
  307. package/dist/charts/engine/three-d/detect.d.cts +11 -0
  308. package/dist/charts/engine/three-d/detect.d.ts +11 -0
  309. package/dist/charts/engine/three-d/detect.js +35 -0
  310. package/dist/charts/engine/three-d/detect.js.map +1 -0
  311. package/dist/charts/engine/three-d/dom.cjs +2 -0
  312. package/dist/charts/engine/three-d/dom.cjs.map +1 -0
  313. package/dist/charts/engine/three-d/dom.d.cts +21 -0
  314. package/dist/charts/engine/three-d/dom.d.ts +21 -0
  315. package/dist/charts/engine/three-d/dom.js +98 -0
  316. package/dist/charts/engine/three-d/dom.js.map +1 -0
  317. package/dist/charts/engine/three-d/geometry.cjs +2 -0
  318. package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
  319. package/dist/charts/engine/three-d/geometry.d.cts +76 -0
  320. package/dist/charts/engine/three-d/geometry.d.ts +76 -0
  321. package/dist/charts/engine/three-d/geometry.js +529 -0
  322. package/dist/charts/engine/three-d/geometry.js.map +1 -0
  323. package/dist/charts/engine/three-d/hover.cjs +2 -0
  324. package/dist/charts/engine/three-d/hover.cjs.map +1 -0
  325. package/dist/charts/engine/three-d/hover.d.cts +25 -0
  326. package/dist/charts/engine/three-d/hover.d.ts +25 -0
  327. package/dist/charts/engine/three-d/hover.js +131 -0
  328. package/dist/charts/engine/three-d/hover.js.map +1 -0
  329. package/dist/charts/engine/three-d/index.cjs +1 -0
  330. package/dist/charts/engine/three-d/index.d.cts +2 -0
  331. package/dist/charts/engine/three-d/index.d.ts +2 -0
  332. package/dist/charts/engine/three-d/index.js +2 -0
  333. package/dist/charts/engine/three-d/labels.cjs +2 -0
  334. package/dist/charts/engine/three-d/labels.cjs.map +1 -0
  335. package/dist/charts/engine/three-d/labels.d.cts +23 -0
  336. package/dist/charts/engine/three-d/labels.d.ts +23 -0
  337. package/dist/charts/engine/three-d/labels.js +136 -0
  338. package/dist/charts/engine/three-d/labels.js.map +1 -0
  339. package/dist/charts/engine/three-d/math.cjs +2 -0
  340. package/dist/charts/engine/three-d/math.cjs.map +1 -0
  341. package/dist/charts/engine/three-d/math.d.cts +84 -0
  342. package/dist/charts/engine/three-d/math.d.ts +84 -0
  343. package/dist/charts/engine/three-d/math.js +150 -0
  344. package/dist/charts/engine/three-d/math.js.map +1 -0
  345. package/dist/charts/engine/three-d/model.cjs +2 -0
  346. package/dist/charts/engine/three-d/model.cjs.map +1 -0
  347. package/dist/charts/engine/three-d/model.d.cts +130 -0
  348. package/dist/charts/engine/three-d/model.d.ts +130 -0
  349. package/dist/charts/engine/three-d/model.js +277 -0
  350. package/dist/charts/engine/three-d/model.js.map +1 -0
  351. package/dist/charts/engine/three-d/overlay.cjs +2 -0
  352. package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
  353. package/dist/charts/engine/three-d/overlay.d.cts +72 -0
  354. package/dist/charts/engine/three-d/overlay.d.ts +72 -0
  355. package/dist/charts/engine/three-d/overlay.js +197 -0
  356. package/dist/charts/engine/three-d/overlay.js.map +1 -0
  357. package/dist/charts/engine/three-d/pick.cjs +2 -0
  358. package/dist/charts/engine/three-d/pick.cjs.map +1 -0
  359. package/dist/charts/engine/three-d/pick.d.cts +52 -0
  360. package/dist/charts/engine/three-d/pick.d.ts +52 -0
  361. package/dist/charts/engine/three-d/pick.js +220 -0
  362. package/dist/charts/engine/three-d/pick.js.map +1 -0
  363. package/dist/charts/engine/three-d/render-types.cjs +2 -0
  364. package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
  365. package/dist/charts/engine/three-d/render-types.d.cts +82 -0
  366. package/dist/charts/engine/three-d/render-types.d.ts +82 -0
  367. package/dist/charts/engine/three-d/render-types.js +13 -0
  368. package/dist/charts/engine/three-d/render-types.js.map +1 -0
  369. package/dist/charts/engine/three-d/shaders.cjs +276 -0
  370. package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
  371. package/dist/charts/engine/three-d/shaders.d.cts +26 -0
  372. package/dist/charts/engine/three-d/shaders.d.ts +26 -0
  373. package/dist/charts/engine/three-d/shaders.js +191 -0
  374. package/dist/charts/engine/three-d/shaders.js.map +1 -0
  375. package/dist/charts/engine/three-d/sort.cjs +2 -0
  376. package/dist/charts/engine/three-d/sort.cjs.map +1 -0
  377. package/dist/charts/engine/three-d/sort.d.cts +18 -0
  378. package/dist/charts/engine/three-d/sort.d.ts +18 -0
  379. package/dist/charts/engine/three-d/sort.js +71 -0
  380. package/dist/charts/engine/three-d/sort.js.map +1 -0
  381. package/dist/charts/engine/three-d/types.d.cts +588 -0
  382. package/dist/charts/engine/three-d/types.d.ts +588 -0
  383. package/dist/charts/engine/three-d/webgl.cjs +2 -0
  384. package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
  385. package/dist/charts/engine/three-d/webgl.d.cts +10 -0
  386. package/dist/charts/engine/three-d/webgl.d.ts +10 -0
  387. package/dist/charts/engine/three-d/webgl.js +130 -0
  388. package/dist/charts/engine/three-d/webgl.js.map +1 -0
  389. package/dist/charts/engine/three-d/webgpu.cjs +2 -0
  390. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
  391. package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
  392. package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
  393. package/dist/charts/engine/three-d/webgpu.js +249 -0
  394. package/dist/charts/engine/three-d/webgpu.js.map +1 -0
  395. package/dist/charts/engine/time.cjs +1 -1
  396. package/dist/charts/engine/time.cjs.map +1 -1
  397. package/dist/charts/engine/time.d.cts +13 -4
  398. package/dist/charts/engine/time.d.ts +13 -4
  399. package/dist/charts/engine/time.js +156 -91
  400. package/dist/charts/engine/time.js.map +1 -1
  401. package/dist/charts/engine/trading/chart.cjs +2 -0
  402. package/dist/charts/engine/trading/chart.cjs.map +1 -0
  403. package/dist/charts/engine/trading/chart.d.cts +3 -0
  404. package/dist/charts/engine/trading/chart.d.ts +3 -0
  405. package/dist/charts/engine/trading/chart.js +1507 -0
  406. package/dist/charts/engine/trading/chart.js.map +1 -0
  407. package/dist/charts/engine/trading/drawings.cjs +2 -0
  408. package/dist/charts/engine/trading/drawings.cjs.map +1 -0
  409. package/dist/charts/engine/trading/drawings.d.cts +57 -0
  410. package/dist/charts/engine/trading/drawings.d.ts +57 -0
  411. package/dist/charts/engine/trading/drawings.js +160 -0
  412. package/dist/charts/engine/trading/drawings.js.map +1 -0
  413. package/dist/charts/engine/trading/format.cjs +2 -0
  414. package/dist/charts/engine/trading/format.cjs.map +1 -0
  415. package/dist/charts/engine/trading/format.d.cts +60 -0
  416. package/dist/charts/engine/trading/format.d.ts +60 -0
  417. package/dist/charts/engine/trading/format.js +131 -0
  418. package/dist/charts/engine/trading/format.js.map +1 -0
  419. package/dist/charts/engine/trading/geometry.cjs +2 -0
  420. package/dist/charts/engine/trading/geometry.cjs.map +1 -0
  421. package/dist/charts/engine/trading/geometry.d.cts +55 -0
  422. package/dist/charts/engine/trading/geometry.d.ts +55 -0
  423. package/dist/charts/engine/trading/geometry.js +131 -0
  424. package/dist/charts/engine/trading/geometry.js.map +1 -0
  425. package/dist/charts/engine/trading/index.cjs +1 -0
  426. package/dist/charts/engine/trading/index.d.cts +3 -0
  427. package/dist/charts/engine/trading/index.d.ts +3 -0
  428. package/dist/charts/engine/trading/index.js +3 -0
  429. package/dist/charts/engine/trading/indicators.cjs +2 -0
  430. package/dist/charts/engine/trading/indicators.cjs.map +1 -0
  431. package/dist/charts/engine/trading/indicators.d.cts +105 -0
  432. package/dist/charts/engine/trading/indicators.d.ts +105 -0
  433. package/dist/charts/engine/trading/indicators.js +268 -0
  434. package/dist/charts/engine/trading/indicators.js.map +1 -0
  435. package/dist/charts/engine/trading/labels.cjs +2 -0
  436. package/dist/charts/engine/trading/labels.cjs.map +1 -0
  437. package/dist/charts/engine/trading/labels.d.cts +7 -0
  438. package/dist/charts/engine/trading/labels.d.ts +7 -0
  439. package/dist/charts/engine/trading/labels.js +91 -0
  440. package/dist/charts/engine/trading/labels.js.map +1 -0
  441. package/dist/charts/engine/trading/scale.cjs +2 -0
  442. package/dist/charts/engine/trading/scale.cjs.map +1 -0
  443. package/dist/charts/engine/trading/scale.d.cts +46 -0
  444. package/dist/charts/engine/trading/scale.d.ts +46 -0
  445. package/dist/charts/engine/trading/scale.js +100 -0
  446. package/dist/charts/engine/trading/scale.js.map +1 -0
  447. package/dist/charts/engine/trading/store.cjs +2 -0
  448. package/dist/charts/engine/trading/store.cjs.map +1 -0
  449. package/dist/charts/engine/trading/store.d.cts +62 -0
  450. package/dist/charts/engine/trading/store.d.ts +62 -0
  451. package/dist/charts/engine/trading/store.js +129 -0
  452. package/dist/charts/engine/trading/store.js.map +1 -0
  453. package/dist/charts/engine/trading/studies.cjs +2 -0
  454. package/dist/charts/engine/trading/studies.cjs.map +1 -0
  455. package/dist/charts/engine/trading/studies.d.cts +52 -0
  456. package/dist/charts/engine/trading/studies.d.ts +52 -0
  457. package/dist/charts/engine/trading/studies.js +254 -0
  458. package/dist/charts/engine/trading/studies.js.map +1 -0
  459. package/dist/charts/engine/trading/types.d.cts +656 -0
  460. package/dist/charts/engine/trading/types.d.ts +656 -0
  461. package/dist/charts/engine/types.d.cts +165 -14
  462. package/dist/charts/engine/types.d.ts +165 -14
  463. package/dist/charts/index.cjs +1 -1
  464. package/dist/charts/index.d.cts +7 -4
  465. package/dist/charts/index.d.ts +7 -4
  466. package/dist/charts/index.js +22 -11
  467. package/dist/charts/react/Chart.cjs +1 -1
  468. package/dist/charts/react/Chart.cjs.map +1 -1
  469. package/dist/charts/react/Chart.d.cts +4 -4
  470. package/dist/charts/react/Chart.d.ts +4 -4
  471. package/dist/charts/react/Chart.js +5 -1
  472. package/dist/charts/react/Chart.js.map +1 -1
  473. package/dist/charts/react/charts.cjs +1 -1
  474. package/dist/charts/react/charts.cjs.map +1 -1
  475. package/dist/charts/react/charts.d.cts +39 -1
  476. package/dist/charts/react/charts.d.ts +39 -1
  477. package/dist/charts/react/charts.js +303 -131
  478. package/dist/charts/react/charts.js.map +1 -1
  479. package/dist/charts/react/orderbook.cjs +2 -0
  480. package/dist/charts/react/orderbook.cjs.map +1 -0
  481. package/dist/charts/react/orderbook.d.cts +142 -0
  482. package/dist/charts/react/orderbook.d.ts +142 -0
  483. package/dist/charts/react/orderbook.js +182 -0
  484. package/dist/charts/react/orderbook.js.map +1 -0
  485. package/dist/charts/react/shapes.cjs +1 -1
  486. package/dist/charts/react/shapes.cjs.map +1 -1
  487. package/dist/charts/react/shapes.d.cts +291 -9
  488. package/dist/charts/react/shapes.d.ts +291 -9
  489. package/dist/charts/react/shapes.js +280 -93
  490. package/dist/charts/react/shapes.js.map +1 -1
  491. package/dist/charts/react/three-d.cjs +2 -0
  492. package/dist/charts/react/three-d.cjs.map +1 -0
  493. package/dist/charts/react/three-d.d.cts +151 -0
  494. package/dist/charts/react/three-d.d.ts +151 -0
  495. package/dist/charts/react/three-d.js +154 -0
  496. package/dist/charts/react/three-d.js.map +1 -0
  497. package/dist/charts/react/trading.cjs +2 -0
  498. package/dist/charts/react/trading.cjs.map +1 -0
  499. package/dist/charts/react/trading.d.cts +93 -0
  500. package/dist/charts/react/trading.d.ts +93 -0
  501. package/dist/charts/react/trading.js +95 -0
  502. package/dist/charts/react/trading.js.map +1 -0
  503. package/dist/charts/react/types.d.cts +132 -8
  504. package/dist/charts/react/types.d.ts +132 -8
  505. package/dist/core/contracts.cjs +1 -1
  506. package/dist/core/contracts.cjs.map +1 -1
  507. package/dist/core/contracts.js +1 -1
  508. package/dist/core/contracts.js.map +1 -1
  509. package/dist/native/charts/src/canvas.cjs +1 -1
  510. package/dist/native/charts/src/canvas.js +9 -3
  511. package/dist/native/charts/src/engine/axis.cjs +1 -1
  512. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  513. package/dist/native/charts/src/engine/axis.js +6 -6
  514. package/dist/native/charts/src/engine/axis.js.map +1 -1
  515. package/dist/native/charts/src/engine/controller.cjs +1 -1
  516. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  517. package/dist/native/charts/src/engine/controller.js +352 -292
  518. package/dist/native/charts/src/engine/controller.js.map +1 -1
  519. package/dist/native/charts/src/engine/data.cjs +1 -1
  520. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  521. package/dist/native/charts/src/engine/data.js +63 -49
  522. package/dist/native/charts/src/engine/data.js.map +1 -1
  523. package/dist/native/charts/src/engine/format.cjs +1 -1
  524. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  525. package/dist/native/charts/src/engine/format.js +46 -21
  526. package/dist/native/charts/src/engine/format.js.map +1 -1
  527. package/dist/native/charts/src/engine/labels.cjs +2 -0
  528. package/dist/native/charts/src/engine/labels.cjs.map +1 -0
  529. package/dist/native/charts/src/engine/labels.js +74 -0
  530. package/dist/native/charts/src/engine/labels.js.map +1 -0
  531. package/dist/native/charts/src/engine/layout.cjs +1 -1
  532. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  533. package/dist/native/charts/src/engine/layout.js +53 -12
  534. package/dist/native/charts/src/engine/layout.js.map +1 -1
  535. package/dist/native/charts/src/engine/locale.cjs +2 -0
  536. package/dist/native/charts/src/engine/locale.cjs.map +1 -0
  537. package/dist/native/charts/src/engine/locale.js +60 -0
  538. package/dist/native/charts/src/engine/locale.js.map +1 -0
  539. package/dist/native/charts/src/engine/model.cjs +1 -1
  540. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  541. package/dist/native/charts/src/engine/model.js +223 -116
  542. package/dist/native/charts/src/engine/model.js.map +1 -1
  543. package/dist/native/charts/src/engine/overlay.cjs +1 -1
  544. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  545. package/dist/native/charts/src/engine/overlay.js +46 -23
  546. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  547. package/dist/native/charts/src/engine/presets.cjs +2 -2
  548. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  549. package/dist/native/charts/src/engine/presets.js +448 -33
  550. package/dist/native/charts/src/engine/presets.js.map +1 -1
  551. package/dist/native/charts/src/engine/scale.cjs +1 -1
  552. package/dist/native/charts/src/engine/scale.cjs.map +1 -1
  553. package/dist/native/charts/src/engine/scale.js +1 -1
  554. package/dist/native/charts/src/engine/scale.js.map +1 -1
  555. package/dist/native/charts/src/engine/scene.cjs +1 -1
  556. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  557. package/dist/native/charts/src/engine/scene.js +296 -167
  558. package/dist/native/charts/src/engine/scene.js.map +1 -1
  559. package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
  560. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
  561. package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
  562. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
  563. package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
  564. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
  565. package/dist/native/charts/src/engine/shapes/calendar.js +364 -0
  566. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
  567. package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
  568. package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
  569. package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
  570. package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
  571. package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
  572. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
  573. package/dist/native/charts/src/engine/shapes/draw.js +165 -0
  574. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
  575. package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
  576. package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
  577. package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
  578. package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
  579. package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
  580. package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
  581. package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
  582. package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
  583. package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
  584. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
  585. package/dist/native/charts/src/engine/shapes/hit.js +106 -0
  586. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
  587. package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
  588. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
  589. package/dist/native/charts/src/engine/shapes/labels.js +146 -0
  590. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
  591. package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
  592. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
  593. package/dist/native/charts/src/engine/shapes/layout.js +331 -0
  594. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
  595. package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
  596. package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
  597. package/dist/native/charts/src/engine/shapes/pie.js +302 -0
  598. package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
  599. package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
  600. package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
  601. package/dist/native/charts/src/engine/shapes/radar.js +198 -0
  602. package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
  603. package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
  604. package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
  605. package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
  606. package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
  607. package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
  608. package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
  609. package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
  610. package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
  611. package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
  612. package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
  613. package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
  614. package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
  615. package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
  616. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
  617. package/dist/native/charts/src/engine/shapes/scene.js +125 -0
  618. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
  619. package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
  620. package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
  621. package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
  622. package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
  623. package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
  624. package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
  625. package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
  626. package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
  627. package/dist/native/charts/src/engine/time.cjs +1 -1
  628. package/dist/native/charts/src/engine/time.cjs.map +1 -1
  629. package/dist/native/charts/src/engine/time.js +156 -91
  630. package/dist/native/charts/src/engine/time.js.map +1 -1
  631. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  632. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  633. package/dist/native/components/Chart/ChartBase.d.cts +1 -1
  634. package/dist/native/components/Chart/ChartBase.d.ts +1 -1
  635. package/dist/native/components/Chart/ChartBase.js +110 -107
  636. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  637. package/dist/native/components/Chart/charts.cjs +1 -1
  638. package/dist/native/components/Chart/charts.cjs.map +1 -1
  639. package/dist/native/components/Chart/charts.d.cts +6 -1
  640. package/dist/native/components/Chart/charts.d.ts +6 -1
  641. package/dist/native/components/Chart/charts.js +53 -29
  642. package/dist/native/components/Chart/charts.js.map +1 -1
  643. package/dist/native/components/Chart/index.cjs +1 -1
  644. package/dist/native/components/Chart/index.d.cts +1 -1
  645. package/dist/native/components/Chart/index.d.ts +1 -1
  646. package/dist/native/components/Chart/index.js +2 -2
  647. package/dist/native/components/Chart/scene.cjs +1 -1
  648. package/dist/native/components/Chart/scene.cjs.map +1 -1
  649. package/dist/native/components/Chart/scene.js +234 -217
  650. package/dist/native/components/Chart/scene.js.map +1 -1
  651. package/dist/native/components/Chart/types.d.cts +26 -3
  652. package/dist/native/components/Chart/types.d.ts +26 -3
  653. package/dist/native/components/Charts/charts.cjs +2 -0
  654. package/dist/native/components/Charts/charts.cjs.map +1 -0
  655. package/dist/native/components/Charts/charts.d.cts +41 -0
  656. package/dist/native/components/Charts/charts.d.ts +41 -0
  657. package/dist/native/components/Charts/charts.js +338 -0
  658. package/dist/native/components/Charts/charts.js.map +1 -0
  659. package/dist/native/components/Charts/index.cjs +1 -0
  660. package/dist/native/components/Charts/index.d.cts +2 -0
  661. package/dist/native/components/Charts/index.d.ts +2 -0
  662. package/dist/native/components/Charts/index.js +2 -0
  663. package/dist/native/components/Charts/types.d.cts +144 -0
  664. package/dist/native/components/Charts/types.d.ts +144 -0
  665. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
  666. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
  667. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
  668. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
  669. package/dist/native/components/ShapeChart/ShapeChartBase.js +271 -0
  670. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
  671. package/dist/native/components/ShapeChart/charts.cjs +2 -0
  672. package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
  673. package/dist/native/components/ShapeChart/charts.d.cts +38 -0
  674. package/dist/native/components/ShapeChart/charts.d.ts +38 -0
  675. package/dist/native/components/ShapeChart/charts.js +387 -0
  676. package/dist/native/components/ShapeChart/charts.js.map +1 -0
  677. package/dist/native/components/ShapeChart/draw.cjs +2 -0
  678. package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
  679. package/dist/native/components/ShapeChart/draw.d.cts +4 -0
  680. package/dist/native/components/ShapeChart/draw.d.ts +4 -0
  681. package/dist/native/components/ShapeChart/draw.js +104 -0
  682. package/dist/native/components/ShapeChart/draw.js.map +1 -0
  683. package/dist/native/components/ShapeChart/geometry.cjs +2 -0
  684. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
  685. package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
  686. package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
  687. package/dist/native/components/ShapeChart/geometry.js +602 -0
  688. package/dist/native/components/ShapeChart/geometry.js.map +1 -0
  689. package/dist/native/components/ShapeChart/index.cjs +1 -0
  690. package/dist/native/components/ShapeChart/index.d.cts +2 -0
  691. package/dist/native/components/ShapeChart/index.d.ts +2 -0
  692. package/dist/native/components/ShapeChart/index.js +2 -0
  693. package/dist/native/components/ShapeChart/recorder.cjs +2 -0
  694. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
  695. package/dist/native/components/ShapeChart/recorder.d.cts +106 -0
  696. package/dist/native/components/ShapeChart/recorder.d.ts +106 -0
  697. package/dist/native/components/ShapeChart/recorder.js +574 -0
  698. package/dist/native/components/ShapeChart/recorder.js.map +1 -0
  699. package/dist/native/components/ShapeChart/types.d.cts +509 -0
  700. package/dist/native/components/ShapeChart/types.d.ts +509 -0
  701. package/dist/native/index.cjs +1 -1
  702. package/dist/native/index.d.cts +2 -0
  703. package/dist/native/index.d.ts +2 -0
  704. package/dist/native/index.js +14 -10
  705. package/dist/native/manifest.d.cts +6 -4
  706. package/dist/native/manifest.d.ts +6 -4
  707. package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
  708. package/dist/native/source/components/Chart/charts.tsx +42 -6
  709. package/dist/native/source/components/Chart/index.ts +1 -0
  710. package/dist/native/source/components/Chart/scene.tsx +154 -84
  711. package/dist/native/source/components/Chart/types.ts +31 -1
  712. package/dist/native/source/components/Charts/charts.tsx +493 -0
  713. package/dist/native/source/components/Charts/index.ts +14 -0
  714. package/dist/native/source/components/Charts/types.ts +207 -0
  715. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +484 -0
  716. package/dist/native/source/components/ShapeChart/charts.tsx +605 -0
  717. package/dist/native/source/components/ShapeChart/draw.tsx +170 -0
  718. package/dist/native/source/components/ShapeChart/geometry.ts +1185 -0
  719. package/dist/native/source/components/ShapeChart/index.ts +15 -0
  720. package/dist/native/source/components/ShapeChart/recorder.ts +830 -0
  721. package/dist/native/source/components/ShapeChart/types.ts +564 -0
  722. package/dist/native/source/index.ts +2 -0
  723. package/dist/native/source/manifest.ts +30 -4
  724. package/dist/taro/charts.d.ts +209 -4
  725. package/dist/taro/index.d.ts +1 -0
  726. package/dist/taro/index.js +7517 -1856
  727. package/dist/taro/manifest.d.ts +1 -0
  728. package/dist/taro/shape-charts.d.ts +537 -0
  729. package/dist/uni/AreaChart.vue +68 -0
  730. package/dist/uni/AreaChart.vue.d.ts +120 -0
  731. package/dist/uni/Badge.vue.d.ts +1 -1
  732. package/dist/uni/BoxPlotChart.vue +66 -0
  733. package/dist/uni/BoxPlotChart.vue.d.ts +102 -0
  734. package/dist/uni/BubbleChart.vue +68 -0
  735. package/dist/uni/BubbleChart.vue.d.ts +106 -0
  736. package/dist/uni/BulletChart.vue +86 -0
  737. package/dist/uni/BulletChart.vue.d.ts +110 -0
  738. package/dist/uni/CalendarHeatmap.vue +92 -0
  739. package/dist/uni/CalendarHeatmap.vue.d.ts +129 -0
  740. package/dist/uni/CandlestickChart.vue +66 -0
  741. package/dist/uni/CandlestickChart.vue.d.ts +100 -0
  742. package/dist/uni/DonutChart.vue +72 -0
  743. package/dist/uni/DonutChart.vue.d.ts +114 -0
  744. package/dist/uni/FunnelChart.vue +67 -0
  745. package/dist/uni/FunnelChart.vue.d.ts +104 -0
  746. package/dist/uni/GanttChart.vue +67 -0
  747. package/dist/uni/GanttChart.vue.d.ts +123 -0
  748. package/dist/uni/GaugeChart.vue +77 -0
  749. package/dist/uni/GaugeChart.vue.d.ts +123 -0
  750. package/dist/uni/HeatmapChart.vue +66 -0
  751. package/dist/uni/HeatmapChart.vue.d.ts +114 -0
  752. package/dist/uni/HistogramChart.vue +66 -0
  753. package/dist/uni/HistogramChart.vue.d.ts +121 -0
  754. package/dist/uni/HorizontalBarChart.vue +68 -0
  755. package/dist/uni/HorizontalBarChart.vue.d.ts +127 -0
  756. package/dist/uni/Input.vue.d.ts +1 -1
  757. package/dist/uni/MixedChart.vue +68 -0
  758. package/dist/uni/MixedChart.vue.d.ts +106 -0
  759. package/dist/uni/NumberInput.vue.d.ts +1 -1
  760. package/dist/uni/PieChart.vue +72 -0
  761. package/dist/uni/PieChart.vue.d.ts +114 -0
  762. package/dist/uni/RadarChart.vue +67 -0
  763. package/dist/uni/RadarChart.vue.d.ts +110 -0
  764. package/dist/uni/RadialBarChart.vue +90 -0
  765. package/dist/uni/RadialBarChart.vue.d.ts +132 -0
  766. package/dist/uni/RangeAreaChart.vue +68 -0
  767. package/dist/uni/RangeAreaChart.vue.d.ts +102 -0
  768. package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
  769. package/dist/uni/SankeyChart.vue +88 -0
  770. package/dist/uni/SankeyChart.vue.d.ts +121 -0
  771. package/dist/uni/ShapeChart.vue +73 -0
  772. package/dist/uni/ShapeChart.vue.d.ts +54 -0
  773. package/dist/uni/Sparkline.vue +58 -0
  774. package/dist/uni/Sparkline.vue.d.ts +77 -0
  775. package/dist/uni/SunburstChart.vue +90 -0
  776. package/dist/uni/SunburstChart.vue.d.ts +114 -0
  777. package/dist/uni/Textarea.vue.d.ts +1 -1
  778. package/dist/uni/TimePicker.vue.d.ts +1 -1
  779. package/dist/uni/TreemapChart.vue +65 -0
  780. package/dist/uni/TreemapChart.vue.d.ts +100 -0
  781. package/dist/uni/WaterfallChart.vue +66 -0
  782. package/dist/uni/WaterfallChart.vue.d.ts +125 -0
  783. package/dist/uni/chart-types.d.ts +216 -2
  784. package/dist/uni/chart-types.js +174 -0
  785. package/dist/uni/charts-canvas.js +8 -3
  786. package/dist/uni/index.d.ts +26 -1
  787. package/dist/uni/index.js +26 -1
  788. package/dist/uni/manifest.d.ts +272 -0
  789. package/dist/uni/manifest.js +387 -0
  790. package/dist/uni/named-chart-options.d.ts +88 -0
  791. package/dist/uni/named-chart-options.js +156 -0
  792. package/dist/uni/shape-chart-canvas.d.ts +51 -0
  793. package/dist/uni/shape-chart-canvas.js +342 -0
  794. package/dist/uni/shape-chart-types.d.ts +381 -0
  795. package/dist/uni/shape-chart-types.js +261 -0
  796. package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
  797. package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
  798. package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
  799. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
  800. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  801. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
  802. package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
  803. package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
  804. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
  805. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  806. package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
  807. package/dist/vue/components/Chart/BarChart.vue.js +7 -0
  808. package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
  809. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
  810. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  811. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +112 -0
  812. package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
  813. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
  814. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +57 -0
  815. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  816. package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
  817. package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
  818. package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
  819. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
  820. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  821. package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
  822. package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
  823. package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
  824. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
  825. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  826. package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
  827. package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
  828. package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
  829. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
  830. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  831. package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
  832. package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
  833. package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
  834. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
  835. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  836. package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
  837. package/dist/vue/components/Chart/Chart.vue.js +7 -0
  838. package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
  839. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
  840. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  841. package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
  842. package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
  843. package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
  844. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
  845. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  846. package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
  847. package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
  848. package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
  849. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
  850. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  851. package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
  852. package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
  853. package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
  854. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
  855. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  856. package/dist/vue/components/Chart/GanttChart.vue.d.ts +132 -0
  857. package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
  858. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
  859. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +98 -0
  860. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  861. package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
  862. package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
  863. package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
  864. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
  865. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  866. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +125 -0
  867. package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
  868. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
  869. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +65 -0
  870. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  871. package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
  872. package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
  873. package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
  874. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
  875. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  876. package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
  877. package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
  878. package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
  879. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
  880. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  881. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
  882. package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
  883. package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
  884. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  885. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  886. package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
  887. package/dist/vue/components/Chart/LineChart.vue.js +7 -0
  888. package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
  889. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
  890. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  891. package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
  892. package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
  893. package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
  894. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
  895. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  896. package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
  897. package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
  898. package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
  899. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
  900. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
  901. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +128 -0
  902. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
  903. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
  904. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
  905. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  906. package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
  907. package/dist/vue/components/Chart/PieChart.vue.js +7 -0
  908. package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
  909. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
  910. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  911. package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
  912. package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
  913. package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
  914. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
  915. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  916. package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
  917. package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
  918. package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
  919. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
  920. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  921. package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
  922. package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
  923. package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
  924. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
  925. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  926. package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
  927. package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
  928. package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
  929. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
  930. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  931. package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
  932. package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
  933. package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
  934. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
  935. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  936. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
  937. package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
  938. package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
  939. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  940. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  941. package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
  942. package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
  943. package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
  944. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
  945. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  946. package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
  947. package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
  948. package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
  949. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
  950. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  951. package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
  952. package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
  953. package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
  954. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
  955. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  956. package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
  957. package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
  958. package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
  959. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
  960. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  961. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
  962. package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
  963. package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
  964. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
  965. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  966. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +114 -0
  967. package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
  968. package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
  969. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
  970. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
  971. package/dist/vue/components/Chart/TradingChart.vue.d.ts +160 -0
  972. package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
  973. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
  974. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +70 -0
  975. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  976. package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
  977. package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
  978. package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
  979. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
  980. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  981. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +132 -0
  982. package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
  983. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
  984. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +68 -0
  985. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  986. package/dist/vue/components/Chart/cartesian.d.ts +47 -0
  987. package/dist/vue/components/Chart/cartesian.js +56 -0
  988. package/dist/vue/components/Chart/cartesian.js.map +1 -0
  989. package/dist/vue/components/Chart/engine.d.ts +35 -0
  990. package/dist/vue/components/Chart/engine.js +35 -0
  991. package/dist/vue/components/Chart/engine.js.map +1 -0
  992. package/dist/vue/components/Chart/index.d.ts +41 -0
  993. package/dist/vue/components/Chart/index.js +40 -0
  994. package/dist/vue/components/Chart/orderbook.d.ts +359 -0
  995. package/dist/vue/components/Chart/orderbook.js +126 -0
  996. package/dist/vue/components/Chart/orderbook.js.map +1 -0
  997. package/dist/vue/components/Chart/props.d.ts +188 -0
  998. package/dist/vue/components/Chart/props.js +92 -0
  999. package/dist/vue/components/Chart/props.js.map +1 -0
  1000. package/dist/vue/components/Chart/shape.d.ts +41 -0
  1001. package/dist/vue/components/Chart/shape.js +42 -0
  1002. package/dist/vue/components/Chart/shape.js.map +1 -0
  1003. package/dist/vue/components/Chart/three-d.d.ts +106 -0
  1004. package/dist/vue/components/Chart/three-d.js +88 -0
  1005. package/dist/vue/components/Chart/three-d.js.map +1 -0
  1006. package/dist/vue/components/Chart/trading.d.ts +105 -0
  1007. package/dist/vue/components/Chart/trading.js +55 -0
  1008. package/dist/vue/components/Chart/trading.js.map +1 -0
  1009. package/dist/vue/components/Chart/types.d.ts +137 -0
  1010. package/dist/vue/global.d.ts +38 -0
  1011. package/dist/vue/groups/charts.d.ts +1 -0
  1012. package/dist/vue/groups/charts.js +87 -0
  1013. package/dist/vue/groups/charts.js.map +1 -0
  1014. package/dist/vue/index.d.ts +1 -0
  1015. package/dist/vue/index.js +63 -23
  1016. package/dist/vue/plugin.js +12 -10
  1017. package/dist/vue/plugin.js.map +1 -1
  1018. package/dist/weapp/area-chart/index.js +1 -0
  1019. package/dist/weapp/area-chart/index.json +1 -0
  1020. package/dist/weapp/area-chart/index.wxml +1 -0
  1021. package/dist/weapp/area-chart/index.wxss +1 -0
  1022. package/dist/weapp/box-plot-chart/index.js +1 -0
  1023. package/dist/weapp/box-plot-chart/index.json +1 -0
  1024. package/dist/weapp/box-plot-chart/index.wxml +1 -0
  1025. package/dist/weapp/box-plot-chart/index.wxss +1 -0
  1026. package/dist/weapp/bubble-chart/index.js +1 -0
  1027. package/dist/weapp/bubble-chart/index.json +1 -0
  1028. package/dist/weapp/bubble-chart/index.wxml +1 -0
  1029. package/dist/weapp/bubble-chart/index.wxss +1 -0
  1030. package/dist/weapp/bullet-chart/index.js +1 -0
  1031. package/dist/weapp/bullet-chart/index.json +1 -0
  1032. package/dist/weapp/bullet-chart/index.wxml +1 -0
  1033. package/dist/weapp/bullet-chart/index.wxss +1 -0
  1034. package/dist/weapp/calendar-heatmap/index.js +1 -0
  1035. package/dist/weapp/calendar-heatmap/index.json +1 -0
  1036. package/dist/weapp/calendar-heatmap/index.wxml +1 -0
  1037. package/dist/weapp/calendar-heatmap/index.wxss +1 -0
  1038. package/dist/weapp/candlestick-chart/index.js +1 -0
  1039. package/dist/weapp/candlestick-chart/index.json +1 -0
  1040. package/dist/weapp/candlestick-chart/index.wxml +1 -0
  1041. package/dist/weapp/candlestick-chart/index.wxss +1 -0
  1042. package/dist/weapp/charts/canvas.js +11436 -0
  1043. package/dist/weapp/charts/core.d.ts +2 -0
  1044. package/dist/weapp/charts/core.js +41 -0
  1045. package/dist/weapp/controls.js +1433 -4478
  1046. package/dist/weapp/donut-chart/index.js +1 -0
  1047. package/dist/weapp/donut-chart/index.json +1 -0
  1048. package/dist/weapp/donut-chart/index.wxml +1 -0
  1049. package/dist/weapp/donut-chart/index.wxss +1 -0
  1050. package/dist/weapp/funnel-chart/index.js +1 -0
  1051. package/dist/weapp/funnel-chart/index.json +1 -0
  1052. package/dist/weapp/funnel-chart/index.wxml +1 -0
  1053. package/dist/weapp/funnel-chart/index.wxss +1 -0
  1054. package/dist/weapp/gantt-chart/index.js +1 -0
  1055. package/dist/weapp/gantt-chart/index.json +1 -0
  1056. package/dist/weapp/gantt-chart/index.wxml +1 -0
  1057. package/dist/weapp/gantt-chart/index.wxss +1 -0
  1058. package/dist/weapp/gauge-chart/index.js +1 -0
  1059. package/dist/weapp/gauge-chart/index.json +1 -0
  1060. package/dist/weapp/gauge-chart/index.wxml +1 -0
  1061. package/dist/weapp/gauge-chart/index.wxss +1 -0
  1062. package/dist/weapp/heatmap-chart/index.js +1 -0
  1063. package/dist/weapp/heatmap-chart/index.json +1 -0
  1064. package/dist/weapp/heatmap-chart/index.wxml +1 -0
  1065. package/dist/weapp/heatmap-chart/index.wxss +1 -0
  1066. package/dist/weapp/histogram-chart/index.js +1 -0
  1067. package/dist/weapp/histogram-chart/index.json +1 -0
  1068. package/dist/weapp/histogram-chart/index.wxml +1 -0
  1069. package/dist/weapp/histogram-chart/index.wxss +1 -0
  1070. package/dist/weapp/horizontal-bar-chart/index.js +1 -0
  1071. package/dist/weapp/horizontal-bar-chart/index.json +1 -0
  1072. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
  1073. package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
  1074. package/dist/weapp/mixed-chart/index.js +1 -0
  1075. package/dist/weapp/mixed-chart/index.json +1 -0
  1076. package/dist/weapp/mixed-chart/index.wxml +1 -0
  1077. package/dist/weapp/mixed-chart/index.wxss +1 -0
  1078. package/dist/weapp/pie-chart/index.js +1 -0
  1079. package/dist/weapp/pie-chart/index.json +1 -0
  1080. package/dist/weapp/pie-chart/index.wxml +1 -0
  1081. package/dist/weapp/pie-chart/index.wxss +1 -0
  1082. package/dist/weapp/radar-chart/index.js +1 -0
  1083. package/dist/weapp/radar-chart/index.json +1 -0
  1084. package/dist/weapp/radar-chart/index.wxml +1 -0
  1085. package/dist/weapp/radar-chart/index.wxss +1 -0
  1086. package/dist/weapp/radial-bar-chart/index.js +1 -0
  1087. package/dist/weapp/radial-bar-chart/index.json +1 -0
  1088. package/dist/weapp/radial-bar-chart/index.wxml +1 -0
  1089. package/dist/weapp/radial-bar-chart/index.wxss +1 -0
  1090. package/dist/weapp/range-area-chart/index.js +1 -0
  1091. package/dist/weapp/range-area-chart/index.json +1 -0
  1092. package/dist/weapp/range-area-chart/index.wxml +1 -0
  1093. package/dist/weapp/range-area-chart/index.wxss +1 -0
  1094. package/dist/weapp/sankey-chart/index.js +1 -0
  1095. package/dist/weapp/sankey-chart/index.json +1 -0
  1096. package/dist/weapp/sankey-chart/index.wxml +1 -0
  1097. package/dist/weapp/sankey-chart/index.wxss +1 -0
  1098. package/dist/weapp/shape-chart/index.js +1 -0
  1099. package/dist/weapp/shape-chart/index.json +1 -0
  1100. package/dist/weapp/shape-chart/index.wxml +1 -0
  1101. package/dist/weapp/shape-chart/index.wxss +1 -0
  1102. package/dist/weapp/sparkline/index.js +1 -0
  1103. package/dist/weapp/sparkline/index.json +1 -0
  1104. package/dist/weapp/sparkline/index.wxml +1 -0
  1105. package/dist/weapp/sparkline/index.wxss +1 -0
  1106. package/dist/weapp/sunburst-chart/index.js +1 -0
  1107. package/dist/weapp/sunburst-chart/index.json +1 -0
  1108. package/dist/weapp/sunburst-chart/index.wxml +1 -0
  1109. package/dist/weapp/sunburst-chart/index.wxss +1 -0
  1110. package/dist/weapp/treemap-chart/index.js +1 -0
  1111. package/dist/weapp/treemap-chart/index.json +1 -0
  1112. package/dist/weapp/treemap-chart/index.wxml +1 -0
  1113. package/dist/weapp/treemap-chart/index.wxss +1 -0
  1114. package/dist/weapp/types.d.ts +466 -0
  1115. package/dist/weapp/waterfall-chart/index.js +1 -0
  1116. package/dist/weapp/waterfall-chart/index.json +1 -0
  1117. package/dist/weapp/waterfall-chart/index.wxml +1 -0
  1118. package/dist/weapp/waterfall-chart/index.wxss +1 -0
  1119. package/dist/web-components/components/chart/chart.d.ts +58 -0
  1120. package/dist/web-components/components/chart/chart.js +55 -0
  1121. package/dist/web-components/components/chart/chart.js.map +1 -0
  1122. package/dist/web-components/components/chart/charts.d.ts +252 -0
  1123. package/dist/web-components/components/chart/charts.js +201 -0
  1124. package/dist/web-components/components/chart/charts.js.map +1 -0
  1125. package/dist/web-components/components/chart/engine-element.d.ts +53 -0
  1126. package/dist/web-components/components/chart/engine-element.js +77 -0
  1127. package/dist/web-components/components/chart/engine-element.js.map +1 -0
  1128. package/dist/web-components/components/chart/extended.d.ts +224 -0
  1129. package/dist/web-components/components/chart/extended.js +183 -0
  1130. package/dist/web-components/components/chart/extended.js.map +1 -0
  1131. package/dist/web-components/components/chart/series.d.ts +7 -0
  1132. package/dist/web-components/components/chart/series.js +14 -0
  1133. package/dist/web-components/components/chart/series.js.map +1 -0
  1134. package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
  1135. package/dist/web-components/components/chart/shape-chart.js +161 -0
  1136. package/dist/web-components/components/chart/shape-chart.js.map +1 -0
  1137. package/dist/web-components/components/chart/shapes-extended.d.ts +162 -0
  1138. package/dist/web-components/components/chart/shapes-extended.js +156 -0
  1139. package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
  1140. package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
  1141. package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
  1142. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
  1143. package/dist/web-components/components/order-book/order-book.d.ts +165 -0
  1144. package/dist/web-components/components/order-book/order-book.js +174 -0
  1145. package/dist/web-components/components/order-book/order-book.js.map +1 -0
  1146. package/dist/web-components/components/trading-chart/trading-chart.d.ts +96 -0
  1147. package/dist/web-components/components/trading-chart/trading-chart.js +96 -0
  1148. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
  1149. package/dist/web-components/elements/chart-3d.d.ts +2 -0
  1150. package/dist/web-components/elements/chart-3d.js +13 -0
  1151. package/dist/web-components/elements/chart-3d.js.map +1 -0
  1152. package/dist/web-components/elements/chart.d.ts +7 -0
  1153. package/dist/web-components/elements/chart.js +43 -0
  1154. package/dist/web-components/elements/chart.js.map +1 -0
  1155. package/dist/web-components/elements/order-book.d.ts +2 -0
  1156. package/dist/web-components/elements/order-book.js +13 -0
  1157. package/dist/web-components/elements/order-book.js.map +1 -0
  1158. package/dist/web-components/elements/trading-chart.d.ts +2 -0
  1159. package/dist/web-components/elements/trading-chart.js +8 -0
  1160. package/dist/web-components/elements/trading-chart.js.map +1 -0
  1161. package/dist/web-components/html-custom-data.json +1192 -29
  1162. package/dist/web-components/types/react.d.ts +435 -0
  1163. package/dist/web-components/types/solid.d.ts +321 -0
  1164. package/dist/web-components/types/svelte.d.ts +321 -0
  1165. package/dist/web-components/types/vue.d.ts +359 -0
  1166. package/package.json +113 -1
@@ -1 +1 @@
1
- {"version":3,"file":"shaders.cjs","names":["WGSL_COMMON","WGSL_LINE","WGSL_AREA","WGSL_BAR","WGSL_SCATTER","GLSL_HEADER","GLSL_VERTEX_COMMON","GLSL_LINE","GLSL_AREA","GLSL_BAR","GLSL_SCATTER"],"sources":["../../../../../charts/src/engine/renderers/shaders.ts"],"sourcesContent":["// WGSL (WebGPU) and GLSL ES 3.0 (WebGL2) programs. Every primitive is an\n// instanced 4-vertex triangle strip; anti-aliasing comes from signed\n// distance functions in pixel space (no MSAA needed).\n//\n// Uniforms (both backends):\n// xform = (xScale, xOffset, yScale, yOffset) relative data -> clip\n// viewport = (width px, height px, dpr, 0)\n// color = straight RGBA of the series\n// params = line: (half width px) | area: (_, opacity)\n// bar: (half width in x units, radius px, inset px, min half px)\n// scatter: (opacity, stroke px)\n// Bars and scatter dots carry their own color (unorm8x4 per instance).\n// Output colors are premultiplied.\n\nconst WGSL_COMMON = /* wgsl */ `\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const WGSL_LINE = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) len: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let pa = toPx(a);\n let pb = toPx(b);\n let d = pb - pa;\n let len = length(d);\n var dir = vec2f(1.0, 0.0);\n if (len > 1e-6) { dir = d / len; }\n let nrm = vec2f(-dir.y, dir.x);\n let hw = u.params.x + 1.0;\n let c = corner(vi);\n let along = mix(-hw, len + hw, c.x);\n let across = mix(-hw, hw, c.y);\n out.pos = pxToClip(pa + dir * along + nrm * across);\n out.local = vec2f(along, across);\n out.len = len;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let x = clamp(v.local.x, 0.0, v.len);\n let dist = length(vec2f(v.local.x - x, v.local.y));\n let a = clamp(u.params.x - dist + 0.5, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_AREA = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) t: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec3f, @location(1) b: vec3f) -> Out {\n var out: Out;\n if (gap(a.xy) || gap(b.xy) || abs(a.z) > 1e37 || abs(b.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let c = corner(vi);\n let p = select(a, b, c.y > 0.5);\n let y = select(p.z, p.y, c.x > 0.5);\n out.pos = vec4f(toClip(vec2f(p.x, y)), 0.0, 1.0);\n out.t = c.x;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let a = u.color.a * u.params.y * (0.25 + 0.75 * v.t * v.t);\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_BAR = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) hs: vec2f,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) inst: vec3f, @location(1) color: vec4f) -> Out {\n var out: Out;\n if (gap(inst.xy) || abs(inst.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let dpr = u.viewport.z;\n let rawHw = abs(u.params.x * u.xform.x) * 0.5 * u.viewport.x;\n let p0 = toPx(inst.xy);\n let y1 = toPx(vec2f(inst.x, inst.z)).y;\n let lo = min(p0.y, y1);\n let hi = max(p0.y, y1);\n // the gap between cells fades out on small cells (dense heatmaps stay\n // solid); without a gap, cells overlap by a pixel so no seam shows\n let fade = clamp((min(rawHw, (hi - lo) * 0.5) - 3.0 * dpr) / (2.0 * dpr), 0.0, 1.0);\n let inset = u.params.z * dpr * fade - select(0.0, 0.5 * (1.0 - fade), u.params.z > 0.0);\n let minHalf = u.params.w * dpr;\n let hw = max(max(rawHw - inset, 0.5), minHalf);\n let hsz = vec2f(hw, max((hi - lo) * 0.5 - inset, minHalf));\n let center = vec2f(p0.x, (lo + hi) * 0.5);\n let ext = hsz + vec2f(1.0);\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(center + c * ext);\n out.local = c * ext;\n out.hs = hsz;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let r = min(u.params.y * u.viewport.z, min(v.hs.x, v.hs.y));\n let q = abs(v.local) - v.hs + vec2f(r);\n let d = length(max(q, vec2f(0.0))) + min(max(q.x, q.y), 0.0) - r;\n let a = clamp(0.5 - d, 0.0, 1.0) * v.color.a;\n return vec4f(v.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_SCATTER = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) r: f32,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) p: vec2f, @location(1) size: f32, @location(2) color: vec4f) -> Out {\n var out: Out;\n if (gap(p) || !(size > 0.0)) {\n out.pos = HIDDEN;\n return out;\n }\n let r = size * 0.5 * u.viewport.z;\n let ext = r + 1.0;\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(toPx(p) + c * ext);\n out.local = c * ext;\n out.r = r;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let d = length(v.local) - v.r;\n let cover = clamp(0.5 - d, 0.0, 1.0);\n let inner = clamp(0.5 - (d + u.params.y * u.viewport.z), 0.0, 1.0);\n let a = v.color.a * (inner * u.params.x + (cover - inner));\n return vec4f(v.color.rgb * a, a);\n}\n`;\n\nconst GLSL_HEADER = /* glsl */ `#version 300 es\nprecision highp float;\nuniform vec4 u_xform;\nuniform vec4 u_viewport;\nuniform vec4 u_color;\nuniform vec4 u_params;\n`;\n\nconst GLSL_VERTEX_COMMON = /* glsl */ `${GLSL_HEADER}\nbool gap(vec2 p) { return abs(p.x) > 1e37 || abs(p.y) > 1e37; }\nvec2 toClip(vec2 p) { return vec2(p.x * u_xform.x + u_xform.y, p.y * u_xform.z + u_xform.w); }\nvec2 toPx(vec2 p) { return (toClip(p) * 0.5 + 0.5) * u_viewport.xy; }\nvec4 pxToClip(vec2 p) { return vec4(p / u_viewport.xy * 2.0 - 1.0, 0.0, 1.0); }\nvec2 corner() { return vec2(float(gl_VertexID & 1), float(gl_VertexID >> 1)); }\nconst vec4 HIDDEN = vec4(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const GLSL_LINE = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_a;\nin vec2 a_b;\nout vec2 v_local;\nout float v_len;\nvoid main() {\n v_local = vec2(0.0);\n v_len = 0.0;\n if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }\n vec2 pa = toPx(a_a);\n vec2 pb = toPx(a_b);\n vec2 d = pb - pa;\n float len = length(d);\n vec2 dir = len > 1e-6 ? d / len : vec2(1.0, 0.0);\n vec2 nrm = vec2(-dir.y, dir.x);\n float hw = u_params.x + 1.0;\n vec2 c = corner();\n float along = mix(-hw, len + hw, c.x);\n float across = mix(-hw, hw, c.y);\n gl_Position = pxToClip(pa + dir * along + nrm * across);\n v_local = vec2(along, across);\n v_len = len;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nin float v_len;\nout vec4 outColor;\nvoid main() {\n float x = clamp(v_local.x, 0.0, v_len);\n float dist = length(vec2(v_local.x - x, v_local.y));\n float a = clamp(u_params.x - dist + 0.5, 0.0, 1.0) * u_color.a;\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_AREA = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec3 a_a;\nin vec3 a_b;\nout float v_t;\nvoid main() {\n v_t = 0.0;\n if (gap(a_a.xy) || gap(a_b.xy) || abs(a_a.z) > 1e37 || abs(a_b.z) > 1e37) { gl_Position = HIDDEN; return; }\n vec2 c = corner();\n vec3 p = c.y > 0.5 ? a_b : a_a;\n float y = c.x > 0.5 ? p.y : p.z;\n gl_Position = vec4(toClip(vec2(p.x, y)), 0.0, 1.0);\n v_t = c.x;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin float v_t;\nout vec4 outColor;\nvoid main() {\n float a = u_color.a * u_params.y * (0.25 + 0.75 * v_t * v_t);\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_BAR = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec3 a_inst;\nin vec4 a_color;\nout vec2 v_local;\nflat out vec2 v_half;\nflat out vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_half = vec2(0.0);\n v_color = a_color;\n if (gap(a_inst.xy) || abs(a_inst.z) > 1e37) { gl_Position = HIDDEN; return; }\n float dpr = u_viewport.z;\n float rawHw = abs(u_params.x * u_xform.x) * 0.5 * u_viewport.x;\n vec2 p0 = toPx(a_inst.xy);\n float y1 = toPx(vec2(a_inst.x, a_inst.z)).y;\n float lo = min(p0.y, y1);\n float hi = max(p0.y, y1);\n float fade = clamp((min(rawHw, (hi - lo) * 0.5) - 3.0 * dpr) / (2.0 * dpr), 0.0, 1.0);\n float inset = u_params.z * dpr * fade - (u_params.z > 0.0 ? 0.5 * (1.0 - fade) : 0.0);\n float minHalf = u_params.w * dpr;\n float hw = max(max(rawHw - inset, 0.5), minHalf);\n vec2 hsz = vec2(hw, max((hi - lo) * 0.5 - inset, minHalf));\n vec2 center = vec2(p0.x, (lo + hi) * 0.5);\n vec2 ext = hsz + vec2(1.0);\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(center + c * ext);\n v_local = c * ext;\n v_half = hsz;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in vec2 v_half;\nflat in vec4 v_color;\nout vec4 outColor;\nvoid main() {\n float r = min(u_params.y * u_viewport.z, min(v_half.x, v_half.y));\n vec2 q = abs(v_local) - v_half + vec2(r);\n float d = length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - r;\n float a = clamp(0.5 - d, 0.0, 1.0) * v_color.a;\n outColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_SCATTER = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_pos;\nin float a_size;\nin vec4 a_color;\nout vec2 v_local;\nflat out float v_r;\nflat out vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_r = 0.0;\n v_color = a_color;\n if (gap(a_pos) || !(a_size > 0.0)) { gl_Position = HIDDEN; return; }\n float r = a_size * 0.5 * u_viewport.z;\n float ext = r + 1.0;\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(toPx(a_pos) + c * ext);\n v_local = c * ext;\n v_r = r;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in float v_r;\nflat in vec4 v_color;\nout vec4 outColor;\nvoid main() {\n float d = length(v_local) - v_r;\n float cover = clamp(0.5 - d, 0.0, 1.0);\n float inner = clamp(0.5 - (d + u_params.y * u_viewport.z), 0.0, 1.0);\n float a = v_color.a * (inner * u_params.x + (cover - inner));\n outColor = vec4(v_color.rgb * a, a);\n}`,\n};\n"],"mappings":"AAcA,IAAMA,EAAyB;;;;;;;;;;;;;;;;;;;;;;;;;EA2BlBC,EAAuB,GAAGD,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCtCE,EAAuB,GAAGF,EAAY;;;;;;;;;;;;;;;;;;;;;;EAwBtCG,EAAsB,GAAGH,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CrCI,EAA0B,GAAGJ,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BhDK,EAAyB;;;;;;EAQzBC,EAAgC,GAAGD,EAAY;;;;;;;EASxCE,EAAY,CACvB,OAAmB,GAAGD,EAAmB;;;;;;;;;;;;;;;;;;;;;;GAuBzC,SAAqB,GAAGD,EAAY;;;;;;;;;EAUtC,EAEaG,EAAY,CACvB,OAAmB,GAAGF,EAAmB;;;;;;;;;;;;GAazC,SAAqB,GAAGD,EAAY;;;;;;EAOtC,EAEaI,EAAW,CACtB,OAAmB,GAAGH,EAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BzC,SAAqB,GAAGD,EAAY;;;;;;;;;;;EAYtC,EAEaK,EAAe,CAC1B,OAAmB,GAAGJ,EAAmB;;;;;;;;;;;;;;;;;;GAmBzC,SAAqB,GAAGD,EAAY;;;;;;;;;;;EAYtC"}
1
+ {"version":3,"file":"shaders.cjs","names":["WGSL_COMMON","WGSL_LINE","WGSL_AREA","WGSL_BAR","WGSL_SCATTER","GLSL_HEADER","GLSL_VERTEX_COMMON","GLSL_LINE","GLSL_AREA","GLSL_BAR","GLSL_SCATTER","GLSL1_VERTEX_COMMON","GLSL1_FRAGMENT_COMMON","GLSL1_LINE","GLSL1_AREA","GLSL1_BAR","GLSL1_SCATTER"],"sources":["../../../../../charts/src/engine/renderers/shaders.ts"],"sourcesContent":["// WGSL (WebGPU), GLSL ES 3.0 (WebGL2) and GLSL ES 1.0 (WebGL) programs.\n// Every primitive is an instanced 4-vertex triangle strip; anti-aliasing\n// comes from signed distance functions in pixel space (no MSAA needed).\n//\n// Uniforms (all backends):\n// xform = (xScale, xOffset, yScale, yOffset) relative data -> clip\n// viewport = (width px, height px, dpr, 0)\n// color = straight RGBA of the series\n// params = line: (half width px) | area: (_, opacity)\n// bar: (half width in x units, radius px, inset px, min half px)\n// scatter: (opacity, stroke px)\n// Bars and scatter dots carry their own color (unorm8x4 per instance).\n// Output colors are premultiplied.\n\nconst WGSL_COMMON = /* wgsl */ `\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const WGSL_LINE = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) len: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let pa = toPx(a);\n let pb = toPx(b);\n let d = pb - pa;\n let len = length(d);\n var dir = vec2f(1.0, 0.0);\n if (len > 1e-6) { dir = d / len; }\n let nrm = vec2f(-dir.y, dir.x);\n let hw = u.params.x + 1.0;\n let c = corner(vi);\n let along = mix(-hw, len + hw, c.x);\n let across = mix(-hw, hw, c.y);\n out.pos = pxToClip(pa + dir * along + nrm * across);\n out.local = vec2f(along, across);\n out.len = len;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let x = clamp(v.local.x, 0.0, v.len);\n let dist = length(vec2f(v.local.x - x, v.local.y));\n let a = clamp(u.params.x - dist + 0.5, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_AREA = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) t: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec3f, @location(1) b: vec3f) -> Out {\n var out: Out;\n if (gap(a.xy) || gap(b.xy) || abs(a.z) > 1e37 || abs(b.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let c = corner(vi);\n let p = select(a, b, c.y > 0.5);\n let y = select(p.z, p.y, c.x > 0.5);\n out.pos = vec4f(toClip(vec2f(p.x, y)), 0.0, 1.0);\n out.t = c.x;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let a = u.color.a * u.params.y * (0.25 + 0.75 * v.t * v.t);\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_BAR = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) hs: vec2f,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) inst: vec3f, @location(1) color: vec4f) -> Out {\n var out: Out;\n if (gap(inst.xy) || abs(inst.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let dpr = u.viewport.z;\n let rawHw = abs(u.params.x * u.xform.x) * 0.5 * u.viewport.x;\n let p0 = toPx(inst.xy);\n let y1 = toPx(vec2f(inst.x, inst.z)).y;\n let lo = min(p0.y, y1);\n let hi = max(p0.y, y1);\n // the gap between cells fades out on small cells (dense heatmaps stay\n // solid); without a gap, cells overlap by a pixel so no seam shows\n let fade = clamp((min(rawHw, (hi - lo) * 0.5) - 3.0 * dpr) / (2.0 * dpr), 0.0, 1.0);\n let inset = u.params.z * dpr * fade - select(0.0, 0.5 * (1.0 - fade), u.params.z > 0.0);\n let minHalf = u.params.w * dpr;\n let hw = max(max(rawHw - inset, 0.5), minHalf);\n let hsz = vec2f(hw, max((hi - lo) * 0.5 - inset, minHalf));\n let center = vec2f(p0.x, (lo + hi) * 0.5);\n let ext = hsz + vec2f(1.0);\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(center + c * ext);\n out.local = c * ext;\n out.hs = hsz;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let r = min(u.params.y * u.viewport.z, min(v.hs.x, v.hs.y));\n let q = abs(v.local) - v.hs + vec2f(r);\n let d = length(max(q, vec2f(0.0))) + min(max(q.x, q.y), 0.0) - r;\n let a = clamp(0.5 - d, 0.0, 1.0) * v.color.a;\n return vec4f(v.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_SCATTER = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) r: f32,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) p: vec2f, @location(1) size: f32, @location(2) color: vec4f) -> Out {\n var out: Out;\n if (gap(p) || !(size > 0.0)) {\n out.pos = HIDDEN;\n return out;\n }\n let r = size * 0.5 * u.viewport.z;\n let ext = r + 1.0;\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(toPx(p) + c * ext);\n out.local = c * ext;\n out.r = r;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let d = length(v.local) - v.r;\n let cover = clamp(0.5 - d, 0.0, 1.0);\n let inner = clamp(0.5 - (d + u.params.y * u.viewport.z), 0.0, 1.0);\n let a = v.color.a * (inner * u.params.x + (cover - inner));\n return vec4f(v.color.rgb * a, a);\n}\n`;\n\nconst GLSL_HEADER = /* glsl */ `#version 300 es\nprecision highp float;\nuniform vec4 u_xform;\nuniform vec4 u_viewport;\nuniform vec4 u_color;\nuniform vec4 u_params;\n`;\n\nconst GLSL_VERTEX_COMMON = /* glsl */ `${GLSL_HEADER}\nbool gap(vec2 p) { return abs(p.x) > 1e37 || abs(p.y) > 1e37; }\nvec2 toClip(vec2 p) { return vec2(p.x * u_xform.x + u_xform.y, p.y * u_xform.z + u_xform.w); }\nvec2 toPx(vec2 p) { return (toClip(p) * 0.5 + 0.5) * u_viewport.xy; }\nvec4 pxToClip(vec2 p) { return vec4(p / u_viewport.xy * 2.0 - 1.0, 0.0, 1.0); }\nvec2 corner() { return vec2(float(gl_VertexID & 1), float(gl_VertexID >> 1)); }\nconst vec4 HIDDEN = vec4(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const GLSL_LINE = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_a;\nin vec2 a_b;\nout vec2 v_local;\nout float v_len;\nvoid main() {\n v_local = vec2(0.0);\n v_len = 0.0;\n if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }\n vec2 pa = toPx(a_a);\n vec2 pb = toPx(a_b);\n vec2 d = pb - pa;\n float len = length(d);\n vec2 dir = len > 1e-6 ? d / len : vec2(1.0, 0.0);\n vec2 nrm = vec2(-dir.y, dir.x);\n float hw = u_params.x + 1.0;\n vec2 c = corner();\n float along = mix(-hw, len + hw, c.x);\n float across = mix(-hw, hw, c.y);\n gl_Position = pxToClip(pa + dir * along + nrm * across);\n v_local = vec2(along, across);\n v_len = len;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nin float v_len;\nout vec4 outColor;\nvoid main() {\n float x = clamp(v_local.x, 0.0, v_len);\n float dist = length(vec2(v_local.x - x, v_local.y));\n float a = clamp(u_params.x - dist + 0.5, 0.0, 1.0) * u_color.a;\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_AREA = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec3 a_a;\nin vec3 a_b;\nout float v_t;\nvoid main() {\n v_t = 0.0;\n if (gap(a_a.xy) || gap(a_b.xy) || abs(a_a.z) > 1e37 || abs(a_b.z) > 1e37) { gl_Position = HIDDEN; return; }\n vec2 c = corner();\n vec3 p = c.y > 0.5 ? a_b : a_a;\n float y = c.x > 0.5 ? p.y : p.z;\n gl_Position = vec4(toClip(vec2(p.x, y)), 0.0, 1.0);\n v_t = c.x;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin float v_t;\nout vec4 outColor;\nvoid main() {\n float a = u_color.a * u_params.y * (0.25 + 0.75 * v_t * v_t);\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_BAR = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec3 a_inst;\nin vec4 a_color;\nout vec2 v_local;\nflat out vec2 v_half;\nflat out vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_half = vec2(0.0);\n v_color = a_color;\n if (gap(a_inst.xy) || abs(a_inst.z) > 1e37) { gl_Position = HIDDEN; return; }\n float dpr = u_viewport.z;\n float rawHw = abs(u_params.x * u_xform.x) * 0.5 * u_viewport.x;\n vec2 p0 = toPx(a_inst.xy);\n float y1 = toPx(vec2(a_inst.x, a_inst.z)).y;\n float lo = min(p0.y, y1);\n float hi = max(p0.y, y1);\n float fade = clamp((min(rawHw, (hi - lo) * 0.5) - 3.0 * dpr) / (2.0 * dpr), 0.0, 1.0);\n float inset = u_params.z * dpr * fade - (u_params.z > 0.0 ? 0.5 * (1.0 - fade) : 0.0);\n float minHalf = u_params.w * dpr;\n float hw = max(max(rawHw - inset, 0.5), minHalf);\n vec2 hsz = vec2(hw, max((hi - lo) * 0.5 - inset, minHalf));\n vec2 center = vec2(p0.x, (lo + hi) * 0.5);\n vec2 ext = hsz + vec2(1.0);\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(center + c * ext);\n v_local = c * ext;\n v_half = hsz;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in vec2 v_half;\nflat in vec4 v_color;\nout vec4 outColor;\nvoid main() {\n float r = min(u_params.y * u_viewport.z, min(v_half.x, v_half.y));\n vec2 q = abs(v_local) - v_half + vec2(r);\n float d = length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - r;\n float a = clamp(0.5 - d, 0.0, 1.0) * v_color.a;\n outColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_SCATTER = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_pos;\nin float a_size;\nin vec4 a_color;\nout vec2 v_local;\nflat out float v_r;\nflat out vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_r = 0.0;\n v_color = a_color;\n if (gap(a_pos) || !(a_size > 0.0)) { gl_Position = HIDDEN; return; }\n float r = a_size * 0.5 * u_viewport.z;\n float ext = r + 1.0;\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(toPx(a_pos) + c * ext);\n v_local = c * ext;\n v_r = r;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in float v_r;\nflat in vec4 v_color;\nout vec4 outColor;\nvoid main() {\n float d = length(v_local) - v_r;\n float cover = clamp(0.5 - d, 0.0, 1.0);\n float inner = clamp(0.5 - (d + u_params.y * u_viewport.z), 0.0, 1.0);\n float a = v_color.a * (inner * u_params.x + (cover - inner));\n outColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\n// GLSL ES 1.0 (WebGL): no gl_VertexID (the corner comes from a per-vertex\n// attribute, location 0), no flat varyings (every vertex of an instance\n// writes the same value, so interpolation keeps it) and the fragment shaders\n// read no uniform: a uniform shared by both stages must have the same\n// precision, and highp is optional in WebGL fragment shaders.\n\nconst GLSL1_VERTEX_COMMON = /* glsl */ `precision highp float;\nuniform vec4 u_xform;\nuniform vec4 u_viewport;\nuniform vec4 u_color;\nuniform vec4 u_params;\nattribute vec2 a_corner;\nbool gap(vec2 p) { return abs(p.x) > 1e37 || abs(p.y) > 1e37; }\nvec2 toClip(vec2 p) { return vec2(p.x * u_xform.x + u_xform.y, p.y * u_xform.z + u_xform.w); }\nvec2 toPx(vec2 p) { return (toClip(p) * 0.5 + 0.5) * u_viewport.xy; }\nvec4 pxToClip(vec2 p) { return vec4(p / u_viewport.xy * 2.0 - 1.0, 0.0, 1.0); }\nconst vec4 HIDDEN = vec4(2.0, 2.0, 2.0, 1.0);\n`;\n\nconst GLSL1_FRAGMENT_COMMON = /* glsl */ `#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n`;\n\nexport const GLSL1_LINE = {\n vertex: /* glsl */ `${GLSL1_VERTEX_COMMON}\nattribute vec2 a_a;\nattribute vec2 a_b;\nvarying vec2 v_local;\nvarying float v_len;\nvarying float v_hw;\nvarying vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_len = 0.0;\n v_hw = u_params.x;\n v_color = u_color;\n if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }\n vec2 pa = toPx(a_a);\n vec2 pb = toPx(a_b);\n vec2 d = pb - pa;\n float len = length(d);\n vec2 dir = len > 1e-6 ? d / len : vec2(1.0, 0.0);\n vec2 nrm = vec2(-dir.y, dir.x);\n float hw = u_params.x + 1.0;\n float along = mix(-hw, len + hw, a_corner.x);\n float across = mix(-hw, hw, a_corner.y);\n gl_Position = pxToClip(pa + dir * along + nrm * across);\n v_local = vec2(along, across);\n v_len = len;\n}`,\n fragment: /* glsl */ `${GLSL1_FRAGMENT_COMMON}\nvarying vec2 v_local;\nvarying float v_len;\nvarying float v_hw;\nvarying vec4 v_color;\nvoid main() {\n float x = clamp(v_local.x, 0.0, v_len);\n float dist = length(vec2(v_local.x - x, v_local.y));\n float a = clamp(v_hw - dist + 0.5, 0.0, 1.0) * v_color.a;\n gl_FragColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL1_AREA = {\n vertex: /* glsl */ `${GLSL1_VERTEX_COMMON}\nattribute vec3 a_a;\nattribute vec3 a_b;\nvarying float v_t;\nvarying vec4 v_color;\nvoid main() {\n v_t = 0.0;\n v_color = vec4(u_color.rgb, u_color.a * u_params.y);\n if (gap(a_a.xy) || gap(a_b.xy) || abs(a_a.z) > 1e37 || abs(a_b.z) > 1e37) { gl_Position = HIDDEN; return; }\n vec3 p = a_corner.y > 0.5 ? a_b : a_a;\n float y = a_corner.x > 0.5 ? p.y : p.z;\n gl_Position = vec4(toClip(vec2(p.x, y)), 0.0, 1.0);\n v_t = a_corner.x;\n}`,\n fragment: /* glsl */ `${GLSL1_FRAGMENT_COMMON}\nvarying float v_t;\nvarying vec4 v_color;\nvoid main() {\n float a = v_color.a * (0.25 + 0.75 * v_t * v_t);\n gl_FragColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL1_BAR = {\n vertex: /* glsl */ `${GLSL1_VERTEX_COMMON}\nattribute vec3 a_inst;\nattribute vec4 a_color;\nvarying vec2 v_local;\nvarying vec2 v_half;\nvarying float v_radius;\nvarying vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_half = vec2(0.0);\n v_radius = u_params.y * u_viewport.z;\n v_color = a_color;\n if (gap(a_inst.xy) || abs(a_inst.z) > 1e37) { gl_Position = HIDDEN; return; }\n float dpr = u_viewport.z;\n float rawHw = abs(u_params.x * u_xform.x) * 0.5 * u_viewport.x;\n vec2 p0 = toPx(a_inst.xy);\n float y1 = toPx(vec2(a_inst.x, a_inst.z)).y;\n float lo = min(p0.y, y1);\n float hi = max(p0.y, y1);\n float fade = clamp((min(rawHw, (hi - lo) * 0.5) - 3.0 * dpr) / (2.0 * dpr), 0.0, 1.0);\n float inset = u_params.z * dpr * fade - (u_params.z > 0.0 ? 0.5 * (1.0 - fade) : 0.0);\n float minHalf = u_params.w * dpr;\n float hw = max(max(rawHw - inset, 0.5), minHalf);\n vec2 hsz = vec2(hw, max((hi - lo) * 0.5 - inset, minHalf));\n vec2 center = vec2(p0.x, (lo + hi) * 0.5);\n vec2 ext = hsz + vec2(1.0);\n vec2 c = a_corner * 2.0 - 1.0;\n gl_Position = pxToClip(center + c * ext);\n v_local = c * ext;\n v_half = hsz;\n}`,\n fragment: /* glsl */ `${GLSL1_FRAGMENT_COMMON}\nvarying vec2 v_local;\nvarying vec2 v_half;\nvarying float v_radius;\nvarying vec4 v_color;\nvoid main() {\n float r = min(v_radius, min(v_half.x, v_half.y));\n vec2 q = abs(v_local) - v_half + vec2(r);\n float d = length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - r;\n float a = clamp(0.5 - d, 0.0, 1.0) * v_color.a;\n gl_FragColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL1_SCATTER = {\n vertex: /* glsl */ `${GLSL1_VERTEX_COMMON}\nattribute vec2 a_pos;\nattribute float a_size;\nattribute vec4 a_color;\nvarying vec2 v_local;\nvarying float v_r;\nvarying vec2 v_style;\nvarying vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_r = 0.0;\n v_style = vec2(u_params.x, u_params.y * u_viewport.z);\n v_color = a_color;\n if (gap(a_pos) || !(a_size > 0.0)) { gl_Position = HIDDEN; return; }\n float r = a_size * 0.5 * u_viewport.z;\n float ext = r + 1.0;\n vec2 c = a_corner * 2.0 - 1.0;\n gl_Position = pxToClip(toPx(a_pos) + c * ext);\n v_local = c * ext;\n v_r = r;\n}`,\n fragment: /* glsl */ `${GLSL1_FRAGMENT_COMMON}\nvarying vec2 v_local;\nvarying float v_r;\nvarying vec2 v_style;\nvarying vec4 v_color;\nvoid main() {\n float d = length(v_local) - v_r;\n float cover = clamp(0.5 - d, 0.0, 1.0);\n float inner = clamp(0.5 - (d + v_style.y), 0.0, 1.0);\n float a = v_color.a * (inner * v_style.x + (cover - inner));\n gl_FragColor = vec4(v_color.rgb * a, a);\n}`,\n};\n"],"mappings":"AAcA,IAAMA,EAAyB;;;;;;;;;;;;;;;;;;;;;;;;;EA2BlBC,EAAuB,GAAGD,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCtCE,EAAuB,GAAGF,EAAY;;;;;;;;;;;;;;;;;;;;;;EAwBtCG,EAAsB,GAAGH,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CrCI,EAA0B,GAAGJ,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BhDK,EAAyB;;;;;;EAQzBC,EAAgC,GAAGD,EAAY;;;;;;;EASxCE,EAAY,CACvB,OAAmB,GAAGD,EAAmB;;;;;;;;;;;;;;;;;;;;;;GAuBzC,SAAqB,GAAGD,EAAY;;;;;;;;;EAUtC,EAEaG,EAAY,CACvB,OAAmB,GAAGF,EAAmB;;;;;;;;;;;;GAazC,SAAqB,GAAGD,EAAY;;;;;;EAOtC,EAEaI,EAAW,CACtB,OAAmB,GAAGH,EAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BzC,SAAqB,GAAGD,EAAY;;;;;;;;;;;EAYtC,EAEaK,EAAe,CAC1B,OAAmB,GAAGJ,EAAmB;;;;;;;;;;;;;;;;;;GAmBzC,SAAqB,GAAGD,EAAY;;;;;;;;;;;EAYtC,EAQMM,EAAiC;;;;;;;;;;;EAajCC,EAAmC;;;;;EAO5BC,EAAa,CACxB,OAAmB,GAAGF,EAAoB;;;;;;;;;;;;;;;;;;;;;;;;;GA0B1C,SAAqB,GAAGC,EAAsB;;;;;;;;;;EAWhD,EAEaE,EAAa,CACxB,OAAmB,GAAGH,EAAoB;;;;;;;;;;;;;GAc1C,SAAqB,GAAGC,EAAsB;;;;;;EAOhD,EAEaG,EAAY,CACvB,OAAmB,GAAGJ,EAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+B1C,SAAqB,GAAGC,EAAsB;;;;;;;;;;;EAYhD,EAEaI,EAAgB,CAC3B,OAAmB,GAAGL,EAAoB;;;;;;;;;;;;;;;;;;;;GAqB1C,SAAqB,GAAGC,EAAsB;;;;;;;;;;;EAYhD"}
@@ -18,3 +18,19 @@ export declare const GLSL_SCATTER: {
18
18
  vertex: string;
19
19
  fragment: string;
20
20
  };
21
+ export declare const GLSL1_LINE: {
22
+ vertex: string;
23
+ fragment: string;
24
+ };
25
+ export declare const GLSL1_AREA: {
26
+ vertex: string;
27
+ fragment: string;
28
+ };
29
+ export declare const GLSL1_BAR: {
30
+ vertex: string;
31
+ fragment: string;
32
+ };
33
+ export declare const GLSL1_SCATTER: {
34
+ vertex: string;
35
+ fragment: string;
36
+ };
@@ -18,3 +18,19 @@ export declare const GLSL_SCATTER: {
18
18
  vertex: string;
19
19
  fragment: string;
20
20
  };
21
+ export declare const GLSL1_LINE: {
22
+ vertex: string;
23
+ fragment: string;
24
+ };
25
+ export declare const GLSL1_AREA: {
26
+ vertex: string;
27
+ fragment: string;
28
+ };
29
+ export declare const GLSL1_BAR: {
30
+ vertex: string;
31
+ fragment: string;
32
+ };
33
+ export declare const GLSL1_SCATTER: {
34
+ vertex: string;
35
+ fragment: string;
36
+ };
@@ -262,8 +262,146 @@ void main() {
262
262
  float a = v_color.a * (inner * u_params.x + (cover - inner));
263
263
  outColor = vec4(v_color.rgb * a, a);
264
264
  }`
265
+ }, d = "precision highp float;\nuniform vec4 u_xform;\nuniform vec4 u_viewport;\nuniform vec4 u_color;\nuniform vec4 u_params;\nattribute vec2 a_corner;\nbool gap(vec2 p) { return abs(p.x) > 1e37 || abs(p.y) > 1e37; }\nvec2 toClip(vec2 p) { return vec2(p.x * u_xform.x + u_xform.y, p.y * u_xform.z + u_xform.w); }\nvec2 toPx(vec2 p) { return (toClip(p) * 0.5 + 0.5) * u_viewport.xy; }\nvec4 pxToClip(vec2 p) { return vec4(p / u_viewport.xy * 2.0 - 1.0, 0.0, 1.0); }\nconst vec4 HIDDEN = vec4(2.0, 2.0, 2.0, 1.0);\n", f = "#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n", p = {
266
+ vertex: `${d}
267
+ attribute vec2 a_a;
268
+ attribute vec2 a_b;
269
+ varying vec2 v_local;
270
+ varying float v_len;
271
+ varying float v_hw;
272
+ varying vec4 v_color;
273
+ void main() {
274
+ v_local = vec2(0.0);
275
+ v_len = 0.0;
276
+ v_hw = u_params.x;
277
+ v_color = u_color;
278
+ if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }
279
+ vec2 pa = toPx(a_a);
280
+ vec2 pb = toPx(a_b);
281
+ vec2 d = pb - pa;
282
+ float len = length(d);
283
+ vec2 dir = len > 1e-6 ? d / len : vec2(1.0, 0.0);
284
+ vec2 nrm = vec2(-dir.y, dir.x);
285
+ float hw = u_params.x + 1.0;
286
+ float along = mix(-hw, len + hw, a_corner.x);
287
+ float across = mix(-hw, hw, a_corner.y);
288
+ gl_Position = pxToClip(pa + dir * along + nrm * across);
289
+ v_local = vec2(along, across);
290
+ v_len = len;
291
+ }`,
292
+ fragment: `${f}
293
+ varying vec2 v_local;
294
+ varying float v_len;
295
+ varying float v_hw;
296
+ varying vec4 v_color;
297
+ void main() {
298
+ float x = clamp(v_local.x, 0.0, v_len);
299
+ float dist = length(vec2(v_local.x - x, v_local.y));
300
+ float a = clamp(v_hw - dist + 0.5, 0.0, 1.0) * v_color.a;
301
+ gl_FragColor = vec4(v_color.rgb * a, a);
302
+ }`
303
+ }, m = {
304
+ vertex: `${d}
305
+ attribute vec3 a_a;
306
+ attribute vec3 a_b;
307
+ varying float v_t;
308
+ varying vec4 v_color;
309
+ void main() {
310
+ v_t = 0.0;
311
+ v_color = vec4(u_color.rgb, u_color.a * u_params.y);
312
+ if (gap(a_a.xy) || gap(a_b.xy) || abs(a_a.z) > 1e37 || abs(a_b.z) > 1e37) { gl_Position = HIDDEN; return; }
313
+ vec3 p = a_corner.y > 0.5 ? a_b : a_a;
314
+ float y = a_corner.x > 0.5 ? p.y : p.z;
315
+ gl_Position = vec4(toClip(vec2(p.x, y)), 0.0, 1.0);
316
+ v_t = a_corner.x;
317
+ }`,
318
+ fragment: `${f}
319
+ varying float v_t;
320
+ varying vec4 v_color;
321
+ void main() {
322
+ float a = v_color.a * (0.25 + 0.75 * v_t * v_t);
323
+ gl_FragColor = vec4(v_color.rgb * a, a);
324
+ }`
325
+ }, h = {
326
+ vertex: `${d}
327
+ attribute vec3 a_inst;
328
+ attribute vec4 a_color;
329
+ varying vec2 v_local;
330
+ varying vec2 v_half;
331
+ varying float v_radius;
332
+ varying vec4 v_color;
333
+ void main() {
334
+ v_local = vec2(0.0);
335
+ v_half = vec2(0.0);
336
+ v_radius = u_params.y * u_viewport.z;
337
+ v_color = a_color;
338
+ if (gap(a_inst.xy) || abs(a_inst.z) > 1e37) { gl_Position = HIDDEN; return; }
339
+ float dpr = u_viewport.z;
340
+ float rawHw = abs(u_params.x * u_xform.x) * 0.5 * u_viewport.x;
341
+ vec2 p0 = toPx(a_inst.xy);
342
+ float y1 = toPx(vec2(a_inst.x, a_inst.z)).y;
343
+ float lo = min(p0.y, y1);
344
+ float hi = max(p0.y, y1);
345
+ float fade = clamp((min(rawHw, (hi - lo) * 0.5) - 3.0 * dpr) / (2.0 * dpr), 0.0, 1.0);
346
+ float inset = u_params.z * dpr * fade - (u_params.z > 0.0 ? 0.5 * (1.0 - fade) : 0.0);
347
+ float minHalf = u_params.w * dpr;
348
+ float hw = max(max(rawHw - inset, 0.5), minHalf);
349
+ vec2 hsz = vec2(hw, max((hi - lo) * 0.5 - inset, minHalf));
350
+ vec2 center = vec2(p0.x, (lo + hi) * 0.5);
351
+ vec2 ext = hsz + vec2(1.0);
352
+ vec2 c = a_corner * 2.0 - 1.0;
353
+ gl_Position = pxToClip(center + c * ext);
354
+ v_local = c * ext;
355
+ v_half = hsz;
356
+ }`,
357
+ fragment: `${f}
358
+ varying vec2 v_local;
359
+ varying vec2 v_half;
360
+ varying float v_radius;
361
+ varying vec4 v_color;
362
+ void main() {
363
+ float r = min(v_radius, min(v_half.x, v_half.y));
364
+ vec2 q = abs(v_local) - v_half + vec2(r);
365
+ float d = length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - r;
366
+ float a = clamp(0.5 - d, 0.0, 1.0) * v_color.a;
367
+ gl_FragColor = vec4(v_color.rgb * a, a);
368
+ }`
369
+ }, g = {
370
+ vertex: `${d}
371
+ attribute vec2 a_pos;
372
+ attribute float a_size;
373
+ attribute vec4 a_color;
374
+ varying vec2 v_local;
375
+ varying float v_r;
376
+ varying vec2 v_style;
377
+ varying vec4 v_color;
378
+ void main() {
379
+ v_local = vec2(0.0);
380
+ v_r = 0.0;
381
+ v_style = vec2(u_params.x, u_params.y * u_viewport.z);
382
+ v_color = a_color;
383
+ if (gap(a_pos) || !(a_size > 0.0)) { gl_Position = HIDDEN; return; }
384
+ float r = a_size * 0.5 * u_viewport.z;
385
+ float ext = r + 1.0;
386
+ vec2 c = a_corner * 2.0 - 1.0;
387
+ gl_Position = pxToClip(toPx(a_pos) + c * ext);
388
+ v_local = c * ext;
389
+ v_r = r;
390
+ }`,
391
+ fragment: `${f}
392
+ varying vec2 v_local;
393
+ varying float v_r;
394
+ varying vec2 v_style;
395
+ varying vec4 v_color;
396
+ void main() {
397
+ float d = length(v_local) - v_r;
398
+ float cover = clamp(0.5 - d, 0.0, 1.0);
399
+ float inner = clamp(0.5 - (d + v_style.y), 0.0, 1.0);
400
+ float a = v_color.a * (inner * v_style.x + (cover - inner));
401
+ gl_FragColor = vec4(v_color.rgb * a, a);
402
+ }`
265
403
  };
266
404
  //#endregion
267
- export { c as GLSL_AREA, l as GLSL_BAR, s as GLSL_LINE, u as GLSL_SCATTER, n as WGSL_AREA, r as WGSL_BAR, t as WGSL_LINE, i as WGSL_SCATTER };
405
+ export { m as GLSL1_AREA, h as GLSL1_BAR, p as GLSL1_LINE, g as GLSL1_SCATTER, c as GLSL_AREA, l as GLSL_BAR, s as GLSL_LINE, u as GLSL_SCATTER, n as WGSL_AREA, r as WGSL_BAR, t as WGSL_LINE, i as WGSL_SCATTER };
268
406
 
269
407
  //# sourceMappingURL=shaders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shaders.js","names":["WGSL_COMMON","WGSL_LINE","WGSL_AREA","WGSL_BAR","WGSL_SCATTER","GLSL_HEADER","GLSL_VERTEX_COMMON","GLSL_LINE","GLSL_AREA","GLSL_BAR","GLSL_SCATTER"],"sources":["../../../../../charts/src/engine/renderers/shaders.ts"],"sourcesContent":["// WGSL (WebGPU) and GLSL ES 3.0 (WebGL2) programs. Every primitive is an\n// instanced 4-vertex triangle strip; anti-aliasing comes from signed\n// distance functions in pixel space (no MSAA needed).\n//\n// Uniforms (both backends):\n// xform = (xScale, xOffset, yScale, yOffset) relative data -> clip\n// viewport = (width px, height px, dpr, 0)\n// color = straight RGBA of the series\n// params = line: (half width px) | area: (_, opacity)\n// bar: (half width in x units, radius px, inset px, min half px)\n// scatter: (opacity, stroke px)\n// Bars and scatter dots carry their own color (unorm8x4 per instance).\n// Output colors are premultiplied.\n\nconst WGSL_COMMON = /* wgsl */ `\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const WGSL_LINE = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) len: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let pa = toPx(a);\n let pb = toPx(b);\n let d = pb - pa;\n let len = length(d);\n var dir = vec2f(1.0, 0.0);\n if (len > 1e-6) { dir = d / len; }\n let nrm = vec2f(-dir.y, dir.x);\n let hw = u.params.x + 1.0;\n let c = corner(vi);\n let along = mix(-hw, len + hw, c.x);\n let across = mix(-hw, hw, c.y);\n out.pos = pxToClip(pa + dir * along + nrm * across);\n out.local = vec2f(along, across);\n out.len = len;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let x = clamp(v.local.x, 0.0, v.len);\n let dist = length(vec2f(v.local.x - x, v.local.y));\n let a = clamp(u.params.x - dist + 0.5, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_AREA = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) t: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec3f, @location(1) b: vec3f) -> Out {\n var out: Out;\n if (gap(a.xy) || gap(b.xy) || abs(a.z) > 1e37 || abs(b.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let c = corner(vi);\n let p = select(a, b, c.y > 0.5);\n let y = select(p.z, p.y, c.x > 0.5);\n out.pos = vec4f(toClip(vec2f(p.x, y)), 0.0, 1.0);\n out.t = c.x;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let a = u.color.a * u.params.y * (0.25 + 0.75 * v.t * v.t);\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_BAR = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) hs: vec2f,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) inst: vec3f, @location(1) color: vec4f) -> Out {\n var out: Out;\n if (gap(inst.xy) || abs(inst.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let dpr = u.viewport.z;\n let rawHw = abs(u.params.x * u.xform.x) * 0.5 * u.viewport.x;\n let p0 = toPx(inst.xy);\n let y1 = toPx(vec2f(inst.x, inst.z)).y;\n let lo = min(p0.y, y1);\n let hi = max(p0.y, y1);\n // the gap between cells fades out on small cells (dense heatmaps stay\n // solid); without a gap, cells overlap by a pixel so no seam shows\n let fade = clamp((min(rawHw, (hi - lo) * 0.5) - 3.0 * dpr) / (2.0 * dpr), 0.0, 1.0);\n let inset = u.params.z * dpr * fade - select(0.0, 0.5 * (1.0 - fade), u.params.z > 0.0);\n let minHalf = u.params.w * dpr;\n let hw = max(max(rawHw - inset, 0.5), minHalf);\n let hsz = vec2f(hw, max((hi - lo) * 0.5 - inset, minHalf));\n let center = vec2f(p0.x, (lo + hi) * 0.5);\n let ext = hsz + vec2f(1.0);\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(center + c * ext);\n out.local = c * ext;\n out.hs = hsz;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let r = min(u.params.y * u.viewport.z, min(v.hs.x, v.hs.y));\n let q = abs(v.local) - v.hs + vec2f(r);\n let d = length(max(q, vec2f(0.0))) + min(max(q.x, q.y), 0.0) - r;\n let a = clamp(0.5 - d, 0.0, 1.0) * v.color.a;\n return vec4f(v.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_SCATTER = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) r: f32,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) p: vec2f, @location(1) size: f32, @location(2) color: vec4f) -> Out {\n var out: Out;\n if (gap(p) || !(size > 0.0)) {\n out.pos = HIDDEN;\n return out;\n }\n let r = size * 0.5 * u.viewport.z;\n let ext = r + 1.0;\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(toPx(p) + c * ext);\n out.local = c * ext;\n out.r = r;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let d = length(v.local) - v.r;\n let cover = clamp(0.5 - d, 0.0, 1.0);\n let inner = clamp(0.5 - (d + u.params.y * u.viewport.z), 0.0, 1.0);\n let a = v.color.a * (inner * u.params.x + (cover - inner));\n return vec4f(v.color.rgb * a, a);\n}\n`;\n\nconst GLSL_HEADER = /* glsl */ `#version 300 es\nprecision highp float;\nuniform vec4 u_xform;\nuniform vec4 u_viewport;\nuniform vec4 u_color;\nuniform vec4 u_params;\n`;\n\nconst GLSL_VERTEX_COMMON = /* glsl */ `${GLSL_HEADER}\nbool gap(vec2 p) { return abs(p.x) > 1e37 || abs(p.y) > 1e37; }\nvec2 toClip(vec2 p) { return vec2(p.x * u_xform.x + u_xform.y, p.y * u_xform.z + u_xform.w); }\nvec2 toPx(vec2 p) { return (toClip(p) * 0.5 + 0.5) * u_viewport.xy; }\nvec4 pxToClip(vec2 p) { return vec4(p / u_viewport.xy * 2.0 - 1.0, 0.0, 1.0); }\nvec2 corner() { return vec2(float(gl_VertexID & 1), float(gl_VertexID >> 1)); }\nconst vec4 HIDDEN = vec4(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const GLSL_LINE = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_a;\nin vec2 a_b;\nout vec2 v_local;\nout float v_len;\nvoid main() {\n v_local = vec2(0.0);\n v_len = 0.0;\n if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }\n vec2 pa = toPx(a_a);\n vec2 pb = toPx(a_b);\n vec2 d = pb - pa;\n float len = length(d);\n vec2 dir = len > 1e-6 ? d / len : vec2(1.0, 0.0);\n vec2 nrm = vec2(-dir.y, dir.x);\n float hw = u_params.x + 1.0;\n vec2 c = corner();\n float along = mix(-hw, len + hw, c.x);\n float across = mix(-hw, hw, c.y);\n gl_Position = pxToClip(pa + dir * along + nrm * across);\n v_local = vec2(along, across);\n v_len = len;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nin float v_len;\nout vec4 outColor;\nvoid main() {\n float x = clamp(v_local.x, 0.0, v_len);\n float dist = length(vec2(v_local.x - x, v_local.y));\n float a = clamp(u_params.x - dist + 0.5, 0.0, 1.0) * u_color.a;\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_AREA = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec3 a_a;\nin vec3 a_b;\nout float v_t;\nvoid main() {\n v_t = 0.0;\n if (gap(a_a.xy) || gap(a_b.xy) || abs(a_a.z) > 1e37 || abs(a_b.z) > 1e37) { gl_Position = HIDDEN; return; }\n vec2 c = corner();\n vec3 p = c.y > 0.5 ? a_b : a_a;\n float y = c.x > 0.5 ? p.y : p.z;\n gl_Position = vec4(toClip(vec2(p.x, y)), 0.0, 1.0);\n v_t = c.x;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin float v_t;\nout vec4 outColor;\nvoid main() {\n float a = u_color.a * u_params.y * (0.25 + 0.75 * v_t * v_t);\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_BAR = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec3 a_inst;\nin vec4 a_color;\nout vec2 v_local;\nflat out vec2 v_half;\nflat out vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_half = vec2(0.0);\n v_color = a_color;\n if (gap(a_inst.xy) || abs(a_inst.z) > 1e37) { gl_Position = HIDDEN; return; }\n float dpr = u_viewport.z;\n float rawHw = abs(u_params.x * u_xform.x) * 0.5 * u_viewport.x;\n vec2 p0 = toPx(a_inst.xy);\n float y1 = toPx(vec2(a_inst.x, a_inst.z)).y;\n float lo = min(p0.y, y1);\n float hi = max(p0.y, y1);\n float fade = clamp((min(rawHw, (hi - lo) * 0.5) - 3.0 * dpr) / (2.0 * dpr), 0.0, 1.0);\n float inset = u_params.z * dpr * fade - (u_params.z > 0.0 ? 0.5 * (1.0 - fade) : 0.0);\n float minHalf = u_params.w * dpr;\n float hw = max(max(rawHw - inset, 0.5), minHalf);\n vec2 hsz = vec2(hw, max((hi - lo) * 0.5 - inset, minHalf));\n vec2 center = vec2(p0.x, (lo + hi) * 0.5);\n vec2 ext = hsz + vec2(1.0);\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(center + c * ext);\n v_local = c * ext;\n v_half = hsz;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in vec2 v_half;\nflat in vec4 v_color;\nout vec4 outColor;\nvoid main() {\n float r = min(u_params.y * u_viewport.z, min(v_half.x, v_half.y));\n vec2 q = abs(v_local) - v_half + vec2(r);\n float d = length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - r;\n float a = clamp(0.5 - d, 0.0, 1.0) * v_color.a;\n outColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_SCATTER = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_pos;\nin float a_size;\nin vec4 a_color;\nout vec2 v_local;\nflat out float v_r;\nflat out vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_r = 0.0;\n v_color = a_color;\n if (gap(a_pos) || !(a_size > 0.0)) { gl_Position = HIDDEN; return; }\n float r = a_size * 0.5 * u_viewport.z;\n float ext = r + 1.0;\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(toPx(a_pos) + c * ext);\n v_local = c * ext;\n v_r = r;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in float v_r;\nflat in vec4 v_color;\nout vec4 outColor;\nvoid main() {\n float d = length(v_local) - v_r;\n float cover = clamp(0.5 - d, 0.0, 1.0);\n float inner = clamp(0.5 - (d + u_params.y * u_viewport.z), 0.0, 1.0);\n float a = v_color.a * (inner * u_params.x + (cover - inner));\n outColor = vec4(v_color.rgb * a, a);\n}`,\n};\n"],"mappings":";AAcA,IAAMA,IAAyB,mnBA2BlBC,IAAuB,GAAGD,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCtCE,IAAuB,GAAGF,EAAY;;;;;;;;;;;;;;;;;;;;;;GAwBtCG,IAAsB,GAAGH,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CrCI,IAA0B,GAAGJ,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BhDK,IAAyB,6IAQzBC,IAAgC,GAAGD,EAAY;;;;;;;GASxCE,IAAY;CACvB,QAAmB,GAAGD,EAAmB;;;;;;;;;;;;;;;;;;;;;;;CAuBzC,UAAqB,GAAGD,EAAY;;;;;;;;;;AAUtC,GAEaG,IAAY;CACvB,QAAmB,GAAGF,EAAmB;;;;;;;;;;;;;CAazC,UAAqB,GAAGD,EAAY;;;;;;;AAOtC,GAEaI,IAAW;CACtB,QAAmB,GAAGH,EAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BzC,UAAqB,GAAGD,EAAY;;;;;;;;;;;;AAYtC,GAEaK,IAAe;CAC1B,QAAmB,GAAGJ,EAAmB;;;;;;;;;;;;;;;;;;;CAmBzC,UAAqB,GAAGD,EAAY;;;;;;;;;;;;AAYtC"}
1
+ {"version":3,"file":"shaders.js","names":["WGSL_COMMON","WGSL_LINE","WGSL_AREA","WGSL_BAR","WGSL_SCATTER","GLSL_HEADER","GLSL_VERTEX_COMMON","GLSL_LINE","GLSL_AREA","GLSL_BAR","GLSL_SCATTER","GLSL1_VERTEX_COMMON","GLSL1_FRAGMENT_COMMON","GLSL1_LINE","GLSL1_AREA","GLSL1_BAR","GLSL1_SCATTER"],"sources":["../../../../../charts/src/engine/renderers/shaders.ts"],"sourcesContent":["// WGSL (WebGPU), GLSL ES 3.0 (WebGL2) and GLSL ES 1.0 (WebGL) programs.\n// Every primitive is an instanced 4-vertex triangle strip; anti-aliasing\n// comes from signed distance functions in pixel space (no MSAA needed).\n//\n// Uniforms (all backends):\n// xform = (xScale, xOffset, yScale, yOffset) relative data -> clip\n// viewport = (width px, height px, dpr, 0)\n// color = straight RGBA of the series\n// params = line: (half width px) | area: (_, opacity)\n// bar: (half width in x units, radius px, inset px, min half px)\n// scatter: (opacity, stroke px)\n// Bars and scatter dots carry their own color (unorm8x4 per instance).\n// Output colors are premultiplied.\n\nconst WGSL_COMMON = /* wgsl */ `\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const WGSL_LINE = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) len: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let pa = toPx(a);\n let pb = toPx(b);\n let d = pb - pa;\n let len = length(d);\n var dir = vec2f(1.0, 0.0);\n if (len > 1e-6) { dir = d / len; }\n let nrm = vec2f(-dir.y, dir.x);\n let hw = u.params.x + 1.0;\n let c = corner(vi);\n let along = mix(-hw, len + hw, c.x);\n let across = mix(-hw, hw, c.y);\n out.pos = pxToClip(pa + dir * along + nrm * across);\n out.local = vec2f(along, across);\n out.len = len;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let x = clamp(v.local.x, 0.0, v.len);\n let dist = length(vec2f(v.local.x - x, v.local.y));\n let a = clamp(u.params.x - dist + 0.5, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_AREA = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) t: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec3f, @location(1) b: vec3f) -> Out {\n var out: Out;\n if (gap(a.xy) || gap(b.xy) || abs(a.z) > 1e37 || abs(b.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let c = corner(vi);\n let p = select(a, b, c.y > 0.5);\n let y = select(p.z, p.y, c.x > 0.5);\n out.pos = vec4f(toClip(vec2f(p.x, y)), 0.0, 1.0);\n out.t = c.x;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let a = u.color.a * u.params.y * (0.25 + 0.75 * v.t * v.t);\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_BAR = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) hs: vec2f,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) inst: vec3f, @location(1) color: vec4f) -> Out {\n var out: Out;\n if (gap(inst.xy) || abs(inst.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let dpr = u.viewport.z;\n let rawHw = abs(u.params.x * u.xform.x) * 0.5 * u.viewport.x;\n let p0 = toPx(inst.xy);\n let y1 = toPx(vec2f(inst.x, inst.z)).y;\n let lo = min(p0.y, y1);\n let hi = max(p0.y, y1);\n // the gap between cells fades out on small cells (dense heatmaps stay\n // solid); without a gap, cells overlap by a pixel so no seam shows\n let fade = clamp((min(rawHw, (hi - lo) * 0.5) - 3.0 * dpr) / (2.0 * dpr), 0.0, 1.0);\n let inset = u.params.z * dpr * fade - select(0.0, 0.5 * (1.0 - fade), u.params.z > 0.0);\n let minHalf = u.params.w * dpr;\n let hw = max(max(rawHw - inset, 0.5), minHalf);\n let hsz = vec2f(hw, max((hi - lo) * 0.5 - inset, minHalf));\n let center = vec2f(p0.x, (lo + hi) * 0.5);\n let ext = hsz + vec2f(1.0);\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(center + c * ext);\n out.local = c * ext;\n out.hs = hsz;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let r = min(u.params.y * u.viewport.z, min(v.hs.x, v.hs.y));\n let q = abs(v.local) - v.hs + vec2f(r);\n let d = length(max(q, vec2f(0.0))) + min(max(q.x, q.y), 0.0) - r;\n let a = clamp(0.5 - d, 0.0, 1.0) * v.color.a;\n return vec4f(v.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_SCATTER = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) r: f32,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) p: vec2f, @location(1) size: f32, @location(2) color: vec4f) -> Out {\n var out: Out;\n if (gap(p) || !(size > 0.0)) {\n out.pos = HIDDEN;\n return out;\n }\n let r = size * 0.5 * u.viewport.z;\n let ext = r + 1.0;\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(toPx(p) + c * ext);\n out.local = c * ext;\n out.r = r;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let d = length(v.local) - v.r;\n let cover = clamp(0.5 - d, 0.0, 1.0);\n let inner = clamp(0.5 - (d + u.params.y * u.viewport.z), 0.0, 1.0);\n let a = v.color.a * (inner * u.params.x + (cover - inner));\n return vec4f(v.color.rgb * a, a);\n}\n`;\n\nconst GLSL_HEADER = /* glsl */ `#version 300 es\nprecision highp float;\nuniform vec4 u_xform;\nuniform vec4 u_viewport;\nuniform vec4 u_color;\nuniform vec4 u_params;\n`;\n\nconst GLSL_VERTEX_COMMON = /* glsl */ `${GLSL_HEADER}\nbool gap(vec2 p) { return abs(p.x) > 1e37 || abs(p.y) > 1e37; }\nvec2 toClip(vec2 p) { return vec2(p.x * u_xform.x + u_xform.y, p.y * u_xform.z + u_xform.w); }\nvec2 toPx(vec2 p) { return (toClip(p) * 0.5 + 0.5) * u_viewport.xy; }\nvec4 pxToClip(vec2 p) { return vec4(p / u_viewport.xy * 2.0 - 1.0, 0.0, 1.0); }\nvec2 corner() { return vec2(float(gl_VertexID & 1), float(gl_VertexID >> 1)); }\nconst vec4 HIDDEN = vec4(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const GLSL_LINE = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_a;\nin vec2 a_b;\nout vec2 v_local;\nout float v_len;\nvoid main() {\n v_local = vec2(0.0);\n v_len = 0.0;\n if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }\n vec2 pa = toPx(a_a);\n vec2 pb = toPx(a_b);\n vec2 d = pb - pa;\n float len = length(d);\n vec2 dir = len > 1e-6 ? d / len : vec2(1.0, 0.0);\n vec2 nrm = vec2(-dir.y, dir.x);\n float hw = u_params.x + 1.0;\n vec2 c = corner();\n float along = mix(-hw, len + hw, c.x);\n float across = mix(-hw, hw, c.y);\n gl_Position = pxToClip(pa + dir * along + nrm * across);\n v_local = vec2(along, across);\n v_len = len;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nin float v_len;\nout vec4 outColor;\nvoid main() {\n float x = clamp(v_local.x, 0.0, v_len);\n float dist = length(vec2(v_local.x - x, v_local.y));\n float a = clamp(u_params.x - dist + 0.5, 0.0, 1.0) * u_color.a;\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_AREA = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec3 a_a;\nin vec3 a_b;\nout float v_t;\nvoid main() {\n v_t = 0.0;\n if (gap(a_a.xy) || gap(a_b.xy) || abs(a_a.z) > 1e37 || abs(a_b.z) > 1e37) { gl_Position = HIDDEN; return; }\n vec2 c = corner();\n vec3 p = c.y > 0.5 ? a_b : a_a;\n float y = c.x > 0.5 ? p.y : p.z;\n gl_Position = vec4(toClip(vec2(p.x, y)), 0.0, 1.0);\n v_t = c.x;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin float v_t;\nout vec4 outColor;\nvoid main() {\n float a = u_color.a * u_params.y * (0.25 + 0.75 * v_t * v_t);\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_BAR = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec3 a_inst;\nin vec4 a_color;\nout vec2 v_local;\nflat out vec2 v_half;\nflat out vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_half = vec2(0.0);\n v_color = a_color;\n if (gap(a_inst.xy) || abs(a_inst.z) > 1e37) { gl_Position = HIDDEN; return; }\n float dpr = u_viewport.z;\n float rawHw = abs(u_params.x * u_xform.x) * 0.5 * u_viewport.x;\n vec2 p0 = toPx(a_inst.xy);\n float y1 = toPx(vec2(a_inst.x, a_inst.z)).y;\n float lo = min(p0.y, y1);\n float hi = max(p0.y, y1);\n float fade = clamp((min(rawHw, (hi - lo) * 0.5) - 3.0 * dpr) / (2.0 * dpr), 0.0, 1.0);\n float inset = u_params.z * dpr * fade - (u_params.z > 0.0 ? 0.5 * (1.0 - fade) : 0.0);\n float minHalf = u_params.w * dpr;\n float hw = max(max(rawHw - inset, 0.5), minHalf);\n vec2 hsz = vec2(hw, max((hi - lo) * 0.5 - inset, minHalf));\n vec2 center = vec2(p0.x, (lo + hi) * 0.5);\n vec2 ext = hsz + vec2(1.0);\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(center + c * ext);\n v_local = c * ext;\n v_half = hsz;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in vec2 v_half;\nflat in vec4 v_color;\nout vec4 outColor;\nvoid main() {\n float r = min(u_params.y * u_viewport.z, min(v_half.x, v_half.y));\n vec2 q = abs(v_local) - v_half + vec2(r);\n float d = length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - r;\n float a = clamp(0.5 - d, 0.0, 1.0) * v_color.a;\n outColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_SCATTER = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_pos;\nin float a_size;\nin vec4 a_color;\nout vec2 v_local;\nflat out float v_r;\nflat out vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_r = 0.0;\n v_color = a_color;\n if (gap(a_pos) || !(a_size > 0.0)) { gl_Position = HIDDEN; return; }\n float r = a_size * 0.5 * u_viewport.z;\n float ext = r + 1.0;\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(toPx(a_pos) + c * ext);\n v_local = c * ext;\n v_r = r;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in float v_r;\nflat in vec4 v_color;\nout vec4 outColor;\nvoid main() {\n float d = length(v_local) - v_r;\n float cover = clamp(0.5 - d, 0.0, 1.0);\n float inner = clamp(0.5 - (d + u_params.y * u_viewport.z), 0.0, 1.0);\n float a = v_color.a * (inner * u_params.x + (cover - inner));\n outColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\n// GLSL ES 1.0 (WebGL): no gl_VertexID (the corner comes from a per-vertex\n// attribute, location 0), no flat varyings (every vertex of an instance\n// writes the same value, so interpolation keeps it) and the fragment shaders\n// read no uniform: a uniform shared by both stages must have the same\n// precision, and highp is optional in WebGL fragment shaders.\n\nconst GLSL1_VERTEX_COMMON = /* glsl */ `precision highp float;\nuniform vec4 u_xform;\nuniform vec4 u_viewport;\nuniform vec4 u_color;\nuniform vec4 u_params;\nattribute vec2 a_corner;\nbool gap(vec2 p) { return abs(p.x) > 1e37 || abs(p.y) > 1e37; }\nvec2 toClip(vec2 p) { return vec2(p.x * u_xform.x + u_xform.y, p.y * u_xform.z + u_xform.w); }\nvec2 toPx(vec2 p) { return (toClip(p) * 0.5 + 0.5) * u_viewport.xy; }\nvec4 pxToClip(vec2 p) { return vec4(p / u_viewport.xy * 2.0 - 1.0, 0.0, 1.0); }\nconst vec4 HIDDEN = vec4(2.0, 2.0, 2.0, 1.0);\n`;\n\nconst GLSL1_FRAGMENT_COMMON = /* glsl */ `#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n`;\n\nexport const GLSL1_LINE = {\n vertex: /* glsl */ `${GLSL1_VERTEX_COMMON}\nattribute vec2 a_a;\nattribute vec2 a_b;\nvarying vec2 v_local;\nvarying float v_len;\nvarying float v_hw;\nvarying vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_len = 0.0;\n v_hw = u_params.x;\n v_color = u_color;\n if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }\n vec2 pa = toPx(a_a);\n vec2 pb = toPx(a_b);\n vec2 d = pb - pa;\n float len = length(d);\n vec2 dir = len > 1e-6 ? d / len : vec2(1.0, 0.0);\n vec2 nrm = vec2(-dir.y, dir.x);\n float hw = u_params.x + 1.0;\n float along = mix(-hw, len + hw, a_corner.x);\n float across = mix(-hw, hw, a_corner.y);\n gl_Position = pxToClip(pa + dir * along + nrm * across);\n v_local = vec2(along, across);\n v_len = len;\n}`,\n fragment: /* glsl */ `${GLSL1_FRAGMENT_COMMON}\nvarying vec2 v_local;\nvarying float v_len;\nvarying float v_hw;\nvarying vec4 v_color;\nvoid main() {\n float x = clamp(v_local.x, 0.0, v_len);\n float dist = length(vec2(v_local.x - x, v_local.y));\n float a = clamp(v_hw - dist + 0.5, 0.0, 1.0) * v_color.a;\n gl_FragColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL1_AREA = {\n vertex: /* glsl */ `${GLSL1_VERTEX_COMMON}\nattribute vec3 a_a;\nattribute vec3 a_b;\nvarying float v_t;\nvarying vec4 v_color;\nvoid main() {\n v_t = 0.0;\n v_color = vec4(u_color.rgb, u_color.a * u_params.y);\n if (gap(a_a.xy) || gap(a_b.xy) || abs(a_a.z) > 1e37 || abs(a_b.z) > 1e37) { gl_Position = HIDDEN; return; }\n vec3 p = a_corner.y > 0.5 ? a_b : a_a;\n float y = a_corner.x > 0.5 ? p.y : p.z;\n gl_Position = vec4(toClip(vec2(p.x, y)), 0.0, 1.0);\n v_t = a_corner.x;\n}`,\n fragment: /* glsl */ `${GLSL1_FRAGMENT_COMMON}\nvarying float v_t;\nvarying vec4 v_color;\nvoid main() {\n float a = v_color.a * (0.25 + 0.75 * v_t * v_t);\n gl_FragColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL1_BAR = {\n vertex: /* glsl */ `${GLSL1_VERTEX_COMMON}\nattribute vec3 a_inst;\nattribute vec4 a_color;\nvarying vec2 v_local;\nvarying vec2 v_half;\nvarying float v_radius;\nvarying vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_half = vec2(0.0);\n v_radius = u_params.y * u_viewport.z;\n v_color = a_color;\n if (gap(a_inst.xy) || abs(a_inst.z) > 1e37) { gl_Position = HIDDEN; return; }\n float dpr = u_viewport.z;\n float rawHw = abs(u_params.x * u_xform.x) * 0.5 * u_viewport.x;\n vec2 p0 = toPx(a_inst.xy);\n float y1 = toPx(vec2(a_inst.x, a_inst.z)).y;\n float lo = min(p0.y, y1);\n float hi = max(p0.y, y1);\n float fade = clamp((min(rawHw, (hi - lo) * 0.5) - 3.0 * dpr) / (2.0 * dpr), 0.0, 1.0);\n float inset = u_params.z * dpr * fade - (u_params.z > 0.0 ? 0.5 * (1.0 - fade) : 0.0);\n float minHalf = u_params.w * dpr;\n float hw = max(max(rawHw - inset, 0.5), minHalf);\n vec2 hsz = vec2(hw, max((hi - lo) * 0.5 - inset, minHalf));\n vec2 center = vec2(p0.x, (lo + hi) * 0.5);\n vec2 ext = hsz + vec2(1.0);\n vec2 c = a_corner * 2.0 - 1.0;\n gl_Position = pxToClip(center + c * ext);\n v_local = c * ext;\n v_half = hsz;\n}`,\n fragment: /* glsl */ `${GLSL1_FRAGMENT_COMMON}\nvarying vec2 v_local;\nvarying vec2 v_half;\nvarying float v_radius;\nvarying vec4 v_color;\nvoid main() {\n float r = min(v_radius, min(v_half.x, v_half.y));\n vec2 q = abs(v_local) - v_half + vec2(r);\n float d = length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - r;\n float a = clamp(0.5 - d, 0.0, 1.0) * v_color.a;\n gl_FragColor = vec4(v_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL1_SCATTER = {\n vertex: /* glsl */ `${GLSL1_VERTEX_COMMON}\nattribute vec2 a_pos;\nattribute float a_size;\nattribute vec4 a_color;\nvarying vec2 v_local;\nvarying float v_r;\nvarying vec2 v_style;\nvarying vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_r = 0.0;\n v_style = vec2(u_params.x, u_params.y * u_viewport.z);\n v_color = a_color;\n if (gap(a_pos) || !(a_size > 0.0)) { gl_Position = HIDDEN; return; }\n float r = a_size * 0.5 * u_viewport.z;\n float ext = r + 1.0;\n vec2 c = a_corner * 2.0 - 1.0;\n gl_Position = pxToClip(toPx(a_pos) + c * ext);\n v_local = c * ext;\n v_r = r;\n}`,\n fragment: /* glsl */ `${GLSL1_FRAGMENT_COMMON}\nvarying vec2 v_local;\nvarying float v_r;\nvarying vec2 v_style;\nvarying vec4 v_color;\nvoid main() {\n float d = length(v_local) - v_r;\n float cover = clamp(0.5 - d, 0.0, 1.0);\n float inner = clamp(0.5 - (d + v_style.y), 0.0, 1.0);\n float a = v_color.a * (inner * v_style.x + (cover - inner));\n gl_FragColor = vec4(v_color.rgb * a, a);\n}`,\n};\n"],"mappings":";AAcA,IAAMA,IAAyB,mnBA2BlBC,IAAuB,GAAGD,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCtCE,IAAuB,GAAGF,EAAY;;;;;;;;;;;;;;;;;;;;;;GAwBtCG,IAAsB,GAAGH,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CrCI,IAA0B,GAAGJ,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BhDK,IAAyB,6IAQzBC,IAAgC,GAAGD,EAAY;;;;;;;GASxCE,IAAY;CACvB,QAAmB,GAAGD,EAAmB;;;;;;;;;;;;;;;;;;;;;;;CAuBzC,UAAqB,GAAGD,EAAY;;;;;;;;;;AAUtC,GAEaG,IAAY;CACvB,QAAmB,GAAGF,EAAmB;;;;;;;;;;;;;CAazC,UAAqB,GAAGD,EAAY;;;;;;;AAOtC,GAEaI,IAAW;CACtB,QAAmB,GAAGH,EAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BzC,UAAqB,GAAGD,EAAY;;;;;;;;;;;;AAYtC,GAEaK,IAAe;CAC1B,QAAmB,GAAGJ,EAAmB;;;;;;;;;;;;;;;;;;;CAmBzC,UAAqB,GAAGD,EAAY;;;;;;;;;;;;AAYtC,GAQMM,IAAiC,8fAajCC,IAAmC,wGAO5BC,IAAa;CACxB,QAAmB,GAAGF,EAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B1C,UAAqB,GAAGC,EAAsB;;;;;;;;;;;AAWhD,GAEaE,IAAa;CACxB,QAAmB,GAAGH,EAAoB;;;;;;;;;;;;;;CAc1C,UAAqB,GAAGC,EAAsB;;;;;;;AAOhD,GAEaG,IAAY;CACvB,QAAmB,GAAGJ,EAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B1C,UAAqB,GAAGC,EAAsB;;;;;;;;;;;;AAYhD,GAEaI,IAAgB;CAC3B,QAAmB,GAAGL,EAAoB;;;;;;;;;;;;;;;;;;;;;CAqB1C,UAAqB,GAAGC,EAAsB;;;;;;;;;;;;AAYhD"}
@@ -0,0 +1,2 @@
1
+ const e=require("./gl.cjs"),t=require("./range.cjs"),n=require("./shaders.cjs");var r={line:[`a_corner`,`a_a`,`a_b`],area:[`a_corner`,`a_a`,`a_b`],bar:[`a_corner`,`a_inst`,`a_color`],scatter:[`a_corner`,`a_pos`,`a_size`,`a_color`]},i=4,a=new Float32Array([0,0,1,0,0,1,1,1]),o=(o,s,c=!1)=>{let l=o.getContext(`webgl`,e.glContextAttributes(c));if(!l)return null;let u=()=>l.getExtension(`WEBGL_lose_context`)?.loseContext(),d=l.getExtension(`ANGLE_instanced_arrays`);if(!d||c&&e.isSoftwareRenderer(l))return u(),null;let f=e.compileProgram(l,n.GLSL1_LINE,r.line),p=e.compileProgram(l,n.GLSL1_AREA,r.area),m=e.compileProgram(l,n.GLSL1_BAR,r.bar),h=e.compileProgram(l,n.GLSL1_SCATTER,r.scatter),g=l.createBuffer();if(!f||!p||!m||!h||!g)return u(),null;let _={line:f,area:p,bar:m,scatter:h};l.bindBuffer(l.ARRAY_BUFFER,g),l.bufferData(l.ARRAY_BUFFER,a,l.STATIC_DRAW);let v=!1,y=e=>{e.preventDefault(),v=!0,s()};o.addEventListener(`webglcontextlost`,y);let b=new Map,x=(e,t,n,r,i)=>{l.enableVertexAttribArray(e),l.vertexAttribPointer(e,t,n,n===l.UNSIGNED_BYTE,r,i),d.vertexAttribDivisorANGLE(e,1)},S=(e,t,n)=>{let a=l.FLOAT;switch(l.bindBuffer(l.ARRAY_BUFFER,g),l.enableVertexAttribArray(0),l.vertexAttribPointer(0,2,a,!1,0,0),d.vertexAttribDivisorANGLE(0,0),l.bindBuffer(l.ARRAY_BUFFER,t),e.kind){case`line`:x(1,2,a,8,n*8),x(2,2,a,8,n*8+8);break;case`area`:x(1,3,a,12,n*12),x(2,3,a,12,(n+1)*12);break;case`bar`:x(1,3,a,16,n*16),x(2,4,l.UNSIGNED_BYTE,16,n*16+12);break;default:{let e=n*16;x(1,2,a,16,e),x(2,1,a,16,e+8),x(3,4,l.UNSIGNED_BYTE,16,e+12);break}}for(let t=r[e.kind].length;t<i;t++)l.disableVertexAttribArray(t),d.vertexAttribDivisorANGLE(t,0)},C=e=>{let t=b.get(e.key);if(t&&t.version===e.version&&t.kind===e.kind)return t;t&&l.deleteBuffer(t.buffer);let n=l.createBuffer();if(!n)return null;switch(l.bindBuffer(l.ARRAY_BUFFER,n),e.kind){case`line`:l.bufferData(l.ARRAY_BUFFER,e.points.subarray(0,e.count*2),l.STATIC_DRAW);break;case`area`:l.bufferData(l.ARRAY_BUFFER,e.points.subarray(0,e.count*3),l.STATIC_DRAW);break;default:l.bufferData(l.ARRAY_BUFFER,e.instances,l.STATIC_DRAW)}let r={version:e.version,kind:e.kind,buffer:n};return b.set(e.key,r),r};return{kind:`webgl`,canvas:o,resize(e,t){o.width=Math.max(1,e),o.height=Math.max(1,t)},render(n,r){if(v||l.isContextLost())return;l.viewport(0,0,o.width,o.height),l.clearColor(0,0,0,0),l.clear(l.COLOR_BUFFER_BIT),l.enable(l.BLEND),l.blendFunc(l.ONE,l.ONE_MINUS_SRC_ALPHA);let i=r.transform,a=new Set;for(let o of n){a.add(o.key);let[n,s]=t.instanceRange(o,r);if(s<=0)continue;let c=C(o);if(!c)continue;let u=_[o.kind];l.useProgram(u.program),l.uniform4f(u.xform,i.xScale,i.xOffset,i.yScale,i.yOffset),l.uniform4f(u.viewport,r.width,r.height,r.dpr,0),l.uniform4f(u.color,o.color[0],o.color[1],o.color[2],o.color[3]);let[f,p,m,h]=e.itemParams(o,r);l.uniform4f(u.params,f,p,m,h),S(o,c.buffer,n),d.drawArraysInstancedANGLE(l.TRIANGLE_STRIP,0,4,s)}for(let[e,t]of b)a.has(e)||(l.deleteBuffer(t.buffer),b.delete(e))},destroy(){if(o.removeEventListener(`webglcontextlost`,y),!l.isContextLost()){for(let e of b.values())l.deleteBuffer(e.buffer);for(let e of Object.values(_))l.deleteProgram(e.program);l.deleteBuffer(g)}b.clear(),u()}}};exports.createWebGlRenderer=o;
2
+ //# sourceMappingURL=webgl.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl.cjs","names":["glContextAttributes","isSoftwareRenderer","compileProgram","GLSL1_LINE","GLSL1_AREA","GLSL1_BAR","GLSL1_SCATTER","instanceRange","itemParams","require_gl","require_range","require_shaders","ATTRIBUTES","MAX_LOCATIONS","CORNERS","createWebGlRenderer","gl","canvas","requireHardware","loseContext","instancing","line","area","bar","scatter","corners","programs","lost","handleLost","event","onLost","resources","instanced","location","size","type","stride","offset","bindAttributes","F","buffer","item","first","i","upload","existing","res","width","height","t","frame","seen","items","instances","program","p0","p1","p2","p3","key","p"],"sources":["../../../../../charts/src/engine/renderers/webgl.ts"],"sourcesContent":["// WebGL (1) backend: the WebGL2 primitives in GLSL ES 1.0 for browsers and\n// GPUs without WebGL2. Instancing comes from ANGLE_instanced_arrays (exposed\n// virtually everywhere); without it the chain moves on to Canvas2D. Vertex\n// array objects are optional in WebGL 1, so the attributes are bound for\n// every draw (a handful of calls per series).\n\nimport {\n compileProgram,\n glContextAttributes,\n isSoftwareRenderer,\n itemParams,\n} from \"./gl\";\nimport { instanceRange } from \"./range\";\nimport { GLSL1_AREA, GLSL1_BAR, GLSL1_LINE, GLSL1_SCATTER } from \"./shaders\";\nimport {\n AREA_STRIDE,\n BAR_STRIDE,\n SCATTER_STRIDE,\n type ChartRenderer,\n type RenderItem,\n type RendererLostHandler,\n} from \"./types\";\n\ninterface ItemResources {\n version: number;\n kind: RenderItem[\"kind\"];\n buffer: WebGLBuffer;\n}\n\n/** Location 0 is the per-vertex corner, the others are per instance */\nconst ATTRIBUTES: Record<RenderItem[\"kind\"], string[]> = {\n line: [\"a_corner\", \"a_a\", \"a_b\"],\n area: [\"a_corner\", \"a_a\", \"a_b\"],\n bar: [\"a_corner\", \"a_inst\", \"a_color\"],\n scatter: [\"a_corner\", \"a_pos\", \"a_size\", \"a_color\"],\n};\n\nconst MAX_LOCATIONS = 4;\n\n/** Corners of the triangle strip, as gl_VertexID gives them in WebGL2: (vi & 1, vi >> 1) */\nconst CORNERS = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]);\n\nexport const createWebGlRenderer = (\n canvas: HTMLCanvasElement,\n onLost: RendererLostHandler,\n /** Refuses software rendering (SwiftShader, blocklisted GPUs): Canvas2D with decimation is faster there */\n requireHardware = false,\n): ChartRenderer | null => {\n const gl = canvas.getContext(\n \"webgl\",\n glContextAttributes(requireHardware),\n ) as WebGLRenderingContext | null;\n if (!gl) return null;\n const loseContext = () =>\n gl.getExtension(\"WEBGL_lose_context\")?.loseContext();\n const instancing = gl.getExtension(\"ANGLE_instanced_arrays\");\n if (!instancing || (requireHardware && isSoftwareRenderer(gl))) {\n loseContext();\n return null;\n }\n\n const line = compileProgram(gl, GLSL1_LINE, ATTRIBUTES.line);\n const area = compileProgram(gl, GLSL1_AREA, ATTRIBUTES.area);\n const bar = compileProgram(gl, GLSL1_BAR, ATTRIBUTES.bar);\n const scatter = compileProgram(gl, GLSL1_SCATTER, ATTRIBUTES.scatter);\n const corners = gl.createBuffer();\n if (!line || !area || !bar || !scatter || !corners) {\n loseContext();\n return null;\n }\n const programs = { line, area, bar, scatter };\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\n /** Float or normalized unorm8x4 attribute advancing once per instance */\n const instanced = (\n location: number,\n size: number,\n type: number,\n stride: number,\n offset: number,\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 instancing.vertexAttribDivisorANGLE(location, 1);\n };\n\n /** Binds the corner and the instance attributes starting at instance `first` */\n const bindAttributes = (\n item: RenderItem,\n buffer: WebGLBuffer,\n first: number,\n ) => {\n const F = gl.FLOAT;\n gl.bindBuffer(gl.ARRAY_BUFFER, corners);\n gl.enableVertexAttribArray(0);\n gl.vertexAttribPointer(0, 2, F, false, 0, 0);\n instancing.vertexAttribDivisorANGLE(0, 0);\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n switch (item.kind) {\n case \"line\":\n instanced(1, 2, F, 8, first * 8);\n instanced(2, 2, F, 8, first * 8 + 8);\n break;\n case \"area\": {\n const stride = AREA_STRIDE * 4;\n instanced(1, 3, F, stride, first * stride);\n instanced(2, 3, F, stride, (first + 1) * stride);\n break;\n }\n case \"bar\":\n instanced(1, 3, F, BAR_STRIDE, first * BAR_STRIDE);\n instanced(2, 4, gl.UNSIGNED_BYTE, BAR_STRIDE, first * BAR_STRIDE + 12);\n break;\n default: {\n const offset = first * SCATTER_STRIDE;\n instanced(1, 2, F, SCATTER_STRIDE, offset);\n instanced(2, 1, F, SCATTER_STRIDE, offset + 8);\n instanced(3, 4, gl.UNSIGNED_BYTE, SCATTER_STRIDE, offset + 12);\n break;\n }\n }\n // attribute state is global without vertex array objects\n for (let i = ATTRIBUTES[item.kind].length; i < MAX_LOCATIONS; i++) {\n gl.disableVertexAttribArray(i);\n instancing.vertexAttribDivisorANGLE(i, 0);\n }\n };\n\n const upload = (item: RenderItem): 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 return existing;\n }\n if (existing) gl.deleteBuffer(existing.buffer);\n const buffer = gl.createBuffer();\n if (!buffer) return null;\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n switch (item.kind) {\n case \"line\":\n gl.bufferData(\n gl.ARRAY_BUFFER,\n item.points.subarray(0, item.count * 2),\n gl.STATIC_DRAW,\n );\n break;\n case \"area\":\n gl.bufferData(\n gl.ARRAY_BUFFER,\n item.points.subarray(0, item.count * AREA_STRIDE),\n gl.STATIC_DRAW,\n );\n break;\n default:\n gl.bufferData(gl.ARRAY_BUFFER, item.instances, gl.STATIC_DRAW);\n break;\n }\n const res = { version: item.version, kind: item.kind, buffer };\n resources.set(item.key, res);\n return res;\n };\n\n return {\n kind: \"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.clear(gl.COLOR_BUFFER_BIT);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n const t = frame.transform;\n const seen = new Set<string>();\n for (const item of items) {\n seen.add(item.key);\n const [first, instances] = instanceRange(item, frame);\n if (instances <= 0) continue;\n const res = upload(item);\n if (!res) continue;\n const program = programs[item.kind];\n gl.useProgram(program.program);\n gl.uniform4f(program.xform, t.xScale, t.xOffset, t.yScale, t.yOffset);\n gl.uniform4f(program.viewport, frame.width, frame.height, frame.dpr, 0);\n gl.uniform4f(\n program.color,\n item.color[0],\n item.color[1],\n item.color[2],\n item.color[3],\n );\n const [p0, p1, p2, p3] = itemParams(item, frame);\n gl.uniform4f(program.params, p0, p1, p2, p3);\n bindAttributes(item, res.buffer, first);\n instancing.drawArraysInstancedANGLE(gl.TRIANGLE_STRIP, 0, 4, instances);\n }\n for (const [key, res] of resources) {\n if (!seen.has(key)) {\n gl.deleteBuffer(res.buffer);\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()) gl.deleteBuffer(res.buffer);\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,4 @@
1
+ import { ChartRenderer, RendererLostHandler } from './types.cjs';
2
+ export declare const createWebGlRenderer: (canvas: HTMLCanvasElement, onLost: RendererLostHandler,
3
+ /** Refuses software rendering (SwiftShader, blocklisted GPUs): Canvas2D with decimation is faster there */
4
+ requireHardware?: boolean) => ChartRenderer | null;
@@ -0,0 +1,4 @@
1
+ import { ChartRenderer, RendererLostHandler } from './types.js';
2
+ export declare const createWebGlRenderer: (canvas: HTMLCanvasElement, onLost: RendererLostHandler,
3
+ /** Refuses software rendering (SwiftShader, blocklisted GPUs): Canvas2D with decimation is faster there */
4
+ requireHardware?: boolean) => ChartRenderer | null;
@@ -0,0 +1,133 @@
1
+ import { compileProgram as e, glContextAttributes as t, isSoftwareRenderer as n, itemParams as r } from "./gl.js";
2
+ import { instanceRange as i } from "./range.js";
3
+ import { GLSL1_AREA as a, GLSL1_BAR as o, GLSL1_LINE as s, GLSL1_SCATTER as c } from "./shaders.js";
4
+ //#region src/engine/renderers/webgl.ts
5
+ var l = {
6
+ line: [
7
+ "a_corner",
8
+ "a_a",
9
+ "a_b"
10
+ ],
11
+ area: [
12
+ "a_corner",
13
+ "a_a",
14
+ "a_b"
15
+ ],
16
+ bar: [
17
+ "a_corner",
18
+ "a_inst",
19
+ "a_color"
20
+ ],
21
+ scatter: [
22
+ "a_corner",
23
+ "a_pos",
24
+ "a_size",
25
+ "a_color"
26
+ ]
27
+ }, u = 4, d = new Float32Array([
28
+ 0,
29
+ 0,
30
+ 1,
31
+ 0,
32
+ 0,
33
+ 1,
34
+ 1,
35
+ 1
36
+ ]), f = (f, p, m = !1) => {
37
+ let h = f.getContext("webgl", t(m));
38
+ if (!h) return null;
39
+ let g = () => h.getExtension("WEBGL_lose_context")?.loseContext(), _ = h.getExtension("ANGLE_instanced_arrays");
40
+ if (!_ || m && n(h)) return g(), null;
41
+ let v = e(h, s, l.line), y = e(h, a, l.area), b = e(h, o, l.bar), x = e(h, c, l.scatter), S = h.createBuffer();
42
+ if (!v || !y || !b || !x || !S) return g(), null;
43
+ let C = {
44
+ line: v,
45
+ area: y,
46
+ bar: b,
47
+ scatter: x
48
+ };
49
+ h.bindBuffer(h.ARRAY_BUFFER, S), h.bufferData(h.ARRAY_BUFFER, d, h.STATIC_DRAW);
50
+ let w = !1, T = (e) => {
51
+ e.preventDefault(), w = !0, p();
52
+ };
53
+ f.addEventListener("webglcontextlost", T);
54
+ let E = /* @__PURE__ */ new Map(), D = (e, t, n, r, i) => {
55
+ h.enableVertexAttribArray(e), h.vertexAttribPointer(e, t, n, n === h.UNSIGNED_BYTE, r, i), _.vertexAttribDivisorANGLE(e, 1);
56
+ }, O = (e, t, n) => {
57
+ let r = h.FLOAT;
58
+ switch (h.bindBuffer(h.ARRAY_BUFFER, S), h.enableVertexAttribArray(0), h.vertexAttribPointer(0, 2, r, !1, 0, 0), _.vertexAttribDivisorANGLE(0, 0), h.bindBuffer(h.ARRAY_BUFFER, t), e.kind) {
59
+ case "line":
60
+ D(1, 2, r, 8, n * 8), D(2, 2, r, 8, n * 8 + 8);
61
+ break;
62
+ case "area":
63
+ D(1, 3, r, 12, n * 12), D(2, 3, r, 12, (n + 1) * 12);
64
+ break;
65
+ case "bar":
66
+ D(1, 3, r, 16, n * 16), D(2, 4, h.UNSIGNED_BYTE, 16, n * 16 + 12);
67
+ break;
68
+ default: {
69
+ let e = n * 16;
70
+ D(1, 2, r, 16, e), D(2, 1, r, 16, e + 8), D(3, 4, h.UNSIGNED_BYTE, 16, e + 12);
71
+ break;
72
+ }
73
+ }
74
+ for (let t = l[e.kind].length; t < u; t++) h.disableVertexAttribArray(t), _.vertexAttribDivisorANGLE(t, 0);
75
+ }, k = (e) => {
76
+ let t = E.get(e.key);
77
+ if (t && t.version === e.version && t.kind === e.kind) return t;
78
+ t && h.deleteBuffer(t.buffer);
79
+ let n = h.createBuffer();
80
+ if (!n) return null;
81
+ switch (h.bindBuffer(h.ARRAY_BUFFER, n), e.kind) {
82
+ case "line":
83
+ h.bufferData(h.ARRAY_BUFFER, e.points.subarray(0, e.count * 2), h.STATIC_DRAW);
84
+ break;
85
+ case "area":
86
+ h.bufferData(h.ARRAY_BUFFER, e.points.subarray(0, e.count * 3), h.STATIC_DRAW);
87
+ break;
88
+ default: h.bufferData(h.ARRAY_BUFFER, e.instances, h.STATIC_DRAW);
89
+ }
90
+ let r = {
91
+ version: e.version,
92
+ kind: e.kind,
93
+ buffer: n
94
+ };
95
+ return E.set(e.key, r), r;
96
+ };
97
+ return {
98
+ kind: "webgl",
99
+ canvas: f,
100
+ resize(e, t) {
101
+ f.width = Math.max(1, e), f.height = Math.max(1, t);
102
+ },
103
+ render(e, t) {
104
+ if (w || h.isContextLost()) return;
105
+ h.viewport(0, 0, f.width, f.height), h.clearColor(0, 0, 0, 0), h.clear(h.COLOR_BUFFER_BIT), h.enable(h.BLEND), h.blendFunc(h.ONE, h.ONE_MINUS_SRC_ALPHA);
106
+ let n = t.transform, a = /* @__PURE__ */ new Set();
107
+ for (let o of e) {
108
+ a.add(o.key);
109
+ let [e, s] = i(o, t);
110
+ if (s <= 0) continue;
111
+ let c = k(o);
112
+ if (!c) continue;
113
+ let l = C[o.kind];
114
+ h.useProgram(l.program), h.uniform4f(l.xform, n.xScale, n.xOffset, n.yScale, n.yOffset), h.uniform4f(l.viewport, t.width, t.height, t.dpr, 0), h.uniform4f(l.color, o.color[0], o.color[1], o.color[2], o.color[3]);
115
+ let [u, d, f, p] = r(o, t);
116
+ h.uniform4f(l.params, u, d, f, p), O(o, c.buffer, e), _.drawArraysInstancedANGLE(h.TRIANGLE_STRIP, 0, 4, s);
117
+ }
118
+ for (let [e, t] of E) a.has(e) || (h.deleteBuffer(t.buffer), E.delete(e));
119
+ },
120
+ destroy() {
121
+ if (f.removeEventListener("webglcontextlost", T), !h.isContextLost()) {
122
+ for (let e of E.values()) h.deleteBuffer(e.buffer);
123
+ for (let e of Object.values(C)) h.deleteProgram(e.program);
124
+ h.deleteBuffer(S);
125
+ }
126
+ E.clear(), g();
127
+ }
128
+ };
129
+ };
130
+ //#endregion
131
+ export { f as createWebGlRenderer };
132
+
133
+ //# sourceMappingURL=webgl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl.js","names":["ATTRIBUTES","MAX_LOCATIONS","CORNERS","createWebGlRenderer","gl","canvas","glContextAttributes","requireHardware","loseContext","instancing","isSoftwareRenderer","line","compileProgram","GLSL1_LINE","area","GLSL1_AREA","bar","GLSL1_BAR","scatter","GLSL1_SCATTER","corners","programs","lost","handleLost","event","onLost","resources","instanced","location","size","type","stride","offset","bindAttributes","F","buffer","item","first","i","upload","existing","res","width","height","t","frame","seen","items","instances","instanceRange","program","p0","p1","p2","p3","itemParams","key","p"],"sources":["../../../../../charts/src/engine/renderers/webgl.ts"],"sourcesContent":["// WebGL (1) backend: the WebGL2 primitives in GLSL ES 1.0 for browsers and\n// GPUs without WebGL2. Instancing comes from ANGLE_instanced_arrays (exposed\n// virtually everywhere); without it the chain moves on to Canvas2D. Vertex\n// array objects are optional in WebGL 1, so the attributes are bound for\n// every draw (a handful of calls per series).\n\nimport {\n compileProgram,\n glContextAttributes,\n isSoftwareRenderer,\n itemParams,\n} from \"./gl\";\nimport { instanceRange } from \"./range\";\nimport { GLSL1_AREA, GLSL1_BAR, GLSL1_LINE, GLSL1_SCATTER } from \"./shaders\";\nimport {\n AREA_STRIDE,\n BAR_STRIDE,\n SCATTER_STRIDE,\n type ChartRenderer,\n type RenderItem,\n type RendererLostHandler,\n} from \"./types\";\n\ninterface ItemResources {\n version: number;\n kind: RenderItem[\"kind\"];\n buffer: WebGLBuffer;\n}\n\n/** Location 0 is the per-vertex corner, the others are per instance */\nconst ATTRIBUTES: Record<RenderItem[\"kind\"], string[]> = {\n line: [\"a_corner\", \"a_a\", \"a_b\"],\n area: [\"a_corner\", \"a_a\", \"a_b\"],\n bar: [\"a_corner\", \"a_inst\", \"a_color\"],\n scatter: [\"a_corner\", \"a_pos\", \"a_size\", \"a_color\"],\n};\n\nconst MAX_LOCATIONS = 4;\n\n/** Corners of the triangle strip, as gl_VertexID gives them in WebGL2: (vi & 1, vi >> 1) */\nconst CORNERS = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]);\n\nexport const createWebGlRenderer = (\n canvas: HTMLCanvasElement,\n onLost: RendererLostHandler,\n /** Refuses software rendering (SwiftShader, blocklisted GPUs): Canvas2D with decimation is faster there */\n requireHardware = false,\n): ChartRenderer | null => {\n const gl = canvas.getContext(\n \"webgl\",\n glContextAttributes(requireHardware),\n ) as WebGLRenderingContext | null;\n if (!gl) return null;\n const loseContext = () =>\n gl.getExtension(\"WEBGL_lose_context\")?.loseContext();\n const instancing = gl.getExtension(\"ANGLE_instanced_arrays\");\n if (!instancing || (requireHardware && isSoftwareRenderer(gl))) {\n loseContext();\n return null;\n }\n\n const line = compileProgram(gl, GLSL1_LINE, ATTRIBUTES.line);\n const area = compileProgram(gl, GLSL1_AREA, ATTRIBUTES.area);\n const bar = compileProgram(gl, GLSL1_BAR, ATTRIBUTES.bar);\n const scatter = compileProgram(gl, GLSL1_SCATTER, ATTRIBUTES.scatter);\n const corners = gl.createBuffer();\n if (!line || !area || !bar || !scatter || !corners) {\n loseContext();\n return null;\n }\n const programs = { line, area, bar, scatter };\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\n /** Float or normalized unorm8x4 attribute advancing once per instance */\n const instanced = (\n location: number,\n size: number,\n type: number,\n stride: number,\n offset: number,\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 instancing.vertexAttribDivisorANGLE(location, 1);\n };\n\n /** Binds the corner and the instance attributes starting at instance `first` */\n const bindAttributes = (\n item: RenderItem,\n buffer: WebGLBuffer,\n first: number,\n ) => {\n const F = gl.FLOAT;\n gl.bindBuffer(gl.ARRAY_BUFFER, corners);\n gl.enableVertexAttribArray(0);\n gl.vertexAttribPointer(0, 2, F, false, 0, 0);\n instancing.vertexAttribDivisorANGLE(0, 0);\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n switch (item.kind) {\n case \"line\":\n instanced(1, 2, F, 8, first * 8);\n instanced(2, 2, F, 8, first * 8 + 8);\n break;\n case \"area\": {\n const stride = AREA_STRIDE * 4;\n instanced(1, 3, F, stride, first * stride);\n instanced(2, 3, F, stride, (first + 1) * stride);\n break;\n }\n case \"bar\":\n instanced(1, 3, F, BAR_STRIDE, first * BAR_STRIDE);\n instanced(2, 4, gl.UNSIGNED_BYTE, BAR_STRIDE, first * BAR_STRIDE + 12);\n break;\n default: {\n const offset = first * SCATTER_STRIDE;\n instanced(1, 2, F, SCATTER_STRIDE, offset);\n instanced(2, 1, F, SCATTER_STRIDE, offset + 8);\n instanced(3, 4, gl.UNSIGNED_BYTE, SCATTER_STRIDE, offset + 12);\n break;\n }\n }\n // attribute state is global without vertex array objects\n for (let i = ATTRIBUTES[item.kind].length; i < MAX_LOCATIONS; i++) {\n gl.disableVertexAttribArray(i);\n instancing.vertexAttribDivisorANGLE(i, 0);\n }\n };\n\n const upload = (item: RenderItem): 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 return existing;\n }\n if (existing) gl.deleteBuffer(existing.buffer);\n const buffer = gl.createBuffer();\n if (!buffer) return null;\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n switch (item.kind) {\n case \"line\":\n gl.bufferData(\n gl.ARRAY_BUFFER,\n item.points.subarray(0, item.count * 2),\n gl.STATIC_DRAW,\n );\n break;\n case \"area\":\n gl.bufferData(\n gl.ARRAY_BUFFER,\n item.points.subarray(0, item.count * AREA_STRIDE),\n gl.STATIC_DRAW,\n );\n break;\n default:\n gl.bufferData(gl.ARRAY_BUFFER, item.instances, gl.STATIC_DRAW);\n break;\n }\n const res = { version: item.version, kind: item.kind, buffer };\n resources.set(item.key, res);\n return res;\n };\n\n return {\n kind: \"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.clear(gl.COLOR_BUFFER_BIT);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n const t = frame.transform;\n const seen = new Set<string>();\n for (const item of items) {\n seen.add(item.key);\n const [first, instances] = instanceRange(item, frame);\n if (instances <= 0) continue;\n const res = upload(item);\n if (!res) continue;\n const program = programs[item.kind];\n gl.useProgram(program.program);\n gl.uniform4f(program.xform, t.xScale, t.xOffset, t.yScale, t.yOffset);\n gl.uniform4f(program.viewport, frame.width, frame.height, frame.dpr, 0);\n gl.uniform4f(\n program.color,\n item.color[0],\n item.color[1],\n item.color[2],\n item.color[3],\n );\n const [p0, p1, p2, p3] = itemParams(item, frame);\n gl.uniform4f(program.params, p0, p1, p2, p3);\n bindAttributes(item, res.buffer, first);\n instancing.drawArraysInstancedANGLE(gl.TRIANGLE_STRIP, 0, 4, instances);\n }\n for (const [key, res] of resources) {\n if (!seen.has(key)) {\n gl.deleteBuffer(res.buffer);\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()) gl.deleteBuffer(res.buffer);\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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"}
@@ -1,2 +1,2 @@
1
- const e=require("./range.cjs"),t=require("./shaders.cjs");var n={line:[`a_a`,`a_b`],area:[`a_a`,`a_b`],bar:[`a_inst`,`a_color`],scatter:[`a_pos`,`a_size`,`a_color`]},r=(e,t,n)=>{let r=(t,n)=>{let r=e.createShader(t);return r?(e.shaderSource(r,n),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(e.deleteShader(r),null)):null},i=r(e.VERTEX_SHADER,t.vertex),a=r(e.FRAGMENT_SHADER,t.fragment),o=e.createProgram();return!i||!a||!o?null:(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)?{program:o,xform:e.getUniformLocation(o,`u_xform`),viewport:e.getUniformLocation(o,`u_viewport`),color:e.getUniformLocation(o,`u_color`),params:e.getUniformLocation(o,`u_params`)}:(e.deleteProgram(o),null))},i=/swiftshader|llvmpipe|softpipe|software|basic render driver|microsoft basic/i,a=e=>{let t=e.getExtension(`WEBGL_debug_renderer_info`),n=t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):e.getParameter(e.RENDERER);return i.test(String(n??``))},o=(i,o,s=!1)=>{let c=i.getContext(`webgl2`,{alpha:!0,premultipliedAlpha:!0,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1,failIfMajorPerformanceCaveat:s});if(!c)return null;if(s&&a(c))return c.getExtension(`WEBGL_lose_context`)?.loseContext(),null;let l=r(c,t.GLSL_LINE,n.line),u=r(c,t.GLSL_AREA,n.area),d=r(c,t.GLSL_BAR,n.bar),f=r(c,t.GLSL_SCATTER,n.scatter);if(!l||!u||!d||!f)return null;let p={line:l,area:u,bar:d,scatter:f},m=!1,h=e=>{e.preventDefault(),m=!0,o()};i.addEventListener(`webglcontextlost`,h);let g=new Map,_=(e,t)=>{let n=c.FLOAT;switch(e.kind){case`line`:c.enableVertexAttribArray(0),c.vertexAttribPointer(0,2,n,!1,8,t*8),c.vertexAttribDivisor(0,1),c.enableVertexAttribArray(1),c.vertexAttribPointer(1,2,n,!1,8,t*8+8),c.vertexAttribDivisor(1,1);break;case`area`:c.enableVertexAttribArray(0),c.vertexAttribPointer(0,3,n,!1,12,t*12),c.vertexAttribDivisor(0,1),c.enableVertexAttribArray(1),c.vertexAttribPointer(1,3,n,!1,12,(t+1)*12),c.vertexAttribDivisor(1,1);break;case`bar`:c.enableVertexAttribArray(0),c.vertexAttribPointer(0,3,n,!1,16,t*16),c.vertexAttribDivisor(0,1),c.enableVertexAttribArray(1),c.vertexAttribPointer(1,4,c.UNSIGNED_BYTE,!0,16,t*16+12),c.vertexAttribDivisor(1,1);break;default:c.enableVertexAttribArray(0),c.vertexAttribPointer(0,2,n,!1,16,0),c.vertexAttribDivisor(0,1),c.enableVertexAttribArray(1),c.vertexAttribPointer(1,1,n,!1,16,8),c.vertexAttribDivisor(1,1),c.enableVertexAttribArray(2),c.vertexAttribPointer(2,4,c.UNSIGNED_BYTE,!0,16,12),c.vertexAttribDivisor(2,1)}},v=e=>{c.deleteBuffer(e.buffer),c.deleteVertexArray(e.vao)},y=e=>{let t=g.get(e.key);if(t&&t.version===e.version&&t.kind===e.kind)return t;t&&v(t);let n=c.createBuffer(),r=c.createVertexArray();if(!n||!r)return null;switch(c.bindVertexArray(r),c.bindBuffer(c.ARRAY_BUFFER,n),e.kind){case`line`:c.bufferData(c.ARRAY_BUFFER,e.points,c.STATIC_DRAW,0,e.count*2);break;case`area`:c.bufferData(c.ARRAY_BUFFER,e.points,c.STATIC_DRAW,0,e.count*3);break;default:c.bufferData(c.ARRAY_BUFFER,e.instances,c.STATIC_DRAW)}_(e,0),c.bindVertexArray(null);let i={version:e.version,kind:e.kind,buffer:n,vao:r,first:0};return g.set(e.key,i),i},b=(e,t)=>{switch(e.kind){case`line`:return[e.width*t.dpr/2,0,0,0];case`area`:return[0,e.opacity,0,0];case`bar`:return[e.halfWidth,e.radius,e.inset,e.minHalf];default:return[e.opacity,e.stroke,0,0]}};return{kind:`webgl2`,canvas:i,resize(e,t){i.width=Math.max(1,e),i.height=Math.max(1,t)},render(t,n){if(m||c.isContextLost())return;c.viewport(0,0,i.width,i.height),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),c.enable(c.BLEND),c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA);let r=n.transform,a=new Set;for(let i of t){a.add(i.key);let[t,o]=e.instanceRange(i,n);if(o<=0)continue;let s=y(i);if(!s)continue;let l=p[i.kind];c.useProgram(l.program),c.uniform4f(l.xform,r.xScale,r.xOffset,r.yScale,r.yOffset),c.uniform4f(l.viewport,n.width,n.height,n.dpr,0),c.uniform4f(l.color,i.color[0],i.color[1],i.color[2],i.color[3]);let[u,d,f,m]=b(i,n);c.uniform4f(l.params,u,d,f,m),c.bindVertexArray(s.vao),s.first!==t&&(c.bindBuffer(c.ARRAY_BUFFER,s.buffer),_(i,t),s.first=t),c.drawArraysInstanced(c.TRIANGLE_STRIP,0,4,o)}c.bindVertexArray(null);for(let[e,t]of g)a.has(e)||(v(t),g.delete(e))},destroy(){if(i.removeEventListener(`webglcontextlost`,h),!c.isContextLost()){for(let e of g.values())v(e);for(let e of Object.values(p))c.deleteProgram(e.program)}g.clear(),c.getExtension(`WEBGL_lose_context`)?.loseContext()}}};exports.SOFTWARE_RENDERER=i,exports.createWebGl2Renderer=o;
1
+ const e=require("./gl.cjs"),t=require("./range.cjs"),n=require("./shaders.cjs");var r={line:[`a_a`,`a_b`],area:[`a_a`,`a_b`],bar:[`a_inst`,`a_color`],scatter:[`a_pos`,`a_size`,`a_color`]},i=(i,a,o=!1)=>{let s=i.getContext(`webgl2`,e.glContextAttributes(o));if(!s)return null;if(o&&e.isSoftwareRenderer(s))return s.getExtension(`WEBGL_lose_context`)?.loseContext(),null;let c=e.compileProgram(s,n.GLSL_LINE,r.line),l=e.compileProgram(s,n.GLSL_AREA,r.area),u=e.compileProgram(s,n.GLSL_BAR,r.bar),d=e.compileProgram(s,n.GLSL_SCATTER,r.scatter);if(!c||!l||!u||!d)return null;let f={line:c,area:l,bar:u,scatter:d},p=!1,m=e=>{e.preventDefault(),p=!0,a()};i.addEventListener(`webglcontextlost`,m);let h=new Map,g=(e,t)=>{let n=s.FLOAT;switch(e.kind){case`line`:s.enableVertexAttribArray(0),s.vertexAttribPointer(0,2,n,!1,8,t*8),s.vertexAttribDivisor(0,1),s.enableVertexAttribArray(1),s.vertexAttribPointer(1,2,n,!1,8,t*8+8),s.vertexAttribDivisor(1,1);break;case`area`:s.enableVertexAttribArray(0),s.vertexAttribPointer(0,3,n,!1,12,t*12),s.vertexAttribDivisor(0,1),s.enableVertexAttribArray(1),s.vertexAttribPointer(1,3,n,!1,12,(t+1)*12),s.vertexAttribDivisor(1,1);break;case`bar`:s.enableVertexAttribArray(0),s.vertexAttribPointer(0,3,n,!1,16,t*16),s.vertexAttribDivisor(0,1),s.enableVertexAttribArray(1),s.vertexAttribPointer(1,4,s.UNSIGNED_BYTE,!0,16,t*16+12),s.vertexAttribDivisor(1,1);break;default:s.enableVertexAttribArray(0),s.vertexAttribPointer(0,2,n,!1,16,0),s.vertexAttribDivisor(0,1),s.enableVertexAttribArray(1),s.vertexAttribPointer(1,1,n,!1,16,8),s.vertexAttribDivisor(1,1),s.enableVertexAttribArray(2),s.vertexAttribPointer(2,4,s.UNSIGNED_BYTE,!0,16,12),s.vertexAttribDivisor(2,1)}},_=e=>{s.deleteBuffer(e.buffer),s.deleteVertexArray(e.vao)},v=e=>{let t=h.get(e.key);if(t&&t.version===e.version&&t.kind===e.kind)return t;t&&_(t);let n=s.createBuffer(),r=s.createVertexArray();if(!n||!r)return null;switch(s.bindVertexArray(r),s.bindBuffer(s.ARRAY_BUFFER,n),e.kind){case`line`:s.bufferData(s.ARRAY_BUFFER,e.points,s.STATIC_DRAW,0,e.count*2);break;case`area`:s.bufferData(s.ARRAY_BUFFER,e.points,s.STATIC_DRAW,0,e.count*3);break;default:s.bufferData(s.ARRAY_BUFFER,e.instances,s.STATIC_DRAW)}g(e,0),s.bindVertexArray(null);let i={version:e.version,kind:e.kind,buffer:n,vao:r,first:0};return h.set(e.key,i),i};return{kind:`webgl2`,canvas:i,resize(e,t){i.width=Math.max(1,e),i.height=Math.max(1,t)},render(n,r){if(p||s.isContextLost())return;s.viewport(0,0,i.width,i.height),s.clearColor(0,0,0,0),s.clear(s.COLOR_BUFFER_BIT),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA);let a=r.transform,o=new Set;for(let i of n){o.add(i.key);let[n,c]=t.instanceRange(i,r);if(c<=0)continue;let l=v(i);if(!l)continue;let u=f[i.kind];s.useProgram(u.program),s.uniform4f(u.xform,a.xScale,a.xOffset,a.yScale,a.yOffset),s.uniform4f(u.viewport,r.width,r.height,r.dpr,0),s.uniform4f(u.color,i.color[0],i.color[1],i.color[2],i.color[3]);let[d,p,m,h]=e.itemParams(i,r);s.uniform4f(u.params,d,p,m,h),s.bindVertexArray(l.vao),l.first!==n&&(s.bindBuffer(s.ARRAY_BUFFER,l.buffer),g(i,n),l.first=n),s.drawArraysInstanced(s.TRIANGLE_STRIP,0,4,c)}s.bindVertexArray(null);for(let[e,t]of h)o.has(e)||(_(t),h.delete(e))},destroy(){if(i.removeEventListener(`webglcontextlost`,m),!s.isContextLost()){for(let e of h.values())_(e);for(let e of Object.values(f))s.deleteProgram(e.program)}h.clear(),s.getExtension(`WEBGL_lose_context`)?.loseContext()}}};exports.createWebGl2Renderer=i;
2
2
  //# sourceMappingURL=webgl2.cjs.map