minerva-design 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1166) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +13630 -4757
  4. package/dist/angular/fesm2022/minerva-angular.mjs +6872 -172
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +2240 -0
  7. package/dist/charts/canvas.d.cts +7 -2
  8. package/dist/charts/canvas.d.ts +7 -2
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +7 -4
  11. package/dist/charts/core.d.ts +7 -4
  12. package/dist/charts/core.js +19 -8
  13. package/dist/charts/engine/axis.cjs +1 -1
  14. package/dist/charts/engine/axis.cjs.map +1 -1
  15. package/dist/charts/engine/axis.js +6 -6
  16. package/dist/charts/engine/axis.js.map +1 -1
  17. package/dist/charts/engine/canvas.cjs +1 -1
  18. package/dist/charts/engine/canvas.cjs.map +1 -1
  19. package/dist/charts/engine/canvas.d.cts +11 -1
  20. package/dist/charts/engine/canvas.d.ts +11 -1
  21. package/dist/charts/engine/canvas.js +118 -68
  22. package/dist/charts/engine/canvas.js.map +1 -1
  23. package/dist/charts/engine/chart.cjs +1 -1
  24. package/dist/charts/engine/chart.cjs.map +1 -1
  25. package/dist/charts/engine/chart.d.cts +1 -1
  26. package/dist/charts/engine/chart.d.ts +1 -1
  27. package/dist/charts/engine/chart.js +307 -285
  28. package/dist/charts/engine/chart.js.map +1 -1
  29. package/dist/charts/engine/color.cjs +1 -1
  30. package/dist/charts/engine/color.cjs.map +1 -1
  31. package/dist/charts/engine/color.js +2 -2
  32. package/dist/charts/engine/color.js.map +1 -1
  33. package/dist/charts/engine/controller.cjs +1 -1
  34. package/dist/charts/engine/controller.cjs.map +1 -1
  35. package/dist/charts/engine/controller.d.cts +12 -3
  36. package/dist/charts/engine/controller.d.ts +12 -3
  37. package/dist/charts/engine/controller.js +359 -299
  38. package/dist/charts/engine/controller.js.map +1 -1
  39. package/dist/charts/engine/data.cjs +1 -1
  40. package/dist/charts/engine/data.cjs.map +1 -1
  41. package/dist/charts/engine/data.d.cts +6 -0
  42. package/dist/charts/engine/data.d.ts +6 -0
  43. package/dist/charts/engine/data.js +63 -49
  44. package/dist/charts/engine/data.js.map +1 -1
  45. package/dist/charts/engine/format.cjs +1 -1
  46. package/dist/charts/engine/format.cjs.map +1 -1
  47. package/dist/charts/engine/format.d.cts +21 -6
  48. package/dist/charts/engine/format.d.ts +21 -6
  49. package/dist/charts/engine/format.js +46 -21
  50. package/dist/charts/engine/format.js.map +1 -1
  51. package/dist/charts/engine/items.cjs +1 -1
  52. package/dist/charts/engine/items.cjs.map +1 -1
  53. package/dist/charts/engine/items.js +211 -54
  54. package/dist/charts/engine/items.js.map +1 -1
  55. package/dist/charts/engine/labels.cjs +2 -0
  56. package/dist/charts/engine/labels.cjs.map +1 -0
  57. package/dist/charts/engine/labels.d.cts +13 -0
  58. package/dist/charts/engine/labels.d.ts +13 -0
  59. package/dist/charts/engine/labels.js +74 -0
  60. package/dist/charts/engine/labels.js.map +1 -0
  61. package/dist/charts/engine/layout.cjs +1 -1
  62. package/dist/charts/engine/layout.cjs.map +1 -1
  63. package/dist/charts/engine/layout.d.cts +34 -2
  64. package/dist/charts/engine/layout.d.ts +34 -2
  65. package/dist/charts/engine/layout.js +53 -12
  66. package/dist/charts/engine/layout.js.map +1 -1
  67. package/dist/charts/engine/locale.cjs +2 -0
  68. package/dist/charts/engine/locale.cjs.map +1 -0
  69. package/dist/charts/engine/locale.d.cts +33 -0
  70. package/dist/charts/engine/locale.d.ts +33 -0
  71. package/dist/charts/engine/locale.js +68 -0
  72. package/dist/charts/engine/locale.js.map +1 -0
  73. package/dist/charts/engine/model.cjs +1 -1
  74. package/dist/charts/engine/model.cjs.map +1 -1
  75. package/dist/charts/engine/model.d.cts +39 -1
  76. package/dist/charts/engine/model.d.ts +39 -1
  77. package/dist/charts/engine/model.js +212 -105
  78. package/dist/charts/engine/model.js.map +1 -1
  79. package/dist/charts/engine/orderbook/book.cjs +2 -0
  80. package/dist/charts/engine/orderbook/book.cjs.map +1 -0
  81. package/dist/charts/engine/orderbook/book.d.cts +28 -0
  82. package/dist/charts/engine/orderbook/book.d.ts +28 -0
  83. package/dist/charts/engine/orderbook/book.js +134 -0
  84. package/dist/charts/engine/orderbook/book.js.map +1 -0
  85. package/dist/charts/engine/orderbook/depth.cjs +2 -0
  86. package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
  87. package/dist/charts/engine/orderbook/depth.d.cts +7 -0
  88. package/dist/charts/engine/orderbook/depth.d.ts +7 -0
  89. package/dist/charts/engine/orderbook/depth.js +413 -0
  90. package/dist/charts/engine/orderbook/depth.js.map +1 -0
  91. package/dist/charts/engine/orderbook/format.cjs +2 -0
  92. package/dist/charts/engine/orderbook/format.cjs.map +1 -0
  93. package/dist/charts/engine/orderbook/format.d.cts +48 -0
  94. package/dist/charts/engine/orderbook/format.d.ts +48 -0
  95. package/dist/charts/engine/orderbook/format.js +65 -0
  96. package/dist/charts/engine/orderbook/format.js.map +1 -0
  97. package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
  98. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
  99. package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
  100. package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
  101. package/dist/charts/engine/orderbook/heatmap.js +703 -0
  102. package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
  103. package/dist/charts/engine/orderbook/host.cjs +2 -0
  104. package/dist/charts/engine/orderbook/host.cjs.map +1 -0
  105. package/dist/charts/engine/orderbook/host.d.cts +50 -0
  106. package/dist/charts/engine/orderbook/host.d.ts +50 -0
  107. package/dist/charts/engine/orderbook/host.js +161 -0
  108. package/dist/charts/engine/orderbook/host.js.map +1 -0
  109. package/dist/charts/engine/orderbook/index.cjs +1 -0
  110. package/dist/charts/engine/orderbook/index.d.cts +6 -0
  111. package/dist/charts/engine/orderbook/index.d.ts +6 -0
  112. package/dist/charts/engine/orderbook/index.js +6 -0
  113. package/dist/charts/engine/orderbook/ladder.cjs +2 -0
  114. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
  115. package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
  116. package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
  117. package/dist/charts/engine/orderbook/ladder.js +341 -0
  118. package/dist/charts/engine/orderbook/ladder.js.map +1 -0
  119. package/dist/charts/engine/orderbook/tape.cjs +2 -0
  120. package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
  121. package/dist/charts/engine/orderbook/tape.d.cts +6 -0
  122. package/dist/charts/engine/orderbook/tape.d.ts +6 -0
  123. package/dist/charts/engine/orderbook/tape.js +450 -0
  124. package/dist/charts/engine/orderbook/tape.js.map +1 -0
  125. package/dist/charts/engine/orderbook/types.d.cts +735 -0
  126. package/dist/charts/engine/orderbook/types.d.ts +735 -0
  127. package/dist/charts/engine/overlay.cjs +1 -1
  128. package/dist/charts/engine/overlay.cjs.map +1 -1
  129. package/dist/charts/engine/overlay.d.cts +18 -2
  130. package/dist/charts/engine/overlay.d.ts +18 -2
  131. package/dist/charts/engine/overlay.js +132 -96
  132. package/dist/charts/engine/overlay.js.map +1 -1
  133. package/dist/charts/engine/presets.cjs +2 -2
  134. package/dist/charts/engine/presets.cjs.map +1 -1
  135. package/dist/charts/engine/presets.d.cts +249 -1
  136. package/dist/charts/engine/presets.d.ts +249 -1
  137. package/dist/charts/engine/presets.js +367 -29
  138. package/dist/charts/engine/presets.js.map +1 -1
  139. package/dist/charts/engine/renderers/detect.cjs +1 -1
  140. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  141. package/dist/charts/engine/renderers/detect.js +18 -15
  142. package/dist/charts/engine/renderers/detect.js.map +1 -1
  143. package/dist/charts/engine/renderers/gl.cjs +2 -0
  144. package/dist/charts/engine/renderers/gl.cjs.map +1 -0
  145. package/dist/charts/engine/renderers/gl.d.cts +21 -0
  146. package/dist/charts/engine/renderers/gl.d.ts +21 -0
  147. package/dist/charts/engine/renderers/gl.js +56 -0
  148. package/dist/charts/engine/renderers/gl.js.map +1 -0
  149. package/dist/charts/engine/renderers/shaders.cjs +143 -1
  150. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  151. package/dist/charts/engine/renderers/shaders.d.cts +16 -0
  152. package/dist/charts/engine/renderers/shaders.d.ts +16 -0
  153. package/dist/charts/engine/renderers/shaders.js +139 -1
  154. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  155. package/dist/charts/engine/renderers/webgl.cjs +2 -0
  156. package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
  157. package/dist/charts/engine/renderers/webgl.d.cts +4 -0
  158. package/dist/charts/engine/renderers/webgl.d.ts +4 -0
  159. package/dist/charts/engine/renderers/webgl.js +133 -0
  160. package/dist/charts/engine/renderers/webgl.js.map +1 -0
  161. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  162. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  163. package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
  164. package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
  165. package/dist/charts/engine/renderers/webgl2.js +59 -108
  166. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  167. package/dist/charts/engine/scale.cjs +1 -1
  168. package/dist/charts/engine/scale.cjs.map +1 -1
  169. package/dist/charts/engine/scale.js +1 -1
  170. package/dist/charts/engine/scale.js.map +1 -1
  171. package/dist/charts/engine/scene.cjs +1 -1
  172. package/dist/charts/engine/scene.cjs.map +1 -1
  173. package/dist/charts/engine/scene.d.cts +14 -4
  174. package/dist/charts/engine/scene.d.ts +14 -4
  175. package/dist/charts/engine/scene.js +292 -163
  176. package/dist/charts/engine/scene.js.map +1 -1
  177. package/dist/charts/engine/shapes/bullet.cjs +2 -0
  178. package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
  179. package/dist/charts/engine/shapes/bullet.d.cts +6 -0
  180. package/dist/charts/engine/shapes/bullet.d.ts +6 -0
  181. package/dist/charts/engine/shapes/bullet.js +255 -0
  182. package/dist/charts/engine/shapes/bullet.js.map +1 -0
  183. package/dist/charts/engine/shapes/calendar.cjs +2 -0
  184. package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
  185. package/dist/charts/engine/shapes/calendar.d.cts +38 -0
  186. package/dist/charts/engine/shapes/calendar.d.ts +38 -0
  187. package/dist/charts/engine/shapes/calendar.js +369 -0
  188. package/dist/charts/engine/shapes/calendar.js.map +1 -0
  189. package/dist/charts/engine/shapes/canvas.cjs +1 -1
  190. package/dist/charts/engine/shapes/canvas.cjs.map +1 -1
  191. package/dist/charts/engine/shapes/canvas.d.cts +7 -0
  192. package/dist/charts/engine/shapes/canvas.d.ts +7 -0
  193. package/dist/charts/engine/shapes/canvas.js +22 -13
  194. package/dist/charts/engine/shapes/canvas.js.map +1 -1
  195. package/dist/charts/engine/shapes/chart.cjs +1 -1
  196. package/dist/charts/engine/shapes/chart.cjs.map +1 -1
  197. package/dist/charts/engine/shapes/chart.d.cts +3 -2
  198. package/dist/charts/engine/shapes/chart.d.ts +3 -2
  199. package/dist/charts/engine/shapes/chart.js +45 -26
  200. package/dist/charts/engine/shapes/chart.js.map +1 -1
  201. package/dist/charts/engine/shapes/draw.cjs +1 -1
  202. package/dist/charts/engine/shapes/draw.cjs.map +1 -1
  203. package/dist/charts/engine/shapes/draw.d.cts +3 -1
  204. package/dist/charts/engine/shapes/draw.d.ts +3 -1
  205. package/dist/charts/engine/shapes/draw.js +31 -18
  206. package/dist/charts/engine/shapes/draw.js.map +1 -1
  207. package/dist/charts/engine/shapes/funnel.cjs +1 -1
  208. package/dist/charts/engine/shapes/funnel.cjs.map +1 -1
  209. package/dist/charts/engine/shapes/funnel.js +3 -3
  210. package/dist/charts/engine/shapes/funnel.js.map +1 -1
  211. package/dist/charts/engine/shapes/gauge.cjs +1 -1
  212. package/dist/charts/engine/shapes/gauge.cjs.map +1 -1
  213. package/dist/charts/engine/shapes/gauge.js +132 -95
  214. package/dist/charts/engine/shapes/gauge.js.map +1 -1
  215. package/dist/charts/engine/shapes/hit.cjs +1 -1
  216. package/dist/charts/engine/shapes/hit.cjs.map +1 -1
  217. package/dist/charts/engine/shapes/hit.d.cts +3 -1
  218. package/dist/charts/engine/shapes/hit.d.ts +3 -1
  219. package/dist/charts/engine/shapes/hit.js +29 -8
  220. package/dist/charts/engine/shapes/hit.js.map +1 -1
  221. package/dist/charts/engine/shapes/index.d.cts +4 -1
  222. package/dist/charts/engine/shapes/index.d.ts +4 -1
  223. package/dist/charts/engine/shapes/labels.cjs +2 -0
  224. package/dist/charts/engine/shapes/labels.cjs.map +1 -0
  225. package/dist/charts/engine/shapes/labels.d.cts +14 -0
  226. package/dist/charts/engine/shapes/labels.d.ts +14 -0
  227. package/dist/charts/engine/shapes/labels.js +146 -0
  228. package/dist/charts/engine/shapes/labels.js.map +1 -0
  229. package/dist/charts/engine/shapes/layout.cjs +2 -2
  230. package/dist/charts/engine/shapes/layout.cjs.map +1 -1
  231. package/dist/charts/engine/shapes/layout.d.cts +8 -3
  232. package/dist/charts/engine/shapes/layout.d.ts +8 -3
  233. package/dist/charts/engine/shapes/layout.js +200 -113
  234. package/dist/charts/engine/shapes/layout.js.map +1 -1
  235. package/dist/charts/engine/shapes/pie.cjs +1 -1
  236. package/dist/charts/engine/shapes/pie.cjs.map +1 -1
  237. package/dist/charts/engine/shapes/pie.js +2 -2
  238. package/dist/charts/engine/shapes/pie.js.map +1 -1
  239. package/dist/charts/engine/shapes/radar.cjs +1 -1
  240. package/dist/charts/engine/shapes/radar.cjs.map +1 -1
  241. package/dist/charts/engine/shapes/radar.d.cts +2 -2
  242. package/dist/charts/engine/shapes/radar.d.ts +2 -2
  243. package/dist/charts/engine/shapes/radar.js +50 -49
  244. package/dist/charts/engine/shapes/radar.js.map +1 -1
  245. package/dist/charts/engine/shapes/radialBar.cjs +2 -0
  246. package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
  247. package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
  248. package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
  249. package/dist/charts/engine/shapes/radialBar.js +155 -0
  250. package/dist/charts/engine/shapes/radialBar.js.map +1 -0
  251. package/dist/charts/engine/shapes/runtime.cjs +1 -1
  252. package/dist/charts/engine/shapes/runtime.cjs.map +1 -1
  253. package/dist/charts/engine/shapes/runtime.d.cts +9 -2
  254. package/dist/charts/engine/shapes/runtime.d.ts +9 -2
  255. package/dist/charts/engine/shapes/runtime.js +61 -51
  256. package/dist/charts/engine/shapes/runtime.js.map +1 -1
  257. package/dist/charts/engine/shapes/sankey.cjs +2 -0
  258. package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
  259. package/dist/charts/engine/shapes/sankey.d.cts +29 -0
  260. package/dist/charts/engine/shapes/sankey.d.ts +29 -0
  261. package/dist/charts/engine/shapes/sankey.js +372 -0
  262. package/dist/charts/engine/shapes/sankey.js.map +1 -0
  263. package/dist/charts/engine/shapes/scene.cjs +1 -1
  264. package/dist/charts/engine/shapes/scene.cjs.map +1 -1
  265. package/dist/charts/engine/shapes/scene.d.cts +62 -8
  266. package/dist/charts/engine/shapes/scene.d.ts +62 -8
  267. package/dist/charts/engine/shapes/scene.js +33 -31
  268. package/dist/charts/engine/shapes/scene.js.map +1 -1
  269. package/dist/charts/engine/shapes/sunburst.cjs +2 -0
  270. package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
  271. package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
  272. package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
  273. package/dist/charts/engine/shapes/sunburst.js +261 -0
  274. package/dist/charts/engine/shapes/sunburst.js.map +1 -0
  275. package/dist/charts/engine/shapes/treemap.cjs +1 -1
  276. package/dist/charts/engine/shapes/treemap.cjs.map +1 -1
  277. package/dist/charts/engine/shapes/treemap.js +2 -2
  278. package/dist/charts/engine/shapes/treemap.js.map +1 -1
  279. package/dist/charts/engine/shapes/types.d.cts +439 -12
  280. package/dist/charts/engine/shapes/types.d.ts +439 -12
  281. package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
  282. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
  283. package/dist/charts/engine/three-d/canvas2d.d.cts +4 -0
  284. package/dist/charts/engine/three-d/canvas2d.d.ts +4 -0
  285. package/dist/charts/engine/three-d/canvas2d.js +104 -0
  286. package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
  287. package/dist/charts/engine/three-d/chart.cjs +2 -0
  288. package/dist/charts/engine/three-d/chart.cjs.map +1 -0
  289. package/dist/charts/engine/three-d/chart.d.cts +15 -0
  290. package/dist/charts/engine/three-d/chart.d.ts +15 -0
  291. package/dist/charts/engine/three-d/chart.js +621 -0
  292. package/dist/charts/engine/three-d/chart.js.map +1 -0
  293. package/dist/charts/engine/three-d/colormap.cjs +2 -0
  294. package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
  295. package/dist/charts/engine/three-d/colormap.d.cts +16 -0
  296. package/dist/charts/engine/three-d/colormap.d.ts +16 -0
  297. package/dist/charts/engine/three-d/colormap.js +166 -0
  298. package/dist/charts/engine/three-d/colormap.js.map +1 -0
  299. package/dist/charts/engine/three-d/contours.cjs +2 -0
  300. package/dist/charts/engine/three-d/contours.cjs.map +1 -0
  301. package/dist/charts/engine/three-d/contours.d.cts +7 -0
  302. package/dist/charts/engine/three-d/contours.d.ts +7 -0
  303. package/dist/charts/engine/three-d/contours.js +47 -0
  304. package/dist/charts/engine/three-d/contours.js.map +1 -0
  305. package/dist/charts/engine/three-d/detect.cjs +2 -0
  306. package/dist/charts/engine/three-d/detect.cjs.map +1 -0
  307. package/dist/charts/engine/three-d/detect.d.cts +11 -0
  308. package/dist/charts/engine/three-d/detect.d.ts +11 -0
  309. package/dist/charts/engine/three-d/detect.js +35 -0
  310. package/dist/charts/engine/three-d/detect.js.map +1 -0
  311. package/dist/charts/engine/three-d/dom.cjs +2 -0
  312. package/dist/charts/engine/three-d/dom.cjs.map +1 -0
  313. package/dist/charts/engine/three-d/dom.d.cts +21 -0
  314. package/dist/charts/engine/three-d/dom.d.ts +21 -0
  315. package/dist/charts/engine/three-d/dom.js +98 -0
  316. package/dist/charts/engine/three-d/dom.js.map +1 -0
  317. package/dist/charts/engine/three-d/geometry.cjs +2 -0
  318. package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
  319. package/dist/charts/engine/three-d/geometry.d.cts +76 -0
  320. package/dist/charts/engine/three-d/geometry.d.ts +76 -0
  321. package/dist/charts/engine/three-d/geometry.js +529 -0
  322. package/dist/charts/engine/three-d/geometry.js.map +1 -0
  323. package/dist/charts/engine/three-d/hover.cjs +2 -0
  324. package/dist/charts/engine/three-d/hover.cjs.map +1 -0
  325. package/dist/charts/engine/three-d/hover.d.cts +25 -0
  326. package/dist/charts/engine/three-d/hover.d.ts +25 -0
  327. package/dist/charts/engine/three-d/hover.js +131 -0
  328. package/dist/charts/engine/three-d/hover.js.map +1 -0
  329. package/dist/charts/engine/three-d/index.cjs +1 -0
  330. package/dist/charts/engine/three-d/index.d.cts +2 -0
  331. package/dist/charts/engine/three-d/index.d.ts +2 -0
  332. package/dist/charts/engine/three-d/index.js +2 -0
  333. package/dist/charts/engine/three-d/labels.cjs +2 -0
  334. package/dist/charts/engine/three-d/labels.cjs.map +1 -0
  335. package/dist/charts/engine/three-d/labels.d.cts +23 -0
  336. package/dist/charts/engine/three-d/labels.d.ts +23 -0
  337. package/dist/charts/engine/three-d/labels.js +136 -0
  338. package/dist/charts/engine/three-d/labels.js.map +1 -0
  339. package/dist/charts/engine/three-d/math.cjs +2 -0
  340. package/dist/charts/engine/three-d/math.cjs.map +1 -0
  341. package/dist/charts/engine/three-d/math.d.cts +84 -0
  342. package/dist/charts/engine/three-d/math.d.ts +84 -0
  343. package/dist/charts/engine/three-d/math.js +150 -0
  344. package/dist/charts/engine/three-d/math.js.map +1 -0
  345. package/dist/charts/engine/three-d/model.cjs +2 -0
  346. package/dist/charts/engine/three-d/model.cjs.map +1 -0
  347. package/dist/charts/engine/three-d/model.d.cts +130 -0
  348. package/dist/charts/engine/three-d/model.d.ts +130 -0
  349. package/dist/charts/engine/three-d/model.js +277 -0
  350. package/dist/charts/engine/three-d/model.js.map +1 -0
  351. package/dist/charts/engine/three-d/overlay.cjs +2 -0
  352. package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
  353. package/dist/charts/engine/three-d/overlay.d.cts +72 -0
  354. package/dist/charts/engine/three-d/overlay.d.ts +72 -0
  355. package/dist/charts/engine/three-d/overlay.js +197 -0
  356. package/dist/charts/engine/three-d/overlay.js.map +1 -0
  357. package/dist/charts/engine/three-d/pick.cjs +2 -0
  358. package/dist/charts/engine/three-d/pick.cjs.map +1 -0
  359. package/dist/charts/engine/three-d/pick.d.cts +52 -0
  360. package/dist/charts/engine/three-d/pick.d.ts +52 -0
  361. package/dist/charts/engine/three-d/pick.js +220 -0
  362. package/dist/charts/engine/three-d/pick.js.map +1 -0
  363. package/dist/charts/engine/three-d/render-types.cjs +2 -0
  364. package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
  365. package/dist/charts/engine/three-d/render-types.d.cts +82 -0
  366. package/dist/charts/engine/three-d/render-types.d.ts +82 -0
  367. package/dist/charts/engine/three-d/render-types.js +13 -0
  368. package/dist/charts/engine/three-d/render-types.js.map +1 -0
  369. package/dist/charts/engine/three-d/shaders.cjs +276 -0
  370. package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
  371. package/dist/charts/engine/three-d/shaders.d.cts +26 -0
  372. package/dist/charts/engine/three-d/shaders.d.ts +26 -0
  373. package/dist/charts/engine/three-d/shaders.js +191 -0
  374. package/dist/charts/engine/three-d/shaders.js.map +1 -0
  375. package/dist/charts/engine/three-d/sort.cjs +2 -0
  376. package/dist/charts/engine/three-d/sort.cjs.map +1 -0
  377. package/dist/charts/engine/three-d/sort.d.cts +18 -0
  378. package/dist/charts/engine/three-d/sort.d.ts +18 -0
  379. package/dist/charts/engine/three-d/sort.js +71 -0
  380. package/dist/charts/engine/three-d/sort.js.map +1 -0
  381. package/dist/charts/engine/three-d/types.d.cts +588 -0
  382. package/dist/charts/engine/three-d/types.d.ts +588 -0
  383. package/dist/charts/engine/three-d/webgl.cjs +2 -0
  384. package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
  385. package/dist/charts/engine/three-d/webgl.d.cts +10 -0
  386. package/dist/charts/engine/three-d/webgl.d.ts +10 -0
  387. package/dist/charts/engine/three-d/webgl.js +130 -0
  388. package/dist/charts/engine/three-d/webgl.js.map +1 -0
  389. package/dist/charts/engine/three-d/webgpu.cjs +2 -0
  390. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
  391. package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
  392. package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
  393. package/dist/charts/engine/three-d/webgpu.js +249 -0
  394. package/dist/charts/engine/three-d/webgpu.js.map +1 -0
  395. package/dist/charts/engine/time.cjs +1 -1
  396. package/dist/charts/engine/time.cjs.map +1 -1
  397. package/dist/charts/engine/time.d.cts +13 -4
  398. package/dist/charts/engine/time.d.ts +13 -4
  399. package/dist/charts/engine/time.js +156 -91
  400. package/dist/charts/engine/time.js.map +1 -1
  401. package/dist/charts/engine/trading/chart.cjs +2 -0
  402. package/dist/charts/engine/trading/chart.cjs.map +1 -0
  403. package/dist/charts/engine/trading/chart.d.cts +3 -0
  404. package/dist/charts/engine/trading/chart.d.ts +3 -0
  405. package/dist/charts/engine/trading/chart.js +1507 -0
  406. package/dist/charts/engine/trading/chart.js.map +1 -0
  407. package/dist/charts/engine/trading/drawings.cjs +2 -0
  408. package/dist/charts/engine/trading/drawings.cjs.map +1 -0
  409. package/dist/charts/engine/trading/drawings.d.cts +57 -0
  410. package/dist/charts/engine/trading/drawings.d.ts +57 -0
  411. package/dist/charts/engine/trading/drawings.js +160 -0
  412. package/dist/charts/engine/trading/drawings.js.map +1 -0
  413. package/dist/charts/engine/trading/format.cjs +2 -0
  414. package/dist/charts/engine/trading/format.cjs.map +1 -0
  415. package/dist/charts/engine/trading/format.d.cts +60 -0
  416. package/dist/charts/engine/trading/format.d.ts +60 -0
  417. package/dist/charts/engine/trading/format.js +131 -0
  418. package/dist/charts/engine/trading/format.js.map +1 -0
  419. package/dist/charts/engine/trading/geometry.cjs +2 -0
  420. package/dist/charts/engine/trading/geometry.cjs.map +1 -0
  421. package/dist/charts/engine/trading/geometry.d.cts +55 -0
  422. package/dist/charts/engine/trading/geometry.d.ts +55 -0
  423. package/dist/charts/engine/trading/geometry.js +131 -0
  424. package/dist/charts/engine/trading/geometry.js.map +1 -0
  425. package/dist/charts/engine/trading/index.cjs +1 -0
  426. package/dist/charts/engine/trading/index.d.cts +3 -0
  427. package/dist/charts/engine/trading/index.d.ts +3 -0
  428. package/dist/charts/engine/trading/index.js +3 -0
  429. package/dist/charts/engine/trading/indicators.cjs +2 -0
  430. package/dist/charts/engine/trading/indicators.cjs.map +1 -0
  431. package/dist/charts/engine/trading/indicators.d.cts +105 -0
  432. package/dist/charts/engine/trading/indicators.d.ts +105 -0
  433. package/dist/charts/engine/trading/indicators.js +268 -0
  434. package/dist/charts/engine/trading/indicators.js.map +1 -0
  435. package/dist/charts/engine/trading/labels.cjs +2 -0
  436. package/dist/charts/engine/trading/labels.cjs.map +1 -0
  437. package/dist/charts/engine/trading/labels.d.cts +7 -0
  438. package/dist/charts/engine/trading/labels.d.ts +7 -0
  439. package/dist/charts/engine/trading/labels.js +91 -0
  440. package/dist/charts/engine/trading/labels.js.map +1 -0
  441. package/dist/charts/engine/trading/scale.cjs +2 -0
  442. package/dist/charts/engine/trading/scale.cjs.map +1 -0
  443. package/dist/charts/engine/trading/scale.d.cts +46 -0
  444. package/dist/charts/engine/trading/scale.d.ts +46 -0
  445. package/dist/charts/engine/trading/scale.js +100 -0
  446. package/dist/charts/engine/trading/scale.js.map +1 -0
  447. package/dist/charts/engine/trading/store.cjs +2 -0
  448. package/dist/charts/engine/trading/store.cjs.map +1 -0
  449. package/dist/charts/engine/trading/store.d.cts +62 -0
  450. package/dist/charts/engine/trading/store.d.ts +62 -0
  451. package/dist/charts/engine/trading/store.js +129 -0
  452. package/dist/charts/engine/trading/store.js.map +1 -0
  453. package/dist/charts/engine/trading/studies.cjs +2 -0
  454. package/dist/charts/engine/trading/studies.cjs.map +1 -0
  455. package/dist/charts/engine/trading/studies.d.cts +52 -0
  456. package/dist/charts/engine/trading/studies.d.ts +52 -0
  457. package/dist/charts/engine/trading/studies.js +254 -0
  458. package/dist/charts/engine/trading/studies.js.map +1 -0
  459. package/dist/charts/engine/trading/types.d.cts +656 -0
  460. package/dist/charts/engine/trading/types.d.ts +656 -0
  461. package/dist/charts/engine/types.d.cts +165 -14
  462. package/dist/charts/engine/types.d.ts +165 -14
  463. package/dist/charts/index.cjs +1 -1
  464. package/dist/charts/index.d.cts +7 -4
  465. package/dist/charts/index.d.ts +7 -4
  466. package/dist/charts/index.js +22 -11
  467. package/dist/charts/react/Chart.cjs +1 -1
  468. package/dist/charts/react/Chart.cjs.map +1 -1
  469. package/dist/charts/react/Chart.d.cts +4 -4
  470. package/dist/charts/react/Chart.d.ts +4 -4
  471. package/dist/charts/react/Chart.js +5 -1
  472. package/dist/charts/react/Chart.js.map +1 -1
  473. package/dist/charts/react/charts.cjs +1 -1
  474. package/dist/charts/react/charts.cjs.map +1 -1
  475. package/dist/charts/react/charts.d.cts +39 -1
  476. package/dist/charts/react/charts.d.ts +39 -1
  477. package/dist/charts/react/charts.js +303 -131
  478. package/dist/charts/react/charts.js.map +1 -1
  479. package/dist/charts/react/orderbook.cjs +2 -0
  480. package/dist/charts/react/orderbook.cjs.map +1 -0
  481. package/dist/charts/react/orderbook.d.cts +142 -0
  482. package/dist/charts/react/orderbook.d.ts +142 -0
  483. package/dist/charts/react/orderbook.js +182 -0
  484. package/dist/charts/react/orderbook.js.map +1 -0
  485. package/dist/charts/react/shapes.cjs +1 -1
  486. package/dist/charts/react/shapes.cjs.map +1 -1
  487. package/dist/charts/react/shapes.d.cts +291 -9
  488. package/dist/charts/react/shapes.d.ts +291 -9
  489. package/dist/charts/react/shapes.js +280 -93
  490. package/dist/charts/react/shapes.js.map +1 -1
  491. package/dist/charts/react/three-d.cjs +2 -0
  492. package/dist/charts/react/three-d.cjs.map +1 -0
  493. package/dist/charts/react/three-d.d.cts +151 -0
  494. package/dist/charts/react/three-d.d.ts +151 -0
  495. package/dist/charts/react/three-d.js +154 -0
  496. package/dist/charts/react/three-d.js.map +1 -0
  497. package/dist/charts/react/trading.cjs +2 -0
  498. package/dist/charts/react/trading.cjs.map +1 -0
  499. package/dist/charts/react/trading.d.cts +93 -0
  500. package/dist/charts/react/trading.d.ts +93 -0
  501. package/dist/charts/react/trading.js +95 -0
  502. package/dist/charts/react/trading.js.map +1 -0
  503. package/dist/charts/react/types.d.cts +132 -8
  504. package/dist/charts/react/types.d.ts +132 -8
  505. package/dist/core/contracts.cjs +1 -1
  506. package/dist/core/contracts.cjs.map +1 -1
  507. package/dist/core/contracts.js +1 -1
  508. package/dist/core/contracts.js.map +1 -1
  509. package/dist/native/charts/src/canvas.cjs +1 -1
  510. package/dist/native/charts/src/canvas.js +9 -3
  511. package/dist/native/charts/src/engine/axis.cjs +1 -1
  512. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  513. package/dist/native/charts/src/engine/axis.js +6 -6
  514. package/dist/native/charts/src/engine/axis.js.map +1 -1
  515. package/dist/native/charts/src/engine/controller.cjs +1 -1
  516. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  517. package/dist/native/charts/src/engine/controller.js +352 -292
  518. package/dist/native/charts/src/engine/controller.js.map +1 -1
  519. package/dist/native/charts/src/engine/data.cjs +1 -1
  520. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  521. package/dist/native/charts/src/engine/data.js +63 -49
  522. package/dist/native/charts/src/engine/data.js.map +1 -1
  523. package/dist/native/charts/src/engine/format.cjs +1 -1
  524. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  525. package/dist/native/charts/src/engine/format.js +46 -21
  526. package/dist/native/charts/src/engine/format.js.map +1 -1
  527. package/dist/native/charts/src/engine/labels.cjs +2 -0
  528. package/dist/native/charts/src/engine/labels.cjs.map +1 -0
  529. package/dist/native/charts/src/engine/labels.js +74 -0
  530. package/dist/native/charts/src/engine/labels.js.map +1 -0
  531. package/dist/native/charts/src/engine/layout.cjs +1 -1
  532. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  533. package/dist/native/charts/src/engine/layout.js +53 -12
  534. package/dist/native/charts/src/engine/layout.js.map +1 -1
  535. package/dist/native/charts/src/engine/locale.cjs +2 -0
  536. package/dist/native/charts/src/engine/locale.cjs.map +1 -0
  537. package/dist/native/charts/src/engine/locale.js +60 -0
  538. package/dist/native/charts/src/engine/locale.js.map +1 -0
  539. package/dist/native/charts/src/engine/model.cjs +1 -1
  540. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  541. package/dist/native/charts/src/engine/model.js +223 -116
  542. package/dist/native/charts/src/engine/model.js.map +1 -1
  543. package/dist/native/charts/src/engine/overlay.cjs +1 -1
  544. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  545. package/dist/native/charts/src/engine/overlay.js +46 -23
  546. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  547. package/dist/native/charts/src/engine/presets.cjs +2 -2
  548. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  549. package/dist/native/charts/src/engine/presets.js +448 -33
  550. package/dist/native/charts/src/engine/presets.js.map +1 -1
  551. package/dist/native/charts/src/engine/scale.cjs +1 -1
  552. package/dist/native/charts/src/engine/scale.cjs.map +1 -1
  553. package/dist/native/charts/src/engine/scale.js +1 -1
  554. package/dist/native/charts/src/engine/scale.js.map +1 -1
  555. package/dist/native/charts/src/engine/scene.cjs +1 -1
  556. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  557. package/dist/native/charts/src/engine/scene.js +296 -167
  558. package/dist/native/charts/src/engine/scene.js.map +1 -1
  559. package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
  560. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
  561. package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
  562. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
  563. package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
  564. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
  565. package/dist/native/charts/src/engine/shapes/calendar.js +364 -0
  566. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
  567. package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
  568. package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
  569. package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
  570. package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
  571. package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
  572. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
  573. package/dist/native/charts/src/engine/shapes/draw.js +165 -0
  574. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
  575. package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
  576. package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
  577. package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
  578. package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
  579. package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
  580. package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
  581. package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
  582. package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
  583. package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
  584. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
  585. package/dist/native/charts/src/engine/shapes/hit.js +106 -0
  586. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
  587. package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
  588. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
  589. package/dist/native/charts/src/engine/shapes/labels.js +146 -0
  590. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
  591. package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
  592. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
  593. package/dist/native/charts/src/engine/shapes/layout.js +331 -0
  594. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
  595. package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
  596. package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
  597. package/dist/native/charts/src/engine/shapes/pie.js +302 -0
  598. package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
  599. package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
  600. package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
  601. package/dist/native/charts/src/engine/shapes/radar.js +198 -0
  602. package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
  603. package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
  604. package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
  605. package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
  606. package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
  607. package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
  608. package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
  609. package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
  610. package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
  611. package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
  612. package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
  613. package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
  614. package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
  615. package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
  616. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
  617. package/dist/native/charts/src/engine/shapes/scene.js +125 -0
  618. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
  619. package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
  620. package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
  621. package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
  622. package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
  623. package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
  624. package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
  625. package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
  626. package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
  627. package/dist/native/charts/src/engine/time.cjs +1 -1
  628. package/dist/native/charts/src/engine/time.cjs.map +1 -1
  629. package/dist/native/charts/src/engine/time.js +156 -91
  630. package/dist/native/charts/src/engine/time.js.map +1 -1
  631. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  632. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  633. package/dist/native/components/Chart/ChartBase.d.cts +1 -1
  634. package/dist/native/components/Chart/ChartBase.d.ts +1 -1
  635. package/dist/native/components/Chart/ChartBase.js +110 -107
  636. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  637. package/dist/native/components/Chart/charts.cjs +1 -1
  638. package/dist/native/components/Chart/charts.cjs.map +1 -1
  639. package/dist/native/components/Chart/charts.d.cts +6 -1
  640. package/dist/native/components/Chart/charts.d.ts +6 -1
  641. package/dist/native/components/Chart/charts.js +53 -29
  642. package/dist/native/components/Chart/charts.js.map +1 -1
  643. package/dist/native/components/Chart/index.cjs +1 -1
  644. package/dist/native/components/Chart/index.d.cts +1 -1
  645. package/dist/native/components/Chart/index.d.ts +1 -1
  646. package/dist/native/components/Chart/index.js +2 -2
  647. package/dist/native/components/Chart/scene.cjs +1 -1
  648. package/dist/native/components/Chart/scene.cjs.map +1 -1
  649. package/dist/native/components/Chart/scene.js +234 -217
  650. package/dist/native/components/Chart/scene.js.map +1 -1
  651. package/dist/native/components/Chart/types.d.cts +26 -3
  652. package/dist/native/components/Chart/types.d.ts +26 -3
  653. package/dist/native/components/Charts/charts.cjs +2 -0
  654. package/dist/native/components/Charts/charts.cjs.map +1 -0
  655. package/dist/native/components/Charts/charts.d.cts +41 -0
  656. package/dist/native/components/Charts/charts.d.ts +41 -0
  657. package/dist/native/components/Charts/charts.js +338 -0
  658. package/dist/native/components/Charts/charts.js.map +1 -0
  659. package/dist/native/components/Charts/index.cjs +1 -0
  660. package/dist/native/components/Charts/index.d.cts +2 -0
  661. package/dist/native/components/Charts/index.d.ts +2 -0
  662. package/dist/native/components/Charts/index.js +2 -0
  663. package/dist/native/components/Charts/types.d.cts +144 -0
  664. package/dist/native/components/Charts/types.d.ts +144 -0
  665. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
  666. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
  667. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
  668. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
  669. package/dist/native/components/ShapeChart/ShapeChartBase.js +271 -0
  670. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
  671. package/dist/native/components/ShapeChart/charts.cjs +2 -0
  672. package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
  673. package/dist/native/components/ShapeChart/charts.d.cts +38 -0
  674. package/dist/native/components/ShapeChart/charts.d.ts +38 -0
  675. package/dist/native/components/ShapeChart/charts.js +387 -0
  676. package/dist/native/components/ShapeChart/charts.js.map +1 -0
  677. package/dist/native/components/ShapeChart/draw.cjs +2 -0
  678. package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
  679. package/dist/native/components/ShapeChart/draw.d.cts +4 -0
  680. package/dist/native/components/ShapeChart/draw.d.ts +4 -0
  681. package/dist/native/components/ShapeChart/draw.js +104 -0
  682. package/dist/native/components/ShapeChart/draw.js.map +1 -0
  683. package/dist/native/components/ShapeChart/geometry.cjs +2 -0
  684. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
  685. package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
  686. package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
  687. package/dist/native/components/ShapeChart/geometry.js +602 -0
  688. package/dist/native/components/ShapeChart/geometry.js.map +1 -0
  689. package/dist/native/components/ShapeChart/index.cjs +1 -0
  690. package/dist/native/components/ShapeChart/index.d.cts +2 -0
  691. package/dist/native/components/ShapeChart/index.d.ts +2 -0
  692. package/dist/native/components/ShapeChart/index.js +2 -0
  693. package/dist/native/components/ShapeChart/recorder.cjs +2 -0
  694. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
  695. package/dist/native/components/ShapeChart/recorder.d.cts +106 -0
  696. package/dist/native/components/ShapeChart/recorder.d.ts +106 -0
  697. package/dist/native/components/ShapeChart/recorder.js +574 -0
  698. package/dist/native/components/ShapeChart/recorder.js.map +1 -0
  699. package/dist/native/components/ShapeChart/types.d.cts +509 -0
  700. package/dist/native/components/ShapeChart/types.d.ts +509 -0
  701. package/dist/native/index.cjs +1 -1
  702. package/dist/native/index.d.cts +2 -0
  703. package/dist/native/index.d.ts +2 -0
  704. package/dist/native/index.js +14 -10
  705. package/dist/native/manifest.d.cts +6 -4
  706. package/dist/native/manifest.d.ts +6 -4
  707. package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
  708. package/dist/native/source/components/Chart/charts.tsx +42 -6
  709. package/dist/native/source/components/Chart/index.ts +1 -0
  710. package/dist/native/source/components/Chart/scene.tsx +154 -84
  711. package/dist/native/source/components/Chart/types.ts +31 -1
  712. package/dist/native/source/components/Charts/charts.tsx +493 -0
  713. package/dist/native/source/components/Charts/index.ts +14 -0
  714. package/dist/native/source/components/Charts/types.ts +207 -0
  715. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +484 -0
  716. package/dist/native/source/components/ShapeChart/charts.tsx +605 -0
  717. package/dist/native/source/components/ShapeChart/draw.tsx +170 -0
  718. package/dist/native/source/components/ShapeChart/geometry.ts +1185 -0
  719. package/dist/native/source/components/ShapeChart/index.ts +15 -0
  720. package/dist/native/source/components/ShapeChart/recorder.ts +830 -0
  721. package/dist/native/source/components/ShapeChart/types.ts +564 -0
  722. package/dist/native/source/index.ts +2 -0
  723. package/dist/native/source/manifest.ts +30 -4
  724. package/dist/taro/charts.d.ts +209 -4
  725. package/dist/taro/index.d.ts +1 -0
  726. package/dist/taro/index.js +7517 -1856
  727. package/dist/taro/manifest.d.ts +1 -0
  728. package/dist/taro/shape-charts.d.ts +537 -0
  729. package/dist/uni/AreaChart.vue +68 -0
  730. package/dist/uni/AreaChart.vue.d.ts +120 -0
  731. package/dist/uni/Badge.vue.d.ts +1 -1
  732. package/dist/uni/BoxPlotChart.vue +66 -0
  733. package/dist/uni/BoxPlotChart.vue.d.ts +102 -0
  734. package/dist/uni/BubbleChart.vue +68 -0
  735. package/dist/uni/BubbleChart.vue.d.ts +106 -0
  736. package/dist/uni/BulletChart.vue +86 -0
  737. package/dist/uni/BulletChart.vue.d.ts +110 -0
  738. package/dist/uni/CalendarHeatmap.vue +92 -0
  739. package/dist/uni/CalendarHeatmap.vue.d.ts +129 -0
  740. package/dist/uni/CandlestickChart.vue +66 -0
  741. package/dist/uni/CandlestickChart.vue.d.ts +100 -0
  742. package/dist/uni/DonutChart.vue +72 -0
  743. package/dist/uni/DonutChart.vue.d.ts +114 -0
  744. package/dist/uni/FunnelChart.vue +67 -0
  745. package/dist/uni/FunnelChart.vue.d.ts +104 -0
  746. package/dist/uni/GanttChart.vue +67 -0
  747. package/dist/uni/GanttChart.vue.d.ts +123 -0
  748. package/dist/uni/GaugeChart.vue +77 -0
  749. package/dist/uni/GaugeChart.vue.d.ts +123 -0
  750. package/dist/uni/HeatmapChart.vue +66 -0
  751. package/dist/uni/HeatmapChart.vue.d.ts +114 -0
  752. package/dist/uni/HistogramChart.vue +66 -0
  753. package/dist/uni/HistogramChart.vue.d.ts +121 -0
  754. package/dist/uni/HorizontalBarChart.vue +68 -0
  755. package/dist/uni/HorizontalBarChart.vue.d.ts +127 -0
  756. package/dist/uni/Input.vue.d.ts +1 -1
  757. package/dist/uni/MixedChart.vue +68 -0
  758. package/dist/uni/MixedChart.vue.d.ts +106 -0
  759. package/dist/uni/NumberInput.vue.d.ts +1 -1
  760. package/dist/uni/PieChart.vue +72 -0
  761. package/dist/uni/PieChart.vue.d.ts +114 -0
  762. package/dist/uni/RadarChart.vue +67 -0
  763. package/dist/uni/RadarChart.vue.d.ts +110 -0
  764. package/dist/uni/RadialBarChart.vue +90 -0
  765. package/dist/uni/RadialBarChart.vue.d.ts +132 -0
  766. package/dist/uni/RangeAreaChart.vue +68 -0
  767. package/dist/uni/RangeAreaChart.vue.d.ts +102 -0
  768. package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
  769. package/dist/uni/SankeyChart.vue +88 -0
  770. package/dist/uni/SankeyChart.vue.d.ts +121 -0
  771. package/dist/uni/ShapeChart.vue +73 -0
  772. package/dist/uni/ShapeChart.vue.d.ts +54 -0
  773. package/dist/uni/Sparkline.vue +58 -0
  774. package/dist/uni/Sparkline.vue.d.ts +77 -0
  775. package/dist/uni/SunburstChart.vue +90 -0
  776. package/dist/uni/SunburstChart.vue.d.ts +114 -0
  777. package/dist/uni/Textarea.vue.d.ts +1 -1
  778. package/dist/uni/TimePicker.vue.d.ts +1 -1
  779. package/dist/uni/TreemapChart.vue +65 -0
  780. package/dist/uni/TreemapChart.vue.d.ts +100 -0
  781. package/dist/uni/WaterfallChart.vue +66 -0
  782. package/dist/uni/WaterfallChart.vue.d.ts +125 -0
  783. package/dist/uni/chart-types.d.ts +216 -2
  784. package/dist/uni/chart-types.js +174 -0
  785. package/dist/uni/charts-canvas.js +8 -3
  786. package/dist/uni/index.d.ts +26 -1
  787. package/dist/uni/index.js +26 -1
  788. package/dist/uni/manifest.d.ts +272 -0
  789. package/dist/uni/manifest.js +387 -0
  790. package/dist/uni/named-chart-options.d.ts +88 -0
  791. package/dist/uni/named-chart-options.js +156 -0
  792. package/dist/uni/shape-chart-canvas.d.ts +51 -0
  793. package/dist/uni/shape-chart-canvas.js +342 -0
  794. package/dist/uni/shape-chart-types.d.ts +381 -0
  795. package/dist/uni/shape-chart-types.js +261 -0
  796. package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
  797. package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
  798. package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
  799. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
  800. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  801. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
  802. package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
  803. package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
  804. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
  805. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  806. package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
  807. package/dist/vue/components/Chart/BarChart.vue.js +7 -0
  808. package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
  809. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
  810. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  811. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +112 -0
  812. package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
  813. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
  814. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +57 -0
  815. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  816. package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
  817. package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
  818. package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
  819. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
  820. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  821. package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
  822. package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
  823. package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
  824. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
  825. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  826. package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
  827. package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
  828. package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
  829. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
  830. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  831. package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
  832. package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
  833. package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
  834. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
  835. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  836. package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
  837. package/dist/vue/components/Chart/Chart.vue.js +7 -0
  838. package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
  839. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
  840. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  841. package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
  842. package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
  843. package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
  844. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
  845. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  846. package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
  847. package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
  848. package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
  849. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
  850. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  851. package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
  852. package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
  853. package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
  854. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
  855. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  856. package/dist/vue/components/Chart/GanttChart.vue.d.ts +132 -0
  857. package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
  858. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
  859. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +98 -0
  860. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  861. package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
  862. package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
  863. package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
  864. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
  865. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  866. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +125 -0
  867. package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
  868. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
  869. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +65 -0
  870. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  871. package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
  872. package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
  873. package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
  874. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
  875. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  876. package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
  877. package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
  878. package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
  879. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
  880. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  881. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
  882. package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
  883. package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
  884. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  885. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  886. package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
  887. package/dist/vue/components/Chart/LineChart.vue.js +7 -0
  888. package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
  889. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
  890. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  891. package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
  892. package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
  893. package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
  894. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
  895. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  896. package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
  897. package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
  898. package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
  899. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
  900. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
  901. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +128 -0
  902. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
  903. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
  904. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
  905. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  906. package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
  907. package/dist/vue/components/Chart/PieChart.vue.js +7 -0
  908. package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
  909. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
  910. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  911. package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
  912. package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
  913. package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
  914. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
  915. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  916. package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
  917. package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
  918. package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
  919. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
  920. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  921. package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
  922. package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
  923. package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
  924. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
  925. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  926. package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
  927. package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
  928. package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
  929. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
  930. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  931. package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
  932. package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
  933. package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
  934. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
  935. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  936. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
  937. package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
  938. package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
  939. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  940. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  941. package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
  942. package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
  943. package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
  944. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
  945. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  946. package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
  947. package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
  948. package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
  949. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
  950. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  951. package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
  952. package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
  953. package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
  954. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
  955. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  956. package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
  957. package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
  958. package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
  959. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
  960. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  961. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
  962. package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
  963. package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
  964. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
  965. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  966. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +114 -0
  967. package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
  968. package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
  969. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
  970. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
  971. package/dist/vue/components/Chart/TradingChart.vue.d.ts +160 -0
  972. package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
  973. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
  974. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +70 -0
  975. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  976. package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
  977. package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
  978. package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
  979. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
  980. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  981. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +132 -0
  982. package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
  983. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
  984. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +68 -0
  985. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  986. package/dist/vue/components/Chart/cartesian.d.ts +47 -0
  987. package/dist/vue/components/Chart/cartesian.js +56 -0
  988. package/dist/vue/components/Chart/cartesian.js.map +1 -0
  989. package/dist/vue/components/Chart/engine.d.ts +35 -0
  990. package/dist/vue/components/Chart/engine.js +35 -0
  991. package/dist/vue/components/Chart/engine.js.map +1 -0
  992. package/dist/vue/components/Chart/index.d.ts +41 -0
  993. package/dist/vue/components/Chart/index.js +40 -0
  994. package/dist/vue/components/Chart/orderbook.d.ts +359 -0
  995. package/dist/vue/components/Chart/orderbook.js +126 -0
  996. package/dist/vue/components/Chart/orderbook.js.map +1 -0
  997. package/dist/vue/components/Chart/props.d.ts +188 -0
  998. package/dist/vue/components/Chart/props.js +92 -0
  999. package/dist/vue/components/Chart/props.js.map +1 -0
  1000. package/dist/vue/components/Chart/shape.d.ts +41 -0
  1001. package/dist/vue/components/Chart/shape.js +42 -0
  1002. package/dist/vue/components/Chart/shape.js.map +1 -0
  1003. package/dist/vue/components/Chart/three-d.d.ts +106 -0
  1004. package/dist/vue/components/Chart/three-d.js +88 -0
  1005. package/dist/vue/components/Chart/three-d.js.map +1 -0
  1006. package/dist/vue/components/Chart/trading.d.ts +105 -0
  1007. package/dist/vue/components/Chart/trading.js +55 -0
  1008. package/dist/vue/components/Chart/trading.js.map +1 -0
  1009. package/dist/vue/components/Chart/types.d.ts +137 -0
  1010. package/dist/vue/global.d.ts +38 -0
  1011. package/dist/vue/groups/charts.d.ts +1 -0
  1012. package/dist/vue/groups/charts.js +87 -0
  1013. package/dist/vue/groups/charts.js.map +1 -0
  1014. package/dist/vue/index.d.ts +1 -0
  1015. package/dist/vue/index.js +63 -23
  1016. package/dist/vue/plugin.js +12 -10
  1017. package/dist/vue/plugin.js.map +1 -1
  1018. package/dist/weapp/area-chart/index.js +1 -0
  1019. package/dist/weapp/area-chart/index.json +1 -0
  1020. package/dist/weapp/area-chart/index.wxml +1 -0
  1021. package/dist/weapp/area-chart/index.wxss +1 -0
  1022. package/dist/weapp/box-plot-chart/index.js +1 -0
  1023. package/dist/weapp/box-plot-chart/index.json +1 -0
  1024. package/dist/weapp/box-plot-chart/index.wxml +1 -0
  1025. package/dist/weapp/box-plot-chart/index.wxss +1 -0
  1026. package/dist/weapp/bubble-chart/index.js +1 -0
  1027. package/dist/weapp/bubble-chart/index.json +1 -0
  1028. package/dist/weapp/bubble-chart/index.wxml +1 -0
  1029. package/dist/weapp/bubble-chart/index.wxss +1 -0
  1030. package/dist/weapp/bullet-chart/index.js +1 -0
  1031. package/dist/weapp/bullet-chart/index.json +1 -0
  1032. package/dist/weapp/bullet-chart/index.wxml +1 -0
  1033. package/dist/weapp/bullet-chart/index.wxss +1 -0
  1034. package/dist/weapp/calendar-heatmap/index.js +1 -0
  1035. package/dist/weapp/calendar-heatmap/index.json +1 -0
  1036. package/dist/weapp/calendar-heatmap/index.wxml +1 -0
  1037. package/dist/weapp/calendar-heatmap/index.wxss +1 -0
  1038. package/dist/weapp/candlestick-chart/index.js +1 -0
  1039. package/dist/weapp/candlestick-chart/index.json +1 -0
  1040. package/dist/weapp/candlestick-chart/index.wxml +1 -0
  1041. package/dist/weapp/candlestick-chart/index.wxss +1 -0
  1042. package/dist/weapp/charts/canvas.js +11436 -0
  1043. package/dist/weapp/charts/core.d.ts +2 -0
  1044. package/dist/weapp/charts/core.js +41 -0
  1045. package/dist/weapp/controls.js +1433 -4478
  1046. package/dist/weapp/donut-chart/index.js +1 -0
  1047. package/dist/weapp/donut-chart/index.json +1 -0
  1048. package/dist/weapp/donut-chart/index.wxml +1 -0
  1049. package/dist/weapp/donut-chart/index.wxss +1 -0
  1050. package/dist/weapp/funnel-chart/index.js +1 -0
  1051. package/dist/weapp/funnel-chart/index.json +1 -0
  1052. package/dist/weapp/funnel-chart/index.wxml +1 -0
  1053. package/dist/weapp/funnel-chart/index.wxss +1 -0
  1054. package/dist/weapp/gantt-chart/index.js +1 -0
  1055. package/dist/weapp/gantt-chart/index.json +1 -0
  1056. package/dist/weapp/gantt-chart/index.wxml +1 -0
  1057. package/dist/weapp/gantt-chart/index.wxss +1 -0
  1058. package/dist/weapp/gauge-chart/index.js +1 -0
  1059. package/dist/weapp/gauge-chart/index.json +1 -0
  1060. package/dist/weapp/gauge-chart/index.wxml +1 -0
  1061. package/dist/weapp/gauge-chart/index.wxss +1 -0
  1062. package/dist/weapp/heatmap-chart/index.js +1 -0
  1063. package/dist/weapp/heatmap-chart/index.json +1 -0
  1064. package/dist/weapp/heatmap-chart/index.wxml +1 -0
  1065. package/dist/weapp/heatmap-chart/index.wxss +1 -0
  1066. package/dist/weapp/histogram-chart/index.js +1 -0
  1067. package/dist/weapp/histogram-chart/index.json +1 -0
  1068. package/dist/weapp/histogram-chart/index.wxml +1 -0
  1069. package/dist/weapp/histogram-chart/index.wxss +1 -0
  1070. package/dist/weapp/horizontal-bar-chart/index.js +1 -0
  1071. package/dist/weapp/horizontal-bar-chart/index.json +1 -0
  1072. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
  1073. package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
  1074. package/dist/weapp/mixed-chart/index.js +1 -0
  1075. package/dist/weapp/mixed-chart/index.json +1 -0
  1076. package/dist/weapp/mixed-chart/index.wxml +1 -0
  1077. package/dist/weapp/mixed-chart/index.wxss +1 -0
  1078. package/dist/weapp/pie-chart/index.js +1 -0
  1079. package/dist/weapp/pie-chart/index.json +1 -0
  1080. package/dist/weapp/pie-chart/index.wxml +1 -0
  1081. package/dist/weapp/pie-chart/index.wxss +1 -0
  1082. package/dist/weapp/radar-chart/index.js +1 -0
  1083. package/dist/weapp/radar-chart/index.json +1 -0
  1084. package/dist/weapp/radar-chart/index.wxml +1 -0
  1085. package/dist/weapp/radar-chart/index.wxss +1 -0
  1086. package/dist/weapp/radial-bar-chart/index.js +1 -0
  1087. package/dist/weapp/radial-bar-chart/index.json +1 -0
  1088. package/dist/weapp/radial-bar-chart/index.wxml +1 -0
  1089. package/dist/weapp/radial-bar-chart/index.wxss +1 -0
  1090. package/dist/weapp/range-area-chart/index.js +1 -0
  1091. package/dist/weapp/range-area-chart/index.json +1 -0
  1092. package/dist/weapp/range-area-chart/index.wxml +1 -0
  1093. package/dist/weapp/range-area-chart/index.wxss +1 -0
  1094. package/dist/weapp/sankey-chart/index.js +1 -0
  1095. package/dist/weapp/sankey-chart/index.json +1 -0
  1096. package/dist/weapp/sankey-chart/index.wxml +1 -0
  1097. package/dist/weapp/sankey-chart/index.wxss +1 -0
  1098. package/dist/weapp/shape-chart/index.js +1 -0
  1099. package/dist/weapp/shape-chart/index.json +1 -0
  1100. package/dist/weapp/shape-chart/index.wxml +1 -0
  1101. package/dist/weapp/shape-chart/index.wxss +1 -0
  1102. package/dist/weapp/sparkline/index.js +1 -0
  1103. package/dist/weapp/sparkline/index.json +1 -0
  1104. package/dist/weapp/sparkline/index.wxml +1 -0
  1105. package/dist/weapp/sparkline/index.wxss +1 -0
  1106. package/dist/weapp/sunburst-chart/index.js +1 -0
  1107. package/dist/weapp/sunburst-chart/index.json +1 -0
  1108. package/dist/weapp/sunburst-chart/index.wxml +1 -0
  1109. package/dist/weapp/sunburst-chart/index.wxss +1 -0
  1110. package/dist/weapp/treemap-chart/index.js +1 -0
  1111. package/dist/weapp/treemap-chart/index.json +1 -0
  1112. package/dist/weapp/treemap-chart/index.wxml +1 -0
  1113. package/dist/weapp/treemap-chart/index.wxss +1 -0
  1114. package/dist/weapp/types.d.ts +466 -0
  1115. package/dist/weapp/waterfall-chart/index.js +1 -0
  1116. package/dist/weapp/waterfall-chart/index.json +1 -0
  1117. package/dist/weapp/waterfall-chart/index.wxml +1 -0
  1118. package/dist/weapp/waterfall-chart/index.wxss +1 -0
  1119. package/dist/web-components/components/chart/chart.d.ts +58 -0
  1120. package/dist/web-components/components/chart/chart.js +55 -0
  1121. package/dist/web-components/components/chart/chart.js.map +1 -0
  1122. package/dist/web-components/components/chart/charts.d.ts +252 -0
  1123. package/dist/web-components/components/chart/charts.js +201 -0
  1124. package/dist/web-components/components/chart/charts.js.map +1 -0
  1125. package/dist/web-components/components/chart/engine-element.d.ts +53 -0
  1126. package/dist/web-components/components/chart/engine-element.js +77 -0
  1127. package/dist/web-components/components/chart/engine-element.js.map +1 -0
  1128. package/dist/web-components/components/chart/extended.d.ts +224 -0
  1129. package/dist/web-components/components/chart/extended.js +183 -0
  1130. package/dist/web-components/components/chart/extended.js.map +1 -0
  1131. package/dist/web-components/components/chart/series.d.ts +7 -0
  1132. package/dist/web-components/components/chart/series.js +14 -0
  1133. package/dist/web-components/components/chart/series.js.map +1 -0
  1134. package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
  1135. package/dist/web-components/components/chart/shape-chart.js +161 -0
  1136. package/dist/web-components/components/chart/shape-chart.js.map +1 -0
  1137. package/dist/web-components/components/chart/shapes-extended.d.ts +162 -0
  1138. package/dist/web-components/components/chart/shapes-extended.js +156 -0
  1139. package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
  1140. package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
  1141. package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
  1142. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
  1143. package/dist/web-components/components/order-book/order-book.d.ts +165 -0
  1144. package/dist/web-components/components/order-book/order-book.js +174 -0
  1145. package/dist/web-components/components/order-book/order-book.js.map +1 -0
  1146. package/dist/web-components/components/trading-chart/trading-chart.d.ts +96 -0
  1147. package/dist/web-components/components/trading-chart/trading-chart.js +96 -0
  1148. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
  1149. package/dist/web-components/elements/chart-3d.d.ts +2 -0
  1150. package/dist/web-components/elements/chart-3d.js +13 -0
  1151. package/dist/web-components/elements/chart-3d.js.map +1 -0
  1152. package/dist/web-components/elements/chart.d.ts +7 -0
  1153. package/dist/web-components/elements/chart.js +43 -0
  1154. package/dist/web-components/elements/chart.js.map +1 -0
  1155. package/dist/web-components/elements/order-book.d.ts +2 -0
  1156. package/dist/web-components/elements/order-book.js +13 -0
  1157. package/dist/web-components/elements/order-book.js.map +1 -0
  1158. package/dist/web-components/elements/trading-chart.d.ts +2 -0
  1159. package/dist/web-components/elements/trading-chart.js +8 -0
  1160. package/dist/web-components/elements/trading-chart.js.map +1 -0
  1161. package/dist/web-components/html-custom-data.json +1192 -29
  1162. package/dist/web-components/types/react.d.ts +435 -0
  1163. package/dist/web-components/types/solid.d.ts +321 -0
  1164. package/dist/web-components/types/svelte.d.ts +321 -0
  1165. package/dist/web-components/types/vue.d.ts +359 -0
  1166. package/package.json +113 -1
