minerva-design 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1226) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +13630 -4757
  4. package/dist/angular/fesm2022/minerva-angular.mjs +6872 -172
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +2240 -0
  7. package/dist/charts/canvas.d.cts +10 -2
  8. package/dist/charts/canvas.d.ts +10 -2
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +9 -3
  11. package/dist/charts/core.d.ts +9 -3
  12. package/dist/charts/core.js +19 -6
  13. package/dist/charts/engine/axis.cjs +1 -1
  14. package/dist/charts/engine/axis.cjs.map +1 -1
  15. package/dist/charts/engine/axis.js +6 -6
  16. package/dist/charts/engine/axis.js.map +1 -1
  17. package/dist/charts/engine/canvas.cjs +1 -1
  18. package/dist/charts/engine/canvas.cjs.map +1 -1
  19. package/dist/charts/engine/canvas.d.cts +11 -1
  20. package/dist/charts/engine/canvas.d.ts +11 -1
  21. package/dist/charts/engine/canvas.js +161 -99
  22. package/dist/charts/engine/canvas.js.map +1 -1
  23. package/dist/charts/engine/chart.cjs +1 -2
  24. package/dist/charts/engine/chart.cjs.map +1 -1
  25. package/dist/charts/engine/chart.d.cts +1 -1
  26. package/dist/charts/engine/chart.d.ts +1 -1
  27. package/dist/charts/engine/chart.js +390 -349
  28. package/dist/charts/engine/chart.js.map +1 -1
  29. package/dist/charts/engine/color.cjs +1 -1
  30. package/dist/charts/engine/color.cjs.map +1 -1
  31. package/dist/charts/engine/color.d.cts +17 -0
  32. package/dist/charts/engine/color.d.ts +17 -0
  33. package/dist/charts/engine/color.js +27 -3
  34. package/dist/charts/engine/color.js.map +1 -1
  35. package/dist/charts/engine/controller.cjs +2 -2
  36. package/dist/charts/engine/controller.cjs.map +1 -1
  37. package/dist/charts/engine/controller.d.cts +17 -2
  38. package/dist/charts/engine/controller.d.ts +17 -2
  39. package/dist/charts/engine/controller.js +404 -280
  40. package/dist/charts/engine/controller.js.map +1 -1
  41. package/dist/charts/engine/curve.cjs +2 -0
  42. package/dist/charts/engine/curve.cjs.map +1 -0
  43. package/dist/charts/engine/curve.d.cts +15 -0
  44. package/dist/charts/engine/curve.d.ts +15 -0
  45. package/dist/charts/engine/curve.js +56 -0
  46. package/dist/charts/engine/curve.js.map +1 -0
  47. package/dist/charts/engine/data.cjs +1 -1
  48. package/dist/charts/engine/data.cjs.map +1 -1
  49. package/dist/charts/engine/data.d.cts +21 -2
  50. package/dist/charts/engine/data.d.ts +21 -2
  51. package/dist/charts/engine/data.js +117 -43
  52. package/dist/charts/engine/data.js.map +1 -1
  53. package/dist/charts/engine/dom.cjs +1 -1
  54. package/dist/charts/engine/dom.cjs.map +1 -1
  55. package/dist/charts/engine/dom.d.cts +5 -3
  56. package/dist/charts/engine/dom.d.ts +5 -3
  57. package/dist/charts/engine/dom.js +27 -22
  58. package/dist/charts/engine/dom.js.map +1 -1
  59. package/dist/charts/engine/format.cjs +1 -1
  60. package/dist/charts/engine/format.cjs.map +1 -1
  61. package/dist/charts/engine/format.d.cts +21 -6
  62. package/dist/charts/engine/format.d.ts +21 -6
  63. package/dist/charts/engine/format.js +46 -21
  64. package/dist/charts/engine/format.js.map +1 -1
  65. package/dist/charts/engine/items.cjs +1 -1
  66. package/dist/charts/engine/items.cjs.map +1 -1
  67. package/dist/charts/engine/items.js +290 -62
  68. package/dist/charts/engine/items.js.map +1 -1
  69. package/dist/charts/engine/labels.cjs +2 -0
  70. package/dist/charts/engine/labels.cjs.map +1 -0
  71. package/dist/charts/engine/labels.d.cts +13 -0
  72. package/dist/charts/engine/labels.d.ts +13 -0
  73. package/dist/charts/engine/labels.js +74 -0
  74. package/dist/charts/engine/labels.js.map +1 -0
  75. package/dist/charts/engine/layout.cjs +1 -1
  76. package/dist/charts/engine/layout.cjs.map +1 -1
  77. package/dist/charts/engine/layout.d.cts +34 -2
  78. package/dist/charts/engine/layout.d.ts +34 -2
  79. package/dist/charts/engine/layout.js +53 -12
  80. package/dist/charts/engine/layout.js.map +1 -1
  81. package/dist/charts/engine/locale.cjs +2 -0
  82. package/dist/charts/engine/locale.cjs.map +1 -0
  83. package/dist/charts/engine/locale.d.cts +33 -0
  84. package/dist/charts/engine/locale.d.ts +33 -0
  85. package/dist/charts/engine/locale.js +68 -0
  86. package/dist/charts/engine/locale.js.map +1 -0
  87. package/dist/charts/engine/model.cjs +1 -1
  88. package/dist/charts/engine/model.cjs.map +1 -1
  89. package/dist/charts/engine/model.d.cts +68 -3
  90. package/dist/charts/engine/model.d.ts +68 -3
  91. package/dist/charts/engine/model.js +332 -108
  92. package/dist/charts/engine/model.js.map +1 -1
  93. package/dist/charts/engine/orderbook/book.cjs +2 -0
  94. package/dist/charts/engine/orderbook/book.cjs.map +1 -0
  95. package/dist/charts/engine/orderbook/book.d.cts +28 -0
  96. package/dist/charts/engine/orderbook/book.d.ts +28 -0
  97. package/dist/charts/engine/orderbook/book.js +134 -0
  98. package/dist/charts/engine/orderbook/book.js.map +1 -0
  99. package/dist/charts/engine/orderbook/depth.cjs +2 -0
  100. package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
  101. package/dist/charts/engine/orderbook/depth.d.cts +7 -0
  102. package/dist/charts/engine/orderbook/depth.d.ts +7 -0
  103. package/dist/charts/engine/orderbook/depth.js +413 -0
  104. package/dist/charts/engine/orderbook/depth.js.map +1 -0
  105. package/dist/charts/engine/orderbook/format.cjs +2 -0
  106. package/dist/charts/engine/orderbook/format.cjs.map +1 -0
  107. package/dist/charts/engine/orderbook/format.d.cts +48 -0
  108. package/dist/charts/engine/orderbook/format.d.ts +48 -0
  109. package/dist/charts/engine/orderbook/format.js +65 -0
  110. package/dist/charts/engine/orderbook/format.js.map +1 -0
  111. package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
  112. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
  113. package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
  114. package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
  115. package/dist/charts/engine/orderbook/heatmap.js +703 -0
  116. package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
  117. package/dist/charts/engine/orderbook/host.cjs +2 -0
  118. package/dist/charts/engine/orderbook/host.cjs.map +1 -0
  119. package/dist/charts/engine/orderbook/host.d.cts +50 -0
  120. package/dist/charts/engine/orderbook/host.d.ts +50 -0
  121. package/dist/charts/engine/orderbook/host.js +161 -0
  122. package/dist/charts/engine/orderbook/host.js.map +1 -0
  123. package/dist/charts/engine/orderbook/index.cjs +1 -0
  124. package/dist/charts/engine/orderbook/index.d.cts +6 -0
  125. package/dist/charts/engine/orderbook/index.d.ts +6 -0
  126. package/dist/charts/engine/orderbook/index.js +6 -0
  127. package/dist/charts/engine/orderbook/ladder.cjs +2 -0
  128. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
  129. package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
  130. package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
  131. package/dist/charts/engine/orderbook/ladder.js +341 -0
  132. package/dist/charts/engine/orderbook/ladder.js.map +1 -0
  133. package/dist/charts/engine/orderbook/tape.cjs +2 -0
  134. package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
  135. package/dist/charts/engine/orderbook/tape.d.cts +6 -0
  136. package/dist/charts/engine/orderbook/tape.d.ts +6 -0
  137. package/dist/charts/engine/orderbook/tape.js +450 -0
  138. package/dist/charts/engine/orderbook/tape.js.map +1 -0
  139. package/dist/charts/engine/orderbook/types.d.cts +735 -0
  140. package/dist/charts/engine/orderbook/types.d.ts +735 -0
  141. package/dist/charts/engine/overlay.cjs +1 -1
  142. package/dist/charts/engine/overlay.cjs.map +1 -1
  143. package/dist/charts/engine/overlay.d.cts +18 -0
  144. package/dist/charts/engine/overlay.d.ts +18 -0
  145. package/dist/charts/engine/overlay.js +138 -102
  146. package/dist/charts/engine/overlay.js.map +1 -1
  147. package/dist/charts/engine/presets.cjs +2 -2
  148. package/dist/charts/engine/presets.cjs.map +1 -1
  149. package/dist/charts/engine/presets.d.cts +319 -5
  150. package/dist/charts/engine/presets.d.ts +319 -5
  151. package/dist/charts/engine/presets.js +463 -38
  152. package/dist/charts/engine/presets.js.map +1 -1
  153. package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
  154. package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
  155. package/dist/charts/engine/renderers/canvas2d.js +149 -111
  156. package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
  157. package/dist/charts/engine/renderers/detect.cjs +1 -1
  158. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  159. package/dist/charts/engine/renderers/detect.js +18 -15
  160. package/dist/charts/engine/renderers/detect.js.map +1 -1
  161. package/dist/charts/engine/renderers/gl.cjs +2 -0
  162. package/dist/charts/engine/renderers/gl.cjs.map +1 -0
  163. package/dist/charts/engine/renderers/gl.d.cts +21 -0
  164. package/dist/charts/engine/renderers/gl.d.ts +21 -0
  165. package/dist/charts/engine/renderers/gl.js +56 -0
  166. package/dist/charts/engine/renderers/gl.js.map +1 -0
  167. package/dist/charts/engine/renderers/range.cjs +1 -1
  168. package/dist/charts/engine/renderers/range.cjs.map +1 -1
  169. package/dist/charts/engine/renderers/range.js +4 -4
  170. package/dist/charts/engine/renderers/range.js.map +1 -1
  171. package/dist/charts/engine/renderers/shaders.cjs +180 -20
  172. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  173. package/dist/charts/engine/renderers/shaders.d.cts +18 -2
  174. package/dist/charts/engine/renderers/shaders.d.ts +18 -2
  175. package/dist/charts/engine/renderers/shaders.js +176 -20
  176. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  177. package/dist/charts/engine/renderers/types.cjs.map +1 -1
  178. package/dist/charts/engine/renderers/types.d.cts +11 -4
  179. package/dist/charts/engine/renderers/types.d.ts +11 -4
  180. package/dist/charts/engine/renderers/types.js.map +1 -1
  181. package/dist/charts/engine/renderers/webgl.cjs +2 -0
  182. package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
  183. package/dist/charts/engine/renderers/webgl.d.cts +4 -0
  184. package/dist/charts/engine/renderers/webgl.d.ts +4 -0
  185. package/dist/charts/engine/renderers/webgl.js +133 -0
  186. package/dist/charts/engine/renderers/webgl.js.map +1 -0
  187. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  188. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  189. package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
  190. package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
  191. package/dist/charts/engine/renderers/webgl2.js +62 -90
  192. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  193. package/dist/charts/engine/renderers/webgpu.cjs +1 -1
  194. package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
  195. package/dist/charts/engine/renderers/webgpu.js +18 -15
  196. package/dist/charts/engine/renderers/webgpu.js.map +1 -1
  197. package/dist/charts/engine/scale.cjs +1 -1
  198. package/dist/charts/engine/scale.cjs.map +1 -1
  199. package/dist/charts/engine/scale.js +1 -1
  200. package/dist/charts/engine/scale.js.map +1 -1
  201. package/dist/charts/engine/scene.cjs +1 -1
  202. package/dist/charts/engine/scene.cjs.map +1 -1
  203. package/dist/charts/engine/scene.d.cts +32 -9
  204. package/dist/charts/engine/scene.d.ts +32 -9
  205. package/dist/charts/engine/scene.js +363 -122
  206. package/dist/charts/engine/scene.js.map +1 -1
  207. package/dist/charts/engine/shapes/bullet.cjs +2 -0
  208. package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
  209. package/dist/charts/engine/shapes/bullet.d.cts +6 -0
  210. package/dist/charts/engine/shapes/bullet.d.ts +6 -0
  211. package/dist/charts/engine/shapes/bullet.js +255 -0
  212. package/dist/charts/engine/shapes/bullet.js.map +1 -0
  213. package/dist/charts/engine/shapes/calendar.cjs +2 -0
  214. package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
  215. package/dist/charts/engine/shapes/calendar.d.cts +38 -0
  216. package/dist/charts/engine/shapes/calendar.d.ts +38 -0
  217. package/dist/charts/engine/shapes/calendar.js +369 -0
  218. package/dist/charts/engine/shapes/calendar.js.map +1 -0
  219. package/dist/charts/engine/shapes/canvas.cjs +2 -0
  220. package/dist/charts/engine/shapes/canvas.cjs.map +1 -0
  221. package/dist/charts/engine/shapes/canvas.d.cts +65 -0
  222. package/dist/charts/engine/shapes/canvas.d.ts +65 -0
  223. package/dist/charts/engine/shapes/canvas.js +168 -0
  224. package/dist/charts/engine/shapes/canvas.js.map +1 -0
  225. package/dist/charts/engine/shapes/chart.cjs +2 -0
  226. package/dist/charts/engine/shapes/chart.cjs.map +1 -0
  227. package/dist/charts/engine/shapes/chart.d.cts +7 -0
  228. package/dist/charts/engine/shapes/chart.d.ts +7 -0
  229. package/dist/charts/engine/shapes/chart.js +292 -0
  230. package/dist/charts/engine/shapes/chart.js.map +1 -0
  231. package/dist/charts/engine/shapes/draw.cjs +2 -0
  232. package/dist/charts/engine/shapes/draw.cjs.map +1 -0
  233. package/dist/charts/engine/shapes/draw.d.cts +22 -0
  234. package/dist/charts/engine/shapes/draw.d.ts +22 -0
  235. package/dist/charts/engine/shapes/draw.js +165 -0
  236. package/dist/charts/engine/shapes/draw.js.map +1 -0
  237. package/dist/charts/engine/shapes/funnel.cjs +2 -0
  238. package/dist/charts/engine/shapes/funnel.cjs.map +1 -0
  239. package/dist/charts/engine/shapes/funnel.d.cts +6 -0
  240. package/dist/charts/engine/shapes/funnel.d.ts +6 -0
  241. package/dist/charts/engine/shapes/funnel.js +149 -0
  242. package/dist/charts/engine/shapes/funnel.js.map +1 -0
  243. package/dist/charts/engine/shapes/gauge.cjs +2 -0
  244. package/dist/charts/engine/shapes/gauge.cjs.map +1 -0
  245. package/dist/charts/engine/shapes/gauge.d.cts +7 -0
  246. package/dist/charts/engine/shapes/gauge.d.ts +7 -0
  247. package/dist/charts/engine/shapes/gauge.js +210 -0
  248. package/dist/charts/engine/shapes/gauge.js.map +1 -0
  249. package/dist/charts/engine/shapes/hit.cjs +2 -0
  250. package/dist/charts/engine/shapes/hit.cjs.map +1 -0
  251. package/dist/charts/engine/shapes/hit.d.cts +30 -0
  252. package/dist/charts/engine/shapes/hit.d.ts +30 -0
  253. package/dist/charts/engine/shapes/hit.js +145 -0
  254. package/dist/charts/engine/shapes/hit.js.map +1 -0
  255. package/dist/charts/engine/shapes/index.d.cts +12 -0
  256. package/dist/charts/engine/shapes/index.d.ts +12 -0
  257. package/dist/charts/engine/shapes/labels.cjs +2 -0
  258. package/dist/charts/engine/shapes/labels.cjs.map +1 -0
  259. package/dist/charts/engine/shapes/labels.d.cts +14 -0
  260. package/dist/charts/engine/shapes/labels.d.ts +14 -0
  261. package/dist/charts/engine/shapes/labels.js +146 -0
  262. package/dist/charts/engine/shapes/labels.js.map +1 -0
  263. package/dist/charts/engine/shapes/layout.cjs +3 -0
  264. package/dist/charts/engine/shapes/layout.cjs.map +1 -0
  265. package/dist/charts/engine/shapes/layout.d.cts +93 -0
  266. package/dist/charts/engine/shapes/layout.d.ts +93 -0
  267. package/dist/charts/engine/shapes/layout.js +353 -0
  268. package/dist/charts/engine/shapes/layout.js.map +1 -0
  269. package/dist/charts/engine/shapes/pie.cjs +2 -0
  270. package/dist/charts/engine/shapes/pie.cjs.map +1 -0
  271. package/dist/charts/engine/shapes/pie.d.cts +20 -0
  272. package/dist/charts/engine/shapes/pie.d.ts +20 -0
  273. package/dist/charts/engine/shapes/pie.js +302 -0
  274. package/dist/charts/engine/shapes/pie.js.map +1 -0
  275. package/dist/charts/engine/shapes/radar.cjs +2 -0
  276. package/dist/charts/engine/shapes/radar.cjs.map +1 -0
  277. package/dist/charts/engine/shapes/radar.d.cts +8 -0
  278. package/dist/charts/engine/shapes/radar.d.ts +8 -0
  279. package/dist/charts/engine/shapes/radar.js +198 -0
  280. package/dist/charts/engine/shapes/radar.js.map +1 -0
  281. package/dist/charts/engine/shapes/radialBar.cjs +2 -0
  282. package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
  283. package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
  284. package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
  285. package/dist/charts/engine/shapes/radialBar.js +155 -0
  286. package/dist/charts/engine/shapes/radialBar.js.map +1 -0
  287. package/dist/charts/engine/shapes/runtime.cjs +2 -0
  288. package/dist/charts/engine/shapes/runtime.cjs.map +1 -0
  289. package/dist/charts/engine/shapes/runtime.d.cts +36 -0
  290. package/dist/charts/engine/shapes/runtime.d.ts +36 -0
  291. package/dist/charts/engine/shapes/runtime.js +107 -0
  292. package/dist/charts/engine/shapes/runtime.js.map +1 -0
  293. package/dist/charts/engine/shapes/sankey.cjs +2 -0
  294. package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
  295. package/dist/charts/engine/shapes/sankey.d.cts +29 -0
  296. package/dist/charts/engine/shapes/sankey.d.ts +29 -0
  297. package/dist/charts/engine/shapes/sankey.js +372 -0
  298. package/dist/charts/engine/shapes/sankey.js.map +1 -0
  299. package/dist/charts/engine/shapes/scene.cjs +2 -0
  300. package/dist/charts/engine/shapes/scene.cjs.map +1 -0
  301. package/dist/charts/engine/shapes/scene.d.cts +311 -0
  302. package/dist/charts/engine/shapes/scene.d.ts +311 -0
  303. package/dist/charts/engine/shapes/scene.js +125 -0
  304. package/dist/charts/engine/shapes/scene.js.map +1 -0
  305. package/dist/charts/engine/shapes/sunburst.cjs +2 -0
  306. package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
  307. package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
  308. package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
  309. package/dist/charts/engine/shapes/sunburst.js +261 -0
  310. package/dist/charts/engine/shapes/sunburst.js.map +1 -0
  311. package/dist/charts/engine/shapes/treemap.cjs +2 -0
  312. package/dist/charts/engine/shapes/treemap.cjs.map +1 -0
  313. package/dist/charts/engine/shapes/treemap.d.cts +14 -0
  314. package/dist/charts/engine/shapes/treemap.d.ts +14 -0
  315. package/dist/charts/engine/shapes/treemap.js +213 -0
  316. package/dist/charts/engine/shapes/treemap.js.map +1 -0
  317. package/dist/charts/engine/shapes/types.d.cts +719 -0
  318. package/dist/charts/engine/shapes/types.d.ts +719 -0
  319. package/dist/charts/engine/signature.cjs +2 -0
  320. package/dist/charts/engine/signature.cjs.map +1 -0
  321. package/dist/charts/engine/signature.d.cts +9 -0
  322. package/dist/charts/engine/signature.d.ts +9 -0
  323. package/dist/charts/engine/signature.js +13 -0
  324. package/dist/charts/engine/signature.js.map +1 -0
  325. package/dist/charts/engine/theme.cjs +1 -1
  326. package/dist/charts/engine/theme.cjs.map +1 -1
  327. package/dist/charts/engine/theme.d.cts +10 -1
  328. package/dist/charts/engine/theme.d.ts +10 -1
  329. package/dist/charts/engine/theme.js +40 -16
  330. package/dist/charts/engine/theme.js.map +1 -1
  331. package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
  332. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
  333. package/dist/charts/engine/three-d/canvas2d.d.cts +4 -0
  334. package/dist/charts/engine/three-d/canvas2d.d.ts +4 -0
  335. package/dist/charts/engine/three-d/canvas2d.js +104 -0
  336. package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
  337. package/dist/charts/engine/three-d/chart.cjs +2 -0
  338. package/dist/charts/engine/three-d/chart.cjs.map +1 -0
  339. package/dist/charts/engine/three-d/chart.d.cts +15 -0
  340. package/dist/charts/engine/three-d/chart.d.ts +15 -0
  341. package/dist/charts/engine/three-d/chart.js +621 -0
  342. package/dist/charts/engine/three-d/chart.js.map +1 -0
  343. package/dist/charts/engine/three-d/colormap.cjs +2 -0
  344. package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
  345. package/dist/charts/engine/three-d/colormap.d.cts +16 -0
  346. package/dist/charts/engine/three-d/colormap.d.ts +16 -0
  347. package/dist/charts/engine/three-d/colormap.js +166 -0
  348. package/dist/charts/engine/three-d/colormap.js.map +1 -0
  349. package/dist/charts/engine/three-d/contours.cjs +2 -0
  350. package/dist/charts/engine/three-d/contours.cjs.map +1 -0
  351. package/dist/charts/engine/three-d/contours.d.cts +7 -0
  352. package/dist/charts/engine/three-d/contours.d.ts +7 -0
  353. package/dist/charts/engine/three-d/contours.js +47 -0
  354. package/dist/charts/engine/three-d/contours.js.map +1 -0
  355. package/dist/charts/engine/three-d/detect.cjs +2 -0
  356. package/dist/charts/engine/three-d/detect.cjs.map +1 -0
  357. package/dist/charts/engine/three-d/detect.d.cts +11 -0
  358. package/dist/charts/engine/three-d/detect.d.ts +11 -0
  359. package/dist/charts/engine/three-d/detect.js +35 -0
  360. package/dist/charts/engine/three-d/detect.js.map +1 -0
  361. package/dist/charts/engine/three-d/dom.cjs +2 -0
  362. package/dist/charts/engine/three-d/dom.cjs.map +1 -0
  363. package/dist/charts/engine/three-d/dom.d.cts +21 -0
  364. package/dist/charts/engine/three-d/dom.d.ts +21 -0
  365. package/dist/charts/engine/three-d/dom.js +98 -0
  366. package/dist/charts/engine/three-d/dom.js.map +1 -0
  367. package/dist/charts/engine/three-d/geometry.cjs +2 -0
  368. package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
  369. package/dist/charts/engine/three-d/geometry.d.cts +76 -0
  370. package/dist/charts/engine/three-d/geometry.d.ts +76 -0
  371. package/dist/charts/engine/three-d/geometry.js +529 -0
  372. package/dist/charts/engine/three-d/geometry.js.map +1 -0
  373. package/dist/charts/engine/three-d/hover.cjs +2 -0
  374. package/dist/charts/engine/three-d/hover.cjs.map +1 -0
  375. package/dist/charts/engine/three-d/hover.d.cts +25 -0
  376. package/dist/charts/engine/three-d/hover.d.ts +25 -0
  377. package/dist/charts/engine/three-d/hover.js +131 -0
  378. package/dist/charts/engine/three-d/hover.js.map +1 -0
  379. package/dist/charts/engine/three-d/index.cjs +1 -0
  380. package/dist/charts/engine/three-d/index.d.cts +2 -0
  381. package/dist/charts/engine/three-d/index.d.ts +2 -0
  382. package/dist/charts/engine/three-d/index.js +2 -0
  383. package/dist/charts/engine/three-d/labels.cjs +2 -0
  384. package/dist/charts/engine/three-d/labels.cjs.map +1 -0
  385. package/dist/charts/engine/three-d/labels.d.cts +23 -0
  386. package/dist/charts/engine/three-d/labels.d.ts +23 -0
  387. package/dist/charts/engine/three-d/labels.js +136 -0
  388. package/dist/charts/engine/three-d/labels.js.map +1 -0
  389. package/dist/charts/engine/three-d/math.cjs +2 -0
  390. package/dist/charts/engine/three-d/math.cjs.map +1 -0
  391. package/dist/charts/engine/three-d/math.d.cts +84 -0
  392. package/dist/charts/engine/three-d/math.d.ts +84 -0
  393. package/dist/charts/engine/three-d/math.js +150 -0
  394. package/dist/charts/engine/three-d/math.js.map +1 -0
  395. package/dist/charts/engine/three-d/model.cjs +2 -0
  396. package/dist/charts/engine/three-d/model.cjs.map +1 -0
  397. package/dist/charts/engine/three-d/model.d.cts +130 -0
  398. package/dist/charts/engine/three-d/model.d.ts +130 -0
  399. package/dist/charts/engine/three-d/model.js +277 -0
  400. package/dist/charts/engine/three-d/model.js.map +1 -0
  401. package/dist/charts/engine/three-d/overlay.cjs +2 -0
  402. package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
  403. package/dist/charts/engine/three-d/overlay.d.cts +72 -0
  404. package/dist/charts/engine/three-d/overlay.d.ts +72 -0
  405. package/dist/charts/engine/three-d/overlay.js +197 -0
  406. package/dist/charts/engine/three-d/overlay.js.map +1 -0
  407. package/dist/charts/engine/three-d/pick.cjs +2 -0
  408. package/dist/charts/engine/three-d/pick.cjs.map +1 -0
  409. package/dist/charts/engine/three-d/pick.d.cts +52 -0
  410. package/dist/charts/engine/three-d/pick.d.ts +52 -0
  411. package/dist/charts/engine/three-d/pick.js +220 -0
  412. package/dist/charts/engine/three-d/pick.js.map +1 -0
  413. package/dist/charts/engine/three-d/render-types.cjs +2 -0
  414. package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
  415. package/dist/charts/engine/three-d/render-types.d.cts +82 -0
  416. package/dist/charts/engine/three-d/render-types.d.ts +82 -0
  417. package/dist/charts/engine/three-d/render-types.js +13 -0
  418. package/dist/charts/engine/three-d/render-types.js.map +1 -0
  419. package/dist/charts/engine/three-d/shaders.cjs +276 -0
  420. package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
  421. package/dist/charts/engine/three-d/shaders.d.cts +26 -0
  422. package/dist/charts/engine/three-d/shaders.d.ts +26 -0
  423. package/dist/charts/engine/three-d/shaders.js +191 -0
  424. package/dist/charts/engine/three-d/shaders.js.map +1 -0
  425. package/dist/charts/engine/three-d/sort.cjs +2 -0
  426. package/dist/charts/engine/three-d/sort.cjs.map +1 -0
  427. package/dist/charts/engine/three-d/sort.d.cts +18 -0
  428. package/dist/charts/engine/three-d/sort.d.ts +18 -0
  429. package/dist/charts/engine/three-d/sort.js +71 -0
  430. package/dist/charts/engine/three-d/sort.js.map +1 -0
  431. package/dist/charts/engine/three-d/types.d.cts +588 -0
  432. package/dist/charts/engine/three-d/types.d.ts +588 -0
  433. package/dist/charts/engine/three-d/webgl.cjs +2 -0
  434. package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
  435. package/dist/charts/engine/three-d/webgl.d.cts +10 -0
  436. package/dist/charts/engine/three-d/webgl.d.ts +10 -0
  437. package/dist/charts/engine/three-d/webgl.js +130 -0
  438. package/dist/charts/engine/three-d/webgl.js.map +1 -0
  439. package/dist/charts/engine/three-d/webgpu.cjs +2 -0
  440. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
  441. package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
  442. package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
  443. package/dist/charts/engine/three-d/webgpu.js +249 -0
  444. package/dist/charts/engine/three-d/webgpu.js.map +1 -0
  445. package/dist/charts/engine/time.cjs +1 -1
  446. package/dist/charts/engine/time.cjs.map +1 -1
  447. package/dist/charts/engine/time.d.cts +13 -4
  448. package/dist/charts/engine/time.d.ts +13 -4
  449. package/dist/charts/engine/time.js +156 -91
  450. package/dist/charts/engine/time.js.map +1 -1
  451. package/dist/charts/engine/trading/chart.cjs +2 -0
  452. package/dist/charts/engine/trading/chart.cjs.map +1 -0
  453. package/dist/charts/engine/trading/chart.d.cts +3 -0
  454. package/dist/charts/engine/trading/chart.d.ts +3 -0
  455. package/dist/charts/engine/trading/chart.js +1507 -0
  456. package/dist/charts/engine/trading/chart.js.map +1 -0
  457. package/dist/charts/engine/trading/drawings.cjs +2 -0
  458. package/dist/charts/engine/trading/drawings.cjs.map +1 -0
  459. package/dist/charts/engine/trading/drawings.d.cts +57 -0
  460. package/dist/charts/engine/trading/drawings.d.ts +57 -0
  461. package/dist/charts/engine/trading/drawings.js +160 -0
  462. package/dist/charts/engine/trading/drawings.js.map +1 -0
  463. package/dist/charts/engine/trading/format.cjs +2 -0
  464. package/dist/charts/engine/trading/format.cjs.map +1 -0
  465. package/dist/charts/engine/trading/format.d.cts +60 -0
  466. package/dist/charts/engine/trading/format.d.ts +60 -0
  467. package/dist/charts/engine/trading/format.js +131 -0
  468. package/dist/charts/engine/trading/format.js.map +1 -0
  469. package/dist/charts/engine/trading/geometry.cjs +2 -0
  470. package/dist/charts/engine/trading/geometry.cjs.map +1 -0
  471. package/dist/charts/engine/trading/geometry.d.cts +55 -0
  472. package/dist/charts/engine/trading/geometry.d.ts +55 -0
  473. package/dist/charts/engine/trading/geometry.js +131 -0
  474. package/dist/charts/engine/trading/geometry.js.map +1 -0
  475. package/dist/charts/engine/trading/index.cjs +1 -0
  476. package/dist/charts/engine/trading/index.d.cts +3 -0
  477. package/dist/charts/engine/trading/index.d.ts +3 -0
  478. package/dist/charts/engine/trading/index.js +3 -0
  479. package/dist/charts/engine/trading/indicators.cjs +2 -0
  480. package/dist/charts/engine/trading/indicators.cjs.map +1 -0
  481. package/dist/charts/engine/trading/indicators.d.cts +105 -0
  482. package/dist/charts/engine/trading/indicators.d.ts +105 -0
  483. package/dist/charts/engine/trading/indicators.js +268 -0
  484. package/dist/charts/engine/trading/indicators.js.map +1 -0
  485. package/dist/charts/engine/trading/labels.cjs +2 -0
  486. package/dist/charts/engine/trading/labels.cjs.map +1 -0
  487. package/dist/charts/engine/trading/labels.d.cts +7 -0
  488. package/dist/charts/engine/trading/labels.d.ts +7 -0
  489. package/dist/charts/engine/trading/labels.js +91 -0
  490. package/dist/charts/engine/trading/labels.js.map +1 -0
  491. package/dist/charts/engine/trading/scale.cjs +2 -0
  492. package/dist/charts/engine/trading/scale.cjs.map +1 -0
  493. package/dist/charts/engine/trading/scale.d.cts +46 -0
  494. package/dist/charts/engine/trading/scale.d.ts +46 -0
  495. package/dist/charts/engine/trading/scale.js +100 -0
  496. package/dist/charts/engine/trading/scale.js.map +1 -0
  497. package/dist/charts/engine/trading/store.cjs +2 -0
  498. package/dist/charts/engine/trading/store.cjs.map +1 -0
  499. package/dist/charts/engine/trading/store.d.cts +62 -0
  500. package/dist/charts/engine/trading/store.d.ts +62 -0
  501. package/dist/charts/engine/trading/store.js +129 -0
  502. package/dist/charts/engine/trading/store.js.map +1 -0
  503. package/dist/charts/engine/trading/studies.cjs +2 -0
  504. package/dist/charts/engine/trading/studies.cjs.map +1 -0
  505. package/dist/charts/engine/trading/studies.d.cts +52 -0
  506. package/dist/charts/engine/trading/studies.d.ts +52 -0
  507. package/dist/charts/engine/trading/studies.js +254 -0
  508. package/dist/charts/engine/trading/studies.js.map +1 -0
  509. package/dist/charts/engine/trading/types.d.cts +656 -0
  510. package/dist/charts/engine/trading/types.d.ts +656 -0
  511. package/dist/charts/engine/types.d.cts +227 -15
  512. package/dist/charts/engine/types.d.ts +227 -15
  513. package/dist/charts/index.cjs +1 -1
  514. package/dist/charts/index.d.cts +7 -2
  515. package/dist/charts/index.d.ts +7 -2
  516. package/dist/charts/index.js +22 -8
  517. package/dist/charts/react/Chart.cjs +1 -1
  518. package/dist/charts/react/Chart.cjs.map +1 -1
  519. package/dist/charts/react/Chart.d.cts +11 -4
  520. package/dist/charts/react/Chart.d.ts +11 -4
  521. package/dist/charts/react/Chart.js +70 -47
  522. package/dist/charts/react/Chart.js.map +1 -1
  523. package/dist/charts/react/charts.cjs +1 -1
  524. package/dist/charts/react/charts.cjs.map +1 -1
  525. package/dist/charts/react/charts.d.cts +48 -2
  526. package/dist/charts/react/charts.d.ts +48 -2
  527. package/dist/charts/react/charts.js +371 -76
  528. package/dist/charts/react/charts.js.map +1 -1
  529. package/dist/charts/react/orderbook.cjs +2 -0
  530. package/dist/charts/react/orderbook.cjs.map +1 -0
  531. package/dist/charts/react/orderbook.d.cts +142 -0
  532. package/dist/charts/react/orderbook.d.ts +142 -0
  533. package/dist/charts/react/orderbook.js +182 -0
  534. package/dist/charts/react/orderbook.js.map +1 -0
  535. package/dist/charts/react/shapes.cjs +2 -0
  536. package/dist/charts/react/shapes.cjs.map +1 -0
  537. package/dist/charts/react/shapes.d.cts +537 -0
  538. package/dist/charts/react/shapes.d.ts +537 -0
  539. package/dist/charts/react/shapes.js +429 -0
  540. package/dist/charts/react/shapes.js.map +1 -0
  541. package/dist/charts/react/three-d.cjs +2 -0
  542. package/dist/charts/react/three-d.cjs.map +1 -0
  543. package/dist/charts/react/three-d.d.cts +151 -0
  544. package/dist/charts/react/three-d.d.ts +151 -0
  545. package/dist/charts/react/three-d.js +154 -0
  546. package/dist/charts/react/three-d.js.map +1 -0
  547. package/dist/charts/react/trading.cjs +2 -0
  548. package/dist/charts/react/trading.cjs.map +1 -0
  549. package/dist/charts/react/trading.d.cts +93 -0
  550. package/dist/charts/react/trading.d.ts +93 -0
  551. package/dist/charts/react/trading.js +95 -0
  552. package/dist/charts/react/trading.js.map +1 -0
  553. package/dist/charts/react/types.d.cts +200 -7
  554. package/dist/charts/react/types.d.ts +200 -7
  555. package/dist/core/contracts.cjs +1 -1
  556. package/dist/core/contracts.cjs.map +1 -1
  557. package/dist/core/contracts.js +1 -1
  558. package/dist/core/contracts.js.map +1 -1
  559. package/dist/native/charts/src/canvas.cjs +1 -1
  560. package/dist/native/charts/src/canvas.js +9 -3
  561. package/dist/native/charts/src/engine/axis.cjs +1 -1
  562. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  563. package/dist/native/charts/src/engine/axis.js +6 -6
  564. package/dist/native/charts/src/engine/axis.js.map +1 -1
  565. package/dist/native/charts/src/engine/color.cjs +1 -1
  566. package/dist/native/charts/src/engine/color.cjs.map +1 -1
  567. package/dist/native/charts/src/engine/color.js +12 -3
  568. package/dist/native/charts/src/engine/color.js.map +1 -1
  569. package/dist/native/charts/src/engine/controller.cjs +2 -2
  570. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  571. package/dist/native/charts/src/engine/controller.js +418 -294
  572. package/dist/native/charts/src/engine/controller.js.map +1 -1
  573. package/dist/native/charts/src/engine/curve.cjs +2 -0
  574. package/dist/native/charts/src/engine/curve.cjs.map +1 -0
  575. package/dist/native/charts/src/engine/curve.js +56 -0
  576. package/dist/native/charts/src/engine/curve.js.map +1 -0
  577. package/dist/native/charts/src/engine/data.cjs +1 -1
  578. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  579. package/dist/native/charts/src/engine/data.js +117 -43
  580. package/dist/native/charts/src/engine/data.js.map +1 -1
  581. package/dist/native/charts/src/engine/format.cjs +1 -1
  582. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  583. package/dist/native/charts/src/engine/format.js +46 -21
  584. package/dist/native/charts/src/engine/format.js.map +1 -1
  585. package/dist/native/charts/src/engine/labels.cjs +2 -0
  586. package/dist/native/charts/src/engine/labels.cjs.map +1 -0
  587. package/dist/native/charts/src/engine/labels.js +74 -0
  588. package/dist/native/charts/src/engine/labels.js.map +1 -0
  589. package/dist/native/charts/src/engine/layout.cjs +1 -1
  590. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  591. package/dist/native/charts/src/engine/layout.js +53 -12
  592. package/dist/native/charts/src/engine/layout.js.map +1 -1
  593. package/dist/native/charts/src/engine/locale.cjs +2 -0
  594. package/dist/native/charts/src/engine/locale.cjs.map +1 -0
  595. package/dist/native/charts/src/engine/locale.js +60 -0
  596. package/dist/native/charts/src/engine/locale.js.map +1 -0
  597. package/dist/native/charts/src/engine/model.cjs +1 -1
  598. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  599. package/dist/native/charts/src/engine/model.js +335 -111
  600. package/dist/native/charts/src/engine/model.js.map +1 -1
  601. package/dist/native/charts/src/engine/overlay.cjs +1 -1
  602. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  603. package/dist/native/charts/src/engine/overlay.js +54 -31
  604. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  605. package/dist/native/charts/src/engine/presets.cjs +2 -2
  606. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  607. package/dist/native/charts/src/engine/presets.js +456 -34
  608. package/dist/native/charts/src/engine/presets.js.map +1 -1
  609. package/dist/native/charts/src/engine/scale.cjs +1 -1
  610. package/dist/native/charts/src/engine/scale.cjs.map +1 -1
  611. package/dist/native/charts/src/engine/scale.js +1 -1
  612. package/dist/native/charts/src/engine/scale.js.map +1 -1
  613. package/dist/native/charts/src/engine/scene.cjs +1 -1
  614. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  615. package/dist/native/charts/src/engine/scene.js +369 -128
  616. package/dist/native/charts/src/engine/scene.js.map +1 -1
  617. package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
  618. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
  619. package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
  620. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
  621. package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
  622. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
  623. package/dist/native/charts/src/engine/shapes/calendar.js +364 -0
  624. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
  625. package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
  626. package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
  627. package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
  628. package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
  629. package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
  630. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
  631. package/dist/native/charts/src/engine/shapes/draw.js +165 -0
  632. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
  633. package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
  634. package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
  635. package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
  636. package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
  637. package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
  638. package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
  639. package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
  640. package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
  641. package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
  642. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
  643. package/dist/native/charts/src/engine/shapes/hit.js +106 -0
  644. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
  645. package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
  646. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
  647. package/dist/native/charts/src/engine/shapes/labels.js +146 -0
  648. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
  649. package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
  650. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
  651. package/dist/native/charts/src/engine/shapes/layout.js +331 -0
  652. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
  653. package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
  654. package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
  655. package/dist/native/charts/src/engine/shapes/pie.js +302 -0
  656. package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
  657. package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
  658. package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
  659. package/dist/native/charts/src/engine/shapes/radar.js +198 -0
  660. package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
  661. package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
  662. package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
  663. package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
  664. package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
  665. package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
  666. package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
  667. package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
  668. package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
  669. package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
  670. package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
  671. package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
  672. package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
  673. package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
  674. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
  675. package/dist/native/charts/src/engine/shapes/scene.js +125 -0
  676. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
  677. package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
  678. package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
  679. package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
  680. package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
  681. package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
  682. package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
  683. package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
  684. package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
  685. package/dist/native/charts/src/engine/theme.cjs.map +1 -1
  686. package/dist/native/charts/src/engine/theme.js.map +1 -1
  687. package/dist/native/charts/src/engine/time.cjs +1 -1
  688. package/dist/native/charts/src/engine/time.cjs.map +1 -1
  689. package/dist/native/charts/src/engine/time.js +156 -91
  690. package/dist/native/charts/src/engine/time.js.map +1 -1
  691. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  692. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  693. package/dist/native/components/Chart/ChartBase.d.cts +1 -1
  694. package/dist/native/components/Chart/ChartBase.d.ts +1 -1
  695. package/dist/native/components/Chart/ChartBase.js +110 -107
  696. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  697. package/dist/native/components/Chart/charts.cjs +1 -1
  698. package/dist/native/components/Chart/charts.cjs.map +1 -1
  699. package/dist/native/components/Chart/charts.d.cts +6 -1
  700. package/dist/native/components/Chart/charts.d.ts +6 -1
  701. package/dist/native/components/Chart/charts.js +53 -29
  702. package/dist/native/components/Chart/charts.js.map +1 -1
  703. package/dist/native/components/Chart/index.cjs +1 -1
  704. package/dist/native/components/Chart/index.d.cts +1 -1
  705. package/dist/native/components/Chart/index.d.ts +1 -1
  706. package/dist/native/components/Chart/index.js +2 -2
  707. package/dist/native/components/Chart/scene.cjs +1 -1
  708. package/dist/native/components/Chart/scene.cjs.map +1 -1
  709. package/dist/native/components/Chart/scene.js +244 -215
  710. package/dist/native/components/Chart/scene.js.map +1 -1
  711. package/dist/native/components/Chart/types.d.cts +26 -3
  712. package/dist/native/components/Chart/types.d.ts +26 -3
  713. package/dist/native/components/Charts/charts.cjs +2 -0
  714. package/dist/native/components/Charts/charts.cjs.map +1 -0
  715. package/dist/native/components/Charts/charts.d.cts +41 -0
  716. package/dist/native/components/Charts/charts.d.ts +41 -0
  717. package/dist/native/components/Charts/charts.js +338 -0
  718. package/dist/native/components/Charts/charts.js.map +1 -0
  719. package/dist/native/components/Charts/index.cjs +1 -0
  720. package/dist/native/components/Charts/index.d.cts +2 -0
  721. package/dist/native/components/Charts/index.d.ts +2 -0
  722. package/dist/native/components/Charts/index.js +2 -0
  723. package/dist/native/components/Charts/types.d.cts +144 -0
  724. package/dist/native/components/Charts/types.d.ts +144 -0
  725. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
  726. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
  727. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
  728. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
  729. package/dist/native/components/ShapeChart/ShapeChartBase.js +271 -0
  730. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
  731. package/dist/native/components/ShapeChart/charts.cjs +2 -0
  732. package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
  733. package/dist/native/components/ShapeChart/charts.d.cts +38 -0
  734. package/dist/native/components/ShapeChart/charts.d.ts +38 -0
  735. package/dist/native/components/ShapeChart/charts.js +387 -0
  736. package/dist/native/components/ShapeChart/charts.js.map +1 -0
  737. package/dist/native/components/ShapeChart/draw.cjs +2 -0
  738. package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
  739. package/dist/native/components/ShapeChart/draw.d.cts +4 -0
  740. package/dist/native/components/ShapeChart/draw.d.ts +4 -0
  741. package/dist/native/components/ShapeChart/draw.js +104 -0
  742. package/dist/native/components/ShapeChart/draw.js.map +1 -0
  743. package/dist/native/components/ShapeChart/geometry.cjs +2 -0
  744. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
  745. package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
  746. package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
  747. package/dist/native/components/ShapeChart/geometry.js +602 -0
  748. package/dist/native/components/ShapeChart/geometry.js.map +1 -0
  749. package/dist/native/components/ShapeChart/index.cjs +1 -0
  750. package/dist/native/components/ShapeChart/index.d.cts +2 -0
  751. package/dist/native/components/ShapeChart/index.d.ts +2 -0
  752. package/dist/native/components/ShapeChart/index.js +2 -0
  753. package/dist/native/components/ShapeChart/recorder.cjs +2 -0
  754. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
  755. package/dist/native/components/ShapeChart/recorder.d.cts +106 -0
  756. package/dist/native/components/ShapeChart/recorder.d.ts +106 -0
  757. package/dist/native/components/ShapeChart/recorder.js +574 -0
  758. package/dist/native/components/ShapeChart/recorder.js.map +1 -0
  759. package/dist/native/components/ShapeChart/types.d.cts +509 -0
  760. package/dist/native/components/ShapeChart/types.d.ts +509 -0
  761. package/dist/native/index.cjs +1 -1
  762. package/dist/native/index.d.cts +2 -0
  763. package/dist/native/index.d.ts +2 -0
  764. package/dist/native/index.js +14 -10
  765. package/dist/native/manifest.d.cts +6 -4
  766. package/dist/native/manifest.d.ts +6 -4
  767. package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
  768. package/dist/native/source/components/Chart/charts.tsx +42 -6
  769. package/dist/native/source/components/Chart/index.ts +1 -0
  770. package/dist/native/source/components/Chart/scene.tsx +204 -100
  771. package/dist/native/source/components/Chart/types.ts +31 -1
  772. package/dist/native/source/components/Charts/charts.tsx +493 -0
  773. package/dist/native/source/components/Charts/index.ts +14 -0
  774. package/dist/native/source/components/Charts/types.ts +207 -0
  775. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +484 -0
  776. package/dist/native/source/components/ShapeChart/charts.tsx +605 -0
  777. package/dist/native/source/components/ShapeChart/draw.tsx +170 -0
  778. package/dist/native/source/components/ShapeChart/geometry.ts +1185 -0
  779. package/dist/native/source/components/ShapeChart/index.ts +15 -0
  780. package/dist/native/source/components/ShapeChart/recorder.ts +830 -0
  781. package/dist/native/source/components/ShapeChart/types.ts +564 -0
  782. package/dist/native/source/index.ts +2 -0
  783. package/dist/native/source/manifest.ts +30 -4
  784. package/dist/taro/charts.d.ts +209 -4
  785. package/dist/taro/index.d.ts +1 -0
  786. package/dist/taro/index.js +8032 -1891
  787. package/dist/taro/manifest.d.ts +1 -0
  788. package/dist/taro/shape-charts.d.ts +537 -0
  789. package/dist/uni/AreaChart.vue +68 -0
  790. package/dist/uni/AreaChart.vue.d.ts +120 -0
  791. package/dist/uni/Badge.vue.d.ts +1 -1
  792. package/dist/uni/BoxPlotChart.vue +66 -0
  793. package/dist/uni/BoxPlotChart.vue.d.ts +102 -0
  794. package/dist/uni/BubbleChart.vue +68 -0
  795. package/dist/uni/BubbleChart.vue.d.ts +106 -0
  796. package/dist/uni/BulletChart.vue +86 -0
  797. package/dist/uni/BulletChart.vue.d.ts +110 -0
  798. package/dist/uni/CalendarHeatmap.vue +92 -0
  799. package/dist/uni/CalendarHeatmap.vue.d.ts +129 -0
  800. package/dist/uni/CandlestickChart.vue +66 -0
  801. package/dist/uni/CandlestickChart.vue.d.ts +100 -0
  802. package/dist/uni/DonutChart.vue +72 -0
  803. package/dist/uni/DonutChart.vue.d.ts +114 -0
  804. package/dist/uni/FunnelChart.vue +67 -0
  805. package/dist/uni/FunnelChart.vue.d.ts +104 -0
  806. package/dist/uni/GanttChart.vue +67 -0
  807. package/dist/uni/GanttChart.vue.d.ts +123 -0
  808. package/dist/uni/GaugeChart.vue +77 -0
  809. package/dist/uni/GaugeChart.vue.d.ts +123 -0
  810. package/dist/uni/HeatmapChart.vue +66 -0
  811. package/dist/uni/HeatmapChart.vue.d.ts +114 -0
  812. package/dist/uni/HistogramChart.vue +66 -0
  813. package/dist/uni/HistogramChart.vue.d.ts +121 -0
  814. package/dist/uni/HorizontalBarChart.vue +68 -0
  815. package/dist/uni/HorizontalBarChart.vue.d.ts +127 -0
  816. package/dist/uni/Input.vue.d.ts +1 -1
  817. package/dist/uni/MixedChart.vue +68 -0
  818. package/dist/uni/MixedChart.vue.d.ts +106 -0
  819. package/dist/uni/NumberInput.vue.d.ts +1 -1
  820. package/dist/uni/PieChart.vue +72 -0
  821. package/dist/uni/PieChart.vue.d.ts +114 -0
  822. package/dist/uni/RadarChart.vue +67 -0
  823. package/dist/uni/RadarChart.vue.d.ts +110 -0
  824. package/dist/uni/RadialBarChart.vue +90 -0
  825. package/dist/uni/RadialBarChart.vue.d.ts +132 -0
  826. package/dist/uni/RangeAreaChart.vue +68 -0
  827. package/dist/uni/RangeAreaChart.vue.d.ts +102 -0
  828. package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
  829. package/dist/uni/SankeyChart.vue +88 -0
  830. package/dist/uni/SankeyChart.vue.d.ts +121 -0
  831. package/dist/uni/ShapeChart.vue +73 -0
  832. package/dist/uni/ShapeChart.vue.d.ts +54 -0
  833. package/dist/uni/Sparkline.vue +58 -0
  834. package/dist/uni/Sparkline.vue.d.ts +77 -0
  835. package/dist/uni/SunburstChart.vue +90 -0
  836. package/dist/uni/SunburstChart.vue.d.ts +114 -0
  837. package/dist/uni/Textarea.vue.d.ts +1 -1
  838. package/dist/uni/TimePicker.vue.d.ts +1 -1
  839. package/dist/uni/TreemapChart.vue +65 -0
  840. package/dist/uni/TreemapChart.vue.d.ts +100 -0
  841. package/dist/uni/WaterfallChart.vue +66 -0
  842. package/dist/uni/WaterfallChart.vue.d.ts +125 -0
  843. package/dist/uni/chart-types.d.ts +216 -2
  844. package/dist/uni/chart-types.js +174 -0
  845. package/dist/uni/charts-canvas.js +10 -3
  846. package/dist/uni/index.d.ts +26 -1
  847. package/dist/uni/index.js +26 -1
  848. package/dist/uni/manifest.d.ts +272 -0
  849. package/dist/uni/manifest.js +387 -0
  850. package/dist/uni/named-chart-options.d.ts +88 -0
  851. package/dist/uni/named-chart-options.js +156 -0
  852. package/dist/uni/shape-chart-canvas.d.ts +51 -0
  853. package/dist/uni/shape-chart-canvas.js +342 -0
  854. package/dist/uni/shape-chart-types.d.ts +381 -0
  855. package/dist/uni/shape-chart-types.js +261 -0
  856. package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
  857. package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
  858. package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
  859. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
  860. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  861. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
  862. package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
  863. package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
  864. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
  865. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  866. package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
  867. package/dist/vue/components/Chart/BarChart.vue.js +7 -0
  868. package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
  869. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
  870. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  871. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +112 -0
  872. package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
  873. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
  874. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +57 -0
  875. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  876. package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
  877. package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
  878. package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
  879. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
  880. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  881. package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
  882. package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
  883. package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
  884. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
  885. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  886. package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
  887. package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
  888. package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
  889. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
  890. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  891. package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
  892. package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
  893. package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
  894. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
  895. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  896. package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
  897. package/dist/vue/components/Chart/Chart.vue.js +7 -0
  898. package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
  899. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
  900. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  901. package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
  902. package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
  903. package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
  904. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
  905. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  906. package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
  907. package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
  908. package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
  909. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
  910. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  911. package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
  912. package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
  913. package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
  914. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
  915. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  916. package/dist/vue/components/Chart/GanttChart.vue.d.ts +132 -0
  917. package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
  918. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
  919. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +98 -0
  920. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  921. package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
  922. package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
  923. package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
  924. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
  925. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  926. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +125 -0
  927. package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
  928. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
  929. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +65 -0
  930. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  931. package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
  932. package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
  933. package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
  934. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
  935. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  936. package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
  937. package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
  938. package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
  939. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
  940. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  941. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
  942. package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
  943. package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
  944. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  945. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  946. package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
  947. package/dist/vue/components/Chart/LineChart.vue.js +7 -0
  948. package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
  949. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
  950. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  951. package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
  952. package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
  953. package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
  954. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
  955. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  956. package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
  957. package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
  958. package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
  959. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
  960. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
  961. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +128 -0
  962. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
  963. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
  964. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
  965. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  966. package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
  967. package/dist/vue/components/Chart/PieChart.vue.js +7 -0
  968. package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
  969. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
  970. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  971. package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
  972. package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
  973. package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
  974. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
  975. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  976. package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
  977. package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
  978. package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
  979. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
  980. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  981. package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
  982. package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
  983. package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
  984. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
  985. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  986. package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
  987. package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
  988. package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
  989. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
  990. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  991. package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
  992. package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
  993. package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
  994. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
  995. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  996. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
  997. package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
  998. package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
  999. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1000. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1001. package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
  1002. package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
  1003. package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
  1004. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
  1005. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1006. package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
  1007. package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
  1008. package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
  1009. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
  1010. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1011. package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
  1012. package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
  1013. package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
  1014. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
  1015. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1016. package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
  1017. package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
  1018. package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
  1019. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
  1020. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1021. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
  1022. package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
  1023. package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
  1024. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
  1025. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1026. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +114 -0
  1027. package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
  1028. package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
  1029. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
  1030. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1031. package/dist/vue/components/Chart/TradingChart.vue.d.ts +160 -0
  1032. package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
  1033. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
  1034. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +70 -0
  1035. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1036. package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
  1037. package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
  1038. package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
  1039. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
  1040. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1041. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +132 -0
  1042. package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
  1043. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
  1044. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +68 -0
  1045. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1046. package/dist/vue/components/Chart/cartesian.d.ts +47 -0
  1047. package/dist/vue/components/Chart/cartesian.js +56 -0
  1048. package/dist/vue/components/Chart/cartesian.js.map +1 -0
  1049. package/dist/vue/components/Chart/engine.d.ts +35 -0
  1050. package/dist/vue/components/Chart/engine.js +35 -0
  1051. package/dist/vue/components/Chart/engine.js.map +1 -0
  1052. package/dist/vue/components/Chart/index.d.ts +41 -0
  1053. package/dist/vue/components/Chart/index.js +40 -0
  1054. package/dist/vue/components/Chart/orderbook.d.ts +359 -0
  1055. package/dist/vue/components/Chart/orderbook.js +126 -0
  1056. package/dist/vue/components/Chart/orderbook.js.map +1 -0
  1057. package/dist/vue/components/Chart/props.d.ts +188 -0
  1058. package/dist/vue/components/Chart/props.js +92 -0
  1059. package/dist/vue/components/Chart/props.js.map +1 -0
  1060. package/dist/vue/components/Chart/shape.d.ts +41 -0
  1061. package/dist/vue/components/Chart/shape.js +42 -0
  1062. package/dist/vue/components/Chart/shape.js.map +1 -0
  1063. package/dist/vue/components/Chart/three-d.d.ts +106 -0
  1064. package/dist/vue/components/Chart/three-d.js +88 -0
  1065. package/dist/vue/components/Chart/three-d.js.map +1 -0
  1066. package/dist/vue/components/Chart/trading.d.ts +105 -0
  1067. package/dist/vue/components/Chart/trading.js +55 -0
  1068. package/dist/vue/components/Chart/trading.js.map +1 -0
  1069. package/dist/vue/components/Chart/types.d.ts +137 -0
  1070. package/dist/vue/global.d.ts +38 -0
  1071. package/dist/vue/groups/charts.d.ts +1 -0
  1072. package/dist/vue/groups/charts.js +87 -0
  1073. package/dist/vue/groups/charts.js.map +1 -0
  1074. package/dist/vue/index.d.ts +1 -0
  1075. package/dist/vue/index.js +63 -23
  1076. package/dist/vue/plugin.js +12 -10
  1077. package/dist/vue/plugin.js.map +1 -1
  1078. package/dist/weapp/area-chart/index.js +1 -0
  1079. package/dist/weapp/area-chart/index.json +1 -0
  1080. package/dist/weapp/area-chart/index.wxml +1 -0
  1081. package/dist/weapp/area-chart/index.wxss +1 -0
  1082. package/dist/weapp/box-plot-chart/index.js +1 -0
  1083. package/dist/weapp/box-plot-chart/index.json +1 -0
  1084. package/dist/weapp/box-plot-chart/index.wxml +1 -0
  1085. package/dist/weapp/box-plot-chart/index.wxss +1 -0
  1086. package/dist/weapp/bubble-chart/index.js +1 -0
  1087. package/dist/weapp/bubble-chart/index.json +1 -0
  1088. package/dist/weapp/bubble-chart/index.wxml +1 -0
  1089. package/dist/weapp/bubble-chart/index.wxss +1 -0
  1090. package/dist/weapp/bullet-chart/index.js +1 -0
  1091. package/dist/weapp/bullet-chart/index.json +1 -0
  1092. package/dist/weapp/bullet-chart/index.wxml +1 -0
  1093. package/dist/weapp/bullet-chart/index.wxss +1 -0
  1094. package/dist/weapp/calendar-heatmap/index.js +1 -0
  1095. package/dist/weapp/calendar-heatmap/index.json +1 -0
  1096. package/dist/weapp/calendar-heatmap/index.wxml +1 -0
  1097. package/dist/weapp/calendar-heatmap/index.wxss +1 -0
  1098. package/dist/weapp/candlestick-chart/index.js +1 -0
  1099. package/dist/weapp/candlestick-chart/index.json +1 -0
  1100. package/dist/weapp/candlestick-chart/index.wxml +1 -0
  1101. package/dist/weapp/candlestick-chart/index.wxss +1 -0
  1102. package/dist/weapp/charts/canvas.js +11436 -0
  1103. package/dist/weapp/charts/core.d.ts +2 -0
  1104. package/dist/weapp/charts/core.js +41 -0
  1105. package/dist/weapp/controls.js +1428 -3732
  1106. package/dist/weapp/donut-chart/index.js +1 -0
  1107. package/dist/weapp/donut-chart/index.json +1 -0
  1108. package/dist/weapp/donut-chart/index.wxml +1 -0
  1109. package/dist/weapp/donut-chart/index.wxss +1 -0
  1110. package/dist/weapp/funnel-chart/index.js +1 -0
  1111. package/dist/weapp/funnel-chart/index.json +1 -0
  1112. package/dist/weapp/funnel-chart/index.wxml +1 -0
  1113. package/dist/weapp/funnel-chart/index.wxss +1 -0
  1114. package/dist/weapp/gantt-chart/index.js +1 -0
  1115. package/dist/weapp/gantt-chart/index.json +1 -0
  1116. package/dist/weapp/gantt-chart/index.wxml +1 -0
  1117. package/dist/weapp/gantt-chart/index.wxss +1 -0
  1118. package/dist/weapp/gauge-chart/index.js +1 -0
  1119. package/dist/weapp/gauge-chart/index.json +1 -0
  1120. package/dist/weapp/gauge-chart/index.wxml +1 -0
  1121. package/dist/weapp/gauge-chart/index.wxss +1 -0
  1122. package/dist/weapp/heatmap-chart/index.js +1 -0
  1123. package/dist/weapp/heatmap-chart/index.json +1 -0
  1124. package/dist/weapp/heatmap-chart/index.wxml +1 -0
  1125. package/dist/weapp/heatmap-chart/index.wxss +1 -0
  1126. package/dist/weapp/histogram-chart/index.js +1 -0
  1127. package/dist/weapp/histogram-chart/index.json +1 -0
  1128. package/dist/weapp/histogram-chart/index.wxml +1 -0
  1129. package/dist/weapp/histogram-chart/index.wxss +1 -0
  1130. package/dist/weapp/horizontal-bar-chart/index.js +1 -0
  1131. package/dist/weapp/horizontal-bar-chart/index.json +1 -0
  1132. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
  1133. package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
  1134. package/dist/weapp/mixed-chart/index.js +1 -0
  1135. package/dist/weapp/mixed-chart/index.json +1 -0
  1136. package/dist/weapp/mixed-chart/index.wxml +1 -0
  1137. package/dist/weapp/mixed-chart/index.wxss +1 -0
  1138. package/dist/weapp/pie-chart/index.js +1 -0
  1139. package/dist/weapp/pie-chart/index.json +1 -0
  1140. package/dist/weapp/pie-chart/index.wxml +1 -0
  1141. package/dist/weapp/pie-chart/index.wxss +1 -0
  1142. package/dist/weapp/radar-chart/index.js +1 -0
  1143. package/dist/weapp/radar-chart/index.json +1 -0
  1144. package/dist/weapp/radar-chart/index.wxml +1 -0
  1145. package/dist/weapp/radar-chart/index.wxss +1 -0
  1146. package/dist/weapp/radial-bar-chart/index.js +1 -0
  1147. package/dist/weapp/radial-bar-chart/index.json +1 -0
  1148. package/dist/weapp/radial-bar-chart/index.wxml +1 -0
  1149. package/dist/weapp/radial-bar-chart/index.wxss +1 -0
  1150. package/dist/weapp/range-area-chart/index.js +1 -0
  1151. package/dist/weapp/range-area-chart/index.json +1 -0
  1152. package/dist/weapp/range-area-chart/index.wxml +1 -0
  1153. package/dist/weapp/range-area-chart/index.wxss +1 -0
  1154. package/dist/weapp/sankey-chart/index.js +1 -0
  1155. package/dist/weapp/sankey-chart/index.json +1 -0
  1156. package/dist/weapp/sankey-chart/index.wxml +1 -0
  1157. package/dist/weapp/sankey-chart/index.wxss +1 -0
  1158. package/dist/weapp/shape-chart/index.js +1 -0
  1159. package/dist/weapp/shape-chart/index.json +1 -0
  1160. package/dist/weapp/shape-chart/index.wxml +1 -0
  1161. package/dist/weapp/shape-chart/index.wxss +1 -0
  1162. package/dist/weapp/sparkline/index.js +1 -0
  1163. package/dist/weapp/sparkline/index.json +1 -0
  1164. package/dist/weapp/sparkline/index.wxml +1 -0
  1165. package/dist/weapp/sparkline/index.wxss +1 -0
  1166. package/dist/weapp/sunburst-chart/index.js +1 -0
  1167. package/dist/weapp/sunburst-chart/index.json +1 -0
  1168. package/dist/weapp/sunburst-chart/index.wxml +1 -0
  1169. package/dist/weapp/sunburst-chart/index.wxss +1 -0
  1170. package/dist/weapp/treemap-chart/index.js +1 -0
  1171. package/dist/weapp/treemap-chart/index.json +1 -0
  1172. package/dist/weapp/treemap-chart/index.wxml +1 -0
  1173. package/dist/weapp/treemap-chart/index.wxss +1 -0
  1174. package/dist/weapp/types.d.ts +466 -0
  1175. package/dist/weapp/waterfall-chart/index.js +1 -0
  1176. package/dist/weapp/waterfall-chart/index.json +1 -0
  1177. package/dist/weapp/waterfall-chart/index.wxml +1 -0
  1178. package/dist/weapp/waterfall-chart/index.wxss +1 -0
  1179. package/dist/web-components/components/chart/chart.d.ts +58 -0
  1180. package/dist/web-components/components/chart/chart.js +55 -0
  1181. package/dist/web-components/components/chart/chart.js.map +1 -0
  1182. package/dist/web-components/components/chart/charts.d.ts +252 -0
  1183. package/dist/web-components/components/chart/charts.js +201 -0
  1184. package/dist/web-components/components/chart/charts.js.map +1 -0
  1185. package/dist/web-components/components/chart/engine-element.d.ts +53 -0
  1186. package/dist/web-components/components/chart/engine-element.js +77 -0
  1187. package/dist/web-components/components/chart/engine-element.js.map +1 -0
  1188. package/dist/web-components/components/chart/extended.d.ts +224 -0
  1189. package/dist/web-components/components/chart/extended.js +183 -0
  1190. package/dist/web-components/components/chart/extended.js.map +1 -0
  1191. package/dist/web-components/components/chart/series.d.ts +7 -0
  1192. package/dist/web-components/components/chart/series.js +14 -0
  1193. package/dist/web-components/components/chart/series.js.map +1 -0
  1194. package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
  1195. package/dist/web-components/components/chart/shape-chart.js +161 -0
  1196. package/dist/web-components/components/chart/shape-chart.js.map +1 -0
  1197. package/dist/web-components/components/chart/shapes-extended.d.ts +162 -0
  1198. package/dist/web-components/components/chart/shapes-extended.js +156 -0
  1199. package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
  1200. package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
  1201. package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
  1202. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
  1203. package/dist/web-components/components/order-book/order-book.d.ts +165 -0
  1204. package/dist/web-components/components/order-book/order-book.js +174 -0
  1205. package/dist/web-components/components/order-book/order-book.js.map +1 -0
  1206. package/dist/web-components/components/trading-chart/trading-chart.d.ts +96 -0
  1207. package/dist/web-components/components/trading-chart/trading-chart.js +96 -0
  1208. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
  1209. package/dist/web-components/elements/chart-3d.d.ts +2 -0
  1210. package/dist/web-components/elements/chart-3d.js +13 -0
  1211. package/dist/web-components/elements/chart-3d.js.map +1 -0
  1212. package/dist/web-components/elements/chart.d.ts +7 -0
  1213. package/dist/web-components/elements/chart.js +43 -0
  1214. package/dist/web-components/elements/chart.js.map +1 -0
  1215. package/dist/web-components/elements/order-book.d.ts +2 -0
  1216. package/dist/web-components/elements/order-book.js +13 -0
  1217. package/dist/web-components/elements/order-book.js.map +1 -0
  1218. package/dist/web-components/elements/trading-chart.d.ts +2 -0
  1219. package/dist/web-components/elements/trading-chart.js +8 -0
  1220. package/dist/web-components/elements/trading-chart.js.map +1 -0
  1221. package/dist/web-components/html-custom-data.json +1192 -29
  1222. package/dist/web-components/types/react.d.ts +435 -0
  1223. package/dist/web-components/types/solid.d.ts +321 -0
  1224. package/dist/web-components/types/svelte.d.ts +321 -0
  1225. package/dist/web-components/types/vue.d.ts +359 -0
  1226. package/package.json +113 -1
