minerva-design 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (824) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +3072 -611
  4. package/dist/angular/fesm2022/minerva-angular.mjs +1491 -5
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +595 -5
  7. package/dist/charts/canvas.d.cts +4 -3
  8. package/dist/charts/canvas.d.ts +4 -3
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +6 -4
  11. package/dist/charts/core.d.ts +6 -4
  12. package/dist/charts/core.js +24 -16
  13. package/dist/charts/engine/axis.cjs +1 -1
  14. package/dist/charts/engine/axis.cjs.map +1 -1
  15. package/dist/charts/engine/axis.js +42 -19
  16. package/dist/charts/engine/axis.js.map +1 -1
  17. package/dist/charts/engine/canvas.cjs +1 -1
  18. package/dist/charts/engine/canvas.cjs.map +1 -1
  19. package/dist/charts/engine/canvas.js +155 -127
  20. package/dist/charts/engine/canvas.js.map +1 -1
  21. package/dist/charts/engine/chart.cjs +1 -1
  22. package/dist/charts/engine/chart.cjs.map +1 -1
  23. package/dist/charts/engine/chart.js +370 -255
  24. package/dist/charts/engine/chart.js.map +1 -1
  25. package/dist/charts/engine/color.cjs +1 -1
  26. package/dist/charts/engine/color.cjs.map +1 -1
  27. package/dist/charts/engine/color.d.cts +18 -0
  28. package/dist/charts/engine/color.d.ts +18 -0
  29. package/dist/charts/engine/color.js +48 -2
  30. package/dist/charts/engine/color.js.map +1 -1
  31. package/dist/charts/engine/controller.cjs +2 -2
  32. package/dist/charts/engine/controller.cjs.map +1 -1
  33. package/dist/charts/engine/controller.d.cts +34 -1
  34. package/dist/charts/engine/controller.d.ts +34 -1
  35. package/dist/charts/engine/controller.js +318 -273
  36. package/dist/charts/engine/controller.js.map +1 -1
  37. package/dist/charts/engine/data.cjs +1 -1
  38. package/dist/charts/engine/data.cjs.map +1 -1
  39. package/dist/charts/engine/data.d.cts +3 -1
  40. package/dist/charts/engine/data.d.ts +3 -1
  41. package/dist/charts/engine/data.js +6 -4
  42. package/dist/charts/engine/data.js.map +1 -1
  43. package/dist/charts/engine/defaults.cjs +2 -0
  44. package/dist/charts/engine/defaults.cjs.map +1 -0
  45. package/dist/charts/engine/defaults.d.cts +20 -0
  46. package/dist/charts/engine/defaults.d.ts +20 -0
  47. package/dist/charts/engine/defaults.js +35 -0
  48. package/dist/charts/engine/defaults.js.map +1 -0
  49. package/dist/charts/engine/format.cjs +1 -1
  50. package/dist/charts/engine/format.cjs.map +1 -1
  51. package/dist/charts/engine/format.d.cts +6 -0
  52. package/dist/charts/engine/format.d.ts +6 -0
  53. package/dist/charts/engine/format.js +15 -2
  54. package/dist/charts/engine/format.js.map +1 -1
  55. package/dist/charts/engine/graph/chart.cjs +2 -0
  56. package/dist/charts/engine/graph/chart.cjs.map +1 -0
  57. package/dist/charts/engine/graph/chart.d.cts +3 -0
  58. package/dist/charts/engine/graph/chart.d.ts +3 -0
  59. package/dist/charts/engine/graph/chart.js +1708 -0
  60. package/dist/charts/engine/graph/chart.js.map +1 -0
  61. package/dist/charts/engine/graph/circular.cjs +2 -0
  62. package/dist/charts/engine/graph/circular.cjs.map +1 -0
  63. package/dist/charts/engine/graph/circular.d.cts +16 -0
  64. package/dist/charts/engine/graph/circular.d.ts +16 -0
  65. package/dist/charts/engine/graph/circular.js +62 -0
  66. package/dist/charts/engine/graph/circular.js.map +1 -0
  67. package/dist/charts/engine/graph/dag.cjs +2 -0
  68. package/dist/charts/engine/graph/dag.cjs.map +1 -0
  69. package/dist/charts/engine/graph/dag.d.cts +34 -0
  70. package/dist/charts/engine/graph/dag.d.ts +34 -0
  71. package/dist/charts/engine/graph/dag.js +339 -0
  72. package/dist/charts/engine/graph/dag.js.map +1 -0
  73. package/dist/charts/engine/graph/dom.cjs +2 -0
  74. package/dist/charts/engine/graph/dom.cjs.map +1 -0
  75. package/dist/charts/engine/graph/dom.d.cts +23 -0
  76. package/dist/charts/engine/graph/dom.d.ts +23 -0
  77. package/dist/charts/engine/graph/dom.js +158 -0
  78. package/dist/charts/engine/graph/dom.js.map +1 -0
  79. package/dist/charts/engine/graph/force.cjs +2 -0
  80. package/dist/charts/engine/graph/force.cjs.map +1 -0
  81. package/dist/charts/engine/graph/force.d.cts +76 -0
  82. package/dist/charts/engine/graph/force.d.ts +76 -0
  83. package/dist/charts/engine/graph/force.js +423 -0
  84. package/dist/charts/engine/graph/force.js.map +1 -0
  85. package/dist/charts/engine/graph/geometry.cjs +2 -0
  86. package/dist/charts/engine/graph/geometry.cjs.map +1 -0
  87. package/dist/charts/engine/graph/geometry.d.cts +50 -0
  88. package/dist/charts/engine/graph/geometry.d.ts +50 -0
  89. package/dist/charts/engine/graph/geometry.js +197 -0
  90. package/dist/charts/engine/graph/geometry.js.map +1 -0
  91. package/dist/charts/engine/graph/index.cjs +1 -0
  92. package/dist/charts/engine/graph/index.d.cts +6 -0
  93. package/dist/charts/engine/graph/index.d.ts +6 -0
  94. package/dist/charts/engine/graph/index.js +6 -0
  95. package/dist/charts/engine/graph/labels.cjs +2 -0
  96. package/dist/charts/engine/graph/labels.cjs.map +1 -0
  97. package/dist/charts/engine/graph/labels.d.cts +12 -0
  98. package/dist/charts/engine/graph/labels.d.ts +12 -0
  99. package/dist/charts/engine/graph/labels.js +128 -0
  100. package/dist/charts/engine/graph/labels.js.map +1 -0
  101. package/dist/charts/engine/graph/model.cjs +2 -0
  102. package/dist/charts/engine/graph/model.cjs.map +1 -0
  103. package/dist/charts/engine/graph/model.d.cts +52 -0
  104. package/dist/charts/engine/graph/model.d.ts +52 -0
  105. package/dist/charts/engine/graph/model.js +108 -0
  106. package/dist/charts/engine/graph/model.js.map +1 -0
  107. package/dist/charts/engine/graph/sizing.cjs +2 -0
  108. package/dist/charts/engine/graph/sizing.cjs.map +1 -0
  109. package/dist/charts/engine/graph/sizing.d.cts +33 -0
  110. package/dist/charts/engine/graph/sizing.d.ts +33 -0
  111. package/dist/charts/engine/graph/sizing.js +60 -0
  112. package/dist/charts/engine/graph/sizing.js.map +1 -0
  113. package/dist/charts/engine/graph/tree.cjs +2 -0
  114. package/dist/charts/engine/graph/tree.cjs.map +1 -0
  115. package/dist/charts/engine/graph/tree.d.cts +30 -0
  116. package/dist/charts/engine/graph/tree.d.ts +30 -0
  117. package/dist/charts/engine/graph/tree.js +218 -0
  118. package/dist/charts/engine/graph/tree.js.map +1 -0
  119. package/dist/charts/engine/graph/types.d.cts +640 -0
  120. package/dist/charts/engine/graph/types.d.ts +640 -0
  121. package/dist/charts/engine/graph/worker.cjs +52 -0
  122. package/dist/charts/engine/graph/worker.cjs.map +1 -0
  123. package/dist/charts/engine/graph/worker.d.cts +36 -0
  124. package/dist/charts/engine/graph/worker.d.ts +36 -0
  125. package/dist/charts/engine/graph/worker.js +135 -0
  126. package/dist/charts/engine/graph/worker.js.map +1 -0
  127. package/dist/charts/engine/items.cjs +1 -1
  128. package/dist/charts/engine/items.cjs.map +1 -1
  129. package/dist/charts/engine/items.d.cts +15 -2
  130. package/dist/charts/engine/items.d.ts +15 -2
  131. package/dist/charts/engine/items.js +131 -112
  132. package/dist/charts/engine/items.js.map +1 -1
  133. package/dist/charts/engine/labels.cjs +1 -1
  134. package/dist/charts/engine/labels.cjs.map +1 -1
  135. package/dist/charts/engine/labels.d.cts +17 -0
  136. package/dist/charts/engine/labels.d.ts +17 -0
  137. package/dist/charts/engine/labels.js +28 -4
  138. package/dist/charts/engine/labels.js.map +1 -1
  139. package/dist/charts/engine/layout.cjs +1 -1
  140. package/dist/charts/engine/layout.cjs.map +1 -1
  141. package/dist/charts/engine/layout.d.cts +9 -0
  142. package/dist/charts/engine/layout.d.ts +9 -0
  143. package/dist/charts/engine/layout.js +11 -2
  144. package/dist/charts/engine/layout.js.map +1 -1
  145. package/dist/charts/engine/model.cjs +1 -1
  146. package/dist/charts/engine/model.cjs.map +1 -1
  147. package/dist/charts/engine/model.d.cts +73 -3
  148. package/dist/charts/engine/model.d.ts +73 -3
  149. package/dist/charts/engine/model.js +258 -154
  150. package/dist/charts/engine/model.js.map +1 -1
  151. package/dist/charts/engine/orderbook/field.cjs +37 -0
  152. package/dist/charts/engine/orderbook/field.cjs.map +1 -0
  153. package/dist/charts/engine/orderbook/field.d.cts +92 -0
  154. package/dist/charts/engine/orderbook/field.d.ts +92 -0
  155. package/dist/charts/engine/orderbook/field.js +297 -0
  156. package/dist/charts/engine/orderbook/field.js.map +1 -0
  157. package/dist/charts/engine/orderbook/format.cjs +1 -1
  158. package/dist/charts/engine/orderbook/format.cjs.map +1 -1
  159. package/dist/charts/engine/orderbook/format.d.cts +3 -2
  160. package/dist/charts/engine/orderbook/format.d.ts +3 -2
  161. package/dist/charts/engine/orderbook/format.js +5 -5
  162. package/dist/charts/engine/orderbook/format.js.map +1 -1
  163. package/dist/charts/engine/orderbook/heatmap.cjs +1 -1
  164. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -1
  165. package/dist/charts/engine/orderbook/heatmap.js +566 -475
  166. package/dist/charts/engine/orderbook/heatmap.js.map +1 -1
  167. package/dist/charts/engine/orderbook/host.cjs +1 -1
  168. package/dist/charts/engine/orderbook/host.cjs.map +1 -1
  169. package/dist/charts/engine/orderbook/host.d.cts +8 -1
  170. package/dist/charts/engine/orderbook/host.d.ts +8 -1
  171. package/dist/charts/engine/orderbook/host.js +27 -5
  172. package/dist/charts/engine/orderbook/host.js.map +1 -1
  173. package/dist/charts/engine/orderbook/ladder.cjs +1 -1
  174. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -1
  175. package/dist/charts/engine/orderbook/ladder.js +1 -1
  176. package/dist/charts/engine/orderbook/ladder.js.map +1 -1
  177. package/dist/charts/engine/orderbook/layout.cjs +2 -0
  178. package/dist/charts/engine/orderbook/layout.cjs.map +1 -0
  179. package/dist/charts/engine/orderbook/layout.d.cts +42 -0
  180. package/dist/charts/engine/orderbook/layout.d.ts +42 -0
  181. package/dist/charts/engine/orderbook/layout.js +76 -0
  182. package/dist/charts/engine/orderbook/layout.js.map +1 -0
  183. package/dist/charts/engine/orderbook/tape.cjs +1 -1
  184. package/dist/charts/engine/orderbook/tape.cjs.map +1 -1
  185. package/dist/charts/engine/orderbook/tape.js +4 -4
  186. package/dist/charts/engine/orderbook/tape.js.map +1 -1
  187. package/dist/charts/engine/orderbook/types.d.cts +27 -3
  188. package/dist/charts/engine/orderbook/types.d.ts +27 -3
  189. package/dist/charts/engine/overlay.cjs +1 -1
  190. package/dist/charts/engine/overlay.cjs.map +1 -1
  191. package/dist/charts/engine/overlay.d.cts +27 -0
  192. package/dist/charts/engine/overlay.d.ts +27 -0
  193. package/dist/charts/engine/overlay.js +34 -12
  194. package/dist/charts/engine/overlay.js.map +1 -1
  195. package/dist/charts/engine/presets.cjs +2 -2
  196. package/dist/charts/engine/presets.cjs.map +1 -1
  197. package/dist/charts/engine/presets.d.cts +35 -3
  198. package/dist/charts/engine/presets.d.ts +35 -3
  199. package/dist/charts/engine/presets.js +121 -101
  200. package/dist/charts/engine/presets.js.map +1 -1
  201. package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
  202. package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
  203. package/dist/charts/engine/renderers/canvas2d.js +13 -9
  204. package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
  205. package/dist/charts/engine/renderers/detect.cjs +1 -1
  206. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  207. package/dist/charts/engine/renderers/detect.d.cts +2 -1
  208. package/dist/charts/engine/renderers/detect.d.ts +2 -1
  209. package/dist/charts/engine/renderers/detect.js +23 -21
  210. package/dist/charts/engine/renderers/detect.js.map +1 -1
  211. package/dist/charts/engine/renderers/follow.cjs +2 -0
  212. package/dist/charts/engine/renderers/follow.cjs.map +1 -0
  213. package/dist/charts/engine/renderers/follow.d.cts +8 -0
  214. package/dist/charts/engine/renderers/follow.d.ts +8 -0
  215. package/dist/charts/engine/renderers/follow.js +10 -0
  216. package/dist/charts/engine/renderers/follow.js.map +1 -0
  217. package/dist/charts/engine/renderers/gl-budget.cjs +2 -0
  218. package/dist/charts/engine/renderers/gl-budget.cjs.map +1 -0
  219. package/dist/charts/engine/renderers/gl-budget.d.cts +32 -0
  220. package/dist/charts/engine/renderers/gl-budget.d.ts +32 -0
  221. package/dist/charts/engine/renderers/gl-budget.js +95 -0
  222. package/dist/charts/engine/renderers/gl-budget.js.map +1 -0
  223. package/dist/charts/engine/renderers/gl.cjs +1 -1
  224. package/dist/charts/engine/renderers/gl.cjs.map +1 -1
  225. package/dist/charts/engine/renderers/gl.js +1 -1
  226. package/dist/charts/engine/renderers/gl.js.map +1 -1
  227. package/dist/charts/engine/renderers/shaders.cjs +9 -6
  228. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  229. package/dist/charts/engine/renderers/shaders.d.cts +1 -1
  230. package/dist/charts/engine/renderers/shaders.d.ts +1 -1
  231. package/dist/charts/engine/renderers/shaders.js +9 -6
  232. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  233. package/dist/charts/engine/renderers/types.cjs.map +1 -1
  234. package/dist/charts/engine/renderers/types.d.cts +2 -0
  235. package/dist/charts/engine/renderers/types.d.ts +2 -0
  236. package/dist/charts/engine/renderers/types.js.map +1 -1
  237. package/dist/charts/engine/renderers/webgl.cjs +1 -1
  238. package/dist/charts/engine/renderers/webgl.cjs.map +1 -1
  239. package/dist/charts/engine/renderers/webgl.js +85 -64
  240. package/dist/charts/engine/renderers/webgl.js.map +1 -1
  241. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  242. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  243. package/dist/charts/engine/renderers/webgl2.js +72 -58
  244. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  245. package/dist/charts/engine/renderers/webgpu.cjs +1 -1
  246. package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
  247. package/dist/charts/engine/renderers/webgpu.js +1 -1
  248. package/dist/charts/engine/renderers/webgpu.js.map +1 -1
  249. package/dist/charts/engine/scene.cjs +1 -1
  250. package/dist/charts/engine/scene.cjs.map +1 -1
  251. package/dist/charts/engine/scene.d.cts +104 -4
  252. package/dist/charts/engine/scene.d.ts +104 -4
  253. package/dist/charts/engine/scene.js +412 -193
  254. package/dist/charts/engine/scene.js.map +1 -1
  255. package/dist/charts/engine/shapes/bullet.cjs +1 -1
  256. package/dist/charts/engine/shapes/bullet.cjs.map +1 -1
  257. package/dist/charts/engine/shapes/bullet.js +110 -110
  258. package/dist/charts/engine/shapes/bullet.js.map +1 -1
  259. package/dist/charts/engine/shapes/chart.cjs +1 -1
  260. package/dist/charts/engine/shapes/chart.cjs.map +1 -1
  261. package/dist/charts/engine/shapes/chart.js +4 -1
  262. package/dist/charts/engine/shapes/chart.js.map +1 -1
  263. package/dist/charts/engine/shapes/chord.cjs +2 -0
  264. package/dist/charts/engine/shapes/chord.cjs.map +1 -0
  265. package/dist/charts/engine/shapes/chord.d.cts +18 -0
  266. package/dist/charts/engine/shapes/chord.d.ts +18 -0
  267. package/dist/charts/engine/shapes/chord.js +419 -0
  268. package/dist/charts/engine/shapes/chord.js.map +1 -0
  269. package/dist/charts/engine/shapes/draw.cjs +1 -1
  270. package/dist/charts/engine/shapes/draw.cjs.map +1 -1
  271. package/dist/charts/engine/shapes/draw.d.cts +5 -1
  272. package/dist/charts/engine/shapes/draw.d.ts +5 -1
  273. package/dist/charts/engine/shapes/draw.js +47 -17
  274. package/dist/charts/engine/shapes/draw.js.map +1 -1
  275. package/dist/charts/engine/shapes/hit.cjs +1 -1
  276. package/dist/charts/engine/shapes/hit.cjs.map +1 -1
  277. package/dist/charts/engine/shapes/hit.d.cts +3 -1
  278. package/dist/charts/engine/shapes/hit.d.ts +3 -1
  279. package/dist/charts/engine/shapes/hit.js +75 -46
  280. package/dist/charts/engine/shapes/hit.js.map +1 -1
  281. package/dist/charts/engine/shapes/index.d.cts +3 -2
  282. package/dist/charts/engine/shapes/index.d.ts +3 -2
  283. package/dist/charts/engine/shapes/labels.cjs +1 -1
  284. package/dist/charts/engine/shapes/labels.cjs.map +1 -1
  285. package/dist/charts/engine/shapes/labels.js +12 -4
  286. package/dist/charts/engine/shapes/labels.js.map +1 -1
  287. package/dist/charts/engine/shapes/layout.cjs +2 -2
  288. package/dist/charts/engine/shapes/layout.cjs.map +1 -1
  289. package/dist/charts/engine/shapes/layout.d.cts +3 -1
  290. package/dist/charts/engine/shapes/layout.d.ts +3 -1
  291. package/dist/charts/engine/shapes/layout.js +106 -78
  292. package/dist/charts/engine/shapes/layout.js.map +1 -1
  293. package/dist/charts/engine/shapes/scene.cjs +1 -1
  294. package/dist/charts/engine/shapes/scene.cjs.map +1 -1
  295. package/dist/charts/engine/shapes/scene.d.cts +33 -3
  296. package/dist/charts/engine/shapes/scene.d.ts +33 -3
  297. package/dist/charts/engine/shapes/scene.js +62 -19
  298. package/dist/charts/engine/shapes/scene.js.map +1 -1
  299. package/dist/charts/engine/shapes/types.d.cts +121 -8
  300. package/dist/charts/engine/shapes/types.d.ts +121 -8
  301. package/dist/charts/engine/signature.cjs +1 -1
  302. package/dist/charts/engine/signature.cjs.map +1 -1
  303. package/dist/charts/engine/signature.js +1 -1
  304. package/dist/charts/engine/signature.js.map +1 -1
  305. package/dist/charts/engine/three-d/canvas2d.cjs +1 -1
  306. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -1
  307. package/dist/charts/engine/three-d/canvas2d.d.cts +41 -3
  308. package/dist/charts/engine/three-d/canvas2d.d.ts +41 -3
  309. package/dist/charts/engine/three-d/canvas2d.js +166 -67
  310. package/dist/charts/engine/three-d/canvas2d.js.map +1 -1
  311. package/dist/charts/engine/three-d/chart.cjs +1 -1
  312. package/dist/charts/engine/three-d/chart.cjs.map +1 -1
  313. package/dist/charts/engine/three-d/chart.js +219 -215
  314. package/dist/charts/engine/three-d/chart.js.map +1 -1
  315. package/dist/charts/engine/three-d/detect.cjs +1 -1
  316. package/dist/charts/engine/three-d/detect.cjs.map +1 -1
  317. package/dist/charts/engine/three-d/detect.d.cts +3 -2
  318. package/dist/charts/engine/three-d/detect.d.ts +3 -2
  319. package/dist/charts/engine/three-d/detect.js +22 -20
  320. package/dist/charts/engine/three-d/detect.js.map +1 -1
  321. package/dist/charts/engine/three-d/geometry.cjs +1 -1
  322. package/dist/charts/engine/three-d/geometry.cjs.map +1 -1
  323. package/dist/charts/engine/three-d/geometry.d.cts +6 -0
  324. package/dist/charts/engine/three-d/geometry.d.ts +6 -0
  325. package/dist/charts/engine/three-d/geometry.js +106 -90
  326. package/dist/charts/engine/three-d/geometry.js.map +1 -1
  327. package/dist/charts/engine/three-d/model.cjs +1 -1
  328. package/dist/charts/engine/three-d/model.cjs.map +1 -1
  329. package/dist/charts/engine/three-d/model.d.cts +2 -0
  330. package/dist/charts/engine/three-d/model.d.ts +2 -0
  331. package/dist/charts/engine/three-d/model.js +2 -0
  332. package/dist/charts/engine/three-d/model.js.map +1 -1
  333. package/dist/charts/engine/three-d/oit.cjs +109 -0
  334. package/dist/charts/engine/three-d/oit.cjs.map +1 -0
  335. package/dist/charts/engine/three-d/oit.d.cts +34 -0
  336. package/dist/charts/engine/three-d/oit.d.ts +34 -0
  337. package/dist/charts/engine/three-d/oit.js +111 -0
  338. package/dist/charts/engine/three-d/oit.js.map +1 -0
  339. package/dist/charts/engine/three-d/overlay.cjs +1 -1
  340. package/dist/charts/engine/three-d/overlay.cjs.map +1 -1
  341. package/dist/charts/engine/three-d/overlay.js +43 -36
  342. package/dist/charts/engine/three-d/overlay.js.map +1 -1
  343. package/dist/charts/engine/three-d/render-types.cjs +1 -1
  344. package/dist/charts/engine/three-d/render-types.cjs.map +1 -1
  345. package/dist/charts/engine/three-d/render-types.d.cts +37 -3
  346. package/dist/charts/engine/three-d/render-types.d.ts +37 -3
  347. package/dist/charts/engine/three-d/render-types.js +6 -10
  348. package/dist/charts/engine/three-d/render-types.js.map +1 -1
  349. package/dist/charts/engine/three-d/shaders.cjs +109 -48
  350. package/dist/charts/engine/three-d/shaders.cjs.map +1 -1
  351. package/dist/charts/engine/three-d/shaders.d.cts +12 -5
  352. package/dist/charts/engine/three-d/shaders.d.ts +12 -5
  353. package/dist/charts/engine/three-d/shaders.js +118 -55
  354. package/dist/charts/engine/three-d/shaders.js.map +1 -1
  355. package/dist/charts/engine/three-d/sort.cjs +1 -1
  356. package/dist/charts/engine/three-d/sort.cjs.map +1 -1
  357. package/dist/charts/engine/three-d/sort.d.cts +18 -5
  358. package/dist/charts/engine/three-d/sort.d.ts +18 -5
  359. package/dist/charts/engine/three-d/sort.js +129 -43
  360. package/dist/charts/engine/three-d/sort.js.map +1 -1
  361. package/dist/charts/engine/three-d/types.d.cts +36 -0
  362. package/dist/charts/engine/three-d/types.d.ts +36 -0
  363. package/dist/charts/engine/three-d/webgl.cjs +1 -1
  364. package/dist/charts/engine/three-d/webgl.cjs.map +1 -1
  365. package/dist/charts/engine/three-d/webgl.d.cts +9 -0
  366. package/dist/charts/engine/three-d/webgl.d.ts +9 -0
  367. package/dist/charts/engine/three-d/webgl.js +199 -74
  368. package/dist/charts/engine/three-d/webgl.js.map +1 -1
  369. package/dist/charts/engine/three-d/webgpu.cjs +1 -1
  370. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -1
  371. package/dist/charts/engine/three-d/webgpu.js +231 -94
  372. package/dist/charts/engine/three-d/webgpu.js.map +1 -1
  373. package/dist/charts/engine/trading/chart.cjs +1 -1
  374. package/dist/charts/engine/trading/chart.cjs.map +1 -1
  375. package/dist/charts/engine/trading/chart.d.cts +10 -1
  376. package/dist/charts/engine/trading/chart.d.ts +10 -1
  377. package/dist/charts/engine/trading/chart.js +1677 -813
  378. package/dist/charts/engine/trading/chart.js.map +1 -1
  379. package/dist/charts/engine/trading/drawings.cjs +2 -1
  380. package/dist/charts/engine/trading/drawings.cjs.map +1 -1
  381. package/dist/charts/engine/trading/drawings.d.cts +53 -9
  382. package/dist/charts/engine/trading/drawings.d.ts +53 -9
  383. package/dist/charts/engine/trading/drawings.js +346 -71
  384. package/dist/charts/engine/trading/drawings.js.map +1 -1
  385. package/dist/charts/engine/trading/format.cjs +1 -1
  386. package/dist/charts/engine/trading/format.cjs.map +1 -1
  387. package/dist/charts/engine/trading/format.d.cts +19 -0
  388. package/dist/charts/engine/trading/format.d.ts +19 -0
  389. package/dist/charts/engine/trading/format.js +65 -21
  390. package/dist/charts/engine/trading/format.js.map +1 -1
  391. package/dist/charts/engine/trading/geometry.cjs +1 -1
  392. package/dist/charts/engine/trading/geometry.cjs.map +1 -1
  393. package/dist/charts/engine/trading/geometry.d.cts +16 -0
  394. package/dist/charts/engine/trading/geometry.d.ts +16 -0
  395. package/dist/charts/engine/trading/geometry.js +19 -4
  396. package/dist/charts/engine/trading/geometry.js.map +1 -1
  397. package/dist/charts/engine/trading/index.cjs +1 -1
  398. package/dist/charts/engine/trading/index.d.cts +2 -1
  399. package/dist/charts/engine/trading/index.d.ts +2 -1
  400. package/dist/charts/engine/trading/index.js +4 -3
  401. package/dist/charts/engine/trading/indicators.cjs +1 -1
  402. package/dist/charts/engine/trading/indicators.cjs.map +1 -1
  403. package/dist/charts/engine/trading/indicators.d.cts +180 -10
  404. package/dist/charts/engine/trading/indicators.d.ts +180 -10
  405. package/dist/charts/engine/trading/indicators.js +449 -173
  406. package/dist/charts/engine/trading/indicators.js.map +1 -1
  407. package/dist/charts/engine/trading/labels.cjs +1 -1
  408. package/dist/charts/engine/trading/labels.cjs.map +1 -1
  409. package/dist/charts/engine/trading/labels.js +104 -4
  410. package/dist/charts/engine/trading/labels.js.map +1 -1
  411. package/dist/charts/engine/trading/store.cjs +1 -1
  412. package/dist/charts/engine/trading/store.cjs.map +1 -1
  413. package/dist/charts/engine/trading/store.d.cts +21 -0
  414. package/dist/charts/engine/trading/store.d.ts +21 -0
  415. package/dist/charts/engine/trading/store.js +22 -1
  416. package/dist/charts/engine/trading/store.js.map +1 -1
  417. package/dist/charts/engine/trading/studies.cjs +1 -1
  418. package/dist/charts/engine/trading/studies.cjs.map +1 -1
  419. package/dist/charts/engine/trading/studies.d.cts +49 -8
  420. package/dist/charts/engine/trading/studies.d.ts +49 -8
  421. package/dist/charts/engine/trading/studies.js +352 -93
  422. package/dist/charts/engine/trading/studies.js.map +1 -1
  423. package/dist/charts/engine/trading/sync.cjs +2 -0
  424. package/dist/charts/engine/trading/sync.cjs.map +1 -0
  425. package/dist/charts/engine/trading/sync.d.cts +8 -0
  426. package/dist/charts/engine/trading/sync.d.ts +8 -0
  427. package/dist/charts/engine/trading/sync.js +25 -0
  428. package/dist/charts/engine/trading/sync.js.map +1 -0
  429. package/dist/charts/engine/trading/types.d.cts +514 -16
  430. package/dist/charts/engine/trading/types.d.ts +514 -16
  431. package/dist/charts/engine/types.d.cts +106 -11
  432. package/dist/charts/engine/types.d.ts +106 -11
  433. package/dist/charts/index.cjs +1 -1
  434. package/dist/charts/index.d.cts +3 -2
  435. package/dist/charts/index.d.ts +3 -2
  436. package/dist/charts/index.js +30 -22
  437. package/dist/charts/react/charts.cjs +1 -1
  438. package/dist/charts/react/charts.cjs.map +1 -1
  439. package/dist/charts/react/charts.js +51 -34
  440. package/dist/charts/react/charts.js.map +1 -1
  441. package/dist/charts/react/graph.cjs +2 -0
  442. package/dist/charts/react/graph.cjs.map +1 -0
  443. package/dist/charts/react/graph.d.cts +219 -0
  444. package/dist/charts/react/graph.d.ts +219 -0
  445. package/dist/charts/react/graph.js +160 -0
  446. package/dist/charts/react/graph.js.map +1 -0
  447. package/dist/charts/react/orderbook.cjs +1 -1
  448. package/dist/charts/react/orderbook.cjs.map +1 -1
  449. package/dist/charts/react/orderbook.d.cts +3 -1
  450. package/dist/charts/react/orderbook.d.ts +3 -1
  451. package/dist/charts/react/orderbook.js +1 -0
  452. package/dist/charts/react/orderbook.js.map +1 -1
  453. package/dist/charts/react/shapes.cjs +1 -1
  454. package/dist/charts/react/shapes.cjs.map +1 -1
  455. package/dist/charts/react/shapes.d.cts +88 -4
  456. package/dist/charts/react/shapes.d.ts +88 -4
  457. package/dist/charts/react/shapes.js +55 -12
  458. package/dist/charts/react/shapes.js.map +1 -1
  459. package/dist/charts/react/three-d.cjs +1 -1
  460. package/dist/charts/react/three-d.cjs.map +1 -1
  461. package/dist/charts/react/three-d.d.cts +7 -0
  462. package/dist/charts/react/three-d.d.ts +7 -0
  463. package/dist/charts/react/three-d.js +14 -13
  464. package/dist/charts/react/three-d.js.map +1 -1
  465. package/dist/charts/react/trading.cjs +1 -1
  466. package/dist/charts/react/trading.cjs.map +1 -1
  467. package/dist/charts/react/trading.d.cts +54 -2
  468. package/dist/charts/react/trading.d.ts +54 -2
  469. package/dist/charts/react/trading.js +68 -37
  470. package/dist/charts/react/trading.js.map +1 -1
  471. package/dist/charts/react/types.d.cts +11 -0
  472. package/dist/charts/react/types.d.ts +11 -0
  473. package/dist/core/contracts.cjs +1 -1
  474. package/dist/core/contracts.cjs.map +1 -1
  475. package/dist/core/contracts.js +1 -1
  476. package/dist/core/contracts.js.map +1 -1
  477. package/dist/native/charts/src/canvas.cjs +1 -1
  478. package/dist/native/charts/src/canvas.js +5 -4
  479. package/dist/native/charts/src/engine/axis.cjs +1 -1
  480. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  481. package/dist/native/charts/src/engine/axis.js +42 -19
  482. package/dist/native/charts/src/engine/axis.js.map +1 -1
  483. package/dist/native/charts/src/engine/color.cjs +1 -1
  484. package/dist/native/charts/src/engine/color.cjs.map +1 -1
  485. package/dist/native/charts/src/engine/color.js +47 -5
  486. package/dist/native/charts/src/engine/color.js.map +1 -1
  487. package/dist/native/charts/src/engine/controller.cjs +2 -2
  488. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  489. package/dist/native/charts/src/engine/controller.js +296 -251
  490. package/dist/native/charts/src/engine/controller.js.map +1 -1
  491. package/dist/native/charts/src/engine/data.cjs +1 -1
  492. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  493. package/dist/native/charts/src/engine/data.js +6 -4
  494. package/dist/native/charts/src/engine/data.js.map +1 -1
  495. package/dist/native/charts/src/engine/format.cjs +1 -1
  496. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  497. package/dist/native/charts/src/engine/format.js +15 -2
  498. package/dist/native/charts/src/engine/format.js.map +1 -1
  499. package/dist/native/charts/src/engine/labels.cjs +1 -1
  500. package/dist/native/charts/src/engine/labels.cjs.map +1 -1
  501. package/dist/native/charts/src/engine/labels.js +42 -5
  502. package/dist/native/charts/src/engine/labels.js.map +1 -1
  503. package/dist/native/charts/src/engine/layout.cjs +1 -1
  504. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  505. package/dist/native/charts/src/engine/layout.js +11 -2
  506. package/dist/native/charts/src/engine/layout.js.map +1 -1
  507. package/dist/native/charts/src/engine/model.cjs +1 -1
  508. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  509. package/dist/native/charts/src/engine/model.js +278 -174
  510. package/dist/native/charts/src/engine/model.js.map +1 -1
  511. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  512. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  513. package/dist/native/charts/src/engine/presets.cjs +2 -2
  514. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  515. package/dist/native/charts/src/engine/presets.js +110 -90
  516. package/dist/native/charts/src/engine/presets.js.map +1 -1
  517. package/dist/native/charts/src/engine/scene.cjs +1 -1
  518. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  519. package/dist/native/charts/src/engine/scene.js +421 -202
  520. package/dist/native/charts/src/engine/scene.js.map +1 -1
  521. package/dist/native/charts/src/engine/shapes/bullet.cjs +1 -1
  522. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -1
  523. package/dist/native/charts/src/engine/shapes/bullet.js +110 -110
  524. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -1
  525. package/dist/native/charts/src/engine/shapes/calendar.cjs +1 -1
  526. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -1
  527. package/dist/native/charts/src/engine/shapes/calendar.js +21 -16
  528. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -1
  529. package/dist/native/charts/src/engine/shapes/chord.cjs +2 -0
  530. package/dist/native/charts/src/engine/shapes/chord.cjs.map +1 -0
  531. package/dist/native/charts/src/engine/shapes/chord.js +419 -0
  532. package/dist/native/charts/src/engine/shapes/chord.js.map +1 -0
  533. package/dist/native/charts/src/engine/shapes/draw.cjs +1 -1
  534. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -1
  535. package/dist/native/charts/src/engine/shapes/draw.js +47 -17
  536. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -1
  537. package/dist/native/charts/src/engine/shapes/hit.cjs +1 -1
  538. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -1
  539. package/dist/native/charts/src/engine/shapes/hit.js +73 -44
  540. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -1
  541. package/dist/native/charts/src/engine/shapes/labels.cjs +1 -1
  542. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -1
  543. package/dist/native/charts/src/engine/shapes/labels.js +12 -4
  544. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -1
  545. package/dist/native/charts/src/engine/shapes/layout.cjs +2 -2
  546. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -1
  547. package/dist/native/charts/src/engine/shapes/layout.js +136 -94
  548. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -1
  549. package/dist/native/charts/src/engine/shapes/scene.cjs +1 -1
  550. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -1
  551. package/dist/native/charts/src/engine/shapes/scene.js +62 -19
  552. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -1
  553. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  554. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  555. package/dist/native/components/Chart/ChartBase.js +127 -115
  556. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  557. package/dist/native/components/Chart/charts.cjs +1 -1
  558. package/dist/native/components/Chart/charts.cjs.map +1 -1
  559. package/dist/native/components/Chart/charts.js +8 -5
  560. package/dist/native/components/Chart/charts.js.map +1 -1
  561. package/dist/native/components/Chart/scene.cjs +1 -1
  562. package/dist/native/components/Chart/scene.cjs.map +1 -1
  563. package/dist/native/components/Chart/scene.d.cts +6 -1
  564. package/dist/native/components/Chart/scene.d.ts +6 -1
  565. package/dist/native/components/Chart/scene.js +226 -108
  566. package/dist/native/components/Chart/scene.js.map +1 -1
  567. package/dist/native/components/Chart/types.d.cts +7 -1
  568. package/dist/native/components/Chart/types.d.ts +7 -1
  569. package/dist/native/components/Charts/charts.cjs +1 -1
  570. package/dist/native/components/Charts/charts.cjs.map +1 -1
  571. package/dist/native/components/Charts/charts.js +60 -43
  572. package/dist/native/components/Charts/charts.js.map +1 -1
  573. package/dist/native/components/Charts/types.d.cts +11 -0
  574. package/dist/native/components/Charts/types.d.ts +11 -0
  575. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +1 -1
  576. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -1
  577. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +1 -1
  578. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +1 -1
  579. package/dist/native/components/ShapeChart/ShapeChartBase.js +97 -106
  580. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -1
  581. package/dist/native/components/ShapeChart/charts.cjs +1 -1
  582. package/dist/native/components/ShapeChart/charts.cjs.map +1 -1
  583. package/dist/native/components/ShapeChart/charts.d.cts +6 -1
  584. package/dist/native/components/ShapeChart/charts.d.ts +6 -1
  585. package/dist/native/components/ShapeChart/charts.js +138 -96
  586. package/dist/native/components/ShapeChart/charts.js.map +1 -1
  587. package/dist/native/components/ShapeChart/draw.cjs +1 -1
  588. package/dist/native/components/ShapeChart/draw.cjs.map +1 -1
  589. package/dist/native/components/ShapeChart/draw.d.cts +1 -1
  590. package/dist/native/components/ShapeChart/draw.d.ts +1 -1
  591. package/dist/native/components/ShapeChart/draw.js +26 -17
  592. package/dist/native/components/ShapeChart/draw.js.map +1 -1
  593. package/dist/native/components/ShapeChart/geometry.cjs +1 -1
  594. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -1
  595. package/dist/native/components/ShapeChart/geometry.js +233 -70
  596. package/dist/native/components/ShapeChart/geometry.js.map +1 -1
  597. package/dist/native/components/ShapeChart/index.cjs +1 -1
  598. package/dist/native/components/ShapeChart/index.d.cts +1 -1
  599. package/dist/native/components/ShapeChart/index.d.ts +1 -1
  600. package/dist/native/components/ShapeChart/index.js +2 -2
  601. package/dist/native/components/ShapeChart/recorder.cjs +1 -1
  602. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -1
  603. package/dist/native/components/ShapeChart/recorder.d.cts +10 -1
  604. package/dist/native/components/ShapeChart/recorder.d.ts +10 -1
  605. package/dist/native/components/ShapeChart/recorder.js +19 -10
  606. package/dist/native/components/ShapeChart/recorder.js.map +1 -1
  607. package/dist/native/components/ShapeChart/types.d.cts +95 -8
  608. package/dist/native/components/ShapeChart/types.d.ts +95 -8
  609. package/dist/native/index.cjs +1 -1
  610. package/dist/native/index.js +2 -2
  611. package/dist/native/source/components/Chart/ChartBase.tsx +19 -6
  612. package/dist/native/source/components/Chart/charts.tsx +10 -3
  613. package/dist/native/source/components/Chart/scene.tsx +243 -14
  614. package/dist/native/source/components/Chart/types.ts +7 -0
  615. package/dist/native/source/components/Charts/charts.tsx +37 -2
  616. package/dist/native/source/components/Charts/types.ts +11 -0
  617. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +10 -34
  618. package/dist/native/source/components/ShapeChart/charts.tsx +91 -35
  619. package/dist/native/source/components/ShapeChart/draw.tsx +39 -8
  620. package/dist/native/source/components/ShapeChart/geometry.ts +376 -25
  621. package/dist/native/source/components/ShapeChart/index.ts +1 -0
  622. package/dist/native/source/components/ShapeChart/recorder.ts +20 -5
  623. package/dist/native/source/components/ShapeChart/types.ts +99 -6
  624. package/dist/native/source/manifest.ts +1 -0
  625. package/dist/taro/chart-a11y.d.ts +7 -0
  626. package/dist/taro/charts.d.ts +29 -6
  627. package/dist/taro/index.js +3129 -1902
  628. package/dist/taro/shape-charts.d.ts +99 -5
  629. package/dist/uni/AreaChart.vue +2 -1
  630. package/dist/uni/AreaChart.vue.d.ts +5 -1
  631. package/dist/uni/Badge.vue.d.ts +1 -1
  632. package/dist/uni/BarChart.vue +2 -1
  633. package/dist/uni/BarChart.vue.d.ts +5 -1
  634. package/dist/uni/BoxPlotChart.vue +2 -1
  635. package/dist/uni/BoxPlotChart.vue.d.ts +8 -0
  636. package/dist/uni/BubbleChart.vue +2 -1
  637. package/dist/uni/BubbleChart.vue.d.ts +4 -0
  638. package/dist/uni/BulletChart.vue.d.ts +4 -0
  639. package/dist/uni/CalendarHeatmap.vue.d.ts +2 -0
  640. package/dist/uni/CandlestickChart.vue +2 -1
  641. package/dist/uni/CandlestickChart.vue.d.ts +4 -0
  642. package/dist/uni/Chart.vue +2 -1
  643. package/dist/uni/Chart.vue.d.ts +4 -0
  644. package/dist/uni/ChordChart.vue +93 -0
  645. package/dist/uni/ChordChart.vue.d.ts +136 -0
  646. package/dist/uni/Divider.vue.d.ts +1 -1
  647. package/dist/uni/DonutChart.vue.d.ts +5 -1
  648. package/dist/uni/FunnelChart.vue.d.ts +4 -0
  649. package/dist/uni/GanttChart.vue +2 -1
  650. package/dist/uni/GanttChart.vue.d.ts +15 -0
  651. package/dist/uni/GaugeChart.vue.d.ts +5 -1
  652. package/dist/uni/HeatmapChart.vue +2 -1
  653. package/dist/uni/HeatmapChart.vue.d.ts +8 -2
  654. package/dist/uni/HistogramChart.vue +2 -1
  655. package/dist/uni/HistogramChart.vue.d.ts +4 -0
  656. package/dist/uni/HorizontalBarChart.vue +2 -1
  657. package/dist/uni/HorizontalBarChart.vue.d.ts +3 -1
  658. package/dist/uni/LineChart.vue +2 -1
  659. package/dist/uni/LineChart.vue.d.ts +4 -0
  660. package/dist/uni/MixedChart.vue +2 -1
  661. package/dist/uni/MixedChart.vue.d.ts +4 -0
  662. package/dist/uni/PieChart.vue.d.ts +5 -1
  663. package/dist/uni/QuadrantChart.vue +2 -1
  664. package/dist/uni/QuadrantChart.vue.d.ts +4 -0
  665. package/dist/uni/RadarChart.vue.d.ts +4 -0
  666. package/dist/uni/RadialBarChart.vue.d.ts +4 -0
  667. package/dist/uni/RangeAreaChart.vue +2 -1
  668. package/dist/uni/RangeAreaChart.vue.d.ts +4 -0
  669. package/dist/uni/SankeyChart.vue.d.ts +4 -0
  670. package/dist/uni/ScatterChart.vue +2 -1
  671. package/dist/uni/ScatterChart.vue.d.ts +4 -0
  672. package/dist/uni/Sparkline.vue +2 -1
  673. package/dist/uni/Sparkline.vue.d.ts +4 -0
  674. package/dist/uni/SunburstChart.vue.d.ts +4 -0
  675. package/dist/uni/ToastProvider.vue.d.ts +1 -1
  676. package/dist/uni/TreemapChart.vue.d.ts +4 -0
  677. package/dist/uni/WaterfallChart.vue +2 -1
  678. package/dist/uni/WaterfallChart.vue.d.ts +9 -0
  679. package/dist/uni/chart-a11y.d.ts +7 -0
  680. package/dist/uni/chart-a11y.js +29 -0
  681. package/dist/uni/chart-canvas.d.ts +12 -0
  682. package/dist/uni/chart-canvas.js +15 -1
  683. package/dist/uni/chart-types.d.ts +36 -5
  684. package/dist/uni/chart-types.js +31 -3
  685. package/dist/uni/charts-canvas.js +3 -2
  686. package/dist/uni/index.d.ts +2 -1
  687. package/dist/uni/index.js +1 -0
  688. package/dist/uni/manifest.d.ts +7 -0
  689. package/dist/uni/manifest.js +10 -0
  690. package/dist/uni/named-chart-options.d.ts +11 -2
  691. package/dist/uni/named-chart-options.js +21 -1
  692. package/dist/uni/shape-chart-canvas.d.ts +3 -3
  693. package/dist/uni/shape-chart-canvas.js +17 -58
  694. package/dist/uni/shape-chart-types.d.ts +53 -3
  695. package/dist/uni/shape-chart-types.js +45 -1
  696. package/dist/vue/charts-global.d.ts +48 -0
  697. package/dist/vue/charts.d.ts +18 -0
  698. package/dist/vue/charts.js +56 -0
  699. package/dist/vue/charts.js.map +1 -0
  700. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +2 -0
  701. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +8 -0
  702. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -1
  703. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +8 -2
  704. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  705. package/dist/vue/components/Chart/ChordChart.vue.d.ts +153 -0
  706. package/dist/vue/components/Chart/ChordChart.vue.js +7 -0
  707. package/dist/vue/components/Chart/ChordChart.vue.js.map +1 -0
  708. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js +81 -0
  709. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  710. package/dist/vue/components/Chart/DependencyGraph.vue.d.ts +181 -0
  711. package/dist/vue/components/Chart/DependencyGraph.vue.js +7 -0
  712. package/dist/vue/components/Chart/DependencyGraph.vue.js.map +1 -0
  713. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js +65 -0
  714. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js.map +1 -0
  715. package/dist/vue/components/Chart/GanttChart.vue.d.ts +19 -0
  716. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -1
  717. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +12 -1
  718. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  719. package/dist/vue/components/Chart/GraphChart.vue.d.ts +186 -0
  720. package/dist/vue/components/Chart/GraphChart.vue.js +7 -0
  721. package/dist/vue/components/Chart/GraphChart.vue.js.map +1 -0
  722. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js +62 -0
  723. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  724. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +9 -5
  725. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -1
  726. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +3 -1
  727. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  728. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +2 -0
  729. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +2 -0
  730. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +2 -0
  731. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +2 -0
  732. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +2 -0
  733. package/dist/vue/components/Chart/TradingChart.vue.d.ts +58 -1
  734. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -1
  735. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +31 -0
  736. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  737. package/dist/vue/components/Chart/TreeChart.vue.d.ts +174 -0
  738. package/dist/vue/components/Chart/TreeChart.vue.js +7 -0
  739. package/dist/vue/components/Chart/TreeChart.vue.js.map +1 -0
  740. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js +56 -0
  741. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  742. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +12 -1
  743. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -1
  744. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +8 -2
  745. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  746. package/dist/vue/components/Chart/graph.d.ts +156 -0
  747. package/dist/vue/components/Chart/graph.js +137 -0
  748. package/dist/vue/components/Chart/graph.js.map +1 -0
  749. package/dist/vue/components/Chart/index.d.ts +5 -1
  750. package/dist/vue/components/Chart/index.js +5 -1
  751. package/dist/vue/components/Chart/orderbook.d.ts +5 -1
  752. package/dist/vue/components/Chart/orderbook.js +2 -0
  753. package/dist/vue/components/Chart/orderbook.js.map +1 -1
  754. package/dist/vue/components/Chart/three-d.d.ts +3 -0
  755. package/dist/vue/components/Chart/three-d.js +2 -0
  756. package/dist/vue/components/Chart/three-d.js.map +1 -1
  757. package/dist/vue/components/Chart/trading.d.ts +30 -3
  758. package/dist/vue/components/Chart/trading.js +9 -0
  759. package/dist/vue/components/Chart/trading.js.map +1 -1
  760. package/dist/vue/components/Chart/types.d.ts +74 -2
  761. package/dist/vue/global.d.ts +2 -38
  762. package/dist/vue/groups/charts.js +10 -2
  763. package/dist/vue/groups/charts.js.map +1 -1
  764. package/dist/vue/index.js +6 -2
  765. package/dist/vue/internal/register.d.ts +7 -0
  766. package/dist/vue/internal/register.js +14 -0
  767. package/dist/vue/internal/register.js.map +1 -0
  768. package/dist/vue/plugin.d.ts +9 -4
  769. package/dist/vue/plugin.js +6 -11
  770. package/dist/vue/plugin.js.map +1 -1
  771. package/dist/weapp/area-chart/index.wxml +1 -1
  772. package/dist/weapp/bar-chart/index.wxml +1 -1
  773. package/dist/weapp/box-plot-chart/index.wxml +1 -1
  774. package/dist/weapp/bubble-chart/index.wxml +1 -1
  775. package/dist/weapp/candlestick-chart/index.wxml +1 -1
  776. package/dist/weapp/chart/index.wxml +1 -1
  777. package/dist/weapp/charts/canvas.js +1987 -175
  778. package/dist/weapp/charts/core.js +3 -0
  779. package/dist/weapp/chord-chart/index.js +1 -0
  780. package/dist/weapp/chord-chart/index.json +1 -0
  781. package/dist/weapp/chord-chart/index.wxml +1 -0
  782. package/dist/weapp/chord-chart/index.wxss +1 -0
  783. package/dist/weapp/controls.js +148 -57
  784. package/dist/weapp/gantt-chart/index.wxml +1 -1
  785. package/dist/weapp/heatmap-chart/index.wxml +1 -1
  786. package/dist/weapp/histogram-chart/index.wxml +1 -1
  787. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -1
  788. package/dist/weapp/line-chart/index.wxml +1 -1
  789. package/dist/weapp/mixed-chart/index.wxml +1 -1
  790. package/dist/weapp/quadrant-chart/index.wxml +1 -1
  791. package/dist/weapp/range-area-chart/index.wxml +1 -1
  792. package/dist/weapp/scatter-chart/index.wxml +1 -1
  793. package/dist/weapp/sparkline/index.wxml +1 -1
  794. package/dist/weapp/types.d.ts +96 -4
  795. package/dist/weapp/waterfall-chart/index.wxml +1 -1
  796. package/dist/web-components/components/chart/charts.d.ts +4 -2
  797. package/dist/web-components/components/chart/charts.js +8 -1
  798. package/dist/web-components/components/chart/charts.js.map +1 -1
  799. package/dist/web-components/components/chart/extended.d.ts +21 -7
  800. package/dist/web-components/components/chart/extended.js +29 -9
  801. package/dist/web-components/components/chart/extended.js.map +1 -1
  802. package/dist/web-components/components/chart/shapes-extended.d.ts +37 -1
  803. package/dist/web-components/components/chart/shapes-extended.js +27 -1
  804. package/dist/web-components/components/chart/shapes-extended.js.map +1 -1
  805. package/dist/web-components/components/chart-3d/chart-3d.d.ts +1 -1
  806. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -1
  807. package/dist/web-components/components/graph/graph.d.ts +156 -0
  808. package/dist/web-components/components/graph/graph.js +150 -0
  809. package/dist/web-components/components/graph/graph.js.map +1 -0
  810. package/dist/web-components/components/trading-chart/trading-chart.d.ts +49 -2
  811. package/dist/web-components/components/trading-chart/trading-chart.js +62 -0
  812. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -1
  813. package/dist/web-components/elements/chart.d.ts +1 -1
  814. package/dist/web-components/elements/chart.js +6 -5
  815. package/dist/web-components/elements/chart.js.map +1 -1
  816. package/dist/web-components/elements/graph.d.ts +2 -0
  817. package/dist/web-components/elements/graph.js +12 -0
  818. package/dist/web-components/elements/graph.js.map +1 -0
  819. package/dist/web-components/html-custom-data.json +318 -4
  820. package/dist/web-components/types/react.d.ts +63 -4
  821. package/dist/web-components/types/solid.d.ts +55 -8
  822. package/dist/web-components/types/svelte.d.ts +55 -8
  823. package/dist/web-components/types/vue.d.ts +55 -4
  824. package/package.json +16 -1