@@ -0,0 +1,6 @@
1
+ import { LayoutContext, LayoutResult } from './scene.js';
2
+ import { SunburstChartOptions } from './types.js';
3
+ /** Valid part of a drill path (names from the root to a focusable parent) */
4
+ export declare const resolveSunburstPath: (o: SunburstChartOptions, path: readonly string[], hidden: ReadonlySet<number>) => string[];
5
+ export declare const sunburstValues: (o: SunburstChartOptions, hidden: ReadonlySet<number>, focusPath: readonly string[], out: Map<string, number>) => void;
6
+ export declare const layoutSunburst: (o: SunburstChartOptions, c: LayoutContext) => LayoutResult;
@@ -0,0 +1,261 @@
1
+ import { mix as e, toCss as t } from "../color.js";
2
+ import { font as n } from "../overlay.js";
3
+ import { interpolate as r } from "./labels.js";
4
+ import { TAU as i, clamp as a, ellipsize as o, emptyLayout as s, finite as c, positive as l, readableFill as u, relativeLuminance as d, resolveWith as f, sum as p, textOn as m, uniqueKeys as h, upright as g } from "./scene.js";
5
+ //#region src/engine/shapes/sunburst.ts
6
+ var _ = 18, v = (e, t) => {
7
+ let n = 0, r = (e, i, a) => {
8
+ let o = h(e.map((e) => e.name));
9
+ return e.map((e, s) => {
10
+ let c = i ? a : s, u = {
11
+ node: e,
12
+ key: `${i?.key ?? ""}/${o[s]}`,
13
+ path: [...i?.path ?? [], e.name],
14
+ top: c,
15
+ index: n++,
16
+ depth: (i?.depth ?? 0) + 1,
17
+ target: 0,
18
+ parent: i,
19
+ children: []
20
+ };
21
+ return e.children?.length ? (u.children = r(e.children, u, c), u.target = p(u.children.map((e) => e.target))) : u.target = t.has(c) ? 0 : l(e.value), u;
22
+ });
23
+ };
24
+ return r(e ?? [], null, 0);
25
+ }, y = (e, t) => {
26
+ let n = e, r = null;
27
+ for (let e of t) {
28
+ let t = n.find((t) => t.node.name === e && t.children.length && t.target > 0);
29
+ if (!t) break;
30
+ r = t, n = t.children;
31
+ }
32
+ return r;
33
+ }, b = (e, t, n) => y(v(e.data, n), t)?.path ?? [], x = (e) => e.reduce((e, t) => t.target > 0 ? Math.max(e, t.children.length ? x(t.children) : t.depth) : e, 0), S = (e, t, n) => {
34
+ let r = p(e.map((e) => e.target)), i = t ? t.depth : 0, a = 0, o = 1;
35
+ if (t && r > 0) {
36
+ let n = 0;
37
+ for (let r = t; r; r = r.parent) {
38
+ let t = r.parent ? r.parent.children : e;
39
+ for (let e of t) {
40
+ if (e === r) break;
41
+ n += e.target;
42
+ }
43
+ }
44
+ a = n / r, o = a + t.target / r;
45
+ }
46
+ let s = Math.max(1, x(t ? t.children : e) - i);
47
+ return {
48
+ a0: a,
49
+ a1: o,
50
+ depth: i,
51
+ levels: Math.min(typeof n == "number" && n >= 1 ? Math.floor(n) : s, s)
52
+ };
53
+ }, C = (e, t, n, r) => {
54
+ let i = v(e.data, t), a = (e) => e.forEach((e) => {
55
+ e.children.length ? a(e.children) : r.set(e.key, e.target);
56
+ });
57
+ a(i);
58
+ let o = S(i, y(i, n), e.levels);
59
+ r.set("@a0", o.a0), r.set("@a1", o.a1), r.set("@d", o.depth), r.set("@levels", o.levels);
60
+ }, w = (l, h) => {
61
+ let { theme: b, area: x, measure: C, hidden: w } = h, T = v(l.data, w), E = p(T.map((e) => e.target)), D = /* @__PURE__ */ new Map(), O = (e) => {
62
+ let t = e.children.length ? p(e.children.map(O)) : Math.max(0, h.value(e.key, e.target));
63
+ return D.set(e, t), t;
64
+ }, k = p(T.map(O));
65
+ if (E <= 0 && k <= 1e-9) return s(h);
66
+ let A = y(T, h.focus), j = S(T, A, l.levels), M = h.value("@a0", j.a0), N = h.value("@a1", j.a1);
67
+ N - M > 1e-6 || (M = 0, N = 1);
68
+ let ee = h.value("@d", j.depth), P = x.x + x.width / 2, F = x.y + x.height / 2, I = Math.max(4, Math.min(x.width, x.height) / 2 - 2), L = I * a(c(l.innerRadius, .26), 0, .8), te = Math.max(1, Math.floor((I - L) / _)), ne = Math.max(1, h.value("@levels", j.levels)), R = (I - L) / Math.min(ne, te), re = a(h.enter, 0, 1), z = c(l.startAngle) * Math.PI / 180 - Math.PI / 2, B = (e) => z + a((e - M) / (N - M), 0, 1) * i * re, V = Math.max(0, c(l.padAngle, 1)), ie = Math.max(0, c(l.cornerRadius, 2)), H = l.labels ?? "auto", U = n(b, 11), ae = d(b.background) < .2, W = [], G = [], K = [], q = /* @__PURE__ */ new Map(), J = (e) => [e.index, ...e.children.flatMap(J)], oe = (e) => {
69
+ let t = [];
70
+ for (let n = e.parent; n; n = n.parent) t.push(n.index);
71
+ return t;
72
+ }, se = (e, t, n, r, i, s, c, l) => {
73
+ if (H === "none") return;
74
+ let u = n - t, d = i - r, f = (r + i) / 2, p = (t + n) / 2, h = C(e, U), _ = 0;
75
+ if (H !== "radial" && d >= 15) {
76
+ let e = (d - 11) / 2 - 1, t = 2 * f * Math.acos(a(1 - e / f, -1, 1));
77
+ _ = Math.max(0, Math.min(u * f - 8, t));
78
+ }
79
+ let v = 0;
80
+ H !== "tangential" && u * (r + 4) >= 13 && (v = Math.max(0, d - 10));
81
+ let y = _ > 0 && (h <= _ || _ >= v || H === "tangential"), b = y ? _ : v;
82
+ if (b <= 0) return;
83
+ let x = o(e, b, U, C);
84
+ !x || x !== e && x.length < 4 || G.push({
85
+ kind: "text",
86
+ x: P + f * Math.cos(p),
87
+ y: F + f * Math.sin(p),
88
+ text: x,
89
+ font: U,
90
+ color: m(s),
91
+ align: "center",
92
+ baseline: "middle",
93
+ rotate: g(y ? p + Math.PI / 2 : p),
94
+ hit: c.index,
95
+ also: l
96
+ });
97
+ }, Y = (t, n) => {
98
+ t.forEach((t, r) => {
99
+ let i = n ? t.node.color ? f(b, t.node.color, n) : e(n, b.background, .14 + r % 3 * .06) : h.color(t.node.color, t.top);
100
+ q.set(t, i), t.children.length && Y(t.children, i);
101
+ });
102
+ };
103
+ Y(T, null);
104
+ let X = /* @__PURE__ */ new Map(), Z = (e, t) => {
105
+ let n = t;
106
+ for (let t of e) X.set(t, n), t.children.length && Z(t.children, n), n += (D.get(t) ?? 0) / Math.max(1e-12, k);
107
+ };
108
+ Z(T, 0);
109
+ let Q = (n) => {
110
+ for (let i of n) {
111
+ let n = D.get(i) ?? 0;
112
+ if (n <= 1e-9) continue;
113
+ let a = X.get(i) ?? 0, o = a + n / Math.max(1e-12, k), s = B(a), c = B(o), l = i.depth - ee, d = Math.max(L, L + (l - 1) * R), f = Math.min(I, L + l * R);
114
+ if (c - s > 1e-4 && f - d > .5) {
115
+ let n = q.get(i) ?? b.primary, a = u(ae ? e(n, b.background, .12) : n, 3), o = [...oe(i), ...J(i).slice(1)];
116
+ if (W.push({
117
+ kind: "sector",
118
+ cx: P,
119
+ cy: F,
120
+ r0: d,
121
+ r1: f,
122
+ a0: s,
123
+ a1: c,
124
+ pad: V,
125
+ corner: ie,
126
+ fill: t(a),
127
+ hit: i.index,
128
+ also: o
129
+ }), se(i.node.name, s, c, d, f, a, i, o), i.target > 0) {
130
+ let e = E > 0 ? i.target / E : 0, n = i.parent?.target ?? 0, o = (d + f) / 2, l = (s + c) / 2;
131
+ K.push({
132
+ index: i.index,
133
+ name: i.node.name,
134
+ value: i.target,
135
+ percent: e,
136
+ share: h.percent(e),
137
+ color: t(a),
138
+ path: i.path,
139
+ x: P + o * Math.cos(l),
140
+ y: F + o * Math.sin(l),
141
+ rows: [
142
+ {
143
+ name: h.labels.value,
144
+ value: h.format(i.target)
145
+ },
146
+ {
147
+ name: h.labels.share,
148
+ value: h.percent(e)
149
+ },
150
+ ...i.parent && n > 0 ? [{
151
+ name: r(h.labels.ofName, { name: i.parent.node.name }),
152
+ value: h.percent(i.target / n)
153
+ }] : []
154
+ ],
155
+ ...i.children.length ? { drill: i.path } : {}
156
+ });
157
+ }
158
+ }
159
+ i.children.length && f < I - .5 && Q(i.children);
160
+ }
161
+ };
162
+ Q(T), W.push(...G);
163
+ let $ = L - 3;
164
+ if ($ >= 14) {
165
+ let r = a($ * .3, 12, 24);
166
+ if (A) {
167
+ let r = q.get(A) ?? b.primary, i = t(e(r, b.background, .84)), s = t(r), c = A.children.flatMap(J);
168
+ W.push({
169
+ kind: "circle",
170
+ cx: P,
171
+ cy: F,
172
+ r: $,
173
+ fill: i,
174
+ stroke: t(r, .5),
175
+ lineWidth: 1,
176
+ hit: A.index,
177
+ also: c
178
+ });
179
+ let l = n(b, a($ * .2, 11, 14), 600), u = o(A.node.name, $ * 1.6, l, C), d = h.format(A.target), f = $ >= 30, p = f ? F - 2 : F + 4, m = p - (f ? 18 : 12);
180
+ $ >= 24 && W.push({
181
+ kind: "line",
182
+ points: [
183
+ P - 5,
184
+ m + 3,
185
+ P,
186
+ m - 2,
187
+ P + 5,
188
+ m + 3
189
+ ],
190
+ color: t(b.textMuted),
191
+ width: 1.5,
192
+ hit: A.index,
193
+ also: c
194
+ }), u && W.push({
195
+ kind: "text",
196
+ x: P,
197
+ y: p,
198
+ text: u,
199
+ font: l,
200
+ color: t(b.text),
201
+ align: "center",
202
+ baseline: "middle",
203
+ hit: A.index,
204
+ also: c
205
+ }), f && W.push({
206
+ kind: "text",
207
+ x: P,
208
+ y: F + 16,
209
+ text: o(d, $ * 1.6, n(b, 12), C),
210
+ font: n(b, 12),
211
+ color: t(b.textMuted),
212
+ align: "center",
213
+ baseline: "middle",
214
+ hit: A.index,
215
+ also: c
216
+ });
217
+ let g = E > 0 ? A.target / E : 0;
218
+ K.push({
219
+ index: A.index,
220
+ name: A.node.name,
221
+ value: A.target,
222
+ percent: g,
223
+ share: h.percent(g),
224
+ color: s,
225
+ path: A.path,
226
+ x: P,
227
+ y: F,
228
+ rows: [{
229
+ name: h.labels.value,
230
+ value: h.format(A.target)
231
+ }, {
232
+ name: h.labels.share,
233
+ value: h.percent(g)
234
+ }],
235
+ drill: A.path.slice(0, -1)
236
+ });
237
+ } else if (E > 0) {
238
+ let e = n(b, r, 600), i = o(h.format(E), $ * 1.7, e, C);
239
+ i && W.push({
240
+ kind: "text",
241
+ x: P,
242
+ y: F,
243
+ text: i,
244
+ font: e,
245
+ color: t(b.text),
246
+ align: "center",
247
+ baseline: "middle"
248
+ });
249
+ }
250
+ }
251
+ return K.sort((e, t) => e.index - t.index), {
252
+ nodes: W,
253
+ items: K,
254
+ dim: .35,
255
+ empty: !1
256
+ };
257
+ };
258
+ //#endregion
259
+ export { w as layoutSunburst, b as resolveSunburstPath, C as sunburstValues };
260
+
261
+ //# sourceMappingURL=sunburst.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sunburst.js","names":["MIN_RING","build","count","walk","keys","uniqueKeys","nodes","nd","t","parent","top","j","b","node","sum","ch","hidden","positive","data","focusOf","list","tree","found","name","path","next","resolveSunburstPath","o","deepest","d","view","total","depth","focus","a0","a1","f","p","siblings","s","below","levels","sunburstValues","visit","out","v","focusPath","layoutSunburst","c","shown","measureShown","shownTotal","emptyLayout","target","w0","w1","cx","area","cy","R","R0","clamp","finite","fit","ring","enter","start","angle","TAU","pad","corner","mode","labelFont","font","theme","dark","relativeLuminance","labels","items","colorOf","subtree","ancestors","label","span","thick","r1","r0","rm","m","full","measure","tangential","sag","chord","radial","useTangential","room","text","ellipsize","textOn","fill","upright","color","parentColor","resolveWith","mix","fracStart","place","from","sectors","f0","f1","rel","base","readableFill","also","toCss","percent","interpolate","rc","valueSize","css","nameFont","value","showValue","nameY","chevronY","valueFont","a"],"sources":["../../../../../charts/src/engine/shapes/sunburst.ts"],"sourcesContent":["// Sunburst layout: the hierarchy as concentric rings around a center circle.\n// Drilling into a node animates the angular window (the node's share of the\n// root) and the depth: its children open to the full circle while the\n// ancestors slide into the center. Labels follow the arc or the radius,\n// whichever fits.\n\nimport { mix, toCss, type Rgba } from \"../color\";\nimport { font } from \"../overlay\";\nimport { interpolate } from \"./labels\";\nimport {\n clamp,\n ellipsize,\n emptyLayout,\n finite,\n positive,\n readableFill,\n relativeLuminance,\n resolveWith,\n sum,\n TAU,\n textOn,\n uniqueKeys,\n upright,\n type LayoutContext,\n type LayoutResult,\n type ShapeItem,\n type ShapeNode,\n} from \"./scene\";\nimport type { SunburstChartOptions, TreemapNode } from \"./types\";\n\n/** Thinnest ring, in pixels (fewer levels are shown below) */\nconst MIN_RING = 18;\n\ninterface SNode {\n node: TreemapNode;\n key: string;\n path: string[];\n /** Index of the top-level ancestor (legend) */\n top: number;\n /** Depth-first index (hover `index`) */\n index: number;\n /** 1 for the top-level nodes */\n depth: number;\n target: number;\n parent: SNode | null;\n children: SNode[];\n}\n\n/** Tree with the target values; hidden top-level nodes count 0 */\nconst build = (\n data: readonly TreemapNode[],\n hidden: ReadonlySet<number>,\n): SNode[] => {\n let count = 0;\n const walk = (\n nodes: readonly TreemapNode[],\n parent: SNode | null,\n top: number,\n ): SNode[] => {\n const keys = uniqueKeys(nodes.map((nd) => nd.name));\n return nodes.map((node, j) => {\n const t = parent ? top : j;\n const b: SNode = {\n node,\n key: `${parent?.key ?? \"\"}/${keys[j]}`,\n path: [...(parent?.path ?? []), node.name],\n top: t,\n index: count++,\n depth: (parent?.depth ?? 0) + 1,\n target: 0,\n parent,\n children: [],\n };\n if (node.children?.length) {\n b.children = walk(node.children, b, t);\n b.target = sum(b.children.map((ch) => ch.target));\n } else b.target = hidden.has(t) ? 0 : positive(node.value);\n return b;\n });\n };\n return walk(data ?? [], null, 0);\n};\n\n/**\n * The deepest node of `path` that can be focused (a parent with a value),\n * `null` for the root\n */\nconst focusOf = (tree: SNode[], path: readonly string[]): SNode | null => {\n let list = tree;\n let found: SNode | null = null;\n for (const name of path) {\n const next = list.find(\n (b) => b.node.name === name && b.children.length && b.target > 0,\n );\n if (!next) break;\n found = next;\n list = next.children;\n }\n return found;\n};\n\n/** Valid part of a drill path (names from the root to a focusable parent) */\nexport const resolveSunburstPath = (\n o: SunburstChartOptions,\n path: readonly string[],\n hidden: ReadonlySet<number>,\n): string[] => focusOf(build(o.data, hidden), path)?.path ?? [];\n\nconst deepest = (list: readonly SNode[]): number =>\n list.reduce(\n (d, b) =>\n b.target > 0\n ? Math.max(d, b.children.length ? deepest(b.children) : b.depth)\n : d,\n 0,\n );\n\n/** Angular window of the focused node (shares of the root) and depths */\nconst view = (tree: SNode[], focus: SNode | null, levels?: number) => {\n const total = sum(tree.map((b) => b.target));\n const depth = focus ? focus.depth : 0;\n let a0 = 0;\n let a1 = 1;\n if (focus && total > 0) {\n // start: shares of the previous siblings of every ancestor\n let f = 0;\n for (let p: SNode | null = focus; p; p = p.parent) {\n const siblings: SNode[] = p.parent ? p.parent.children : tree;\n for (const s of siblings) {\n if (s === p) break;\n f += s.target;\n }\n }\n a0 = f / total;\n a1 = a0 + focus.target / total;\n }\n const below = Math.max(1, deepest(focus ? focus.children : tree) - depth);\n const wanted =\n typeof levels === \"number\" && levels >= 1 ? Math.floor(levels) : below;\n return { a0, a1, depth, levels: Math.min(wanted, below) };\n};\n\nexport const sunburstValues = (\n o: SunburstChartOptions,\n hidden: ReadonlySet<number>,\n focusPath: readonly string[],\n out: Map<string, number>,\n) => {\n const tree = build(o.data, hidden);\n const visit = (nodes: SNode[]) =>\n nodes.forEach((b) => {\n if (b.children.length) visit(b.children);\n else out.set(b.key, b.target);\n });\n visit(tree);\n const v = view(tree, focusOf(tree, focusPath), o.levels);\n out.set(\"@a0\", v.a0);\n out.set(\"@a1\", v.a1);\n out.set(\"@d\", v.depth);\n out.set(\"@levels\", v.levels);\n};\n\nexport const layoutSunburst = (\n o: SunburstChartOptions,\n c: LayoutContext,\n): LayoutResult => {\n const { theme, area, measure, hidden } = c;\n const tree = build(o.data, hidden);\n const total = sum(tree.map((b) => b.target));\n // displayed (animated) values\n const shown = new Map<SNode, number>();\n const measureShown = (b: SNode): number => {\n const v = b.children.length\n ? sum(b.children.map(measureShown))\n : Math.max(0, c.value(b.key, b.target));\n shown.set(b, v);\n return v;\n };\n const shownTotal = sum(tree.map(measureShown));\n if (total <= 0 && shownTotal <= 1e-9) return emptyLayout(c);\n\n const focus = focusOf(tree, c.focus);\n const target = view(tree, focus, o.levels);\n let w0 = c.value(\"@a0\", target.a0);\n let w1 = c.value(\"@a1\", target.a1);\n if (!(w1 - w0 > 1e-6)) {\n w0 = 0;\n w1 = 1;\n }\n const d = c.value(\"@d\", target.depth);\n const cx = area.x + area.width / 2;\n const cy = area.y + area.height / 2;\n const R = Math.max(4, Math.min(area.width, area.height) / 2 - 2);\n const R0 = R * clamp(finite(o.innerRadius, 0.26), 0, 0.8);\n const fit = Math.max(1, Math.floor((R - R0) / MIN_RING));\n const levels = Math.max(1, c.value(\"@levels\", target.levels));\n const ring = (R - R0) / Math.min(levels, fit);\n const enter = clamp(c.enter, 0, 1);\n const start = (finite(o.startAngle) * Math.PI) / 180 - Math.PI / 2;\n const angle = (f: number) =>\n start + clamp((f - w0) / (w1 - w0), 0, 1) * TAU * enter;\n const pad = Math.max(0, finite(o.padAngle, 1));\n const corner = Math.max(0, finite(o.cornerRadius, 2));\n const mode = o.labels ?? \"auto\";\n const labelFont = font(theme, 11);\n const dark = relativeLuminance(theme.background) < 0.2;\n\n const nodes: ShapeNode[] = [];\n const labels: ShapeNode[] = [];\n const items: ShapeItem[] = [];\n const colorOf = new Map<SNode, Rgba>();\n const subtree = (b: SNode): number[] => [\n b.index,\n ...b.children.flatMap(subtree),\n ];\n const ancestors = (b: SNode) => {\n const out: number[] = [];\n for (let p = b.parent; p; p = p.parent) out.push(p.index);\n return out;\n };\n\n const label = (\n name: string,\n a0: number,\n a1: number,\n r0: number,\n r1: number,\n fill: Rgba,\n b: SNode,\n also: number[],\n ) => {\n if (mode === \"none\") return;\n const span = a1 - a0;\n const thick = r1 - r0;\n const rm = (r0 + r1) / 2;\n const m = (a0 + a1) / 2;\n const size = 11;\n const full = measure(name, labelFont);\n // tangential: straight text across the middle of the sector, its sag kept in the ring\n let tangential = 0;\n if (mode !== \"radial\" && thick >= size + 4) {\n const sag = (thick - size) / 2 - 1;\n const chord = 2 * rm * Math.acos(clamp(1 - sag / rm, -1, 1));\n tangential = Math.max(0, Math.min(span * rm - 8, chord));\n }\n // radial: along the radius, the sector wide enough at its inner end\n let radial = 0;\n if (mode !== \"tangential\" && span * (r0 + 4) >= size + 2)\n radial = Math.max(0, thick - 10);\n const useTangential =\n tangential > 0 &&\n (full <= tangential || tangential >= radial || mode === \"tangential\");\n const room = useTangential ? tangential : radial;\n if (room <= 0) return;\n const text = ellipsize(name, room, labelFont, measure);\n if (!text || (text !== name && text.length < 4)) return;\n labels.push({\n kind: \"text\",\n x: cx + rm * Math.cos(m),\n y: cy + rm * Math.sin(m),\n text,\n font: labelFont,\n color: textOn(fill),\n align: \"center\",\n baseline: \"middle\",\n rotate: upright(useTangential ? m + Math.PI / 2 : m),\n hit: b.index,\n also,\n });\n };\n\n const visit = (list: SNode[], parentColor: Rgba | null) => {\n list.forEach((b, j) => {\n const color = parentColor\n ? b.node.color\n ? resolveWith(theme, b.node.color, parentColor)\n : mix(parentColor, theme.background, 0.14 + (j % 3) * 0.06)\n : c.color(b.node.color, b.top);\n colorOf.set(b, color);\n if (b.children.length) visit(b.children, color);\n });\n };\n visit(tree, null);\n\n // fractions from the displayed values\n const fracStart = new Map<SNode, number>();\n const place = (list: SNode[], from: number) => {\n let f = from;\n for (const b of list) {\n fracStart.set(b, f);\n if (b.children.length) place(b.children, f);\n f += (shown.get(b) ?? 0) / Math.max(1e-12, shownTotal);\n }\n };\n place(tree, 0);\n\n const sectors = (list: SNode[]) => {\n for (const b of list) {\n const v = shown.get(b) ?? 0;\n if (v <= 1e-9) continue;\n const f0 = fracStart.get(b) ?? 0;\n const f1 = f0 + v / Math.max(1e-12, shownTotal);\n const a0 = angle(f0);\n const a1 = angle(f1);\n const rel = b.depth - d;\n const r0 = Math.max(R0, R0 + (rel - 1) * ring);\n const r1 = Math.min(R, R0 + rel * ring);\n if (a1 - a0 > 1e-4 && r1 - r0 > 0.5) {\n const base = colorOf.get(b) ?? theme.primary;\n const fill = readableFill(\n dark ? mix(base, theme.background, 0.12) : base,\n 3,\n );\n const also = [...ancestors(b), ...subtree(b).slice(1)];\n nodes.push({\n kind: \"sector\",\n cx,\n cy,\n r0,\n r1,\n a0,\n a1,\n pad,\n corner,\n fill: toCss(fill),\n hit: b.index,\n also,\n });\n label(b.node.name, a0, a1, r0, r1, fill, b, also);\n if (b.target > 0) {\n const percent = total > 0 ? b.target / total : 0;\n const parent = b.parent?.target ?? 0;\n const rm = (r0 + r1) / 2;\n const m = (a0 + a1) / 2;\n items.push({\n index: b.index,\n name: b.node.name,\n value: b.target,\n percent,\n share: c.percent(percent),\n color: toCss(fill),\n path: b.path,\n x: cx + rm * Math.cos(m),\n y: cy + rm * Math.sin(m),\n rows: [\n { name: c.labels.value, value: c.format(b.target) },\n { name: c.labels.share, value: c.percent(percent) },\n ...(b.parent && parent > 0\n ? [\n {\n name: interpolate(c.labels.ofName, {\n name: b.parent.node.name,\n }),\n value: c.percent(b.target / parent),\n },\n ]\n : []),\n ],\n ...(b.children.length ? { drill: b.path } : {}),\n });\n }\n }\n if (b.children.length && r1 < R - 0.5) sectors(b.children);\n }\n };\n sectors(tree);\n nodes.push(...labels);\n\n // center: the focused node (click to go up) or the total\n const rc = R0 - 3;\n if (rc >= 14) {\n const valueSize = clamp(rc * 0.3, 12, 24);\n if (focus) {\n const base = colorOf.get(focus) ?? theme.primary;\n const fill = toCss(mix(base, theme.background, 0.84));\n const css = toCss(base);\n const also = focus.children.flatMap(subtree);\n nodes.push({\n kind: \"circle\",\n cx,\n cy,\n r: rc,\n fill,\n stroke: toCss(base, 0.5),\n lineWidth: 1,\n hit: focus.index,\n also,\n });\n const nameFont = font(theme, clamp(rc * 0.2, 11, 14), 600);\n const name = ellipsize(focus.node.name, rc * 1.6, nameFont, measure);\n const value = c.format(focus.target);\n const showValue = rc >= 30;\n const nameY = showValue ? cy - 2 : cy + 4;\n // chevron: \"go up\"\n const chevronY = nameY - (showValue ? 18 : 12);\n if (rc >= 24)\n nodes.push({\n kind: \"line\",\n points: [\n cx - 5,\n chevronY + 3,\n cx,\n chevronY - 2,\n cx + 5,\n chevronY + 3,\n ],\n color: toCss(theme.textMuted),\n width: 1.5,\n hit: focus.index,\n also,\n });\n if (name)\n nodes.push({\n kind: \"text\",\n x: cx,\n y: nameY,\n text: name,\n font: nameFont,\n color: toCss(theme.text),\n align: \"center\",\n baseline: \"middle\",\n hit: focus.index,\n also,\n });\n if (showValue)\n nodes.push({\n kind: \"text\",\n x: cx,\n y: cy + 16,\n text: ellipsize(value, rc * 1.6, font(theme, 12), measure),\n font: font(theme, 12),\n color: toCss(theme.textMuted),\n align: \"center\",\n baseline: \"middle\",\n hit: focus.index,\n also,\n });\n const percent = total > 0 ? focus.target / total : 0;\n items.push({\n index: focus.index,\n name: focus.node.name,\n value: focus.target,\n percent,\n share: c.percent(percent),\n color: css,\n path: focus.path,\n x: cx,\n y: cy,\n rows: [\n { name: c.labels.value, value: c.format(focus.target) },\n { name: c.labels.share, value: c.percent(percent) },\n ],\n drill: focus.path.slice(0, -1),\n });\n } else if (total > 0) {\n const valueFont = font(theme, valueSize, 600);\n const text = ellipsize(c.format(total), rc * 1.7, valueFont, measure);\n if (text)\n nodes.push({\n kind: \"text\",\n x: cx,\n y: cy,\n text,\n font: valueFont,\n color: toCss(theme.text),\n align: \"center\",\n baseline: \"middle\",\n });\n }\n }\n items.sort((a, b) => a.index - b.index);\n\n return { nodes, items, dim: 0.35, empty: false };\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("../color.cjs"),t=require("../overlay.cjs"),n=require("./scene.cjs");var r=20,i=(e,t)=>{let r=e.map(()=>({x:t.x,y:t.y,width:0,height:0})),i=n.sum(e.map(e=>Math.max(0,e)));if(i<=0||t.width<=0||t.height<=0)return r;let a=t.width*t.height/i,o=e.map(e=>Math.max(0,e)*a),{x:s,y:c,width:l,height:u}=t,d=(e,t,n,r)=>{let i=e*e,a=r*r;return Math.max(a*n/i,i/(a*t))},f=(e,t)=>{if(l>=u){let n=u>0?Math.min(l,t/u):0,i=c;for(let t of e){let e=n>0?o[t]/n:0;r[t]={x:s,y:i,width:n,height:e},i+=e}s+=n,l=Math.max(0,l-n)}else{let n=l>0?Math.min(u,t/l):0,i=s;for(let t of e){let e=n>0?o[t]/n:0;r[t]={x:i,y:c,width:e,height:n},i+=e}c+=n,u=Math.max(0,u-n)}},p=[],m=0,h=1/0,g=0;return o.forEach((e,t)=>{if(!(e<=0)){if(p.length){let t=Math.min(l,u);d(m+e,Math.min(h,e),Math.max(g,e),t)>d(m,h,g,t)&&(f(p,m),p=[],m=0,h=1/0,g=0)}p.push(t),m+=e,h=Math.min(h,e),g=Math.max(g,e)}}),p.length&&f(p,m),r},a=(e,t)=>{let r=0,i=(e,a,o,s)=>{let c=n.uniqueKeys(e.map(e=>e.name));return e.map((e,l)=>{let u=o.length?s:l,d=`${a}/${c[l]}`,f=[...o,e.name];if(e.children?.length){let t=i(e.children,d,f,u);return{node:e,key:d,path:f,top:u,leaf:-1,target:n.sum(t.map(e=>e.target)),children:t}}return{node:e,key:d,path:f,top:u,leaf:r++,target:t.has(u)?0:n.positive(e.value),children:[]}})};return i(e.data,``,[],0)},o=(e,t,n)=>{let r=e=>e.forEach(e=>{e.children.length?r(e.children):n.set(e.key,e.target)});r(a(e,t))},s=(e,t)=>({x:e.x+t,y:e.y+t,width:Math.max(0,e.width-2*t),height:Math.max(0,e.height-2*t)}),c=(o,c)=>{let{theme:l,area:u,measure:d,hidden:f}=c,p=a(o,f),m=n.sum(p.map(e=>e.target)),h=new Map,g=e=>{let t=e.children.length?n.sum(e.children.map(g)):Math.max(0,c.value(e.key,e.target));return h.set(e,t),t},_=n.sum(p.map(g));if(m<=0&&_<=1e-9)return n.emptyLayout(c);let v=Math.max(0,n.finite(o.gap,2)),y=o.headers!==!1,b=t.font(l,12,500),x=t.font(l,11),S=t.font(l,11,600),C=[],w=[],T=n.relativeLuminance(l.background)<.2,E=(t,a,o)=>{let u=t.filter(e=>(h.get(e)??0)>1e-9).sort((e,t)=>(h.get(t)??0)-(h.get(e)??0)),f=i(u.map(e=>h.get(e)??0),a),p=Math.min(.14,.5/Math.max(1,u.length-1));u.forEach((t,i)=>{let a=s(f[i],v/2);if(a.width<1||a.height<1)return;let u=o?t.node.color?n.resolveWith(l,t.node.color,o):e.mix(o,l.background,i*p):c.color(t.node.color,t.top);if(t.children.length){let i=a;if(y&&a.height>34&&a.width>36){C.push({kind:`rect`,x:a.x,y:a.y,width:a.width,height:a.height,radius:4,fill:e.toCss(u,.14)});let o=n.ellipsize(t.node.name,a.width-12,S,d);o&&C.push({kind:`text`,x:a.x+6,y:a.y+r/2+1,text:o,font:S,color:e.toCss(l.text,.85),align:`left`,baseline:`middle`}),i={x:a.x+2,y:a.y+r,width:a.width-4,height:a.height-r-2}}E(t.children,i,u);return}let h=n.readableFill(T?e.mix(u,l.background,.18):u),g=e.toCss(h);if(C.push({kind:`rect`,x:a.x,y:a.y,width:a.width,height:a.height,radius:Math.min(4,a.width/2,a.height/2),fill:g,hit:t.leaf,brighten:!0}),a.width>=36&&a.height>=22){let e=n.textOn(h),r=n.ellipsize(t.node.name,a.width-12,b,d);r&&C.push({kind:`text`,x:a.x+6,y:a.y+6,text:r,font:b,color:e,align:`left`,baseline:`top`,hit:t.leaf});let i=c.format(t.target);r&&a.height>=38&&d(i,x)<=a.width-12&&C.push({kind:`text`,x:a.x+6,y:a.y+22,text:i,font:x,color:e,align:`left`,baseline:`top`,hit:t.leaf})}if(t.target>0){let e=m>0?t.target/m:0;w.push({index:t.leaf,name:t.node.name,value:t.target,percent:e,share:c.percent(e),color:g,path:t.path,x:a.x+a.width/2,y:a.y+a.height/2,rows:[{name:`Value`,value:c.format(t.target)},{name:`Share`,value:c.percent(e)}]})}})};E(p,u,null),w.sort((e,t)=>e.index-t.index);let D=n.clamp(c.enter,0,1);return{nodes:C,items:w,dim:.55,empty:!1,...D<1?{enter:{alpha:D,scale:.94+.06*D,cx:u.x+u.width/2,cy:u.y+u.height/2}}:{}}};exports.layoutTreemap=c,exports.squarify=i,exports.treemapValues=o;
1
+ const e=require("../color.cjs"),t=require("../overlay.cjs"),n=require("./scene.cjs");var r=20,i=(e,t)=>{let r=e.map(()=>({x:t.x,y:t.y,width:0,height:0})),i=n.sum(e.map(e=>Math.max(0,e)));if(i<=0||t.width<=0||t.height<=0)return r;let a=t.width*t.height/i,o=e.map(e=>Math.max(0,e)*a),{x:s,y:c,width:l,height:u}=t,d=(e,t,n,r)=>{let i=e*e,a=r*r;return Math.max(a*n/i,i/(a*t))},f=(e,t)=>{if(l>=u){let n=u>0?Math.min(l,t/u):0,i=c;for(let t of e){let e=n>0?o[t]/n:0;r[t]={x:s,y:i,width:n,height:e},i+=e}s+=n,l=Math.max(0,l-n)}else{let n=l>0?Math.min(u,t/l):0,i=s;for(let t of e){let e=n>0?o[t]/n:0;r[t]={x:i,y:c,width:e,height:n},i+=e}c+=n,u=Math.max(0,u-n)}},p=[],m=0,h=1/0,g=0;return o.forEach((e,t)=>{if(!(e<=0)){if(p.length){let t=Math.min(l,u);d(m+e,Math.min(h,e),Math.max(g,e),t)>d(m,h,g,t)&&(f(p,m),p=[],m=0,h=1/0,g=0)}p.push(t),m+=e,h=Math.min(h,e),g=Math.max(g,e)}}),p.length&&f(p,m),r},a=(e,t)=>{let r=0,i=(e,a,o,s)=>{let c=n.uniqueKeys(e.map(e=>e.name));return e.map((e,l)=>{let u=o.length?s:l,d=`${a}/${c[l]}`,f=[...o,e.name];if(e.children?.length){let t=i(e.children,d,f,u);return{node:e,key:d,path:f,top:u,leaf:-1,target:n.sum(t.map(e=>e.target)),children:t}}return{node:e,key:d,path:f,top:u,leaf:r++,target:t.has(u)?0:n.positive(e.value),children:[]}})};return i(e.data,``,[],0)},o=(e,t,n)=>{let r=e=>e.forEach(e=>{e.children.length?r(e.children):n.set(e.key,e.target)});r(a(e,t))},s=(e,t)=>({x:e.x+t,y:e.y+t,width:Math.max(0,e.width-2*t),height:Math.max(0,e.height-2*t)}),c=(o,c)=>{let{theme:l,area:u,measure:d,hidden:f}=c,p=a(o,f),m=n.sum(p.map(e=>e.target)),h=new Map,g=e=>{let t=e.children.length?n.sum(e.children.map(g)):Math.max(0,c.value(e.key,e.target));return h.set(e,t),t},_=n.sum(p.map(g));if(m<=0&&_<=1e-9)return n.emptyLayout(c);let v=Math.max(0,n.finite(o.gap,2)),y=o.headers!==!1,b=t.font(l,12,500),x=t.font(l,11),S=t.font(l,11,600),C=[],w=[],T=n.relativeLuminance(l.background)<.2,E=(t,a,o)=>{let u=t.filter(e=>(h.get(e)??0)>1e-9).sort((e,t)=>(h.get(t)??0)-(h.get(e)??0)),f=i(u.map(e=>h.get(e)??0),a),p=Math.min(.14,.5/Math.max(1,u.length-1));u.forEach((t,i)=>{let a=s(f[i],v/2);if(a.width<1||a.height<1)return;let u=o?t.node.color?n.resolveWith(l,t.node.color,o):e.mix(o,l.background,i*p):c.color(t.node.color,t.top);if(t.children.length){let i=a;if(y&&a.height>34&&a.width>36){C.push({kind:`rect`,x:a.x,y:a.y,width:a.width,height:a.height,radius:4,fill:e.toCss(u,.14)});let o=n.ellipsize(t.node.name,a.width-12,S,d);o&&C.push({kind:`text`,x:a.x+6,y:a.y+r/2+1,text:o,font:S,color:e.toCss(l.text,.85),align:`left`,baseline:`middle`}),i={x:a.x+2,y:a.y+r,width:a.width-4,height:a.height-r-2}}E(t.children,i,u);return}let h=n.readableFill(T?e.mix(u,l.background,.18):u),g=e.toCss(h);if(C.push({kind:`rect`,x:a.x,y:a.y,width:a.width,height:a.height,radius:Math.min(4,a.width/2,a.height/2),fill:g,hit:t.leaf,brighten:!0}),a.width>=36&&a.height>=22){let e=n.textOn(h),r=n.ellipsize(t.node.name,a.width-12,b,d);r&&C.push({kind:`text`,x:a.x+6,y:a.y+6,text:r,font:b,color:e,align:`left`,baseline:`top`,hit:t.leaf});let i=c.format(t.target);r&&a.height>=38&&d(i,x)<=a.width-12&&C.push({kind:`text`,x:a.x+6,y:a.y+22,text:i,font:x,color:e,align:`left`,baseline:`top`,hit:t.leaf})}if(t.target>0){let e=m>0?t.target/m:0;w.push({index:t.leaf,name:t.node.name,value:t.target,percent:e,share:c.percent(e),color:g,path:t.path,x:a.x+a.width/2,y:a.y+a.height/2,rows:[{name:c.labels.value,value:c.format(t.target)},{name:c.labels.share,value:c.percent(e)}]})}})};E(p,u,null),w.sort((e,t)=>e.index-t.index);let D=n.clamp(c.enter,0,1);return{nodes:C,items:w,dim:.55,empty:!1,...D<1?{enter:{alpha:D,scale:.94+.06*D,cx:u.x+u.width/2,cy:u.y+u.height/2}}:{}}};exports.layoutTreemap=c,exports.squarify=i,exports.treemapValues=o;
2
2
  //# sourceMappingURL=treemap.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"treemap.cjs","names":["sum","uniqueKeys","positive","emptyLayout","finite","font","relativeLuminance","resolveWith","mix","toCss","ellipsize","readableFill","textOn","clamp","require_color","require_overlay","require_scene","HEADER","squarify","out","values","rect","total","v","scale","areas","w","h","worst","s2","s","side2","side","max","min","place","cw","yy","y","i","row","hh","rh","xx","x","ww","rowSum","rowMin","rowMax","a","build","leafCount","walk","keys","nodes","nd","t","parentPath","top","j","key","parentKey","path","node","children","ch","hidden","o","treemapValues","visit","b","shrink","r","d","layoutTreemap","tree","rootTotal","shown","measureShown","shownTotal","gap","headers","nameFont","theme","valueFont","headerFont","items","dark","level","sorted","list","rects","step","cell","color","parentColor","content","title","measure","fill","css","ink","name","value","percent","area","enter"],"sources":["../../../../../charts/src/engine/shapes/treemap.ts"],"sourcesContent":["// Treemap layout: squarified rectangles, parent headers, a palette color per\n// top-level node and lighter shades for its children.\n\nimport { mix, toCss, type Rgba } from \"../color\";\nimport { font } from \"../overlay\";\nimport {\n clamp,\n ellipsize,\n emptyLayout,\n finite,\n positive,\n readableFill,\n relativeLuminance,\n resolveWith,\n sum,\n textOn,\n uniqueKeys,\n type LayoutContext,\n type LayoutResult,\n type ShapeItem,\n type ShapeNode,\n type ShapeRect,\n} from \"./scene\";\nimport type { TreemapChartOptions, TreemapNode } from \"./types\";\n\nconst HEADER = 20;\n\n/**\n * Squarified treemap (Bruls et al.): rectangles of areas proportional to\n * `values` (best sorted descending) filling `rect`, with aspect ratios close to 1.\n */\nexport const squarify = (\n values: readonly number[],\n rect: ShapeRect,\n): ShapeRect[] => {\n const out: ShapeRect[] = values.map(() => ({\n x: rect.x,\n y: rect.y,\n width: 0,\n height: 0,\n }));\n const total = sum(values.map((v) => Math.max(0, v)));\n if (total <= 0 || rect.width <= 0 || rect.height <= 0) return out;\n const scale = (rect.width * rect.height) / total;\n const areas = values.map((v) => Math.max(0, v) * scale);\n let { x, y, width: w, height: h } = rect;\n\n const worst = (s: number, min: number, max: number, side: number) => {\n const s2 = s * s;\n const side2 = side * side;\n return Math.max((side2 * max) / s2, s2 / (side2 * min));\n };\n const place = (row: number[], s: number) => {\n if (w >= h) {\n const cw = h > 0 ? Math.min(w, s / h) : 0;\n let yy = y;\n for (const i of row) {\n const hh = cw > 0 ? areas[i] / cw : 0;\n out[i] = { x, y: yy, width: cw, height: hh };\n yy += hh;\n }\n x += cw;\n w = Math.max(0, w - cw);\n } else {\n const rh = w > 0 ? Math.min(h, s / w) : 0;\n let xx = x;\n for (const i of row) {\n const ww = rh > 0 ? areas[i] / rh : 0;\n out[i] = { x: xx, y, width: ww, height: rh };\n xx += ww;\n }\n y += rh;\n h = Math.max(0, h - rh);\n }\n };\n\n let row: number[] = [];\n let rowSum = 0;\n let rowMin = Infinity;\n let rowMax = 0;\n areas.forEach((a, i) => {\n if (a <= 0) return;\n if (row.length) {\n const side = Math.min(w, h);\n const next = worst(\n rowSum + a,\n Math.min(rowMin, a),\n Math.max(rowMax, a),\n side,\n );\n if (next > worst(rowSum, rowMin, rowMax, side)) {\n place(row, rowSum);\n row = [];\n rowSum = 0;\n rowMin = Infinity;\n rowMax = 0;\n }\n }\n row.push(i);\n rowSum += a;\n rowMin = Math.min(rowMin, a);\n rowMax = Math.max(rowMax, a);\n });\n if (row.length) place(row, rowSum);\n return out;\n};\n\ninterface Built {\n node: TreemapNode;\n key: string;\n path: string[];\n top: number;\n /** Index in the flattened leaves (leaves only) */\n leaf: number;\n target: number;\n children: Built[];\n}\n\n/** Tree with the target values; hidden top-level nodes count 0 */\nconst build = (\n o: TreemapChartOptions,\n hidden: ReadonlySet<number>,\n): Built[] => {\n let leafCount = 0;\n const walk = (\n nodes: readonly TreemapNode[],\n parentKey: string,\n parentPath: string[],\n top: number,\n ): Built[] => {\n const keys = uniqueKeys(nodes.map((nd) => nd.name));\n return nodes.map((node, j) => {\n const t = parentPath.length ? top : j;\n const key = `${parentKey}/${keys[j]}`;\n const path = [...parentPath, node.name];\n if (node.children?.length) {\n const children = walk(node.children, key, path, t);\n return {\n node,\n key,\n path,\n top: t,\n leaf: -1,\n target: sum(children.map((ch) => ch.target)),\n children,\n };\n }\n return {\n node,\n key,\n path,\n top: t,\n leaf: leafCount++,\n target: hidden.has(t) ? 0 : positive(node.value),\n children: [],\n };\n });\n };\n return walk(o.data, \"\", [], 0);\n};\n\nexport const treemapValues = (\n o: TreemapChartOptions,\n hidden: ReadonlySet<number>,\n out: Map<string, number>,\n) => {\n const visit = (nodes: Built[]) =>\n nodes.forEach((b) => {\n if (b.children.length) visit(b.children);\n else out.set(b.key, b.target);\n });\n visit(build(o, hidden));\n};\n\n/** Leaves in the flattened order (the hover / click `index`) */\nexport const treemapLeaves = (data: readonly TreemapNode[]) => {\n const leaves: { node: TreemapNode; path: string[] }[] = [];\n const visit = (nodes: readonly TreemapNode[], path: string[]) =>\n nodes.forEach((node) => {\n const p = [...path, node.name];\n if (node.children?.length) visit(node.children, p);\n else leaves.push({ node, path: p });\n });\n visit(data, []);\n return leaves;\n};\n\nconst shrink = (r: ShapeRect, d: number): ShapeRect => ({\n x: r.x + d,\n y: r.y + d,\n width: Math.max(0, r.width - 2 * d),\n height: Math.max(0, r.height - 2 * d),\n});\n\nexport const layoutTreemap = (\n o: TreemapChartOptions,\n c: LayoutContext,\n): LayoutResult => {\n const { theme, area, measure, hidden } = c;\n const tree = build(o, hidden);\n const rootTotal = sum(tree.map((b) => b.target));\n // displayed (animated) values\n const shown = new Map<Built, number>();\n const measureShown = (b: Built): number => {\n const v = b.children.length\n ? sum(b.children.map(measureShown))\n : Math.max(0, c.value(b.key, b.target));\n shown.set(b, v);\n return v;\n };\n const shownTotal = sum(tree.map(measureShown));\n if (rootTotal <= 0 && shownTotal <= 1e-9) return emptyLayout(c);\n\n const gap = Math.max(0, finite(o.gap, 2));\n const headers = o.headers !== false;\n const nameFont = font(theme, 12, 500);\n const valueFont = font(theme, 11);\n const headerFont = font(theme, 11, 600);\n const nodes: ShapeNode[] = [];\n const items: ShapeItem[] = [];\n // dark themes: fills slightly toward the background so that labels read well\n const dark = relativeLuminance(theme.background) < 0.2;\n\n const level = (list: Built[], rect: ShapeRect, parentColor: Rgba | null) => {\n const sorted = list\n .filter((b) => (shown.get(b) ?? 0) > 1e-9)\n .sort((a, b) => (shown.get(b) ?? 0) - (shown.get(a) ?? 0));\n const rects = squarify(\n sorted.map((b) => shown.get(b) ?? 0),\n rect,\n );\n const step = Math.min(0.14, 0.5 / Math.max(1, sorted.length - 1));\n sorted.forEach((b, j) => {\n const cell = shrink(rects[j], gap / 2);\n if (cell.width < 1 || cell.height < 1) return;\n const color = parentColor\n ? b.node.color\n ? resolveWith(theme, b.node.color, parentColor)\n : mix(parentColor, theme.background, j * step)\n : c.color(b.node.color, b.top);\n if (b.children.length) {\n let content = cell;\n if (headers && cell.height > HEADER + 14 && cell.width > 36) {\n nodes.push({\n kind: \"rect\",\n x: cell.x,\n y: cell.y,\n width: cell.width,\n height: cell.height,\n radius: 4,\n fill: toCss(color, 0.14),\n });\n const title = ellipsize(\n b.node.name,\n cell.width - 12,\n headerFont,\n measure,\n );\n if (title)\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + HEADER / 2 + 1,\n text: title,\n font: headerFont,\n color: toCss(theme.text, 0.85),\n align: \"left\",\n baseline: \"middle\",\n });\n content = {\n x: cell.x + 2,\n y: cell.y + HEADER,\n width: cell.width - 4,\n height: cell.height - HEADER - 2,\n };\n }\n level(b.children, content, color);\n return;\n }\n const fill = readableFill(\n dark ? mix(color, theme.background, 0.18) : color,\n );\n const css = toCss(fill);\n nodes.push({\n kind: \"rect\",\n x: cell.x,\n y: cell.y,\n width: cell.width,\n height: cell.height,\n radius: Math.min(4, cell.width / 2, cell.height / 2),\n fill: css,\n hit: b.leaf,\n brighten: true,\n });\n if (cell.width >= 36 && cell.height >= 22) {\n const ink = textOn(fill);\n const name = ellipsize(b.node.name, cell.width - 12, nameFont, measure);\n if (name)\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + 6,\n text: name,\n font: nameFont,\n color: ink,\n align: \"left\",\n baseline: \"top\",\n hit: b.leaf,\n });\n const value = c.format(b.target);\n if (\n name &&\n cell.height >= 38 &&\n measure(value, valueFont) <= cell.width - 12\n )\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + 22,\n text: value,\n font: valueFont,\n color: ink,\n align: \"left\",\n baseline: \"top\",\n hit: b.leaf,\n });\n }\n if (b.target > 0) {\n const percent = rootTotal > 0 ? b.target / rootTotal : 0;\n items.push({\n index: b.leaf,\n name: b.node.name,\n value: b.target,\n percent,\n share: c.percent(percent),\n color: css,\n path: b.path,\n x: cell.x + cell.width / 2,\n y: cell.y + cell.height / 2,\n rows: [\n { name: \"Value\", value: c.format(b.target) },\n { name: \"Share\", value: c.percent(percent) },\n ],\n });\n }\n });\n };\n level(tree, area, null);\n items.sort((a, b) => a.index - b.index);\n\n const enter = clamp(c.enter, 0, 1);\n return {\n nodes,\n items,\n dim: 0.55,\n empty: false,\n ...(enter < 1\n ? {\n enter: {\n alpha: enter,\n scale: 0.94 + 0.06 * enter,\n cx: area.x + area.width / 2,\n cy: area.y + area.height / 2,\n },\n }\n : {}),\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"treemap.cjs","names":["sum","uniqueKeys","positive","emptyLayout","finite","font","relativeLuminance","resolveWith","mix","toCss","ellipsize","readableFill","textOn","clamp","require_color","require_overlay","require_scene","HEADER","squarify","out","values","rect","total","v","scale","areas","w","h","worst","s2","s","side2","side","max","min","place","cw","yy","y","i","row","hh","rh","xx","x","ww","rowSum","rowMin","rowMax","a","build","leafCount","walk","keys","nodes","nd","t","parentPath","top","j","key","parentKey","path","node","children","ch","hidden","o","treemapValues","visit","b","shrink","r","d","layoutTreemap","tree","rootTotal","shown","measureShown","shownTotal","gap","headers","nameFont","theme","valueFont","headerFont","items","dark","level","sorted","list","rects","step","cell","color","parentColor","content","title","measure","fill","css","ink","name","value","percent","area","enter"],"sources":["../../../../../charts/src/engine/shapes/treemap.ts"],"sourcesContent":["// Treemap layout: squarified rectangles, parent headers, a palette color per\n// top-level node and lighter shades for its children.\n\nimport { mix, toCss, type Rgba } from \"../color\";\nimport { font } from \"../overlay\";\nimport {\n clamp,\n ellipsize,\n emptyLayout,\n finite,\n positive,\n readableFill,\n relativeLuminance,\n resolveWith,\n sum,\n textOn,\n uniqueKeys,\n type LayoutContext,\n type LayoutResult,\n type ShapeItem,\n type ShapeNode,\n type ShapeRect,\n} from \"./scene\";\nimport type { TreemapChartOptions, TreemapNode } from \"./types\";\n\nconst HEADER = 20;\n\n/**\n * Squarified treemap (Bruls et al.): rectangles of areas proportional to\n * `values` (best sorted descending) filling `rect`, with aspect ratios close to 1.\n */\nexport const squarify = (\n values: readonly number[],\n rect: ShapeRect,\n): ShapeRect[] => {\n const out: ShapeRect[] = values.map(() => ({\n x: rect.x,\n y: rect.y,\n width: 0,\n height: 0,\n }));\n const total = sum(values.map((v) => Math.max(0, v)));\n if (total <= 0 || rect.width <= 0 || rect.height <= 0) return out;\n const scale = (rect.width * rect.height) / total;\n const areas = values.map((v) => Math.max(0, v) * scale);\n let { x, y, width: w, height: h } = rect;\n\n const worst = (s: number, min: number, max: number, side: number) => {\n const s2 = s * s;\n const side2 = side * side;\n return Math.max((side2 * max) / s2, s2 / (side2 * min));\n };\n const place = (row: number[], s: number) => {\n if (w >= h) {\n const cw = h > 0 ? Math.min(w, s / h) : 0;\n let yy = y;\n for (const i of row) {\n const hh = cw > 0 ? areas[i] / cw : 0;\n out[i] = { x, y: yy, width: cw, height: hh };\n yy += hh;\n }\n x += cw;\n w = Math.max(0, w - cw);\n } else {\n const rh = w > 0 ? Math.min(h, s / w) : 0;\n let xx = x;\n for (const i of row) {\n const ww = rh > 0 ? areas[i] / rh : 0;\n out[i] = { x: xx, y, width: ww, height: rh };\n xx += ww;\n }\n y += rh;\n h = Math.max(0, h - rh);\n }\n };\n\n let row: number[] = [];\n let rowSum = 0;\n let rowMin = Infinity;\n let rowMax = 0;\n areas.forEach((a, i) => {\n if (a <= 0) return;\n if (row.length) {\n const side = Math.min(w, h);\n const next = worst(\n rowSum + a,\n Math.min(rowMin, a),\n Math.max(rowMax, a),\n side,\n );\n if (next > worst(rowSum, rowMin, rowMax, side)) {\n place(row, rowSum);\n row = [];\n rowSum = 0;\n rowMin = Infinity;\n rowMax = 0;\n }\n }\n row.push(i);\n rowSum += a;\n rowMin = Math.min(rowMin, a);\n rowMax = Math.max(rowMax, a);\n });\n if (row.length) place(row, rowSum);\n return out;\n};\n\ninterface Built {\n node: TreemapNode;\n key: string;\n path: string[];\n top: number;\n /** Index in the flattened leaves (leaves only) */\n leaf: number;\n target: number;\n children: Built[];\n}\n\n/** Tree with the target values; hidden top-level nodes count 0 */\nconst build = (\n o: TreemapChartOptions,\n hidden: ReadonlySet<number>,\n): Built[] => {\n let leafCount = 0;\n const walk = (\n nodes: readonly TreemapNode[],\n parentKey: string,\n parentPath: string[],\n top: number,\n ): Built[] => {\n const keys = uniqueKeys(nodes.map((nd) => nd.name));\n return nodes.map((node, j) => {\n const t = parentPath.length ? top : j;\n const key = `${parentKey}/${keys[j]}`;\n const path = [...parentPath, node.name];\n if (node.children?.length) {\n const children = walk(node.children, key, path, t);\n return {\n node,\n key,\n path,\n top: t,\n leaf: -1,\n target: sum(children.map((ch) => ch.target)),\n children,\n };\n }\n return {\n node,\n key,\n path,\n top: t,\n leaf: leafCount++,\n target: hidden.has(t) ? 0 : positive(node.value),\n children: [],\n };\n });\n };\n return walk(o.data, \"\", [], 0);\n};\n\nexport const treemapValues = (\n o: TreemapChartOptions,\n hidden: ReadonlySet<number>,\n out: Map<string, number>,\n) => {\n const visit = (nodes: Built[]) =>\n nodes.forEach((b) => {\n if (b.children.length) visit(b.children);\n else out.set(b.key, b.target);\n });\n visit(build(o, hidden));\n};\n\n/** Leaves in the flattened order (the hover / click `index`) */\nexport const treemapLeaves = (data: readonly TreemapNode[]) => {\n const leaves: { node: TreemapNode; path: string[] }[] = [];\n const visit = (nodes: readonly TreemapNode[], path: string[]) =>\n nodes.forEach((node) => {\n const p = [...path, node.name];\n if (node.children?.length) visit(node.children, p);\n else leaves.push({ node, path: p });\n });\n visit(data, []);\n return leaves;\n};\n\nconst shrink = (r: ShapeRect, d: number): ShapeRect => ({\n x: r.x + d,\n y: r.y + d,\n width: Math.max(0, r.width - 2 * d),\n height: Math.max(0, r.height - 2 * d),\n});\n\nexport const layoutTreemap = (\n o: TreemapChartOptions,\n c: LayoutContext,\n): LayoutResult => {\n const { theme, area, measure, hidden } = c;\n const tree = build(o, hidden);\n const rootTotal = sum(tree.map((b) => b.target));\n // displayed (animated) values\n const shown = new Map<Built, number>();\n const measureShown = (b: Built): number => {\n const v = b.children.length\n ? sum(b.children.map(measureShown))\n : Math.max(0, c.value(b.key, b.target));\n shown.set(b, v);\n return v;\n };\n const shownTotal = sum(tree.map(measureShown));\n if (rootTotal <= 0 && shownTotal <= 1e-9) return emptyLayout(c);\n\n const gap = Math.max(0, finite(o.gap, 2));\n const headers = o.headers !== false;\n const nameFont = font(theme, 12, 500);\n const valueFont = font(theme, 11);\n const headerFont = font(theme, 11, 600);\n const nodes: ShapeNode[] = [];\n const items: ShapeItem[] = [];\n // dark themes: fills slightly toward the background so that labels read well\n const dark = relativeLuminance(theme.background) < 0.2;\n\n const level = (list: Built[], rect: ShapeRect, parentColor: Rgba | null) => {\n const sorted = list\n .filter((b) => (shown.get(b) ?? 0) > 1e-9)\n .sort((a, b) => (shown.get(b) ?? 0) - (shown.get(a) ?? 0));\n const rects = squarify(\n sorted.map((b) => shown.get(b) ?? 0),\n rect,\n );\n const step = Math.min(0.14, 0.5 / Math.max(1, sorted.length - 1));\n sorted.forEach((b, j) => {\n const cell = shrink(rects[j], gap / 2);\n if (cell.width < 1 || cell.height < 1) return;\n const color = parentColor\n ? b.node.color\n ? resolveWith(theme, b.node.color, parentColor)\n : mix(parentColor, theme.background, j * step)\n : c.color(b.node.color, b.top);\n if (b.children.length) {\n let content = cell;\n if (headers && cell.height > HEADER + 14 && cell.width > 36) {\n nodes.push({\n kind: \"rect\",\n x: cell.x,\n y: cell.y,\n width: cell.width,\n height: cell.height,\n radius: 4,\n fill: toCss(color, 0.14),\n });\n const title = ellipsize(\n b.node.name,\n cell.width - 12,\n headerFont,\n measure,\n );\n if (title)\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + HEADER / 2 + 1,\n text: title,\n font: headerFont,\n color: toCss(theme.text, 0.85),\n align: \"left\",\n baseline: \"middle\",\n });\n content = {\n x: cell.x + 2,\n y: cell.y + HEADER,\n width: cell.width - 4,\n height: cell.height - HEADER - 2,\n };\n }\n level(b.children, content, color);\n return;\n }\n const fill = readableFill(\n dark ? mix(color, theme.background, 0.18) : color,\n );\n const css = toCss(fill);\n nodes.push({\n kind: \"rect\",\n x: cell.x,\n y: cell.y,\n width: cell.width,\n height: cell.height,\n radius: Math.min(4, cell.width / 2, cell.height / 2),\n fill: css,\n hit: b.leaf,\n brighten: true,\n });\n if (cell.width >= 36 && cell.height >= 22) {\n const ink = textOn(fill);\n const name = ellipsize(b.node.name, cell.width - 12, nameFont, measure);\n if (name)\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + 6,\n text: name,\n font: nameFont,\n color: ink,\n align: \"left\",\n baseline: \"top\",\n hit: b.leaf,\n });\n const value = c.format(b.target);\n if (\n name &&\n cell.height >= 38 &&\n measure(value, valueFont) <= cell.width - 12\n )\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + 22,\n text: value,\n font: valueFont,\n color: ink,\n align: \"left\",\n baseline: \"top\",\n hit: b.leaf,\n });\n }\n if (b.target > 0) {\n const percent = rootTotal > 0 ? b.target / rootTotal : 0;\n items.push({\n index: b.leaf,\n name: b.node.name,\n value: b.target,\n percent,\n share: c.percent(percent),\n color: css,\n path: b.path,\n x: cell.x + cell.width / 2,\n y: cell.y + cell.height / 2,\n rows: [\n { name: c.labels.value, value: c.format(b.target) },\n { name: c.labels.share, value: c.percent(percent) },\n ],\n });\n }\n });\n };\n level(tree, area, null);\n items.sort((a, b) => a.index - b.index);\n\n const enter = clamp(c.enter, 0, 1);\n return {\n nodes,\n items,\n dim: 0.55,\n empty: false,\n ...(enter < 1\n ? {\n enter: {\n alpha: enter,\n scale: 0.94 + 0.06 * enter,\n cx: area.x + area.width / 2,\n cy: area.y + area.height / 2,\n },\n }\n : {}),\n };\n};\n"],"mappings":"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"}
