minerva-design 1.4.0 → 1.5.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 (670) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +4047 -1703
  4. package/dist/angular/fesm2022/minerva-angular.mjs +1436 -5
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +573 -4
  7. package/dist/charts/canvas.d.cts +2 -2
  8. package/dist/charts/canvas.d.ts +2 -2
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +6 -4
  11. package/dist/charts/core.d.ts +6 -4
  12. package/dist/charts/core.js +24 -16
  13. package/dist/charts/engine/axis.cjs +1 -1
  14. package/dist/charts/engine/axis.cjs.map +1 -1
  15. package/dist/charts/engine/axis.js +42 -19
  16. package/dist/charts/engine/axis.js.map +1 -1
  17. package/dist/charts/engine/canvas.cjs +1 -1
  18. package/dist/charts/engine/canvas.cjs.map +1 -1
  19. package/dist/charts/engine/canvas.js +154 -127
  20. package/dist/charts/engine/canvas.js.map +1 -1
  21. package/dist/charts/engine/chart.cjs +1 -1
  22. package/dist/charts/engine/chart.cjs.map +1 -1
  23. package/dist/charts/engine/chart.js +365 -251
  24. package/dist/charts/engine/chart.js.map +1 -1
  25. package/dist/charts/engine/color.cjs +1 -1
  26. package/dist/charts/engine/color.cjs.map +1 -1
  27. package/dist/charts/engine/color.d.cts +18 -0
  28. package/dist/charts/engine/color.d.ts +18 -0
  29. package/dist/charts/engine/color.js +48 -2
  30. package/dist/charts/engine/color.js.map +1 -1
  31. package/dist/charts/engine/controller.cjs +2 -2
  32. package/dist/charts/engine/controller.cjs.map +1 -1
  33. package/dist/charts/engine/controller.d.cts +32 -1
  34. package/dist/charts/engine/controller.d.ts +32 -1
  35. package/dist/charts/engine/controller.js +310 -263
  36. package/dist/charts/engine/controller.js.map +1 -1
  37. package/dist/charts/engine/data.cjs +1 -1
  38. package/dist/charts/engine/data.cjs.map +1 -1
  39. package/dist/charts/engine/data.d.cts +3 -1
  40. package/dist/charts/engine/data.d.ts +3 -1
  41. package/dist/charts/engine/data.js +6 -4
  42. package/dist/charts/engine/data.js.map +1 -1
  43. package/dist/charts/engine/defaults.cjs +2 -0
  44. package/dist/charts/engine/defaults.cjs.map +1 -0
  45. package/dist/charts/engine/defaults.d.cts +20 -0
  46. package/dist/charts/engine/defaults.d.ts +20 -0
  47. package/dist/charts/engine/defaults.js +35 -0
  48. package/dist/charts/engine/defaults.js.map +1 -0
  49. package/dist/charts/engine/format.cjs +1 -1
  50. package/dist/charts/engine/format.cjs.map +1 -1
  51. package/dist/charts/engine/format.d.cts +6 -0
  52. package/dist/charts/engine/format.d.ts +6 -0
  53. package/dist/charts/engine/format.js +15 -2
  54. package/dist/charts/engine/format.js.map +1 -1
  55. package/dist/charts/engine/graph/chart.cjs +2 -0
  56. package/dist/charts/engine/graph/chart.cjs.map +1 -0
  57. package/dist/charts/engine/graph/chart.d.cts +3 -0
  58. package/dist/charts/engine/graph/chart.d.ts +3 -0
  59. package/dist/charts/engine/graph/chart.js +1565 -0
  60. package/dist/charts/engine/graph/chart.js.map +1 -0
  61. package/dist/charts/engine/graph/circular.cjs +2 -0
  62. package/dist/charts/engine/graph/circular.cjs.map +1 -0
  63. package/dist/charts/engine/graph/circular.d.cts +16 -0
  64. package/dist/charts/engine/graph/circular.d.ts +16 -0
  65. package/dist/charts/engine/graph/circular.js +62 -0
  66. package/dist/charts/engine/graph/circular.js.map +1 -0
  67. package/dist/charts/engine/graph/dag.cjs +2 -0
  68. package/dist/charts/engine/graph/dag.cjs.map +1 -0
  69. package/dist/charts/engine/graph/dag.d.cts +34 -0
  70. package/dist/charts/engine/graph/dag.d.ts +34 -0
  71. package/dist/charts/engine/graph/dag.js +314 -0
  72. package/dist/charts/engine/graph/dag.js.map +1 -0
  73. package/dist/charts/engine/graph/dom.cjs +2 -0
  74. package/dist/charts/engine/graph/dom.cjs.map +1 -0
  75. package/dist/charts/engine/graph/dom.d.cts +23 -0
  76. package/dist/charts/engine/graph/dom.d.ts +23 -0
  77. package/dist/charts/engine/graph/dom.js +158 -0
  78. package/dist/charts/engine/graph/dom.js.map +1 -0
  79. package/dist/charts/engine/graph/force.cjs +2 -0
  80. package/dist/charts/engine/graph/force.cjs.map +1 -0
  81. package/dist/charts/engine/graph/force.d.cts +67 -0
  82. package/dist/charts/engine/graph/force.d.ts +67 -0
  83. package/dist/charts/engine/graph/force.js +325 -0
  84. package/dist/charts/engine/graph/force.js.map +1 -0
  85. package/dist/charts/engine/graph/geometry.cjs +2 -0
  86. package/dist/charts/engine/graph/geometry.cjs.map +1 -0
  87. package/dist/charts/engine/graph/geometry.d.cts +37 -0
  88. package/dist/charts/engine/graph/geometry.d.ts +37 -0
  89. package/dist/charts/engine/graph/geometry.js +144 -0
  90. package/dist/charts/engine/graph/geometry.js.map +1 -0
  91. package/dist/charts/engine/graph/index.cjs +1 -0
  92. package/dist/charts/engine/graph/index.d.cts +6 -0
  93. package/dist/charts/engine/graph/index.d.ts +6 -0
  94. package/dist/charts/engine/graph/index.js +6 -0
  95. package/dist/charts/engine/graph/labels.cjs +2 -0
  96. package/dist/charts/engine/graph/labels.cjs.map +1 -0
  97. package/dist/charts/engine/graph/labels.d.cts +12 -0
  98. package/dist/charts/engine/graph/labels.d.ts +12 -0
  99. package/dist/charts/engine/graph/labels.js +128 -0
  100. package/dist/charts/engine/graph/labels.js.map +1 -0
  101. package/dist/charts/engine/graph/model.cjs +2 -0
  102. package/dist/charts/engine/graph/model.cjs.map +1 -0
  103. package/dist/charts/engine/graph/model.d.cts +43 -0
  104. package/dist/charts/engine/graph/model.d.ts +43 -0
  105. package/dist/charts/engine/graph/model.js +88 -0
  106. package/dist/charts/engine/graph/model.js.map +1 -0
  107. package/dist/charts/engine/graph/sizing.cjs +2 -0
  108. package/dist/charts/engine/graph/sizing.cjs.map +1 -0
  109. package/dist/charts/engine/graph/sizing.d.cts +33 -0
  110. package/dist/charts/engine/graph/sizing.d.ts +33 -0
  111. package/dist/charts/engine/graph/sizing.js +60 -0
  112. package/dist/charts/engine/graph/sizing.js.map +1 -0
  113. package/dist/charts/engine/graph/tree.cjs +2 -0
  114. package/dist/charts/engine/graph/tree.cjs.map +1 -0
  115. package/dist/charts/engine/graph/tree.d.cts +30 -0
  116. package/dist/charts/engine/graph/tree.d.ts +30 -0
  117. package/dist/charts/engine/graph/tree.js +218 -0
  118. package/dist/charts/engine/graph/tree.js.map +1 -0
  119. package/dist/charts/engine/graph/types.d.cts +626 -0
  120. package/dist/charts/engine/graph/types.d.ts +626 -0
  121. package/dist/charts/engine/graph/worker.cjs +46 -0
  122. package/dist/charts/engine/graph/worker.cjs.map +1 -0
  123. package/dist/charts/engine/graph/worker.d.cts +36 -0
  124. package/dist/charts/engine/graph/worker.d.ts +36 -0
  125. package/dist/charts/engine/graph/worker.js +129 -0
  126. package/dist/charts/engine/graph/worker.js.map +1 -0
  127. package/dist/charts/engine/items.cjs +1 -1
  128. package/dist/charts/engine/items.cjs.map +1 -1
  129. package/dist/charts/engine/items.d.cts +15 -2
  130. package/dist/charts/engine/items.d.ts +15 -2
  131. package/dist/charts/engine/items.js +131 -112
  132. package/dist/charts/engine/items.js.map +1 -1
  133. package/dist/charts/engine/labels.cjs +1 -1
  134. package/dist/charts/engine/labels.cjs.map +1 -1
  135. package/dist/charts/engine/labels.js +28 -4
  136. package/dist/charts/engine/labels.js.map +1 -1
  137. package/dist/charts/engine/layout.cjs +1 -1
  138. package/dist/charts/engine/layout.cjs.map +1 -1
  139. package/dist/charts/engine/layout.d.cts +9 -0
  140. package/dist/charts/engine/layout.d.ts +9 -0
  141. package/dist/charts/engine/layout.js +11 -2
  142. package/dist/charts/engine/layout.js.map +1 -1
  143. package/dist/charts/engine/model.cjs +1 -1
  144. package/dist/charts/engine/model.cjs.map +1 -1
  145. package/dist/charts/engine/model.d.cts +40 -3
  146. package/dist/charts/engine/model.d.ts +40 -3
  147. package/dist/charts/engine/model.js +246 -165
  148. package/dist/charts/engine/model.js.map +1 -1
  149. package/dist/charts/engine/orderbook/format.cjs +1 -1
  150. package/dist/charts/engine/orderbook/format.cjs.map +1 -1
  151. package/dist/charts/engine/orderbook/format.d.cts +3 -2
  152. package/dist/charts/engine/orderbook/format.d.ts +3 -2
  153. package/dist/charts/engine/orderbook/format.js +5 -5
  154. package/dist/charts/engine/orderbook/format.js.map +1 -1
  155. package/dist/charts/engine/orderbook/heatmap.cjs +1 -1
  156. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -1
  157. package/dist/charts/engine/orderbook/heatmap.js +527 -408
  158. package/dist/charts/engine/orderbook/heatmap.js.map +1 -1
  159. package/dist/charts/engine/orderbook/layout.cjs +2 -0
  160. package/dist/charts/engine/orderbook/layout.cjs.map +1 -0
  161. package/dist/charts/engine/orderbook/layout.d.cts +37 -0
  162. package/dist/charts/engine/orderbook/layout.d.ts +37 -0
  163. package/dist/charts/engine/orderbook/layout.js +70 -0
  164. package/dist/charts/engine/orderbook/layout.js.map +1 -0
  165. package/dist/charts/engine/orderbook/tape.cjs +1 -1
  166. package/dist/charts/engine/orderbook/tape.cjs.map +1 -1
  167. package/dist/charts/engine/orderbook/tape.js +1 -1
  168. package/dist/charts/engine/orderbook/tape.js.map +1 -1
  169. package/dist/charts/engine/orderbook/types.d.cts +18 -2
  170. package/dist/charts/engine/orderbook/types.d.ts +18 -2
  171. package/dist/charts/engine/overlay.cjs +1 -1
  172. package/dist/charts/engine/overlay.cjs.map +1 -1
  173. package/dist/charts/engine/overlay.d.cts +10 -0
  174. package/dist/charts/engine/overlay.d.ts +10 -0
  175. package/dist/charts/engine/overlay.js +6 -0
  176. package/dist/charts/engine/overlay.js.map +1 -1
  177. package/dist/charts/engine/presets.cjs +2 -2
  178. package/dist/charts/engine/presets.cjs.map +1 -1
  179. package/dist/charts/engine/presets.d.cts +25 -3
  180. package/dist/charts/engine/presets.d.ts +25 -3
  181. package/dist/charts/engine/presets.js +115 -101
  182. package/dist/charts/engine/presets.js.map +1 -1
  183. package/dist/charts/engine/renderers/detect.cjs +1 -1
  184. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  185. package/dist/charts/engine/renderers/detect.d.cts +2 -1
  186. package/dist/charts/engine/renderers/detect.d.ts +2 -1
  187. package/dist/charts/engine/renderers/detect.js +23 -21
  188. package/dist/charts/engine/renderers/detect.js.map +1 -1
  189. package/dist/charts/engine/scene.cjs +1 -1
  190. package/dist/charts/engine/scene.cjs.map +1 -1
  191. package/dist/charts/engine/scene.d.cts +57 -4
  192. package/dist/charts/engine/scene.d.ts +57 -4
  193. package/dist/charts/engine/scene.js +335 -182
  194. package/dist/charts/engine/scene.js.map +1 -1
  195. package/dist/charts/engine/shapes/bullet.cjs +1 -1
  196. package/dist/charts/engine/shapes/bullet.cjs.map +1 -1
  197. package/dist/charts/engine/shapes/bullet.js +110 -110
  198. package/dist/charts/engine/shapes/bullet.js.map +1 -1
  199. package/dist/charts/engine/shapes/chart.cjs +1 -1
  200. package/dist/charts/engine/shapes/chart.cjs.map +1 -1
  201. package/dist/charts/engine/shapes/chart.js +4 -1
  202. package/dist/charts/engine/shapes/chart.js.map +1 -1
  203. package/dist/charts/engine/shapes/chord.cjs +2 -0
  204. package/dist/charts/engine/shapes/chord.cjs.map +1 -0
  205. package/dist/charts/engine/shapes/chord.d.cts +18 -0
  206. package/dist/charts/engine/shapes/chord.d.ts +18 -0
  207. package/dist/charts/engine/shapes/chord.js +414 -0
  208. package/dist/charts/engine/shapes/chord.js.map +1 -0
  209. package/dist/charts/engine/shapes/draw.cjs +1 -1
  210. package/dist/charts/engine/shapes/draw.cjs.map +1 -1
  211. package/dist/charts/engine/shapes/draw.d.cts +5 -1
  212. package/dist/charts/engine/shapes/draw.d.ts +5 -1
  213. package/dist/charts/engine/shapes/draw.js +47 -17
  214. package/dist/charts/engine/shapes/draw.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 +75 -46
  220. package/dist/charts/engine/shapes/hit.js.map +1 -1
  221. package/dist/charts/engine/shapes/index.d.cts +3 -2
  222. package/dist/charts/engine/shapes/index.d.ts +3 -2
  223. package/dist/charts/engine/shapes/labels.cjs +1 -1
  224. package/dist/charts/engine/shapes/labels.cjs.map +1 -1
  225. package/dist/charts/engine/shapes/labels.js +12 -4
  226. package/dist/charts/engine/shapes/labels.js.map +1 -1
  227. package/dist/charts/engine/shapes/layout.cjs +2 -2
  228. package/dist/charts/engine/shapes/layout.cjs.map +1 -1
  229. package/dist/charts/engine/shapes/layout.d.cts +3 -1
  230. package/dist/charts/engine/shapes/layout.d.ts +3 -1
  231. package/dist/charts/engine/shapes/layout.js +106 -78
  232. package/dist/charts/engine/shapes/layout.js.map +1 -1
  233. package/dist/charts/engine/shapes/scene.cjs +1 -1
  234. package/dist/charts/engine/shapes/scene.cjs.map +1 -1
  235. package/dist/charts/engine/shapes/scene.d.cts +33 -3
  236. package/dist/charts/engine/shapes/scene.d.ts +33 -3
  237. package/dist/charts/engine/shapes/scene.js +62 -19
  238. package/dist/charts/engine/shapes/scene.js.map +1 -1
  239. package/dist/charts/engine/shapes/types.d.cts +119 -8
  240. package/dist/charts/engine/shapes/types.d.ts +119 -8
  241. package/dist/charts/engine/signature.cjs +1 -1
  242. package/dist/charts/engine/signature.cjs.map +1 -1
  243. package/dist/charts/engine/signature.js +1 -1
  244. package/dist/charts/engine/signature.js.map +1 -1
  245. package/dist/charts/engine/three-d/canvas2d.cjs +1 -1
  246. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -1
  247. package/dist/charts/engine/three-d/canvas2d.d.cts +5 -2
  248. package/dist/charts/engine/three-d/canvas2d.d.ts +5 -2
  249. package/dist/charts/engine/three-d/canvas2d.js +89 -65
  250. package/dist/charts/engine/three-d/canvas2d.js.map +1 -1
  251. package/dist/charts/engine/three-d/detect.cjs +1 -1
  252. package/dist/charts/engine/three-d/detect.cjs.map +1 -1
  253. package/dist/charts/engine/three-d/detect.d.cts +3 -2
  254. package/dist/charts/engine/three-d/detect.d.ts +3 -2
  255. package/dist/charts/engine/three-d/detect.js +22 -20
  256. package/dist/charts/engine/three-d/detect.js.map +1 -1
  257. package/dist/charts/engine/three-d/geometry.cjs +1 -1
  258. package/dist/charts/engine/three-d/geometry.cjs.map +1 -1
  259. package/dist/charts/engine/three-d/geometry.d.cts +6 -0
  260. package/dist/charts/engine/three-d/geometry.d.ts +6 -0
  261. package/dist/charts/engine/three-d/geometry.js +106 -90
  262. package/dist/charts/engine/three-d/geometry.js.map +1 -1
  263. package/dist/charts/engine/three-d/model.cjs +1 -1
  264. package/dist/charts/engine/three-d/model.cjs.map +1 -1
  265. package/dist/charts/engine/three-d/model.d.cts +2 -0
  266. package/dist/charts/engine/three-d/model.d.ts +2 -0
  267. package/dist/charts/engine/three-d/model.js +2 -0
  268. package/dist/charts/engine/three-d/model.js.map +1 -1
  269. package/dist/charts/engine/three-d/overlay.cjs +1 -1
  270. package/dist/charts/engine/three-d/overlay.cjs.map +1 -1
  271. package/dist/charts/engine/three-d/overlay.js +43 -36
  272. package/dist/charts/engine/three-d/overlay.js.map +1 -1
  273. package/dist/charts/engine/three-d/render-types.cjs +1 -1
  274. package/dist/charts/engine/three-d/render-types.cjs.map +1 -1
  275. package/dist/charts/engine/three-d/render-types.d.cts +24 -3
  276. package/dist/charts/engine/three-d/render-types.d.ts +24 -3
  277. package/dist/charts/engine/three-d/render-types.js +6 -7
  278. package/dist/charts/engine/three-d/render-types.js.map +1 -1
  279. package/dist/charts/engine/three-d/shaders.cjs +63 -28
  280. package/dist/charts/engine/three-d/shaders.cjs.map +1 -1
  281. package/dist/charts/engine/three-d/shaders.d.cts +2 -3
  282. package/dist/charts/engine/three-d/shaders.d.ts +2 -3
  283. package/dist/charts/engine/three-d/shaders.js +41 -22
  284. package/dist/charts/engine/three-d/shaders.js.map +1 -1
  285. package/dist/charts/engine/three-d/sort.cjs +1 -1
  286. package/dist/charts/engine/three-d/sort.cjs.map +1 -1
  287. package/dist/charts/engine/three-d/sort.d.cts +15 -4
  288. package/dist/charts/engine/three-d/sort.d.ts +15 -4
  289. package/dist/charts/engine/three-d/sort.js +117 -43
  290. package/dist/charts/engine/three-d/sort.js.map +1 -1
  291. package/dist/charts/engine/three-d/types.d.cts +27 -0
  292. package/dist/charts/engine/three-d/types.d.ts +27 -0
  293. package/dist/charts/engine/three-d/webgl.cjs +1 -1
  294. package/dist/charts/engine/three-d/webgl.cjs.map +1 -1
  295. package/dist/charts/engine/three-d/webgl.js +15 -13
  296. package/dist/charts/engine/three-d/webgl.js.map +1 -1
  297. package/dist/charts/engine/three-d/webgpu.cjs +1 -1
  298. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -1
  299. package/dist/charts/engine/three-d/webgpu.js +50 -39
  300. package/dist/charts/engine/three-d/webgpu.js.map +1 -1
  301. package/dist/charts/engine/trading/chart.cjs +1 -1
  302. package/dist/charts/engine/trading/chart.cjs.map +1 -1
  303. package/dist/charts/engine/trading/chart.d.cts +10 -0
  304. package/dist/charts/engine/trading/chart.d.ts +10 -0
  305. package/dist/charts/engine/trading/chart.js +1475 -776
  306. package/dist/charts/engine/trading/chart.js.map +1 -1
  307. package/dist/charts/engine/trading/drawings.cjs +2 -1
  308. package/dist/charts/engine/trading/drawings.cjs.map +1 -1
  309. package/dist/charts/engine/trading/drawings.d.cts +47 -9
  310. package/dist/charts/engine/trading/drawings.d.ts +47 -9
  311. package/dist/charts/engine/trading/drawings.js +338 -75
  312. package/dist/charts/engine/trading/drawings.js.map +1 -1
  313. package/dist/charts/engine/trading/format.cjs +1 -1
  314. package/dist/charts/engine/trading/format.cjs.map +1 -1
  315. package/dist/charts/engine/trading/format.d.cts +13 -0
  316. package/dist/charts/engine/trading/format.d.ts +13 -0
  317. package/dist/charts/engine/trading/format.js +51 -19
  318. package/dist/charts/engine/trading/format.js.map +1 -1
  319. package/dist/charts/engine/trading/index.cjs +1 -1
  320. package/dist/charts/engine/trading/index.d.cts +2 -1
  321. package/dist/charts/engine/trading/index.d.ts +2 -1
  322. package/dist/charts/engine/trading/index.js +4 -3
  323. package/dist/charts/engine/trading/indicators.cjs +1 -1
  324. package/dist/charts/engine/trading/indicators.cjs.map +1 -1
  325. package/dist/charts/engine/trading/indicators.d.cts +180 -10
  326. package/dist/charts/engine/trading/indicators.d.ts +180 -10
  327. package/dist/charts/engine/trading/indicators.js +449 -173
  328. package/dist/charts/engine/trading/indicators.js.map +1 -1
  329. package/dist/charts/engine/trading/labels.cjs +1 -1
  330. package/dist/charts/engine/trading/labels.cjs.map +1 -1
  331. package/dist/charts/engine/trading/labels.js +84 -4
  332. package/dist/charts/engine/trading/labels.js.map +1 -1
  333. package/dist/charts/engine/trading/store.cjs +1 -1
  334. package/dist/charts/engine/trading/store.cjs.map +1 -1
  335. package/dist/charts/engine/trading/store.d.cts +21 -0
  336. package/dist/charts/engine/trading/store.d.ts +21 -0
  337. package/dist/charts/engine/trading/store.js +22 -1
  338. package/dist/charts/engine/trading/store.js.map +1 -1
  339. package/dist/charts/engine/trading/studies.cjs +1 -1
  340. package/dist/charts/engine/trading/studies.cjs.map +1 -1
  341. package/dist/charts/engine/trading/studies.d.cts +41 -8
  342. package/dist/charts/engine/trading/studies.d.ts +41 -8
  343. package/dist/charts/engine/trading/studies.js +349 -93
  344. package/dist/charts/engine/trading/studies.js.map +1 -1
  345. package/dist/charts/engine/trading/sync.cjs +2 -0
  346. package/dist/charts/engine/trading/sync.cjs.map +1 -0
  347. package/dist/charts/engine/trading/sync.d.cts +8 -0
  348. package/dist/charts/engine/trading/sync.d.ts +8 -0
  349. package/dist/charts/engine/trading/sync.js +25 -0
  350. package/dist/charts/engine/trading/sync.js.map +1 -0
  351. package/dist/charts/engine/trading/types.d.cts +484 -9
  352. package/dist/charts/engine/trading/types.d.ts +484 -9
  353. package/dist/charts/engine/types.d.cts +82 -8
  354. package/dist/charts/engine/types.d.ts +82 -8
  355. package/dist/charts/index.cjs +1 -1
  356. package/dist/charts/index.d.cts +3 -2
  357. package/dist/charts/index.d.ts +3 -2
  358. package/dist/charts/index.js +30 -22
  359. package/dist/charts/react/charts.cjs +1 -1
  360. package/dist/charts/react/charts.cjs.map +1 -1
  361. package/dist/charts/react/charts.js +46 -34
  362. package/dist/charts/react/charts.js.map +1 -1
  363. package/dist/charts/react/graph.cjs +2 -0
  364. package/dist/charts/react/graph.cjs.map +1 -0
  365. package/dist/charts/react/graph.d.cts +213 -0
  366. package/dist/charts/react/graph.d.ts +213 -0
  367. package/dist/charts/react/graph.js +159 -0
  368. package/dist/charts/react/graph.js.map +1 -0
  369. package/dist/charts/react/shapes.cjs +1 -1
  370. package/dist/charts/react/shapes.cjs.map +1 -1
  371. package/dist/charts/react/shapes.d.cts +87 -4
  372. package/dist/charts/react/shapes.d.ts +87 -4
  373. package/dist/charts/react/shapes.js +55 -12
  374. package/dist/charts/react/shapes.js.map +1 -1
  375. package/dist/charts/react/trading.cjs +1 -1
  376. package/dist/charts/react/trading.cjs.map +1 -1
  377. package/dist/charts/react/trading.d.cts +53 -1
  378. package/dist/charts/react/trading.d.ts +53 -1
  379. package/dist/charts/react/trading.js +68 -37
  380. package/dist/charts/react/trading.js.map +1 -1
  381. package/dist/charts/react/types.d.cts +11 -0
  382. package/dist/charts/react/types.d.ts +11 -0
  383. package/dist/core/contracts.cjs +1 -1
  384. package/dist/core/contracts.cjs.map +1 -1
  385. package/dist/core/contracts.js +1 -1
  386. package/dist/core/contracts.js.map +1 -1
  387. package/dist/native/charts/src/canvas.cjs +1 -1
  388. package/dist/native/charts/src/canvas.js +3 -3
  389. package/dist/native/charts/src/engine/axis.cjs +1 -1
  390. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  391. package/dist/native/charts/src/engine/axis.js +42 -19
  392. package/dist/native/charts/src/engine/axis.js.map +1 -1
  393. package/dist/native/charts/src/engine/color.cjs +1 -1
  394. package/dist/native/charts/src/engine/color.cjs.map +1 -1
  395. package/dist/native/charts/src/engine/color.js +47 -5
  396. package/dist/native/charts/src/engine/color.js.map +1 -1
  397. package/dist/native/charts/src/engine/controller.cjs +2 -2
  398. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  399. package/dist/native/charts/src/engine/controller.js +300 -253
  400. package/dist/native/charts/src/engine/controller.js.map +1 -1
  401. package/dist/native/charts/src/engine/data.cjs +1 -1
  402. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  403. package/dist/native/charts/src/engine/data.js +6 -4
  404. package/dist/native/charts/src/engine/data.js.map +1 -1
  405. package/dist/native/charts/src/engine/format.cjs +1 -1
  406. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  407. package/dist/native/charts/src/engine/format.js +15 -2
  408. package/dist/native/charts/src/engine/format.js.map +1 -1
  409. package/dist/native/charts/src/engine/labels.cjs +1 -1
  410. package/dist/native/charts/src/engine/labels.cjs.map +1 -1
  411. package/dist/native/charts/src/engine/labels.js +28 -4
  412. package/dist/native/charts/src/engine/labels.js.map +1 -1
  413. package/dist/native/charts/src/engine/layout.cjs +1 -1
  414. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  415. package/dist/native/charts/src/engine/layout.js +11 -2
  416. package/dist/native/charts/src/engine/layout.js.map +1 -1
  417. package/dist/native/charts/src/engine/model.cjs +1 -1
  418. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  419. package/dist/native/charts/src/engine/model.js +252 -171
  420. package/dist/native/charts/src/engine/model.js.map +1 -1
  421. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  422. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  423. package/dist/native/charts/src/engine/presets.cjs +2 -2
  424. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  425. package/dist/native/charts/src/engine/presets.js +104 -90
  426. package/dist/native/charts/src/engine/presets.js.map +1 -1
  427. package/dist/native/charts/src/engine/scene.cjs +1 -1
  428. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  429. package/dist/native/charts/src/engine/scene.js +341 -188
  430. package/dist/native/charts/src/engine/scene.js.map +1 -1
  431. package/dist/native/charts/src/engine/shapes/bullet.cjs +1 -1
  432. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -1
  433. package/dist/native/charts/src/engine/shapes/bullet.js +110 -110
  434. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -1
  435. package/dist/native/charts/src/engine/shapes/calendar.cjs +1 -1
  436. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -1
  437. package/dist/native/charts/src/engine/shapes/calendar.js +21 -16
  438. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -1
  439. package/dist/native/charts/src/engine/shapes/chord.cjs +2 -0
  440. package/dist/native/charts/src/engine/shapes/chord.cjs.map +1 -0
  441. package/dist/native/charts/src/engine/shapes/chord.js +414 -0
  442. package/dist/native/charts/src/engine/shapes/chord.js.map +1 -0
  443. package/dist/native/charts/src/engine/shapes/draw.cjs +1 -1
  444. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -1
  445. package/dist/native/charts/src/engine/shapes/draw.js +47 -17
  446. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -1
  447. package/dist/native/charts/src/engine/shapes/hit.cjs +1 -1
  448. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -1
  449. package/dist/native/charts/src/engine/shapes/hit.js +73 -44
  450. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -1
  451. package/dist/native/charts/src/engine/shapes/labels.cjs +1 -1
  452. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -1
  453. package/dist/native/charts/src/engine/shapes/labels.js +12 -4
  454. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -1
  455. package/dist/native/charts/src/engine/shapes/layout.cjs +2 -2
  456. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -1
  457. package/dist/native/charts/src/engine/shapes/layout.js +117 -90
  458. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -1
  459. package/dist/native/charts/src/engine/shapes/scene.cjs +1 -1
  460. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -1
  461. package/dist/native/charts/src/engine/shapes/scene.js +62 -19
  462. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -1
  463. package/dist/native/components/Chart/scene.cjs +1 -1
  464. package/dist/native/components/Chart/scene.cjs.map +1 -1
  465. package/dist/native/components/Chart/scene.js +140 -71
  466. package/dist/native/components/Chart/scene.js.map +1 -1
  467. package/dist/native/components/Charts/charts.cjs +1 -1
  468. package/dist/native/components/Charts/charts.cjs.map +1 -1
  469. package/dist/native/components/Charts/charts.js +54 -42
  470. package/dist/native/components/Charts/charts.js.map +1 -1
  471. package/dist/native/components/Charts/types.d.cts +11 -0
  472. package/dist/native/components/Charts/types.d.ts +11 -0
  473. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +1 -1
  474. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -1
  475. package/dist/native/components/ShapeChart/ShapeChartBase.js +1 -0
  476. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -1
  477. package/dist/native/components/ShapeChart/charts.cjs +1 -1
  478. package/dist/native/components/ShapeChart/charts.cjs.map +1 -1
  479. package/dist/native/components/ShapeChart/charts.d.cts +6 -1
  480. package/dist/native/components/ShapeChart/charts.d.ts +6 -1
  481. package/dist/native/components/ShapeChart/charts.js +138 -96
  482. package/dist/native/components/ShapeChart/charts.js.map +1 -1
  483. package/dist/native/components/ShapeChart/draw.cjs +1 -1
  484. package/dist/native/components/ShapeChart/draw.cjs.map +1 -1
  485. package/dist/native/components/ShapeChart/draw.d.cts +1 -1
  486. package/dist/native/components/ShapeChart/draw.d.ts +1 -1
  487. package/dist/native/components/ShapeChart/draw.js +26 -17
  488. package/dist/native/components/ShapeChart/draw.js.map +1 -1
  489. package/dist/native/components/ShapeChart/geometry.cjs +1 -1
  490. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -1
  491. package/dist/native/components/ShapeChart/geometry.js +138 -59
  492. package/dist/native/components/ShapeChart/geometry.js.map +1 -1
  493. package/dist/native/components/ShapeChart/index.cjs +1 -1
  494. package/dist/native/components/ShapeChart/index.d.cts +1 -1
  495. package/dist/native/components/ShapeChart/index.d.ts +1 -1
  496. package/dist/native/components/ShapeChart/index.js +2 -2
  497. package/dist/native/components/ShapeChart/recorder.cjs +1 -1
  498. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -1
  499. package/dist/native/components/ShapeChart/recorder.d.cts +10 -1
  500. package/dist/native/components/ShapeChart/recorder.d.ts +10 -1
  501. package/dist/native/components/ShapeChart/recorder.js +19 -10
  502. package/dist/native/components/ShapeChart/recorder.js.map +1 -1
  503. package/dist/native/components/ShapeChart/types.d.cts +92 -7
  504. package/dist/native/components/ShapeChart/types.d.ts +92 -7
  505. package/dist/native/index.cjs +1 -1
  506. package/dist/native/index.js +2 -2
  507. package/dist/native/source/components/Chart/scene.tsx +158 -14
  508. package/dist/native/source/components/Charts/charts.tsx +30 -2
  509. package/dist/native/source/components/Charts/types.ts +11 -0
  510. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +2 -0
  511. package/dist/native/source/components/ShapeChart/charts.tsx +91 -35
  512. package/dist/native/source/components/ShapeChart/draw.tsx +39 -8
  513. package/dist/native/source/components/ShapeChart/geometry.ts +189 -8
  514. package/dist/native/source/components/ShapeChart/index.ts +1 -0
  515. package/dist/native/source/components/ShapeChart/recorder.ts +20 -5
  516. package/dist/native/source/components/ShapeChart/types.ts +96 -5
  517. package/dist/native/source/manifest.ts +1 -0
  518. package/dist/taro/charts.d.ts +25 -5
  519. package/dist/taro/index.js +3900 -2836
  520. package/dist/taro/shape-charts.d.ts +96 -4
  521. package/dist/uni/AreaChart.vue.d.ts +5 -1
  522. package/dist/uni/Badge.vue.d.ts +1 -1
  523. package/dist/uni/BarChart.vue.d.ts +5 -1
  524. package/dist/uni/BoxPlotChart.vue.d.ts +8 -0
  525. package/dist/uni/BubbleChart.vue.d.ts +4 -0
  526. package/dist/uni/BulletChart.vue.d.ts +4 -0
  527. package/dist/uni/CalendarHeatmap.vue.d.ts +2 -0
  528. package/dist/uni/CandlestickChart.vue.d.ts +4 -0
  529. package/dist/uni/Chart.vue.d.ts +4 -0
  530. package/dist/uni/ChordChart.vue +93 -0
  531. package/dist/uni/ChordChart.vue.d.ts +136 -0
  532. package/dist/uni/DonutChart.vue.d.ts +4 -0
  533. package/dist/uni/FunnelChart.vue.d.ts +4 -0
  534. package/dist/uni/GanttChart.vue.d.ts +4 -0
  535. package/dist/uni/GaugeChart.vue.d.ts +4 -0
  536. package/dist/uni/HeatmapChart.vue.d.ts +8 -2
  537. package/dist/uni/HistogramChart.vue.d.ts +4 -0
  538. package/dist/uni/HorizontalBarChart.vue.d.ts +3 -1
  539. package/dist/uni/LineChart.vue.d.ts +4 -0
  540. package/dist/uni/MixedChart.vue.d.ts +4 -0
  541. package/dist/uni/PieChart.vue.d.ts +4 -0
  542. package/dist/uni/QuadrantChart.vue.d.ts +4 -0
  543. package/dist/uni/RadarChart.vue.d.ts +4 -0
  544. package/dist/uni/RadialBarChart.vue.d.ts +4 -0
  545. package/dist/uni/RangeAreaChart.vue.d.ts +4 -0
  546. package/dist/uni/SankeyChart.vue.d.ts +4 -0
  547. package/dist/uni/ScatterChart.vue.d.ts +4 -0
  548. package/dist/uni/Sparkline.vue.d.ts +4 -0
  549. package/dist/uni/SunburstChart.vue.d.ts +4 -0
  550. package/dist/uni/ToastProvider.vue.d.ts +1 -1
  551. package/dist/uni/TreemapChart.vue.d.ts +4 -0
  552. package/dist/uni/WaterfallChart.vue.d.ts +9 -0
  553. package/dist/uni/chart-canvas.d.ts +3 -0
  554. package/dist/uni/chart-canvas.js +4 -0
  555. package/dist/uni/chart-types.d.ts +28 -4
  556. package/dist/uni/chart-types.js +26 -2
  557. package/dist/uni/charts-canvas.js +1 -1
  558. package/dist/uni/index.d.ts +2 -1
  559. package/dist/uni/index.js +1 -0
  560. package/dist/uni/manifest.d.ts +7 -0
  561. package/dist/uni/manifest.js +10 -0
  562. package/dist/uni/named-chart-options.d.ts +9 -2
  563. package/dist/uni/named-chart-options.js +18 -1
  564. package/dist/uni/shape-chart-canvas.d.ts +3 -1
  565. package/dist/uni/shape-chart-canvas.js +15 -24
  566. package/dist/uni/shape-chart-types.d.ts +52 -2
  567. package/dist/uni/shape-chart-types.js +44 -0
  568. package/dist/vue/charts-global.d.ts +48 -0
  569. package/dist/vue/charts.d.ts +18 -0
  570. package/dist/vue/charts.js +56 -0
  571. package/dist/vue/charts.js.map +1 -0
  572. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +8 -0
  573. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -1
  574. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +8 -2
  575. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  576. package/dist/vue/components/Chart/ChordChart.vue.d.ts +153 -0
  577. package/dist/vue/components/Chart/ChordChart.vue.js +7 -0
  578. package/dist/vue/components/Chart/ChordChart.vue.js.map +1 -0
  579. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js +81 -0
  580. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  581. package/dist/vue/components/Chart/DependencyGraph.vue.d.ts +179 -0
  582. package/dist/vue/components/Chart/DependencyGraph.vue.js +7 -0
  583. package/dist/vue/components/Chart/DependencyGraph.vue.js.map +1 -0
  584. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js +65 -0
  585. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js.map +1 -0
  586. package/dist/vue/components/Chart/GanttChart.vue.d.ts +4 -0
  587. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -1
  588. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +4 -1
  589. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  590. package/dist/vue/components/Chart/GraphChart.vue.d.ts +184 -0
  591. package/dist/vue/components/Chart/GraphChart.vue.js +7 -0
  592. package/dist/vue/components/Chart/GraphChart.vue.js.map +1 -0
  593. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js +62 -0
  594. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  595. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +9 -5
  596. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -1
  597. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +3 -1
  598. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  599. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +2 -0
  600. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +2 -0
  601. package/dist/vue/components/Chart/TradingChart.vue.d.ts +49 -1
  602. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -1
  603. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +31 -0
  604. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  605. package/dist/vue/components/Chart/TreeChart.vue.d.ts +172 -0
  606. package/dist/vue/components/Chart/TreeChart.vue.js +7 -0
  607. package/dist/vue/components/Chart/TreeChart.vue.js.map +1 -0
  608. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js +56 -0
  609. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  610. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +12 -1
  611. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -1
  612. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +8 -2
  613. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  614. package/dist/vue/components/Chart/graph.d.ts +153 -0
  615. package/dist/vue/components/Chart/graph.js +135 -0
  616. package/dist/vue/components/Chart/graph.js.map +1 -0
  617. package/dist/vue/components/Chart/index.d.ts +5 -1
  618. package/dist/vue/components/Chart/index.js +5 -1
  619. package/dist/vue/components/Chart/orderbook.d.ts +5 -1
  620. package/dist/vue/components/Chart/orderbook.js +2 -0
  621. package/dist/vue/components/Chart/orderbook.js.map +1 -1
  622. package/dist/vue/components/Chart/trading.d.ts +24 -2
  623. package/dist/vue/components/Chart/trading.js +8 -0
  624. package/dist/vue/components/Chart/trading.js.map +1 -1
  625. package/dist/vue/components/Chart/types.d.ts +74 -2
  626. package/dist/vue/global.d.ts +2 -38
  627. package/dist/vue/groups/charts.js +10 -2
  628. package/dist/vue/groups/charts.js.map +1 -1
  629. package/dist/vue/index.js +6 -2
  630. package/dist/vue/internal/register.d.ts +7 -0
  631. package/dist/vue/internal/register.js +14 -0
  632. package/dist/vue/internal/register.js.map +1 -0
  633. package/dist/vue/plugin.d.ts +9 -4
  634. package/dist/vue/plugin.js +6 -11
  635. package/dist/vue/plugin.js.map +1 -1
  636. package/dist/weapp/charts/canvas.js +1687 -147
  637. package/dist/weapp/charts/core.js +1 -0
  638. package/dist/weapp/chord-chart/index.js +1 -0
  639. package/dist/weapp/chord-chart/index.json +1 -0
  640. package/dist/weapp/chord-chart/index.wxml +1 -0
  641. package/dist/weapp/chord-chart/index.wxss +1 -0
  642. package/dist/weapp/controls.js +92 -32
  643. package/dist/weapp/types.d.ts +87 -4
  644. package/dist/web-components/components/chart/charts.d.ts +4 -2
  645. package/dist/web-components/components/chart/charts.js +8 -1
  646. package/dist/web-components/components/chart/charts.js.map +1 -1
  647. package/dist/web-components/components/chart/extended.d.ts +17 -7
  648. package/dist/web-components/components/chart/extended.js +23 -9
  649. package/dist/web-components/components/chart/extended.js.map +1 -1
  650. package/dist/web-components/components/chart/shapes-extended.d.ts +37 -1
  651. package/dist/web-components/components/chart/shapes-extended.js +27 -1
  652. package/dist/web-components/components/chart/shapes-extended.js.map +1 -1
  653. package/dist/web-components/components/graph/graph.d.ts +154 -0
  654. package/dist/web-components/components/graph/graph.js +149 -0
  655. package/dist/web-components/components/graph/graph.js.map +1 -0
  656. package/dist/web-components/components/trading-chart/trading-chart.d.ts +49 -2
  657. package/dist/web-components/components/trading-chart/trading-chart.js +62 -0
  658. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -1
  659. package/dist/web-components/elements/chart.d.ts +1 -1
  660. package/dist/web-components/elements/chart.js +6 -5
  661. package/dist/web-components/elements/chart.js.map +1 -1
  662. package/dist/web-components/elements/graph.d.ts +2 -0
  663. package/dist/web-components/elements/graph.js +12 -0
  664. package/dist/web-components/elements/graph.js.map +1 -0
  665. package/dist/web-components/html-custom-data.json +273 -4
  666. package/dist/web-components/types/react.d.ts +63 -4
  667. package/dist/web-components/types/solid.d.ts +55 -8
  668. package/dist/web-components/types/svelte.d.ts +55 -8
  669. package/dist/web-components/types/vue.d.ts +55 -4
  670. package/package.json +16 -1