@@ -1,10 +1,12 @@
1
- import { drawOrder as e } from "./render-types.js";
2
- import { GLSL_ATTRIBUTES as t, glslPrograms as n, itemUniforms as r, writesDepth as i } from "./shaders.js";
1
+ import { claimGlSlot as e } from "../renderers/gl-budget.js";
2
+ import { drawOrder as t, drawRank as n, writesDepth as r } from "./render-types.js";
3
+ import { GLSL_COMPOSITE as i } from "./oit.js";
4
+ import { GLSL_ATTRIBUTES as a, glslOitPrograms as o, glslPrograms as s, itemUniforms as c } from "./shaders.js";
3
5
  //#region src/engine/three-d/webgl.ts
4
- var a = /swiftshader|llvmpipe|softpipe|software|basic render driver|microsoft basic/i, o = (e) => {
6
+ var l = /swiftshader|llvmpipe|softpipe|software|basic render driver|microsoft basic/i, u = (e) => {
5
7
  let t = e.getExtension("WEBGL_debug_renderer_info"), n = t ? e.getParameter(t.UNMASKED_RENDERER_WEBGL) : e.getParameter(e.RENDERER);
6
- return a.test(String(n ?? ""));
7
- }, s = [
8
+ return l.test(String(n ?? ""));
9
+ }, d = [
8
10
  "u_viewProj",
9
11
  "u_viewport",
10
12
  "u_eye",
@@ -12,20 +14,20 @@ var a = /swiftshader|llvmpipe|softpipe|software|basic render driver|microsoft ba
12
14
  "u_material",
13
15
  "u_params",
14
16
  "u_fog"
15
- ], c = (e, t, n) => {
17
+ ], f = (e, t, n) => {
16
18
  let r = (t, n) => {
17
19
  let r = e.createShader(t);
18
20
  return r ? (e.shaderSource(r, n), e.compileShader(r), e.getShaderParameter(r, e.COMPILE_STATUS) ? r : (e.deleteShader(r), null)) : null;
19
21
  }, i = r(e.VERTEX_SHADER, t.vertex), a = r(e.FRAGMENT_SHADER, t.fragment), o = e.createProgram();
20
22
  if (!i || !a || !o) return null;
21
23
  if (e.attachShader(o, i), e.attachShader(o, a), n.forEach((t, n) => e.bindAttribLocation(o, n, t)), e.linkProgram(o), e.deleteShader(i), e.deleteShader(a), !e.getProgramParameter(o, e.LINK_STATUS)) return e.deleteProgram(o), null;
22
- let c = {};
23
- for (let t of s) c[t] = e.getUniformLocation(o, t);
24
+ let s = {};
25
+ for (let t of d) s[t] = e.getUniformLocation(o, t);
24
26
  return {
25
27
  program: o,
26
- uniforms: c
28
+ uniforms: s
27
29
  };
28
- }, l = new Float32Array([
30
+ }, p = new Float32Array([
29
31
  0,
30
32
  0,
31
33
  1,
@@ -34,52 +36,138 @@ var a = /swiftshader|llvmpipe|softpipe|software|basic render driver|microsoft ba
34
36
  1,
35
37
  1,
36
38
  1
37
- ]), u = 4, d = (a, s, d, f = !1) => {
38
- let p = {
39
+ ]), m = 4, h = 4, g = (e) => {
40
+ let t = Number(e.getParameter(e.MAX_SAMPLES)) || 0, n = Math.max(0, Math.min(h, t));
41
+ if (!e.getExtension("EXT_color_buffer_float")) return {
42
+ samples: n,
43
+ orderIndependent: !1
44
+ };
45
+ let r = e.getInternalformatParameter(e.RENDERBUFFER, e.RGBA16F, e.SAMPLES), i = 0;
46
+ for (let e = 0; e < (r?.length ?? 0); e++) i = Math.max(i, r?.[e] ?? 0);
47
+ return n > 1 && i < 2 ? {
48
+ samples: n,
49
+ orderIndependent: !1
50
+ } : {
51
+ samples: Math.min(n, i || n),
52
+ orderIndependent: !0
53
+ };
54
+ }, _ = (l, d, h, _ = !1) => {
55
+ let v = {
39
56
  alpha: !0,
40
57
  premultipliedAlpha: !0,
41
- antialias: !0,
58
+ antialias: d === 1,
42
59
  depth: !0,
43
60
  stencil: !1,
44
61
  preserveDrawingBuffer: !1,
45
- failIfMajorPerformanceCaveat: f
46
- }, m = a.getContext(s === 2 ? "webgl2" : "webgl", p);
47
- if (!m) return null;
48
- let h = () => m.getExtension("WEBGL_lose_context")?.loseContext(), g = s === 2 ? m : null, _ = g ? null : m.getExtension("ANGLE_instanced_arrays"), v = g ? !0 : !!m.getExtension("OES_element_index_uint");
49
- if (!g && (!_ || !v) || f && o(m)) return h(), null;
50
- let y = (e, t) => {
51
- g ? g.vertexAttribDivisor(e, t) : _?.vertexAttribDivisorANGLE(e, t);
52
- }, b = (e) => {
53
- g ? g.drawArraysInstanced(m.TRIANGLE_STRIP, 0, 4, e) : _?.drawArraysInstancedANGLE(m.TRIANGLE_STRIP, 0, 4, e);
54
- }, x = n(s), S = c(m, x.points, t.points), C = c(m, x.mesh, t.mesh), w = c(m, x.lines, t.lines), T = m.createBuffer();
55
- if (!S || !C || !w || !T) return h(), null;
56
- let E = {
57
- points: S,
58
- mesh: C,
59
- lines: w
60
- };
61
- m.bindBuffer(m.ARRAY_BUFFER, T), m.bufferData(m.ARRAY_BUFFER, l, m.STATIC_DRAW);
62
- let D = !1, O = (e) => {
63
- e.preventDefault(), D = !0, d();
62
+ failIfMajorPerformanceCaveat: _
63
+ }, y = l.getContext(d === 2 ? "webgl2" : "webgl", v);
64
+ if (!y) return null;
65
+ let b = () => y.getExtension("WEBGL_lose_context")?.loseContext(), x = d === 2 ? y : null;
66
+ if (_ && u(y)) return b(), null;
67
+ let S = null, C = (e, t) => {
68
+ x ? x.vertexAttribDivisor(e, t) : S?.vertexAttribDivisorANGLE(e, t);
69
+ }, w = (e) => {
70
+ x ? x.drawArraysInstanced(y.TRIANGLE_STRIP, 0, 4, e) : S?.drawArraysInstancedANGLE(y.TRIANGLE_STRIP, 0, 4, e);
71
+ }, T = null, E = null, D = {
72
+ samples: 0,
73
+ orderIndependent: !1
74
+ }, O = null, k = null, A = () => {
75
+ T = null, E = null, O = null, k = null, S = x ? null : y.getExtension("ANGLE_instanced_arrays");
76
+ let e = x ? !0 : !!y.getExtension("OES_element_index_uint");
77
+ if (!x && (!S || !e)) return !1;
78
+ let t = s(d), n = f(y, t.points, a.points), r = f(y, t.mesh, a.mesh), c = f(y, t.lines, a.lines), l = y.createBuffer();
79
+ if (!n || !r || !c || !l) return !1;
80
+ if (T = {
81
+ points: n,
82
+ mesh: r,
83
+ lines: c
84
+ }, E = l, y.bindBuffer(y.ARRAY_BUFFER, E), y.bufferData(y.ARRAY_BUFFER, p, y.STATIC_DRAW), D = x ? g(x) : {
85
+ samples: 0,
86
+ orderIndependent: !1
87
+ }, x && D.orderIndependent) {
88
+ let e = o(), t = f(y, e.points, a.points), n = f(y, e.mesh, a.mesh), r = f(y, i, []);
89
+ if (t && n && r) O = {
90
+ points: t,
91
+ mesh: n,
92
+ composite: r.program
93
+ }, y.useProgram(r.program), y.uniform1i(y.getUniformLocation(r.program, "u_accum"), 0), y.uniform1i(y.getUniformLocation(r.program, "u_extra"), 1);
94
+ else for (let e of [
95
+ t,
96
+ n,
97
+ r
98
+ ]) e && y.deleteProgram(e.program);
99
+ }
100
+ return !0;
64
101
  };
65
- a.addEventListener("webglcontextlost", O);
66
- let k = /* @__PURE__ */ new Map(), A = /* @__PURE__ */ new Float32Array(40), j = (e, t, n, r, i, a) => {
67
- m.enableVertexAttribArray(e), m.vertexAttribPointer(e, t, n, n === m.UNSIGNED_BYTE, r, i), y(e, +!!a);
68
- }, M = (e, t) => {
69
- let n = m.FLOAT, r = m.UNSIGNED_BYTE, i;
70
- e.kind === "mesh" ? (m.bindBuffer(m.ARRAY_BUFFER, t.vertex), j(0, 3, n, 28, 0, !1), j(1, 3, n, 28, 12, !1), j(2, 4, r, 28, 24, !1), i = 3) : (m.bindBuffer(m.ARRAY_BUFFER, T), j(0, 2, n, 0, 0, !1), m.bindBuffer(m.ARRAY_BUFFER, t.vertex), e.kind === "points" ? (j(1, 3, n, 20, 0, !0), j(2, 1, n, 20, 12, !0), j(3, 4, r, 20, 16, !0)) : (j(1, 3, n, 28, 0, !0), j(2, 3, n, 28, 12, !0), j(3, 4, r, 28, 24, !0)), i = 4);
71
- for (let e = i; e < u; e++) m.disableVertexAttribArray(e), y(e, 0);
72
- }, N = (e) => {
73
- let t = k.get(e.key);
74
- if (t && t.version === e.version && t.kind === e.kind) return e.kind === "mesh" && t.index && (e.order ?? 0) !== t.order && (m.bindBuffer(m.ELEMENT_ARRAY_BUFFER, t.index), m.bufferSubData(m.ELEMENT_ARRAY_BUFFER, 0, e.indices), t.order = e.order ?? 0), t;
75
- t && (m.deleteBuffer(t.vertex), t.index && m.deleteBuffer(t.index), k.delete(e.key));
76
- let n = m.createBuffer();
102
+ if (!A()) return b(), null;
103
+ let j = (e) => {
104
+ if (e.oit) {
105
+ y.deleteFramebuffer(e.oit.fbo);
106
+ for (let t of e.oit.buffers) y.deleteRenderbuffer(t);
107
+ for (let t of e.oit.resolved) y.deleteFramebuffer(t);
108
+ for (let t of e.oit.textures) y.deleteTexture(t);
109
+ e.oit = null;
110
+ }
111
+ }, M = () => {
112
+ k && (j(k), y.deleteFramebuffer(k.main), y.deleteRenderbuffer(k.color), y.deleteRenderbuffer(k.depth), k = null);
113
+ }, N = (e, t, n) => {
114
+ let r = y.createRenderbuffer();
115
+ return !x || !r ? r : (y.bindRenderbuffer(y.RENDERBUFFER, r), D.samples > 1 ? x.renderbufferStorageMultisample(y.RENDERBUFFER, D.samples, e, t, n) : y.renderbufferStorage(y.RENDERBUFFER, e, t, n), r);
116
+ }, P = () => y.checkFramebufferStatus(y.FRAMEBUFFER) === y.FRAMEBUFFER_COMPLETE, F = () => {
117
+ if (!x) return null;
118
+ let { width: e, height: t } = l;
119
+ if (k?.width === e && k.height === t) return k;
120
+ M();
121
+ let n = y.createFramebuffer(), r = N(x.RGBA8, e, t), i = N(x.DEPTH_COMPONENT24, e, t);
122
+ return !n || !r || !i ? null : (y.bindFramebuffer(y.FRAMEBUFFER, n), y.framebufferRenderbuffer(y.FRAMEBUFFER, y.COLOR_ATTACHMENT0, y.RENDERBUFFER, r), y.framebufferRenderbuffer(y.FRAMEBUFFER, y.DEPTH_ATTACHMENT, y.RENDERBUFFER, i), k = {
123
+ width: e,
124
+ height: t,
125
+ main: n,
126
+ color: r,
127
+ depth: i,
128
+ oit: null
129
+ }, P() ? k : (M(), null));
130
+ }, I = (e) => {
131
+ if (e.oit || !x) return e.oit;
132
+ let { width: t, height: n } = e, r = y.createFramebuffer(), i = N(x.RGBA16F, t, n), a = N(x.RGBA16F, t, n), o = [y.createFramebuffer(), y.createFramebuffer()], s = [y.createTexture(), y.createTexture()], [c, l] = o, [u, d] = s;
133
+ if (!r || !i || !a || !c || !l || !u || !d) return null;
134
+ e.oit = {
135
+ fbo: r,
136
+ buffers: [i, a],
137
+ resolved: [c, l],
138
+ textures: [u, d]
139
+ }, y.bindFramebuffer(y.FRAMEBUFFER, r), y.framebufferRenderbuffer(y.FRAMEBUFFER, y.COLOR_ATTACHMENT0, y.RENDERBUFFER, i), y.framebufferRenderbuffer(y.FRAMEBUFFER, x.COLOR_ATTACHMENT1, y.RENDERBUFFER, a), y.framebufferRenderbuffer(y.FRAMEBUFFER, y.DEPTH_ATTACHMENT, y.RENDERBUFFER, e.depth), x.drawBuffers([y.COLOR_ATTACHMENT0, x.COLOR_ATTACHMENT1]);
140
+ let f = P();
141
+ return e.oit.textures.forEach((r, i) => {
142
+ y.bindTexture(y.TEXTURE_2D, r), x.texStorage2D(y.TEXTURE_2D, 1, x.RGBA16F, t, n), y.texParameteri(y.TEXTURE_2D, y.TEXTURE_MIN_FILTER, y.NEAREST), y.texParameteri(y.TEXTURE_2D, y.TEXTURE_MAG_FILTER, y.NEAREST), y.bindFramebuffer(y.FRAMEBUFFER, e.oit.resolved[i]), y.framebufferTexture2D(y.FRAMEBUFFER, y.COLOR_ATTACHMENT0, y.TEXTURE_2D, r, 0), f && (f = P());
143
+ }), y.bindTexture(y.TEXTURE_2D, null), f || (j(e), O = null), e.oit;
144
+ }, L = !1, R = null, z = /* @__PURE__ */ new Map(), B = e(l, y, {
145
+ suspend: () => {
146
+ z.clear(), T = null, O = null, E = null, k = null;
147
+ },
148
+ restore: () => {
149
+ L || (A() ? R && q(R.items, R.frame) : (L = !0, h()));
150
+ },
151
+ lost: () => {
152
+ L = !0, h();
153
+ }
154
+ }), V = /* @__PURE__ */ new Float32Array(40), H = (e, t, n, r, i, a) => {
155
+ y.enableVertexAttribArray(e), y.vertexAttribPointer(e, t, n, n === y.UNSIGNED_BYTE, r, i), C(e, +!!a);
156
+ }, U = (e, t) => {
157
+ let n = y.FLOAT, r = y.UNSIGNED_BYTE, i;
158
+ e.kind === "mesh" ? (y.bindBuffer(y.ARRAY_BUFFER, t.vertex), H(0, 3, n, 28, 0, !1), H(1, 3, n, 28, 12, !1), H(2, 4, r, 28, 24, !1), i = 3) : (y.bindBuffer(y.ARRAY_BUFFER, E), H(0, 2, n, 0, 0, !1), y.bindBuffer(y.ARRAY_BUFFER, t.vertex), e.kind === "points" ? (H(1, 3, n, 20, 0, !0), H(2, 1, n, 20, 12, !0), H(3, 4, r, 20, 16, !0)) : (H(1, 3, n, 28, 0, !0), H(2, 3, n, 28, 12, !0), H(3, 4, r, 28, 24, !0)), i = 4);
159
+ for (let e = i; e < m; e++) y.disableVertexAttribArray(e), C(e, 0);
160
+ }, W = (e) => {
161
+ let t = z.get(e.key);
162
+ if (t && t.version === e.version && t.kind === e.kind) return e.kind === "mesh" && t.index && (e.order ?? 0) !== t.order && (y.bindBuffer(y.ELEMENT_ARRAY_BUFFER, t.index), y.bufferSubData(y.ELEMENT_ARRAY_BUFFER, 0, e.indices), t.order = e.order ?? 0), t;
163
+ t && (y.deleteBuffer(t.vertex), t.index && y.deleteBuffer(t.index), z.delete(e.key));
164
+ let n = y.createBuffer();
77
165
  if (!n) return null;
78
- m.bindBuffer(m.ARRAY_BUFFER, n), m.bufferData(m.ARRAY_BUFFER, e.kind === "mesh" ? e.vertices : e.data, m.STATIC_DRAW);
166
+ y.bindBuffer(y.ARRAY_BUFFER, n), y.bufferData(y.ARRAY_BUFFER, e.kind === "mesh" ? e.vertices : e.data, y.STATIC_DRAW);
79
167
  let r = null;
80
168
  if (e.kind === "mesh") {
81
- if (r = m.createBuffer(), !r) return m.deleteBuffer(n), null;
82
- m.bindBuffer(m.ELEMENT_ARRAY_BUFFER, r), m.bufferData(m.ELEMENT_ARRAY_BUFFER, e.indices, e.order === void 0 ? m.STATIC_DRAW : m.DYNAMIC_DRAW);
169
+ if (r = y.createBuffer(), !r) return y.deleteBuffer(n), null;
170
+ y.bindBuffer(y.ELEMENT_ARRAY_BUFFER, r), y.bufferData(y.ELEMENT_ARRAY_BUFFER, e.indices, e.order === void 0 ? y.STATIC_DRAW : y.DYNAMIC_DRAW);
83
171
  }
84
172
  let i = {
85
173
  version: e.version,
@@ -88,43 +176,80 @@ var a = /swiftshader|llvmpipe|softpipe|software|basic render driver|microsoft ba
88
176
  index: r,
89
177
  order: e.kind === "mesh" ? e.order ?? 0 : 0
90
178
  };
91
- return k.set(e.key, i), i;
179
+ return z.set(e.key, i), i;
180
+ }, G = (e, t, n, r) => {
181
+ r.add(e.key);
182
+ let i = e.kind === "mesh" ? e.indices.length : e.count;
183
+ if (i <= 0) return;
184
+ let a = W(e);
185
+ if (!a) return;
186
+ y.useProgram(t.program);
187
+ let o = c(e, n, V), s = t.uniforms;
188
+ y.uniformMatrix4fv(s.u_viewProj, !1, o.subarray(0, 16)), y.uniform4fv(s.u_viewport, o.subarray(16, 20)), y.uniform4fv(s.u_eye, o.subarray(20, 24)), y.uniform4fv(s.u_light, o.subarray(24, 28)), y.uniform4fv(s.u_material, o.subarray(28, 32)), y.uniform4fv(s.u_params, o.subarray(32, 36)), y.uniform4fv(s.u_fog, o.subarray(36, 40)), U(e, a), e.kind === "mesh" ? (y.bindBuffer(y.ELEMENT_ARRAY_BUFFER, a.index), y.drawElements(y.TRIANGLES, i, y.UNSIGNED_INT, 0)) : w(i);
189
+ }, K = (e, t, n, r, i) => {
190
+ if (!x || !O) return;
191
+ let { width: a, height: o } = e;
192
+ y.bindFramebuffer(y.FRAMEBUFFER, t.fbo), x.clearBufferfv(x.COLOR, 0, [
193
+ 0,
194
+ 0,
195
+ 0,
196
+ 0
197
+ ]), x.clearBufferfv(x.COLOR, 1, [
198
+ 0,
199
+ 0,
200
+ 0,
201
+ 0
202
+ ]), y.depthMask(!1), y.blendFunc(y.ONE, y.ONE);
203
+ for (let e of n) e.kind !== "lines" && G(e, O[e.kind], r, i);
204
+ y.bindFramebuffer(x.READ_FRAMEBUFFER, t.fbo), t.resolved.forEach((e, t) => {
205
+ x.readBuffer(t === 0 ? y.COLOR_ATTACHMENT0 : x.COLOR_ATTACHMENT1), y.bindFramebuffer(x.DRAW_FRAMEBUFFER, e), x.blitFramebuffer(0, 0, a, o, 0, 0, a, o, y.COLOR_BUFFER_BIT, y.NEAREST);
206
+ }), y.bindFramebuffer(y.FRAMEBUFFER, e.main), y.blendFunc(y.ONE, y.ONE_MINUS_SRC_ALPHA), y.disable(y.DEPTH_TEST);
207
+ for (let e = 0; e < m; e++) y.disableVertexAttribArray(e), C(e, 0);
208
+ y.useProgram(O.composite), t.textures.forEach((e, t) => {
209
+ y.activeTexture(y.TEXTURE0 + t), y.bindTexture(y.TEXTURE_2D, e);
210
+ }), y.drawArrays(y.TRIANGLES, 0, 3), y.bindTexture(y.TEXTURE_2D, null), y.activeTexture(y.TEXTURE0), y.bindTexture(y.TEXTURE_2D, null), y.enable(y.DEPTH_TEST);
211
+ }, q = (e, i) => {
212
+ let a = T;
213
+ if (!a) return;
214
+ let o = F();
215
+ y.bindFramebuffer(y.FRAMEBUFFER, o ? o.main : null), y.viewport(0, 0, l.width, l.height), y.clearColor(0, 0, 0, 0), y.clearDepth(1), y.depthMask(!0), y.clear(y.COLOR_BUFFER_BIT | y.DEPTH_BUFFER_BIT), y.enable(y.BLEND), y.blendFunc(y.ONE, y.ONE_MINUS_SRC_ALPHA), y.enable(y.DEPTH_TEST), y.depthFunc(y.LEQUAL), y.disable(y.CULL_FACE);
216
+ let s = /* @__PURE__ */ new Set(), c = t(e), u = c.filter((e) => n(e) === 2), d = o && O && u.length > 0 ? I(o) : null, f = !1, p = !d;
217
+ for (let e of c) {
218
+ let t = n(e);
219
+ if (d && t === 2) continue;
220
+ o && d && t === 3 && !p && (K(o, d, u, i, s), p = !0, f = !1), y.depthMask(r(e));
221
+ let c = e.kind === "points" && !!e.additive;
222
+ c !== f && (c ? y.blendFuncSeparate(y.ONE, y.ONE, y.ONE, y.ONE_MINUS_SRC_ALPHA) : y.blendFunc(y.ONE, y.ONE_MINUS_SRC_ALPHA), f = c), G(e, a[e.kind], i, s);
223
+ }
224
+ o && d && !p && (K(o, d, u, i, s), f = !1), y.depthMask(!0), f && y.blendFunc(y.ONE, y.ONE_MINUS_SRC_ALPHA), o && x && (y.bindFramebuffer(x.READ_FRAMEBUFFER, o.main), y.bindFramebuffer(x.DRAW_FRAMEBUFFER, null), x.blitFramebuffer(0, 0, o.width, o.height, 0, 0, o.width, o.height, y.COLOR_BUFFER_BIT, y.NEAREST), y.bindFramebuffer(y.FRAMEBUFFER, null));
225
+ for (let [e, t] of z) s.has(e) || (y.deleteBuffer(t.vertex), t.index && y.deleteBuffer(t.index), z.delete(e));
92
226
  };
93
227
  return {
94
- kind: s === 2 ? "webgl2" : "webgl",
95
- canvas: a,
228
+ kind: d === 2 ? "webgl2" : "webgl",
229
+ canvas: l,
230
+ get orderIndependent() {
231
+ return !!O;
232
+ },
96
233
  resize(e, t) {
97
- a.width = Math.max(1, e), a.height = Math.max(1, t);
234
+ l.width = Math.max(1, e), l.height = Math.max(1, t);
98
235
  },
99
- render(t, n) {
100
- if (D || m.isContextLost()) return;
101
- m.viewport(0, 0, a.width, a.height), m.clearColor(0, 0, 0, 0), m.clearDepth(1), m.depthMask(!0), m.clear(m.COLOR_BUFFER_BIT | m.DEPTH_BUFFER_BIT), m.enable(m.BLEND), m.blendFunc(m.ONE, m.ONE_MINUS_SRC_ALPHA), m.enable(m.DEPTH_TEST), m.depthFunc(m.LEQUAL), m.disable(m.CULL_FACE);
102
- let o = /* @__PURE__ */ new Set();
103
- for (let a of e(t)) {
104
- o.add(a.key);
105
- let e = a.kind === "mesh" ? a.indices.length : a.count;
106
- if (e <= 0) continue;
107
- let t = N(a);
108
- if (!t) continue;
109
- let s = E[a.kind];
110
- m.useProgram(s.program);
111
- let c = r(a, n, A), l = s.uniforms;
112
- m.uniformMatrix4fv(l.u_viewProj, !1, c.subarray(0, 16)), m.uniform4fv(l.u_viewport, c.subarray(16, 20)), m.uniform4fv(l.u_eye, c.subarray(20, 24)), m.uniform4fv(l.u_light, c.subarray(24, 28)), m.uniform4fv(l.u_material, c.subarray(28, 32)), m.uniform4fv(l.u_params, c.subarray(32, 36)), m.uniform4fv(l.u_fog, c.subarray(36, 40)), m.depthMask(i(a)), M(a, t), a.kind === "mesh" ? (m.bindBuffer(m.ELEMENT_ARRAY_BUFFER, t.index), m.drawElements(m.TRIANGLES, e, m.UNSIGNED_INT, 0)) : b(e);
113
- }
114
- m.depthMask(!0);
115
- for (let [e, t] of k) o.has(e) || (m.deleteBuffer(t.vertex), t.index && m.deleteBuffer(t.index), k.delete(e));
236
+ render(e, t) {
237
+ R = {
238
+ items: e,
239
+ frame: t
240
+ }, !(L || !B.use() || y.isContextLost()) && q(e, t);
116
241
  },
117
242
  destroy() {
118
- if (a.removeEventListener("webglcontextlost", O), !m.isContextLost()) {
119
- for (let e of k.values()) m.deleteBuffer(e.vertex), e.index && m.deleteBuffer(e.index);
120
- for (let e of Object.values(E)) m.deleteProgram(e.program);
121
- m.deleteBuffer(T);
243
+ if (B.release(), R = null, !y.isContextLost()) {
244
+ for (let e of z.values()) y.deleteBuffer(e.vertex), e.index && y.deleteBuffer(e.index);
245
+ for (let e of Object.values(T ?? {})) y.deleteProgram(e.program);
246
+ O && (y.deleteProgram(O.points.program), y.deleteProgram(O.mesh.program), y.deleteProgram(O.composite)), M(), y.deleteBuffer(E);
122
247
  }
123
- k.clear(), h();
248
+ O = null, T = null, E = null, k = null, z.clear(), b();
124
249
  }
125
250
  };
126
251
  };
127
252
  //#endregion
128
- export { a as SOFTWARE_RENDERER, d as createWebGl3D, o as isSoftwareRenderer };
253
+ export { l as SOFTWARE_RENDERER, _ as createWebGl3D, u as isSoftwareRenderer, g as webGl2Capabilities };
129
254
 
130
255
  //# sourceMappingURL=webgl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl.js","names":["SOFTWARE_RENDERER","isSoftwareRenderer","info","gl","name","UNIFORMS","compile","shader","s","type","code","vs","source","fs","program","attributes","i","uniforms","CORNERS","MAX_LOCATIONS","createWebGl3D","requireHardware","canvas","version","loseContext","gl2","angle","uint","divisor","location","value","drawInstanced","count","sources","glslPrograms","points","GLSL_ATTRIBUTES","mesh","lines","corners","programs","lost","handleLost","event","onLost","resources","uniformData","attribute","size","stride","offset","bind","F","U8","used","item","res","upload","existing","vertex","index","width","height","seen","drawOrder","items","u","itemUniforms","frame","loc","writesDepth","key","p"],"sources":["../../../../../charts/src/engine/three-d/webgl.ts"],"sourcesContent":["// WebGL2 / WebGL (1) backend of the 3D charts: the same GLSL for both\n// (a macro prefix makes it GLSL ES 3.0), instancing through WebGL2 or\n// ANGLE_instanced_arrays, 32-bit indices through WebGL2 or\n// OES_element_index_uint. Attributes are bound for every draw (no vertex\n// array objects in WebGL 1): a few calls per item.\n\nimport type { RendererLostHandler } from \"../renderers/types\";\nimport {\n POINT_STRIDE,\n SEGMENT_STRIDE,\n VERTEX_STRIDE,\n drawOrder,\n type Item3D,\n type Renderer3D,\n} from \"./render-types\";\nimport {\n GLSL_ATTRIBUTES,\n glslPrograms,\n itemUniforms,\n writesDepth,\n type GlslSource,\n} from \"./shaders\";\n\ntype Gl = WebGLRenderingContext | WebGL2RenderingContext;\n\n/** Software rasterizers behind a WebGL context */\nexport const SOFTWARE_RENDERER =\n /swiftshader|llvmpipe|softpipe|software|basic render driver|microsoft basic/i;\n\nexport const isSoftwareRenderer = (gl: Gl): boolean => {\n const info = gl.getExtension(\"WEBGL_debug_renderer_info\");\n const name = info\n ? gl.getParameter(info.UNMASKED_RENDERER_WEBGL)\n : gl.getParameter(gl.RENDERER);\n return SOFTWARE_RENDERER.test(String(name ?? \"\"));\n};\n\nconst UNIFORMS = [\n \"u_viewProj\",\n \"u_viewport\",\n \"u_eye\",\n \"u_light\",\n \"u_material\",\n \"u_params\",\n \"u_fog\",\n] as const;\n\ninterface Program {\n program: WebGLProgram;\n uniforms: Record<(typeof UNIFORMS)[number], WebGLUniformLocation | null>;\n}\n\nconst compile = (\n gl: Gl,\n source: GlslSource,\n attributes: readonly string[],\n): Program | null => {\n const shader = (type: number, code: string) => {\n const s = gl.createShader(type);\n if (!s) return null;\n gl.shaderSource(s, code);\n gl.compileShader(s);\n if (!gl.getShaderParameter(s, gl.COMPILE_STATUS)) {\n gl.deleteShader(s);\n return null;\n }\n return s;\n };\n const vs = shader(gl.VERTEX_SHADER, source.vertex);\n const fs = shader(gl.FRAGMENT_SHADER, source.fragment);\n const program = gl.createProgram();\n if (!vs || !fs || !program) return null;\n gl.attachShader(program, vs);\n gl.attachShader(program, fs);\n attributes.forEach((name, i) => gl.bindAttribLocation(program, i, name));\n gl.linkProgram(program);\n gl.deleteShader(vs);\n gl.deleteShader(fs);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n gl.deleteProgram(program);\n return null;\n }\n const uniforms = {} as Program[\"uniforms\"];\n for (const name of UNIFORMS)\n uniforms[name] = gl.getUniformLocation(program, name);\n return { program, uniforms };\n};\n\ninterface ItemResources {\n version: number;\n kind: Item3D[\"kind\"];\n vertex: WebGLBuffer;\n index: WebGLBuffer | null;\n /** `order` of the uploaded indices (meshes) */\n order: number;\n}\n\n/** Corners of the triangle strip of a billboard / segment */\nconst CORNERS = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]);\nconst MAX_LOCATIONS = 4;\n\nexport const createWebGl3D = (\n canvas: HTMLCanvasElement,\n version: 1 | 2,\n onLost: RendererLostHandler,\n /** Refuses software rendering: the decimating Canvas2D backend is faster there */\n requireHardware = false,\n): Renderer3D | null => {\n const attributes: WebGLContextAttributes = {\n alpha: true,\n premultipliedAlpha: true,\n antialias: true,\n depth: true,\n stencil: false,\n preserveDrawingBuffer: false,\n failIfMajorPerformanceCaveat: requireHardware,\n };\n const gl = canvas.getContext(\n version === 2 ? \"webgl2\" : \"webgl\",\n attributes,\n ) as Gl | null;\n if (!gl) return null;\n const loseContext = () =>\n gl.getExtension(\"WEBGL_lose_context\")?.loseContext();\n const gl2 = version === 2 ? (gl as WebGL2RenderingContext) : null;\n const angle = gl2 ? null : gl.getExtension(\"ANGLE_instanced_arrays\");\n const uint = gl2 ? true : !!gl.getExtension(\"OES_element_index_uint\");\n if (\n (!gl2 && (!angle || !uint)) ||\n (requireHardware && isSoftwareRenderer(gl))\n ) {\n loseContext();\n return null;\n }\n const divisor = (location: number, value: number) => {\n if (gl2) gl2.vertexAttribDivisor(location, value);\n else angle?.vertexAttribDivisorANGLE(location, value);\n };\n const drawInstanced = (count: number) => {\n if (gl2) gl2.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, count);\n else angle?.drawArraysInstancedANGLE(gl.TRIANGLE_STRIP, 0, 4, count);\n };\n\n const sources = glslPrograms(version);\n const points = compile(gl, sources.points, GLSL_ATTRIBUTES.points);\n const mesh = compile(gl, sources.mesh, GLSL_ATTRIBUTES.mesh);\n const lines = compile(gl, sources.lines, GLSL_ATTRIBUTES.lines);\n const corners = gl.createBuffer();\n if (!points || !mesh || !lines || !corners) {\n loseContext();\n return null;\n }\n const programs = { points, mesh, lines };\n gl.bindBuffer(gl.ARRAY_BUFFER, corners);\n gl.bufferData(gl.ARRAY_BUFFER, CORNERS, gl.STATIC_DRAW);\n\n let lost = false;\n const handleLost = (event: Event) => {\n event.preventDefault();\n lost = true;\n onLost();\n };\n canvas.addEventListener(\"webglcontextlost\", handleLost);\n\n const resources = new Map<string, ItemResources>();\n const uniformData = new Float32Array(40);\n\n const attribute = (\n location: number,\n size: number,\n type: number,\n stride: number,\n offset: number,\n perInstance: boolean,\n ) => {\n gl.enableVertexAttribArray(location);\n gl.vertexAttribPointer(\n location,\n size,\n type,\n type === gl.UNSIGNED_BYTE,\n stride,\n offset,\n );\n divisor(location, perInstance ? 1 : 0);\n };\n\n const bind = (item: Item3D, res: ItemResources) => {\n const F = gl.FLOAT;\n const U8 = gl.UNSIGNED_BYTE;\n let used: number;\n if (item.kind === \"mesh\") {\n gl.bindBuffer(gl.ARRAY_BUFFER, res.vertex);\n attribute(0, 3, F, VERTEX_STRIDE, 0, false);\n attribute(1, 3, F, VERTEX_STRIDE, 12, false);\n attribute(2, 4, U8, VERTEX_STRIDE, 24, false);\n used = 3;\n } else {\n gl.bindBuffer(gl.ARRAY_BUFFER, corners);\n attribute(0, 2, F, 0, 0, false);\n gl.bindBuffer(gl.ARRAY_BUFFER, res.vertex);\n if (item.kind === \"points\") {\n attribute(1, 3, F, POINT_STRIDE, 0, true);\n attribute(2, 1, F, POINT_STRIDE, 12, true);\n attribute(3, 4, U8, POINT_STRIDE, 16, true);\n } else {\n attribute(1, 3, F, SEGMENT_STRIDE, 0, true);\n attribute(2, 3, F, SEGMENT_STRIDE, 12, true);\n attribute(3, 4, U8, SEGMENT_STRIDE, 24, true);\n }\n used = 4;\n }\n for (let i = used; i < MAX_LOCATIONS; i++) {\n gl.disableVertexAttribArray(i);\n divisor(i, 0);\n }\n };\n\n const upload = (item: Item3D): ItemResources | null => {\n const existing = resources.get(item.key);\n if (\n existing &&\n existing.version === item.version &&\n existing.kind === item.kind\n ) {\n // same mesh, triangles in a new order (transparent, sorted by depth)\n if (\n item.kind === \"mesh\" &&\n existing.index &&\n (item.order ?? 0) !== existing.order\n ) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, existing.index);\n gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, 0, item.indices);\n existing.order = item.order ?? 0;\n }\n return existing;\n }\n if (existing) {\n gl.deleteBuffer(existing.vertex);\n if (existing.index) gl.deleteBuffer(existing.index);\n resources.delete(item.key);\n }\n const vertex = gl.createBuffer();\n if (!vertex) return null;\n gl.bindBuffer(gl.ARRAY_BUFFER, vertex);\n gl.bufferData(\n gl.ARRAY_BUFFER,\n item.kind === \"mesh\" ? item.vertices : item.data,\n gl.STATIC_DRAW,\n );\n let index: WebGLBuffer | null = null;\n if (item.kind === \"mesh\") {\n index = gl.createBuffer();\n if (!index) {\n gl.deleteBuffer(vertex);\n return null;\n }\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, index);\n gl.bufferData(\n gl.ELEMENT_ARRAY_BUFFER,\n item.indices,\n item.order === undefined ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW,\n );\n }\n const res = {\n version: item.version,\n kind: item.kind,\n vertex,\n index,\n order: item.kind === \"mesh\" ? (item.order ?? 0) : 0,\n };\n resources.set(item.key, res);\n return res;\n };\n\n return {\n kind: version === 2 ? \"webgl2\" : \"webgl\",\n canvas,\n resize(width, height) {\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n },\n render(items, frame) {\n if (lost || gl.isContextLost()) return;\n gl.viewport(0, 0, canvas.width, canvas.height);\n gl.clearColor(0, 0, 0, 0);\n gl.clearDepth(1);\n gl.depthMask(true);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.enable(gl.DEPTH_TEST);\n gl.depthFunc(gl.LEQUAL);\n gl.disable(gl.CULL_FACE);\n const seen = new Set<string>();\n for (const item of drawOrder(items)) {\n seen.add(item.key);\n const count = item.kind === \"mesh\" ? item.indices.length : item.count;\n if (count <= 0) continue;\n const res = upload(item);\n if (!res) continue;\n const program = programs[item.kind];\n gl.useProgram(program.program);\n const u = itemUniforms(item, frame, uniformData);\n const loc = program.uniforms;\n gl.uniformMatrix4fv(loc.u_viewProj, false, u.subarray(0, 16));\n gl.uniform4fv(loc.u_viewport, u.subarray(16, 20));\n gl.uniform4fv(loc.u_eye, u.subarray(20, 24));\n gl.uniform4fv(loc.u_light, u.subarray(24, 28));\n gl.uniform4fv(loc.u_material, u.subarray(28, 32));\n gl.uniform4fv(loc.u_params, u.subarray(32, 36));\n gl.uniform4fv(loc.u_fog, u.subarray(36, 40));\n gl.depthMask(writesDepth(item));\n bind(item, res);\n if (item.kind === \"mesh\") {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, res.index);\n gl.drawElements(gl.TRIANGLES, count, gl.UNSIGNED_INT, 0);\n } else {\n drawInstanced(count);\n }\n }\n gl.depthMask(true);\n for (const [key, res] of resources) {\n if (!seen.has(key)) {\n gl.deleteBuffer(res.vertex);\n if (res.index) gl.deleteBuffer(res.index);\n resources.delete(key);\n }\n }\n },\n destroy() {\n canvas.removeEventListener(\"webglcontextlost\", handleLost);\n if (!gl.isContextLost()) {\n for (const res of resources.values()) {\n gl.deleteBuffer(res.vertex);\n if (res.index) gl.deleteBuffer(res.index);\n }\n for (const p of Object.values(programs)) gl.deleteProgram(p.program);\n gl.deleteBuffer(corners);\n }\n resources.clear();\n loseContext();\n },\n };\n};\n"],"mappings":";;;AA0BA,IAAaA,IACX,+EAEWC,KAAsB,MAAoB;CACrD,IAAMC,IAAOC,EAAG,aAAa,2BAA2B,GAClDC,IAAOF,IACTC,EAAG,aAAaD,EAAK,uBAAuB,IAC5CC,EAAG,aAAaA,EAAG,QAAQ;CAC/B,OAAOH,EAAkB,KAAK,OAAOI,KAAQ,EAAE,CAAC;AAClD,GAEMC,IAAW;CACf;CACA;CACA;CACA;CACA;CACA;CACA;AACF,GAOMC,KACJ,GACA,GACA,MACmB;CACnB,IAAMC,KAAU,GAAc,MAAiB;EAC7C,IAAMC,IAAIL,EAAG,aAAaM,CAAI;EAQ9B,OAPKD,KACLL,EAAG,aAAaK,GAAGE,CAAI,GACvBP,EAAG,cAAcK,CAAC,GACbL,EAAG,mBAAmBK,GAAGL,EAAG,cAAc,IAIxCK,KAHLL,EAAG,aAAaK,CAAC,GACV,SALM;CAQjB,GACMG,IAAKJ,EAAOJ,EAAG,eAAeS,EAAO,MAAM,GAC3CC,IAAKN,EAAOJ,EAAG,iBAAiBS,EAAO,QAAQ,GAC/CE,IAAUX,EAAG,cAAc;CACjC,IAAI,CAACQ,KAAM,CAACE,KAAM,CAACC,GAAS,OAAO;CAOnC,IANAX,EAAG,aAAaW,GAASH,CAAE,GAC3BR,EAAG,aAAaW,GAASD,CAAE,GAC3BE,EAAW,SAAS,GAAM,MAAMZ,EAAG,mBAAmBW,GAASE,GAAGZ,CAAI,CAAC,GACvED,EAAG,YAAYW,CAAO,GACtBX,EAAG,aAAaQ,CAAE,GAClBR,EAAG,aAAaU,CAAE,GACd,CAACV,EAAG,oBAAoBW,GAASX,EAAG,WAAW,GAEjD,OADAA,EAAG,cAAcW,CAAO,GACjB;CAET,IAAMG,IAAW,CAAC;CAClB,KAAK,IAAMb,KAAQC,GACjB,EAASD,KAAQD,EAAG,mBAAmBW,GAASV,CAAI;CACtD,OAAO;EAAE;EAAS;CAAS;AAC7B,GAYMc,IAAU,IAAI,aAAa;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC,CAAC,GACnDC,IAAgB,GAETC,KACX,GACA,GACA,GAEA,IAAkB,OACI;CACtB,IAAML,IAAqC;EACzC,OAAO;EACP,oBAAoB;EACpB,WAAW;EACX,OAAO;EACP,SAAS;EACT,uBAAuB;EACvB,8BAA8BM;CAChC,GACMlB,IAAKmB,EAAO,WAChBC,MAAY,IAAI,WAAW,SAC3BR,CACF;CACA,IAAI,CAACZ,GAAI,OAAO;CAChB,IAAMqB,UACJrB,EAAG,aAAa,oBAAoB,CAAC,EAAE,YAAY,GAC/CsB,IAAMF,MAAY,IAAKpB,IAAgC,MACvDuB,IAAQD,IAAM,OAAOtB,EAAG,aAAa,wBAAwB,GAC7DwB,IAAOF,IAAM,KAAO,CAAC,CAACtB,EAAG,aAAa,wBAAwB;CACpE,IACG,CAACsB,MAAQ,CAACC,KAAS,CAACC,MACpBN,KAAmBpB,EAAmBE,CAAE,GAGzC,OADAqB,EAAY,GACL;CAET,IAAMI,KAAW,GAAkB,MAAkB;EACnD,AAAIH,IAAKA,EAAI,oBAAoBI,GAAUC,CAAK,IAC3CJ,GAAO,yBAAyBG,GAAUC,CAAK;CACtD,GACMC,KAAiB,MAAkB;EACvC,AAAIN,IAAKA,EAAI,oBAAoBtB,EAAG,gBAAgB,GAAG,GAAG6B,CAAK,IAC1DN,GAAO,yBAAyBvB,EAAG,gBAAgB,GAAG,GAAG6B,CAAK;CACrE,GAEMC,IAAUC,EAAaX,CAAO,GAC9BY,IAAS7B,EAAQH,GAAI8B,EAAQ,QAAQG,EAAgB,MAAM,GAC3DC,IAAO/B,EAAQH,GAAI8B,EAAQ,MAAMG,EAAgB,IAAI,GACrDE,IAAQhC,EAAQH,GAAI8B,EAAQ,OAAOG,EAAgB,KAAK,GACxDG,IAAUpC,EAAG,aAAa;CAChC,IAAI,CAACgC,KAAU,CAACE,KAAQ,CAACC,KAAS,CAACC,GAEjC,OADAf,EAAY,GACL;CAET,IAAMgB,IAAW;EAAE;EAAQ;EAAM;CAAM;CAEvC,AADArC,EAAG,WAAWA,EAAG,cAAcoC,CAAO,GACtCpC,EAAG,WAAWA,EAAG,cAAce,GAASf,EAAG,WAAW;CAEtD,IAAIsC,IAAO,IACLC,KAAc,MAAiB;EAGnC,AAFAC,EAAM,eAAe,GACrB,IAAO,IACPC,EAAO;CACT;CACA,EAAO,iBAAiB,oBAAoBF,CAAU;CAEtD,IAAMG,oBAAY,IAAI,IAA2B,GAC3CC,oBAAc,IAAI,aAAa,EAAE,GAEjCC,KACJ,GACA,GACA,GACA,GACA,GACA,MACG;EAUH,AATA5C,EAAG,wBAAwB0B,CAAQ,GACnC1B,EAAG,oBACD0B,GACAmB,GACAvC,GACAA,MAASN,EAAG,eACZ8C,GACAC,CACF,GACAtB,EAAQC,GAAU,IAAmB;CACvC,GAEMsB,KAAQ,GAAc,MAAuB;EACjD,IAAMC,IAAIjD,EAAG,OACPkD,IAAKlD,EAAG,eACVmD;EACJ,AAAIC,EAAK,SAAS,UAChBpD,EAAG,WAAWA,EAAG,cAAcqD,EAAI,MAAM,GACzCT,EAAU,GAAG,GAAGK,GAAA,IAAkB,GAAG,EAAK,GAC1CL,EAAU,GAAG,GAAGK,GAAA,IAAkB,IAAI,EAAK,GAC3CL,EAAU,GAAG,GAAGM,GAAA,IAAmB,IAAI,EAAK,GAC5C,IAAO,MAEPlD,EAAG,WAAWA,EAAG,cAAcoC,CAAO,GACtCQ,EAAU,GAAG,GAAGK,GAAG,GAAG,GAAG,EAAK,GAC9BjD,EAAG,WAAWA,EAAG,cAAcqD,EAAI,MAAM,GACrCD,EAAK,SAAS,YAChBR,EAAU,GAAG,GAAGK,GAAA,IAAiB,GAAG,EAAI,GACxCL,EAAU,GAAG,GAAGK,GAAA,IAAiB,IAAI,EAAI,GACzCL,EAAU,GAAG,GAAGM,GAAA,IAAkB,IAAI,EAAI,MAE1CN,EAAU,GAAG,GAAGK,GAAA,IAAmB,GAAG,EAAI,GAC1CL,EAAU,GAAG,GAAGK,GAAA,IAAmB,IAAI,EAAI,GAC3CL,EAAU,GAAG,GAAGM,GAAA,IAAoB,IAAI,EAAI,IAE9C,IAAO;EAET,KAAK,IAAIrC,IAAIsC,GAAMtC,IAAIG,GAAe,KAEpC,AADAhB,EAAG,yBAAyBa,CAAC,GAC7BY,EAAQZ,GAAG,CAAC;CAEhB,GAEMyC,KAAU,MAAuC;EACrD,IAAMC,IAAWb,EAAU,IAAIU,EAAK,GAAG;EACvC,IACEG,KACAA,EAAS,YAAYH,EAAK,WAC1BG,EAAS,SAASH,EAAK,MAYvB,OAREA,EAAK,SAAS,UACdG,EAAS,UACRH,EAAK,SAAS,OAAOG,EAAS,UAE/BvD,EAAG,WAAWA,EAAG,sBAAsBuD,EAAS,KAAK,GACrDvD,EAAG,cAAcA,EAAG,sBAAsB,GAAGoD,EAAK,OAAO,GACzD,EAAS,QAAQA,EAAK,SAAS,IAE1BG;EAET,AAAIA,MACFvD,EAAG,aAAauD,EAAS,MAAM,GAC3BA,EAAS,SAAOvD,EAAG,aAAauD,EAAS,KAAK,GAClDb,EAAU,OAAOU,EAAK,GAAG;EAE3B,IAAMI,IAASxD,EAAG,aAAa;EAC/B,IAAI,CAACwD,GAAQ,OAAO;EAEpB,AADAxD,EAAG,WAAWA,EAAG,cAAcwD,CAAM,GACrCxD,EAAG,WACDA,EAAG,cACHoD,EAAK,SAAS,SAASA,EAAK,WAAWA,EAAK,MAC5CpD,EAAG,WACL;EACA,IAAIyD,IAA4B;EAChC,IAAIL,EAAK,SAAS,QAAQ;GAExB,IADA,IAAQpD,EAAG,aAAa,GACpB,CAACyD,GAEH,OADAzD,EAAG,aAAawD,CAAM,GACf;GAGT,AADAxD,EAAG,WAAWA,EAAG,sBAAsByD,CAAK,GAC5CzD,EAAG,WACDA,EAAG,sBACHoD,EAAK,SACLA,EAAK,UAAU,KAAA,IAAYpD,EAAG,cAAcA,EAAG,YACjD;EACF;EACA,IAAMqD,IAAM;GACV,SAASD,EAAK;GACd,MAAMA,EAAK;GACX;GACA;GACA,OAAOA,EAAK,SAAS,SAAUA,EAAK,SAAS,IAAK;EACpD;EAEA,OADAV,EAAU,IAAIU,EAAK,KAAKC,CAAG,GACpBA;CACT;CAEA,OAAO;EACL,MAAMjC,MAAY,IAAI,WAAW;EACjC;EACA,OAAO,GAAO,GAAQ;GAEpB,AADA,EAAO,QAAQ,KAAK,IAAI,GAAGsC,CAAK,GAChC,EAAO,SAAS,KAAK,IAAI,GAAGC,CAAM;EACpC;EACA,OAAO,GAAO,GAAO;GACnB,IAAIrB,KAAQtC,EAAG,cAAc,GAAG;GAUhC,AATAA,EAAG,SAAS,GAAG,GAAGmB,EAAO,OAAOA,EAAO,MAAM,GAC7CnB,EAAG,WAAW,GAAG,GAAG,GAAG,CAAC,GACxBA,EAAG,WAAW,CAAC,GACfA,EAAG,UAAU,EAAI,GACjBA,EAAG,MAAMA,EAAG,mBAAmBA,EAAG,gBAAgB,GAClDA,EAAG,OAAOA,EAAG,KAAK,GAClBA,EAAG,UAAUA,EAAG,KAAKA,EAAG,mBAAmB,GAC3CA,EAAG,OAAOA,EAAG,UAAU,GACvBA,EAAG,UAAUA,EAAG,MAAM,GACtBA,EAAG,QAAQA,EAAG,SAAS;GACvB,IAAM4D,oBAAO,IAAI,IAAY;GAC7B,KAAK,IAAMR,KAAQS,EAAUC,CAAK,GAAG;IACnC,EAAK,IAAIV,EAAK,GAAG;IACjB,IAAMvB,IAAQuB,EAAK,SAAS,SAASA,EAAK,QAAQ,SAASA,EAAK;IAChE,IAAIvB,KAAS,GAAG;IAChB,IAAMwB,IAAMC,EAAOF,CAAI;IACvB,IAAI,CAACC,GAAK;IACV,IAAM1C,IAAU0B,EAASe,EAAK;IAC9B,EAAG,WAAWzC,EAAQ,OAAO;IAC7B,IAAMoD,IAAIC,EAAaZ,GAAMa,GAAOtB,CAAW,GACzCuB,IAAMvD,EAAQ;IAUpB,AATAX,EAAG,iBAAiBkE,EAAI,YAAY,IAAOH,EAAE,SAAS,GAAG,EAAE,CAAC,GAC5D/D,EAAG,WAAWkE,EAAI,YAAYH,EAAE,SAAS,IAAI,EAAE,CAAC,GAChD/D,EAAG,WAAWkE,EAAI,OAAOH,EAAE,SAAS,IAAI,EAAE,CAAC,GAC3C/D,EAAG,WAAWkE,EAAI,SAASH,EAAE,SAAS,IAAI,EAAE,CAAC,GAC7C/D,EAAG,WAAWkE,EAAI,YAAYH,EAAE,SAAS,IAAI,EAAE,CAAC,GAChD/D,EAAG,WAAWkE,EAAI,UAAUH,EAAE,SAAS,IAAI,EAAE,CAAC,GAC9C/D,EAAG,WAAWkE,EAAI,OAAOH,EAAE,SAAS,IAAI,EAAE,CAAC,GAC3C/D,EAAG,UAAUmE,EAAYf,CAAI,CAAC,GAC9BJ,EAAKI,GAAMC,CAAG,GACVD,EAAK,SAAS,UAChBpD,EAAG,WAAWA,EAAG,sBAAsBqD,EAAI,KAAK,GAChDrD,EAAG,aAAaA,EAAG,WAAW6B,GAAO7B,EAAG,cAAc,CAAC,KAEvD4B,EAAcC,CAAK;GAEvB;GACA,EAAG,UAAU,EAAI;GACjB,KAAK,IAAM,CAACuC,GAAKf,MAAQX,GACvB,AAAKkB,EAAK,IAAIQ,CAAG,MACfpE,EAAG,aAAaqD,EAAI,MAAM,GACtBA,EAAI,SAAOrD,EAAG,aAAaqD,EAAI,KAAK,GACxCX,EAAU,OAAO0B,CAAG;EAG1B;EACA,UAAU;GAER,IADAjD,EAAO,oBAAoB,oBAAoBoB,CAAU,GACrD,CAACvC,EAAG,cAAc,GAAG;IACvB,KAAK,IAAMqD,KAAOX,EAAU,OAAO,GAEjC,AADA1C,EAAG,aAAaqD,EAAI,MAAM,GACtBA,EAAI,SAAOrD,EAAG,aAAaqD,EAAI,KAAK;IAE1C,KAAK,IAAMgB,KAAK,OAAO,OAAOhC,CAAQ,GAAG,EAAG,cAAcgC,EAAE,OAAO;IACnE,EAAG,aAAajC,CAAO;GACzB;GAEA,AADAM,EAAU,MAAM,GAChBrB,EAAY;EACd;CACF;AACF"}
1
+ {"version":3,"file":"webgl.js","names":["SOFTWARE_RENDERER","isSoftwareRenderer","info","gl","name","UNIFORMS","compile","shader","s","type","code","vs","source","fs","program","attributes","i","uniforms","CORNERS","MAX_LOCATIONS","MAX_SAMPLES","webGl2Capabilities","max","samples","counts","floatMax","createWebGl3D","version","requireHardware","canvas","loseContext","gl2","angle","divisor","location","value","drawInstanced","count","programs","corners","capabilities","oitPrograms","framebuffers","build","uint","sources","glslPrograms","points","GLSL_ATTRIBUTES","mesh","lines","buffer","oit","glslOitPrograms","p","m","c","GLSL_COMPOSITE","deleteOit","fb","b","f","deleteFramebuffers","renderbuffer","rb","format","width","height","complete","mainFramebuffer","main","color","depth","oitFramebuffers","fbo","accum","extra","resolved","textures","r0","r1","t0","t1","ok","texture","lost","last","resources","slot","claimGlSlot","renderFrame","onLost","uniformData","attribute","size","stride","offset","bind","F","U8","used","item","res","upload","existing","vertex","index","draw","u","itemUniforms","frame","loc","drawTransparent","blended","seen","target","progs","ordered","drawOrder","items","drawRank","additive","composited","rank","writesDepth","add","key"],"sources":["../../../../../charts/src/engine/three-d/webgl.ts"],"sourcesContent":["// WebGL2 / WebGL (1) backend of the 3D charts: the same GLSL for both\n// (a macro prefix makes it GLSL ES 3.0), instancing through WebGL2 or\n// ANGLE_instanced_arrays, 32-bit indices through WebGL2 or\n// OES_element_index_uint. Attributes are bound for every draw (no vertex\n// array objects in WebGL 1): a few calls per item.\n//\n// WebGL2 draws into its own multisampled framebuffer, blitted to the canvas.\n// With EXT_color_buffer_float (multisampled RGBA16F), the blended items go\n// through the weighted blended order-independent transparency (`oit.ts`):\n// opaque items, then the blended ones into two float targets sharing the\n// depth buffer (resolved into textures by blits), their composite, then the\n// lines. Otherwise (and on WebGL 1) the blended items are drawn sorted.\n//\n// The context is part of the page-wide budget (`gl-budget.ts`): when it is\n// suspended off-screen, its GPU objects go; the restore builds the programs\n// again (the framebuffers and buffers follow lazily) and redraws the last\n// frame. A suspension is not a loss: only real losses reach `onLost`.\n\nimport type { RendererLostHandler } from \"../renderers/types\";\nimport { claimGlSlot } from \"../renderers/gl-budget\";\nimport { GLSL_COMPOSITE } from \"./oit\";\nimport {\n POINT_STRIDE,\n SEGMENT_STRIDE,\n VERTEX_STRIDE,\n drawOrder,\n drawRank,\n type Frame3D,\n type Item3D,\n type Renderer3D,\n} from \"./render-types\";\nimport {\n GLSL_ATTRIBUTES,\n glslOitPrograms,\n glslPrograms,\n itemUniforms,\n writesDepth,\n type GlslSource,\n} from \"./shaders\";\n\ntype Gl = WebGLRenderingContext | WebGL2RenderingContext;\n\n/** Software rasterizers behind a WebGL context */\nexport const SOFTWARE_RENDERER =\n /swiftshader|llvmpipe|softpipe|software|basic render driver|microsoft basic/i;\n\nexport const isSoftwareRenderer = (gl: Gl): boolean => {\n const info = gl.getExtension(\"WEBGL_debug_renderer_info\");\n const name = info\n ? gl.getParameter(info.UNMASKED_RENDERER_WEBGL)\n : gl.getParameter(gl.RENDERER);\n return SOFTWARE_RENDERER.test(String(name ?? \"\"));\n};\n\nconst UNIFORMS = [\n \"u_viewProj\",\n \"u_viewport\",\n \"u_eye\",\n \"u_light\",\n \"u_material\",\n \"u_params\",\n \"u_fog\",\n] as const;\n\ninterface Program {\n program: WebGLProgram;\n uniforms: Record<(typeof UNIFORMS)[number], WebGLUniformLocation | null>;\n}\n\nconst compile = (\n gl: Gl,\n source: GlslSource,\n attributes: readonly string[],\n): Program | null => {\n const shader = (type: number, code: string) => {\n const s = gl.createShader(type);\n if (!s) return null;\n gl.shaderSource(s, code);\n gl.compileShader(s);\n if (!gl.getShaderParameter(s, gl.COMPILE_STATUS)) {\n gl.deleteShader(s);\n return null;\n }\n return s;\n };\n const vs = shader(gl.VERTEX_SHADER, source.vertex);\n const fs = shader(gl.FRAGMENT_SHADER, source.fragment);\n const program = gl.createProgram();\n if (!vs || !fs || !program) return null;\n gl.attachShader(program, vs);\n gl.attachShader(program, fs);\n attributes.forEach((name, i) => gl.bindAttribLocation(program, i, name));\n gl.linkProgram(program);\n gl.deleteShader(vs);\n gl.deleteShader(fs);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n gl.deleteProgram(program);\n return null;\n }\n const uniforms = {} as Program[\"uniforms\"];\n for (const name of UNIFORMS)\n uniforms[name] = gl.getUniformLocation(program, name);\n return { program, uniforms };\n};\n\ninterface ItemResources {\n version: number;\n kind: Item3D[\"kind\"];\n vertex: WebGLBuffer;\n index: WebGLBuffer | null;\n /** `order` of the uploaded indices (meshes) */\n order: number;\n}\n\n/** Corners of the triangle strip of a billboard / segment */\nconst CORNERS = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]);\nconst MAX_LOCATIONS = 4;\nconst MAX_SAMPLES = 4;\n\n/**\n * Samples of the WebGL2 framebuffers and whether the order-independent\n * transparency is possible: float color buffers (EXT_color_buffer_float)\n * that can be multisampled as much as the color\n */\nexport const webGl2Capabilities = (\n gl: WebGL2RenderingContext,\n): { samples: number; orderIndependent: boolean } => {\n const max = Number(gl.getParameter(gl.MAX_SAMPLES)) || 0;\n const samples = Math.max(0, Math.min(MAX_SAMPLES, max));\n if (!gl.getExtension(\"EXT_color_buffer_float\"))\n return { samples, orderIndependent: false };\n const counts = gl.getInternalformatParameter(\n gl.RENDERBUFFER,\n gl.RGBA16F,\n gl.SAMPLES,\n ) as ArrayLike<number> | null;\n let floatMax = 0;\n for (let i = 0; i < (counts?.length ?? 0); i++)\n floatMax = Math.max(floatMax, counts?.[i] ?? 0);\n // single-sampled framebuffers: any float support is enough\n if (samples > 1 && floatMax < 2) return { samples, orderIndependent: false };\n return {\n samples: Math.min(samples, floatMax || samples),\n orderIndependent: true,\n };\n};\n\ninterface Framebuffers {\n width: number;\n height: number;\n main: WebGLFramebuffer;\n color: WebGLRenderbuffer;\n depth: WebGLRenderbuffer;\n /** Transparency targets, created on first use */\n oit: {\n fbo: WebGLFramebuffer;\n buffers: [WebGLRenderbuffer, WebGLRenderbuffer];\n resolved: [WebGLFramebuffer, WebGLFramebuffer];\n textures: [WebGLTexture, WebGLTexture];\n } | null;\n}\n\nexport const createWebGl3D = (\n canvas: HTMLCanvasElement,\n version: 1 | 2,\n onLost: RendererLostHandler,\n /** Refuses software rendering: the decimating Canvas2D backend is faster there */\n requireHardware = false,\n): Renderer3D | null => {\n const attributes: WebGLContextAttributes = {\n alpha: true,\n premultipliedAlpha: true,\n // WebGL2 multisamples its own framebuffer\n antialias: version === 1,\n depth: true,\n stencil: false,\n preserveDrawingBuffer: false,\n failIfMajorPerformanceCaveat: requireHardware,\n };\n const gl = canvas.getContext(\n version === 2 ? \"webgl2\" : \"webgl\",\n attributes,\n ) as Gl | null;\n if (!gl) return null;\n const loseContext = () =>\n gl.getExtension(\"WEBGL_lose_context\")?.loseContext();\n const gl2 = version === 2 ? (gl as WebGL2RenderingContext) : null;\n if (requireHardware && isSoftwareRenderer(gl)) {\n loseContext();\n return null;\n }\n let angle: ANGLE_instanced_arrays | null = null;\n const divisor = (location: number, value: number) => {\n if (gl2) gl2.vertexAttribDivisor(location, value);\n else angle?.vertexAttribDivisorANGLE(location, value);\n };\n const drawInstanced = (count: number) => {\n if (gl2) gl2.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, count);\n else angle?.drawArraysInstancedANGLE(gl.TRIANGLE_STRIP, 0, 4, count);\n };\n\n let programs: Record<Item3D[\"kind\"], Program> | null = null;\n let corners: WebGLBuffer | null = null;\n let capabilities = { samples: 0, orderIndependent: false };\n let oitPrograms: {\n points: Program;\n mesh: Program;\n composite: WebGLProgram;\n } | null = null;\n let framebuffers: Framebuffers | null = null;\n\n /**\n * Extensions, programs, the corner buffer and the transparency programs:\n * at creation and again after a restore (GL objects and extension objects\n * don't survive the context). False when the context can't draw.\n */\n const build = (): boolean => {\n programs = null;\n corners = null;\n oitPrograms = null;\n // recreated lazily at the next draw\n framebuffers = null;\n angle = gl2 ? null : gl.getExtension(\"ANGLE_instanced_arrays\");\n const uint = gl2 ? true : !!gl.getExtension(\"OES_element_index_uint\");\n if (!gl2 && (!angle || !uint)) return false;\n const sources = glslPrograms(version);\n const points = compile(gl, sources.points, GLSL_ATTRIBUTES.points);\n const mesh = compile(gl, sources.mesh, GLSL_ATTRIBUTES.mesh);\n const lines = compile(gl, sources.lines, GLSL_ATTRIBUTES.lines);\n const buffer = gl.createBuffer();\n if (!points || !mesh || !lines || !buffer) return false;\n programs = { points, mesh, lines };\n corners = buffer;\n gl.bindBuffer(gl.ARRAY_BUFFER, corners);\n gl.bufferData(gl.ARRAY_BUFFER, CORNERS, gl.STATIC_DRAW);\n\n // order-independent transparency (WebGL2 with float color buffers)\n capabilities = gl2\n ? webGl2Capabilities(gl2)\n : { samples: 0, orderIndependent: false };\n if (gl2 && capabilities.orderIndependent) {\n const oit = glslOitPrograms();\n const p = compile(gl, oit.points, GLSL_ATTRIBUTES.points);\n const m = compile(gl, oit.mesh, GLSL_ATTRIBUTES.mesh);\n const c = compile(gl, GLSL_COMPOSITE, []);\n if (p && m && c) {\n oitPrograms = { points: p, mesh: m, composite: c.program };\n gl.useProgram(c.program);\n gl.uniform1i(gl.getUniformLocation(c.program, \"u_accum\"), 0);\n gl.uniform1i(gl.getUniformLocation(c.program, \"u_extra\"), 1);\n } else {\n for (const program of [p, m, c])\n if (program) gl.deleteProgram(program.program);\n }\n }\n return true;\n };\n if (!build()) {\n loseContext();\n return null;\n }\n const deleteOit = (fb: Framebuffers) => {\n if (!fb.oit) return;\n gl.deleteFramebuffer(fb.oit.fbo);\n for (const b of fb.oit.buffers) gl.deleteRenderbuffer(b);\n for (const f of fb.oit.resolved) gl.deleteFramebuffer(f);\n for (const t of fb.oit.textures) gl.deleteTexture(t);\n fb.oit = null;\n };\n const deleteFramebuffers = () => {\n if (!framebuffers) return;\n deleteOit(framebuffers);\n gl.deleteFramebuffer(framebuffers.main);\n gl.deleteRenderbuffer(framebuffers.color);\n gl.deleteRenderbuffer(framebuffers.depth);\n framebuffers = null;\n };\n const renderbuffer = (format: number, width: number, height: number) => {\n const rb = gl.createRenderbuffer();\n if (!gl2 || !rb) return rb;\n gl.bindRenderbuffer(gl.RENDERBUFFER, rb);\n if (capabilities.samples > 1)\n gl2.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n capabilities.samples,\n format,\n width,\n height,\n );\n else gl.renderbufferStorage(gl.RENDERBUFFER, format, width, height);\n return rb;\n };\n const complete = () =>\n gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE;\n /** The multisampled framebuffer of WebGL2 (null: draw into the canvas) */\n const mainFramebuffer = (): Framebuffers | null => {\n if (!gl2) return null;\n const { width, height } = canvas;\n if (framebuffers?.width === width && framebuffers.height === height)\n return framebuffers;\n deleteFramebuffers();\n const main = gl.createFramebuffer();\n const color = renderbuffer(gl2.RGBA8, width, height);\n const depth = renderbuffer(gl2.DEPTH_COMPONENT24, width, height);\n if (!main || !color || !depth) return null;\n gl.bindFramebuffer(gl.FRAMEBUFFER, main);\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.RENDERBUFFER,\n color,\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n depth,\n );\n framebuffers = { width, height, main, color, depth, oit: null };\n if (!complete()) {\n deleteFramebuffers();\n return null;\n }\n return framebuffers;\n };\n /** The transparency targets sharing the depth of `fb` */\n const oitFramebuffers = (fb: Framebuffers) => {\n if (fb.oit || !gl2) return fb.oit;\n const { width, height } = fb;\n const fbo = gl.createFramebuffer();\n const accum = renderbuffer(gl2.RGBA16F, width, height);\n const extra = renderbuffer(gl2.RGBA16F, width, height);\n const resolved = [gl.createFramebuffer(), gl.createFramebuffer()];\n const textures = [gl.createTexture(), gl.createTexture()];\n const [r0, r1] = resolved;\n const [t0, t1] = textures;\n if (!fbo || !accum || !extra || !r0 || !r1 || !t0 || !t1) return null;\n fb.oit = {\n fbo,\n buffers: [accum, extra],\n resolved: [r0, r1],\n textures: [t0, t1],\n };\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.RENDERBUFFER,\n accum,\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl2.COLOR_ATTACHMENT1,\n gl.RENDERBUFFER,\n extra,\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n fb.depth,\n );\n gl2.drawBuffers([gl.COLOR_ATTACHMENT0, gl2.COLOR_ATTACHMENT1]);\n let ok = complete();\n fb.oit.textures.forEach((texture, i) => {\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl2.texStorage2D(gl.TEXTURE_2D, 1, gl2.RGBA16F, width, height);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.bindFramebuffer(gl.FRAMEBUFFER, fb.oit!.resolved[i]!);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0,\n );\n ok &&= complete();\n });\n gl.bindTexture(gl.TEXTURE_2D, null);\n if (!ok) {\n deleteOit(fb);\n oitPrograms = null;\n }\n return fb.oit;\n };\n\n let lost = false;\n let last: { items: readonly Item3D[]; frame: Frame3D } | null = null;\n const resources = new Map<string, ItemResources>();\n // past the page-wide context budget, the context may be suspended while\n // off-screen (not a failure): its GPU objects go, and come back with the\n // context, which then redraws its last frame\n const slot = claimGlSlot(canvas, gl, {\n suspend: () => {\n resources.clear();\n programs = null;\n oitPrograms = null;\n corners = null;\n framebuffers = null;\n },\n restore: () => {\n if (lost) return;\n if (!build()) {\n lost = true;\n onLost();\n } else if (last) renderFrame(last.items, last.frame);\n },\n lost: () => {\n lost = true;\n onLost();\n },\n });\n const uniformData = new Float32Array(40);\n\n const attribute = (\n location: number,\n size: number,\n type: number,\n stride: number,\n offset: number,\n perInstance: boolean,\n ) => {\n gl.enableVertexAttribArray(location);\n gl.vertexAttribPointer(\n location,\n size,\n type,\n type === gl.UNSIGNED_BYTE,\n stride,\n offset,\n );\n divisor(location, perInstance ? 1 : 0);\n };\n\n const bind = (item: Item3D, res: ItemResources) => {\n const F = gl.FLOAT;\n const U8 = gl.UNSIGNED_BYTE;\n let used: number;\n if (item.kind === \"mesh\") {\n gl.bindBuffer(gl.ARRAY_BUFFER, res.vertex);\n attribute(0, 3, F, VERTEX_STRIDE, 0, false);\n attribute(1, 3, F, VERTEX_STRIDE, 12, false);\n attribute(2, 4, U8, VERTEX_STRIDE, 24, false);\n used = 3;\n } else {\n gl.bindBuffer(gl.ARRAY_BUFFER, corners);\n attribute(0, 2, F, 0, 0, false);\n gl.bindBuffer(gl.ARRAY_BUFFER, res.vertex);\n if (item.kind === \"points\") {\n attribute(1, 3, F, POINT_STRIDE, 0, true);\n attribute(2, 1, F, POINT_STRIDE, 12, true);\n attribute(3, 4, U8, POINT_STRIDE, 16, true);\n } else {\n attribute(1, 3, F, SEGMENT_STRIDE, 0, true);\n attribute(2, 3, F, SEGMENT_STRIDE, 12, true);\n attribute(3, 4, U8, SEGMENT_STRIDE, 24, true);\n }\n used = 4;\n }\n for (let i = used; i < MAX_LOCATIONS; i++) {\n gl.disableVertexAttribArray(i);\n divisor(i, 0);\n }\n };\n\n const upload = (item: Item3D): ItemResources | null => {\n const existing = resources.get(item.key);\n if (\n existing &&\n existing.version === item.version &&\n existing.kind === item.kind\n ) {\n // same mesh, triangles in a new order (transparent, sorted by depth)\n if (\n item.kind === \"mesh\" &&\n existing.index &&\n (item.order ?? 0) !== existing.order\n ) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, existing.index);\n gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, 0, item.indices);\n existing.order = item.order ?? 0;\n }\n return existing;\n }\n if (existing) {\n gl.deleteBuffer(existing.vertex);\n if (existing.index) gl.deleteBuffer(existing.index);\n resources.delete(item.key);\n }\n const vertex = gl.createBuffer();\n if (!vertex) return null;\n gl.bindBuffer(gl.ARRAY_BUFFER, vertex);\n gl.bufferData(\n gl.ARRAY_BUFFER,\n item.kind === \"mesh\" ? item.vertices : item.data,\n gl.STATIC_DRAW,\n );\n let index: WebGLBuffer | null = null;\n if (item.kind === \"mesh\") {\n index = gl.createBuffer();\n if (!index) {\n gl.deleteBuffer(vertex);\n return null;\n }\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, index);\n gl.bufferData(\n gl.ELEMENT_ARRAY_BUFFER,\n item.indices,\n item.order === undefined ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW,\n );\n }\n const res = {\n version: item.version,\n kind: item.kind,\n vertex,\n index,\n order: item.kind === \"mesh\" ? (item.order ?? 0) : 0,\n };\n resources.set(item.key, res);\n return res;\n };\n\n /** Sets the uniforms of an item and draws it */\n const draw = (\n item: Item3D,\n program: Program,\n frame: Frame3D,\n seen: Set<string>,\n ) => {\n seen.add(item.key);\n const count = item.kind === \"mesh\" ? item.indices.length : item.count;\n if (count <= 0) return;\n const res = upload(item);\n if (!res) return;\n gl.useProgram(program.program);\n const u = itemUniforms(item, frame, uniformData);\n const loc = program.uniforms;\n gl.uniformMatrix4fv(loc.u_viewProj, false, u.subarray(0, 16));\n gl.uniform4fv(loc.u_viewport, u.subarray(16, 20));\n gl.uniform4fv(loc.u_eye, u.subarray(20, 24));\n gl.uniform4fv(loc.u_light, u.subarray(24, 28));\n gl.uniform4fv(loc.u_material, u.subarray(28, 32));\n gl.uniform4fv(loc.u_params, u.subarray(32, 36));\n gl.uniform4fv(loc.u_fog, u.subarray(36, 40));\n bind(item, res);\n if (item.kind === \"mesh\") {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, res.index);\n gl.drawElements(gl.TRIANGLES, count, gl.UNSIGNED_INT, 0);\n } else {\n drawInstanced(count);\n }\n };\n\n /** Blended items into the transparency targets, then their composite */\n const drawTransparent = (\n fb: Framebuffers,\n oit: NonNullable<Framebuffers[\"oit\"]>,\n blended: readonly Item3D[],\n frame: Frame3D,\n seen: Set<string>,\n ) => {\n if (!gl2 || !oitPrograms) return;\n const { width, height } = fb;\n gl.bindFramebuffer(gl.FRAMEBUFFER, oit.fbo);\n gl2.clearBufferfv(gl2.COLOR, 0, [0, 0, 0, 0]);\n gl2.clearBufferfv(gl2.COLOR, 1, [0, 0, 0, 0]);\n gl.depthMask(false);\n gl.blendFunc(gl.ONE, gl.ONE);\n for (const item of blended) {\n if (item.kind !== \"lines\")\n draw(item, oitPrograms[item.kind], frame, seen);\n }\n // resolve the samples into the textures read by the composite\n gl.bindFramebuffer(gl2.READ_FRAMEBUFFER, oit.fbo);\n oit.resolved.forEach((target, i) => {\n gl2.readBuffer(i === 0 ? gl.COLOR_ATTACHMENT0 : gl2.COLOR_ATTACHMENT1);\n gl.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, target);\n gl2.blitFramebuffer(\n 0,\n 0,\n width,\n height,\n 0,\n 0,\n width,\n height,\n gl.COLOR_BUFFER_BIT,\n gl.NEAREST,\n );\n });\n gl.bindFramebuffer(gl.FRAMEBUFFER, fb.main);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.disable(gl.DEPTH_TEST);\n for (let i = 0; i < MAX_LOCATIONS; i++) {\n gl.disableVertexAttribArray(i);\n divisor(i, 0);\n }\n gl.useProgram(oitPrograms.composite);\n oit.textures.forEach((texture, i) => {\n gl.activeTexture(gl.TEXTURE0 + i);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n });\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.enable(gl.DEPTH_TEST);\n };\n\n /** Draws a frame (the context is live) */\n const renderFrame = (items: readonly Item3D[], frame: Frame3D) => {\n const progs = programs;\n if (!progs) return;\n const fb = mainFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fb ? fb.main : null);\n gl.viewport(0, 0, canvas.width, canvas.height);\n gl.clearColor(0, 0, 0, 0);\n gl.clearDepth(1);\n gl.depthMask(true);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.enable(gl.DEPTH_TEST);\n gl.depthFunc(gl.LEQUAL);\n gl.disable(gl.CULL_FACE);\n const seen = new Set<string>();\n const ordered = drawOrder(items);\n const blended = ordered.filter((item) => drawRank(item) === 2);\n const oit =\n fb && oitPrograms && blended.length > 0 ? oitFramebuffers(fb) : null;\n let additive = false;\n let composited = !oit;\n for (const item of ordered) {\n const rank = drawRank(item);\n if (oit && rank === 2) continue;\n if (fb && oit && rank === 3 && !composited) {\n drawTransparent(fb, oit, blended, frame, seen);\n composited = true;\n additive = false;\n }\n gl.depthMask(writesDepth(item));\n const add = item.kind === \"points\" && !!item.additive;\n if (add !== additive) {\n // additive points: the colors add up, the coverage composites as usual\n if (add)\n gl.blendFuncSeparate(gl.ONE, gl.ONE, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n else gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n additive = add;\n }\n draw(item, progs[item.kind], frame, seen);\n }\n if (fb && oit && !composited) {\n drawTransparent(fb, oit, blended, frame, seen);\n additive = false;\n }\n gl.depthMask(true);\n if (additive) gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n if (fb && gl2) {\n // the samples resolved into the canvas\n gl.bindFramebuffer(gl2.READ_FRAMEBUFFER, fb.main);\n gl.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, null);\n gl2.blitFramebuffer(\n 0,\n 0,\n fb.width,\n fb.height,\n 0,\n 0,\n fb.width,\n fb.height,\n gl.COLOR_BUFFER_BIT,\n gl.NEAREST,\n );\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n for (const [key, res] of resources) {\n if (!seen.has(key)) {\n gl.deleteBuffer(res.vertex);\n if (res.index) gl.deleteBuffer(res.index);\n resources.delete(key);\n }\n }\n };\n\n return {\n kind: version === 2 ? \"webgl2\" : \"webgl\",\n canvas,\n get orderIndependent() {\n return !!oitPrograms;\n },\n resize(width, height) {\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n },\n render(items, frame) {\n last = { items, frame };\n // suspended by the context budget: redrawn by the restore\n if (lost || !slot.use() || gl.isContextLost()) return;\n renderFrame(items, frame);\n },\n destroy() {\n slot.release();\n last = null;\n if (!gl.isContextLost()) {\n for (const res of resources.values()) {\n gl.deleteBuffer(res.vertex);\n if (res.index) gl.deleteBuffer(res.index);\n }\n for (const p of Object.values(programs ?? {})) {\n gl.deleteProgram(p.program);\n }\n if (oitPrograms) {\n gl.deleteProgram(oitPrograms.points.program);\n gl.deleteProgram(oitPrograms.mesh.program);\n gl.deleteProgram(oitPrograms.composite);\n }\n deleteFramebuffers();\n gl.deleteBuffer(corners);\n }\n oitPrograms = null;\n programs = null;\n corners = null;\n framebuffers = null;\n resources.clear();\n loseContext();\n },\n };\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("./render-types.cjs"),t=require("./shaders.cjs");var n=16,r=32,i=8,a=16,o=4,s=async(s,c,l=!1)=>{let u=typeof navigator<`u`?navigator.gpu:void 0;if(!u)return null;let d=await u.requestAdapter();if(!d)return null;let f=d;if(l&&(f.info?.isFallbackAdapter||f.isFallbackAdapter))return null;let p=await d.requestDevice(),m=s.getContext(`webgpu`);if(!m)return p.destroy(),null;let h=u.getPreferredCanvasFormat();m.configure({device:p,format:h,alphaMode:`premultiplied`});let g=!1;p.lost.then(()=>{g||c()});let _=p.createBindGroupLayout({entries:[{binding:0,visibility:3,buffer:{type:`uniform`}}]}),v=p.createPipelineLayout({bindGroupLayouts:[_]}),y={color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}},b=(e,t,n,r)=>{let i=p.createShaderModule({code:e});return p.createRenderPipeline({layout:v,vertex:{module:i,entryPoint:`vs`,buffers:t},fragment:{module:i,entryPoint:`fs`,targets:[{format:h,blend:y}]},primitive:{topology:n,cullMode:`none`},depthStencil:{format:`depth24plus`,depthWriteEnabled:r,depthCompare:`less-equal`},multisample:{count:o}})},x=[{arrayStride:20,stepMode:`instance`,attributes:[{shaderLocation:0,offset:0,format:`float32x3`},{shaderLocation:1,offset:12,format:`float32`},{shaderLocation:2,offset:16,format:`unorm8x4`}]}],S=[{arrayStride:28,stepMode:`vertex`,attributes:[{shaderLocation:0,offset:0,format:`float32x3`},{shaderLocation:1,offset:12,format:`float32x3`},{shaderLocation:2,offset:24,format:`unorm8x4`}]}],C=[{arrayStride:28,stepMode:`instance`,attributes:[{shaderLocation:0,offset:0,format:`float32x3`},{shaderLocation:1,offset:12,format:`float32x3`},{shaderLocation:2,offset:24,format:`unorm8x4`}]}],w={points:[b(t.WGSL_POINTS,x,`triangle-strip`,!1),b(t.WGSL_POINTS,x,`triangle-strip`,!0)],mesh:[b(t.WGSL_MESH,S,`triangle-list`,!1),b(t.WGSL_MESH,S,`triangle-list`,!0)],lines:[b(t.WGSL_LINES,C,`triangle-strip`,!1),b(t.WGSL_LINES,C,`triangle-strip`,!0)]},T=null,E=()=>{let e=s.width,t=s.height;return T&&T.width===e&&T.height===t?T:(T?.color.destroy(),T?.depth.destroy(),T={width:e,height:t,color:p.createTexture({size:[e,t],sampleCount:o,format:h,usage:a}),depth:p.createTexture({size:[e,t],sampleCount:o,format:`depth24plus`,usage:a})},T)},D=new Map,O=new Float32Array(40),k=(e,t)=>{let n=e.byteLength;if(n<=0)return null;let r=p.createBuffer({size:Math.max(16,Math.ceil(n/4)*4),usage:t|i});return e instanceof Uint32Array?p.queue.writeBuffer(r,0,e.buffer,e.byteOffset,n):p.queue.writeBuffer(r,0,e),r},A=e=>{e.vertex?.destroy(),e.index?.destroy()},j=e=>{let t=D.get(e.key);if(t&&t.version===e.version&&t.kind===e.kind){if(e.kind===`mesh`&&t.index&&(e.order??0)!==t.order){let{indices:n}=e;p.queue.writeBuffer(t.index,0,n.buffer,n.byteOffset,n.byteLength),t.order=e.order??0}return t}t&&A(t);let i=k(e.kind===`mesh`?e.vertices:e.data,r),a=e.kind===`mesh`?k(e.indices,n):null;if(t)t.version=e.version,t.kind=e.kind,t.vertex=i,t.index=a,t.order=e.kind===`mesh`?e.order??0:0;else{let n=p.createBuffer({size:160,usage:72});t={version:e.version,kind:e.kind,vertex:i,index:a,order:e.kind===`mesh`?e.order??0:0,uniform:n,bindGroup:p.createBindGroup({layout:_,entries:[{binding:0,resource:{buffer:n}}]})},D.set(e.key,t)}return t};return{kind:`webgpu`,canvas:s,resize(e,t){s.width=Math.max(1,e),s.height=Math.max(1,t)},render(n,r){if(g)return;let{color:i,depth:a}=E(),o=p.createCommandEncoder(),s=o.beginRenderPass({colorAttachments:[{view:i.createView(),resolveTarget:m.getCurrentTexture().createView(),clearValue:{r:0,g:0,b:0,a:0},loadOp:`clear`,storeOp:`discard`}],depthStencilAttachment:{view:a.createView(),depthClearValue:1,depthLoadOp:`clear`,depthStoreOp:`discard`}}),c=new Set;for(let i of e.drawOrder(n)){c.add(i.key);let e=i.kind===`mesh`?i.indices.length:i.count;if(e<=0)continue;let n=j(i);if(!n.vertex)continue;p.queue.writeBuffer(n.uniform,0,t.itemUniforms(i,r,O));let a=w[i.kind],o=a[t.writesDepth(i)?a.length-1:0];if(o){if(s.setPipeline(o),s.setBindGroup(0,n.bindGroup),s.setVertexBuffer(0,n.vertex),i.kind===`mesh`){if(!n.index)continue;s.setIndexBuffer(n.index,`uint32`),s.drawIndexed(e)}else s.draw(4,e)}}s.end(),p.queue.submit([o.finish()]);for(let[e,t]of D)c.has(e)||(A(t),t.uniform.destroy(),D.delete(e))},destroy(){g=!0;for(let e of D.values())A(e),e.uniform.destroy();D.clear(),T?.color.destroy(),T?.depth.destroy(),T=null,m.unconfigure(),p.destroy()}}};exports.createWebGpu3D=s;
1
+ const e=require("./render-types.cjs"),t=require("./oit.cjs"),n=require("./shaders.cjs");var r=16,i=32,a=8,o=2,s=16,c=4,l=`rgba16float`,u=async(u,d,f=!1)=>{let p=typeof navigator<`u`?navigator.gpu:void 0;if(!p)return null;let m=await p.requestAdapter();if(!m)return null;let h=m;if(f&&(h.info?.isFallbackAdapter||h.isFallbackAdapter))return null;let g=await m.requestDevice(),_=u.getContext(`webgpu`);if(!_)return g.destroy(),null;let v=p.getPreferredCanvasFormat();_.configure({device:g,format:v,alphaMode:`premultiplied`});let y=!1;g.lost.then(()=>{y||d()});let b=g.createBindGroupLayout({entries:[{binding:0,visibility:3,buffer:{type:`uniform`}}]}),x=g.createPipelineLayout({bindGroupLayouts:[b]}),S={color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}},C={color:{srcFactor:`one`,dstFactor:`one`,operation:`add`},alpha:S.alpha},w={color:{srcFactor:`one`,dstFactor:`one`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one`,operation:`add`}},T=(e,t,n,r,i=S,a=!1)=>{let o=g.createShaderModule({code:e});return g.createRenderPipeline({layout:x,vertex:{module:o,entryPoint:`vs`,buffers:t},fragment:{module:o,entryPoint:a?`fsOit`:`fs`,targets:a?[{format:l,blend:w},{format:l,blend:w}]:[{format:v,blend:i}]},primitive:{topology:n,cullMode:`none`},depthStencil:{format:`depth24plus`,depthWriteEnabled:r,depthCompare:`less-equal`},multisample:{count:c}})},E=[{arrayStride:20,stepMode:`instance`,attributes:[{shaderLocation:0,offset:0,format:`float32x3`},{shaderLocation:1,offset:12,format:`float32`},{shaderLocation:2,offset:16,format:`unorm8x4`}]}],D=[{arrayStride:28,stepMode:`vertex`,attributes:[{shaderLocation:0,offset:0,format:`float32x3`},{shaderLocation:1,offset:12,format:`float32x3`},{shaderLocation:2,offset:24,format:`unorm8x4`}]}],O=[{arrayStride:28,stepMode:`instance`,attributes:[{shaderLocation:0,offset:0,format:`float32x3`},{shaderLocation:1,offset:12,format:`float32x3`},{shaderLocation:2,offset:24,format:`unorm8x4`}]}],k={points:[T(n.WGSL_POINTS,E,`triangle-strip`,!1),T(n.WGSL_POINTS,E,`triangle-strip`,!0)],mesh:[T(n.WGSL_MESH,D,`triangle-list`,!1),T(n.WGSL_MESH,D,`triangle-list`,!0)],lines:[T(n.WGSL_LINES,O,`triangle-strip`,!1),T(n.WGSL_LINES,O,`triangle-strip`,!0)]},A=null,j=t=>{if(t.kind===`points`&&t.additive)return A??(A=T(n.WGSL_POINTS,E,`triangle-strip`,!1,C)),A;let r=k[t.kind];return r[e.writesDepth(t)?r.length-1:0]};g.pushErrorScope(`validation`);let M=g.createBindGroupLayout({entries:[0,1].map(e=>({binding:e,visibility:o,texture:{sampleType:`unfilterable-float`}}))}),N=g.createShaderModule({code:t.WGSL_COMPOSITE}),P={points:T(n.WGSL_POINTS,E,`triangle-strip`,!1,S,!0),mesh:T(n.WGSL_MESH,D,`triangle-list`,!1,S,!0),composite:g.createRenderPipeline({layout:g.createPipelineLayout({bindGroupLayouts:[M]}),vertex:{module:N,entryPoint:`vs`},fragment:{module:N,entryPoint:`fs`,targets:[{format:v,blend:S}]},primitive:{topology:`triangle-list`},depthStencil:{format:`depth24plus`,depthWriteEnabled:!1,depthCompare:`always`},multisample:{count:c}})},F=!await g.popErrorScope(),I=null,L=()=>{let e=I?.oit;e&&(e.accum.destroy(),e.extra.destroy(),e.accumResolved.destroy(),e.extraResolved.destroy())},R=()=>{let e=u.width,t=u.height;return I&&I.width===e&&I.height===t?I:(I?.color.destroy(),I?.depth.destroy(),L(),I={width:e,height:t,color:g.createTexture({size:[e,t],sampleCount:c,format:v,usage:s}),depth:g.createTexture({size:[e,t],sampleCount:c,format:`depth24plus`,usage:s}),oit:null},I)},z=e=>{if(e.oit)return e.oit;let t=t=>g.createTexture({size:[e.width,e.height],sampleCount:t,format:l,usage:t>1?s:20}),n=t(1),r=t(1);return e.oit={accum:t(c),extra:t(c),accumResolved:n,extraResolved:r,bindGroup:g.createBindGroup({layout:M,entries:[{binding:0,resource:n.createView()},{binding:1,resource:r.createView()}]})},e.oit},B=new Map,V=new Float32Array(40),H=(e,t)=>{let n=e.byteLength;if(n<=0)return null;let r=g.createBuffer({size:Math.max(16,Math.ceil(n/4)*4),usage:t|a});return e instanceof Uint32Array?g.queue.writeBuffer(r,0,e.buffer,e.byteOffset,n):g.queue.writeBuffer(r,0,e),r},U=e=>{e.vertex?.destroy(),e.index?.destroy()},W=e=>{let t=B.get(e.key);if(t&&t.version===e.version&&t.kind===e.kind){if(e.kind===`mesh`&&t.index&&(e.order??0)!==t.order){let{indices:n}=e;g.queue.writeBuffer(t.index,0,n.buffer,n.byteOffset,n.byteLength),t.order=e.order??0}return t}t&&U(t);let n=H(e.kind===`mesh`?e.vertices:e.data,i),a=e.kind===`mesh`?H(e.indices,r):null;if(t)t.version=e.version,t.kind=e.kind,t.vertex=n,t.index=a,t.order=e.kind===`mesh`?e.order??0:0;else{let r=g.createBuffer({size:160,usage:72});t={version:e.version,kind:e.kind,vertex:n,index:a,order:e.kind===`mesh`?e.order??0:0,uniform:r,bindGroup:g.createBindGroup({layout:b,entries:[{binding:0,resource:{buffer:r}}]})},B.set(e.key,t)}return t};return{kind:`webgpu`,canvas:u,orderIndependent:F,resize(e,t){u.width=Math.max(1,e),u.height=Math.max(1,t)},render(t,r){if(y)return;let i=R(),a=e.drawOrder(t),o=F&&a.some(t=>e.drawRank(t)===2),s=g.createCommandEncoder(),c=_.getCurrentTexture().createView(),l=new Set,u=(e,t,i)=>{let a=t.kind===`mesh`?t.indices.length:t.count;if(a<=0)return;let o=W(t);if(o.vertex){if(g.queue.writeBuffer(o.uniform,0,n.itemUniforms(t,r,V)),e.setPipeline(i),e.setBindGroup(0,o.bindGroup),e.setVertexBuffer(0,o.vertex),t.kind===`mesh`){if(!o.index)return;e.setIndexBuffer(o.index,`uint32`),e.drawIndexed(a)}else e.draw(4,a)}},d=s.beginRenderPass({colorAttachments:[{view:i.color.createView(),resolveTarget:o?void 0:c,clearValue:{r:0,g:0,b:0,a:0},loadOp:`clear`,storeOp:o?`store`:`discard`}],depthStencilAttachment:{view:i.depth.createView(),depthClearValue:1,depthLoadOp:`clear`,depthStoreOp:o?`store`:`discard`}});for(let t of a){if(o&&e.drawRank(t)>1)break;l.add(t.key),u(d,t,j(t))}if(d.end(),o){let t=z(i),n=s.beginRenderPass({colorAttachments:[{view:t.accum.createView(),resolveTarget:t.accumResolved.createView(),clearValue:{r:0,g:0,b:0,a:0},loadOp:`clear`,storeOp:`discard`},{view:t.extra.createView(),resolveTarget:t.extraResolved.createView(),clearValue:{r:0,g:0,b:0,a:0},loadOp:`clear`,storeOp:`discard`}],depthStencilAttachment:{view:i.depth.createView(),depthReadOnly:!0}});for(let t of a)e.drawRank(t)===2&&t.kind!==`lines`&&(l.add(t.key),u(n,t,P[t.kind]));n.end();let r=s.beginRenderPass({colorAttachments:[{view:i.color.createView(),resolveTarget:c,loadOp:`load`,storeOp:`discard`}],depthStencilAttachment:{view:i.depth.createView(),depthLoadOp:`load`,depthStoreOp:`discard`}});r.setPipeline(P.composite),r.setBindGroup(0,t.bindGroup),r.draw(3);for(let t of a)e.drawRank(t)<3||(l.add(t.key),u(r,t,j(t)));r.end()}g.queue.submit([s.finish()]);for(let[e,t]of B)l.has(e)||(U(t),t.uniform.destroy(),B.delete(e))},destroy(){y=!0;for(let e of B.values())U(e),e.uniform.destroy();B.clear(),I?.color.destroy(),I?.depth.destroy(),L(),I=null,_.unconfigure(),g.destroy()}}};exports.createWebGpu3D=u;
2
2
  //# sourceMappingURL=webgpu.cjs.map