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,28 +1,28 @@
1
1
  import { mix as e, toCss as t } from "../color.js";
2
2
  import { linearTicks as n, niceDomain as r } from "../scale.js";
3
3
  import { font as i } from "../overlay.js";
4
- import { clamp as a, ellipsize as o, emptyLayout as s, finite as c, resolveWith as l, sum as u, uniqueKeys as d } from "./scene.js";
4
+ import { clamp as a, ellipsize as o, emptyLayout as s, finite as c, resolveWith as l, sum as u, uniqueKeys as d, wrapText as f } from "./scene.js";
5
5
  //#region src/engine/shapes/bullet.ts
6
- var f = (e) => d(e.data.map((e) => e.name)), p = (e) => typeof e == "number" && Number.isFinite(e) ? e : void 0, m = (e, t) => (t.ranges ?? e.ranges ?? []).filter((e) => typeof e == "number" && Number.isFinite(e)).slice().sort((e, t) => e - t), ee = (e, t) => {
7
- let n = m(e, t), i = c(t.value), a = p(t.target), o = [
6
+ var p = (e) => d(e.data.map((e) => e.name)), m = (e) => typeof e == "number" && Number.isFinite(e) ? e : void 0, ee = (e, t) => (t.ranges ?? e.ranges ?? []).filter((e) => typeof e == "number" && Number.isFinite(e)).slice().sort((e, t) => e - t), h = (e, t) => {
7
+ let n = ee(e, t), i = c(t.value), a = m(t.target), o = [
8
8
  0,
9
9
  i,
10
10
  ...a === void 0 ? [] : [a]
11
- ], s = p(t.min) ?? Math.min(...o), l = [
11
+ ], s = m(t.min) ?? Math.min(...o), l = [
12
12
  i,
13
13
  ...a === void 0 ? [] : [a],
14
14
  ...n
15
- ], u = p(t.max);
15
+ ], u = m(t.max);
16
16
  if (u === void 0) {
17
17
  let e = Math.max(...l), t = n.length ? n[n.length - 1] : -Infinity;
18
18
  u = e <= t ? t : r(s, e, 5)[1];
19
19
  }
20
20
  return u > s || (u === s ? u = s + 1 : [s, u] = [u, s]), [s, u];
21
- }, h = (e, t, n) => {
22
- f(e).forEach((r, i) => {
21
+ }, g = (e, t, n) => {
22
+ p(e).forEach((r, i) => {
23
23
  let a = e.data[i];
24
24
  n.set(r, c(a.value));
25
- let o = p(a.target);
25
+ let o = m(a.target);
26
26
  o !== void 0 && n.set(`>${r}`, o), n.set(`~${r}`, +!t.has(i));
27
27
  });
28
28
  }, te = (t, n, r) => {
@@ -31,16 +31,16 @@ var f = (e) => d(e.data.map((e) => e.name)), p = (e) => typeof e == "number" &&
31
31
  let o = e(i.background, i.text, r <= 1 ? .09 : .24 - .16 * a / (r - 1)), s = t.rangeColors?.[a];
32
32
  return s ? l(i, s, o) : o;
33
33
  });
34
- }, g = (e, r) => {
35
- let { theme: d, area: h, measure: g, hidden: _ } = r, v = f(e), y = e.data.length, b = v.map((e, t) => a(r.value(`~${e}`, +!_.has(t)), 0, 1)), x = u(b);
36
- if (!y || x <= 1e-6) return s(r);
37
- let S = e.orientation === "vertical", C = a(r.enter, 0, 1), ne = a(c(e.barSize, .4), .1, 1), w = i(d, 12, 600), T = i(d, 11), E = i(d, 12, 600), D = i(d, 10), O = t(d.textMuted), k = t(d.text), re = t(l(d, e.targetColor, d.text)), ie = e.ticks !== !1, A = [], j = [], M = e.data.some((e, t) => !!e.subtitle && b[t] > 0), N = e.data.map((e) => r.format(c(e.value))), P = S ? 0 : Math.min(h.width * .32, Math.max(0, ...e.data.map((e) => Math.max(g(e.name, w), e.subtitle ? g(e.subtitle, T) : 0))) + 14), F = S ? 0 : Math.min(h.width * .2, Math.max(0, ...N.map((e) => g(e, E))) + 12), I = S ? 22 + (M ? 14 : 0) : 0, ae = S ? 20 : 0, oe = (S ? h.width : h.height) / x, se = 0;
34
+ }, _ = 15, v = (e, r) => {
35
+ let { theme: d, area: g, measure: v, hidden: ne } = r, y = p(e), b = e.data.length, x = y.map((e, t) => a(r.value(`~${e}`, +!ne.has(t)), 0, 1)), S = u(x);
36
+ if (!b || S <= 1e-6) return s(r);
37
+ let C = e.orientation === "vertical", w = a(r.enter, 0, 1), re = a(c(e.barSize, .4), .1, 1), T = i(d, 12, 600), E = i(d, 11), D = i(d, 12, 600), O = i(d, 10), k = t(d.textMuted), A = t(d.text), ie = t(l(d, e.targetColor, d.text)), ae = e.ticks !== !1, j = [], oe = [], M = e.data.some((e, t) => !!e.subtitle && x[t] > 0), N = e.data.map((e) => r.format(c(e.value))), P = e.data.map((e) => v(e.name, T)), F = g.width * (g.width < 420 ? .34 : .4), se = e.data.map((e, t) => P[t] <= F - 14 ? P[t] : Math.max(0, ...f(e.name, F - 14, T, v, 2).map((e) => v(e, T)))), I = C ? 0 : Math.min(F, Math.max(0, ...e.data.map((e, t) => Math.max(se[t], e.subtitle ? v(e.subtitle, E) : 0))) + 14), ce = C ? 0 : Math.min(g.width * .2, Math.max(0, ...N.map((e) => v(e, D))) + 12), L = g.width / S, R = C && e.data.some((e, t) => x[t] > 0 && P[t] > L - 8), z = C ? 22 + (R ? _ : 0) + (M ? 14 : 0) : 0, B = C ? 20 : 0, le = (C ? g.width : g.height) / S, V = 0;
38
38
  return e.data.forEach((i, s) => {
39
- let l = b[s], u = oe * l, d = se;
40
- if (se += u, l <= .001) return;
41
- let f = v[s], y = l, [x, M] = ee(e, i), L = m(e, i).filter((e) => e > x), R = te(e, r, L.length), ce = r.value(f, c(i.value)), z = p(i.target), B = z === void 0 ? void 0 : r.value(`>${f}`, z), le = r.color(i.color, s), V = t(le), H = a(u * (S ? .3 : .42), 8, 28), U = S ? Math.max(1, h.height - I - ae) : Math.max(1, h.width - P - F), W = ie ? n(x, M, Math.max(2, Math.floor(U / 70))) : [], G = S ? u / 2 - H / 2 - 6 : u - H - 10, ue = Math.max(0, ...W.map((e) => g(r.format(e), D))), K = W.length > 1 && (S ? G >= ue : G >= 14), de = S ? h.y + h.height - I : h.x + P, q = (e) => de + (S ? -1 : 1) * U * a((e - x) / (M - x), 0, 1), J = S ? h.x + d + u / 2 : h.y + d + (u - (K ? 14 : 0)) / 2, Y = (e, t, n) => {
39
+ let l = x[s], u = le * l, d = V;
40
+ if (V += u, l <= .001) return;
41
+ let p = y[s], b = l, [S, M] = h(e, i), P = ee(e, i).filter((e) => e > S), F = te(e, r, P.length), se = r.value(p, c(i.value)), L = m(i.target), H = L === void 0 ? void 0 : r.value(`>${p}`, L), ue = r.color(i.color, s), U = t(ue), W = a(u * (C ? .3 : .42), 8, 28), G = C ? Math.max(1, g.height - z - B) : Math.max(1, g.width - I - ce), K = ae ? n(S, M, Math.max(2, Math.floor(G / 70))) : [], de = C ? u / 2 - W / 2 - 6 : u - W - 10, fe = Math.max(0, ...K.map((e) => v(r.format(e), O))), pe = K.length > 1 && (C ? de >= fe : de >= 14), me = C ? g.y + g.height - z : g.x + I, q = (e) => me + (C ? -1 : 1) * G * a((e - S) / (M - S), 0, 1), J = C ? g.x + d + u / 2 : g.y + d + (u - (pe ? 14 : 0)) / 2, Y = (e, t, n) => {
42
42
  let r = Math.min(q(e), q(t)), i = Math.max(q(e), q(t));
43
- return S ? {
43
+ return C ? {
44
44
  x: J - n / 2,
45
45
  y: r,
46
46
  width: n,
@@ -52,57 +52,57 @@ var f = (e) => d(e.data.map((e) => e.name)), p = (e) => typeof e == "number" &&
52
52
  height: n
53
53
  };
54
54
  };
55
- A.push({
55
+ j.push({
56
56
  kind: "rect",
57
- ...S ? {
58
- x: h.x + d,
59
- y: h.y,
57
+ ...C ? {
58
+ x: g.x + d,
59
+ y: g.y,
60
60
  width: u,
61
- height: h.height
61
+ height: g.height
62
62
  } : {
63
- x: h.x,
64
- y: h.y + d,
65
- width: h.width,
63
+ x: g.x,
64
+ y: g.y + d,
65
+ width: g.width,
66
66
  height: u
67
67
  },
68
68
  radius: 0,
69
69
  fill: "rgba(0, 0, 0, 0)",
70
70
  hit: s,
71
- alpha: y
71
+ alpha: b
72
72
  });
73
- let fe = L.length ? L : [M], X = x;
74
- fe.forEach((e, n) => {
73
+ let he = P.length ? P : [M], X = S;
74
+ he.forEach((e, n) => {
75
75
  let r = Math.min(e, M);
76
- r > X && A.push({
76
+ r > X && j.push({
77
77
  kind: "rect",
78
- ...Y(X, r, H),
78
+ ...Y(X, r, W),
79
79
  radius: 0,
80
- fill: t(R[n]),
80
+ fill: t(F[n]),
81
81
  hit: s,
82
- alpha: y
82
+ alpha: b
83
83
  }), X = Math.max(X, r);
84
- }), X < M && A.push({
84
+ }), X < M && j.push({
85
85
  kind: "rect",
86
- ...Y(X, M, H),
86
+ ...Y(X, M, W),
87
87
  radius: 0,
88
- fill: t(R[R.length - 1]),
88
+ fill: t(F[F.length - 1]),
89
89
  hit: s,
90
- alpha: y
90
+ alpha: b
91
91
  });
92
- let Z = a(0, x, M), pe = Z + (ce - Z) * C;
93
- if (A.push({
92
+ let Z = a(0, S, M), ge = Z + (se - Z) * w;
93
+ if (j.push({
94
94
  kind: "rect",
95
- ...Y(Z, pe, H * ne),
95
+ ...Y(Z, ge, W * re),
96
96
  radius: 1,
97
- fill: V,
97
+ fill: U,
98
98
  hit: s,
99
- alpha: y,
99
+ alpha: b,
100
100
  brighten: !0
101
- }), B !== void 0 && B >= x && B <= M) {
102
- let e = q(B), t = H * .82;
103
- A.push({
101
+ }), H !== void 0 && H >= S && H <= M) {
102
+ let e = q(H), t = W * .82;
103
+ j.push({
104
104
  kind: "rect",
105
- ...S ? {
105
+ ...C ? {
106
106
  x: J - t / 2,
107
107
  y: e - 1.5,
108
108
  width: t,
@@ -114,142 +114,142 @@ var f = (e) => d(e.data.map((e) => e.name)), p = (e) => typeof e == "number" &&
114
114
  height: t
115
115
  },
116
116
  radius: 1,
117
- fill: re,
117
+ fill: ie,
118
118
  hit: s,
119
- alpha: y * C
119
+ alpha: b * w
120
120
  });
121
121
  }
122
- if (K) for (let e of W) {
122
+ if (pe) for (let e of K) {
123
123
  let t = q(e);
124
- A.push({
124
+ j.push({
125
125
  kind: "text",
126
- x: S ? J - H / 2 - 5 : t,
127
- y: S ? t : J + H / 2 + 4,
126
+ x: C ? J - W / 2 - 5 : t,
127
+ y: C ? t : J + W / 2 + 4,
128
128
  text: r.format(e),
129
- font: D,
130
- color: O,
131
- align: S ? "right" : "center",
132
- baseline: S ? "middle" : "top",
129
+ font: O,
130
+ color: k,
131
+ align: C ? "right" : "center",
132
+ baseline: C ? "middle" : "top",
133
133
  hit: s,
134
- alpha: y
134
+ alpha: b
135
135
  });
136
136
  }
137
- if (S) {
138
- let e = Math.max(0, u - 8), t = o(i.name, e, w, g), n = h.y + h.height;
139
- t && A.push({
137
+ if (C) {
138
+ let e = Math.max(0, u - 8), t = f(i.name, e, T, v, R ? 2 : 1), n = g.y + g.height;
139
+ t.forEach((e, t) => j.push({
140
140
  kind: "text",
141
141
  x: J,
142
- y: n - I + 16,
143
- text: t,
144
- font: w,
145
- color: k,
142
+ y: n - z + 16 + t * _,
143
+ text: e,
144
+ font: T,
145
+ color: A,
146
146
  align: "center",
147
147
  baseline: "middle",
148
148
  hit: s,
149
- alpha: y
150
- });
151
- let r = i.subtitle ? o(i.subtitle, e, T, g) : "";
152
- r && A.push({
149
+ alpha: b
150
+ }));
151
+ let r = i.subtitle ? o(i.subtitle, e, E, v) : "";
152
+ r && j.push({
153
153
  kind: "text",
154
154
  x: J,
155
- y: n - I + 31,
155
+ y: n - z + 31 + (R ? _ : 0),
156
156
  text: r,
157
- font: T,
158
- color: O,
157
+ font: E,
158
+ color: k,
159
159
  align: "center",
160
160
  baseline: "middle",
161
161
  hit: s,
162
- alpha: y
162
+ alpha: b
163
163
  });
164
- let a = o(N[s], e, E, g);
165
- a && A.push({
164
+ let a = o(N[s], e, D, v);
165
+ a && j.push({
166
166
  kind: "text",
167
167
  x: J,
168
- y: h.y + ae / 2,
168
+ y: g.y + B / 2,
169
169
  text: a,
170
- font: E,
171
- color: k,
170
+ font: D,
171
+ color: A,
172
172
  align: "center",
173
173
  baseline: "middle",
174
174
  hit: s,
175
- alpha: y
175
+ alpha: b
176
176
  });
177
177
  } else {
178
- let e = Math.max(0, P - 14), t = o(i.name, e, w, g), n = i.subtitle && u >= 34 ? o(i.subtitle, e, T, g) : "", r = h.x + P - 14;
179
- t && A.push({
178
+ let e = Math.max(0, I - 14), t = u - 4, n = i.subtitle && t >= 29 ? o(i.subtitle, e, E, v) : "", r = n ? 13 : 0, a = f(i.name, e, T, v, t >= 30 + r ? 2 : 1), c = J - (a.length * _ + r) / 2, l = g.x + I - 14;
179
+ a.forEach((e, t) => j.push({
180
180
  kind: "text",
181
- x: r,
182
- y: n ? J - 7 : J,
183
- text: t,
184
- font: w,
185
- color: k,
181
+ x: l,
182
+ y: c + _ / 2 + t * _,
183
+ text: e,
184
+ font: T,
185
+ color: A,
186
186
  align: "right",
187
187
  baseline: "middle",
188
188
  hit: s,
189
- alpha: y
190
- }), n && A.push({
189
+ alpha: b
190
+ })), n && j.push({
191
191
  kind: "text",
192
- x: r,
193
- y: J + 8,
192
+ x: l,
193
+ y: c + a.length * _ + r / 2,
194
194
  text: n,
195
- font: T,
196
- color: O,
195
+ font: E,
196
+ color: k,
197
197
  align: "right",
198
198
  baseline: "middle",
199
199
  hit: s,
200
- alpha: y
200
+ alpha: b
201
201
  });
202
- let a = o(N[s], F - 8, E, g);
203
- a && A.push({
202
+ let d = o(N[s], ce - 8, D, v);
203
+ d && j.push({
204
204
  kind: "text",
205
- x: h.x + h.width,
205
+ x: g.x + g.width,
206
206
  y: J,
207
- text: a,
208
- font: E,
209
- color: k,
207
+ text: d,
208
+ font: D,
209
+ color: A,
210
210
  align: "right",
211
211
  baseline: "middle",
212
212
  hit: s,
213
- alpha: y
213
+ alpha: b
214
214
  });
215
215
  }
216
- if (_.has(s)) return;
217
- let Q = c(i.value), $ = z !== void 0 && z !== 0 ? Q / z : (Q - x) / (M - x), me = L.findIndex((e) => Q <= e), he = me >= 0 ? e.rangeLabels?.[me] : void 0, ge = q(Q);
218
- j.push({
216
+ if (ne.has(s)) return;
217
+ let Q = c(i.value), $ = L !== void 0 && L !== 0 ? Q / L : (Q - S) / (M - S), _e = P.findIndex((e) => Q <= e), ve = _e >= 0 ? e.rangeLabels?.[_e] : void 0, ye = q(Q);
218
+ oe.push({
219
219
  index: s,
220
220
  name: i.name,
221
221
  value: Q,
222
222
  percent: $,
223
223
  share: r.percent($),
224
- color: V,
225
- x: S ? J : ge,
226
- y: S ? ge : J,
224
+ color: U,
225
+ x: C ? J : ye,
226
+ y: C ? ye : J,
227
227
  rows: [
228
228
  {
229
229
  name: r.labels.value,
230
230
  value: r.format(Q)
231
231
  },
232
- ...z === void 0 ? [] : [{
232
+ ...L === void 0 ? [] : [{
233
233
  name: r.labels.target,
234
- value: r.format(z)
234
+ value: r.format(L)
235
235
  }, {
236
236
  name: r.labels.ofTarget,
237
237
  value: r.percent($)
238
238
  }],
239
- ...he ? [{
239
+ ...ve ? [{
240
240
  name: r.labels.range,
241
- value: he
241
+ value: ve
242
242
  }] : []
243
243
  ]
244
244
  });
245
245
  }), {
246
- nodes: A,
247
- items: j,
246
+ nodes: j,
247
+ items: oe,
248
248
  dim: .4,
249
249
  empty: !1
250
250
  };
251
251
  };
252
252
  //#endregion
253
- export { ee as bulletScale, h as bulletValues, g as layoutBullet };
253
+ export { h as bulletScale, g as bulletValues, v as layoutBullet };
254
254
 
255
255
  //# sourceMappingURL=bullet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bullet.js","names":["keysOf","uniqueKeys","o","d","num","v","rangesOf","r","a","b","bulletScale","ranges","value","finite","target","lows","min","highs","max","top","last","niceDomain","bulletValues","key","out","rangeFills","c","count","gray","mix","theme","k","own","resolveWith","layoutBullet","keys","n","weights","clamp","i","total","sum","emptyLayout","vertical","enter","barSize","nameFont","font","subFont","valueFont","tickFont","muted","toCss","text","markColor","showTicks","nodes","items","hasSubtitle","valueText","labelW","area","measure","valueW","t","labelH","valueH","unit","offset","w","slot","from","alpha","fills","target0","color","css","thick","span","ticks","linearTicks","tickRoom","tickW","drawTicks","p0","along","mid","band","lo","hi","bounds","edge","to","bound","base","shownValue","at","len","room","name","ellipsize","bottom","sub","x","hidden","percent","rangeIndex","rangeName","end"],"sources":["../../../../../charts/src/engine/shapes/bullet.ts"],"sourcesContent":["// Bullet chart layout (Stephen Few): per row, qualitative ranges as shades\n// of gray, the measure as a bar and the target as a marker, on the row's own\n// scale; name and subtitle on the left (below when vertical), value on the\n// right (above when vertical), tick labels when there is room.\n\nimport { mix, toCss, type Rgba } from \"../color\";\nimport { font } from \"../overlay\";\nimport { linearTicks, niceDomain } from \"../scale\";\nimport {\n clamp,\n ellipsize,\n emptyLayout,\n finite,\n resolveWith,\n sum,\n uniqueKeys,\n type LayoutContext,\n type LayoutResult,\n type ShapeItem,\n type ShapeNode,\n} from \"./scene\";\nimport type { BulletChartOptions, BulletDatum } from \"./types\";\n\nconst keysOf = (o: BulletChartOptions) => uniqueKeys(o.data.map((d) => d.name));\n\nconst num = (v: number | undefined) =>\n typeof v === \"number\" && Number.isFinite(v) ? v : undefined;\n\n/** Qualitative ranges of a row: finite upper bounds, ascending */\nconst rangesOf = (o: BulletChartOptions, d: BulletDatum) =>\n (d.ranges ?? o.ranges ?? [])\n .filter((r) => typeof r === \"number\" && Number.isFinite(r))\n .slice()\n .sort((a, b) => a - b);\n\n/** Scale of a row: `[min, max]` */\nexport const bulletScale = (\n o: BulletChartOptions,\n d: BulletDatum,\n): [number, number] => {\n const ranges = rangesOf(o, d);\n const value = finite(d.value);\n const target = num(d.target);\n const lows = [0, value, ...(target !== undefined ? [target] : [])];\n let min = num(d.min) ?? Math.min(...lows);\n const highs = [value, ...(target !== undefined ? [target] : []), ...ranges];\n let max = num(d.max);\n if (max === undefined) {\n const top = Math.max(...highs);\n const last = ranges.length ? ranges[ranges.length - 1] : -Infinity;\n max = top <= last ? last : niceDomain(min, top, 5)[1];\n }\n if (!(max > min)) {\n if (max === min) max = min + 1;\n else [min, max] = [max, min];\n }\n return [min, max];\n};\n\nexport const bulletValues = (\n o: BulletChartOptions,\n hidden: ReadonlySet<number>,\n out: Map<string, number>,\n) => {\n keysOf(o).forEach((key, i) => {\n const d = o.data[i];\n out.set(key, finite(d.value));\n const target = num(d.target);\n if (target !== undefined) out.set(`>${key}`, target);\n out.set(`~${key}`, hidden.has(i) ? 0 : 1);\n });\n};\n\n/** Default fills of the ranges: grays, the lowest (poorest) darkest */\nconst rangeFills = (\n o: BulletChartOptions,\n c: LayoutContext,\n count: number,\n): Rgba[] => {\n const { theme } = c;\n return Array.from({ length: Math.max(1, count) }, (_, k) => {\n const gray = mix(\n theme.background,\n theme.text,\n count <= 1 ? 0.09 : 0.24 - (0.16 * k) / (count - 1),\n );\n const own = o.rangeColors?.[k];\n return own ? resolveWith(theme, own, gray) : gray;\n });\n};\n\nexport const layoutBullet = (\n o: BulletChartOptions,\n c: LayoutContext,\n): LayoutResult => {\n const { theme, area, measure, hidden } = c;\n const keys = keysOf(o);\n const n = o.data.length;\n const weights = keys.map((key, i) =>\n clamp(c.value(`~${key}`, hidden.has(i) ? 0 : 1), 0, 1),\n );\n const total = sum(weights);\n if (!n || total <= 1e-6) return emptyLayout(c);\n const vertical = o.orientation === \"vertical\";\n const enter = clamp(c.enter, 0, 1);\n const barSize = clamp(finite(o.barSize, 0.4), 0.1, 1);\n const nameFont = font(theme, 12, 600);\n const subFont = font(theme, 11);\n const valueFont = font(theme, 12, 600);\n const tickFont = font(theme, 10);\n const muted = toCss(theme.textMuted);\n const text = toCss(theme.text);\n const transparent = \"rgba(0, 0, 0, 0)\";\n const markColor = toCss(resolveWith(theme, o.targetColor, theme.text));\n const showTicks = o.ticks !== false;\n\n const nodes: ShapeNode[] = [];\n const items: ShapeItem[] = [];\n const hasSubtitle = o.data.some((d, i) => !!d.subtitle && weights[i] > 0);\n const valueText = o.data.map((d) => c.format(finite(d.value)));\n\n // shared columns (horizontal) / bands (vertical) of the labels and values\n const labelW = vertical\n ? 0\n : Math.min(\n area.width * 0.32,\n Math.max(\n 0,\n ...o.data.map((d) =>\n Math.max(\n measure(d.name, nameFont),\n d.subtitle ? measure(d.subtitle, subFont) : 0,\n ),\n ),\n ) + 14,\n );\n const valueW = vertical\n ? 0\n : Math.min(\n area.width * 0.2,\n Math.max(0, ...valueText.map((t) => measure(t, valueFont))) + 12,\n );\n const labelH = vertical ? 22 + (hasSubtitle ? 14 : 0) : 0;\n const valueH = vertical ? 20 : 0;\n const unit = (vertical ? area.width : area.height) / total;\n\n let offset = 0;\n o.data.forEach((d, i) => {\n const w = weights[i];\n const slot = unit * w;\n const from = offset;\n offset += slot;\n if (w <= 1e-3) return;\n const key = keys[i];\n const alpha = w;\n const [min, max] = bulletScale(o, d);\n const ranges = rangesOf(o, d).filter((r) => r > min);\n const fills = rangeFills(o, c, ranges.length);\n const value = c.value(key, finite(d.value));\n const target0 = num(d.target);\n const target =\n target0 !== undefined ? c.value(`>${key}`, target0) : undefined;\n const color = c.color(d.color, i);\n const css = toCss(color);\n const thick = clamp(slot * (vertical ? 0.3 : 0.42), 8, 28);\n const span = vertical\n ? Math.max(1, area.height - labelH - valueH)\n : Math.max(1, area.width - labelW - valueW);\n const ticks = showTicks\n ? linearTicks(min, max, Math.max(2, Math.floor(span / 70)))\n : [];\n const tickRoom = vertical ? slot / 2 - thick / 2 - 6 : slot - thick - 10;\n const tickW = Math.max(\n 0,\n ...ticks.map((t) => measure(c.format(t), tickFont)),\n );\n const drawTicks =\n ticks.length > 1 && (vertical ? tickRoom >= tickW : tickRoom >= 14);\n\n // position along the scale, and across it\n const p0 = vertical ? area.y + area.height - labelH : area.x + labelW;\n const along = (v: number) =>\n p0 + (vertical ? -1 : 1) * span * clamp((v - min) / (max - min), 0, 1);\n const mid = vertical\n ? area.x + from + slot / 2\n : area.y + from + (slot - (drawTicks ? 14 : 0)) / 2;\n /** Rectangle from `a` to `b` along the scale, `t` thick across it */\n const band = (a: number, b: number, t: number) => {\n const lo = Math.min(along(a), along(b));\n const hi = Math.max(along(a), along(b));\n return vertical\n ? { x: mid - t / 2, y: lo, width: t, height: hi - lo }\n : { x: lo, y: mid - t / 2, width: hi - lo, height: t };\n };\n\n // the whole row / column is a hover target\n nodes.push({\n kind: \"rect\",\n ...(vertical\n ? { x: area.x + from, y: area.y, width: slot, height: area.height }\n : { x: area.x, y: area.y + from, width: area.width, height: slot }),\n radius: 0,\n fill: transparent,\n hit: i,\n alpha,\n });\n // ranges: disjoint segments (translucent colors must not add up)\n const bounds = ranges.length ? ranges : [max];\n let edge = min;\n bounds.forEach((bound, k) => {\n const to = Math.min(bound, max);\n if (to > edge)\n nodes.push({\n kind: \"rect\",\n ...band(edge, to, thick),\n radius: 0,\n fill: toCss(fills[k]),\n hit: i,\n alpha,\n });\n edge = Math.max(edge, to);\n });\n if (edge < max)\n nodes.push({\n kind: \"rect\",\n ...band(edge, max, thick),\n radius: 0,\n fill: toCss(fills[fills.length - 1]),\n hit: i,\n alpha,\n });\n // measure\n const base = clamp(0, min, max);\n const shownValue = base + (value - base) * enter;\n nodes.push({\n kind: \"rect\",\n ...band(base, shownValue, thick * barSize),\n radius: 1,\n fill: css,\n hit: i,\n alpha,\n brighten: true,\n });\n // target\n if (target !== undefined && target >= min && target <= max) {\n const at = along(target);\n const len = thick * 0.82;\n nodes.push({\n kind: \"rect\",\n ...(vertical\n ? { x: mid - len / 2, y: at - 1.5, width: len, height: 3 }\n : { x: at - 1.5, y: mid - len / 2, width: 3, height: len }),\n radius: 1,\n fill: markColor,\n hit: i,\n alpha: alpha * enter,\n });\n }\n // ticks\n if (drawTicks)\n for (const t of ticks) {\n const at = along(t);\n nodes.push({\n kind: \"text\",\n x: vertical ? mid - thick / 2 - 5 : at,\n y: vertical ? at : mid + thick / 2 + 4,\n text: c.format(t),\n font: tickFont,\n color: muted,\n align: vertical ? \"right\" : \"center\",\n baseline: vertical ? \"middle\" : \"top\",\n hit: i,\n alpha,\n });\n }\n\n // name, subtitle and value\n if (vertical) {\n const room = Math.max(0, slot - 8);\n const name = ellipsize(d.name, room, nameFont, measure);\n const bottom = area.y + area.height;\n if (name)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: bottom - labelH + 16,\n text: name,\n font: nameFont,\n color: text,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const sub = d.subtitle\n ? ellipsize(d.subtitle, room, subFont, measure)\n : \"\";\n if (sub)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: bottom - labelH + 31,\n text: sub,\n font: subFont,\n color: muted,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const value = ellipsize(valueText[i], room, valueFont, measure);\n if (value)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: area.y + valueH / 2,\n text: value,\n font: valueFont,\n color: text,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n } else {\n const room = Math.max(0, labelW - 14);\n const name = ellipsize(d.name, room, nameFont, measure);\n const sub =\n d.subtitle && slot >= 34\n ? ellipsize(d.subtitle, room, subFont, measure)\n : \"\";\n const x = area.x + labelW - 14;\n if (name)\n nodes.push({\n kind: \"text\",\n x,\n y: sub ? mid - 7 : mid,\n text: name,\n font: nameFont,\n color: text,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n if (sub)\n nodes.push({\n kind: \"text\",\n x,\n y: mid + 8,\n text: sub,\n font: subFont,\n color: muted,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const value = ellipsize(valueText[i], valueW - 8, valueFont, measure);\n if (value)\n nodes.push({\n kind: \"text\",\n x: area.x + area.width,\n y: mid,\n text: value,\n font: valueFont,\n color: text,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n }\n\n if (hidden.has(i)) return;\n const v = finite(d.value);\n const percent =\n target0 !== undefined && target0 !== 0\n ? v / target0\n : (v - min) / (max - min);\n const rangeIndex = ranges.findIndex((r) => v <= r);\n const rangeName = rangeIndex >= 0 ? o.rangeLabels?.[rangeIndex] : undefined;\n const end = along(v);\n items.push({\n index: i,\n name: d.name,\n value: v,\n percent,\n share: c.percent(percent),\n color: css,\n x: vertical ? mid : end,\n y: vertical ? end : mid,\n rows: [\n { name: c.labels.value, value: c.format(v) },\n ...(target0 !== undefined\n ? [\n { name: c.labels.target, value: c.format(target0) },\n { name: c.labels.ofTarget, value: c.percent(percent) },\n ]\n : []),\n ...(rangeName ? [{ name: c.labels.range, value: rangeName }] : []),\n ],\n });\n });\n\n return { nodes, items, dim: 0.4, empty: false };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"bullet.js","names":["keysOf","uniqueKeys","o","d","num","v","rangesOf","r","a","b","bulletScale","ranges","value","finite","target","lows","min","highs","max","top","last","niceDomain","bulletValues","key","out","rangeFills","c","count","gray","mix","theme","k","own","resolveWith","NAME_LINE","layoutBullet","keys","n","weights","clamp","i","total","sum","emptyLayout","vertical","enter","barSize","nameFont","font","subFont","valueFont","tickFont","muted","toCss","text","markColor","showTicks","nodes","items","hasSubtitle","valueText","nameW","measure","labelCap","area","lineW","wrapText","l","labelW","valueW","t","columnW","wraps","labelH","valueH","unit","offset","w","slot","from","alpha","fills","target0","color","css","thick","span","ticks","linearTicks","tickRoom","tickW","drawTicks","p0","along","mid","band","lo","hi","bounds","edge","to","bound","base","shownValue","at","len","room","lines","bottom","line","sub","ellipsize","avail","subH","x","hidden","percent","rangeIndex","rangeName","end"],"sources":["../../../../../charts/src/engine/shapes/bullet.ts"],"sourcesContent":["// Bullet chart layout (Stephen Few): per row, qualitative ranges as shades\n// of gray, the measure as a bar and the target as a marker, on the row's own\n// scale; name and subtitle on the left (below when vertical), value on the\n// right (above when vertical), tick labels when there is room.\n\nimport { mix, toCss, type Rgba } from \"../color\";\nimport { font } from \"../overlay\";\nimport { linearTicks, niceDomain } from \"../scale\";\nimport {\n clamp,\n ellipsize,\n emptyLayout,\n finite,\n resolveWith,\n sum,\n uniqueKeys,\n wrapText,\n type LayoutContext,\n type LayoutResult,\n type ShapeItem,\n type ShapeNode,\n} from \"./scene\";\nimport type { BulletChartOptions, BulletDatum } from \"./types\";\n\nconst keysOf = (o: BulletChartOptions) => uniqueKeys(o.data.map((d) => d.name));\n\nconst num = (v: number | undefined) =>\n typeof v === \"number\" && Number.isFinite(v) ? v : undefined;\n\n/** Qualitative ranges of a row: finite upper bounds, ascending */\nconst rangesOf = (o: BulletChartOptions, d: BulletDatum) =>\n (d.ranges ?? o.ranges ?? [])\n .filter((r) => typeof r === \"number\" && Number.isFinite(r))\n .slice()\n .sort((a, b) => a - b);\n\n/** Scale of a row: `[min, max]` */\nexport const bulletScale = (\n o: BulletChartOptions,\n d: BulletDatum,\n): [number, number] => {\n const ranges = rangesOf(o, d);\n const value = finite(d.value);\n const target = num(d.target);\n const lows = [0, value, ...(target !== undefined ? [target] : [])];\n let min = num(d.min) ?? Math.min(...lows);\n const highs = [value, ...(target !== undefined ? [target] : []), ...ranges];\n let max = num(d.max);\n if (max === undefined) {\n const top = Math.max(...highs);\n const last = ranges.length ? ranges[ranges.length - 1] : -Infinity;\n max = top <= last ? last : niceDomain(min, top, 5)[1];\n }\n if (!(max > min)) {\n if (max === min) max = min + 1;\n else [min, max] = [max, min];\n }\n return [min, max];\n};\n\nexport const bulletValues = (\n o: BulletChartOptions,\n hidden: ReadonlySet<number>,\n out: Map<string, number>,\n) => {\n keysOf(o).forEach((key, i) => {\n const d = o.data[i];\n out.set(key, finite(d.value));\n const target = num(d.target);\n if (target !== undefined) out.set(`>${key}`, target);\n out.set(`~${key}`, hidden.has(i) ? 0 : 1);\n });\n};\n\n/** Default fills of the ranges: grays, the lowest (poorest) darkest */\nconst rangeFills = (\n o: BulletChartOptions,\n c: LayoutContext,\n count: number,\n): Rgba[] => {\n const { theme } = c;\n return Array.from({ length: Math.max(1, count) }, (_, k) => {\n const gray = mix(\n theme.background,\n theme.text,\n count <= 1 ? 0.09 : 0.24 - (0.16 * k) / (count - 1),\n );\n const own = o.rangeColors?.[k];\n return own ? resolveWith(theme, own, gray) : gray;\n });\n};\n\n/** Line height of the wrapped names */\nconst NAME_LINE = 15;\n\nexport const layoutBullet = (\n o: BulletChartOptions,\n c: LayoutContext,\n): LayoutResult => {\n const { theme, area, measure, hidden } = c;\n const keys = keysOf(o);\n const n = o.data.length;\n const weights = keys.map((key, i) =>\n clamp(c.value(`~${key}`, hidden.has(i) ? 0 : 1), 0, 1),\n );\n const total = sum(weights);\n if (!n || total <= 1e-6) return emptyLayout(c);\n const vertical = o.orientation === \"vertical\";\n const enter = clamp(c.enter, 0, 1);\n const barSize = clamp(finite(o.barSize, 0.4), 0.1, 1);\n const nameFont = font(theme, 12, 600);\n const subFont = font(theme, 11);\n const valueFont = font(theme, 12, 600);\n const tickFont = font(theme, 10);\n const muted = toCss(theme.textMuted);\n const text = toCss(theme.text);\n const transparent = \"rgba(0, 0, 0, 0)\";\n const markColor = toCss(resolveWith(theme, o.targetColor, theme.text));\n const showTicks = o.ticks !== false;\n\n const nodes: ShapeNode[] = [];\n const items: ShapeItem[] = [];\n const hasSubtitle = o.data.some((d, i) => !!d.subtitle && weights[i] > 0);\n const valueText = o.data.map((d) => c.format(finite(d.value)));\n\n // shared columns (horizontal) / bands (vertical) of the labels and values:\n // the label column fits the longest name up to a share of the width,\n // longer names wrap to two lines\n const nameW = o.data.map((d) => measure(d.name, nameFont));\n const labelCap = area.width * (area.width < 420 ? 0.34 : 0.4);\n // widest line of each name once wrapped (balanced) within the cap\n const lineW = o.data.map((d, i) =>\n nameW[i] <= labelCap - 14\n ? nameW[i]\n : Math.max(\n 0,\n ...wrapText(d.name, labelCap - 14, nameFont, measure, 2).map((l) =>\n measure(l, nameFont),\n ),\n ),\n );\n const labelW = vertical\n ? 0\n : Math.min(\n labelCap,\n Math.max(\n 0,\n ...o.data.map((d, i) =>\n Math.max(lineW[i], d.subtitle ? measure(d.subtitle, subFont) : 0),\n ),\n ) + 14,\n );\n const valueW = vertical\n ? 0\n : Math.min(\n area.width * 0.2,\n Math.max(0, ...valueText.map((t) => measure(t, valueFont))) + 12,\n );\n const columnW = area.width / total;\n const wraps =\n vertical && o.data.some((_, i) => weights[i] > 0 && nameW[i] > columnW - 8);\n const labelH = vertical\n ? 22 + (wraps ? NAME_LINE : 0) + (hasSubtitle ? 14 : 0)\n : 0;\n const valueH = vertical ? 20 : 0;\n const unit = (vertical ? area.width : area.height) / total;\n\n let offset = 0;\n o.data.forEach((d, i) => {\n const w = weights[i];\n const slot = unit * w;\n const from = offset;\n offset += slot;\n if (w <= 1e-3) return;\n const key = keys[i];\n const alpha = w;\n const [min, max] = bulletScale(o, d);\n const ranges = rangesOf(o, d).filter((r) => r > min);\n const fills = rangeFills(o, c, ranges.length);\n const value = c.value(key, finite(d.value));\n const target0 = num(d.target);\n const target =\n target0 !== undefined ? c.value(`>${key}`, target0) : undefined;\n const color = c.color(d.color, i);\n const css = toCss(color);\n const thick = clamp(slot * (vertical ? 0.3 : 0.42), 8, 28);\n const span = vertical\n ? Math.max(1, area.height - labelH - valueH)\n : Math.max(1, area.width - labelW - valueW);\n const ticks = showTicks\n ? linearTicks(min, max, Math.max(2, Math.floor(span / 70)))\n : [];\n const tickRoom = vertical ? slot / 2 - thick / 2 - 6 : slot - thick - 10;\n const tickW = Math.max(\n 0,\n ...ticks.map((t) => measure(c.format(t), tickFont)),\n );\n const drawTicks =\n ticks.length > 1 && (vertical ? tickRoom >= tickW : tickRoom >= 14);\n\n // position along the scale, and across it\n const p0 = vertical ? area.y + area.height - labelH : area.x + labelW;\n const along = (v: number) =>\n p0 + (vertical ? -1 : 1) * span * clamp((v - min) / (max - min), 0, 1);\n const mid = vertical\n ? area.x + from + slot / 2\n : area.y + from + (slot - (drawTicks ? 14 : 0)) / 2;\n /** Rectangle from `a` to `b` along the scale, `t` thick across it */\n const band = (a: number, b: number, t: number) => {\n const lo = Math.min(along(a), along(b));\n const hi = Math.max(along(a), along(b));\n return vertical\n ? { x: mid - t / 2, y: lo, width: t, height: hi - lo }\n : { x: lo, y: mid - t / 2, width: hi - lo, height: t };\n };\n\n // the whole row / column is a hover target\n nodes.push({\n kind: \"rect\",\n ...(vertical\n ? { x: area.x + from, y: area.y, width: slot, height: area.height }\n : { x: area.x, y: area.y + from, width: area.width, height: slot }),\n radius: 0,\n fill: transparent,\n hit: i,\n alpha,\n });\n // ranges: disjoint segments (translucent colors must not add up)\n const bounds = ranges.length ? ranges : [max];\n let edge = min;\n bounds.forEach((bound, k) => {\n const to = Math.min(bound, max);\n if (to > edge)\n nodes.push({\n kind: \"rect\",\n ...band(edge, to, thick),\n radius: 0,\n fill: toCss(fills[k]),\n hit: i,\n alpha,\n });\n edge = Math.max(edge, to);\n });\n if (edge < max)\n nodes.push({\n kind: \"rect\",\n ...band(edge, max, thick),\n radius: 0,\n fill: toCss(fills[fills.length - 1]),\n hit: i,\n alpha,\n });\n // measure\n const base = clamp(0, min, max);\n const shownValue = base + (value - base) * enter;\n nodes.push({\n kind: \"rect\",\n ...band(base, shownValue, thick * barSize),\n radius: 1,\n fill: css,\n hit: i,\n alpha,\n brighten: true,\n });\n // target\n if (target !== undefined && target >= min && target <= max) {\n const at = along(target);\n const len = thick * 0.82;\n nodes.push({\n kind: \"rect\",\n ...(vertical\n ? { x: mid - len / 2, y: at - 1.5, width: len, height: 3 }\n : { x: at - 1.5, y: mid - len / 2, width: 3, height: len }),\n radius: 1,\n fill: markColor,\n hit: i,\n alpha: alpha * enter,\n });\n }\n // ticks\n if (drawTicks)\n for (const t of ticks) {\n const at = along(t);\n nodes.push({\n kind: \"text\",\n x: vertical ? mid - thick / 2 - 5 : at,\n y: vertical ? at : mid + thick / 2 + 4,\n text: c.format(t),\n font: tickFont,\n color: muted,\n align: vertical ? \"right\" : \"center\",\n baseline: vertical ? \"middle\" : \"top\",\n hit: i,\n alpha,\n });\n }\n\n // name, subtitle and value\n if (vertical) {\n const room = Math.max(0, slot - 8);\n const lines = wrapText(d.name, room, nameFont, measure, wraps ? 2 : 1);\n const bottom = area.y + area.height;\n lines.forEach((line, k) =>\n nodes.push({\n kind: \"text\",\n x: mid,\n y: bottom - labelH + 16 + k * NAME_LINE,\n text: line,\n font: nameFont,\n color: text,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n }),\n );\n const sub = d.subtitle\n ? ellipsize(d.subtitle, room, subFont, measure)\n : \"\";\n if (sub)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: bottom - labelH + 31 + (wraps ? NAME_LINE : 0),\n text: sub,\n font: subFont,\n color: muted,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const value = ellipsize(valueText[i], room, valueFont, measure);\n if (value)\n nodes.push({\n kind: \"text\",\n x: mid,\n y: area.y + valueH / 2,\n text: value,\n font: valueFont,\n color: text,\n align: \"center\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n } else {\n const room = Math.max(0, labelW - 14);\n const avail = slot - 4;\n const sub =\n d.subtitle && avail >= NAME_LINE + 14\n ? ellipsize(d.subtitle, room, subFont, measure)\n : \"\";\n const subH = sub ? 13 : 0;\n const lines = wrapText(\n d.name,\n room,\n nameFont,\n measure,\n avail >= 2 * NAME_LINE + subH ? 2 : 1,\n );\n const top = mid - (lines.length * NAME_LINE + subH) / 2;\n const x = area.x + labelW - 14;\n lines.forEach((line, k) =>\n nodes.push({\n kind: \"text\",\n x,\n y: top + NAME_LINE / 2 + k * NAME_LINE,\n text: line,\n font: nameFont,\n color: text,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n }),\n );\n if (sub)\n nodes.push({\n kind: \"text\",\n x,\n y: top + lines.length * NAME_LINE + subH / 2,\n text: sub,\n font: subFont,\n color: muted,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n const value = ellipsize(valueText[i], valueW - 8, valueFont, measure);\n if (value)\n nodes.push({\n kind: \"text\",\n x: area.x + area.width,\n y: mid,\n text: value,\n font: valueFont,\n color: text,\n align: \"right\",\n baseline: \"middle\",\n hit: i,\n alpha,\n });\n }\n\n if (hidden.has(i)) return;\n const v = finite(d.value);\n const percent =\n target0 !== undefined && target0 !== 0\n ? v / target0\n : (v - min) / (max - min);\n const rangeIndex = ranges.findIndex((r) => v <= r);\n const rangeName = rangeIndex >= 0 ? o.rangeLabels?.[rangeIndex] : undefined;\n const end = along(v);\n items.push({\n index: i,\n name: d.name,\n value: v,\n percent,\n share: c.percent(percent),\n color: css,\n x: vertical ? mid : end,\n y: vertical ? end : mid,\n rows: [\n { name: c.labels.value, value: c.format(v) },\n ...(target0 !== undefined\n ? [\n { name: c.labels.target, value: c.format(target0) },\n { name: c.labels.ofTarget, value: c.percent(percent) },\n ]\n : []),\n ...(rangeName ? [{ name: c.labels.range, value: rangeName }] : []),\n ],\n });\n });\n\n return { nodes, items, dim: 0.4, empty: false };\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("../dom.cjs"),t=require("../theme.cjs"),n=require("./scene.cjs"),r=require("./draw.cjs"),i=require("./hit.cjs"),a=require("./layout.cjs"),o=require("./runtime.cjs");var s=6,c=0,l=(l,u)=>{let d=l.ownerDocument,f=d.defaultView,p=e.createChartDom(l);p.root.classList.add(`minerva-shape-chart`),p.foreground.style.display=`none`,p.hover.style.display=`none`;let m=p.background,h=null;try{h=m.getContext(`2d`)}catch{h=null}let g=o.createShapeRuntime(u),_=u,v=t.readTheme(p.root,_.palette),y=null,b=null,x=``,S=!1,C=null,w=!1,T=null,E={hover:new Set,click:new Set,toggle:new Set,drill:new Set},D=(e,t)=>{for(let n of[...E[e]])n(t)},O=d.createElement(`div`);O.id=`minerva-shape-chart-${++c}`,e.styleElement(O,{position:`absolute`,width:`1px`,height:`1px`,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(50%)`,whiteSpace:`nowrap`}),p.stage.appendChild(O),p.stage.setAttribute(`aria-describedby`,O.id),p.stage.tabIndex=0;let k=``,ee=(e,t)=>h?(t!==k&&(h.font=t,k=t),h.measureText(e).width):n.estimateText(e,t),A=()=>{C!==null&&(w?clearTimeout(C):f?.cancelAnimationFrame?.(C),C=null)},j=()=>{S||C!==null||(f&&typeof f.requestAnimationFrame==`function`?(w=!1,C=f.requestAnimationFrame(()=>F())):(w=!0,C=setTimeout(()=>F(),16)))},M=()=>_.tooltip===!1?null:typeof _.tooltip==`object`?_.tooltip:{},te=t=>{let n=M()?.render;if(n)return n(t);if(!y||!b)return null;let r=a.tooltipContent(y,b.hover);if(!r)return null;let i=d.createDocumentFragment(),o=d.createElement(`div`);e.styleElement(o,{display:`flex`,alignItems:`center`,gap:`6px`,fontWeight:`600`,marginBottom:`4px`,color:`var(--text-color, #1f2937)`}),r.color&&o.appendChild(e.swatch(d,r.color,`dot`)),o.appendChild(d.createTextNode(r.title)),i.append(o);for(let t of r.rows){let n=d.createElement(`div`);e.styleElement(n,{display:`flex`,alignItems:`center`,gap:`8px`}),t.color&&n.appendChild(e.swatch(d,t.color,`dot`));let r=d.createElement(`span`);e.styleElement(r,{flex:`1 1 auto`,color:t.strong?`var(--text-color, #1f2937)`:`var(--text-secondary-color, #6b7280)`,fontWeight:t.strong?`600`:`400`}),r.textContent=t.name;let a=d.createElement(`span`);e.styleElement(a,{fontWeight:`600`,fontVariantNumeric:`tabular-nums`,marginLeft:`12px`}),a.textContent=t.value,n.append(r,a),i.append(n)}return i},N=(e=!1)=>{let t=p.tooltip,n=y&&b?a.hoverEvent(y,b.hover):null;if(!n||!y||!b||!M()||T?.moved){t.style.display=`none`,x=``;return}let r=`${n.index}:${n.indicator??``}`;if(e||r!==x){x=r;let e=te(n);if(e===null||e===``){t.replaceChildren(),x=``,t.style.display=`none`;return}typeof e==`string`?(t.textContent=e,t.style.whiteSpace=`pre`):(t.replaceChildren(e),t.style.whiteSpace=`nowrap`)}else if(!t.firstChild)return;t.style.display=`block`;let o=b.keyboard?i.hoverAnchor(y,b.hover)??b:b,s=p.stage.clientWidth,c=p.stage.clientHeight,{x:l,y:u}=a.placeShapeTooltip(y,b.hover,o,t.offsetWidth,t.offsetHeight,s,c);t.style.transform=`translate(${Math.round(l)}px, ${Math.round(u)}px)`},P=(e,t,n,r)=>{let i=!a.sameHover(b?.hover??null,e);b=e?{hover:e,x:t,y:n,keyboard:r}:null,p.stage.style.cursor=e&&!r?`pointer`:``,N(),i&&(j(),D(`hover`,y&&e?a.hoverEvent(y,e):null))};function F(){if(C=null,S)return;let e=p.stage.clientWidth,t=p.stage.clientHeight;if(!(e>0&&t>0))return;let n=f?.devicePixelRatio||1,i=Math.max(1,Math.round(e*n)),s=Math.max(1,Math.round(t*n));m.width!==i&&(m.width=i),m.height!==s&&(m.height=s),m.style.width=`${e}px`,m.style.height=`${t}px`,k=``;let c=g.frame(o.now(),{theme:v,width:e,height:t,measure:ee});if(y=c.scene,b&&!y.items.some(e=>e.index===b?.hover.index)&&(b=null,p.stage.style.cursor=``,D(`hover`,null)),h&&(h.setTransform(1,0,0,1,0,0),h.clearRect(0,0,i,s),h.setTransform(n,0,0,n,0,0),r.drawShapeScene(h,y,b?.hover??null),k=``),N(),c.animating)j();else{let e=a.describeScene(y);O.textContent!==e&&(O.textContent=e)}}let I=()=>{let t=a.shapeLegend(_,v,g.hidden),n=a.legendConfig(_),r=[...p.legend.children].indexOf(d.activeElement);if(p.legend.replaceChildren(),p.legend.style.display=t?`flex`:`none`,!t)return;let i=n.position===`bottom`;p.legend.style.order=i?`1`:`0`,p.legend.style.padding=i?`8px 4px 0`:`0 4px 8px`,p.legend.style.justifyContent=`center`;for(let r of t){let t=d.createElement(n.toggle?`button`:`span`);t instanceof HTMLButtonElement&&(t.type=`button`,t.setAttribute(`aria-pressed`,String(!r.hidden)),t.addEventListener(`click`,()=>R(r.index))),e.styleElement(t,{display:`inline-flex`,alignItems:`center`,gap:`6px`,padding:`2px 4px`,margin:`0`,border:`0`,borderRadius:`4px`,background:`none`,font:`inherit`,color:`var(--text-secondary-color, #6b7280)`,cursor:n.toggle?`pointer`:`default`,opacity:r.hidden?`0.45`:`1`,textDecoration:r.hidden?`line-through`:`none`,transition:`opacity 120ms ease-out`}),t.append(e.swatch(d,r.color,`dot`),d.createTextNode(r.name)),p.legend.appendChild(t)}r>=0&&p.legend.children[r]?.focus()},L=()=>{p.stage.setAttribute(`aria-label`,_.ariaLabel??a.describeChart(_))};function R(e){if(S)return;let t=g.toggle(e);t&&(_.hidden||(I(),x=``,j()),D(`toggle`,t))}function z(e){if(S)return;let t=g.drill(e);t&&(_.type===`sunburst`&&!_.drillPath&&(x=``,j()),D(`drill`,t))}let B=e=>{if(_.type!==`sunburst`||_.drill===!1||!y)return;let t=y.items.find(t=>t.index===e.index);t?.drill&&z(t.drill)},V=e=>{let t=p.stage.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}},H=(e,t)=>y?i.hitTestShapes(y,e,t,b?.hover??null):null,U=e=>{let{x:t,y:n}=V(e);if(T&&T.id===e.pointerId){if(Math.hypot(t-T.x,n-T.y)>s&&(T.moved=!0),T.touch)return}else if(e.pointerType===`touch`)return;P(H(t,n),t,n,!1)},W=e=>{let{x:t,y:n}=V(e);T={x:t,y:n,id:e.pointerId,touch:e.pointerType===`touch`,moved:!1}},G=e=>{let t=T;if(T=null,!t||t.id!==e.pointerId||t.moved){N();return}let{x:n,y:r}=V(e),i=H(n,r);if(P(i,n,r,!1),i&&y){let e=a.hoverEvent(y,i);e&&D(`click`,e),B(i)}},K=()=>{T=null,N()},q=e=>{e.pointerType!==`touch`&&(T=null,b&&!b.keyboard&&P(null,0,0,!1))},J=e=>{if(!y||!e)return;let t=i.hoverAnchor(y,e)??{x:0,y:0};P(e,t.x,t.y,!0),p.live.textContent=a.describeItem(y,e)},Y=e=>{if(!y)return;let t=b?.hover??null,n={ArrowRight:`next`,ArrowLeft:`prev`,ArrowUp:`up`,ArrowDown:`down`}[e.key];if(n){e.preventDefault(),J(i.stepHover(y,t,n));return}switch(e.key){case`Home`:case`End`:{let n=y.items;if(!n.length)return;e.preventDefault();let r=e.key===`Home`?n[0]:n[n.length-1];J(y.type===`radar`?{index:r.index,indicator:t?.indicator??0}:{index:r.index});break}case`Enter`:case` `:{if(!t)return;let n=a.hoverEvent(y,t);if(!n)return;e.preventDefault(),D(`click`,n),B(t);break}case`Backspace`:{if(_.type!==`sunburst`||_.drill===!1)return;let t=g.drillPath();if(!t.length)return;e.preventDefault(),z(t.slice(0,-1));break}case`Escape`:b&&(e.preventDefault(),P(null,0,0,!1))}},X=()=>{let e;try{e=p.stage.matches(`:focus-visible`)}catch{e=!0}e&&(p.stage.style.boxShadow=`inset 0 0 0 2px var(--primary-color, #4f46e5)`)},Z=()=>{p.stage.style.boxShadow=``,b?.keyboard&&P(null,0,0,!1)},Q=p.stage;Q.addEventListener(`pointermove`,U),Q.addEventListener(`pointerdown`,W),Q.addEventListener(`pointerup`,G),Q.addEventListener(`pointercancel`,K),Q.addEventListener(`pointerleave`,q),Q.addEventListener(`keydown`,Y),Q.addEventListener(`focus`,X),Q.addEventListener(`blur`,Z);let $=typeof ResizeObserver==`function`?new ResizeObserver(()=>j()):null;$?.observe(p.stage);let ne=()=>{S||(v=t.readTheme(p.root,_.palette),I(),x=``,j())},re=t.watchTheme(ne);return I(),L(),F(),{setOptions(e){if(S)return;let n=_;_=e,g.setOptions(e),(e.palette??[]).join()!==(n.palette??[]).join()&&(v=t.readTheme(p.root,e.palette)),e.type!==n.type&&b&&P(null,0,0,!1),I(),L(),x=``,j()},resize(){S||(A(),F())},refreshTheme:ne,toggle:R,getHidden:()=>g.hiddenIndexes(),drill:z,getDrillPath:()=>g.drillPath(),on(e,t){return E[e].add(t),()=>{E[e].delete(t)}},destroy(){S||(S=!0,A(),Q.removeEventListener(`pointermove`,U),Q.removeEventListener(`pointerdown`,W),Q.removeEventListener(`pointerup`,G),Q.removeEventListener(`pointercancel`,K),Q.removeEventListener(`pointerleave`,q),Q.removeEventListener(`keydown`,Y),Q.removeEventListener(`focus`,X),Q.removeEventListener(`blur`,Z),$?.disconnect(),re(),E.hover.clear(),E.click.clear(),E.toggle.clear(),E.drill.clear(),p.root.remove())}}};exports.createShapeChart=l;
1
+ const e=require("../dom.cjs"),t=require("../theme.cjs"),n=require("./scene.cjs"),r=require("./draw.cjs"),i=require("./hit.cjs"),a=require("./layout.cjs"),o=require("./runtime.cjs");var s=6,c=0,l=(l,u)=>{let d=l.ownerDocument,f=d.defaultView,p=e.createChartDom(l);p.root.classList.add(`minerva-shape-chart`),p.foreground.style.display=`none`,p.hover.style.display=`none`;let m=p.background,h=null;try{h=m.getContext(`2d`)}catch{h=null}let g=o.createShapeRuntime(u),_=u,v=t.readTheme(p.root,_.palette),y=null,b=null,x=``,S=!1,C=null,w=!1,T=null,E={hover:new Set,click:new Set,toggle:new Set,drill:new Set},D=(e,t)=>{for(let n of[...E[e]])n(t)},O=d.createElement(`div`);O.id=`minerva-shape-chart-${++c}`,e.styleElement(O,{position:`absolute`,width:`1px`,height:`1px`,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(50%)`,whiteSpace:`nowrap`}),p.stage.appendChild(O),p.stage.setAttribute(`aria-describedby`,O.id),p.stage.tabIndex=0;let k=``,ee=(e,t)=>h?(t!==k&&(h.font=t,k=t),h.measureText(e).width):n.estimateText(e,t),A=()=>{C!==null&&(w?clearTimeout(C):f?.cancelAnimationFrame?.(C),C=null)},j=()=>{S||C!==null||(f&&typeof f.requestAnimationFrame==`function`?(w=!1,C=f.requestAnimationFrame(()=>F())):(w=!0,C=setTimeout(()=>F(),16)))},M=()=>_.tooltip===!1?null:typeof _.tooltip==`object`?_.tooltip:{},te=t=>{let n=M()?.render;if(n)return n(t);if(!y||!b)return null;let r=a.tooltipContent(y,b.hover);if(!r)return null;let i=d.createDocumentFragment(),o=d.createElement(`div`);e.styleElement(o,{display:`flex`,alignItems:`center`,gap:`6px`,fontWeight:`600`,marginBottom:`4px`,color:`var(--text-color, #1f2937)`,whiteSpace:`normal`,maxWidth:`260px`,overflowWrap:`anywhere`}),r.color&&o.appendChild(e.swatch(d,r.color,`dot`)),o.appendChild(d.createTextNode(r.title)),i.append(o);for(let t of r.rows){let n=d.createElement(`div`);e.styleElement(n,{display:`flex`,alignItems:`center`,gap:`8px`}),t.color&&n.appendChild(e.swatch(d,t.color,`dot`));let r=d.createElement(`span`);e.styleElement(r,{flex:`1 1 auto`,color:t.strong?`var(--text-color, #1f2937)`:`var(--text-secondary-color, #6b7280)`,fontWeight:t.strong?`600`:`400`}),r.textContent=t.name;let a=d.createElement(`span`);e.styleElement(a,{fontWeight:`600`,fontVariantNumeric:`tabular-nums`,marginLeft:`12px`}),a.textContent=t.value,n.append(r,a),i.append(n)}return i},N=(e=!1)=>{let t=p.tooltip,n=y&&b?a.hoverEvent(y,b.hover):null;if(!n||!y||!b||!M()||T?.moved){t.style.display=`none`,x=``;return}let r=`${n.index}:${n.indicator??``}`;if(e||r!==x){x=r;let e=te(n);if(e===null||e===``){t.replaceChildren(),x=``,t.style.display=`none`;return}typeof e==`string`?(t.textContent=e,t.style.whiteSpace=`pre`):(t.replaceChildren(e),t.style.whiteSpace=`nowrap`)}else if(!t.firstChild)return;t.style.display=`block`;let o=b.keyboard?i.hoverAnchor(y,b.hover)??b:b,s=p.stage.clientWidth,c=p.stage.clientHeight,{x:l,y:u}=a.placeShapeTooltip(y,b.hover,o,t.offsetWidth,t.offsetHeight,s,c);t.style.transform=`translate(${Math.round(l)}px, ${Math.round(u)}px)`},P=(e,t,n,r)=>{let i=!a.sameHover(b?.hover??null,e);b=e?{hover:e,x:t,y:n,keyboard:r}:null,p.stage.style.cursor=e&&!r?`pointer`:``,N(),i&&(j(),D(`hover`,y&&e?a.hoverEvent(y,e):null))};function F(){if(C=null,S)return;let e=p.stage.clientWidth,t=p.stage.clientHeight;if(!(e>0&&t>0))return;let n=f?.devicePixelRatio||1,i=Math.max(1,Math.round(e*n)),s=Math.max(1,Math.round(t*n));m.width!==i&&(m.width=i),m.height!==s&&(m.height=s),m.style.width=`${e}px`,m.style.height=`${t}px`,k=``;let c=g.frame(o.now(),{theme:v,width:e,height:t,measure:ee});if(y=c.scene,b&&!y.items.some(e=>e.index===b?.hover.index)&&(b=null,p.stage.style.cursor=``,D(`hover`,null)),h&&(h.setTransform(1,0,0,1,0,0),h.clearRect(0,0,i,s),h.setTransform(n,0,0,n,0,0),r.drawShapeScene(h,y,b?.hover??null),k=``),N(),c.animating)j();else{let e=a.describeScene(y);O.textContent!==e&&(O.textContent=e)}}let I=()=>{let t=a.shapeLegend(_,v,g.hidden),n=a.legendConfig(_),r=[...p.legend.children].indexOf(d.activeElement);if(p.legend.replaceChildren(),p.legend.style.display=t?`flex`:`none`,!t)return;let i=n.position===`bottom`;p.legend.style.order=i?`1`:`0`,p.legend.style.padding=i?`8px 4px 0`:`0 4px 8px`,p.legend.style.justifyContent=`center`;for(let r of t){let t=d.createElement(n.toggle?`button`:`span`);t instanceof HTMLButtonElement&&(t.type=`button`,t.setAttribute(`aria-pressed`,String(!r.hidden)),t.addEventListener(`click`,()=>R(r.index))),e.styleElement(t,{display:`inline-flex`,alignItems:`center`,gap:`6px`,padding:`2px 4px`,margin:`0`,border:`0`,borderRadius:`4px`,background:`none`,font:`inherit`,color:`var(--text-secondary-color, #6b7280)`,cursor:n.toggle?`pointer`:`default`,opacity:r.hidden?`0.45`:`1`,textDecoration:r.hidden?`line-through`:`none`,transition:`opacity 120ms ease-out`}),t.append(e.swatch(d,r.color,`dot`),d.createTextNode(r.name)),p.legend.appendChild(t)}r>=0&&p.legend.children[r]?.focus()},L=()=>{p.stage.setAttribute(`aria-label`,_.ariaLabel??a.describeChart(_))};function R(e){if(S)return;let t=g.toggle(e);t&&(_.hidden||(I(),x=``,j()),D(`toggle`,t))}function z(e){if(S)return;let t=g.drill(e);t&&(_.type===`sunburst`&&!_.drillPath&&(x=``,j()),D(`drill`,t))}let B=e=>{if(_.type!==`sunburst`||_.drill===!1||!y)return;let t=y.items.find(t=>t.index===e.index);t?.drill&&z(t.drill)},V=e=>{let t=p.stage.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}},H=(e,t)=>y?i.hitTestShapes(y,e,t,b?.hover??null):null,U=e=>{let{x:t,y:n}=V(e);if(T&&T.id===e.pointerId){if(Math.hypot(t-T.x,n-T.y)>s&&(T.moved=!0),T.touch)return}else if(e.pointerType===`touch`)return;P(H(t,n),t,n,!1)},W=e=>{let{x:t,y:n}=V(e);T={x:t,y:n,id:e.pointerId,touch:e.pointerType===`touch`,moved:!1}},G=e=>{let t=T;if(T=null,!t||t.id!==e.pointerId||t.moved){N();return}let{x:n,y:r}=V(e),i=H(n,r);if(P(i,n,r,!1),i&&y){let e=a.hoverEvent(y,i);e&&D(`click`,e),B(i)}},K=()=>{T=null,N()},q=e=>{e.pointerType!==`touch`&&(T=null,b&&!b.keyboard&&P(null,0,0,!1))},J=e=>{if(!y||!e)return;let t=i.hoverAnchor(y,e)??{x:0,y:0};P(e,t.x,t.y,!0),p.live.textContent=a.describeItem(y,e)},Y=e=>{if(!y)return;let t=b?.hover??null,n={ArrowRight:`next`,ArrowLeft:`prev`,ArrowUp:`up`,ArrowDown:`down`}[e.key];if(n){e.preventDefault(),J(i.stepHover(y,t,n));return}switch(e.key){case`Home`:case`End`:{let n=y.items;if(!n.length)return;e.preventDefault();let r=e.key===`Home`?n[0]:n[n.length-1];J(y.type===`radar`?{index:r.index,indicator:t?.indicator??0}:{index:r.index});break}case`Enter`:case` `:{if(!t)return;let n=a.hoverEvent(y,t);if(!n)return;e.preventDefault(),D(`click`,n),B(t);break}case`Backspace`:{if(_.type!==`sunburst`||_.drill===!1)return;let t=g.drillPath();if(!t.length)return;e.preventDefault(),z(t.slice(0,-1));break}case`Escape`:b&&(e.preventDefault(),P(null,0,0,!1))}},X=()=>{let e;try{e=p.stage.matches(`:focus-visible`)}catch{e=!0}e&&(p.stage.style.boxShadow=`inset 0 0 0 2px var(--primary-color, #4f46e5)`)},Z=()=>{p.stage.style.boxShadow=``,b?.keyboard&&P(null,0,0,!1)},Q=p.stage;Q.addEventListener(`pointermove`,U),Q.addEventListener(`pointerdown`,W),Q.addEventListener(`pointerup`,G),Q.addEventListener(`pointercancel`,K),Q.addEventListener(`pointerleave`,q),Q.addEventListener(`keydown`,Y),Q.addEventListener(`focus`,X),Q.addEventListener(`blur`,Z);let $=typeof ResizeObserver==`function`?new ResizeObserver(()=>j()):null;$?.observe(p.stage);let ne=()=>{S||(v=t.readTheme(p.root,_.palette),I(),x=``,j())},re=t.watchTheme(ne);return I(),L(),F(),{setOptions(e){if(S)return;let n=_;_=e,g.setOptions(e),(e.palette??[]).join()!==(n.palette??[]).join()&&(v=t.readTheme(p.root,e.palette)),e.type!==n.type&&b&&P(null,0,0,!1),I(),L(),x=``,j()},resize(){S||(A(),F())},refreshTheme:ne,toggle:R,getHidden:()=>g.hiddenIndexes(),drill:z,getDrillPath:()=>g.drillPath(),on(e,t){return E[e].add(t),()=>{E[e].delete(t)}},destroy(){S||(S=!0,A(),Q.removeEventListener(`pointermove`,U),Q.removeEventListener(`pointerdown`,W),Q.removeEventListener(`pointerup`,G),Q.removeEventListener(`pointercancel`,K),Q.removeEventListener(`pointerleave`,q),Q.removeEventListener(`keydown`,Y),Q.removeEventListener(`focus`,X),Q.removeEventListener(`blur`,Z),$?.disconnect(),re(),E.hover.clear(),E.click.clear(),E.toggle.clear(),E.drill.clear(),p.root.remove())}}};exports.createShapeChart=l;
2
2
  //# sourceMappingURL=chart.cjs.map