@@ -182,10 +182,10 @@ var m = 20, h = (e, t) => {
182
182
  x: o.x + o.width / 2,
183
183
  y: o.y + o.height / 2,
184
184
  rows: [{
185
- name: "Value",
185
+ name: p.labels.value,
186
186
  value: p.format(n.target)
187
187
  }, {
188
- name: "Share",
188
+ name: p.labels.share,
189
189
  value: p.percent(e)
190
190
  }]
191
191
  });
@@ -1 +1 @@
1
- {"version":3,"file":"treemap.js","names":["HEADER","squarify","out","values","rect","total","sum","v","scale","areas","w","h","worst","s2","s","side2","side","max","min","place","cw","yy","y","i","row","hh","rh","xx","x","ww","rowSum","rowMin","rowMax","a","build","leafCount","walk","keys","uniqueKeys","nodes","nd","t","parentPath","top","j","key","parentKey","path","node","children","ch","hidden","positive","o","treemapValues","visit","b","shrink","r","d","layoutTreemap","c","tree","rootTotal","shown","measureShown","shownTotal","emptyLayout","gap","finite","headers","nameFont","font","theme","valueFont","headerFont","items","dark","relativeLuminance","level","sorted","list","rects","step","cell","color","parentColor","resolveWith","mix","content","toCss","title","ellipsize","measure","fill","readableFill","css","ink","textOn","name","value","percent","area","enter","clamp"],"sources":["../../../../../charts/src/engine/shapes/treemap.ts"],"sourcesContent":["// Treemap layout: squarified rectangles, parent headers, a palette color per\n// top-level node and lighter shades for its children.\n\nimport { mix, toCss, type Rgba } from \"../color\";\nimport { font } from \"../overlay\";\nimport {\n clamp,\n ellipsize,\n emptyLayout,\n finite,\n positive,\n readableFill,\n relativeLuminance,\n resolveWith,\n sum,\n textOn,\n uniqueKeys,\n type LayoutContext,\n type LayoutResult,\n type ShapeItem,\n type ShapeNode,\n type ShapeRect,\n} from \"./scene\";\nimport type { TreemapChartOptions, TreemapNode } from \"./types\";\n\nconst HEADER = 20;\n\n/**\n * Squarified treemap (Bruls et al.): rectangles of areas proportional to\n * `values` (best sorted descending) filling `rect`, with aspect ratios close to 1.\n */\nexport const squarify = (\n values: readonly number[],\n rect: ShapeRect,\n): ShapeRect[] => {\n const out: ShapeRect[] = values.map(() => ({\n x: rect.x,\n y: rect.y,\n width: 0,\n height: 0,\n }));\n const total = sum(values.map((v) => Math.max(0, v)));\n if (total <= 0 || rect.width <= 0 || rect.height <= 0) return out;\n const scale = (rect.width * rect.height) / total;\n const areas = values.map((v) => Math.max(0, v) * scale);\n let { x, y, width: w, height: h } = rect;\n\n const worst = (s: number, min: number, max: number, side: number) => {\n const s2 = s * s;\n const side2 = side * side;\n return Math.max((side2 * max) / s2, s2 / (side2 * min));\n };\n const place = (row: number[], s: number) => {\n if (w >= h) {\n const cw = h > 0 ? Math.min(w, s / h) : 0;\n let yy = y;\n for (const i of row) {\n const hh = cw > 0 ? areas[i] / cw : 0;\n out[i] = { x, y: yy, width: cw, height: hh };\n yy += hh;\n }\n x += cw;\n w = Math.max(0, w - cw);\n } else {\n const rh = w > 0 ? Math.min(h, s / w) : 0;\n let xx = x;\n for (const i of row) {\n const ww = rh > 0 ? areas[i] / rh : 0;\n out[i] = { x: xx, y, width: ww, height: rh };\n xx += ww;\n }\n y += rh;\n h = Math.max(0, h - rh);\n }\n };\n\n let row: number[] = [];\n let rowSum = 0;\n let rowMin = Infinity;\n let rowMax = 0;\n areas.forEach((a, i) => {\n if (a <= 0) return;\n if (row.length) {\n const side = Math.min(w, h);\n const next = worst(\n rowSum + a,\n Math.min(rowMin, a),\n Math.max(rowMax, a),\n side,\n );\n if (next > worst(rowSum, rowMin, rowMax, side)) {\n place(row, rowSum);\n row = [];\n rowSum = 0;\n rowMin = Infinity;\n rowMax = 0;\n }\n }\n row.push(i);\n rowSum += a;\n rowMin = Math.min(rowMin, a);\n rowMax = Math.max(rowMax, a);\n });\n if (row.length) place(row, rowSum);\n return out;\n};\n\ninterface Built {\n node: TreemapNode;\n key: string;\n path: string[];\n top: number;\n /** Index in the flattened leaves (leaves only) */\n leaf: number;\n target: number;\n children: Built[];\n}\n\n/** Tree with the target values; hidden top-level nodes count 0 */\nconst build = (\n o: TreemapChartOptions,\n hidden: ReadonlySet<number>,\n): Built[] => {\n let leafCount = 0;\n const walk = (\n nodes: readonly TreemapNode[],\n parentKey: string,\n parentPath: string[],\n top: number,\n ): Built[] => {\n const keys = uniqueKeys(nodes.map((nd) => nd.name));\n return nodes.map((node, j) => {\n const t = parentPath.length ? top : j;\n const key = `${parentKey}/${keys[j]}`;\n const path = [...parentPath, node.name];\n if (node.children?.length) {\n const children = walk(node.children, key, path, t);\n return {\n node,\n key,\n path,\n top: t,\n leaf: -1,\n target: sum(children.map((ch) => ch.target)),\n children,\n };\n }\n return {\n node,\n key,\n path,\n top: t,\n leaf: leafCount++,\n target: hidden.has(t) ? 0 : positive(node.value),\n children: [],\n };\n });\n };\n return walk(o.data, \"\", [], 0);\n};\n\nexport const treemapValues = (\n o: TreemapChartOptions,\n hidden: ReadonlySet<number>,\n out: Map<string, number>,\n) => {\n const visit = (nodes: Built[]) =>\n nodes.forEach((b) => {\n if (b.children.length) visit(b.children);\n else out.set(b.key, b.target);\n });\n visit(build(o, hidden));\n};\n\n/** Leaves in the flattened order (the hover / click `index`) */\nexport const treemapLeaves = (data: readonly TreemapNode[]) => {\n const leaves: { node: TreemapNode; path: string[] }[] = [];\n const visit = (nodes: readonly TreemapNode[], path: string[]) =>\n nodes.forEach((node) => {\n const p = [...path, node.name];\n if (node.children?.length) visit(node.children, p);\n else leaves.push({ node, path: p });\n });\n visit(data, []);\n return leaves;\n};\n\nconst shrink = (r: ShapeRect, d: number): ShapeRect => ({\n x: r.x + d,\n y: r.y + d,\n width: Math.max(0, r.width - 2 * d),\n height: Math.max(0, r.height - 2 * d),\n});\n\nexport const layoutTreemap = (\n o: TreemapChartOptions,\n c: LayoutContext,\n): LayoutResult => {\n const { theme, area, measure, hidden } = c;\n const tree = build(o, hidden);\n const rootTotal = sum(tree.map((b) => b.target));\n // displayed (animated) values\n const shown = new Map<Built, number>();\n const measureShown = (b: Built): number => {\n const v = b.children.length\n ? sum(b.children.map(measureShown))\n : Math.max(0, c.value(b.key, b.target));\n shown.set(b, v);\n return v;\n };\n const shownTotal = sum(tree.map(measureShown));\n if (rootTotal <= 0 && shownTotal <= 1e-9) return emptyLayout(c);\n\n const gap = Math.max(0, finite(o.gap, 2));\n const headers = o.headers !== false;\n const nameFont = font(theme, 12, 500);\n const valueFont = font(theme, 11);\n const headerFont = font(theme, 11, 600);\n const nodes: ShapeNode[] = [];\n const items: ShapeItem[] = [];\n // dark themes: fills slightly toward the background so that labels read well\n const dark = relativeLuminance(theme.background) < 0.2;\n\n const level = (list: Built[], rect: ShapeRect, parentColor: Rgba | null) => {\n const sorted = list\n .filter((b) => (shown.get(b) ?? 0) > 1e-9)\n .sort((a, b) => (shown.get(b) ?? 0) - (shown.get(a) ?? 0));\n const rects = squarify(\n sorted.map((b) => shown.get(b) ?? 0),\n rect,\n );\n const step = Math.min(0.14, 0.5 / Math.max(1, sorted.length - 1));\n sorted.forEach((b, j) => {\n const cell = shrink(rects[j], gap / 2);\n if (cell.width < 1 || cell.height < 1) return;\n const color = parentColor\n ? b.node.color\n ? resolveWith(theme, b.node.color, parentColor)\n : mix(parentColor, theme.background, j * step)\n : c.color(b.node.color, b.top);\n if (b.children.length) {\n let content = cell;\n if (headers && cell.height > HEADER + 14 && cell.width > 36) {\n nodes.push({\n kind: \"rect\",\n x: cell.x,\n y: cell.y,\n width: cell.width,\n height: cell.height,\n radius: 4,\n fill: toCss(color, 0.14),\n });\n const title = ellipsize(\n b.node.name,\n cell.width - 12,\n headerFont,\n measure,\n );\n if (title)\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + HEADER / 2 + 1,\n text: title,\n font: headerFont,\n color: toCss(theme.text, 0.85),\n align: \"left\",\n baseline: \"middle\",\n });\n content = {\n x: cell.x + 2,\n y: cell.y + HEADER,\n width: cell.width - 4,\n height: cell.height - HEADER - 2,\n };\n }\n level(b.children, content, color);\n return;\n }\n const fill = readableFill(\n dark ? mix(color, theme.background, 0.18) : color,\n );\n const css = toCss(fill);\n nodes.push({\n kind: \"rect\",\n x: cell.x,\n y: cell.y,\n width: cell.width,\n height: cell.height,\n radius: Math.min(4, cell.width / 2, cell.height / 2),\n fill: css,\n hit: b.leaf,\n brighten: true,\n });\n if (cell.width >= 36 && cell.height >= 22) {\n const ink = textOn(fill);\n const name = ellipsize(b.node.name, cell.width - 12, nameFont, measure);\n if (name)\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + 6,\n text: name,\n font: nameFont,\n color: ink,\n align: \"left\",\n baseline: \"top\",\n hit: b.leaf,\n });\n const value = c.format(b.target);\n if (\n name &&\n cell.height >= 38 &&\n measure(value, valueFont) <= cell.width - 12\n )\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + 22,\n text: value,\n font: valueFont,\n color: ink,\n align: \"left\",\n baseline: \"top\",\n hit: b.leaf,\n });\n }\n if (b.target > 0) {\n const percent = rootTotal > 0 ? b.target / rootTotal : 0;\n items.push({\n index: b.leaf,\n name: b.node.name,\n value: b.target,\n percent,\n share: c.percent(percent),\n color: css,\n path: b.path,\n x: cell.x + cell.width / 2,\n y: cell.y + cell.height / 2,\n rows: [\n { name: \"Value\", value: c.format(b.target) },\n { name: \"Share\", value: c.percent(percent) },\n ],\n });\n }\n });\n };\n level(tree, area, null);\n items.sort((a, b) => a.index - b.index);\n\n const enter = clamp(c.enter, 0, 1);\n return {\n nodes,\n items,\n dim: 0.55,\n empty: false,\n ...(enter < 1\n ? {\n enter: {\n alpha: enter,\n scale: 0.94 + 0.06 * enter,\n cx: area.x + area.width / 2,\n cy: area.y + area.height / 2,\n },\n }\n : {}),\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"treemap.js","names":["HEADER","squarify","out","values","rect","total","sum","v","scale","areas","w","h","worst","s2","s","side2","side","max","min","place","cw","yy","y","i","row","hh","rh","xx","x","ww","rowSum","rowMin","rowMax","a","build","leafCount","walk","keys","uniqueKeys","nodes","nd","t","parentPath","top","j","key","parentKey","path","node","children","ch","hidden","positive","o","treemapValues","visit","b","shrink","r","d","layoutTreemap","c","tree","rootTotal","shown","measureShown","shownTotal","emptyLayout","gap","finite","headers","nameFont","font","theme","valueFont","headerFont","items","dark","relativeLuminance","level","sorted","list","rects","step","cell","color","parentColor","resolveWith","mix","content","toCss","title","ellipsize","measure","fill","readableFill","css","ink","textOn","name","value","percent","area","enter","clamp"],"sources":["../../../../../charts/src/engine/shapes/treemap.ts"],"sourcesContent":["// Treemap layout: squarified rectangles, parent headers, a palette color per\n// top-level node and lighter shades for its children.\n\nimport { mix, toCss, type Rgba } from \"../color\";\nimport { font } from \"../overlay\";\nimport {\n clamp,\n ellipsize,\n emptyLayout,\n finite,\n positive,\n readableFill,\n relativeLuminance,\n resolveWith,\n sum,\n textOn,\n uniqueKeys,\n type LayoutContext,\n type LayoutResult,\n type ShapeItem,\n type ShapeNode,\n type ShapeRect,\n} from \"./scene\";\nimport type { TreemapChartOptions, TreemapNode } from \"./types\";\n\nconst HEADER = 20;\n\n/**\n * Squarified treemap (Bruls et al.): rectangles of areas proportional to\n * `values` (best sorted descending) filling `rect`, with aspect ratios close to 1.\n */\nexport const squarify = (\n values: readonly number[],\n rect: ShapeRect,\n): ShapeRect[] => {\n const out: ShapeRect[] = values.map(() => ({\n x: rect.x,\n y: rect.y,\n width: 0,\n height: 0,\n }));\n const total = sum(values.map((v) => Math.max(0, v)));\n if (total <= 0 || rect.width <= 0 || rect.height <= 0) return out;\n const scale = (rect.width * rect.height) / total;\n const areas = values.map((v) => Math.max(0, v) * scale);\n let { x, y, width: w, height: h } = rect;\n\n const worst = (s: number, min: number, max: number, side: number) => {\n const s2 = s * s;\n const side2 = side * side;\n return Math.max((side2 * max) / s2, s2 / (side2 * min));\n };\n const place = (row: number[], s: number) => {\n if (w >= h) {\n const cw = h > 0 ? Math.min(w, s / h) : 0;\n let yy = y;\n for (const i of row) {\n const hh = cw > 0 ? areas[i] / cw : 0;\n out[i] = { x, y: yy, width: cw, height: hh };\n yy += hh;\n }\n x += cw;\n w = Math.max(0, w - cw);\n } else {\n const rh = w > 0 ? Math.min(h, s / w) : 0;\n let xx = x;\n for (const i of row) {\n const ww = rh > 0 ? areas[i] / rh : 0;\n out[i] = { x: xx, y, width: ww, height: rh };\n xx += ww;\n }\n y += rh;\n h = Math.max(0, h - rh);\n }\n };\n\n let row: number[] = [];\n let rowSum = 0;\n let rowMin = Infinity;\n let rowMax = 0;\n areas.forEach((a, i) => {\n if (a <= 0) return;\n if (row.length) {\n const side = Math.min(w, h);\n const next = worst(\n rowSum + a,\n Math.min(rowMin, a),\n Math.max(rowMax, a),\n side,\n );\n if (next > worst(rowSum, rowMin, rowMax, side)) {\n place(row, rowSum);\n row = [];\n rowSum = 0;\n rowMin = Infinity;\n rowMax = 0;\n }\n }\n row.push(i);\n rowSum += a;\n rowMin = Math.min(rowMin, a);\n rowMax = Math.max(rowMax, a);\n });\n if (row.length) place(row, rowSum);\n return out;\n};\n\ninterface Built {\n node: TreemapNode;\n key: string;\n path: string[];\n top: number;\n /** Index in the flattened leaves (leaves only) */\n leaf: number;\n target: number;\n children: Built[];\n}\n\n/** Tree with the target values; hidden top-level nodes count 0 */\nconst build = (\n o: TreemapChartOptions,\n hidden: ReadonlySet<number>,\n): Built[] => {\n let leafCount = 0;\n const walk = (\n nodes: readonly TreemapNode[],\n parentKey: string,\n parentPath: string[],\n top: number,\n ): Built[] => {\n const keys = uniqueKeys(nodes.map((nd) => nd.name));\n return nodes.map((node, j) => {\n const t = parentPath.length ? top : j;\n const key = `${parentKey}/${keys[j]}`;\n const path = [...parentPath, node.name];\n if (node.children?.length) {\n const children = walk(node.children, key, path, t);\n return {\n node,\n key,\n path,\n top: t,\n leaf: -1,\n target: sum(children.map((ch) => ch.target)),\n children,\n };\n }\n return {\n node,\n key,\n path,\n top: t,\n leaf: leafCount++,\n target: hidden.has(t) ? 0 : positive(node.value),\n children: [],\n };\n });\n };\n return walk(o.data, \"\", [], 0);\n};\n\nexport const treemapValues = (\n o: TreemapChartOptions,\n hidden: ReadonlySet<number>,\n out: Map<string, number>,\n) => {\n const visit = (nodes: Built[]) =>\n nodes.forEach((b) => {\n if (b.children.length) visit(b.children);\n else out.set(b.key, b.target);\n });\n visit(build(o, hidden));\n};\n\n/** Leaves in the flattened order (the hover / click `index`) */\nexport const treemapLeaves = (data: readonly TreemapNode[]) => {\n const leaves: { node: TreemapNode; path: string[] }[] = [];\n const visit = (nodes: readonly TreemapNode[], path: string[]) =>\n nodes.forEach((node) => {\n const p = [...path, node.name];\n if (node.children?.length) visit(node.children, p);\n else leaves.push({ node, path: p });\n });\n visit(data, []);\n return leaves;\n};\n\nconst shrink = (r: ShapeRect, d: number): ShapeRect => ({\n x: r.x + d,\n y: r.y + d,\n width: Math.max(0, r.width - 2 * d),\n height: Math.max(0, r.height - 2 * d),\n});\n\nexport const layoutTreemap = (\n o: TreemapChartOptions,\n c: LayoutContext,\n): LayoutResult => {\n const { theme, area, measure, hidden } = c;\n const tree = build(o, hidden);\n const rootTotal = sum(tree.map((b) => b.target));\n // displayed (animated) values\n const shown = new Map<Built, number>();\n const measureShown = (b: Built): number => {\n const v = b.children.length\n ? sum(b.children.map(measureShown))\n : Math.max(0, c.value(b.key, b.target));\n shown.set(b, v);\n return v;\n };\n const shownTotal = sum(tree.map(measureShown));\n if (rootTotal <= 0 && shownTotal <= 1e-9) return emptyLayout(c);\n\n const gap = Math.max(0, finite(o.gap, 2));\n const headers = o.headers !== false;\n const nameFont = font(theme, 12, 500);\n const valueFont = font(theme, 11);\n const headerFont = font(theme, 11, 600);\n const nodes: ShapeNode[] = [];\n const items: ShapeItem[] = [];\n // dark themes: fills slightly toward the background so that labels read well\n const dark = relativeLuminance(theme.background) < 0.2;\n\n const level = (list: Built[], rect: ShapeRect, parentColor: Rgba | null) => {\n const sorted = list\n .filter((b) => (shown.get(b) ?? 0) > 1e-9)\n .sort((a, b) => (shown.get(b) ?? 0) - (shown.get(a) ?? 0));\n const rects = squarify(\n sorted.map((b) => shown.get(b) ?? 0),\n rect,\n );\n const step = Math.min(0.14, 0.5 / Math.max(1, sorted.length - 1));\n sorted.forEach((b, j) => {\n const cell = shrink(rects[j], gap / 2);\n if (cell.width < 1 || cell.height < 1) return;\n const color = parentColor\n ? b.node.color\n ? resolveWith(theme, b.node.color, parentColor)\n : mix(parentColor, theme.background, j * step)\n : c.color(b.node.color, b.top);\n if (b.children.length) {\n let content = cell;\n if (headers && cell.height > HEADER + 14 && cell.width > 36) {\n nodes.push({\n kind: \"rect\",\n x: cell.x,\n y: cell.y,\n width: cell.width,\n height: cell.height,\n radius: 4,\n fill: toCss(color, 0.14),\n });\n const title = ellipsize(\n b.node.name,\n cell.width - 12,\n headerFont,\n measure,\n );\n if (title)\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + HEADER / 2 + 1,\n text: title,\n font: headerFont,\n color: toCss(theme.text, 0.85),\n align: \"left\",\n baseline: \"middle\",\n });\n content = {\n x: cell.x + 2,\n y: cell.y + HEADER,\n width: cell.width - 4,\n height: cell.height - HEADER - 2,\n };\n }\n level(b.children, content, color);\n return;\n }\n const fill = readableFill(\n dark ? mix(color, theme.background, 0.18) : color,\n );\n const css = toCss(fill);\n nodes.push({\n kind: \"rect\",\n x: cell.x,\n y: cell.y,\n width: cell.width,\n height: cell.height,\n radius: Math.min(4, cell.width / 2, cell.height / 2),\n fill: css,\n hit: b.leaf,\n brighten: true,\n });\n if (cell.width >= 36 && cell.height >= 22) {\n const ink = textOn(fill);\n const name = ellipsize(b.node.name, cell.width - 12, nameFont, measure);\n if (name)\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + 6,\n text: name,\n font: nameFont,\n color: ink,\n align: \"left\",\n baseline: \"top\",\n hit: b.leaf,\n });\n const value = c.format(b.target);\n if (\n name &&\n cell.height >= 38 &&\n measure(value, valueFont) <= cell.width - 12\n )\n nodes.push({\n kind: \"text\",\n x: cell.x + 6,\n y: cell.y + 22,\n text: value,\n font: valueFont,\n color: ink,\n align: \"left\",\n baseline: \"top\",\n hit: b.leaf,\n });\n }\n if (b.target > 0) {\n const percent = rootTotal > 0 ? b.target / rootTotal : 0;\n items.push({\n index: b.leaf,\n name: b.node.name,\n value: b.target,\n percent,\n share: c.percent(percent),\n color: css,\n path: b.path,\n x: cell.x + cell.width / 2,\n y: cell.y + cell.height / 2,\n rows: [\n { name: c.labels.value, value: c.format(b.target) },\n { name: c.labels.share, value: c.percent(percent) },\n ],\n });\n }\n });\n };\n level(tree, area, null);\n items.sort((a, b) => a.index - b.index);\n\n const enter = clamp(c.enter, 0, 1);\n return {\n nodes,\n items,\n dim: 0.55,\n empty: false,\n ...(enter < 1\n ? {\n enter: {\n alpha: enter,\n scale: 0.94 + 0.06 * enter,\n cx: area.x + area.width / 2,\n cy: area.y + area.height / 2,\n },\n }\n : {}),\n };\n};\n"],"mappings":"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"}