@@ -1 +1 @@
1
- {"version":3,"file":"labels.js","names":["SHAPE_LABELS","shapeLabels","localeLabels","o","interpolate","template","key","values","all","localeFormat","tag","resolveLocale","locale","units","compactUnits","value","abs","unit","suffix","numberFormat","magnitude","decimals","localePercent","share"],"sources":["../../../../../charts/src/engine/shapes/labels.ts"],"sourcesContent":["// Language of the shape charts: built-in texts (tooltip rows, accessible\n// names, \"No data\") and locale-aware number / percent formatting. The locale\n// is resolved on every layout, so a page language switch followed by a\n// re-render updates the texts.\n\nimport {\n compactUnits,\n localeLabels,\n numberFormat,\n resolveLocale,\n type LabelDictionary,\n} from \"../locale\";\nimport type { ShapeChartLabels, ShapeChartOptions } from \"./types\";\n\nexport const SHAPE_LABELS: LabelDictionary<ShapeChartLabels> = {\n en: {\n noData: \"No data\",\n value: \"Value\",\n share: \"Share\",\n ofFirstStage: \"Of first stage\",\n conversion: \"Conversion\",\n ofRange: \"Of range\",\n ofName: \"Of {name}\",\n incoming: \"Incoming\",\n outgoing: \"Outgoing\",\n max: \"Max\",\n progress: \"Progress\",\n target: \"Target\",\n ofTarget: \"Of target\",\n range: \"Range\",\n series: \"Series {index}\",\n pieChart: \"Pie chart\",\n donutChart: \"Donut chart\",\n roseChart: \"Rose chart\",\n radarChart: \"Radar chart\",\n gaugeChart: \"Gauge\",\n gaugeChartNamed: \"Gauge: {label}\",\n funnelChart: \"Funnel chart\",\n treemapChart: \"Treemap\",\n sankeyChart: \"Sankey diagram\",\n sunburstChart: \"Sunburst chart\",\n radialBarChart: \"Radial bar chart\",\n calendarHeatmap: \"Calendar heatmap\",\n bulletChart: \"Bullet chart\",\n },\n zh: {\n noData: \"暂无数据\",\n value: \"数值\",\n share: \"占比\",\n ofFirstStage: \"占首阶段\",\n conversion: \"转化率\",\n ofRange: \"占量程\",\n ofName: \"占{name}\",\n incoming: \"流入\",\n outgoing: \"流出\",\n max: \"最大值\",\n progress: \"进度\",\n target: \"目标\",\n ofTarget: \"目标达成\",\n range: \"区间\",\n series: \"系列 {index}\",\n pieChart: \"饼图\",\n donutChart: \"环形图\",\n roseChart: \"玫瑰图\",\n radarChart: \"雷达图\",\n gaugeChart: \"仪表盘\",\n gaugeChartNamed: \"仪表盘:{label}\",\n funnelChart: \"漏斗图\",\n treemapChart: \"矩形树图\",\n sankeyChart: \"桑基图\",\n sunburstChart: \"旭日图\",\n radialBarChart: \"径向条形图\",\n calendarHeatmap: \"日历热力图\",\n bulletChart: \"子弹图\",\n },\n ja: {\n noData: \"データなし\",\n value: \"値\",\n share: \"割合\",\n ofFirstStage: \"初段階比\",\n conversion: \"転換率\",\n ofRange: \"範囲比\",\n ofName: \"{name}比\",\n incoming: \"流入\",\n outgoing: \"流出\",\n max: \"最大\",\n progress: \"進捗\",\n target: \"目標\",\n ofTarget: \"目標達成率\",\n range: \"範囲\",\n series: \"系列 {index}\",\n pieChart: \"円グラフ\",\n donutChart: \"ドーナツグラフ\",\n roseChart: \"鶏頭図\",\n radarChart: \"レーダーチャート\",\n gaugeChart: \"ゲージ\",\n gaugeChartNamed: \"ゲージ:{label}\",\n funnelChart: \"ファネルチャート\",\n treemapChart: \"ツリーマップ\",\n sankeyChart: \"サンキー図\",\n sunburstChart: \"サンバースト図\",\n radialBarChart: \"円形棒グラフ\",\n calendarHeatmap: \"カレンダーヒートマップ\",\n bulletChart: \"ブレットグラフ\",\n },\n fr: {\n noData: \"Aucune donnée\",\n value: \"Valeur\",\n share: \"Part\",\n ofFirstStage: \"Part de la 1re étape\",\n conversion: \"Conversion\",\n ofRange: \"Part de la plage\",\n ofName: \"Part de {name}\",\n incoming: \"Entrées\",\n outgoing: \"Sorties\",\n max: \"Max\",\n progress: \"Progression\",\n target: \"Objectif\",\n ofTarget: \"Atteinte de l’objectif\",\n range: \"Plage\",\n series: \"Série {index}\",\n pieChart: \"Graphique circulaire\",\n donutChart: \"Graphique en anneau\",\n roseChart: \"Diagramme de Nightingale\",\n radarChart: \"Graphique radar\",\n gaugeChart: \"Jauge\",\n gaugeChartNamed: \"Jauge : {label}\",\n funnelChart: \"Graphique en entonnoir\",\n treemapChart: \"Treemap\",\n sankeyChart: \"Diagramme de Sankey\",\n sunburstChart: \"Diagramme en rayons de soleil\",\n radialBarChart: \"Graphique à barres radiales\",\n calendarHeatmap: \"Calendrier thermique\",\n bulletChart: \"Graphique à puces\",\n },\n};\n\n/** Texts of a chart: its `locale` (the page language by default) and `texts` overrides */\nexport const shapeLabels = (\n o: Pick<ShapeChartOptions, \"locale\" | \"texts\">,\n): ShapeChartLabels => localeLabels(SHAPE_LABELS, o.locale, o.texts);\n\n/** Replaces the `{key}` placeholders of a text */\nexport const interpolate = (\n template: string,\n values: Record<string, string | number>,\n): string =>\n template.replace(/\\{(\\w+)\\}/g, (all, key: string) =>\n key in values ? String(values[key]) : all,\n );\n\n/**\n * Compact number of a locale: `1.23k` / `12.3万` / `1,2 k`; small values\n * keep enough decimals to be told apart\n */\nexport const localeFormat = (locale?: string) => {\n const tag = resolveLocale(locale);\n const units = compactUnits(tag);\n return (value: number): string => {\n if (!Number.isFinite(value)) return String(value);\n if (Object.is(value, -0) || value === 0) return \"0\";\n const abs = Math.abs(value);\n for (const [unit, suffix] of units)\n if (abs >= unit)\n return (\n numberFormat(tag, { maximumFractionDigits: 2 }).format(value / unit) +\n suffix\n );\n if (abs < 1e-4) return value.toExponential(1);\n // at least two decimals, two more than the magnitude (0.0123, 1.25)\n const magnitude = Math.floor(Math.log10(abs) + 1e-9);\n const decimals = Math.min(6, Math.max(0, -magnitude) + 2);\n return numberFormat(tag, { maximumFractionDigits: decimals }).format(value);\n };\n};\n\n/** Share 0-1 as a locale percent with one decimal: `40.0%`, `40,0 %` */\nexport const localePercent = (locale?: string) => {\n const tag = resolveLocale(locale);\n return (share: number): string =>\n Number.isFinite(share)\n ? numberFormat(tag, {\n style: \"percent\",\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n }).format(share)\n : \"–\";\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"labels.js","names":["SHAPE_LABELS","shapeLabels","localeLabels","o","interpolate","template","key","values","all","localeFormat","tag","resolveLocale","locale","units","compactUnits","value","abs","unit","suffix","numberFormat","magnitude","decimals","localePercent","share"],"sources":["../../../../../charts/src/engine/shapes/labels.ts"],"sourcesContent":["// Language of the shape charts: built-in texts (tooltip rows, accessible\n// names, \"No data\") and locale-aware number / percent formatting. The locale\n// is resolved on every layout, so a page language switch followed by a\n// re-render updates the texts.\n\nimport {\n compactUnits,\n localeLabels,\n numberFormat,\n resolveLocale,\n type LabelDictionary,\n} from \"../locale\";\nimport type { ShapeChartLabels, ShapeChartOptions } from \"./types\";\n\nexport const SHAPE_LABELS: LabelDictionary<ShapeChartLabels> = {\n en: {\n noData: \"No data\",\n value: \"Value\",\n share: \"Share\",\n ofFirstStage: \"Of first stage\",\n conversion: \"Conversion\",\n ofRange: \"Of range\",\n ofName: \"Of {name}\",\n incoming: \"Incoming\",\n outgoing: \"Outgoing\",\n max: \"Max\",\n progress: \"Progress\",\n target: \"Target\",\n ofTarget: \"Of target\",\n range: \"Range\",\n reverse: \"Reverse\",\n series: \"Series {index}\",\n pieChart: \"Pie chart\",\n donutChart: \"Donut chart\",\n roseChart: \"Rose chart\",\n radarChart: \"Radar chart\",\n gaugeChart: \"Gauge\",\n gaugeChartNamed: \"Gauge: {label}\",\n funnelChart: \"Funnel chart\",\n treemapChart: \"Treemap\",\n sankeyChart: \"Sankey diagram\",\n sunburstChart: \"Sunburst chart\",\n radialBarChart: \"Radial bar chart\",\n calendarHeatmap: \"Calendar heatmap\",\n bulletChart: \"Bullet chart\",\n chordChart: \"Chord diagram\",\n },\n zh: {\n noData: \"暂无数据\",\n value: \"数值\",\n share: \"占比\",\n ofFirstStage: \"占首阶段\",\n conversion: \"转化率\",\n ofRange: \"占量程\",\n ofName: \"占{name}\",\n incoming: \"流入\",\n outgoing: \"流出\",\n max: \"最大值\",\n progress: \"进度\",\n target: \"目标\",\n ofTarget: \"目标达成\",\n range: \"区间\",\n reverse: \"反向\",\n series: \"系列 {index}\",\n pieChart: \"饼图\",\n donutChart: \"环形图\",\n roseChart: \"玫瑰图\",\n radarChart: \"雷达图\",\n gaugeChart: \"仪表盘\",\n gaugeChartNamed: \"仪表盘:{label}\",\n funnelChart: \"漏斗图\",\n treemapChart: \"矩形树图\",\n sankeyChart: \"桑基图\",\n sunburstChart: \"旭日图\",\n radialBarChart: \"径向条形图\",\n calendarHeatmap: \"日历热力图\",\n bulletChart: \"子弹图\",\n chordChart: \"弦图\",\n },\n ja: {\n noData: \"データなし\",\n value: \"値\",\n share: \"割合\",\n ofFirstStage: \"初段階比\",\n conversion: \"転換率\",\n ofRange: \"範囲比\",\n ofName: \"{name}比\",\n incoming: \"流入\",\n outgoing: \"流出\",\n max: \"最大\",\n progress: \"進捗\",\n target: \"目標\",\n ofTarget: \"目標達成率\",\n range: \"範囲\",\n reverse: \"逆方向\",\n series: \"系列 {index}\",\n pieChart: \"円グラフ\",\n donutChart: \"ドーナツグラフ\",\n roseChart: \"鶏頭図\",\n radarChart: \"レーダーチャート\",\n gaugeChart: \"ゲージ\",\n gaugeChartNamed: \"ゲージ:{label}\",\n funnelChart: \"ファネルチャート\",\n treemapChart: \"ツリーマップ\",\n sankeyChart: \"サンキー図\",\n sunburstChart: \"サンバースト図\",\n radialBarChart: \"円形棒グラフ\",\n calendarHeatmap: \"カレンダーヒートマップ\",\n bulletChart: \"ブレットグラフ\",\n chordChart: \"コードダイアグラム\",\n },\n fr: {\n noData: \"Aucune donnée\",\n value: \"Valeur\",\n share: \"Part\",\n ofFirstStage: \"Part de la 1re étape\",\n conversion: \"Conversion\",\n ofRange: \"Part de la plage\",\n ofName: \"Part de {name}\",\n incoming: \"Entrées\",\n outgoing: \"Sorties\",\n max: \"Max\",\n progress: \"Progression\",\n target: \"Objectif\",\n ofTarget: \"Atteinte de l’objectif\",\n range: \"Plage\",\n reverse: \"Sens inverse\",\n series: \"Série {index}\",\n pieChart: \"Graphique circulaire\",\n donutChart: \"Graphique en anneau\",\n roseChart: \"Diagramme de Nightingale\",\n radarChart: \"Graphique radar\",\n gaugeChart: \"Jauge\",\n gaugeChartNamed: \"Jauge : {label}\",\n funnelChart: \"Graphique en entonnoir\",\n treemapChart: \"Treemap\",\n sankeyChart: \"Diagramme de Sankey\",\n sunburstChart: \"Diagramme en rayons de soleil\",\n radialBarChart: \"Graphique à barres radiales\",\n calendarHeatmap: \"Calendrier thermique\",\n bulletChart: \"Graphique à puces\",\n chordChart: \"Diagramme d’accords\",\n },\n};\n\n/** Texts of a chart: its `locale` (the page language by default) and `texts` overrides */\nexport const shapeLabels = (\n o: Pick<ShapeChartOptions, \"locale\" | \"texts\">,\n): ShapeChartLabels => localeLabels(SHAPE_LABELS, o.locale, o.texts);\n\n/** Replaces the `{key}` placeholders of a text */\nexport const interpolate = (\n template: string,\n values: Record<string, string | number>,\n): string =>\n template.replace(/\\{(\\w+)\\}/g, (all, key: string) =>\n key in values ? String(values[key]) : all,\n );\n\n/**\n * Compact number of a locale: `1.23k` / `12.3万` / `1,2 k`; small values\n * keep enough decimals to be told apart\n */\nexport const localeFormat = (locale?: string) => {\n const tag = resolveLocale(locale);\n const units = compactUnits(tag);\n return (value: number): string => {\n if (!Number.isFinite(value)) return String(value);\n if (Object.is(value, -0) || value === 0) return \"0\";\n const abs = Math.abs(value);\n for (const [unit, suffix] of units)\n if (abs >= unit)\n return (\n numberFormat(tag, { maximumFractionDigits: 2 }).format(value / unit) +\n suffix\n );\n if (abs < 1e-4) return value.toExponential(1);\n // at least two decimals, two more than the magnitude (0.0123, 1.25)\n const magnitude = Math.floor(Math.log10(abs) + 1e-9);\n const decimals = Math.min(6, Math.max(0, -magnitude) + 2);\n return numberFormat(tag, { maximumFractionDigits: decimals }).format(value);\n };\n};\n\n/** Share 0-1 as a locale percent with one decimal: `40.0%`, `40,0 %` */\nexport const localePercent = (locale?: string) => {\n const tag = resolveLocale(locale);\n return (share: number): string =>\n Number.isFinite(share)\n ? numberFormat(tag, {\n style: \"percent\",\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n }).format(share)\n : \"–\";\n};\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- const e=require("../color.cjs"),t=require("../locale.cjs"),n=require("../overlay.cjs"),r=require("./labels.cjs"),i=require("./scene.cjs"),a=require("./calendar.cjs"),o=require("./bullet.cjs"),s=require("./funnel.cjs"),c=require("./gauge.cjs"),l=require("./pie.cjs"),u=require("./radar.cjs"),d=require("./radialBar.cjs"),f=require("./sankey.cjs"),p=require("./sunburst.cjs"),m=require("./treemap.cjs");var h=new Set,g=[],_=e=>{let{options:n,theme:_,width:v,height:y}=e,b=e.bounds??{x:0,y:0,width:v,height:y},x=e.from??null,S=i.clamp(e.t??1,0,1),C=_.palette.length?_.palette:[_.primary],w=t.resolveLocale(n.locale),T=r.shapeLabels(n),E={theme:_,measure:e.measure,hidden:e.hidden??h,enter:i.clamp(e.enter??1,0,1),value:(e,t)=>{if(!x||S>=1)return t;let n=x.get(e)??0;return n+(t-n)*S},format:n.format??r.localeFormat(w),percent:n.percentFormat??r.localePercent(w),labels:T,locale:w,color:(e,t)=>i.resolveWith(_,e,C[t%C.length]),area:i.inset(b,n.padding),focus:e.focus??g},D;switch(n.type){case`pie`:D=l.layoutPie(n,E);break;case`radar`:D=u.layoutRadar(n,E);break;case`gauge`:D=c.layoutGauge(n,E);break;case`funnel`:D=s.layoutFunnel(n,E);break;case`sankey`:D=f.layoutSankey(n,E);break;case`sunburst`:D=p.layoutSunburst(n,E);break;case`radialBar`:D=d.layoutRadialBar(n,E);break;case`calendarHeatmap`:D=a.layoutCalendar(n,E);break;case`bullet`:D=o.layoutBullet(n,E);break;default:D=m.layoutTreemap(n,E)}return{type:n.type,width:v,height:y,labels:T,locale:w,...D}},v=(e,t=h,n=g)=>{let r=new Map;switch(e.type){case`pie`:l.pieValues(e,t,r);break;case`radar`:u.radarValues(e,t,r);break;case`gauge`:c.gaugeValues(e,t,r);break;case`funnel`:s.funnelValues(e,t,r);break;case`sankey`:f.sankeyValues(e,t,r);break;case`sunburst`:p.sunburstValues(e,t,n,r);break;case`radialBar`:d.radialBarValues(e,t,r);break;case`calendarHeatmap`:a.calendarValues(e,t,r);break;case`bullet`:o.bulletValues(e,t,r);break;default:m.treemapValues(e,t,r)}return r},y=(e,t,n)=>{let r=new Map;return t.forEach((t,i)=>{let a=e.get(i)??0;r.set(i,a+(t-a)*n)}),r},b=(e,t)=>{if(e.size!==t.size)return!1;for(let[n,r]of e){let e=t.get(n);if(e===void 0||Math.abs(e-r)>1e-12)return!1}return!0},x=e=>{let t=typeof e.legend==`object`?e.legend:{};return{position:t.position??`bottom`,toggle:t.toggle??!0}},S=(t,n,o=h)=>{if(t.legend===!1)return null;let c=n.palette.length?n.palette:[n.primary],l=(t,r)=>e.toCss(i.resolveWith(n,t,c[r%c.length])),p=[],m=t.legend!==void 0;switch(t.type){case`pie`:m=!0,p=t.data.map((e,t)=>({index:t,name:e.name,color:l(e.color,t),hidden:o.has(t)}));break;case`funnel`:m=!0,p=s.funnelOrder(t,h).map(e=>({index:e,name:t.data[e].name,color:l(t.data[e].color,e),hidden:o.has(e)}));break;case`radar`:m||(m=t.series.length>1),p=t.series.map((e,n)=>({index:n,name:u.seriesName(t,n,r.shapeLabels(t)),color:l(e.color,n),hidden:o.has(n)}));break;case`treemap`:case`sunburst`:p=t.data.map((e,t)=>({index:t,name:e.name,color:l(e.color,t),hidden:o.has(t)}));break;case`radialBar`:m||(m=!d.radialBarLabels(t)),p=t.data.map((e,t)=>({index:t,name:e.name,color:l(e.color,t),hidden:o.has(t)}));break;case`bullet`:p=t.data.map((e,t)=>({index:t,name:e.name,color:l(e.color,t),hidden:o.has(t)}));break;case`sankey`:{let e=f.resolveSankey(t);p=e.names.map((t,n)=>({index:n,name:t,color:l(e.colors[n],n),hidden:o.has(n)}));break}case`calendarHeatmap`:m=!0,p=a.calendarLegend(t,n,o)}return m&&p.length?p:null},C=e=>{switch(e.type){case`radar`:return e.series.length;case`gauge`:return 0;case`sankey`:return f.resolveSankey(e).names.length;case`calendarHeatmap`:return a.calendarModel(e)?.count??0;default:return e.data.length}},w=(e,t)=>{if(!t)return null;let n=e.items.find(e=>e.index===t.index);if(!n)return null;if(n.indicators){let e=i.clamp(t.indicator??0,0,n.indicators.length-1),r=n.indicators[e];return{index:n.index,indicator:e,name:n.name,value:r.value,percent:r.percent,color:n.color}}return{index:n.index,name:n.name,value:n.value,percent:n.percent,color:n.color,...n.path?{path:n.path}:{},...n.event}},T=(e,t)=>e===t||!!e&&!!t&&e.index===t.index&&e.indicator===t.indicator,E=(e,t)=>{let n=e.items.find(e=>e.index===t.index);if(!n)return null;let r=n.indicators?n.rows.map((e,n)=>n===(t.indicator??-1)?{...e,strong:!0}:e):n.rows;return{title:n.path?n.path.join(` / `):n.name,color:n.color,rows:r}},D=(e,t)=>{let n=e.items.find(e=>e.index===t.index);if(!n)return``;if(n.indicators){let e=i.clamp(t.indicator??0,0,n.indicators.length-1);return`${n.name}, ${n.indicators[e].name}: ${n.rows[e]?.value??n.indicators[e].value}`}return`${n.path?n.path.join(` / `):n.name}: ${n.rows[0]?.value??n.value} (${n.share??r.localePercent(e.locale)(n.percent)})`},O=e=>{let t=r.shapeLabels(e);switch(e.type){case`pie`:return e.rose?t.roseChart:(e.innerRadius??0)>0?t.donutChart:t.pieChart;case`radar`:return t.radarChart;case`gauge`:return e.label?r.interpolate(t.gaugeChartNamed,{label:e.label}):t.gaugeChart;case`funnel`:return t.funnelChart;case`sankey`:return t.sankeyChart;case`sunburst`:return t.sunburstChart;case`radialBar`:return t.radialBarChart;case`calendarHeatmap`:return t.calendarHeatmap;case`bullet`:return t.bulletChart;default:return t.treemapChart}},k=e=>e.empty?(e.labels??r.SHAPE_LABELS.en).noData:e.items.slice(0,12).map(t=>t.indicators?`${t.name}: ${t.indicators.map((e,n)=>`${e.name} ${t.rows[n]?.value??e.value}`).join(`, `)}`:D(e,{index:t.index})).join(`; `),A=20,j=(e,t,r,i,a,o)=>{let s=n.font(a,12),c=[[]],l=0;for(let n of e){let e=Math.min(t-8,16+o(n.name,s)),r=c[c.length-1];r.length&&l+14+e>t-8&&(c.push(r=[]),l=0),r.length&&(l+=14),r.push({...n,x:l,y:0,width:e,height:A}),l+=e}let u=c.length*A+8,d=r===`top`?2:i-u+6,f=[];return c.forEach((e,n)=>{let r=e[e.length-1],i=(t-(r?r.x+r.width:0))/2;for(let t of e)f.push({...t,x:t.x+i,y:d+n*A})}),{boxes:f,height:u}},M=6,N=14,P=(e,t)=>Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x))*Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y)),F=(e,t,n,r,i,a,o)=>{let s=M,c=(e,t)=>({x:Math.max(s,Math.min(e,a-r-s)),y:Math.max(s,Math.min(t,o-i-s))}),{x:l,y:u}=n,d=e?.radar;if(!d||!e||!t){let e=l+16;return e+r>a-s&&(e=l-16-r),c(e,u-i/2)}let f=[[l,u]],p=e.items.find(e=>e.index===t.index),m=p?.indicators&&t.indicator!==void 0?p.indicators[t.indicator]:void 0;m&&f.push([m.x,m.y]);let h=d.labels??[],g=l-d.cx,_=u-d.cy,v=Math.hypot(g,_);v>1?(g/=v,_/=v):(g=1,_=0);let y=N,b=[[l+y,u-i/2],[l-y-r,u-i/2],[l-r/2,u-y-i],[l-r/2,u+y],[l+y,u-y-i],[l+y,u+y],[l-y-r,u-y-i],[l-y-r,u+y]],x=c(b[0][0],b[0][1]),S=1/0;for(let[e,t]of b){let n=c(e,t),a={x:n.x,y:n.y,width:r,height:i},o=0;for(let[e,t]of f)e>a.x-8&&e<a.x+r+8&&t>a.y-8&&t<a.y+i+8&&(o+=1e6);for(let e of h)o+=P(a,e)*4;let s=n.x+r/2-l,d=n.y+i/2-u,p=Math.hypot(s,d)||1;o+=p*.5,o-=(s*g+d*_)/p*40,o+=Math.abs(n.x-e)+Math.abs(n.y-t),o<S&&(S=o,x=n)}return x},I=(e,t,r,i,a,o,s,c=null,l=null)=>{let u=0,d,f,p;if(typeof e==`string`){p=e.split(`
2
- `);let t=n.font(o,12);for(let e of p)u=Math.max(u,s(e,t));d=p.length}else{f=e,u=(e.color?14:0)+s(e.title,n.font(o,12,600));for(let t of e.rows)u=Math.max(u,(t.color?14:0)+s(t.name,n.font(o,12))+16+s(t.value,n.font(o,12,600)));d=1+e.rows.length}let m=Math.max(96,Math.ceil(u+18+4)),h=d*18+18,{x:g,y:_}=F(c,l,{x:t,y:r},m,h,i,a);return{x:g,y:_,width:m,height:h,padding:9,lineHeight:18,...f?{content:f}:{},...p?{text:p}:{}}};exports.blendValues=y,exports.describeChart=O,exports.describeItem=D,exports.describeScene=k,exports.hoverEvent=w,exports.layoutShapeLegend=j,exports.layoutShapeScene=_,exports.layoutShapeTooltip=I,exports.legendConfig=x,exports.placeShapeTooltip=F,exports.sameHover=T,exports.sameValues=b,exports.shapeLegend=S,exports.shapeValues=v,exports.toggleCount=C,exports.tooltipContent=E;
1
+ const e=require("../color.cjs"),t=require("../locale.cjs"),n=require("../overlay.cjs"),r=require("./labels.cjs"),i=require("./scene.cjs"),a=require("./calendar.cjs"),o=require("./bullet.cjs"),s=require("./chord.cjs"),c=require("./funnel.cjs"),l=require("./gauge.cjs"),u=require("./pie.cjs"),d=require("./radar.cjs"),f=require("./radialBar.cjs"),p=require("./sankey.cjs"),m=require("./sunburst.cjs"),h=require("./treemap.cjs");var g=new Set,_=[],v=e=>{let{options:n,theme:v,width:y,height:b}=e,x=e.bounds??{x:0,y:0,width:y,height:b},S=e.from??null,C=i.clamp(e.t??1,0,1),w=v.palette.length?v.palette:[v.primary],T=t.resolveLocale(n.locale),E=r.shapeLabels(n),D={theme:v,measure:e.measure,hidden:e.hidden??g,enter:i.clamp(e.enter??1,0,1),value:(e,t)=>{if(!S||C>=1)return t;let n=S.get(e)??0;return n+(t-n)*C},format:n.format??r.localeFormat(T),percent:n.percentFormat??r.localePercent(T),labels:E,locale:T,color:(e,t)=>i.resolveWith(v,e,w[t%w.length]),area:i.inset(x,n.padding),focus:e.focus??_},O;switch(n.type){case`pie`:O=u.layoutPie(n,D);break;case`radar`:O=d.layoutRadar(n,D);break;case`gauge`:O=l.layoutGauge(n,D);break;case`funnel`:O=c.layoutFunnel(n,D);break;case`sankey`:O=p.layoutSankey(n,D);break;case`sunburst`:O=m.layoutSunburst(n,D);break;case`radialBar`:O=f.layoutRadialBar(n,D);break;case`calendarHeatmap`:O=a.layoutCalendar(n,D);break;case`bullet`:O=o.layoutBullet(n,D);break;case`chord`:O=s.layoutChord(n,D);break;default:O=h.layoutTreemap(n,D)}return{type:n.type,width:y,height:b,labels:E,locale:T,...O}},y=(e,t=g,n=_)=>{let r=new Map;switch(e.type){case`pie`:u.pieValues(e,t,r);break;case`radar`:d.radarValues(e,t,r);break;case`gauge`:l.gaugeValues(e,t,r);break;case`funnel`:c.funnelValues(e,t,r);break;case`sankey`:p.sankeyValues(e,t,r);break;case`sunburst`:m.sunburstValues(e,t,n,r);break;case`radialBar`:f.radialBarValues(e,t,r);break;case`calendarHeatmap`:a.calendarValues(e,t,r);break;case`bullet`:o.bulletValues(e,t,r);break;case`chord`:s.chordValues(e,t,r);break;default:h.treemapValues(e,t,r)}return r},b=(e,t,n)=>{let r=new Map;return t.forEach((t,i)=>{let a=e.get(i)??0;r.set(i,a+(t-a)*n)}),r},x=(e,t)=>{if(e.size!==t.size)return!1;for(let[n,r]of e){let e=t.get(n);if(e===void 0||Math.abs(e-r)>1e-12)return!1}return!0},S=e=>{let t=typeof e.legend==`object`?e.legend:{};return{position:t.position??`bottom`,toggle:t.toggle??!0}},C=(t,n,o=g)=>{if(t.legend===!1)return null;let l=n.palette.length?n.palette:[n.primary],u=(t,r)=>e.toCss(i.resolveWith(n,t,l[r%l.length])),m=[],h=t.legend!==void 0;switch(t.type){case`pie`:h=!0,m=t.data.map((e,t)=>({index:t,name:e.name,color:u(e.color,t),hidden:o.has(t)}));break;case`funnel`:h=!0,m=c.funnelOrder(t,g).map(e=>({index:e,name:t.data[e].name,color:u(t.data[e].color,e),hidden:o.has(e)}));break;case`radar`:h||(h=t.series.length>1),m=t.series.map((e,n)=>({index:n,name:d.seriesName(t,n,r.shapeLabels(t)),color:u(e.color,n),hidden:o.has(n)}));break;case`treemap`:case`sunburst`:m=t.data.map((e,t)=>({index:t,name:e.name,color:u(e.color,t),hidden:o.has(t)}));break;case`radialBar`:h||(h=!f.radialBarLabels(t)),m=t.data.map((e,t)=>({index:t,name:e.name,color:u(e.color,t),hidden:o.has(t)}));break;case`bullet`:m=t.data.map((e,t)=>({index:t,name:e.name,color:u(e.color,t),hidden:o.has(t)}));break;case`sankey`:{let e=p.resolveSankey(t);m=e.names.map((t,n)=>({index:n,name:t,color:u(e.colors[n],n),hidden:o.has(n)}));break}case`calendarHeatmap`:h=!0,m=a.calendarLegend(t,n,o);break;case`chord`:{h=!0;let e=s.resolveChord(t);m=e.names.map((t,n)=>({index:n,name:t,color:u(e.colors[n],n),hidden:o.has(n)}));break}}return h&&m.length?m:null},w=e=>{switch(e.type){case`radar`:return e.series.length;case`gauge`:return 0;case`sankey`:return p.resolveSankey(e).names.length;case`calendarHeatmap`:return a.calendarModel(e)?.count??0;case`chord`:return s.resolveChord(e).names.length;default:return e.data.length}},T=(e,t)=>{if(!t)return null;let n=e.items.find(e=>e.index===t.index);if(!n)return null;if(n.indicators){let e=i.clamp(t.indicator??0,0,n.indicators.length-1),r=n.indicators[e];return{index:n.index,indicator:e,name:n.name,value:r.value,percent:r.percent,color:n.color}}return{index:n.index,name:n.name,value:n.value,percent:n.percent,color:n.color,...n.path?{path:n.path}:{},...n.event}},E=(e,t)=>e===t||!!e&&!!t&&e.index===t.index&&e.indicator===t.indicator,D=(e,t)=>{let n=e.items.find(e=>e.index===t.index);if(!n)return null;let r=n.indicators?n.rows.map((e,n)=>n===(t.indicator??-1)?{...e,strong:!0}:e):n.rows;return{title:n.path?n.path.join(` / `):n.name,color:n.color,rows:r}},O=(e,t)=>{let n=e.items.find(e=>e.index===t.index);if(!n)return``;if(n.indicators){let e=i.clamp(t.indicator??0,0,n.indicators.length-1);return`${n.name}, ${n.indicators[e].name}: ${n.rows[e]?.value??n.indicators[e].value}`}return`${n.path?n.path.join(` / `):n.name}: ${n.rows[0]?.value??n.value} (${n.share??r.localePercent(e.locale)(n.percent)})`},k=e=>{let t=r.shapeLabels(e);switch(e.type){case`pie`:return e.rose?t.roseChart:(e.innerRadius??0)>0?t.donutChart:t.pieChart;case`radar`:return t.radarChart;case`gauge`:return e.label?r.interpolate(t.gaugeChartNamed,{label:e.label}):t.gaugeChart;case`funnel`:return t.funnelChart;case`sankey`:return t.sankeyChart;case`sunburst`:return t.sunburstChart;case`radialBar`:return t.radialBarChart;case`calendarHeatmap`:return t.calendarHeatmap;case`bullet`:return t.bulletChart;case`chord`:return t.chordChart;default:return t.treemapChart}},A=e=>e.empty?(e.labels??r.SHAPE_LABELS.en).noData:e.items.slice(0,12).map(t=>t.indicators?`${t.name}: ${t.indicators.map((e,n)=>`${e.name} ${t.rows[n]?.value??e.value}`).join(`, `)}`:O(e,{index:t.index})).join(`; `),j=20,M=(e,t,r,i,a,o)=>{let s=n.font(a,12),c=[[]],l=0;for(let n of e){let e=Math.min(t-8,16+o(n.name,s)),r=c[c.length-1];r.length&&l+14+e>t-8&&(c.push(r=[]),l=0),r.length&&(l+=14),r.push({...n,x:l,y:0,width:e,height:j}),l+=e}let u=c.length*j+8,d=r===`top`?2:i-u+6,f=[];return c.forEach((e,n)=>{let r=e[e.length-1],i=(t-(r?r.x+r.width:0))/2;for(let t of e)f.push({...t,x:t.x+i,y:d+n*j})}),{boxes:f,height:u}},N=6,P=14,F=(e,t)=>Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x))*Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y)),I=(e,t,n,r,i,a,o)=>{let s=N,c=(e,t)=>({x:Math.max(s,Math.min(e,a-r-s)),y:Math.max(s,Math.min(t,o-i-s))}),{x:l,y:u}=n,d=e?.radar;if(!d||!e||!t){let e=l+16;return e+r>a-s&&(e=l-16-r),c(e,u-i/2)}let f=[[l,u]],p=e.items.find(e=>e.index===t.index),m=p?.indicators&&t.indicator!==void 0?p.indicators[t.indicator]:void 0;m&&f.push([m.x,m.y]);let h=d.labels??[],g=l-d.cx,_=u-d.cy,v=Math.hypot(g,_);v>1?(g/=v,_/=v):(g=1,_=0);let y=P,b=[[l+y,u-i/2],[l-y-r,u-i/2],[l-r/2,u-y-i],[l-r/2,u+y],[l+y,u-y-i],[l+y,u+y],[l-y-r,u-y-i],[l-y-r,u+y]],x=c(b[0][0],b[0][1]),S=1/0;for(let[e,t]of b){let n=c(e,t),a={x:n.x,y:n.y,width:r,height:i},o=0;for(let[e,t]of f)e>a.x-8&&e<a.x+r+8&&t>a.y-8&&t<a.y+i+8&&(o+=1e6);for(let e of h)o+=F(a,e)*4;let s=n.x+r/2-l,d=n.y+i/2-u,p=Math.hypot(s,d)||1;o+=p*.5,o-=(s*g+d*_)/p*40,o+=Math.abs(n.x-e)+Math.abs(n.y-t),o<S&&(S=o,x=n)}return x},L=(e,t,r,a,o,s,c,l=null,u=null)=>{let d=0,f,p,m,h;if(typeof e==`string`){m=e.split(`
2
+ `);let t=n.font(s,12);for(let e of m)d=Math.max(d,c(e,t));f=m.length}else{p=e;let t=n.font(s,12,600),r=e.color?14:0,o=Math.max(60,Math.min(260,a-16-18)-r);h=i.wrapText(e.title,o,t,c,3),h.length||(h=[e.title]);for(let e of h)d=Math.max(d,r+c(e,t));for(let t of e.rows)d=Math.max(d,(t.color?14:0)+c(t.name,n.font(s,12))+16+c(t.value,n.font(s,12,600)));f=h.length+e.rows.length}let g=Math.max(96,Math.ceil(d+18+4)),_=f*18+18,{x:v,y}=I(l,u,{x:t,y:r},g,_,a,o);return{x:v,y,width:g,height:_,padding:9,lineHeight:18,...p?{content:p,titleLines:h}:{},...m?{text:m}:{}}};exports.blendValues=b,exports.describeChart=k,exports.describeItem=O,exports.describeScene=A,exports.hoverEvent=T,exports.layoutShapeLegend=M,exports.layoutShapeScene=v,exports.layoutShapeTooltip=L,exports.legendConfig=S,exports.placeShapeTooltip=I,exports.sameHover=E,exports.sameValues=x,exports.shapeLegend=C,exports.shapeValues=y,exports.toggleCount=w,exports.tooltipContent=D;
3
3
  //# sourceMappingURL=layout.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.cjs","names":["clamp","resolveLocale","shapeLabels","localeFormat","localePercent","resolveWith","inset","layoutPie","layoutRadar","layoutGauge","layoutFunnel","layoutSankey","layoutSunburst","layoutRadialBar","layoutCalendar","layoutBullet","layoutTreemap","toCss","funnelOrder","seriesName","radialBarLabels","resolveSankey","calendarLegend","calendarModel","interpolate","SHAPE_LABELS","font","require_color","require_locale","require_overlay","require_labels","require_scene","require_calendar","require_bullet","require_funnel","require_gauge","require_pie","require_radar","require_radialBar","require_sankey","require_sunburst","require_treemap","NO_HIDDEN","NO_FOCUS","layoutShapeScene","o","input","bounds","from","t","palette","theme","locale","labels","c","target","start","key","css","i","result","shapeValues","out","hidden","focus","blendValues","to","v","sameValues","a","b","w","legendConfig","config","shapeLegend","color","entries","shown","d","s","g","toggleCount","hoverEvent","hover","item","scene","it","k","ind","sameHover","tooltipContent","rows","row","describeItem","describeChart","l","describeScene","LEGEND_ROW","layoutShapeLegend","f","x","e","width","measure","height","top","position","chartHeight","boxes","last","offset","box","r","TIP_MARGIN","TIP_GAP","overlapArea","placeShapeTooltip","m","fit","y","h","ax","ay","anchor","radar","avoid","vertex","dx","dy","len","candidates","best","bestScore","cx0","cy0","p","score","px","py","label","ox","oy","dist","layoutShapeTooltip","lines","content","text","value","line","bw","bh","anchorX","anchorY"],"sources":["../../../../../charts/src/engine/shapes/layout.ts"],"sourcesContent":["// Layout of every shape chart type into a ShapeScene, plus what the hosts\n// share: animated values, legend entries, tooltip content, hover events and\n// accessible descriptions. Pure: no DOM, no canvas.\n\nimport { toCss } from \"../color\";\nimport { resolveLocale } from \"../locale\";\nimport { font } from \"../overlay\";\nimport type { ChartTheme } from \"../theme\";\nimport { bulletValues, layoutBullet } from \"./bullet\";\nimport {\n calendarLegend,\n calendarModel,\n calendarValues,\n layoutCalendar,\n} from \"./calendar\";\nimport { funnelOrder, funnelValues, layoutFunnel } from \"./funnel\";\nimport { gaugeValues, layoutGauge } from \"./gauge\";\nimport {\n interpolate,\n localeFormat,\n localePercent,\n SHAPE_LABELS,\n shapeLabels,\n} from \"./labels\";\nimport { layoutPie, pieValues } from \"./pie\";\nimport { layoutRadar, radarValues, seriesName } from \"./radar\";\nimport { layoutRadialBar, radialBarLabels, radialBarValues } from \"./radialBar\";\nimport { layoutSankey, resolveSankey, sankeyValues } from \"./sankey\";\nimport {\n clamp,\n inset,\n resolveWith,\n type LayoutContext,\n type LayoutResult,\n type MeasureText,\n type ShapeHover,\n type ShapeLegendEntry,\n type ShapeRect,\n type ShapeScene,\n type ShapeTooltipRow,\n} from \"./scene\";\nimport { layoutSunburst, sunburstValues } from \"./sunburst\";\nimport { layoutTreemap, treemapValues } from \"./treemap\";\nimport type {\n ShapeChartOptions,\n ShapeHoverEvent,\n ShapeLegendOptions,\n} from \"./types\";\n\nexport interface ShapeLayoutInput {\n options: ShapeChartOptions;\n theme: ChartTheme;\n /** Size of the whole drawing, CSS pixels */\n width: number;\n height: number;\n /** Area of the chart (legend excluded); the whole drawing by default */\n bounds?: ShapeRect;\n measure: MeasureText;\n /** Hidden slices / stages / series (treemap: top-level nodes) */\n hidden?: ReadonlySet<number>;\n /** Entry animation progress, eased (1 = done) */\n enter?: number;\n /** Values at the start of an update animation (`shapeValues`) */\n from?: ReadonlyMap<string, number> | null;\n /** Update animation progress, eased (1 = done) */\n t?: number;\n /** Sunburst: names from the root to the focused node */\n focus?: readonly string[];\n}\n\nconst NO_HIDDEN: ReadonlySet<number> = new Set();\nconst NO_FOCUS: readonly string[] = [];\n\n/** Lays a shape chart out */\nexport const layoutShapeScene = (input: ShapeLayoutInput): ShapeScene => {\n const { options: o, theme, width, height } = input;\n const bounds = input.bounds ?? { x: 0, y: 0, width, height };\n const from = input.from ?? null;\n const t = clamp(input.t ?? 1, 0, 1);\n const palette = theme.palette.length ? theme.palette : [theme.primary];\n const locale = resolveLocale(o.locale);\n const labels = shapeLabels(o);\n const c: LayoutContext = {\n theme,\n measure: input.measure,\n hidden: input.hidden ?? NO_HIDDEN,\n enter: clamp(input.enter ?? 1, 0, 1),\n value: (key, target) => {\n if (!from || t >= 1) return target;\n const start = from.get(key) ?? 0;\n return start + (target - start) * t;\n },\n format: o.format ?? localeFormat(locale),\n percent: o.percentFormat ?? localePercent(locale),\n labels,\n locale,\n color: (css, i) => resolveWith(theme, css, palette[i % palette.length]),\n area: inset(bounds, o.padding),\n focus: input.focus ?? NO_FOCUS,\n };\n let result: LayoutResult;\n switch (o.type) {\n case \"pie\":\n result = layoutPie(o, c);\n break;\n case \"radar\":\n result = layoutRadar(o, c);\n break;\n case \"gauge\":\n result = layoutGauge(o, c);\n break;\n case \"funnel\":\n result = layoutFunnel(o, c);\n break;\n case \"sankey\":\n result = layoutSankey(o, c);\n break;\n case \"sunburst\":\n result = layoutSunburst(o, c);\n break;\n case \"radialBar\":\n result = layoutRadialBar(o, c);\n break;\n case \"calendarHeatmap\":\n result = layoutCalendar(o, c);\n break;\n case \"bullet\":\n result = layoutBullet(o, c);\n break;\n default:\n result = layoutTreemap(o, c);\n break;\n }\n return { type: o.type, width, height, labels, locale, ...result };\n};\n\n/** Target values of the animated quantities, by key */\nexport const shapeValues = (\n o: ShapeChartOptions,\n hidden: ReadonlySet<number> = NO_HIDDEN,\n focus: readonly string[] = NO_FOCUS,\n): Map<string, number> => {\n const out = new Map<string, number>();\n switch (o.type) {\n case \"pie\":\n pieValues(o, hidden, out);\n break;\n case \"radar\":\n radarValues(o, hidden, out);\n break;\n case \"gauge\":\n gaugeValues(o, hidden, out);\n break;\n case \"funnel\":\n funnelValues(o, hidden, out);\n break;\n case \"sankey\":\n sankeyValues(o, hidden, out);\n break;\n case \"sunburst\":\n sunburstValues(o, hidden, focus, out);\n break;\n case \"radialBar\":\n radialBarValues(o, hidden, out);\n break;\n case \"calendarHeatmap\":\n calendarValues(o, hidden, out);\n break;\n case \"bullet\":\n bulletValues(o, hidden, out);\n break;\n default:\n treemapValues(o, hidden, out);\n break;\n }\n return out;\n};\n\n/** Values shown at progress `t` of an animation from `from` to `to` */\nexport const blendValues = (\n from: ReadonlyMap<string, number>,\n to: ReadonlyMap<string, number>,\n t: number,\n): Map<string, number> => {\n const out = new Map<string, number>();\n to.forEach((v, key) => {\n const start = from.get(key) ?? 0;\n out.set(key, start + (v - start) * t);\n });\n return out;\n};\n\nexport const sameValues = (\n a: ReadonlyMap<string, number>,\n b: ReadonlyMap<string, number>,\n) => {\n if (a.size !== b.size) return false;\n for (const [key, v] of a) {\n const w = b.get(key);\n if (w === undefined || Math.abs(w - v) > 1e-12) return false;\n }\n return true;\n};\n\n/** Legend position and toggling */\nexport const legendConfig = (\n o: ShapeChartOptions,\n): Required<ShapeLegendOptions> => {\n const config = typeof o.legend === \"object\" ? o.legend : {};\n return {\n position: config.position ?? \"bottom\",\n toggle: config.toggle ?? true,\n };\n};\n\n/** Legend entries, `null` when the legend is hidden */\nexport const shapeLegend = (\n o: ShapeChartOptions,\n theme: ChartTheme,\n hidden: ReadonlySet<number> = NO_HIDDEN,\n): ShapeLegendEntry[] | null => {\n if (o.legend === false) return null;\n const palette = theme.palette.length ? theme.palette : [theme.primary];\n const color = (css: string | undefined, i: number) =>\n toCss(resolveWith(theme, css, palette[i % palette.length]));\n let entries: ShapeLegendEntry[] = [];\n let shown = o.legend !== undefined;\n switch (o.type) {\n case \"pie\":\n shown = true;\n entries = o.data.map((d, i) => ({\n index: i,\n name: d.name,\n color: color(d.color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"funnel\":\n shown = true;\n entries = funnelOrder(o, NO_HIDDEN).map((i) => ({\n index: i,\n name: o.data[i].name,\n color: color(o.data[i].color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"radar\":\n shown ||= o.series.length > 1;\n entries = o.series.map((s, i) => ({\n index: i,\n name: seriesName(o, i, shapeLabels(o)),\n color: color(s.color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"treemap\":\n case \"sunburst\":\n entries = o.data.map((d, i) => ({\n index: i,\n name: d.name,\n color: color(d.color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"radialBar\":\n shown ||= !radialBarLabels(o);\n entries = o.data.map((d, i) => ({\n index: i,\n name: d.name,\n color: color(d.color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"bullet\":\n entries = o.data.map((d, i) => ({\n index: i,\n name: d.name,\n color: color(d.color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"sankey\": {\n const g = resolveSankey(o);\n entries = g.names.map((name, i) => ({\n index: i,\n name,\n color: color(g.colors[i], i),\n hidden: hidden.has(i),\n }));\n break;\n }\n case \"calendarHeatmap\":\n shown = true;\n entries = calendarLegend(o, theme, hidden);\n break;\n default:\n break;\n }\n return shown && entries.length ? entries : null;\n};\n\n/**\n * Number of toggleable entries (slices, stages, series, top-level nodes,\n * sankey nodes, bars, rows, calendar levels)\n */\nexport const toggleCount = (o: ShapeChartOptions): number => {\n switch (o.type) {\n case \"radar\":\n return o.series.length;\n case \"gauge\":\n return 0;\n case \"sankey\":\n return resolveSankey(o).names.length;\n case \"calendarHeatmap\":\n return calendarModel(o)?.count ?? 0;\n default:\n return o.data.length;\n }\n};\n\n/** Event of a hovered item */\nexport const hoverEvent = (\n scene: ShapeScene,\n hover: ShapeHover | null,\n): ShapeHoverEvent | null => {\n if (!hover) return null;\n const item = scene.items.find((it) => it.index === hover.index);\n if (!item) return null;\n if (item.indicators) {\n const k = clamp(hover.indicator ?? 0, 0, item.indicators.length - 1);\n const ind = item.indicators[k];\n return {\n index: item.index,\n indicator: k,\n name: item.name,\n value: ind.value,\n percent: ind.percent,\n color: item.color,\n };\n }\n return {\n index: item.index,\n name: item.name,\n value: item.value,\n percent: item.percent,\n color: item.color,\n ...(item.path ? { path: item.path } : {}),\n ...item.event,\n };\n};\n\nexport const sameHover = (a: ShapeHover | null, b: ShapeHover | null) =>\n a === b || (!!a && !!b && a.index === b.index && a.indicator === b.indicator);\n\nexport interface ShapeTooltipContent {\n title: string;\n color?: string;\n rows: ShapeTooltipRow[];\n}\n\n/** Default tooltip of a hovered item */\nexport const tooltipContent = (\n scene: ShapeScene,\n hover: ShapeHover,\n): ShapeTooltipContent | null => {\n const item = scene.items.find((it) => it.index === hover.index);\n if (!item) return null;\n const rows = item.indicators\n ? item.rows.map((row, k) =>\n k === (hover.indicator ?? -1) ? { ...row, strong: true } : row,\n )\n : item.rows;\n return {\n title: item.path ? item.path.join(\" / \") : item.name,\n color: item.color,\n rows,\n };\n};\n\n/** Text read by screen readers for a focused item */\nexport const describeItem = (scene: ShapeScene, hover: ShapeHover) => {\n const item = scene.items.find((it) => it.index === hover.index);\n if (!item) return \"\";\n if (item.indicators) {\n const k = clamp(hover.indicator ?? 0, 0, item.indicators.length - 1);\n return `${item.name}, ${item.indicators[k].name}: ${item.rows[k]?.value ?? item.indicators[k].value}`;\n }\n const name = item.path ? item.path.join(\" / \") : item.name;\n return `${name}: ${item.rows[0]?.value ?? item.value} (${item.share ?? localePercent(scene.locale)(item.percent)})`;\n};\n\n/** Default accessible name of a chart (in its `locale`) */\nexport const describeChart = (o: ShapeChartOptions) => {\n const l = shapeLabels(o);\n switch (o.type) {\n case \"pie\":\n return o.rose\n ? l.roseChart\n : (o.innerRadius ?? 0) > 0\n ? l.donutChart\n : l.pieChart;\n case \"radar\":\n return l.radarChart;\n case \"gauge\":\n return o.label\n ? interpolate(l.gaugeChartNamed, { label: o.label })\n : l.gaugeChart;\n case \"funnel\":\n return l.funnelChart;\n case \"sankey\":\n return l.sankeyChart;\n case \"sunburst\":\n return l.sunburstChart;\n case \"radialBar\":\n return l.radialBarChart;\n case \"calendarHeatmap\":\n return l.calendarHeatmap;\n case \"bullet\":\n return l.bulletChart;\n default:\n return l.treemapChart;\n }\n};\n\n/** Text summary of the data (screen readers) */\nexport const describeScene = (scene: ShapeScene) =>\n scene.empty\n ? (scene.labels ?? SHAPE_LABELS.en).noData\n : scene.items\n .slice(0, 12)\n .map((item) =>\n item.indicators\n ? `${item.name}: ${item.indicators\n .map(\n (ind, k) => `${ind.name} ${item.rows[k]?.value ?? ind.value}`,\n )\n .join(\", \")}`\n : describeItem(scene, { index: item.index }),\n )\n .join(\"; \");\n\n// ------------------------------------------------- canvas legend & tooltip\n\nexport interface ShapeLegendBox extends ShapeLegendEntry {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nconst LEGEND_ROW = 20;\n\n/** Centered legend rows drawn on a canvas; `height` includes the gap with the chart */\nexport const layoutShapeLegend = (\n entries: readonly ShapeLegendEntry[],\n width: number,\n position: \"top\" | \"bottom\",\n chartHeight: number,\n theme: ChartTheme,\n measure: MeasureText,\n): { boxes: ShapeLegendBox[]; height: number } => {\n const f = font(theme, 12);\n const gap = 14;\n const rows: ShapeLegendBox[][] = [[]];\n let x = 0;\n for (const e of entries) {\n const w = Math.min(width - 8, 16 + measure(e.name, f));\n let row = rows[rows.length - 1];\n if (row.length && x + gap + w > width - 8) {\n rows.push((row = []));\n x = 0;\n }\n if (row.length) x += gap;\n row.push({ ...e, x, y: 0, width: w, height: LEGEND_ROW });\n x += w;\n }\n const height = rows.length * LEGEND_ROW + 8;\n const top = position === \"top\" ? 2 : chartHeight - height + 6;\n const boxes: ShapeLegendBox[] = [];\n rows.forEach((row, r) => {\n const last = row[row.length - 1];\n const used = last ? last.x + last.width : 0;\n const offset = (width - used) / 2;\n for (const box of row) {\n boxes.push({ ...box, x: box.x + offset, y: top + r * LEGEND_ROW });\n }\n });\n return { boxes, height };\n};\n\nexport interface ShapeTooltipBox {\n x: number;\n y: number;\n width: number;\n height: number;\n padding: number;\n lineHeight: number;\n /** Default content */\n content?: ShapeTooltipContent;\n /** Custom text (`tooltip.render` returning a string) */\n text?: string[];\n}\n\n/** Margin between a tooltip and the edges of the drawing */\nconst TIP_MARGIN = 6;\n/** Distance between a tooltip and its anchor */\nconst TIP_GAP = 14;\n\nconst overlapArea = (a: ShapeRect, b: ShapeRect) =>\n Math.max(0, Math.min(a.x + a.width, b.x + b.width) - Math.max(a.x, b.x)) *\n Math.max(0, Math.min(a.y + a.height, b.y + b.height) - Math.max(a.y, b.y));\n\n/**\n * Top-left corner of a `w` x `h` tooltip anchored at `anchor`, inside a\n * `width` x `height` drawing. Beside the anchor (right, else left) by\n * default; radar tooltips go outward, off the hovered vertex and, when\n * possible, off the indicator labels.\n */\nexport const placeShapeTooltip = (\n scene: ShapeScene | null,\n hover: ShapeHover | null,\n anchor: { x: number; y: number },\n w: number,\n h: number,\n width: number,\n height: number,\n): { x: number; y: number } => {\n const m = TIP_MARGIN;\n const fit = (x: number, y: number) => ({\n x: Math.max(m, Math.min(x, width - w - m)),\n y: Math.max(m, Math.min(y, height - h - m)),\n });\n const { x: ax, y: ay } = anchor;\n const radar = scene?.radar;\n if (!radar || !scene || !hover) {\n let x = ax + 16;\n if (x + w > width - m) x = ax - 16 - w;\n return fit(x, ay - h / 2);\n }\n\n // points the tooltip must not cover: the anchor and the hovered vertex\n const avoid: [number, number][] = [[ax, ay]];\n const item = scene.items.find((it) => it.index === hover.index);\n const vertex =\n item?.indicators && hover.indicator !== undefined\n ? item.indicators[hover.indicator]\n : undefined;\n if (vertex) avoid.push([vertex.x, vertex.y]);\n const labels = radar.labels ?? [];\n // outward direction, from the center through the anchor\n let dx = ax - radar.cx;\n let dy = ay - radar.cy;\n const len = Math.hypot(dx, dy);\n if (len > 1) {\n dx /= len;\n dy /= len;\n } else {\n dx = 1;\n dy = 0;\n }\n const g = TIP_GAP;\n const candidates: [number, number][] = [\n [ax + g, ay - h / 2],\n [ax - g - w, ay - h / 2],\n [ax - w / 2, ay - g - h],\n [ax - w / 2, ay + g],\n [ax + g, ay - g - h],\n [ax + g, ay + g],\n [ax - g - w, ay - g - h],\n [ax - g - w, ay + g],\n ];\n let best = fit(candidates[0][0], candidates[0][1]);\n let bestScore = Infinity;\n for (const [cx0, cy0] of candidates) {\n const p = fit(cx0, cy0);\n const box = { x: p.x, y: p.y, width: w, height: h };\n let score = 0;\n for (const [px, py] of avoid) {\n const covers =\n px > box.x - 8 &&\n px < box.x + w + 8 &&\n py > box.y - 8 &&\n py < box.y + h + 8;\n if (covers) score += 1e6;\n }\n for (const label of labels) score += overlapArea(box, label) * 4;\n const ox = p.x + w / 2 - ax;\n const oy = p.y + h / 2 - ay;\n const dist = Math.hypot(ox, oy) || 1;\n score += dist * 0.5;\n // prefer going outward, and candidates that fit without being pushed in\n score -= ((ox * dx + oy * dy) / dist) * 40;\n score += Math.abs(p.x - cx0) + Math.abs(p.y - cy0);\n if (score < bestScore) {\n bestScore = score;\n best = p;\n }\n }\n return best;\n};\n\n/** Box of a tooltip drawn on a canvas, next to the anchor and inside the drawing */\nexport const layoutShapeTooltip = (\n value: ShapeTooltipContent | string,\n anchorX: number,\n anchorY: number,\n width: number,\n height: number,\n theme: ChartTheme,\n measure: MeasureText,\n scene: ShapeScene | null = null,\n hover: ShapeHover | null = null,\n): ShapeTooltipBox => {\n const padding = 9;\n const lineHeight = 18;\n let w = 0;\n let lines: number;\n let content: ShapeTooltipContent | undefined;\n let text: string[] | undefined;\n if (typeof value === \"string\") {\n text = value.split(\"\\n\");\n const f = font(theme, 12);\n for (const line of text) w = Math.max(w, measure(line, f));\n lines = text.length;\n } else {\n content = value;\n w = (value.color ? 14 : 0) + measure(value.title, font(theme, 12, 600));\n for (const row of value.rows) {\n w = Math.max(\n w,\n (row.color ? 14 : 0) +\n measure(row.name, font(theme, 12)) +\n 16 +\n measure(row.value, font(theme, 12, 600)),\n );\n }\n lines = 1 + value.rows.length;\n }\n const bw = Math.max(96, Math.ceil(w + padding * 2 + 4));\n const bh = lines * lineHeight + padding * 2;\n const { x, y } = placeShapeTooltip(\n scene,\n hover,\n { x: anchorX, y: anchorY },\n bw,\n bh,\n width,\n height,\n );\n return {\n x,\n y,\n width: bw,\n height: bh,\n padding,\n lineHeight,\n ...(content ? { content } : {}),\n ...(text ? { text } : {}),\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"layout.cjs","names":["clamp","resolveLocale","shapeLabels","localeFormat","localePercent","resolveWith","inset","layoutPie","layoutRadar","layoutGauge","layoutFunnel","layoutSankey","layoutSunburst","layoutRadialBar","layoutCalendar","layoutBullet","layoutChord","layoutTreemap","toCss","funnelOrder","seriesName","radialBarLabels","resolveSankey","calendarLegend","resolveChord","calendarModel","interpolate","SHAPE_LABELS","font","wrapText","require_color","require_locale","require_overlay","require_labels","require_scene","require_calendar","require_bullet","require_chord","require_funnel","require_gauge","require_pie","require_radar","require_radialBar","require_sankey","require_sunburst","require_treemap","NO_HIDDEN","NO_FOCUS","layoutShapeScene","o","input","bounds","from","t","palette","theme","locale","labels","c","target","start","key","css","i","result","shapeValues","out","hidden","focus","blendValues","to","v","sameValues","a","b","w","legendConfig","config","shapeLegend","color","entries","shown","d","s","g","m","toggleCount","hoverEvent","hover","item","scene","it","k","ind","sameHover","tooltipContent","rows","row","describeItem","describeChart","l","describeScene","LEGEND_ROW","layoutShapeLegend","f","x","e","width","measure","height","top","position","chartHeight","boxes","last","offset","box","r","TIP_MARGIN","TIP_GAP","overlapArea","placeShapeTooltip","fit","y","h","ax","ay","anchor","radar","avoid","vertex","dx","dy","len","candidates","best","bestScore","cx0","cy0","p","score","px","py","label","ox","oy","dist","layoutShapeTooltip","lines","content","text","titleLines","value","line","titleFont","dot","maxTitle","bw","bh","anchorX","anchorY"],"sources":["../../../../../charts/src/engine/shapes/layout.ts"],"sourcesContent":["// Layout of every shape chart type into a ShapeScene, plus what the hosts\n// share: animated values, legend entries, tooltip content, hover events and\n// accessible descriptions. Pure: no DOM, no canvas.\n\nimport { toCss } from \"../color\";\nimport { resolveLocale } from \"../locale\";\nimport { font } from \"../overlay\";\nimport type { ChartTheme } from \"../theme\";\nimport { bulletValues, layoutBullet } from \"./bullet\";\nimport {\n calendarLegend,\n calendarModel,\n calendarValues,\n layoutCalendar,\n} from \"./calendar\";\nimport { chordValues, layoutChord, resolveChord } from \"./chord\";\nimport { funnelOrder, funnelValues, layoutFunnel } from \"./funnel\";\nimport { gaugeValues, layoutGauge } from \"./gauge\";\nimport {\n interpolate,\n localeFormat,\n localePercent,\n SHAPE_LABELS,\n shapeLabels,\n} from \"./labels\";\nimport { layoutPie, pieValues } from \"./pie\";\nimport { layoutRadar, radarValues, seriesName } from \"./radar\";\nimport { layoutRadialBar, radialBarLabels, radialBarValues } from \"./radialBar\";\nimport { layoutSankey, resolveSankey, sankeyValues } from \"./sankey\";\nimport {\n clamp,\n inset,\n resolveWith,\n wrapText,\n type LayoutContext,\n type LayoutResult,\n type MeasureText,\n type ShapeHover,\n type ShapeLegendEntry,\n type ShapeRect,\n type ShapeScene,\n type ShapeTooltipRow,\n} from \"./scene\";\nimport { layoutSunburst, sunburstValues } from \"./sunburst\";\nimport { layoutTreemap, treemapValues } from \"./treemap\";\nimport type {\n ShapeChartOptions,\n ShapeHoverEvent,\n ShapeLegendOptions,\n} from \"./types\";\n\nexport interface ShapeLayoutInput {\n options: ShapeChartOptions;\n theme: ChartTheme;\n /** Size of the whole drawing, CSS pixels */\n width: number;\n height: number;\n /** Area of the chart (legend excluded); the whole drawing by default */\n bounds?: ShapeRect;\n measure: MeasureText;\n /** Hidden slices / stages / series (treemap: top-level nodes) */\n hidden?: ReadonlySet<number>;\n /** Entry animation progress, eased (1 = done) */\n enter?: number;\n /** Values at the start of an update animation (`shapeValues`) */\n from?: ReadonlyMap<string, number> | null;\n /** Update animation progress, eased (1 = done) */\n t?: number;\n /** Sunburst: names from the root to the focused node */\n focus?: readonly string[];\n}\n\nconst NO_HIDDEN: ReadonlySet<number> = new Set();\nconst NO_FOCUS: readonly string[] = [];\n\n/** Lays a shape chart out */\nexport const layoutShapeScene = (input: ShapeLayoutInput): ShapeScene => {\n const { options: o, theme, width, height } = input;\n const bounds = input.bounds ?? { x: 0, y: 0, width, height };\n const from = input.from ?? null;\n const t = clamp(input.t ?? 1, 0, 1);\n const palette = theme.palette.length ? theme.palette : [theme.primary];\n const locale = resolveLocale(o.locale);\n const labels = shapeLabels(o);\n const c: LayoutContext = {\n theme,\n measure: input.measure,\n hidden: input.hidden ?? NO_HIDDEN,\n enter: clamp(input.enter ?? 1, 0, 1),\n value: (key, target) => {\n if (!from || t >= 1) return target;\n const start = from.get(key) ?? 0;\n return start + (target - start) * t;\n },\n format: o.format ?? localeFormat(locale),\n percent: o.percentFormat ?? localePercent(locale),\n labels,\n locale,\n color: (css, i) => resolveWith(theme, css, palette[i % palette.length]),\n area: inset(bounds, o.padding),\n focus: input.focus ?? NO_FOCUS,\n };\n let result: LayoutResult;\n switch (o.type) {\n case \"pie\":\n result = layoutPie(o, c);\n break;\n case \"radar\":\n result = layoutRadar(o, c);\n break;\n case \"gauge\":\n result = layoutGauge(o, c);\n break;\n case \"funnel\":\n result = layoutFunnel(o, c);\n break;\n case \"sankey\":\n result = layoutSankey(o, c);\n break;\n case \"sunburst\":\n result = layoutSunburst(o, c);\n break;\n case \"radialBar\":\n result = layoutRadialBar(o, c);\n break;\n case \"calendarHeatmap\":\n result = layoutCalendar(o, c);\n break;\n case \"bullet\":\n result = layoutBullet(o, c);\n break;\n case \"chord\":\n result = layoutChord(o, c);\n break;\n default:\n result = layoutTreemap(o, c);\n break;\n }\n return { type: o.type, width, height, labels, locale, ...result };\n};\n\n/** Target values of the animated quantities, by key */\nexport const shapeValues = (\n o: ShapeChartOptions,\n hidden: ReadonlySet<number> = NO_HIDDEN,\n focus: readonly string[] = NO_FOCUS,\n): Map<string, number> => {\n const out = new Map<string, number>();\n switch (o.type) {\n case \"pie\":\n pieValues(o, hidden, out);\n break;\n case \"radar\":\n radarValues(o, hidden, out);\n break;\n case \"gauge\":\n gaugeValues(o, hidden, out);\n break;\n case \"funnel\":\n funnelValues(o, hidden, out);\n break;\n case \"sankey\":\n sankeyValues(o, hidden, out);\n break;\n case \"sunburst\":\n sunburstValues(o, hidden, focus, out);\n break;\n case \"radialBar\":\n radialBarValues(o, hidden, out);\n break;\n case \"calendarHeatmap\":\n calendarValues(o, hidden, out);\n break;\n case \"bullet\":\n bulletValues(o, hidden, out);\n break;\n case \"chord\":\n chordValues(o, hidden, out);\n break;\n default:\n treemapValues(o, hidden, out);\n break;\n }\n return out;\n};\n\n/** Values shown at progress `t` of an animation from `from` to `to` */\nexport const blendValues = (\n from: ReadonlyMap<string, number>,\n to: ReadonlyMap<string, number>,\n t: number,\n): Map<string, number> => {\n const out = new Map<string, number>();\n to.forEach((v, key) => {\n const start = from.get(key) ?? 0;\n out.set(key, start + (v - start) * t);\n });\n return out;\n};\n\nexport const sameValues = (\n a: ReadonlyMap<string, number>,\n b: ReadonlyMap<string, number>,\n) => {\n if (a.size !== b.size) return false;\n for (const [key, v] of a) {\n const w = b.get(key);\n if (w === undefined || Math.abs(w - v) > 1e-12) return false;\n }\n return true;\n};\n\n/** Legend position and toggling */\nexport const legendConfig = (\n o: ShapeChartOptions,\n): Required<ShapeLegendOptions> => {\n const config = typeof o.legend === \"object\" ? o.legend : {};\n return {\n position: config.position ?? \"bottom\",\n toggle: config.toggle ?? true,\n };\n};\n\n/** Legend entries, `null` when the legend is hidden */\nexport const shapeLegend = (\n o: ShapeChartOptions,\n theme: ChartTheme,\n hidden: ReadonlySet<number> = NO_HIDDEN,\n): ShapeLegendEntry[] | null => {\n if (o.legend === false) return null;\n const palette = theme.palette.length ? theme.palette : [theme.primary];\n const color = (css: string | undefined, i: number) =>\n toCss(resolveWith(theme, css, palette[i % palette.length]));\n let entries: ShapeLegendEntry[] = [];\n let shown = o.legend !== undefined;\n switch (o.type) {\n case \"pie\":\n shown = true;\n entries = o.data.map((d, i) => ({\n index: i,\n name: d.name,\n color: color(d.color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"funnel\":\n shown = true;\n entries = funnelOrder(o, NO_HIDDEN).map((i) => ({\n index: i,\n name: o.data[i].name,\n color: color(o.data[i].color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"radar\":\n shown ||= o.series.length > 1;\n entries = o.series.map((s, i) => ({\n index: i,\n name: seriesName(o, i, shapeLabels(o)),\n color: color(s.color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"treemap\":\n case \"sunburst\":\n entries = o.data.map((d, i) => ({\n index: i,\n name: d.name,\n color: color(d.color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"radialBar\":\n shown ||= !radialBarLabels(o);\n entries = o.data.map((d, i) => ({\n index: i,\n name: d.name,\n color: color(d.color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"bullet\":\n entries = o.data.map((d, i) => ({\n index: i,\n name: d.name,\n color: color(d.color, i),\n hidden: hidden.has(i),\n }));\n break;\n case \"sankey\": {\n const g = resolveSankey(o);\n entries = g.names.map((name, i) => ({\n index: i,\n name,\n color: color(g.colors[i], i),\n hidden: hidden.has(i),\n }));\n break;\n }\n case \"calendarHeatmap\":\n shown = true;\n entries = calendarLegend(o, theme, hidden);\n break;\n case \"chord\": {\n shown = true;\n const m = resolveChord(o);\n entries = m.names.map((name, i) => ({\n index: i,\n name,\n color: color(m.colors[i], i),\n hidden: hidden.has(i),\n }));\n break;\n }\n default:\n break;\n }\n return shown && entries.length ? entries : null;\n};\n\n/**\n * Number of toggleable entries (slices, stages, series, top-level nodes,\n * sankey nodes, bars, rows, calendar levels, chord groups)\n */\nexport const toggleCount = (o: ShapeChartOptions): number => {\n switch (o.type) {\n case \"radar\":\n return o.series.length;\n case \"gauge\":\n return 0;\n case \"sankey\":\n return resolveSankey(o).names.length;\n case \"calendarHeatmap\":\n return calendarModel(o)?.count ?? 0;\n case \"chord\":\n return resolveChord(o).names.length;\n default:\n return o.data.length;\n }\n};\n\n/** Event of a hovered item */\nexport const hoverEvent = (\n scene: ShapeScene,\n hover: ShapeHover | null,\n): ShapeHoverEvent | null => {\n if (!hover) return null;\n const item = scene.items.find((it) => it.index === hover.index);\n if (!item) return null;\n if (item.indicators) {\n const k = clamp(hover.indicator ?? 0, 0, item.indicators.length - 1);\n const ind = item.indicators[k];\n return {\n index: item.index,\n indicator: k,\n name: item.name,\n value: ind.value,\n percent: ind.percent,\n color: item.color,\n };\n }\n return {\n index: item.index,\n name: item.name,\n value: item.value,\n percent: item.percent,\n color: item.color,\n ...(item.path ? { path: item.path } : {}),\n ...item.event,\n };\n};\n\nexport const sameHover = (a: ShapeHover | null, b: ShapeHover | null) =>\n a === b || (!!a && !!b && a.index === b.index && a.indicator === b.indicator);\n\nexport interface ShapeTooltipContent {\n title: string;\n color?: string;\n rows: ShapeTooltipRow[];\n}\n\n/** Default tooltip of a hovered item */\nexport const tooltipContent = (\n scene: ShapeScene,\n hover: ShapeHover,\n): ShapeTooltipContent | null => {\n const item = scene.items.find((it) => it.index === hover.index);\n if (!item) return null;\n const rows = item.indicators\n ? item.rows.map((row, k) =>\n k === (hover.indicator ?? -1) ? { ...row, strong: true } : row,\n )\n : item.rows;\n return {\n title: item.path ? item.path.join(\" / \") : item.name,\n color: item.color,\n rows,\n };\n};\n\n/** Text read by screen readers for a focused item */\nexport const describeItem = (scene: ShapeScene, hover: ShapeHover) => {\n const item = scene.items.find((it) => it.index === hover.index);\n if (!item) return \"\";\n if (item.indicators) {\n const k = clamp(hover.indicator ?? 0, 0, item.indicators.length - 1);\n return `${item.name}, ${item.indicators[k].name}: ${item.rows[k]?.value ?? item.indicators[k].value}`;\n }\n const name = item.path ? item.path.join(\" / \") : item.name;\n return `${name}: ${item.rows[0]?.value ?? item.value} (${item.share ?? localePercent(scene.locale)(item.percent)})`;\n};\n\n/** Default accessible name of a chart (in its `locale`) */\nexport const describeChart = (o: ShapeChartOptions) => {\n const l = shapeLabels(o);\n switch (o.type) {\n case \"pie\":\n return o.rose\n ? l.roseChart\n : (o.innerRadius ?? 0) > 0\n ? l.donutChart\n : l.pieChart;\n case \"radar\":\n return l.radarChart;\n case \"gauge\":\n return o.label\n ? interpolate(l.gaugeChartNamed, { label: o.label })\n : l.gaugeChart;\n case \"funnel\":\n return l.funnelChart;\n case \"sankey\":\n return l.sankeyChart;\n case \"sunburst\":\n return l.sunburstChart;\n case \"radialBar\":\n return l.radialBarChart;\n case \"calendarHeatmap\":\n return l.calendarHeatmap;\n case \"bullet\":\n return l.bulletChart;\n case \"chord\":\n return l.chordChart;\n default:\n return l.treemapChart;\n }\n};\n\n/** Text summary of the data (screen readers) */\nexport const describeScene = (scene: ShapeScene) =>\n scene.empty\n ? (scene.labels ?? SHAPE_LABELS.en).noData\n : scene.items\n .slice(0, 12)\n .map((item) =>\n item.indicators\n ? `${item.name}: ${item.indicators\n .map(\n (ind, k) => `${ind.name} ${item.rows[k]?.value ?? ind.value}`,\n )\n .join(\", \")}`\n : describeItem(scene, { index: item.index }),\n )\n .join(\"; \");\n\n// ------------------------------------------------- canvas legend & tooltip\n\nexport interface ShapeLegendBox extends ShapeLegendEntry {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nconst LEGEND_ROW = 20;\n\n/** Centered legend rows drawn on a canvas; `height` includes the gap with the chart */\nexport const layoutShapeLegend = (\n entries: readonly ShapeLegendEntry[],\n width: number,\n position: \"top\" | \"bottom\",\n chartHeight: number,\n theme: ChartTheme,\n measure: MeasureText,\n): { boxes: ShapeLegendBox[]; height: number } => {\n const f = font(theme, 12);\n const gap = 14;\n const rows: ShapeLegendBox[][] = [[]];\n let x = 0;\n for (const e of entries) {\n const w = Math.min(width - 8, 16 + measure(e.name, f));\n let row = rows[rows.length - 1];\n if (row.length && x + gap + w > width - 8) {\n rows.push((row = []));\n x = 0;\n }\n if (row.length) x += gap;\n row.push({ ...e, x, y: 0, width: w, height: LEGEND_ROW });\n x += w;\n }\n const height = rows.length * LEGEND_ROW + 8;\n const top = position === \"top\" ? 2 : chartHeight - height + 6;\n const boxes: ShapeLegendBox[] = [];\n rows.forEach((row, r) => {\n const last = row[row.length - 1];\n const used = last ? last.x + last.width : 0;\n const offset = (width - used) / 2;\n for (const box of row) {\n boxes.push({ ...box, x: box.x + offset, y: top + r * LEGEND_ROW });\n }\n });\n return { boxes, height };\n};\n\nexport interface ShapeTooltipBox {\n x: number;\n y: number;\n width: number;\n height: number;\n padding: number;\n lineHeight: number;\n /** Default content */\n content?: ShapeTooltipContent;\n /** Lines of the content's title (long titles wrap) */\n titleLines?: string[];\n /** Custom text (`tooltip.render` returning a string) */\n text?: string[];\n}\n\n/** Margin between a tooltip and the edges of the drawing */\nconst TIP_MARGIN = 6;\n/** Distance between a tooltip and its anchor */\nconst TIP_GAP = 14;\n\nconst overlapArea = (a: ShapeRect, b: ShapeRect) =>\n Math.max(0, Math.min(a.x + a.width, b.x + b.width) - Math.max(a.x, b.x)) *\n Math.max(0, Math.min(a.y + a.height, b.y + b.height) - Math.max(a.y, b.y));\n\n/**\n * Top-left corner of a `w` x `h` tooltip anchored at `anchor`, inside a\n * `width` x `height` drawing. Beside the anchor (right, else left) by\n * default; radar tooltips go outward, off the hovered vertex and, when\n * possible, off the indicator labels.\n */\nexport const placeShapeTooltip = (\n scene: ShapeScene | null,\n hover: ShapeHover | null,\n anchor: { x: number; y: number },\n w: number,\n h: number,\n width: number,\n height: number,\n): { x: number; y: number } => {\n const m = TIP_MARGIN;\n const fit = (x: number, y: number) => ({\n x: Math.max(m, Math.min(x, width - w - m)),\n y: Math.max(m, Math.min(y, height - h - m)),\n });\n const { x: ax, y: ay } = anchor;\n const radar = scene?.radar;\n if (!radar || !scene || !hover) {\n let x = ax + 16;\n if (x + w > width - m) x = ax - 16 - w;\n return fit(x, ay - h / 2);\n }\n\n // points the tooltip must not cover: the anchor and the hovered vertex\n const avoid: [number, number][] = [[ax, ay]];\n const item = scene.items.find((it) => it.index === hover.index);\n const vertex =\n item?.indicators && hover.indicator !== undefined\n ? item.indicators[hover.indicator]\n : undefined;\n if (vertex) avoid.push([vertex.x, vertex.y]);\n const labels = radar.labels ?? [];\n // outward direction, from the center through the anchor\n let dx = ax - radar.cx;\n let dy = ay - radar.cy;\n const len = Math.hypot(dx, dy);\n if (len > 1) {\n dx /= len;\n dy /= len;\n } else {\n dx = 1;\n dy = 0;\n }\n const g = TIP_GAP;\n const candidates: [number, number][] = [\n [ax + g, ay - h / 2],\n [ax - g - w, ay - h / 2],\n [ax - w / 2, ay - g - h],\n [ax - w / 2, ay + g],\n [ax + g, ay - g - h],\n [ax + g, ay + g],\n [ax - g - w, ay - g - h],\n [ax - g - w, ay + g],\n ];\n let best = fit(candidates[0][0], candidates[0][1]);\n let bestScore = Infinity;\n for (const [cx0, cy0] of candidates) {\n const p = fit(cx0, cy0);\n const box = { x: p.x, y: p.y, width: w, height: h };\n let score = 0;\n for (const [px, py] of avoid) {\n const covers =\n px > box.x - 8 &&\n px < box.x + w + 8 &&\n py > box.y - 8 &&\n py < box.y + h + 8;\n if (covers) score += 1e6;\n }\n for (const label of labels) score += overlapArea(box, label) * 4;\n const ox = p.x + w / 2 - ax;\n const oy = p.y + h / 2 - ay;\n const dist = Math.hypot(ox, oy) || 1;\n score += dist * 0.5;\n // prefer going outward, and candidates that fit without being pushed in\n score -= ((ox * dx + oy * dy) / dist) * 40;\n score += Math.abs(p.x - cx0) + Math.abs(p.y - cy0);\n if (score < bestScore) {\n bestScore = score;\n best = p;\n }\n }\n return best;\n};\n\n/** Box of a tooltip drawn on a canvas, next to the anchor and inside the drawing */\nexport const layoutShapeTooltip = (\n value: ShapeTooltipContent | string,\n anchorX: number,\n anchorY: number,\n width: number,\n height: number,\n theme: ChartTheme,\n measure: MeasureText,\n scene: ShapeScene | null = null,\n hover: ShapeHover | null = null,\n): ShapeTooltipBox => {\n const padding = 9;\n const lineHeight = 18;\n let w = 0;\n let lines: number;\n let content: ShapeTooltipContent | undefined;\n let text: string[] | undefined;\n let titleLines: string[] | undefined;\n if (typeof value === \"string\") {\n text = value.split(\"\\n\");\n const f = font(theme, 12);\n for (const line of text) w = Math.max(w, measure(line, f));\n lines = text.length;\n } else {\n content = value;\n // long titles (full names of truncated labels) wrap to 3 lines\n const titleFont = font(theme, 12, 600);\n const dot = value.color ? 14 : 0;\n const maxTitle = Math.max(\n 60,\n Math.min(260, width - 16 - padding * 2) - dot,\n );\n titleLines = wrapText(value.title, maxTitle, titleFont, measure, 3);\n if (!titleLines.length) titleLines = [value.title];\n for (const line of titleLines)\n w = Math.max(w, dot + measure(line, titleFont));\n for (const row of value.rows) {\n w = Math.max(\n w,\n (row.color ? 14 : 0) +\n measure(row.name, font(theme, 12)) +\n 16 +\n measure(row.value, font(theme, 12, 600)),\n );\n }\n lines = titleLines.length + value.rows.length;\n }\n const bw = Math.max(96, Math.ceil(w + padding * 2 + 4));\n const bh = lines * lineHeight + padding * 2;\n const { x, y } = placeShapeTooltip(\n scene,\n hover,\n { x: anchorX, y: anchorY },\n bw,\n bh,\n width,\n height,\n );\n return {\n x,\n y,\n width: bw,\n height: bh,\n padding,\n lineHeight,\n ...(content ? { content, titleLines } : {}),\n ...(text ? { text } : {}),\n };\n};\n"],"mappings":"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"}
@@ -34,7 +34,7 @@ export declare const legendConfig: (o: ShapeChartOptions) => Required<ShapeLegen
34
34
  export declare const shapeLegend: (o: ShapeChartOptions, theme: ChartTheme, hidden?: ReadonlySet<number>) => ShapeLegendEntry[] | null;
35
35
  /**
36
36
  * Number of toggleable entries (slices, stages, series, top-level nodes,
37
- * sankey nodes, bars, rows, calendar levels)
37
+ * sankey nodes, bars, rows, calendar levels, chord groups)
38
38
  */
39
39
  export declare const toggleCount: (o: ShapeChartOptions) => number;
40
40
  /** Event of a hovered item */
@@ -73,6 +73,8 @@ export interface ShapeTooltipBox {
73
73
  lineHeight: number;
74
74
  /** Default content */
75
75
  content?: ShapeTooltipContent;
76
+ /** Lines of the content's title (long titles wrap) */
77
+ titleLines?: string[];
76
78
  /** Custom text (`tooltip.render` returning a string) */
77
79
  text?: string[];
78
80
  }
@@ -34,7 +34,7 @@ export declare const legendConfig: (o: ShapeChartOptions) => Required<ShapeLegen
34
34
  export declare const shapeLegend: (o: ShapeChartOptions, theme: ChartTheme, hidden?: ReadonlySet<number>) => ShapeLegendEntry[] | null;
35
35
  /**
36
36
  * Number of toggleable entries (slices, stages, series, top-level nodes,
37
- * sankey nodes, bars, rows, calendar levels)
37
+ * sankey nodes, bars, rows, calendar levels, chord groups)
38
38
  */
39
39
  export declare const toggleCount: (o: ShapeChartOptions) => number;
40
40
  /** Event of a hovered item */
@@ -73,6 +73,8 @@ export interface ShapeTooltipBox {
73
73
  lineHeight: number;
74
74
  /** Default content */
75
75
  content?: ShapeTooltipContent;
76
+ /** Lines of the content's title (long titles wrap) */
77
+ titleLines?: string[];
76
78
  /** Custom text (`tooltip.render` returning a string) */
77
79
  text?: string[];
78
80
  }