@@ -0,0 +1,1185 @@
1
+ // Turns the recorded canvas operations into view primitives, without any
2
+ // drawing module:
3
+ // - circles, rings and rounded rectangles are views with a border radius;
4
+ // - a region bounded by arcs of one center (pie slice, donut segment, gauge
5
+ // arc) is a disc / ring view clipped by half-planes: its outline with the
6
+ // arcs replaced by polylines outside the outer circle and inside the inner
7
+ // one, split in convex pieces;
8
+ // - other fills (radar areas, funnel stages, rounded polygons) are split in
9
+ // convex pieces too, each the intersection of half-planes;
10
+ // - a half-plane is a square view with `overflow: hidden`, rotated so that
11
+ // one side lies on the edge: nesting one per edge clips the piece. Edges
12
+ // shared by two pieces overlap by half a pixel and translucent shapes are
13
+ // drawn opaque in a group with the opacity, so no seam shows;
14
+ // - strokes are thin rotated views (round caps / joins: rounded ends), arcs
15
+ // are bands, dashes are split like the canvas does;
16
+ // - texts keep the canvas anchor, alignment, baseline and rotation.
17
+
18
+ import {
19
+ cssWithAlpha,
20
+ opaqueCss,
21
+ paintAt,
22
+ type Color,
23
+ type DrawOp,
24
+ type FillOp,
25
+ type Segment,
26
+ type StrokeOp,
27
+ type Subpath,
28
+ type TextOp,
29
+ } from "./recorder";
30
+
31
+ const TAU = Math.PI * 2;
32
+ /** Overlap of the pieces of one shape, in pixels */
33
+ const SEAM = 0.5;
34
+ /** Most views of one shape's half-planes */
35
+ const MAX_PIECES = 160;
36
+
37
+ export type Pt = [number, number];
38
+
39
+ /** A drawable view */
40
+ export type Prim =
41
+ | {
42
+ t: "box";
43
+ x: number;
44
+ y: number;
45
+ w: number;
46
+ h: number;
47
+ color?: string;
48
+ radius?: number;
49
+ borderWidth?: number;
50
+ borderColor?: string;
51
+ /** Rotation around the center, radians */
52
+ rotate?: number;
53
+ shadow?: boolean;
54
+ }
55
+ | {
56
+ /** Square clipping its children (`overflow: hidden`), rotated around its center */
57
+ t: "clip";
58
+ x: number;
59
+ y: number;
60
+ size: number;
61
+ rotate: number;
62
+ children: Prim[];
63
+ }
64
+ | { t: "group"; opacity: number; children: Prim[] }
65
+ | {
66
+ t: "text";
67
+ text: string;
68
+ x: number;
69
+ y: number;
70
+ size: number;
71
+ weight: number;
72
+ align: TextOp["align"];
73
+ baseline: TextOp["baseline"];
74
+ color: string;
75
+ rotate: number;
76
+ maxWidth?: number;
77
+ halo?: string;
78
+ };
79
+
80
+ /** Clipping base of a convex piece: everything, or a disc / ring */
81
+ type Base =
82
+ | { t: "plane" }
83
+ | { t: "disc"; cx: number; cy: number; r0: number; r1: number };
84
+
85
+ interface Piece {
86
+ pts: Pt[];
87
+ /** Per edge (pts[i] -> pts[i + 1]): shared with another piece of the shape */
88
+ internal: boolean[];
89
+ /** Outline half-planes trimming the overlap of the shared edges */
90
+ guards: Plane[];
91
+ }
92
+
93
+ /** Half-plane n·p >= d (n: unit normal pointing inside) */
94
+ interface Plane {
95
+ n: Pt;
96
+ d: number;
97
+ }
98
+
99
+ const side = (plane: Plane, p: Pt) =>
100
+ plane.n[0] * p[0] + plane.n[1] * p[1] - plane.d;
101
+
102
+ /** Half-plane of the line a-b containing `inside`, grown by `grow` px */
103
+ const planeOf = (a: Pt, b: Pt, inside: Pt, grow: number): Plane | null => {
104
+ const len = Math.hypot(b[0] - a[0], b[1] - a[1]);
105
+ if (len < 1e-6) return null;
106
+ let n: Pt = [-(b[1] - a[1]) / len, (b[0] - a[0]) / len];
107
+ if (n[0] * (inside[0] - a[0]) + n[1] * (inside[1] - a[1]) < 0)
108
+ n = [-n[0], -n[1]];
109
+ return { n, d: n[0] * a[0] + n[1] * a[1] - grow };
110
+ };
111
+
112
+ const centroid = (pts: readonly Pt[]): Pt => [
113
+ pts.reduce((s, p) => s + p[0], 0) / Math.max(1, pts.length),
114
+ pts.reduce((s, p) => s + p[1], 0) / Math.max(1, pts.length),
115
+ ];
116
+
117
+ const pt = (list: readonly Pt[], i: number) => list[i] as Pt;
118
+ const cross3 = (a: Pt, b: Pt, c: Pt) =>
119
+ (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
120
+ const dist = (a: Pt, b: Pt) => Math.hypot(a[0] - b[0], a[1] - b[1]);
121
+ const polar = (cx: number, cy: number, r: number, a: number): Pt => [
122
+ cx + r * Math.cos(a),
123
+ cy + r * Math.sin(a),
124
+ ];
125
+ const rotate = (v: Pt, a: number): Pt => {
126
+ const c = Math.cos(a);
127
+ const s = Math.sin(a);
128
+ return [v[0] * c - v[1] * s, v[0] * s + v[1] * c];
129
+ };
130
+
131
+ export const area = (P: readonly Pt[]) => {
132
+ let s = 0;
133
+ for (let i = 0; i < P.length; i++) {
134
+ const a = pt(P, i);
135
+ const b = pt(P, (i + 1) % P.length);
136
+ s += a[0] * b[1] - b[0] * a[1];
137
+ }
138
+ return s / 2;
139
+ };
140
+
141
+ // ---------------------------------------------------------------- paths
142
+
143
+ /** Segment of a subpath with explicit ends (implicit joins and closing included) */
144
+ type Item =
145
+ | { t: "L"; from: Pt; to: Pt }
146
+ | { t: "A"; cx: number; cy: number; r: number; a0: number; a1: number };
147
+
148
+ /** Items of a filled (implicitly closed) or stroked subpath, zero-length segments dropped */
149
+ function itemsOf(sub: Subpath, close: boolean): Item[] {
150
+ const out: Item[] = [];
151
+ let at: Pt = [sub.x, sub.y];
152
+ const line = (to: Pt) => {
153
+ if (dist(at, to) > 1e-3) out.push({ t: "L", from: at, to });
154
+ at = to;
155
+ };
156
+ for (const s of sub.segs) {
157
+ if (s.t === "L") line([s.x, s.y]);
158
+ else {
159
+ line(polar(s.cx, s.cy, s.r, s.a0));
160
+ out.push({ ...s });
161
+ at = polar(s.cx, s.cy, s.r, s.a1);
162
+ }
163
+ }
164
+ if (close) line([sub.x, sub.y]);
165
+ return out;
166
+ }
167
+
168
+ /** Points of a subpath, arcs flattened to `tolerance` px */
169
+ function flatten(items: readonly Item[], start: Pt, tolerance = 0.2): Pt[] {
170
+ const out: Pt[] = [start];
171
+ for (const it of items) {
172
+ if (it.t === "L") out.push(it.to);
173
+ else {
174
+ const sweep = it.a1 - it.a0;
175
+ const step =
176
+ it.r > tolerance
177
+ ? Math.max(0.04, 2 * Math.acos(Math.max(-1, 1 - tolerance / it.r)))
178
+ : Math.PI / 2;
179
+ const n = Math.min(128, Math.max(1, Math.ceil(Math.abs(sweep) / step)));
180
+ out.push(polar(it.cx, it.cy, it.r, it.a0));
181
+ for (let k = 1; k <= n; k++)
182
+ out.push(polar(it.cx, it.cy, it.r, it.a0 + (sweep * k) / n));
183
+ }
184
+ }
185
+ return dedupe(out);
186
+ }
187
+
188
+ /** Drops repeated points (and the closing copy of the first) */
189
+ function dedupe(P: readonly Pt[], closed = true): Pt[] {
190
+ const out: Pt[] = [];
191
+ for (const p of P) {
192
+ const last = out[out.length - 1];
193
+ if (!last || dist(last, p) > 1e-3) out.push(p);
194
+ }
195
+ if (
196
+ closed &&
197
+ out.length > 1 &&
198
+ dist(pt(out, 0), pt(out, out.length - 1)) <= 1e-3
199
+ )
200
+ out.pop();
201
+ return out;
202
+ }
203
+
204
+ /** Drops the vertices between collinear edges */
205
+ function simplify(P: readonly Pt[]): Pt[] {
206
+ let list = dedupe(P);
207
+ let changed = true;
208
+ while (changed && list.length > 3) {
209
+ changed = false;
210
+ for (let i = 0; i < list.length; i++) {
211
+ const a = pt(list, (i - 1 + list.length) % list.length);
212
+ const b = pt(list, i);
213
+ const c = pt(list, (i + 1) % list.length);
214
+ const scale = Math.max(dist(a, b), dist(b, c), 1e-9);
215
+ const turn = cross3(a, b, c) / scale;
216
+ const forward =
217
+ (b[0] - a[0]) * (c[0] - b[0]) + (b[1] - a[1]) * (c[1] - b[1]) > 0;
218
+ if (Math.abs(turn) < 1e-4 && forward) {
219
+ list = list.filter((_, k) => k !== i);
220
+ changed = true;
221
+ break;
222
+ }
223
+ }
224
+ }
225
+ return list;
226
+ }
227
+
228
+ type ArcItem = Extract<Item, { t: "A" }>;
229
+
230
+ const isFull = (it: Item | undefined): it is ArcItem =>
231
+ it?.t === "A" && Math.abs(it.a1 - it.a0) >= TAU - 1e-6;
232
+
233
+ // ---------------------------------------------------------- decomposition
234
+
235
+ /** Ear clipping of a simple polygon: triangles as indexes */
236
+ export function triangulate(P: readonly Pt[]): number[][] {
237
+ const n = P.length;
238
+ if (n < 3) return [];
239
+ let idx = P.map((_, i) => i);
240
+ if (area(P) < 0) idx = idx.reverse();
241
+ const tris: number[][] = [];
242
+ const inside = (p: Pt, a: Pt, b: Pt, c: Pt) =>
243
+ cross3(a, b, p) > 1e-9 && cross3(b, c, p) > 1e-9 && cross3(c, a, p) > 1e-9;
244
+ let guard = 0;
245
+ while (idx.length > 3 && guard++ < n * n + 10) {
246
+ let found = false;
247
+ for (let k = 0; k < idx.length; k++) {
248
+ const ia = idx[(k - 1 + idx.length) % idx.length] as number;
249
+ const ib = idx[k] as number;
250
+ const ic = idx[(k + 1) % idx.length] as number;
251
+ const a = pt(P, ia);
252
+ const b = pt(P, ib);
253
+ const c = pt(P, ic);
254
+ if (cross3(a, b, c) <= 1e-9) continue;
255
+ let blocked = false;
256
+ for (const iv of idx) {
257
+ if (iv === ia || iv === ib || iv === ic) continue;
258
+ const v = pt(P, iv);
259
+ if (dist(v, a) < 1e-6 || dist(v, b) < 1e-6 || dist(v, c) < 1e-6)
260
+ continue;
261
+ if (inside(v, a, b, c)) {
262
+ blocked = true;
263
+ break;
264
+ }
265
+ }
266
+ if (blocked) continue;
267
+ tris.push([ia, ib, ic]);
268
+ idx.splice(k, 1);
269
+ found = true;
270
+ break;
271
+ }
272
+ if (!found) {
273
+ // degenerate (self-touching) outline: drop the flattest vertex
274
+ let best = 0;
275
+ let flat = Infinity;
276
+ for (let k = 0; k < idx.length; k++) {
277
+ const t = Math.abs(
278
+ cross3(
279
+ pt(P, idx[(k - 1 + idx.length) % idx.length] as number),
280
+ pt(P, idx[k] as number),
281
+ pt(P, idx[(k + 1) % idx.length] as number),
282
+ ),
283
+ );
284
+ if (t < flat) {
285
+ flat = t;
286
+ best = k;
287
+ }
288
+ }
289
+ idx.splice(best, 1);
290
+ }
291
+ }
292
+ if (idx.length === 3) {
293
+ const [ia, ib, ic] = idx as [number, number, number];
294
+ if (cross3(pt(P, ia), pt(P, ib), pt(P, ic)) > 1e-9) tris.push([ia, ib, ic]);
295
+ }
296
+ return tris;
297
+ }
298
+
299
+ const convex = (V: readonly Pt[], poly: readonly number[]) => {
300
+ for (let i = 0; i < poly.length; i++) {
301
+ const a = pt(V, poly[(i - 1 + poly.length) % poly.length] as number);
302
+ const b = pt(V, poly[i] as number);
303
+ const c = pt(V, poly[(i + 1) % poly.length] as number);
304
+ if (cross3(a, b, c) < -1e-7 * Math.max(1, dist(a, b) * dist(b, c)))
305
+ return false;
306
+ }
307
+ return true;
308
+ };
309
+
310
+ /**
311
+ * Merges triangles (indexes into V, positively oriented) into convex
312
+ * pieces across their shared edges (Hertel-Mehlhorn)
313
+ */
314
+ export function mergeConvex(
315
+ V: readonly Pt[],
316
+ tris: readonly number[][],
317
+ ): Piece[] {
318
+ const polys = tris.map((t) =>
319
+ area(t.map((i) => pt(V, i))) < 0 ? [...t].reverse() : [...t],
320
+ );
321
+ let merged = true;
322
+ while (merged) {
323
+ merged = false;
324
+ outer: for (let p = 0; p < polys.length; p++) {
325
+ const A = polys[p] as number[];
326
+ for (let i = 0; i < A.length; i++) {
327
+ const a = A[i] as number;
328
+ const b = A[(i + 1) % A.length] as number;
329
+ for (let q = p + 1; q < polys.length; q++) {
330
+ const B = polys[q] as number[];
331
+ const j = B.findIndex(
332
+ (v, k) => v === b && B[(k + 1) % B.length] === a,
333
+ );
334
+ if (j < 0) continue;
335
+ // A from b around to a, then B strictly between a and b
336
+ const ia = (i + 1) % A.length;
337
+ const fromB: number[] = [];
338
+ for (let k = 0; k < A.length; k++)
339
+ fromB.push(A[(ia + k) % A.length] as number);
340
+ const rest: number[] = [];
341
+ for (let k = 2; k < B.length; k++)
342
+ rest.push(B[(j + k) % B.length] as number);
343
+ const candidate = [...fromB, ...rest];
344
+ if (!convex(V, candidate)) continue;
345
+ polys[p] = candidate;
346
+ polys.splice(q, 1);
347
+ merged = true;
348
+ break outer;
349
+ }
350
+ }
351
+ }
352
+ }
353
+ const edges = new Set<string>();
354
+ for (const poly of polys)
355
+ for (let i = 0; i < poly.length; i++)
356
+ edges.add(`${poly[i]},${poly[(i + 1) % poly.length]}`);
357
+ const internalOf = (poly: readonly number[]) =>
358
+ poly.map((v, i) => edges.has(`${poly[(i + 1) % poly.length]},${v}`));
359
+ // outline edges, with a point inside their piece
360
+ const outline: { a: number; b: number; ref: Pt }[] = [];
361
+ for (const poly of polys) {
362
+ const ref = centroid(poly.map((i) => pt(V, i)));
363
+ internalOf(poly).forEach((shared, i) => {
364
+ if (!shared)
365
+ outline.push({
366
+ a: poly[i] as number,
367
+ b: poly[(i + 1) % poly.length] as number,
368
+ ref,
369
+ });
370
+ });
371
+ }
372
+ return polys.map((poly) => {
373
+ const pts = poly.map((i) => pt(V, i));
374
+ const internal = internalOf(poly);
375
+ // the outline edges at the ends of the shared ones cut the overlap
376
+ // where it would stick out of the shape (acute corners)
377
+ const ends = new Set<number>();
378
+ internal.forEach((shared, i) => {
379
+ if (!shared) return;
380
+ ends.add(poly[i] as number);
381
+ ends.add(poly[(i + 1) % poly.length] as number);
382
+ });
383
+ const own = new Set(
384
+ poly.map((v, i) => `${v},${poly[(i + 1) % poly.length]}`),
385
+ );
386
+ const guards: Plane[] = [];
387
+ for (const e of outline) {
388
+ if (!(ends.has(e.a) || ends.has(e.b)) || own.has(`${e.a},${e.b}`))
389
+ continue;
390
+ const plane = planeOf(pt(V, e.a), pt(V, e.b), e.ref, 0);
391
+ if (plane && pts.every((p) => side(plane, p) >= -1e-6))
392
+ guards.push(plane);
393
+ }
394
+ return { pts, internal, guards };
395
+ });
396
+ }
397
+
398
+ /** Convex pieces of a simple polygon */
399
+ export function convexPieces(P: readonly Pt[]): Piece[] {
400
+ const V = simplify(P);
401
+ if (V.length < 3) return [];
402
+ return mergeConvex(V, triangulate(V));
403
+ }
404
+
405
+ /** Convex pieces of a band between an outline and a hole around the same point */
406
+ function bandPieces(outer: readonly Pt[], hole: readonly Pt[]): Piece[] {
407
+ const O = simplify(outer);
408
+ const H = simplify(hole);
409
+ if (O.length < 3 || H.length < 3) return convexPieces(outer);
410
+ const sign = (P: Pt[]) => (area(P) < 0 ? [...P].reverse() : P);
411
+ const o = sign(O);
412
+ const h = sign(H);
413
+ const c: Pt = [
414
+ h.reduce((s, p) => s + p[0], 0) / h.length,
415
+ h.reduce((s, p) => s + p[1], 0) / h.length,
416
+ ];
417
+ const unwrap = (P: Pt[]) => {
418
+ const angles = P.map((p) => Math.atan2(p[1] - c[1], p[0] - c[0]));
419
+ let first = 0;
420
+ angles.forEach((a, i) => {
421
+ if (a < (angles[first] as number)) first = i;
422
+ });
423
+ const order = P.map((_, k) => (first + k) % P.length);
424
+ const out: number[] = [];
425
+ let previous = -Infinity;
426
+ for (const i of order) {
427
+ let a = angles[i] as number;
428
+ while (a < previous) a += TAU;
429
+ out.push(a);
430
+ previous = a;
431
+ }
432
+ out.push((out[0] as number) + TAU);
433
+ return { order, angles: out };
434
+ };
435
+ const uo = unwrap(o);
436
+ const uh = unwrap(h);
437
+ const V: Pt[] = [...o, ...h];
438
+ const oi = (k: number) => uo.order[k % o.length] as number;
439
+ const hi = (k: number) => o.length + (uh.order[k % h.length] as number);
440
+ const tris: number[][] = [];
441
+ let i = 0;
442
+ let j = 0;
443
+ while (i < o.length || j < h.length) {
444
+ const nextO = i < o.length ? (uo.angles[i + 1] as number) : Infinity;
445
+ const nextH = j < h.length ? (uh.angles[j + 1] as number) : Infinity;
446
+ if (nextO <= nextH) {
447
+ tris.push([oi(i), oi(i + 1), hi(j)]);
448
+ i++;
449
+ } else {
450
+ tris.push([oi(i), hi(j + 1), hi(j)]);
451
+ j++;
452
+ }
453
+ }
454
+ return mergeConvex(
455
+ V,
456
+ tris.filter((t) => Math.abs(area(t.map((k) => pt(V, k)))) > 1e-6),
457
+ );
458
+ }
459
+
460
+ // -------------------------------------------------------------- clipping
461
+
462
+ /**
463
+ * Views filling `base` clipped by half-planes: one rotated square with
464
+ * `overflow: hidden` per plane, nested, its top side on the plane's line.
465
+ * `ref` is a point of the drawn region, `extent` bounds the distance from
466
+ * it to any point of the region.
467
+ */
468
+ function clipViews(
469
+ planes: readonly Plane[],
470
+ base: Base,
471
+ color: string,
472
+ ref: Pt,
473
+ extent: number,
474
+ ): Prim[] {
475
+ const kept: Plane[] = [];
476
+ for (const plane of planes) {
477
+ if (base.t === "disc") {
478
+ const inset = side(plane, [base.cx, base.cy]);
479
+ if (inset >= base.r1 - 1e-3) continue; // the whole disc is inside
480
+ if (inset <= -base.r1) return []; // nothing left
481
+ }
482
+ kept.push(plane);
483
+ }
484
+ if (base.t === "plane" && !kept.length) return [];
485
+ const size = 2 * extent + 8;
486
+ const half = size / 2;
487
+
488
+ const root: Prim[] = [];
489
+ let into = root;
490
+ let origin: Pt = [0, 0];
491
+ let theta = 0;
492
+ for (const { n, d } of kept) {
493
+ const angle = Math.atan2(-n[0], n[1]);
494
+ const u: Pt = [n[1], -n[0]];
495
+ const off = n[0] * ref[0] + n[1] * ref[1] - d;
496
+ const q: Pt = [ref[0] - off * n[0], ref[1] - off * n[1]];
497
+ const o: Pt = [q[0] - half * u[0], q[1] - half * u[1]];
498
+ const rel = angle - theta;
499
+ const local = rotate([o[0] - origin[0], o[1] - origin[1]], -theta);
500
+ const rh = rotate([half, half], rel);
501
+ const clip: Prim = {
502
+ t: "clip",
503
+ x: local[0] - half + rh[0],
504
+ y: local[1] - half + rh[1],
505
+ size,
506
+ rotate: rel,
507
+ children: [],
508
+ };
509
+ into.push(clip);
510
+ into = clip.children;
511
+ origin = o;
512
+ theta = angle;
513
+ }
514
+ if (base.t === "disc") {
515
+ const c = rotate([base.cx - origin[0], base.cy - origin[1]], -theta);
516
+ into.push({
517
+ t: "box",
518
+ x: c[0] - base.r1,
519
+ y: c[1] - base.r1,
520
+ w: base.r1 * 2,
521
+ h: base.r1 * 2,
522
+ radius: base.r1,
523
+ ...(base.r0 > 0.25
524
+ ? { borderWidth: base.r1 - base.r0, borderColor: color }
525
+ : { color }),
526
+ });
527
+ } else into.push({ t: "box", x: 0, y: 0, w: size, h: size, color });
528
+ return root;
529
+ }
530
+
531
+ /** Views drawing a convex piece of a shape */
532
+ function pieceViews(piece: Piece, base: Base, color: string): Prim[] {
533
+ const { pts } = piece;
534
+ if (pts.length < 3) return [];
535
+ const ref = centroid(pts);
536
+ const planes: Plane[] = [];
537
+ pts.forEach((a, i) => {
538
+ const b = pt(pts, (i + 1) % pts.length);
539
+ const plane = planeOf(a, b, ref, piece.internal[i] ? SEAM : 0);
540
+ if (plane) planes.push(plane);
541
+ });
542
+ planes.push(...piece.guards);
543
+ let x0 = Infinity;
544
+ let y0 = Infinity;
545
+ let x1 = -Infinity;
546
+ let y1 = -Infinity;
547
+ for (const p of pts) {
548
+ x0 = Math.min(x0, p[0]);
549
+ y0 = Math.min(y0, p[1]);
550
+ x1 = Math.max(x1, p[0]);
551
+ y1 = Math.max(y1, p[1]);
552
+ }
553
+ if (base.t === "disc") {
554
+ x0 = Math.max(x0, base.cx - base.r1);
555
+ y0 = Math.max(y0, base.cy - base.r1);
556
+ x1 = Math.min(x1, base.cx + base.r1);
557
+ y1 = Math.min(y1, base.cy + base.r1);
558
+ }
559
+ if (!(x1 > x0 && y1 > y0)) return [];
560
+ // the centroid may lie outside the disc: distances from it, generously
561
+ return clipViews(
562
+ planes,
563
+ base,
564
+ color,
565
+ ref,
566
+ 2 * Math.hypot(x1 - x0, y1 - y0) + SEAM,
567
+ );
568
+ }
569
+
570
+ // ------------------------------------------------------------ recognition
571
+
572
+ interface RoundRect {
573
+ x: number;
574
+ y: number;
575
+ w: number;
576
+ h: number;
577
+ r: number;
578
+ }
579
+
580
+ /** An axis-aligned (rounded) rectangle */
581
+ function asRoundRect(items: readonly Item[]): RoundRect | null {
582
+ const arcs = items.filter((it) => it.t === "A");
583
+ if (arcs.length !== 0 && arcs.length !== 4) return null;
584
+ let r = 0;
585
+ let x0 = Infinity;
586
+ let y0 = Infinity;
587
+ let x1 = -Infinity;
588
+ let y1 = -Infinity;
589
+ const grow = (x: number, y: number) => {
590
+ x0 = Math.min(x0, x);
591
+ y0 = Math.min(y0, y);
592
+ x1 = Math.max(x1, x);
593
+ y1 = Math.max(y1, y);
594
+ };
595
+ for (const it of items) {
596
+ if (it.t === "L") {
597
+ const dx = Math.abs(it.to[0] - it.from[0]);
598
+ const dy = Math.abs(it.to[1] - it.from[1]);
599
+ if (dx > 1e-3 && dy > 1e-3) return null;
600
+ grow(it.from[0], it.from[1]);
601
+ grow(it.to[0], it.to[1]);
602
+ } else {
603
+ if (Math.abs(Math.abs(it.a1 - it.a0) - Math.PI / 2) > 0.02) return null;
604
+ if (r && Math.abs(it.r - r) > 0.01) return null;
605
+ r = it.r;
606
+ grow(it.cx - it.r, it.cy - it.r);
607
+ grow(it.cx + it.r, it.cy + it.r);
608
+ }
609
+ }
610
+ if (!(x1 > x0 && y1 > y0)) return null;
611
+ for (const it of items) {
612
+ if (it.t === "A") {
613
+ const nearX =
614
+ Math.abs(it.cx - (x0 + r)) < 0.05 || Math.abs(it.cx - (x1 - r)) < 0.05;
615
+ const nearY =
616
+ Math.abs(it.cy - (y0 + r)) < 0.05 || Math.abs(it.cy - (y1 - r)) < 0.05;
617
+ if (!nearX || !nearY) return null;
618
+ } else {
619
+ // every straight side lies on the box
620
+ const onX = (x: number) =>
621
+ Math.abs(x - x0) < 0.05 || Math.abs(x - x1) < 0.05;
622
+ const onY = (y: number) =>
623
+ Math.abs(y - y0) < 0.05 || Math.abs(y - y1) < 0.05;
624
+ const vertical = Math.abs(it.to[0] - it.from[0]) <= 1e-3;
625
+ if (vertical ? !onX(it.from[0]) : !onY(it.from[1])) return null;
626
+ }
627
+ }
628
+ if (!arcs.length && items.length < 4) return null;
629
+ return { x: x0, y: y0, w: x1 - x0, h: y1 - y0, r };
630
+ }
631
+
632
+ /**
633
+ * A region bounded by arcs of one center (and straight / curved sides inside
634
+ * the ring of those arcs): its ring and the outline to clip it with
635
+ */
636
+ function asConcentric(
637
+ items: readonly Item[],
638
+ ): { base: Extract<Base, { t: "disc" }>; outline: Pt[] } | null {
639
+ const arcs = items.filter((it): it is ArcItem => it.t === "A");
640
+ const first = arcs[0];
641
+ if (!first) return null;
642
+ const { cx, cy } = first;
643
+ let r1 = 0;
644
+ for (const a of arcs) {
645
+ if (Math.hypot(a.cx - cx, a.cy - cy) > 0.5) return null;
646
+ r1 = Math.max(r1, a.r);
647
+ }
648
+ let r0 = 0;
649
+ for (const a of arcs) {
650
+ if (Math.abs(a.r - r1) <= 0.5) continue;
651
+ if (r0 && Math.abs(a.r - r0) > 0.5) return null;
652
+ r0 = a.r;
653
+ }
654
+ const c: Pt = [cx, cy];
655
+ for (const it of items)
656
+ if (it.t === "L")
657
+ for (const p of [it.from, it.to]) {
658
+ const d = dist(p, c);
659
+ if (d > r1 + 0.5 || (r0 > 0 && d < r0 - 0.5)) return null;
660
+ }
661
+ const outline: Pt[] = [];
662
+ for (const it of items) {
663
+ if (it.t === "L") {
664
+ outline.push(it.from, it.to);
665
+ continue;
666
+ }
667
+ const sweep = it.a1 - it.a0;
668
+ if (Math.abs(it.r - r1) <= 0.5) {
669
+ // tangents outside the outer circle: the disc does the rounding
670
+ const n = Math.max(1, Math.ceil(Math.abs(sweep) / (Math.PI / 4)));
671
+ const step = sweep / n;
672
+ const far = r1 / Math.cos(step / 2);
673
+ outline.push(polar(cx, cy, r1, it.a0));
674
+ for (let k = 0; k < n; k++) {
675
+ outline.push(polar(cx, cy, far, it.a0 + (k + 0.5) * step));
676
+ outline.push(polar(cx, cy, r1, it.a0 + (k + 1) * step));
677
+ }
678
+ } else {
679
+ // chords inside the inner circle: the ring does the rounding
680
+ const n = Math.max(1, Math.ceil(Math.abs(sweep) / (Math.PI / 2)));
681
+ for (let k = 0; k <= n; k++)
682
+ outline.push(polar(cx, cy, it.r, it.a0 + (sweep * k) / n));
683
+ }
684
+ }
685
+ return { base: { t: "disc", cx, cy, r0, r1 }, outline };
686
+ }
687
+
688
+ const ringBox = (
689
+ cx: number,
690
+ cy: number,
691
+ r1: number,
692
+ r0: number,
693
+ color: string,
694
+ ): Prim => ({
695
+ t: "box",
696
+ x: cx - r1,
697
+ y: cy - r1,
698
+ w: r1 * 2,
699
+ h: r1 * 2,
700
+ radius: r1,
701
+ ...(r0 > 0.25 ? { borderWidth: r1 - r0, borderColor: color } : { color }),
702
+ });
703
+
704
+ /**
705
+ * A sector of a ring between two straight sides (pie slices, donut segments,
706
+ * gauge arcs, with or without gaps): the ring clipped by the two sides (two
707
+ * halves split on the bisector past half a turn). Corner roundings are
708
+ * dropped. `null` when the outline is something else.
709
+ */
710
+ function wedgeViews(
711
+ items: readonly Item[],
712
+ base: Extract<Base, { t: "disc" }>,
713
+ color: string,
714
+ /** Grows the straight sides (round caps cover them) */
715
+ grow = 0,
716
+ ): Prim[] | null {
717
+ const { cx, cy, r0, r1 } = base;
718
+ const c: Pt = [cx, cy];
719
+ const arcs = items.filter((it): it is ArcItem => it.t === "A");
720
+ const outer = arcs.filter((a) => Math.abs(a.r - r1) <= 0.5);
721
+ const arc = outer[0];
722
+ if (!arc || outer.length !== 1 || arcs.length - outer.length > 1) return null;
723
+ const a0 = Math.min(arc.a0, arc.a1);
724
+ const a1 = Math.max(arc.a0, arc.a1);
725
+ const span = a1 - a0;
726
+ if (span >= TAU - 1e-3) return null;
727
+ // the straight sides: radial segments, by the end of the arc they are at
728
+ const gap = (a: number, b: number) => {
729
+ const d = Math.abs(a - b) % TAU;
730
+ return Math.min(d, TAU - d);
731
+ };
732
+ let start: Extract<Item, { t: "L" }> | null = null;
733
+ let end: Extract<Item, { t: "L" }> | null = null;
734
+ const length = (s: Extract<Item, { t: "L" }>) => dist(s.from, s.to);
735
+ for (const it of items) {
736
+ if (it.t !== "L" || length(it) < 0.3) continue;
737
+ const far = dist(it.from, c) > dist(it.to, c) ? it.from : it.to;
738
+ const rf = dist(far, c);
739
+ if (rf < 0.5) continue;
740
+ const dx = (it.to[0] - it.from[0]) / length(it);
741
+ const dy = (it.to[1] - it.from[1]) / length(it);
742
+ const rx = (far[0] - cx) / rf;
743
+ const ry = (far[1] - cy) / rf;
744
+ if (Math.abs(dx * ry - dy * rx) > 0.14) continue; // not radial (8°)
745
+ const phi = Math.atan2(far[1] - cy, far[0] - cx);
746
+ if (gap(phi, a0) <= gap(phi, a1)) {
747
+ if (!start || length(it) > length(start)) start = it;
748
+ } else if (!end || length(it) > length(end)) end = it;
749
+ }
750
+ if (!start || !end) return null;
751
+ const mid = (a0 + a1) / 2;
752
+ const rm = r0 > 0 ? (r0 + r1) / 2 : r1 / 2;
753
+ const probe = polar(cx, cy, rm, mid);
754
+ const hs = planeOf(start.from, start.to, probe, grow);
755
+ const he = planeOf(end.from, end.to, probe, grow);
756
+ if (!hs || !he || side(hs, probe) <= 0 || side(he, probe) <= 0) return null;
757
+ const extent = 2 * r1 + SEAM;
758
+ if (span <= Math.PI - 1e-3)
759
+ return clipViews([hs, he], base, color, probe, extent);
760
+ // past half a turn: the halves on each side of the bisector
761
+ const axis: Pt = [cx + Math.cos(mid), cy + Math.sin(mid)];
762
+ const p1 = polar(cx, cy, rm, a0 + span / 4);
763
+ const p2 = polar(cx, cy, rm, a1 - span / 4);
764
+ const m1 = planeOf(c, axis, p1, SEAM);
765
+ const m2 = planeOf(c, axis, p2, SEAM);
766
+ if (!m1 || !m2) return null;
767
+ return [
768
+ ...clipViews([hs, m1], base, color, p1, extent),
769
+ ...clipViews([he, m2], base, color, p2, extent),
770
+ ];
771
+ }
772
+
773
+ const roundBox = (r: RoundRect, color: string, shadow: boolean): Prim => ({
774
+ t: "box",
775
+ x: r.x,
776
+ y: r.y,
777
+ w: r.w,
778
+ h: r.h,
779
+ color,
780
+ ...(r.r > 0 ? { radius: r.r } : null),
781
+ ...(shadow ? { shadow } : null),
782
+ });
783
+
784
+ function piecesViews(
785
+ pieces: readonly Piece[],
786
+ base: Base,
787
+ color: string,
788
+ ): Prim[] {
789
+ const out: Prim[] = [];
790
+ for (const piece of pieces.slice(0, MAX_PIECES))
791
+ out.push(...pieceViews(piece, base, color));
792
+ return out;
793
+ }
794
+
795
+ /** Views filling the subpaths with one opaque color (nonzero rule) */
796
+ export function regionViews(
797
+ paths: readonly Subpath[],
798
+ color: string,
799
+ shadow = false,
800
+ ): Prim[] {
801
+ const subs = paths
802
+ .map((sub) => ({ start: [sub.x, sub.y] as Pt, items: itemsOf(sub, true) }))
803
+ .filter((s) => s.items.length > 0);
804
+ if (!subs.length) return [];
805
+
806
+ // full circles: a disc, or a ring with the hole
807
+ if (subs.every((s) => s.items.length === 1 && isFull(s.items[0]))) {
808
+ const circles = subs.map((s) => s.items[0] as ArcItem);
809
+ const [a, b] = circles;
810
+ if (
811
+ a &&
812
+ b &&
813
+ circles.length === 2 &&
814
+ Math.hypot(a.cx - b.cx, a.cy - b.cy) < 0.5 &&
815
+ Math.abs(a.r - b.r) > 0.25 &&
816
+ a.a1 - a.a0 > 0 !== b.a1 - b.a0 > 0
817
+ )
818
+ return [
819
+ ringBox(a.cx, a.cy, Math.max(a.r, b.r), Math.min(a.r, b.r), color),
820
+ ];
821
+ return circles.map((c) => ringBox(c.cx, c.cy, c.r, 0, color));
822
+ }
823
+
824
+ const firstSub = subs[0];
825
+ if (subs.length === 1 && firstSub) {
826
+ const box = asRoundRect(firstSub.items);
827
+ if (box) return [roundBox(box, color, shadow)];
828
+ const ring = asConcentric(firstSub.items);
829
+ if (ring)
830
+ return (
831
+ wedgeViews(firstSub.items, ring.base, color) ??
832
+ piecesViews(convexPieces(ring.outline), ring.base, color)
833
+ );
834
+ }
835
+
836
+ const polys = subs.map((s) => flatten(s.items, s.start));
837
+ // an outline and a hole wound the other way (radar rings)
838
+ const [outer, hole] = polys;
839
+ if (
840
+ polys.length === 2 &&
841
+ outer &&
842
+ hole &&
843
+ area(outer) * area(hole) < 0 &&
844
+ contains(outer, hole)
845
+ )
846
+ return piecesViews(bandPieces(outer, hole), { t: "plane" }, color);
847
+ const out: Prim[] = [];
848
+ for (const poly of polys)
849
+ out.push(...piecesViews(convexPieces(poly), { t: "plane" }, color));
850
+ return out;
851
+ }
852
+
853
+ function contains(outer: readonly Pt[], inner: readonly Pt[]) {
854
+ const box = (P: readonly Pt[]) => {
855
+ let x0 = Infinity;
856
+ let y0 = Infinity;
857
+ let x1 = -Infinity;
858
+ let y1 = -Infinity;
859
+ for (const p of P) {
860
+ x0 = Math.min(x0, p[0]);
861
+ y0 = Math.min(y0, p[1]);
862
+ x1 = Math.max(x1, p[0]);
863
+ y1 = Math.max(y1, p[1]);
864
+ }
865
+ return { x0, y0, x1, y1 };
866
+ };
867
+ const a = box(outer);
868
+ const b = box(inner);
869
+ return (
870
+ b.x0 >= a.x0 - 0.5 &&
871
+ b.y0 >= a.y0 - 0.5 &&
872
+ b.x1 <= a.x1 + 0.5 &&
873
+ b.y1 <= a.y1 + 0.5
874
+ );
875
+ }
876
+
877
+ // ---------------------------------------------------------------- strokes
878
+
879
+ /** Splits a polyline into its dashes (canvas `setLineDash`) */
880
+ export function dashPolyline(
881
+ points: readonly Pt[],
882
+ dash: readonly number[],
883
+ ): Pt[][] {
884
+ let pattern = dash.filter((v) => Number.isFinite(v) && v >= 0);
885
+ if (pattern.length % 2) pattern = [...pattern, ...pattern];
886
+ const period = pattern.reduce((a, b) => a + b, 0);
887
+ if (!pattern.length || period <= 0) return [points.slice()];
888
+ let total = 0;
889
+ for (let i = 1; i < points.length; i++)
890
+ total += dist(pt(points, i - 1), pt(points, i));
891
+ // keeps the number of views bounded
892
+ const scale = total / period > 300 ? total / period / 300 : 1;
893
+ const out: Pt[][] = [];
894
+ let k = 0;
895
+ let left = (pattern[0] as number) * scale;
896
+ let on = true;
897
+ let run: Pt[] = [pt(points, 0)];
898
+ for (let i = 1; i < points.length; i++) {
899
+ let a = pt(points, i - 1);
900
+ const b = pt(points, i);
901
+ let len = dist(a, b);
902
+ while (len > 1e-9) {
903
+ const step = Math.min(left, len);
904
+ const t = step / len;
905
+ const p: Pt = [a[0] + (b[0] - a[0]) * t, a[1] + (b[1] - a[1]) * t];
906
+ if (on) run.push(p);
907
+ a = p;
908
+ len -= step;
909
+ left -= step;
910
+ if (left <= 1e-9) {
911
+ if (on && run.length > 1) out.push(run);
912
+ on = !on;
913
+ k = (k + 1) % pattern.length;
914
+ left = Math.max((pattern[k] as number) * scale, on ? 0 : 0.5);
915
+ run = [p];
916
+ }
917
+ }
918
+ }
919
+ if (on && run.length > 1) out.push(run);
920
+ return out;
921
+ }
922
+
923
+ const segmentBox = (
924
+ a: Pt,
925
+ b: Pt,
926
+ width: number,
927
+ color: string,
928
+ cap: StrokeOp["cap"],
929
+ ): Prim => {
930
+ const extra = cap === "butt" ? 0 : width;
931
+ const length = dist(a, b) + extra;
932
+ return {
933
+ t: "box",
934
+ x: (a[0] + b[0]) / 2 - length / 2,
935
+ y: (a[1] + b[1]) / 2 - width / 2,
936
+ w: length,
937
+ h: width,
938
+ color,
939
+ ...(cap === "round" ? { radius: width / 2 } : null),
940
+ rotate: Math.atan2(b[1] - a[1], b[0] - a[0]),
941
+ };
942
+ };
943
+
944
+ const dotBox = (p: Pt, d: number, color: string): Prim => ({
945
+ t: "box",
946
+ x: p[0] - d / 2,
947
+ y: p[1] - d / 2,
948
+ w: d,
949
+ h: d,
950
+ radius: d / 2,
951
+ color,
952
+ });
953
+
954
+ /** Views of a stroke; `colorAt` gives the opaque color around a point */
955
+ function strokeViews(op: StrokeOp, colorAt: (p: Pt) => string): Prim[] {
956
+ const w = op.width;
957
+ const subs = op.paths
958
+ .map((sub) => ({
959
+ start: [sub.x, sub.y] as Pt,
960
+ items: itemsOf(sub, sub.closed),
961
+ closed: sub.closed,
962
+ }))
963
+ .filter((s) => s.items.length > 0);
964
+ if (!subs.length || !(w > 0)) return [];
965
+ const plain = !op.paint.gradient && op.dash.length === 0;
966
+ const first = subs[0];
967
+ if (plain && subs.length === 1 && first) {
968
+ const { items } = first;
969
+ const only = items[0];
970
+ // a circle: a ring view
971
+ if (items.length === 1 && only && isFull(only))
972
+ return [
973
+ ringBox(
974
+ only.cx,
975
+ only.cy,
976
+ only.r + w / 2,
977
+ Math.max(0, only.r - w / 2),
978
+ colorAt([only.cx, only.cy]),
979
+ ),
980
+ ];
981
+ // an arc: a band (the region of its outline), with its caps
982
+ if (items.length === 1 && only?.t === "A") {
983
+ const ro = only.r + w / 2;
984
+ const ri = only.r - w / 2;
985
+ const color = colorAt([only.cx, only.cy]);
986
+ const band: Subpath = {
987
+ ...pointAt(only.cx, only.cy, ro, only.a0),
988
+ closed: true,
989
+ segs: [
990
+ { t: "A", cx: only.cx, cy: only.cy, r: ro, a0: only.a0, a1: only.a1 },
991
+ ri > 0.25
992
+ ? {
993
+ t: "A",
994
+ cx: only.cx,
995
+ cy: only.cy,
996
+ r: ri,
997
+ a0: only.a1,
998
+ a1: only.a0,
999
+ }
1000
+ : { t: "L", x: only.cx, y: only.cy },
1001
+ ] as Segment[],
1002
+ };
1003
+ const round = op.cap === "round";
1004
+ const ring = asConcentric(itemsOf(band, true));
1005
+ const views =
1006
+ (ring &&
1007
+ wedgeViews(
1008
+ itemsOf(band, true),
1009
+ ring.base,
1010
+ color,
1011
+ round ? SEAM : 0,
1012
+ )) ||
1013
+ regionViews([band], color);
1014
+ if (round)
1015
+ views.push(
1016
+ dotBox(polar(only.cx, only.cy, only.r, only.a0), w, color),
1017
+ dotBox(polar(only.cx, only.cy, only.r, only.a1), w, color),
1018
+ );
1019
+ return views;
1020
+ }
1021
+ // a rounded rectangle: a bordered view
1022
+ if (first.closed) {
1023
+ const box = asRoundRect(items);
1024
+ if (box)
1025
+ return [
1026
+ {
1027
+ t: "box",
1028
+ x: box.x - w / 2,
1029
+ y: box.y - w / 2,
1030
+ w: box.w + w,
1031
+ h: box.h + w,
1032
+ radius: box.r > 0 ? box.r + w / 2 : 0,
1033
+ borderWidth: w,
1034
+ borderColor: colorAt([box.x, box.y]),
1035
+ },
1036
+ ];
1037
+ }
1038
+ }
1039
+ const out: Prim[] = [];
1040
+ for (const sub of subs) {
1041
+ const flat = flatten(sub.items, sub.start, 0.25);
1042
+ const line = dedupe(sub.closed ? [...flat, pt(flat, 0)] : flat, false);
1043
+ if (line.length < 2) continue;
1044
+ const runs = op.dash.length ? dashPolyline(line, op.dash) : [line];
1045
+ for (const run of runs) {
1046
+ const n = run.length;
1047
+ const closedRun = n > 2 && dist(pt(run, 0), pt(run, n - 1)) < 1e-3;
1048
+ // joins of butt-capped strokes: thin ones and sharp corners get a
1049
+ // round dot; the gentle bends of wide strokes (sankey links) extend
1050
+ // the segments over the gap instead (a dot as wide as the stroke would
1051
+ // bulge out of a curved ribbon)
1052
+ const extend = new Array<number>(n).fill(0);
1053
+ const dots: number[] = [];
1054
+ if (op.cap !== "round" && w >= 1.5)
1055
+ for (let i = closedRun ? 0 : 1; i < n - 1; i++) {
1056
+ const prev = pt(run, i === 0 ? n - 2 : i - 1);
1057
+ const at = pt(run, i);
1058
+ const next = pt(run, i + 1);
1059
+ const l1 = dist(prev, at);
1060
+ const l2 = dist(at, next);
1061
+ const cos =
1062
+ l1 > 1e-9 && l2 > 1e-9
1063
+ ? ((at[0] - prev[0]) * (next[0] - at[0]) +
1064
+ (at[1] - prev[1]) * (next[1] - at[1])) /
1065
+ (l1 * l2)
1066
+ : 1;
1067
+ const turn = Math.acos(Math.max(-1, Math.min(1, cos)));
1068
+ if (op.cap === "butt" && w >= 6 && turn < Math.PI / 4) {
1069
+ extend[i] = (w / 2) * Math.tan(turn / 2) + 0.5;
1070
+ if (i === 0) extend[n - 1] = extend[0] as number;
1071
+ } else dots.push(i);
1072
+ }
1073
+ for (let i = 1; i < n; i++) {
1074
+ let a = pt(run, i - 1);
1075
+ let b = pt(run, i);
1076
+ const length = dist(a, b);
1077
+ const e0 = extend[i - 1] as number;
1078
+ const e1 = extend[i] as number;
1079
+ if (length > 1e-9 && (e0 > 0 || e1 > 0)) {
1080
+ const ux = (b[0] - a[0]) / length;
1081
+ const uy = (b[1] - a[1]) / length;
1082
+ a = [a[0] - ux * e0, a[1] - uy * e0];
1083
+ b = [b[0] + ux * e1, b[1] + uy * e1];
1084
+ }
1085
+ const mid: Pt = [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2];
1086
+ out.push(segmentBox(a, b, w, colorAt(mid), op.cap));
1087
+ }
1088
+ for (const i of dots)
1089
+ out.push(dotBox(pt(run, i), w, colorAt(pt(run, i))));
1090
+ }
1091
+ }
1092
+ return out;
1093
+ }
1094
+
1095
+ const pointAt = (cx: number, cy: number, r: number, a: number) => {
1096
+ const [x, y] = polar(cx, cy, r, a);
1097
+ return { x, y };
1098
+ };
1099
+
1100
+ // ------------------------------------------------------------------- ops
1101
+
1102
+ const wrap = (views: Prim[], opacity: number): Prim[] => {
1103
+ if (!views.length) return [];
1104
+ if (opacity >= 0.999) return views;
1105
+ return [{ t: "group", opacity, children: views }];
1106
+ };
1107
+
1108
+ const boundsCenter = (paths: readonly Subpath[]): Pt => {
1109
+ let x0 = Infinity;
1110
+ let y0 = Infinity;
1111
+ let x1 = -Infinity;
1112
+ let y1 = -Infinity;
1113
+ for (const sub of paths) {
1114
+ const grow = (x: number, y: number) => {
1115
+ x0 = Math.min(x0, x);
1116
+ y0 = Math.min(y0, y);
1117
+ x1 = Math.max(x1, x);
1118
+ y1 = Math.max(y1, y);
1119
+ };
1120
+ grow(sub.x, sub.y);
1121
+ for (const s of sub.segs) {
1122
+ if (s.t === "L") grow(s.x, s.y);
1123
+ else {
1124
+ grow(s.cx - s.r, s.cy - s.r);
1125
+ grow(s.cx + s.r, s.cy + s.r);
1126
+ }
1127
+ }
1128
+ }
1129
+ return Number.isFinite(x0) ? [(x0 + x1) / 2, (y0 + y1) / 2] : [0, 0];
1130
+ };
1131
+
1132
+ function fillOp(op: FillOp): Prim[] {
1133
+ const color: Color = paintAt(op.paint, ...boundsCenter(op.paths));
1134
+ const opacity = color.a * op.alpha;
1135
+ if (opacity <= 0.002) return [];
1136
+ return wrap(regionViews(op.paths, opaqueCss(color), op.shadow), opacity);
1137
+ }
1138
+
1139
+ function strokeOp(op: StrokeOp): Prim[] {
1140
+ const { paint } = op;
1141
+ let alpha = paint.color.a;
1142
+ if (paint.gradient?.stops.length)
1143
+ alpha = Math.max(...paint.gradient.stops.map((s) => s.color.a));
1144
+ const opacity = alpha * op.alpha;
1145
+ if (opacity <= 0.002) return [];
1146
+ const colorAt = (p: Pt) => {
1147
+ const c = paintAt(paint, p[0], p[1]);
1148
+ // gradient stops of different alphas: folded into the opaque color
1149
+ return paint.gradient && alpha > 0 && c.a < alpha - 1e-3
1150
+ ? cssWithAlpha(c, 1 / alpha)
1151
+ : opaqueCss(c);
1152
+ };
1153
+ return wrap(strokeViews(op, colorAt), opacity);
1154
+ }
1155
+
1156
+ function textOp(op: TextOp): Prim[] {
1157
+ if (!op.text || op.alpha * op.color.a <= 0.002) return [];
1158
+ return [
1159
+ {
1160
+ t: "text",
1161
+ text: op.text,
1162
+ x: op.x,
1163
+ y: op.y,
1164
+ size: op.size,
1165
+ weight: op.weight,
1166
+ align: op.align,
1167
+ baseline: op.baseline,
1168
+ color: cssWithAlpha(op.color, op.alpha),
1169
+ rotate: op.rotate,
1170
+ ...(op.maxWidth !== undefined ? { maxWidth: op.maxWidth } : null),
1171
+ ...(op.halo ? { halo: cssWithAlpha(op.halo, op.alpha) } : null),
1172
+ },
1173
+ ];
1174
+ }
1175
+
1176
+ /** Views of a recorded frame, in drawing order */
1177
+ export function framePrims(ops: readonly DrawOp[]): Prim[] {
1178
+ const out: Prim[] = [];
1179
+ for (const op of ops) {
1180
+ if (op.kind === "fill") out.push(...fillOp(op));
1181
+ else if (op.kind === "stroke") out.push(...strokeOp(op));
1182
+ else out.push(...textOp(op));
1183
+ }
1184
+ return out;
1185
+ }