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 @@
1
+ {"version":3,"file":"geometry.js","names":["TAU","SEAM","MAX_PIECES","side","plane","p","planeOf","len","b","a","n","inside","grow","centroid","pts","s","pt","list","i","cross3","c","dist","polar","cx","r","cy","rotate","v","area","P","itemsOf","out","at","sub","line","to","close","flatten","start","it","items","sweep","step","tolerance","k","dedupe","last","closed","simplify","changed","scale","turn","forward","isFull","triangulate","idx","tris","guard","found","ia","ib","ic","blocked","iv","best","flat","t","convex","poly","V","mergeConvex","polys","merged","A","q","B","j","fromB","rest","candidate","edges","internalOf","outline","ref","shared","internal","ends","own","guards","e","convexPieces","bandPieces","O","outer","H","hole","sign","h","unwrap","angles","first","order","previous","uo","uh","oi","hi","clipViews","kept","planes","base","inset","size","extent","half","root","into","origin","theta","angle","u","off","d","o","rel","local","rh","clip","color","pieceViews","piece","x0","y0","x1","y1","asRoundRect","arcs","x","y","dx","dy","nearX","nearY","asConcentric","r1","r0","far","ringBox","wedgeViews","arc","a0","a1","span","gap","end","length","rf","rx","ry","phi","mid","rm","probe","hs","he","axis","p1","p2","m1","m2","roundBox","shadow","piecesViews","pieces","regionViews","subs","paths","circles","firstSub","box","ring","contains","inner","dashPolyline","pattern","dash","period","points","total","left","on","run","segmentBox","extra","cap","width","dotBox","strokeViews","w","op","plain","only","colorAt","ro","ri","band","pointAt","round","views","runs","closedRun","extend","dots","prev","next","l1","l2","cos","e0","e1","ux","uy","wrap","opacity","boundsCenter","fillOp","paintAt","opaqueCss","strokeOp","alpha","paint","cssWithAlpha","textOp","framePrims","ops"],"sources":["../../../../../native/src/components/ShapeChart/geometry.ts"],"sourcesContent":["// Turns the recorded canvas operations into view primitives, without any\n// drawing module:\n// - circles, rings and rounded rectangles are views with a border radius;\n// - a region bounded by arcs of one center (pie slice, donut segment, gauge\n// arc) is a disc / ring view clipped by half-planes: its outline with the\n// arcs replaced by polylines outside the outer circle and inside the inner\n// one, split in convex pieces;\n// - other fills (radar areas, funnel stages, rounded polygons) are split in\n// convex pieces too, each the intersection of half-planes;\n// - a half-plane is a square view with `overflow: hidden`, rotated so that\n// one side lies on the edge: nesting one per edge clips the piece. Edges\n// shared by two pieces overlap by half a pixel and translucent shapes are\n// drawn opaque in a group with the opacity, so no seam shows;\n// - strokes are thin rotated views (round caps / joins: rounded ends), arcs\n// are bands, dashes are split like the canvas does;\n// - texts keep the canvas anchor, alignment, baseline and rotation.\n\nimport {\n cssWithAlpha,\n opaqueCss,\n paintAt,\n type Color,\n type DrawOp,\n type FillOp,\n type Segment,\n type StrokeOp,\n type Subpath,\n type TextOp,\n} from \"./recorder\";\n\nconst TAU = Math.PI * 2;\n/** Overlap of the pieces of one shape, in pixels */\nconst SEAM = 0.5;\n/** Most views of one shape's half-planes */\nconst MAX_PIECES = 160;\n\nexport type Pt = [number, number];\n\n/** A drawable view */\nexport type Prim =\n | {\n t: \"box\";\n x: number;\n y: number;\n w: number;\n h: number;\n color?: string;\n radius?: number;\n borderWidth?: number;\n borderColor?: string;\n /** Rotation around the center, radians */\n rotate?: number;\n shadow?: boolean;\n }\n | {\n /** Square clipping its children (`overflow: hidden`), rotated around its center */\n t: \"clip\";\n x: number;\n y: number;\n size: number;\n rotate: number;\n children: Prim[];\n }\n | { t: \"group\"; opacity: number; children: Prim[] }\n | {\n t: \"text\";\n text: string;\n x: number;\n y: number;\n size: number;\n weight: number;\n align: TextOp[\"align\"];\n baseline: TextOp[\"baseline\"];\n color: string;\n rotate: number;\n maxWidth?: number;\n halo?: string;\n };\n\n/** Clipping base of a convex piece: everything, or a disc / ring */\ntype Base =\n | { t: \"plane\" }\n | { t: \"disc\"; cx: number; cy: number; r0: number; r1: number };\n\ninterface Piece {\n pts: Pt[];\n /** Per edge (pts[i] -> pts[i + 1]): shared with another piece of the shape */\n internal: boolean[];\n /** Outline half-planes trimming the overlap of the shared edges */\n guards: Plane[];\n}\n\n/** Half-plane n·p >= d (n: unit normal pointing inside) */\ninterface Plane {\n n: Pt;\n d: number;\n}\n\nconst side = (plane: Plane, p: Pt) =>\n plane.n[0] * p[0] + plane.n[1] * p[1] - plane.d;\n\n/** Half-plane of the line a-b containing `inside`, grown by `grow` px */\nconst planeOf = (a: Pt, b: Pt, inside: Pt, grow: number): Plane | null => {\n const len = Math.hypot(b[0] - a[0], b[1] - a[1]);\n if (len < 1e-6) return null;\n let n: Pt = [-(b[1] - a[1]) / len, (b[0] - a[0]) / len];\n if (n[0] * (inside[0] - a[0]) + n[1] * (inside[1] - a[1]) < 0)\n n = [-n[0], -n[1]];\n return { n, d: n[0] * a[0] + n[1] * a[1] - grow };\n};\n\nconst centroid = (pts: readonly Pt[]): Pt => [\n pts.reduce((s, p) => s + p[0], 0) / Math.max(1, pts.length),\n pts.reduce((s, p) => s + p[1], 0) / Math.max(1, pts.length),\n];\n\nconst pt = (list: readonly Pt[], i: number) => list[i] as Pt;\nconst cross3 = (a: Pt, b: Pt, c: Pt) =>\n (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\nconst dist = (a: Pt, b: Pt) => Math.hypot(a[0] - b[0], a[1] - b[1]);\nconst polar = (cx: number, cy: number, r: number, a: number): Pt => [\n cx + r * Math.cos(a),\n cy + r * Math.sin(a),\n];\nconst rotate = (v: Pt, a: number): Pt => {\n const c = Math.cos(a);\n const s = Math.sin(a);\n return [v[0] * c - v[1] * s, v[0] * s + v[1] * c];\n};\n\nexport const area = (P: readonly Pt[]) => {\n let s = 0;\n for (let i = 0; i < P.length; i++) {\n const a = pt(P, i);\n const b = pt(P, (i + 1) % P.length);\n s += a[0] * b[1] - b[0] * a[1];\n }\n return s / 2;\n};\n\n// ---------------------------------------------------------------- paths\n\n/** Segment of a subpath with explicit ends (implicit joins and closing included) */\ntype Item =\n | { t: \"L\"; from: Pt; to: Pt }\n | { t: \"A\"; cx: number; cy: number; r: number; a0: number; a1: number };\n\n/** Items of a filled (implicitly closed) or stroked subpath, zero-length segments dropped */\nfunction itemsOf(sub: Subpath, close: boolean): Item[] {\n const out: Item[] = [];\n let at: Pt = [sub.x, sub.y];\n const line = (to: Pt) => {\n if (dist(at, to) > 1e-3) out.push({ t: \"L\", from: at, to });\n at = to;\n };\n for (const s of sub.segs) {\n if (s.t === \"L\") line([s.x, s.y]);\n else {\n line(polar(s.cx, s.cy, s.r, s.a0));\n out.push({ ...s });\n at = polar(s.cx, s.cy, s.r, s.a1);\n }\n }\n if (close) line([sub.x, sub.y]);\n return out;\n}\n\n/** Points of a subpath, arcs flattened to `tolerance` px */\nfunction flatten(items: readonly Item[], start: Pt, tolerance = 0.2): Pt[] {\n const out: Pt[] = [start];\n for (const it of items) {\n if (it.t === \"L\") out.push(it.to);\n else {\n const sweep = it.a1 - it.a0;\n const step =\n it.r > tolerance\n ? Math.max(0.04, 2 * Math.acos(Math.max(-1, 1 - tolerance / it.r)))\n : Math.PI / 2;\n const n = Math.min(128, Math.max(1, Math.ceil(Math.abs(sweep) / step)));\n out.push(polar(it.cx, it.cy, it.r, it.a0));\n for (let k = 1; k <= n; k++)\n out.push(polar(it.cx, it.cy, it.r, it.a0 + (sweep * k) / n));\n }\n }\n return dedupe(out);\n}\n\n/** Drops repeated points (and the closing copy of the first) */\nfunction dedupe(P: readonly Pt[], closed = true): Pt[] {\n const out: Pt[] = [];\n for (const p of P) {\n const last = out[out.length - 1];\n if (!last || dist(last, p) > 1e-3) out.push(p);\n }\n if (\n closed &&\n out.length > 1 &&\n dist(pt(out, 0), pt(out, out.length - 1)) <= 1e-3\n )\n out.pop();\n return out;\n}\n\n/** Drops the vertices between collinear edges */\nfunction simplify(P: readonly Pt[]): Pt[] {\n let list = dedupe(P);\n let changed = true;\n while (changed && list.length > 3) {\n changed = false;\n for (let i = 0; i < list.length; i++) {\n const a = pt(list, (i - 1 + list.length) % list.length);\n const b = pt(list, i);\n const c = pt(list, (i + 1) % list.length);\n const scale = Math.max(dist(a, b), dist(b, c), 1e-9);\n const turn = cross3(a, b, c) / scale;\n const forward =\n (b[0] - a[0]) * (c[0] - b[0]) + (b[1] - a[1]) * (c[1] - b[1]) > 0;\n if (Math.abs(turn) < 1e-4 && forward) {\n list = list.filter((_, k) => k !== i);\n changed = true;\n break;\n }\n }\n }\n return list;\n}\n\ntype ArcItem = Extract<Item, { t: \"A\" }>;\n\nconst isFull = (it: Item | undefined): it is ArcItem =>\n it?.t === \"A\" && Math.abs(it.a1 - it.a0) >= TAU - 1e-6;\n\n// ---------------------------------------------------------- decomposition\n\n/** Ear clipping of a simple polygon: triangles as indexes */\nexport function triangulate(P: readonly Pt[]): number[][] {\n const n = P.length;\n if (n < 3) return [];\n let idx = P.map((_, i) => i);\n if (area(P) < 0) idx = idx.reverse();\n const tris: number[][] = [];\n const inside = (p: Pt, a: Pt, b: Pt, c: Pt) =>\n cross3(a, b, p) > 1e-9 && cross3(b, c, p) > 1e-9 && cross3(c, a, p) > 1e-9;\n let guard = 0;\n while (idx.length > 3 && guard++ < n * n + 10) {\n let found = false;\n for (let k = 0; k < idx.length; k++) {\n const ia = idx[(k - 1 + idx.length) % idx.length] as number;\n const ib = idx[k] as number;\n const ic = idx[(k + 1) % idx.length] as number;\n const a = pt(P, ia);\n const b = pt(P, ib);\n const c = pt(P, ic);\n if (cross3(a, b, c) <= 1e-9) continue;\n let blocked = false;\n for (const iv of idx) {\n if (iv === ia || iv === ib || iv === ic) continue;\n const v = pt(P, iv);\n if (dist(v, a) < 1e-6 || dist(v, b) < 1e-6 || dist(v, c) < 1e-6)\n continue;\n if (inside(v, a, b, c)) {\n blocked = true;\n break;\n }\n }\n if (blocked) continue;\n tris.push([ia, ib, ic]);\n idx.splice(k, 1);\n found = true;\n break;\n }\n if (!found) {\n // degenerate (self-touching) outline: drop the flattest vertex\n let best = 0;\n let flat = Infinity;\n for (let k = 0; k < idx.length; k++) {\n const t = Math.abs(\n cross3(\n pt(P, idx[(k - 1 + idx.length) % idx.length] as number),\n pt(P, idx[k] as number),\n pt(P, idx[(k + 1) % idx.length] as number),\n ),\n );\n if (t < flat) {\n flat = t;\n best = k;\n }\n }\n idx.splice(best, 1);\n }\n }\n if (idx.length === 3) {\n const [ia, ib, ic] = idx as [number, number, number];\n if (cross3(pt(P, ia), pt(P, ib), pt(P, ic)) > 1e-9) tris.push([ia, ib, ic]);\n }\n return tris;\n}\n\nconst convex = (V: readonly Pt[], poly: readonly number[]) => {\n for (let i = 0; i < poly.length; i++) {\n const a = pt(V, poly[(i - 1 + poly.length) % poly.length] as number);\n const b = pt(V, poly[i] as number);\n const c = pt(V, poly[(i + 1) % poly.length] as number);\n if (cross3(a, b, c) < -1e-7 * Math.max(1, dist(a, b) * dist(b, c)))\n return false;\n }\n return true;\n};\n\n/**\n * Merges triangles (indexes into V, positively oriented) into convex\n * pieces across their shared edges (Hertel-Mehlhorn)\n */\nexport function mergeConvex(\n V: readonly Pt[],\n tris: readonly number[][],\n): Piece[] {\n const polys = tris.map((t) =>\n area(t.map((i) => pt(V, i))) < 0 ? [...t].reverse() : [...t],\n );\n let merged = true;\n while (merged) {\n merged = false;\n outer: for (let p = 0; p < polys.length; p++) {\n const A = polys[p] as number[];\n for (let i = 0; i < A.length; i++) {\n const a = A[i] as number;\n const b = A[(i + 1) % A.length] as number;\n for (let q = p + 1; q < polys.length; q++) {\n const B = polys[q] as number[];\n const j = B.findIndex(\n (v, k) => v === b && B[(k + 1) % B.length] === a,\n );\n if (j < 0) continue;\n // A from b around to a, then B strictly between a and b\n const ia = (i + 1) % A.length;\n const fromB: number[] = [];\n for (let k = 0; k < A.length; k++)\n fromB.push(A[(ia + k) % A.length] as number);\n const rest: number[] = [];\n for (let k = 2; k < B.length; k++)\n rest.push(B[(j + k) % B.length] as number);\n const candidate = [...fromB, ...rest];\n if (!convex(V, candidate)) continue;\n polys[p] = candidate;\n polys.splice(q, 1);\n merged = true;\n break outer;\n }\n }\n }\n }\n const edges = new Set<string>();\n for (const poly of polys)\n for (let i = 0; i < poly.length; i++)\n edges.add(`${poly[i]},${poly[(i + 1) % poly.length]}`);\n const internalOf = (poly: readonly number[]) =>\n poly.map((v, i) => edges.has(`${poly[(i + 1) % poly.length]},${v}`));\n // outline edges, with a point inside their piece\n const outline: { a: number; b: number; ref: Pt }[] = [];\n for (const poly of polys) {\n const ref = centroid(poly.map((i) => pt(V, i)));\n internalOf(poly).forEach((shared, i) => {\n if (!shared)\n outline.push({\n a: poly[i] as number,\n b: poly[(i + 1) % poly.length] as number,\n ref,\n });\n });\n }\n return polys.map((poly) => {\n const pts = poly.map((i) => pt(V, i));\n const internal = internalOf(poly);\n // the outline edges at the ends of the shared ones cut the overlap\n // where it would stick out of the shape (acute corners)\n const ends = new Set<number>();\n internal.forEach((shared, i) => {\n if (!shared) return;\n ends.add(poly[i] as number);\n ends.add(poly[(i + 1) % poly.length] as number);\n });\n const own = new Set(\n poly.map((v, i) => `${v},${poly[(i + 1) % poly.length]}`),\n );\n const guards: Plane[] = [];\n for (const e of outline) {\n if (!(ends.has(e.a) || ends.has(e.b)) || own.has(`${e.a},${e.b}`))\n continue;\n const plane = planeOf(pt(V, e.a), pt(V, e.b), e.ref, 0);\n if (plane && pts.every((p) => side(plane, p) >= -1e-6))\n guards.push(plane);\n }\n return { pts, internal, guards };\n });\n}\n\n/** Convex pieces of a simple polygon */\nexport function convexPieces(P: readonly Pt[]): Piece[] {\n const V = simplify(P);\n if (V.length < 3) return [];\n return mergeConvex(V, triangulate(V));\n}\n\n/** Convex pieces of a band between an outline and a hole around the same point */\nfunction bandPieces(outer: readonly Pt[], hole: readonly Pt[]): Piece[] {\n const O = simplify(outer);\n const H = simplify(hole);\n if (O.length < 3 || H.length < 3) return convexPieces(outer);\n const sign = (P: Pt[]) => (area(P) < 0 ? [...P].reverse() : P);\n const o = sign(O);\n const h = sign(H);\n const c: Pt = [\n h.reduce((s, p) => s + p[0], 0) / h.length,\n h.reduce((s, p) => s + p[1], 0) / h.length,\n ];\n const unwrap = (P: Pt[]) => {\n const angles = P.map((p) => Math.atan2(p[1] - c[1], p[0] - c[0]));\n let first = 0;\n angles.forEach((a, i) => {\n if (a < (angles[first] as number)) first = i;\n });\n const order = P.map((_, k) => (first + k) % P.length);\n const out: number[] = [];\n let previous = -Infinity;\n for (const i of order) {\n let a = angles[i] as number;\n while (a < previous) a += TAU;\n out.push(a);\n previous = a;\n }\n out.push((out[0] as number) + TAU);\n return { order, angles: out };\n };\n const uo = unwrap(o);\n const uh = unwrap(h);\n const V: Pt[] = [...o, ...h];\n const oi = (k: number) => uo.order[k % o.length] as number;\n const hi = (k: number) => o.length + (uh.order[k % h.length] as number);\n const tris: number[][] = [];\n let i = 0;\n let j = 0;\n while (i < o.length || j < h.length) {\n const nextO = i < o.length ? (uo.angles[i + 1] as number) : Infinity;\n const nextH = j < h.length ? (uh.angles[j + 1] as number) : Infinity;\n if (nextO <= nextH) {\n tris.push([oi(i), oi(i + 1), hi(j)]);\n i++;\n } else {\n tris.push([oi(i), hi(j + 1), hi(j)]);\n j++;\n }\n }\n return mergeConvex(\n V,\n tris.filter((t) => Math.abs(area(t.map((k) => pt(V, k)))) > 1e-6),\n );\n}\n\n// -------------------------------------------------------------- clipping\n\n/**\n * Views filling `base` clipped by half-planes: one rotated square with\n * `overflow: hidden` per plane, nested, its top side on the plane's line.\n * `ref` is a point of the drawn region, `extent` bounds the distance from\n * it to any point of the region.\n */\nfunction clipViews(\n planes: readonly Plane[],\n base: Base,\n color: string,\n ref: Pt,\n extent: number,\n): Prim[] {\n const kept: Plane[] = [];\n for (const plane of planes) {\n if (base.t === \"disc\") {\n const inset = side(plane, [base.cx, base.cy]);\n if (inset >= base.r1 - 1e-3) continue; // the whole disc is inside\n if (inset <= -base.r1) return []; // nothing left\n }\n kept.push(plane);\n }\n if (base.t === \"plane\" && !kept.length) return [];\n const size = 2 * extent + 8;\n const half = size / 2;\n\n const root: Prim[] = [];\n let into = root;\n let origin: Pt = [0, 0];\n let theta = 0;\n for (const { n, d } of kept) {\n const angle = Math.atan2(-n[0], n[1]);\n const u: Pt = [n[1], -n[0]];\n const off = n[0] * ref[0] + n[1] * ref[1] - d;\n const q: Pt = [ref[0] - off * n[0], ref[1] - off * n[1]];\n const o: Pt = [q[0] - half * u[0], q[1] - half * u[1]];\n const rel = angle - theta;\n const local = rotate([o[0] - origin[0], o[1] - origin[1]], -theta);\n const rh = rotate([half, half], rel);\n const clip: Prim = {\n t: \"clip\",\n x: local[0] - half + rh[0],\n y: local[1] - half + rh[1],\n size,\n rotate: rel,\n children: [],\n };\n into.push(clip);\n into = clip.children;\n origin = o;\n theta = angle;\n }\n if (base.t === \"disc\") {\n const c = rotate([base.cx - origin[0], base.cy - origin[1]], -theta);\n into.push({\n t: \"box\",\n x: c[0] - base.r1,\n y: c[1] - base.r1,\n w: base.r1 * 2,\n h: base.r1 * 2,\n radius: base.r1,\n ...(base.r0 > 0.25\n ? { borderWidth: base.r1 - base.r0, borderColor: color }\n : { color }),\n });\n } else into.push({ t: \"box\", x: 0, y: 0, w: size, h: size, color });\n return root;\n}\n\n/** Views drawing a convex piece of a shape */\nfunction pieceViews(piece: Piece, base: Base, color: string): Prim[] {\n const { pts } = piece;\n if (pts.length < 3) return [];\n const ref = centroid(pts);\n const planes: Plane[] = [];\n pts.forEach((a, i) => {\n const b = pt(pts, (i + 1) % pts.length);\n const plane = planeOf(a, b, ref, piece.internal[i] ? SEAM : 0);\n if (plane) planes.push(plane);\n });\n planes.push(...piece.guards);\n let x0 = Infinity;\n let y0 = Infinity;\n let x1 = -Infinity;\n let y1 = -Infinity;\n for (const p of pts) {\n x0 = Math.min(x0, p[0]);\n y0 = Math.min(y0, p[1]);\n x1 = Math.max(x1, p[0]);\n y1 = Math.max(y1, p[1]);\n }\n if (base.t === \"disc\") {\n x0 = Math.max(x0, base.cx - base.r1);\n y0 = Math.max(y0, base.cy - base.r1);\n x1 = Math.min(x1, base.cx + base.r1);\n y1 = Math.min(y1, base.cy + base.r1);\n }\n if (!(x1 > x0 && y1 > y0)) return [];\n // the centroid may lie outside the disc: distances from it, generously\n return clipViews(\n planes,\n base,\n color,\n ref,\n 2 * Math.hypot(x1 - x0, y1 - y0) + SEAM,\n );\n}\n\n// ------------------------------------------------------------ recognition\n\ninterface RoundRect {\n x: number;\n y: number;\n w: number;\n h: number;\n r: number;\n}\n\n/** An axis-aligned (rounded) rectangle */\nfunction asRoundRect(items: readonly Item[]): RoundRect | null {\n const arcs = items.filter((it) => it.t === \"A\");\n if (arcs.length !== 0 && arcs.length !== 4) return null;\n let r = 0;\n let x0 = Infinity;\n let y0 = Infinity;\n let x1 = -Infinity;\n let y1 = -Infinity;\n const grow = (x: number, y: number) => {\n x0 = Math.min(x0, x);\n y0 = Math.min(y0, y);\n x1 = Math.max(x1, x);\n y1 = Math.max(y1, y);\n };\n for (const it of items) {\n if (it.t === \"L\") {\n const dx = Math.abs(it.to[0] - it.from[0]);\n const dy = Math.abs(it.to[1] - it.from[1]);\n if (dx > 1e-3 && dy > 1e-3) return null;\n grow(it.from[0], it.from[1]);\n grow(it.to[0], it.to[1]);\n } else {\n if (Math.abs(Math.abs(it.a1 - it.a0) - Math.PI / 2) > 0.02) return null;\n if (r && Math.abs(it.r - r) > 0.01) return null;\n r = it.r;\n grow(it.cx - it.r, it.cy - it.r);\n grow(it.cx + it.r, it.cy + it.r);\n }\n }\n if (!(x1 > x0 && y1 > y0)) return null;\n for (const it of items) {\n if (it.t === \"A\") {\n const nearX =\n Math.abs(it.cx - (x0 + r)) < 0.05 || Math.abs(it.cx - (x1 - r)) < 0.05;\n const nearY =\n Math.abs(it.cy - (y0 + r)) < 0.05 || Math.abs(it.cy - (y1 - r)) < 0.05;\n if (!nearX || !nearY) return null;\n } else {\n // every straight side lies on the box\n const onX = (x: number) =>\n Math.abs(x - x0) < 0.05 || Math.abs(x - x1) < 0.05;\n const onY = (y: number) =>\n Math.abs(y - y0) < 0.05 || Math.abs(y - y1) < 0.05;\n const vertical = Math.abs(it.to[0] - it.from[0]) <= 1e-3;\n if (vertical ? !onX(it.from[0]) : !onY(it.from[1])) return null;\n }\n }\n if (!arcs.length && items.length < 4) return null;\n return { x: x0, y: y0, w: x1 - x0, h: y1 - y0, r };\n}\n\n/**\n * A region bounded by arcs of one center (and straight / curved sides inside\n * the ring of those arcs): its ring and the outline to clip it with\n */\nfunction asConcentric(\n items: readonly Item[],\n): { base: Extract<Base, { t: \"disc\" }>; outline: Pt[] } | null {\n const arcs = items.filter((it): it is ArcItem => it.t === \"A\");\n const first = arcs[0];\n if (!first) return null;\n const { cx, cy } = first;\n let r1 = 0;\n for (const a of arcs) {\n if (Math.hypot(a.cx - cx, a.cy - cy) > 0.5) return null;\n r1 = Math.max(r1, a.r);\n }\n let r0 = 0;\n for (const a of arcs) {\n if (Math.abs(a.r - r1) <= 0.5) continue;\n if (r0 && Math.abs(a.r - r0) > 0.5) return null;\n r0 = a.r;\n }\n const c: Pt = [cx, cy];\n for (const it of items)\n if (it.t === \"L\")\n for (const p of [it.from, it.to]) {\n const d = dist(p, c);\n if (d > r1 + 0.5 || (r0 > 0 && d < r0 - 0.5)) return null;\n }\n const outline: Pt[] = [];\n for (const it of items) {\n if (it.t === \"L\") {\n outline.push(it.from, it.to);\n continue;\n }\n const sweep = it.a1 - it.a0;\n if (Math.abs(it.r - r1) <= 0.5) {\n // tangents outside the outer circle: the disc does the rounding\n const n = Math.max(1, Math.ceil(Math.abs(sweep) / (Math.PI / 4)));\n const step = sweep / n;\n const far = r1 / Math.cos(step / 2);\n outline.push(polar(cx, cy, r1, it.a0));\n for (let k = 0; k < n; k++) {\n outline.push(polar(cx, cy, far, it.a0 + (k + 0.5) * step));\n outline.push(polar(cx, cy, r1, it.a0 + (k + 1) * step));\n }\n } else {\n // chords inside the inner circle: the ring does the rounding\n const n = Math.max(1, Math.ceil(Math.abs(sweep) / (Math.PI / 2)));\n for (let k = 0; k <= n; k++)\n outline.push(polar(cx, cy, it.r, it.a0 + (sweep * k) / n));\n }\n }\n return { base: { t: \"disc\", cx, cy, r0, r1 }, outline };\n}\n\nconst ringBox = (\n cx: number,\n cy: number,\n r1: number,\n r0: number,\n color: string,\n): Prim => ({\n t: \"box\",\n x: cx - r1,\n y: cy - r1,\n w: r1 * 2,\n h: r1 * 2,\n radius: r1,\n ...(r0 > 0.25 ? { borderWidth: r1 - r0, borderColor: color } : { color }),\n});\n\n/**\n * A sector of a ring between two straight sides (pie slices, donut segments,\n * gauge arcs, with or without gaps): the ring clipped by the two sides (two\n * halves split on the bisector past half a turn). Corner roundings are\n * dropped. `null` when the outline is something else.\n */\nfunction wedgeViews(\n items: readonly Item[],\n base: Extract<Base, { t: \"disc\" }>,\n color: string,\n /** Grows the straight sides (round caps cover them) */\n grow = 0,\n): Prim[] | null {\n const { cx, cy, r0, r1 } = base;\n const c: Pt = [cx, cy];\n const arcs = items.filter((it): it is ArcItem => it.t === \"A\");\n const outer = arcs.filter((a) => Math.abs(a.r - r1) <= 0.5);\n const arc = outer[0];\n if (!arc || outer.length !== 1 || arcs.length - outer.length > 1) return null;\n const a0 = Math.min(arc.a0, arc.a1);\n const a1 = Math.max(arc.a0, arc.a1);\n const span = a1 - a0;\n if (span >= TAU - 1e-3) return null;\n // the straight sides: radial segments, by the end of the arc they are at\n const gap = (a: number, b: number) => {\n const d = Math.abs(a - b) % TAU;\n return Math.min(d, TAU - d);\n };\n let start: Extract<Item, { t: \"L\" }> | null = null;\n let end: Extract<Item, { t: \"L\" }> | null = null;\n const length = (s: Extract<Item, { t: \"L\" }>) => dist(s.from, s.to);\n for (const it of items) {\n if (it.t !== \"L\" || length(it) < 0.3) continue;\n const far = dist(it.from, c) > dist(it.to, c) ? it.from : it.to;\n const rf = dist(far, c);\n if (rf < 0.5) continue;\n const dx = (it.to[0] - it.from[0]) / length(it);\n const dy = (it.to[1] - it.from[1]) / length(it);\n const rx = (far[0] - cx) / rf;\n const ry = (far[1] - cy) / rf;\n if (Math.abs(dx * ry - dy * rx) > 0.14) continue; // not radial (8°)\n const phi = Math.atan2(far[1] - cy, far[0] - cx);\n if (gap(phi, a0) <= gap(phi, a1)) {\n if (!start || length(it) > length(start)) start = it;\n } else if (!end || length(it) > length(end)) end = it;\n }\n if (!start || !end) return null;\n const mid = (a0 + a1) / 2;\n const rm = r0 > 0 ? (r0 + r1) / 2 : r1 / 2;\n const probe = polar(cx, cy, rm, mid);\n const hs = planeOf(start.from, start.to, probe, grow);\n const he = planeOf(end.from, end.to, probe, grow);\n if (!hs || !he || side(hs, probe) <= 0 || side(he, probe) <= 0) return null;\n const extent = 2 * r1 + SEAM;\n if (span <= Math.PI - 1e-3)\n return clipViews([hs, he], base, color, probe, extent);\n // past half a turn: the halves on each side of the bisector\n const axis: Pt = [cx + Math.cos(mid), cy + Math.sin(mid)];\n const p1 = polar(cx, cy, rm, a0 + span / 4);\n const p2 = polar(cx, cy, rm, a1 - span / 4);\n const m1 = planeOf(c, axis, p1, SEAM);\n const m2 = planeOf(c, axis, p2, SEAM);\n if (!m1 || !m2) return null;\n return [\n ...clipViews([hs, m1], base, color, p1, extent),\n ...clipViews([he, m2], base, color, p2, extent),\n ];\n}\n\nconst roundBox = (r: RoundRect, color: string, shadow: boolean): Prim => ({\n t: \"box\",\n x: r.x,\n y: r.y,\n w: r.w,\n h: r.h,\n color,\n ...(r.r > 0 ? { radius: r.r } : null),\n ...(shadow ? { shadow } : null),\n});\n\nfunction piecesViews(\n pieces: readonly Piece[],\n base: Base,\n color: string,\n): Prim[] {\n const out: Prim[] = [];\n for (const piece of pieces.slice(0, MAX_PIECES))\n out.push(...pieceViews(piece, base, color));\n return out;\n}\n\n/** Views filling the subpaths with one opaque color (nonzero rule) */\nexport function regionViews(\n paths: readonly Subpath[],\n color: string,\n shadow = false,\n): Prim[] {\n const subs = paths\n .map((sub) => ({ start: [sub.x, sub.y] as Pt, items: itemsOf(sub, true) }))\n .filter((s) => s.items.length > 0);\n if (!subs.length) return [];\n\n // full circles: a disc, or a ring with the hole\n if (subs.every((s) => s.items.length === 1 && isFull(s.items[0]))) {\n const circles = subs.map((s) => s.items[0] as ArcItem);\n const [a, b] = circles;\n if (\n a &&\n b &&\n circles.length === 2 &&\n Math.hypot(a.cx - b.cx, a.cy - b.cy) < 0.5 &&\n Math.abs(a.r - b.r) > 0.25 &&\n a.a1 - a.a0 > 0 !== b.a1 - b.a0 > 0\n )\n return [\n ringBox(a.cx, a.cy, Math.max(a.r, b.r), Math.min(a.r, b.r), color),\n ];\n return circles.map((c) => ringBox(c.cx, c.cy, c.r, 0, color));\n }\n\n const firstSub = subs[0];\n if (subs.length === 1 && firstSub) {\n const box = asRoundRect(firstSub.items);\n if (box) return [roundBox(box, color, shadow)];\n const ring = asConcentric(firstSub.items);\n if (ring)\n return (\n wedgeViews(firstSub.items, ring.base, color) ??\n piecesViews(convexPieces(ring.outline), ring.base, color)\n );\n }\n\n const polys = subs.map((s) => flatten(s.items, s.start));\n // an outline and a hole wound the other way (radar rings)\n const [outer, hole] = polys;\n if (\n polys.length === 2 &&\n outer &&\n hole &&\n area(outer) * area(hole) < 0 &&\n contains(outer, hole)\n )\n return piecesViews(bandPieces(outer, hole), { t: \"plane\" }, color);\n const out: Prim[] = [];\n for (const poly of polys)\n out.push(...piecesViews(convexPieces(poly), { t: \"plane\" }, color));\n return out;\n}\n\nfunction contains(outer: readonly Pt[], inner: readonly Pt[]) {\n const box = (P: readonly Pt[]) => {\n let x0 = Infinity;\n let y0 = Infinity;\n let x1 = -Infinity;\n let y1 = -Infinity;\n for (const p of P) {\n x0 = Math.min(x0, p[0]);\n y0 = Math.min(y0, p[1]);\n x1 = Math.max(x1, p[0]);\n y1 = Math.max(y1, p[1]);\n }\n return { x0, y0, x1, y1 };\n };\n const a = box(outer);\n const b = box(inner);\n return (\n b.x0 >= a.x0 - 0.5 &&\n b.y0 >= a.y0 - 0.5 &&\n b.x1 <= a.x1 + 0.5 &&\n b.y1 <= a.y1 + 0.5\n );\n}\n\n// ---------------------------------------------------------------- strokes\n\n/** Splits a polyline into its dashes (canvas `setLineDash`) */\nexport function dashPolyline(\n points: readonly Pt[],\n dash: readonly number[],\n): Pt[][] {\n let pattern = dash.filter((v) => Number.isFinite(v) && v >= 0);\n if (pattern.length % 2) pattern = [...pattern, ...pattern];\n const period = pattern.reduce((a, b) => a + b, 0);\n if (!pattern.length || period <= 0) return [points.slice()];\n let total = 0;\n for (let i = 1; i < points.length; i++)\n total += dist(pt(points, i - 1), pt(points, i));\n // keeps the number of views bounded\n const scale = total / period > 300 ? total / period / 300 : 1;\n const out: Pt[][] = [];\n let k = 0;\n let left = (pattern[0] as number) * scale;\n let on = true;\n let run: Pt[] = [pt(points, 0)];\n for (let i = 1; i < points.length; i++) {\n let a = pt(points, i - 1);\n const b = pt(points, i);\n let len = dist(a, b);\n while (len > 1e-9) {\n const step = Math.min(left, len);\n const t = step / len;\n const p: Pt = [a[0] + (b[0] - a[0]) * t, a[1] + (b[1] - a[1]) * t];\n if (on) run.push(p);\n a = p;\n len -= step;\n left -= step;\n if (left <= 1e-9) {\n if (on && run.length > 1) out.push(run);\n on = !on;\n k = (k + 1) % pattern.length;\n left = Math.max((pattern[k] as number) * scale, on ? 0 : 0.5);\n run = [p];\n }\n }\n }\n if (on && run.length > 1) out.push(run);\n return out;\n}\n\nconst segmentBox = (\n a: Pt,\n b: Pt,\n width: number,\n color: string,\n cap: StrokeOp[\"cap\"],\n): Prim => {\n const extra = cap === \"butt\" ? 0 : width;\n const length = dist(a, b) + extra;\n return {\n t: \"box\",\n x: (a[0] + b[0]) / 2 - length / 2,\n y: (a[1] + b[1]) / 2 - width / 2,\n w: length,\n h: width,\n color,\n ...(cap === \"round\" ? { radius: width / 2 } : null),\n rotate: Math.atan2(b[1] - a[1], b[0] - a[0]),\n };\n};\n\nconst dotBox = (p: Pt, d: number, color: string): Prim => ({\n t: \"box\",\n x: p[0] - d / 2,\n y: p[1] - d / 2,\n w: d,\n h: d,\n radius: d / 2,\n color,\n});\n\n/** Views of a stroke; `colorAt` gives the opaque color around a point */\nfunction strokeViews(op: StrokeOp, colorAt: (p: Pt) => string): Prim[] {\n const w = op.width;\n const subs = op.paths\n .map((sub) => ({\n start: [sub.x, sub.y] as Pt,\n items: itemsOf(sub, sub.closed),\n closed: sub.closed,\n }))\n .filter((s) => s.items.length > 0);\n if (!subs.length || !(w > 0)) return [];\n const plain = !op.paint.gradient && op.dash.length === 0;\n const first = subs[0];\n if (plain && subs.length === 1 && first) {\n const { items } = first;\n const only = items[0];\n // a circle: a ring view\n if (items.length === 1 && only && isFull(only))\n return [\n ringBox(\n only.cx,\n only.cy,\n only.r + w / 2,\n Math.max(0, only.r - w / 2),\n colorAt([only.cx, only.cy]),\n ),\n ];\n // an arc: a band (the region of its outline), with its caps\n if (items.length === 1 && only?.t === \"A\") {\n const ro = only.r + w / 2;\n const ri = only.r - w / 2;\n const color = colorAt([only.cx, only.cy]);\n const band: Subpath = {\n ...pointAt(only.cx, only.cy, ro, only.a0),\n closed: true,\n segs: [\n { t: \"A\", cx: only.cx, cy: only.cy, r: ro, a0: only.a0, a1: only.a1 },\n ri > 0.25\n ? {\n t: \"A\",\n cx: only.cx,\n cy: only.cy,\n r: ri,\n a0: only.a1,\n a1: only.a0,\n }\n : { t: \"L\", x: only.cx, y: only.cy },\n ] as Segment[],\n };\n const round = op.cap === \"round\";\n const ring = asConcentric(itemsOf(band, true));\n const views =\n (ring &&\n wedgeViews(\n itemsOf(band, true),\n ring.base,\n color,\n round ? SEAM : 0,\n )) ||\n regionViews([band], color);\n if (round)\n views.push(\n dotBox(polar(only.cx, only.cy, only.r, only.a0), w, color),\n dotBox(polar(only.cx, only.cy, only.r, only.a1), w, color),\n );\n return views;\n }\n // a rounded rectangle: a bordered view\n if (first.closed) {\n const box = asRoundRect(items);\n if (box)\n return [\n {\n t: \"box\",\n x: box.x - w / 2,\n y: box.y - w / 2,\n w: box.w + w,\n h: box.h + w,\n radius: box.r > 0 ? box.r + w / 2 : 0,\n borderWidth: w,\n borderColor: colorAt([box.x, box.y]),\n },\n ];\n }\n }\n const out: Prim[] = [];\n for (const sub of subs) {\n const flat = flatten(sub.items, sub.start, 0.25);\n const line = dedupe(sub.closed ? [...flat, pt(flat, 0)] : flat, false);\n if (line.length < 2) continue;\n const runs = op.dash.length ? dashPolyline(line, op.dash) : [line];\n for (const run of runs) {\n const n = run.length;\n const closedRun = n > 2 && dist(pt(run, 0), pt(run, n - 1)) < 1e-3;\n // joins of butt-capped strokes: thin ones and sharp corners get a\n // round dot; the gentle bends of wide strokes (sankey links) extend\n // the segments over the gap instead (a dot as wide as the stroke would\n // bulge out of a curved ribbon)\n const extend = new Array<number>(n).fill(0);\n const dots: number[] = [];\n if (op.cap !== \"round\" && w >= 1.5)\n for (let i = closedRun ? 0 : 1; i < n - 1; i++) {\n const prev = pt(run, i === 0 ? n - 2 : i - 1);\n const at = pt(run, i);\n const next = pt(run, i + 1);\n const l1 = dist(prev, at);\n const l2 = dist(at, next);\n const cos =\n l1 > 1e-9 && l2 > 1e-9\n ? ((at[0] - prev[0]) * (next[0] - at[0]) +\n (at[1] - prev[1]) * (next[1] - at[1])) /\n (l1 * l2)\n : 1;\n const turn = Math.acos(Math.max(-1, Math.min(1, cos)));\n if (op.cap === \"butt\" && w >= 6 && turn < Math.PI / 4) {\n extend[i] = (w / 2) * Math.tan(turn / 2) + 0.5;\n if (i === 0) extend[n - 1] = extend[0] as number;\n } else dots.push(i);\n }\n for (let i = 1; i < n; i++) {\n let a = pt(run, i - 1);\n let b = pt(run, i);\n const length = dist(a, b);\n const e0 = extend[i - 1] as number;\n const e1 = extend[i] as number;\n if (length > 1e-9 && (e0 > 0 || e1 > 0)) {\n const ux = (b[0] - a[0]) / length;\n const uy = (b[1] - a[1]) / length;\n a = [a[0] - ux * e0, a[1] - uy * e0];\n b = [b[0] + ux * e1, b[1] + uy * e1];\n }\n const mid: Pt = [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2];\n out.push(segmentBox(a, b, w, colorAt(mid), op.cap));\n }\n for (const i of dots)\n out.push(dotBox(pt(run, i), w, colorAt(pt(run, i))));\n }\n }\n return out;\n}\n\nconst pointAt = (cx: number, cy: number, r: number, a: number) => {\n const [x, y] = polar(cx, cy, r, a);\n return { x, y };\n};\n\n// ------------------------------------------------------------------- ops\n\nconst wrap = (views: Prim[], opacity: number): Prim[] => {\n if (!views.length) return [];\n if (opacity >= 0.999) return views;\n return [{ t: \"group\", opacity, children: views }];\n};\n\nconst boundsCenter = (paths: readonly Subpath[]): Pt => {\n let x0 = Infinity;\n let y0 = Infinity;\n let x1 = -Infinity;\n let y1 = -Infinity;\n for (const sub of paths) {\n const grow = (x: number, y: number) => {\n x0 = Math.min(x0, x);\n y0 = Math.min(y0, y);\n x1 = Math.max(x1, x);\n y1 = Math.max(y1, y);\n };\n grow(sub.x, sub.y);\n for (const s of sub.segs) {\n if (s.t === \"L\") grow(s.x, s.y);\n else {\n grow(s.cx - s.r, s.cy - s.r);\n grow(s.cx + s.r, s.cy + s.r);\n }\n }\n }\n return Number.isFinite(x0) ? [(x0 + x1) / 2, (y0 + y1) / 2] : [0, 0];\n};\n\nfunction fillOp(op: FillOp): Prim[] {\n const color: Color = paintAt(op.paint, ...boundsCenter(op.paths));\n const opacity = color.a * op.alpha;\n if (opacity <= 0.002) return [];\n return wrap(regionViews(op.paths, opaqueCss(color), op.shadow), opacity);\n}\n\nfunction strokeOp(op: StrokeOp): Prim[] {\n const { paint } = op;\n let alpha = paint.color.a;\n if (paint.gradient?.stops.length)\n alpha = Math.max(...paint.gradient.stops.map((s) => s.color.a));\n const opacity = alpha * op.alpha;\n if (opacity <= 0.002) return [];\n const colorAt = (p: Pt) => {\n const c = paintAt(paint, p[0], p[1]);\n // gradient stops of different alphas: folded into the opaque color\n return paint.gradient && alpha > 0 && c.a < alpha - 1e-3\n ? cssWithAlpha(c, 1 / alpha)\n : opaqueCss(c);\n };\n return wrap(strokeViews(op, colorAt), opacity);\n}\n\nfunction textOp(op: TextOp): Prim[] {\n if (!op.text || op.alpha * op.color.a <= 0.002) return [];\n return [\n {\n t: \"text\",\n text: op.text,\n x: op.x,\n y: op.y,\n size: op.size,\n weight: op.weight,\n align: op.align,\n baseline: op.baseline,\n color: cssWithAlpha(op.color, op.alpha),\n rotate: op.rotate,\n ...(op.maxWidth !== undefined ? { maxWidth: op.maxWidth } : null),\n ...(op.halo ? { halo: cssWithAlpha(op.halo, op.alpha) } : null),\n },\n ];\n}\n\n/** Views of a recorded frame, in drawing order */\nexport function framePrims(ops: readonly DrawOp[]): Prim[] {\n const out: Prim[] = [];\n for (const op of ops) {\n if (op.kind === \"fill\") out.push(...fillOp(op));\n else if (op.kind === \"stroke\") out.push(...strokeOp(op));\n else out.push(...textOp(op));\n }\n return out;\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ const e=require("./charts.cjs");exports.BulletChart=e.BulletChart,exports.CalendarHeatmap=e.CalendarHeatmap,exports.DonutChart=e.DonutChart,exports.FunnelChart=e.FunnelChart,exports.GaugeChart=e.GaugeChart,exports.PieChart=e.PieChart,exports.RadarChart=e.RadarChart,exports.RadialBarChart=e.RadialBarChart,exports.SankeyChart=e.SankeyChart,exports.ShapeChart=e.ShapeChart,exports.SunburstChart=e.SunburstChart,exports.TreemapChart=e.TreemapChart;
@@ -0,0 +1,2 @@
1
+ export { BulletChart, CalendarHeatmap, DonutChart, FunnelChart, GaugeChart, PieChart, RadarChart, RadialBarChart, SankeyChart, ShapeChart, SunburstChart, TreemapChart, } from './charts.cjs';
2
+ export type * from './types.cjs';
@@ -0,0 +1,2 @@
1
+ export { BulletChart, CalendarHeatmap, DonutChart, FunnelChart, GaugeChart, PieChart, RadarChart, RadialBarChart, SankeyChart, ShapeChart, SunburstChart, TreemapChart, } from './charts.js';
2
+ export type * from './types.js';
@@ -0,0 +1,2 @@
1
+ import { BulletChart as e, CalendarHeatmap as t, DonutChart as n, FunnelChart as r, GaugeChart as i, PieChart as a, RadarChart as o, RadialBarChart as s, SankeyChart as c, ShapeChart as l, SunburstChart as u, TreemapChart as d } from "./charts.js";
2
+ export { e as BulletChart, t as CalendarHeatmap, n as DonutChart, r as FunnelChart, i as GaugeChart, a as PieChart, o as RadarChart, s as RadialBarChart, c as SankeyChart, l as ShapeChart, u as SunburstChart, d as TreemapChart };
@@ -0,0 +1,2 @@
1
+ const e=require("../Chart/measure.cjs");var t=Math.PI*2,n={r:0,g:0,b:0,a:1},r=e=>e<0?0:e>1?1:e,i={transparent:{r:0,g:0,b:0,a:0},black:n,white:{r:255,g:255,b:255,a:1}};function a(e){if(typeof e!=`string`)return n;let t=e.trim().toLowerCase(),a=i[t];if(a)return a;let o=/^rgba?\(([^)]*)\)$/.exec(t);if(o){let e=(o[1]??``).split(/[\s,/]+/).filter(Boolean).map(e=>e.endsWith(`%`)?parseFloat(e)/100*255:+e),[t=0,n=0,i=0]=e,a=e[3]??1,s=(o[1]??``).split(/[\s,/]+/).filter(Boolean)[3];if(s?.endsWith(`%`)&&(a=parseFloat(s)/100),[t,n,i,a].every(Number.isFinite))return{r:t,g:n,b:i,a:r(a)}}let s=/^#([0-9a-f]{3,8})$/.exec(t)?.[1];if(s&&s.length!==5&&s.length!==7){let e=s.length<=4,t=t=>parseInt(e?(s[t]??`f`)+(s[t]??`f`):s.slice(t*2,t*2+2)||`ff`,16),n=e?s.length:s.length/2;return{r:t(0),g:t(1),b:t(2),a:n===4?t(3)/255:1}}return{r:0,g:0,b:0,a:1,raw:e}}var o=e=>e.raw??`rgb(${Math.round(e.r)}, ${Math.round(e.g)}, ${Math.round(e.b)})`,s=(e,t)=>e.raw??`rgba(${Math.round(e.r)}, ${Math.round(e.g)}, ${Math.round(e.b)}, ${+r(e.a*t).toFixed(3)})`;function c(e,t,n){let i=e.gradient;if(!i||i.stops.length<2)return e.color;let a=i.x1-i.x0,o=i.y1-i.y0,s=a*a+o*o,c=s>0?r(((t-i.x0)*a+(n-i.y0)*o)/s):0,l=i.stops,u=0;for(;u<l.length-2&&(l[u+1]?.offset??1)<c;)u++;let d=l[u],f=l[u+1];if(!d||!f)return e.color;let p=f.offset-d.offset,m=p>0?r((c-d.offset)/p):0,h=(e,t)=>e+(t-e)*m;return d.color.raw||f.color.raw?m<.5?d.color:f.color:{r:h(d.color.r,f.color.r),g:h(d.color.g,f.color.g),b:h(d.color.b,f.color.b),a:h(d.color.a,f.color.a)}}var l=/^\s*(?:(?:italic|oblique|normal)\s+)?(?:(\d{3}|bold|normal)\s+)?([\d.]+)px/;function u(e){let t=l.exec(e),n=t?.[1],r=n===`bold`?700:n&&n!==`normal`?+n:400;return{size:t?Number(t[2]):10,weight:r}}var d=Symbol(`gradient`),f=e=>typeof e==`object`&&!!e&&d in e,p=e=>{if(f(e)){let t=e[d];return{color:t.stops[0]?.color??n,gradient:t}}return{color:a(e)}},m=e=>e.color.raw??`rgba(${e.color.r}, ${e.color.g}, ${e.color.b}, ${e.color.a})`,h=e=>e===`center`?`center`:e===`right`||e===`end`?`right`:`left`,g=e=>e===`top`||e===`hanging`?`top`:e===`middle`?`middle`:e===`bottom`||e===`ideographic`?`bottom`:`alphabetic`;function _(e,n,r){if(!r){if(n-e>=t)return t;let r=(n-e)%t;return r<0&&(r+=t),r}if(e-n>=t)return-t;let i=(e-n)%t;return i<0&&(i+=t),-i}function v(){let t=[],i=()=>({m:[1,0,0,1,0,0],alpha:1,fill:{color:n},stroke:{color:n},lineWidth:1,cap:`butt`,join:`miter`,font:`10px sans-serif`,align:`left`,baseline:`alphabetic`,dash:[],shadowColor:`rgba(0, 0, 0, 0)`,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0}),o=i(),s=[],c=[],l=null,f=null,v=null,y=(e,t)=>{let[n,r,i,a,s,c]=o.m;return[n*e+i*t+s,r*e+a*t+c]},b=()=>{let[e,t,n,r]=o.m;return Math.sqrt(Math.abs(e*r-t*n))||0},x=()=>Math.atan2(o.m[1],o.m[0]),S=e=>{let[t,n,r,i,a,s]=o.m;o.m=[t*e[0]+r*e[1],n*e[0]+i*e[1],t*e[2]+r*e[3],n*e[2]+i*e[3],t*e[4]+r*e[5]+a,n*e[4]+i*e[5]+s]},C=(e,t)=>{let[n,r]=y(e,t);l={x:n,y:r,segs:[],closed:!1},c.push(l),f=[e,t]},w=(e,t)=>{l||C(e,t)},T=(e,t)=>{if(!l){C(e,t);return}let[n,r]=y(e,t);l.segs.push({t:`L`,x:n,y:r}),f=[e,t]},E=(e,t,n,r,i,a=!1)=>{let o=_(r,i,a),s=e+n*Math.cos(r),c=t+n*Math.sin(r),u=e+n*Math.cos(r+o),d=t+n*Math.sin(r+o);if(l||C(s,c),n<=0||o===0){T(s,c);return}let[p,m]=y(e,t),h=x();l?.segs.push({t:`A`,cx:p,cy:m,r:n*b(),a0:r+h,a1:r+o+h}),f=[u,d]},D=(e,t)=>{for(let n=1;n<=t;n++){let[r,i]=e(n/t);T(r,i)}},O=e=>Math.max(2,Math.min(32,Math.ceil(e*b()/6))),k=e=>{let n=c.filter(e=>e.segs.length||e.closed);if(!n.length)return;let r=n.map(e=>({...e,segs:[...e.segs]}));if(e===`fill`){let e=o.shadowBlur>0&&a(o.shadowColor).a>0&&!a(o.shadowColor).raw;t.push({kind:`fill`,paths:r,paint:o.fill,alpha:o.alpha,shadow:e})}else t.push({kind:`stroke`,paths:r,paint:o.stroke,alpha:o.alpha,width:o.lineWidth*b(),cap:o.cap,join:o.join,dash:o.dash.map(e=>e*b())})},A=(e,t,n,r)=>{let[i,a]=y(t,n),{size:s,weight:c}=u(o.font),l=b();return{kind:`text`,text:String(e),x:i,y:a,size:s*l,weight:c,align:o.align,baseline:o.baseline,color:o.fill.color,alpha:o.alpha,rotate:x(),maxWidth:r!==void 0&&Number.isFinite(r)?r*l:void 0}},j={canvas:null,get globalAlpha(){return o.alpha},set globalAlpha(e){Number.isFinite(e)&&(o.alpha=r(e))},get fillStyle(){return o.fill.gradient?null:m(o.fill)},set fillStyle(e){o.fill=p(e)},get strokeStyle(){return o.stroke.gradient?null:m(o.stroke)},set strokeStyle(e){o.stroke=p(e)},get lineWidth(){return o.lineWidth},set lineWidth(e){Number.isFinite(e)&&e>0&&(o.lineWidth=e)},get lineCap(){return o.cap},set lineCap(e){o.cap=e===`round`?`round`:e===`square`?`square`:`butt`},get lineJoin(){return o.join},set lineJoin(e){o.join=e===`round`?`round`:e===`bevel`?`bevel`:`miter`},get font(){return o.font},set font(e){o.font=e},get textAlign(){return o.align},set textAlign(e){o.align=h(e)},get textBaseline(){return o.baseline},set textBaseline(e){o.baseline=g(e)},get shadowColor(){return o.shadowColor},set shadowColor(e){o.shadowColor=e},get shadowBlur(){return o.shadowBlur},set shadowBlur(e){o.shadowBlur=e},get shadowOffsetX(){return o.shadowOffsetX},set shadowOffsetX(e){o.shadowOffsetX=e},get shadowOffsetY(){return o.shadowOffsetY},set shadowOffsetY(e){o.shadowOffsetY=e},lineDashOffset:0,miterLimit:10,globalCompositeOperation:`source-over`,imageSmoothingEnabled:!0,direction:`inherit`,save(){s.push({...o,dash:[...o.dash]})},restore(){let e=s.pop();e&&(o=e)},setTransform(e,t=0,n=0,r=1,i=0,a=0){o.m=typeof e==`object`?[e.a,e.b,e.c,e.d,e.e,e.f]:[e,t,n,r,i,a]},resetTransform(){o.m=[1,0,0,1,0,0]},transform(e,t,n,r,i,a){S([e,t,n,r,i,a])},translate(e,t){S([1,0,0,1,e,t])},scale(e,t){S([e,0,0,t,0,0])},rotate(e){let t=Math.cos(e),n=Math.sin(e);S([t,n,-n,t,0,0])},beginPath(){c=[],l=null,f=null},closePath(){if(!l)return;l.closed=!0;let e=l;l={x:e.x,y:e.y,segs:[],closed:!1},c.push(l)},moveTo:C,lineTo:T,arc:E,ellipse(e,t,n,r,i,a,o,s=!1){if(Math.abs(n-r)<1e-6&&i===0){E(e,t,n,a,o,s);return}let c=_(a,o,s),u=Math.cos(i),d=Math.sin(i),f=i=>{let o=a+c*i,s=n*Math.cos(o),l=r*Math.sin(o);return[e+s*u-l*d,t+s*d+l*u]},[p,m]=f(0);l?T(p,m):C(p,m),D(f,O(Math.abs(c)*Math.max(n,r)))},arcTo(e,t,n,r,i){w(e,t);let[a,o]=f??[e,t],s=a-e,c=o-t,l=n-e,u=r-t,d=Math.hypot(s,c),p=Math.hypot(l,u),m=s*u-c*l;if(i<=0||d<1e-9||p<1e-9||Math.abs(m)<1e-9){T(e,t);return}let h=(s*l+c*u)/(d*p),g=Math.acos(Math.max(-1,Math.min(1,h)))/2,_=i/Math.tan(g),v=e+s/d*_,y=t+c/d*_,b=e+l/p*_,x=t+u/p*_,S=s/d+l/p,C=c/d+u/p,D=Math.hypot(S,C),O=i/Math.sin(g),k=e+S/D*O,A=t+C/D*O;T(v,y);let j=Math.atan2(y-A,v-k),M=Math.atan2(x-A,b-k);E(k,A,i,j,M,m>0)},quadraticCurveTo(e,t,n,r){w(e,t);let[i,a]=f??[e,t];D(o=>{let s=1-o;return[s*s*i+2*s*o*e+o*o*n,s*s*a+2*s*o*t+o*o*r]},O(Math.hypot(e-i,t-a)+Math.hypot(n-e,r-t)))},bezierCurveTo(e,t,n,r,i,a){w(e,t);let[o,s]=f??[e,t];D(c=>{let l=1-c,u=l*l*l,d=3*l*l*c,f=3*l*c*c,p=c*c*c;return[u*o+d*e+f*n+p*i,u*s+d*t+f*r+p*a]},O(Math.hypot(e-o,t-s)+Math.hypot(n-e,r-t)+Math.hypot(i-n,a-r)))},rect(e,t,n,r){C(e,t),T(e+n,t),T(e+n,t+r),T(e,t+r),j.closePath()},roundRect(e,t,n,r,i){let a=Math.max(0,Math.min(typeof i==`number`?i:Array.isArray(i)&&typeof i[0]==`number`?i[0]:0,Math.abs(n)/2,Math.abs(r)/2));if(a<=0){j.rect(e,t,n,r);return}C(e+a,t),j.arcTo(e+n,t,e+n,t+r,a),j.arcTo(e+n,t+r,e,t+r,a),j.arcTo(e,t+r,e,t,a),j.arcTo(e,t,e+n,t,a),j.closePath()},fill(){k(`fill`)},stroke(){k(`stroke`)},clip(){},fillRect(e,t,n,r){let i={paths:c,current:l,pen:f};c=[],j.rect(e,t,n,r),k(`fill`),{paths:c,current:l,pen:f}=i},strokeRect(e,t,n,r){let i={paths:c,current:l,pen:f};c=[],j.rect(e,t,n,r),k(`stroke`),{paths:c,current:l,pen:f}=i},clearRect(e,n,r,i){let[a,o]=y(e,n),[s,c]=y(e+r,n+i);a<=1&&o<=1&&s-a>1&&c-o>1&&(t=[],v=null)},fillText(e,n,r,i){let a=A(e,n,r,i),o=v;if(v=null,o&&o.text===a.text&&o.x===a.x&&o.y===a.y){let e=t.indexOf(o);e>=0&&t.splice(e,1),a.halo=o.color}t.push(a)},strokeText(e,n,r,i){let a={...A(e,n,r,i),color:o.stroke.color};v=a,t.push(a)},measureText(t){let n=e.measureChartText(String(t),o.font),{size:r}=u(o.font);return{width:n,actualBoundingBoxAscent:r*.8,actualBoundingBoxDescent:r*.2,actualBoundingBoxLeft:0,actualBoundingBoxRight:n,fontBoundingBoxAscent:r*.9,fontBoundingBoxDescent:r*.25}},setLineDash(e){o.dash=Array.isArray(e)?e.filter(e=>Number.isFinite(e)&&e>=0):[]},getLineDash(){return[...o.dash]},createLinearGradient(e,t,n,i){let[o,s]=y(e,t),[c,l]=y(n,i),u={x0:o,y0:s,x1:c,y1:l,stops:[]};return{[d]:u,addColorStop(e,t){u.stops.push({offset:r(e),color:a(t)}),u.stops.sort((e,t)=>e.offset-t.offset)}}},createRadialGradient(e,t){return j.createLinearGradient(e,t,e+1,t)},createConicGradient(e,t,n){return j.createLinearGradient(t,n,t+1,n)},createPattern(){return null},drawImage(){},isPointInPath(){return!1},isPointInStroke(){return!1},getTransform(){let[e,t,n,r,i,a]=o.m;return{a:e,b:t,c:n,d:r,e:i,f:a}},reset(){o=i(),s.length=0,c=[],l=null,f=null,t=[]}};return{context:j,ops:()=>t}}exports.arcSweep=_,exports.createRecorder=v,exports.cssWithAlpha=s,exports.opaqueCss=o,exports.paintAt=c,exports.parseColor=a,exports.parseFont=u;
2
+ //# sourceMappingURL=recorder.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder.cjs","names":["measureChartText","require_measure","TAU","BLACK","clamp01","v","NAMED","parseColor","value","s","named","fn","parts","p","r","g","b","alphaText","hex","short","at","i","opaqueCss","c","cssWithAlpha","alpha","paintAt","paint","dx","dy","len2","t","x","y","stops","a","span","k","mix","u","FONT","parseFont","match","font","w","weight","GRADIENT","isGradient","toPaint","gradient","fromPaint","normalizeTextAlign","normalizeBaseline","arcSweep","ccw","end","start","createRecorder","frame","initial","state","stack","paths","current","pen","pendingHalo","map","d","e","f","scaleOf","rotationOf","multiply","n","moveTo","px","py","ensure","lineTo","arc","sweep","sx","sy","ex","ey","cx","cy","rot","curve","steps","point","curveSteps","length","list","copy","kind","shadow","text","size","maxWidth","context","previous","cos","angle","sin","rx","ry","rotation","x1","y1","x0","y0","ax","ay","bx","x2","by","y2","la","lb","cross","half","dist","t0x","t0y","t1x","t1y","ux","uy","lu","cd","a0","a1","cpx","cpy","c1x","c1y","c2x","c2y","h","radii","saved","op","halo","width","segments","offset","color","q"],"sources":["../../../../../native/src/components/ShapeChart/recorder.ts"],"sourcesContent":["// A Canvas2D context that records instead of painting. The shape chart\n// engine (@minerva/charts/canvas: layouts, animations, legend, tooltip,\n// hover dimming, events) draws its frames on it; ./geometry turns the\n// recorded fills, strokes and texts into views. Paths are stored in chart\n// pixels (the current transform applied); arcs stay arcs so that circles,\n// rings and sectors become exact rounded views.\n\nimport { measureChartText } from \"../Chart/measure\";\n\n/** A color: channels 0-255, alpha 0-1 (`raw`: a CSS color that could not be parsed) */\nexport interface Color {\n r: number;\n g: number;\n b: number;\n a: number;\n raw?: string;\n}\n\n/** A linear gradient in chart pixels */\nexport interface Gradient {\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n stops: { offset: number; color: Color }[];\n}\n\n/** Fill or stroke style: a color, or a gradient (and its first color) */\nexport interface Paint {\n color: Color;\n gradient?: Gradient;\n}\n\n/** Straight segment to (x, y), or arc (implicitly joined by a segment to its start) */\nexport type Segment =\n | { t: \"L\"; x: number; y: number }\n | {\n t: \"A\";\n cx: number;\n cy: number;\n r: number;\n /** Start angle and end angle (`a1 - a0` is the signed sweep) */\n a0: number;\n a1: number;\n };\n\nexport interface Subpath {\n x: number;\n y: number;\n segs: Segment[];\n closed: boolean;\n}\n\nexport interface FillOp {\n kind: \"fill\";\n paths: Subpath[];\n paint: Paint;\n alpha: number;\n /** Drawn with a shadow */\n shadow: boolean;\n}\n\nexport interface StrokeOp {\n kind: \"stroke\";\n paths: Subpath[];\n paint: Paint;\n alpha: number;\n width: number;\n cap: \"butt\" | \"round\" | \"square\";\n join: \"round\" | \"bevel\" | \"miter\";\n dash: number[];\n}\n\nexport interface TextOp {\n kind: \"text\";\n text: string;\n x: number;\n y: number;\n size: number;\n weight: number;\n align: \"left\" | \"center\" | \"right\";\n baseline: \"top\" | \"middle\" | \"bottom\" | \"alphabetic\";\n color: Color;\n alpha: number;\n /** Rotation around (x, y), radians clockwise */\n rotate: number;\n maxWidth?: number;\n /** Outline color (`strokeText` under the same text) */\n halo?: Color;\n}\n\nexport type DrawOp = FillOp | StrokeOp | TextOp;\n\nconst TAU = Math.PI * 2;\nconst BLACK: Color = { r: 0, g: 0, b: 0, a: 1 };\n\nconst clamp01 = (v: number) => (v < 0 ? 0 : v > 1 ? 1 : v);\n\nconst NAMED: Record<string, Color> = {\n transparent: { r: 0, g: 0, b: 0, a: 0 },\n black: BLACK,\n white: { r: 255, g: 255, b: 255, a: 1 },\n};\n\n/** Parses the colors the engine produces: `rgba()`, `rgb()`, `#hex` */\nexport function parseColor(value: unknown): Color {\n if (typeof value !== \"string\") return BLACK;\n const s = value.trim().toLowerCase();\n const named = NAMED[s];\n if (named) return named;\n const fn = /^rgba?\\(([^)]*)\\)$/.exec(s);\n if (fn) {\n const parts = (fn[1] ?? \"\")\n .split(/[\\s,/]+/)\n .filter(Boolean)\n .map((p) => (p.endsWith(\"%\") ? (parseFloat(p) / 100) * 255 : +p));\n const [r = 0, g = 0, b = 0] = parts;\n let a = parts[3] ?? 1;\n const alphaText = (fn[1] ?? \"\").split(/[\\s,/]+/).filter(Boolean)[3];\n if (alphaText?.endsWith(\"%\")) a = parseFloat(alphaText) / 100;\n if ([r, g, b, a].every(Number.isFinite)) return { r, g, b, a: clamp01(a) };\n }\n const hex = /^#([0-9a-f]{3,8})$/.exec(s)?.[1];\n if (hex && hex.length !== 5 && hex.length !== 7) {\n const short = hex.length <= 4;\n const at = (i: number) =>\n short\n ? parseInt((hex[i] ?? \"f\") + (hex[i] ?? \"f\"), 16)\n : parseInt(hex.slice(i * 2, i * 2 + 2) || \"ff\", 16);\n const n = short ? hex.length : hex.length / 2;\n return { r: at(0), g: at(1), b: at(2), a: n === 4 ? at(3) / 255 : 1 };\n }\n return { r: 0, g: 0, b: 0, a: 1, raw: value };\n}\n\n/** Opaque CSS color (the alpha goes to an `opacity`) */\nexport const opaqueCss = (c: Color) =>\n c.raw ?? `rgb(${Math.round(c.r)}, ${Math.round(c.g)}, ${Math.round(c.b)})`;\n\n/** CSS color with an extra alpha */\nexport const cssWithAlpha = (c: Color, alpha: number) =>\n c.raw ??\n `rgba(${Math.round(c.r)}, ${Math.round(c.g)}, ${Math.round(c.b)}, ${+clamp01(c.a * alpha).toFixed(3)})`;\n\n/** Color of a paint at a point (gradients: projected on their axis) */\nexport function paintAt(paint: Paint, x: number, y: number): Color {\n const g = paint.gradient;\n if (!g || g.stops.length < 2) return paint.color;\n const dx = g.x1 - g.x0;\n const dy = g.y1 - g.y0;\n const len2 = dx * dx + dy * dy;\n const t = len2 > 0 ? clamp01(((x - g.x0) * dx + (y - g.y0) * dy) / len2) : 0;\n const stops = g.stops;\n let i = 0;\n while (i < stops.length - 2 && (stops[i + 1]?.offset ?? 1) < t) i++;\n const a = stops[i];\n const b = stops[i + 1];\n if (!a || !b) return paint.color;\n const span = b.offset - a.offset;\n const k = span > 0 ? clamp01((t - a.offset) / span) : 0;\n const mix = (u: number, v: number) => u + (v - u) * k;\n if (a.color.raw || b.color.raw) return k < 0.5 ? a.color : b.color;\n return {\n r: mix(a.color.r, b.color.r),\n g: mix(a.color.g, b.color.g),\n b: mix(a.color.b, b.color.b),\n a: mix(a.color.a, b.color.a),\n };\n}\n\ntype Matrix = [number, number, number, number, number, number];\n\ninterface State {\n m: Matrix;\n alpha: number;\n fill: Paint;\n stroke: Paint;\n lineWidth: number;\n cap: StrokeOp[\"cap\"];\n join: StrokeOp[\"join\"];\n font: string;\n align: TextOp[\"align\"];\n baseline: TextOp[\"baseline\"];\n dash: number[];\n shadowColor: string;\n shadowBlur: number;\n shadowOffsetX: number;\n shadowOffsetY: number;\n}\n\nconst FONT =\n /^\\s*(?:(?:italic|oblique|normal)\\s+)?(?:(\\d{3}|bold|normal)\\s+)?([\\d.]+)px/;\n\n/** Size (px) and weight of a CSS font */\nexport function parseFont(font: string): { size: number; weight: number } {\n const match = FONT.exec(font);\n const w = match?.[1];\n const weight = w === \"bold\" ? 700 : w && w !== \"normal\" ? +w : 400;\n return { size: match ? Number(match[2]) : 10, weight };\n}\n\nconst GRADIENT = Symbol(\"gradient\");\n\ninterface RecordedGradient {\n [GRADIENT]: Gradient;\n addColorStop(offset: number, color: string): void;\n}\n\nconst isGradient = (v: unknown): v is RecordedGradient =>\n typeof v === \"object\" && v !== null && GRADIENT in v;\n\nconst toPaint = (value: unknown): Paint => {\n if (isGradient(value)) {\n const gradient = value[GRADIENT];\n return { color: gradient.stops[0]?.color ?? BLACK, gradient };\n }\n return { color: parseColor(value) };\n};\n\nconst fromPaint = (paint: Paint): unknown =>\n paint.color.raw ??\n `rgba(${paint.color.r}, ${paint.color.g}, ${paint.color.b}, ${paint.color.a})`;\n\nconst normalizeTextAlign = (v: string): TextOp[\"align\"] =>\n v === \"center\" ? \"center\" : v === \"right\" || v === \"end\" ? \"right\" : \"left\";\n\nconst normalizeBaseline = (v: string): TextOp[\"baseline\"] =>\n v === \"top\" || v === \"hanging\"\n ? \"top\"\n : v === \"middle\"\n ? \"middle\"\n : v === \"bottom\" || v === \"ideographic\"\n ? \"bottom\"\n : \"alphabetic\";\n\n/** Signed sweep of a canvas `arc()` */\nexport function arcSweep(start: number, end: number, ccw: boolean): number {\n if (!ccw) {\n if (end - start >= TAU) return TAU;\n let s = (end - start) % TAU;\n if (s < 0) s += TAU;\n return s;\n }\n if (start - end >= TAU) return -TAU;\n let s = (start - end) % TAU;\n if (s < 0) s += TAU;\n return -s;\n}\n\nexport interface Recorder {\n /** The 2D context handed to the engine */\n readonly context: unknown;\n /** Operations of the last frame (a new array per frame) */\n ops(): DrawOp[];\n}\n\n/**\n * Records the drawing calls of a Canvas2D context. `clearRect` of the whole\n * canvas starts a new frame.\n */\nexport function createRecorder(): Recorder {\n let frame: DrawOp[] = [];\n const initial = (): State => ({\n m: [1, 0, 0, 1, 0, 0],\n alpha: 1,\n fill: { color: BLACK },\n stroke: { color: BLACK },\n lineWidth: 1,\n cap: \"butt\",\n join: \"miter\",\n font: \"10px sans-serif\",\n align: \"left\",\n baseline: \"alphabetic\",\n dash: [],\n shadowColor: \"rgba(0, 0, 0, 0)\",\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n });\n let state = initial();\n const stack: State[] = [];\n let paths: Subpath[] = [];\n let current: Subpath | null = null;\n let pen: [number, number] | null = null;\n let pendingHalo: TextOp | null = null;\n\n const map = (x: number, y: number): [number, number] => {\n const [a, b, c, d, e, f] = state.m;\n return [a * x + c * y + e, b * x + d * y + f];\n };\n /** Uniform scale and rotation of the transform */\n const scaleOf = () => {\n const [a, b, c, d] = state.m;\n return Math.sqrt(Math.abs(a * d - b * c)) || 0;\n };\n const rotationOf = () => Math.atan2(state.m[1], state.m[0]);\n const multiply = (n: Matrix) => {\n const [a, b, c, d, e, f] = state.m;\n state.m = [\n a * n[0] + c * n[1],\n b * n[0] + d * n[1],\n a * n[2] + c * n[3],\n b * n[2] + d * n[3],\n a * n[4] + c * n[5] + e,\n b * n[4] + d * n[5] + f,\n ];\n };\n\n const moveTo = (x: number, y: number) => {\n const [px, py] = map(x, y);\n current = { x: px, y: py, segs: [], closed: false };\n paths.push(current);\n pen = [x, y];\n };\n const ensure = (x: number, y: number) => {\n if (!current) moveTo(x, y);\n };\n const lineTo = (x: number, y: number) => {\n if (!current) {\n moveTo(x, y);\n return;\n }\n const [px, py] = map(x, y);\n current.segs.push({ t: \"L\", x: px, y: py });\n pen = [x, y];\n };\n const arc = (\n x: number,\n y: number,\n r: number,\n start: number,\n end: number,\n ccw = false,\n ) => {\n const sweep = arcSweep(start, end, ccw);\n const sx = x + r * Math.cos(start);\n const sy = y + r * Math.sin(start);\n const ex = x + r * Math.cos(start + sweep);\n const ey = y + r * Math.sin(start + sweep);\n if (!current) moveTo(sx, sy);\n if (r <= 0 || sweep === 0) {\n lineTo(sx, sy);\n return;\n }\n const [cx, cy] = map(x, y);\n const rot = rotationOf();\n current?.segs.push({\n t: \"A\",\n cx,\n cy,\n r: r * scaleOf(),\n a0: start + rot,\n a1: start + sweep + rot,\n });\n pen = [ex, ey];\n };\n const curve = (point: (t: number) => [number, number], steps: number) => {\n for (let i = 1; i <= steps; i++) {\n const [x, y] = point(i / steps);\n lineTo(x, y);\n }\n };\n /** Segments of a flattened curve: ~6px each, 2 for the small corner roundings */\n const curveSteps = (length: number) =>\n Math.max(2, Math.min(32, Math.ceil((length * scaleOf()) / 6)));\n\n const paint = (kind: \"fill\" | \"stroke\") => {\n const list = paths.filter((p) => p.segs.length || p.closed);\n if (!list.length) return;\n // a copy: the engine may keep drawing on the same path\n const copy = list.map((p) => ({ ...p, segs: [...p.segs] }));\n if (kind === \"fill\") {\n const shadow =\n state.shadowBlur > 0 &&\n parseColor(state.shadowColor).a > 0 &&\n !parseColor(state.shadowColor).raw;\n frame.push({\n kind: \"fill\",\n paths: copy,\n paint: state.fill,\n alpha: state.alpha,\n shadow,\n });\n } else {\n frame.push({\n kind: \"stroke\",\n paths: copy,\n paint: state.stroke,\n alpha: state.alpha,\n width: state.lineWidth * scaleOf(),\n cap: state.cap,\n join: state.join,\n dash: state.dash.map((v) => v * scaleOf()),\n });\n }\n };\n\n const text = (value: string, x: number, y: number, maxWidth?: number) => {\n const [px, py] = map(x, y);\n const { size, weight } = parseFont(state.font);\n const s = scaleOf();\n return {\n kind: \"text\" as const,\n text: String(value),\n x: px,\n y: py,\n size: size * s,\n weight,\n align: state.align,\n baseline: state.baseline,\n color: state.fill.color,\n alpha: state.alpha,\n rotate: rotationOf(),\n maxWidth:\n maxWidth !== undefined && Number.isFinite(maxWidth)\n ? maxWidth * s\n : undefined,\n };\n };\n\n const context = {\n canvas: null,\n get globalAlpha() {\n return state.alpha;\n },\n set globalAlpha(v: number) {\n if (Number.isFinite(v)) state.alpha = clamp01(v);\n },\n get fillStyle(): unknown {\n return state.fill.gradient ? null : fromPaint(state.fill);\n },\n set fillStyle(v: unknown) {\n state.fill = toPaint(v);\n },\n get strokeStyle(): unknown {\n return state.stroke.gradient ? null : fromPaint(state.stroke);\n },\n set strokeStyle(v: unknown) {\n state.stroke = toPaint(v);\n },\n get lineWidth() {\n return state.lineWidth;\n },\n set lineWidth(v: number) {\n if (Number.isFinite(v) && v > 0) state.lineWidth = v;\n },\n get lineCap() {\n return state.cap;\n },\n set lineCap(v: string) {\n state.cap = v === \"round\" ? \"round\" : v === \"square\" ? \"square\" : \"butt\";\n },\n get lineJoin() {\n return state.join;\n },\n set lineJoin(v: string) {\n state.join = v === \"round\" ? \"round\" : v === \"bevel\" ? \"bevel\" : \"miter\";\n },\n get font() {\n return state.font;\n },\n set font(v: string) {\n state.font = v;\n },\n get textAlign() {\n return state.align;\n },\n set textAlign(v: string) {\n state.align = normalizeTextAlign(v);\n },\n get textBaseline() {\n return state.baseline;\n },\n set textBaseline(v: string) {\n state.baseline = normalizeBaseline(v);\n },\n get shadowColor() {\n return state.shadowColor;\n },\n set shadowColor(v: string) {\n state.shadowColor = v;\n },\n get shadowBlur() {\n return state.shadowBlur;\n },\n set shadowBlur(v: number) {\n state.shadowBlur = v;\n },\n get shadowOffsetX() {\n return state.shadowOffsetX;\n },\n set shadowOffsetX(v: number) {\n state.shadowOffsetX = v;\n },\n get shadowOffsetY() {\n return state.shadowOffsetY;\n },\n set shadowOffsetY(v: number) {\n state.shadowOffsetY = v;\n },\n lineDashOffset: 0,\n miterLimit: 10,\n globalCompositeOperation: \"source-over\",\n imageSmoothingEnabled: true,\n direction: \"inherit\",\n save() {\n stack.push({ ...state, dash: [...state.dash] });\n },\n restore() {\n const previous = stack.pop();\n if (previous) state = previous;\n },\n setTransform(\n a:\n | number\n | { a: number; b: number; c: number; d: number; e: number; f: number },\n b = 0,\n c = 0,\n d = 1,\n e = 0,\n f = 0,\n ) {\n state.m =\n typeof a === \"object\"\n ? [a.a, a.b, a.c, a.d, a.e, a.f]\n : [a, b, c, d, e, f];\n },\n resetTransform() {\n state.m = [1, 0, 0, 1, 0, 0];\n },\n transform(\n a: number,\n b: number,\n c: number,\n d: number,\n e: number,\n f: number,\n ) {\n multiply([a, b, c, d, e, f]);\n },\n translate(x: number, y: number) {\n multiply([1, 0, 0, 1, x, y]);\n },\n scale(x: number, y: number) {\n multiply([x, 0, 0, y, 0, 0]);\n },\n rotate(angle: number) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n multiply([cos, sin, -sin, cos, 0, 0]);\n },\n beginPath() {\n paths = [];\n current = null;\n pen = null;\n },\n closePath() {\n if (!current) return;\n current.closed = true;\n const start = current;\n // drawing goes on from the start of the closed subpath\n current = { x: start.x, y: start.y, segs: [], closed: false };\n paths.push(current);\n },\n moveTo,\n lineTo,\n arc,\n ellipse(\n x: number,\n y: number,\n rx: number,\n ry: number,\n rotation: number,\n start: number,\n end: number,\n ccw = false,\n ) {\n if (Math.abs(rx - ry) < 1e-6 && rotation === 0) {\n arc(x, y, rx, start, end, ccw);\n return;\n }\n const sweep = arcSweep(start, end, ccw);\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const at = (t: number): [number, number] => {\n const a = start + sweep * t;\n const ex = rx * Math.cos(a);\n const ey = ry * Math.sin(a);\n return [x + ex * cos - ey * sin, y + ex * sin + ey * cos];\n };\n const [sx, sy] = at(0);\n if (!current) moveTo(sx, sy);\n else lineTo(sx, sy);\n curve(at, curveSteps(Math.abs(sweep) * Math.max(rx, ry)));\n },\n arcTo(x1: number, y1: number, x2: number, y2: number, r: number) {\n ensure(x1, y1);\n const [x0, y0] = pen ?? [x1, y1];\n const ax = x0 - x1;\n const ay = y0 - y1;\n const bx = x2 - x1;\n const by = y2 - y1;\n const la = Math.hypot(ax, ay);\n const lb = Math.hypot(bx, by);\n const cross = ax * by - ay * bx;\n if (r <= 0 || la < 1e-9 || lb < 1e-9 || Math.abs(cross) < 1e-9) {\n lineTo(x1, y1);\n return;\n }\n const cos = (ax * bx + ay * by) / (la * lb);\n const half = Math.acos(Math.max(-1, Math.min(1, cos))) / 2;\n const dist = r / Math.tan(half);\n const t0x = x1 + (ax / la) * dist;\n const t0y = y1 + (ay / la) * dist;\n const t1x = x1 + (bx / lb) * dist;\n const t1y = y1 + (by / lb) * dist;\n // center: along the bisector, at r / sin(half)\n const ux = ax / la + bx / lb;\n const uy = ay / la + by / lb;\n const lu = Math.hypot(ux, uy);\n const cd = r / Math.sin(half);\n const cx = x1 + (ux / lu) * cd;\n const cy = y1 + (uy / lu) * cd;\n lineTo(t0x, t0y);\n const a0 = Math.atan2(t0y - cy, t0x - cx);\n const a1 = Math.atan2(t1y - cy, t1x - cx);\n arc(cx, cy, r, a0, a1, cross > 0);\n },\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n ensure(cpx, cpy);\n const [x0, y0] = pen ?? [cpx, cpy];\n curve(\n (t) => {\n const u = 1 - t;\n return [\n u * u * x0 + 2 * u * t * cpx + t * t * x,\n u * u * y0 + 2 * u * t * cpy + t * t * y,\n ];\n },\n curveSteps(\n Math.hypot(cpx - x0, cpy - y0) + Math.hypot(x - cpx, y - cpy),\n ),\n );\n },\n bezierCurveTo(\n c1x: number,\n c1y: number,\n c2x: number,\n c2y: number,\n x: number,\n y: number,\n ) {\n ensure(c1x, c1y);\n const [x0, y0] = pen ?? [c1x, c1y];\n curve(\n (t) => {\n const u = 1 - t;\n const a = u * u * u;\n const b = 3 * u * u * t;\n const c = 3 * u * t * t;\n const d = t * t * t;\n return [\n a * x0 + b * c1x + c * c2x + d * x,\n a * y0 + b * c1y + c * c2y + d * y,\n ];\n },\n curveSteps(\n Math.hypot(c1x - x0, c1y - y0) +\n Math.hypot(c2x - c1x, c2y - c1y) +\n Math.hypot(x - c2x, y - c2y),\n ),\n );\n },\n rect(x: number, y: number, w: number, h: number) {\n moveTo(x, y);\n lineTo(x + w, y);\n lineTo(x + w, y + h);\n lineTo(x, y + h);\n context.closePath();\n },\n roundRect(x: number, y: number, w: number, h: number, radii?: unknown) {\n const r = Math.max(\n 0,\n Math.min(\n typeof radii === \"number\"\n ? radii\n : Array.isArray(radii) && typeof radii[0] === \"number\"\n ? radii[0]\n : 0,\n Math.abs(w) / 2,\n Math.abs(h) / 2,\n ),\n );\n if (r <= 0) {\n context.rect(x, y, w, h);\n return;\n }\n moveTo(x + r, y);\n context.arcTo(x + w, y, x + w, y + h, r);\n context.arcTo(x + w, y + h, x, y + h, r);\n context.arcTo(x, y + h, x, y, r);\n context.arcTo(x, y, x + w, y, r);\n context.closePath();\n },\n fill() {\n paint(\"fill\");\n },\n stroke() {\n paint(\"stroke\");\n },\n clip() {\n // views are not clipped by paths (the engine only clips decorations)\n },\n fillRect(x: number, y: number, w: number, h: number) {\n const saved = { paths, current, pen };\n paths = [];\n context.rect(x, y, w, h);\n paint(\"fill\");\n ({ paths, current, pen } = saved);\n },\n strokeRect(x: number, y: number, w: number, h: number) {\n const saved = { paths, current, pen };\n paths = [];\n context.rect(x, y, w, h);\n paint(\"stroke\");\n ({ paths, current, pen } = saved);\n },\n clearRect(x: number, y: number, w: number, h: number) {\n const [x0, y0] = map(x, y);\n const [x1, y1] = map(x + w, y + h);\n // clearing (most of) the canvas starts a frame\n if (x0 <= 1 && y0 <= 1 && x1 - x0 > 1 && y1 - y0 > 1) {\n frame = [];\n pendingHalo = null;\n }\n },\n fillText(value: string, x: number, y: number, maxWidth?: number) {\n const op: TextOp = text(value, x, y, maxWidth);\n const halo = pendingHalo;\n pendingHalo = null;\n if (halo && halo.text === op.text && halo.x === op.x && halo.y === op.y) {\n const at = frame.indexOf(halo);\n if (at >= 0) frame.splice(at, 1);\n op.halo = halo.color;\n }\n frame.push(op);\n },\n strokeText(value: string, x: number, y: number, maxWidth?: number) {\n const op: TextOp = {\n ...text(value, x, y, maxWidth),\n color: state.stroke.color,\n };\n pendingHalo = op;\n frame.push(op);\n },\n measureText(value: string) {\n const width = measureChartText(String(value), state.font);\n const { size } = parseFont(state.font);\n return {\n width,\n actualBoundingBoxAscent: size * 0.8,\n actualBoundingBoxDescent: size * 0.2,\n actualBoundingBoxLeft: 0,\n actualBoundingBoxRight: width,\n fontBoundingBoxAscent: size * 0.9,\n fontBoundingBoxDescent: size * 0.25,\n };\n },\n setLineDash(segments: number[]) {\n state.dash = Array.isArray(segments)\n ? segments.filter((v) => Number.isFinite(v) && v >= 0)\n : [];\n },\n getLineDash() {\n return [...state.dash];\n },\n createLinearGradient(x0: number, y0: number, x1: number, y1: number) {\n const [ax, ay] = map(x0, y0);\n const [bx, by] = map(x1, y1);\n const gradient: Gradient = { x0: ax, y0: ay, x1: bx, y1: by, stops: [] };\n const recorded: RecordedGradient = {\n [GRADIENT]: gradient,\n addColorStop(offset: number, color: string) {\n gradient.stops.push({\n offset: clamp01(offset),\n color: parseColor(color),\n });\n gradient.stops.sort((p, q) => p.offset - q.offset);\n },\n };\n return recorded;\n },\n createRadialGradient(x0: number, y0: number) {\n // approximated by its colors along x\n return context.createLinearGradient(x0, y0, x0 + 1, y0);\n },\n createConicGradient(_angle: number, x: number, y: number) {\n return context.createLinearGradient(x, y, x + 1, y);\n },\n createPattern() {\n return null;\n },\n drawImage() {\n // not supported by views\n },\n isPointInPath() {\n return false;\n },\n isPointInStroke() {\n return false;\n },\n getTransform() {\n const [a, b, c, d, e, f] = state.m;\n return { a, b, c, d, e, f };\n },\n reset() {\n state = initial();\n stack.length = 0;\n paths = [];\n current = null;\n pen = null;\n frame = [];\n },\n };\n\n return {\n context,\n ops: () => frame,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /** A color: channels 0-255, alpha 0-1 (`raw`: a CSS color that could not be parsed) */
2
+ export interface Color {
3
+ r: number;
4
+ g: number;
5
+ b: number;
6
+ a: number;
7
+ raw?: string;
8
+ }
9
+ /** A linear gradient in chart pixels */
10
+ export interface Gradient {
11
+ x0: number;
12
+ y0: number;
13
+ x1: number;
14
+ y1: number;
15
+ stops: {
16
+ offset: number;
17
+ color: Color;
18
+ }[];
19
+ }
20
+ /** Fill or stroke style: a color, or a gradient (and its first color) */
21
+ export interface Paint {
22
+ color: Color;
23
+ gradient?: Gradient;
24
+ }
25
+ /** Straight segment to (x, y), or arc (implicitly joined by a segment to its start) */
26
+ export type Segment = {
27
+ t: "L";
28
+ x: number;
29
+ y: number;
30
+ } | {
31
+ t: "A";
32
+ cx: number;
33
+ cy: number;
34
+ r: number;
35
+ /** Start angle and end angle (`a1 - a0` is the signed sweep) */
36
+ a0: number;
37
+ a1: number;
38
+ };
39
+ export interface Subpath {
40
+ x: number;
41
+ y: number;
42
+ segs: Segment[];
43
+ closed: boolean;
44
+ }
45
+ export interface FillOp {
46
+ kind: "fill";
47
+ paths: Subpath[];
48
+ paint: Paint;
49
+ alpha: number;
50
+ /** Drawn with a shadow */
51
+ shadow: boolean;
52
+ }
53
+ export interface StrokeOp {
54
+ kind: "stroke";
55
+ paths: Subpath[];
56
+ paint: Paint;
57
+ alpha: number;
58
+ width: number;
59
+ cap: "butt" | "round" | "square";
60
+ join: "round" | "bevel" | "miter";
61
+ dash: number[];
62
+ }
63
+ export interface TextOp {
64
+ kind: "text";
65
+ text: string;
66
+ x: number;
67
+ y: number;
68
+ size: number;
69
+ weight: number;
70
+ align: "left" | "center" | "right";
71
+ baseline: "top" | "middle" | "bottom" | "alphabetic";
72
+ color: Color;
73
+ alpha: number;
74
+ /** Rotation around (x, y), radians clockwise */
75
+ rotate: number;
76
+ maxWidth?: number;
77
+ /** Outline color (`strokeText` under the same text) */
78
+ halo?: Color;
79
+ }
80
+ export type DrawOp = FillOp | StrokeOp | TextOp;
81
+ /** Parses the colors the engine produces: `rgba()`, `rgb()`, `#hex` */
82
+ export declare function parseColor(value: unknown): Color;
83
+ /** Opaque CSS color (the alpha goes to an `opacity`) */
84
+ export declare const opaqueCss: (c: Color) => string;
85
+ /** CSS color with an extra alpha */
86
+ export declare const cssWithAlpha: (c: Color, alpha: number) => string;
87
+ /** Color of a paint at a point (gradients: projected on their axis) */
88
+ export declare function paintAt(paint: Paint, x: number, y: number): Color;
89
+ /** Size (px) and weight of a CSS font */
90
+ export declare function parseFont(font: string): {
91
+ size: number;
92
+ weight: number;
93
+ };
94
+ /** Signed sweep of a canvas `arc()` */
95
+ export declare function arcSweep(start: number, end: number, ccw: boolean): number;
96
+ export interface Recorder {
97
+ /** The 2D context handed to the engine */
98
+ readonly context: unknown;
99
+ /** Operations of the last frame (a new array per frame) */
100
+ ops(): DrawOp[];
101
+ }
102
+ /**
103
+ * Records the drawing calls of a Canvas2D context. `clearRect` of the whole
104
+ * canvas starts a new frame.
105
+ */
106
+ export declare function createRecorder(): Recorder;
@@ -0,0 +1,106 @@
1
+ /** A color: channels 0-255, alpha 0-1 (`raw`: a CSS color that could not be parsed) */
2
+ export interface Color {
3
+ r: number;
4
+ g: number;
5
+ b: number;
6
+ a: number;
7
+ raw?: string;
8
+ }
9
+ /** A linear gradient in chart pixels */
10
+ export interface Gradient {
11
+ x0: number;
12
+ y0: number;
13
+ x1: number;
14
+ y1: number;
15
+ stops: {
16
+ offset: number;
17
+ color: Color;
18
+ }[];
19
+ }
20
+ /** Fill or stroke style: a color, or a gradient (and its first color) */
21
+ export interface Paint {
22
+ color: Color;
23
+ gradient?: Gradient;
24
+ }
25
+ /** Straight segment to (x, y), or arc (implicitly joined by a segment to its start) */
26
+ export type Segment = {
27
+ t: "L";
28
+ x: number;
29
+ y: number;
30
+ } | {
31
+ t: "A";
32
+ cx: number;
33
+ cy: number;
34
+ r: number;
35
+ /** Start angle and end angle (`a1 - a0` is the signed sweep) */
36
+ a0: number;
37
+ a1: number;
38
+ };
39
+ export interface Subpath {
40
+ x: number;
41
+ y: number;
42
+ segs: Segment[];
43
+ closed: boolean;
44
+ }
45
+ export interface FillOp {
46
+ kind: "fill";
47
+ paths: Subpath[];
48
+ paint: Paint;
49
+ alpha: number;
50
+ /** Drawn with a shadow */
51
+ shadow: boolean;
52
+ }
53
+ export interface StrokeOp {
54
+ kind: "stroke";
55
+ paths: Subpath[];
56
+ paint: Paint;
57
+ alpha: number;
58
+ width: number;
59
+ cap: "butt" | "round" | "square";
60
+ join: "round" | "bevel" | "miter";
61
+ dash: number[];
62
+ }
63
+ export interface TextOp {
64
+ kind: "text";
65
+ text: string;
66
+ x: number;
67
+ y: number;
68
+ size: number;
69
+ weight: number;
70
+ align: "left" | "center" | "right";
71
+ baseline: "top" | "middle" | "bottom" | "alphabetic";
72
+ color: Color;
73
+ alpha: number;
74
+ /** Rotation around (x, y), radians clockwise */
75
+ rotate: number;
76
+ maxWidth?: number;
77
+ /** Outline color (`strokeText` under the same text) */
78
+ halo?: Color;
79
+ }
80
+ export type DrawOp = FillOp | StrokeOp | TextOp;
81
+ /** Parses the colors the engine produces: `rgba()`, `rgb()`, `#hex` */
82
+ export declare function parseColor(value: unknown): Color;
83
+ /** Opaque CSS color (the alpha goes to an `opacity`) */
84
+ export declare const opaqueCss: (c: Color) => string;
85
+ /** CSS color with an extra alpha */
86
+ export declare const cssWithAlpha: (c: Color, alpha: number) => string;
87
+ /** Color of a paint at a point (gradients: projected on their axis) */
88
+ export declare function paintAt(paint: Paint, x: number, y: number): Color;
89
+ /** Size (px) and weight of a CSS font */
90
+ export declare function parseFont(font: string): {
91
+ size: number;
92
+ weight: number;
93
+ };
94
+ /** Signed sweep of a canvas `arc()` */
95
+ export declare function arcSweep(start: number, end: number, ccw: boolean): number;
96
+ export interface Recorder {
97
+ /** The 2D context handed to the engine */
98
+ readonly context: unknown;
99
+ /** Operations of the last frame (a new array per frame) */
100
+ ops(): DrawOp[];
101
+ }
102
+ /**
103
+ * Records the drawing calls of a Canvas2D context. `clearRect` of the whole
104
+ * canvas starts a new frame.
105
+ */
106
+ export declare function createRecorder(): Recorder;