@primeui/chart-core 0.0.1-alpha.1

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 (299) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +1 -0
  3. package/dist/animations/index.d.mts +136 -0
  4. package/dist/animations/index.mjs +18 -0
  5. package/dist/annotation.utils-Bm0lOO1o.d.mts +290 -0
  6. package/dist/borderRadius.utils-Cz73LLR_.d.mts +54 -0
  7. package/dist/canvas-D4vigq47.d.mts +34 -0
  8. package/dist/canvas.utils-D2WHi2gL.d.mts +167 -0
  9. package/dist/cartesian/index.d.mts +94 -0
  10. package/dist/cartesian/index.mjs +93 -0
  11. package/dist/chunk-22ST6YPP.mjs +304 -0
  12. package/dist/chunk-2QK2KOBN.mjs +10 -0
  13. package/dist/chunk-2QRS4YQ5.mjs +18 -0
  14. package/dist/chunk-3FFJEX4A.mjs +261 -0
  15. package/dist/chunk-3IYSJ2U7.mjs +567 -0
  16. package/dist/chunk-3OZLP4I4.mjs +190 -0
  17. package/dist/chunk-3WEMHXZI.mjs +198 -0
  18. package/dist/chunk-3Z62EUJN.mjs +138 -0
  19. package/dist/chunk-4C6EVJ54.mjs +362 -0
  20. package/dist/chunk-53HW45JB.mjs +102 -0
  21. package/dist/chunk-55Y3WI6S.mjs +186 -0
  22. package/dist/chunk-5JCI2DEB.mjs +97 -0
  23. package/dist/chunk-66T4MRC5.mjs +113 -0
  24. package/dist/chunk-6HSEJLSR.mjs +376 -0
  25. package/dist/chunk-6STOLMCA.mjs +187 -0
  26. package/dist/chunk-7CMVDIOU.mjs +54 -0
  27. package/dist/chunk-7QQ6ETB4.mjs +228 -0
  28. package/dist/chunk-A6ZQZFL2.mjs +272 -0
  29. package/dist/chunk-ADKLH73T.mjs +1 -0
  30. package/dist/chunk-AGU3NG6D.mjs +22 -0
  31. package/dist/chunk-AHYIS6EB.mjs +230 -0
  32. package/dist/chunk-AP3UYWYT.mjs +4 -0
  33. package/dist/chunk-ARB5T6MP.mjs +326 -0
  34. package/dist/chunk-ARRGOEFX.mjs +585 -0
  35. package/dist/chunk-AUF4CHDP.mjs +422 -0
  36. package/dist/chunk-B4FTADAZ.mjs +561 -0
  37. package/dist/chunk-BABQKA6K.mjs +339 -0
  38. package/dist/chunk-BETFQBM2.mjs +197 -0
  39. package/dist/chunk-BKP26M4K.mjs +413 -0
  40. package/dist/chunk-BZN2QHGP.mjs +200 -0
  41. package/dist/chunk-C36VWQ7A.mjs +86 -0
  42. package/dist/chunk-CHW4RKY3.mjs +16 -0
  43. package/dist/chunk-CINXJIRR.mjs +120 -0
  44. package/dist/chunk-DN6AXQYZ.mjs +667 -0
  45. package/dist/chunk-DP2IZNN3.mjs +92 -0
  46. package/dist/chunk-DTWTCFRG.mjs +119 -0
  47. package/dist/chunk-EAMUNLRU.mjs +172 -0
  48. package/dist/chunk-EDAKJLNA.mjs +17 -0
  49. package/dist/chunk-ERVQB2VZ.mjs +59 -0
  50. package/dist/chunk-FFMT6OCO.mjs +92 -0
  51. package/dist/chunk-FHTC2YDB.mjs +102 -0
  52. package/dist/chunk-FRST55HY.mjs +16 -0
  53. package/dist/chunk-HDFGCN2F.mjs +132 -0
  54. package/dist/chunk-IEGLX7VL.mjs +42 -0
  55. package/dist/chunk-ILUWFYGY.mjs +220 -0
  56. package/dist/chunk-IXOWSEHO.mjs +114 -0
  57. package/dist/chunk-J4RI2C2G.mjs +172 -0
  58. package/dist/chunk-J65DBT4R.mjs +13 -0
  59. package/dist/chunk-JGOVWSKH.mjs +179 -0
  60. package/dist/chunk-JO7VACY2.mjs +25 -0
  61. package/dist/chunk-JWFBOPM6.mjs +122 -0
  62. package/dist/chunk-KNDZP446.mjs +895 -0
  63. package/dist/chunk-KP2TWD4Z.mjs +90 -0
  64. package/dist/chunk-KQIFO5I3.mjs +225 -0
  65. package/dist/chunk-KVDEROP6.mjs +59 -0
  66. package/dist/chunk-LKC7MZKK.mjs +87 -0
  67. package/dist/chunk-LVMDQ4OJ.mjs +305 -0
  68. package/dist/chunk-M7B3JF43.mjs +90 -0
  69. package/dist/chunk-MTGMXRNF.mjs +136 -0
  70. package/dist/chunk-N3TIT3OH.mjs +1040 -0
  71. package/dist/chunk-NHRK5KU2.mjs +890 -0
  72. package/dist/chunk-NKUYIWAP.mjs +243 -0
  73. package/dist/chunk-NPDZLYIF.mjs +238 -0
  74. package/dist/chunk-O2X6FF45.mjs +499 -0
  75. package/dist/chunk-OGJ6IIBW.mjs +176 -0
  76. package/dist/chunk-OHGCZZPZ.mjs +403 -0
  77. package/dist/chunk-OWW3K55O.mjs +351 -0
  78. package/dist/chunk-OXTFAWSK.mjs +60 -0
  79. package/dist/chunk-PLSDU3C2.mjs +890 -0
  80. package/dist/chunk-PRDVPOZX.mjs +223 -0
  81. package/dist/chunk-Q6PPVIHU.mjs +21 -0
  82. package/dist/chunk-QQBXUDM4.mjs +885 -0
  83. package/dist/chunk-QS76E3TD.mjs +111 -0
  84. package/dist/chunk-QWQ6HY4I.mjs +209 -0
  85. package/dist/chunk-R6Y3R7EW.mjs +135 -0
  86. package/dist/chunk-RBLZRT5K.mjs +190 -0
  87. package/dist/chunk-RO4N6YFS.mjs +167 -0
  88. package/dist/chunk-RQ3CKQOX.mjs +984 -0
  89. package/dist/chunk-SALTGZFR.mjs +208 -0
  90. package/dist/chunk-SANZPAJ4.mjs +14 -0
  91. package/dist/chunk-SDBPQ5CF.mjs +624 -0
  92. package/dist/chunk-SSLTFJ3U.mjs +364 -0
  93. package/dist/chunk-SXHVDJGF.mjs +77 -0
  94. package/dist/chunk-TA4MVAEX.mjs +243 -0
  95. package/dist/chunk-TAHCOZHF.mjs +1772 -0
  96. package/dist/chunk-TQ6S34QZ.mjs +152 -0
  97. package/dist/chunk-UPRXABX5.mjs +90 -0
  98. package/dist/chunk-VGLSBZDN.mjs +71 -0
  99. package/dist/chunk-VN7CKCSE.mjs +364 -0
  100. package/dist/chunk-VVI3OBPJ.mjs +524 -0
  101. package/dist/chunk-VWF57TS3.mjs +62 -0
  102. package/dist/chunk-WA3OVISZ.mjs +179 -0
  103. package/dist/chunk-WCG35U6M.mjs +964 -0
  104. package/dist/chunk-WFTX4AQJ.mjs +194 -0
  105. package/dist/chunk-WFVOQ2QZ.mjs +18 -0
  106. package/dist/chunk-WH3C3Y7P.mjs +149 -0
  107. package/dist/chunk-WPFUV7K3.mjs +488 -0
  108. package/dist/chunk-WRULPWHD.mjs +492 -0
  109. package/dist/chunk-WS64BZXT.mjs +1 -0
  110. package/dist/chunk-WY4AURRE.mjs +2419 -0
  111. package/dist/chunk-WYLILAOO.mjs +167 -0
  112. package/dist/chunk-X4D7FKUS.mjs +62 -0
  113. package/dist/chunk-X7T34OLW.mjs +139 -0
  114. package/dist/chunk-XIHBK5D3.mjs +68 -0
  115. package/dist/chunk-XQQCGFYB.mjs +50 -0
  116. package/dist/chunk-XTVE4P3L.mjs +214 -0
  117. package/dist/chunk-XUAASRXW.mjs +579 -0
  118. package/dist/chunk-Y3L3D4GQ.mjs +685 -0
  119. package/dist/chunk-YBJ56XJS.mjs +132 -0
  120. package/dist/chunk-ZQFK6CAE.mjs +1 -0
  121. package/dist/chunk-ZT2Z7ERM.mjs +874 -0
  122. package/dist/chunk-ZTL2FQEW.mjs +714 -0
  123. package/dist/circular/arc/index.d.mts +8 -0
  124. package/dist/circular/arc/index.mjs +3 -0
  125. package/dist/circular/index.d.mts +44 -0
  126. package/dist/circular/index.mjs +13 -0
  127. package/dist/collect.utils-DiKB4ciO.d.mts +12 -0
  128. package/dist/computeChartState-BTVIqwyO.d.mts +304 -0
  129. package/dist/controller-BJE1AZ3q.d.mts +82 -0
  130. package/dist/controller-BoNigQJr.d.mts +63 -0
  131. package/dist/controllers/index.d.mts +16 -0
  132. package/dist/controllers/index.mjs +110 -0
  133. package/dist/datalabel.utils-CkjGeB8S.d.mts +122 -0
  134. package/dist/decimation.utils-CcvJVhI4.d.mts +244 -0
  135. package/dist/geometry-DUUQJXVM.d.mts +60 -0
  136. package/dist/index-DseIZa1j.d.mts +167 -0
  137. package/dist/index.d.mts +88 -0
  138. package/dist/index.mjs +110 -0
  139. package/dist/orchestrator/index.d.mts +264 -0
  140. package/dist/orchestrator/index.mjs +33 -0
  141. package/dist/plugins/index.d.mts +18 -0
  142. package/dist/plugins/index.mjs +1 -0
  143. package/dist/property-animations-D433wXzz.d.mts +580 -0
  144. package/dist/property-store-NORUWFND.d.mts +17 -0
  145. package/dist/radial/index.d.mts +14 -0
  146. package/dist/radial/index.mjs +37 -0
  147. package/dist/renderers/axis/index.d.mts +39 -0
  148. package/dist/renderers/axis/index.mjs +8 -0
  149. package/dist/renderers/circular/index.d.mts +13 -0
  150. package/dist/renderers/circular/index.mjs +13 -0
  151. package/dist/renderers/index.d.mts +83 -0
  152. package/dist/renderers/index.mjs +75 -0
  153. package/dist/renderers/navigator/index.d.mts +103 -0
  154. package/dist/renderers/navigator/index.mjs +8 -0
  155. package/dist/resize.utils-D_2qm6rv.d.mts +142 -0
  156. package/dist/ring.utils-DXvrxMkU.d.mts +138 -0
  157. package/dist/scale-KFv30jqZ.d.mts +307 -0
  158. package/dist/scales-Drf8AIhL.d.mts +75 -0
  159. package/dist/series/bar/canvas/index.d.mts +8 -0
  160. package/dist/series/bar/canvas/index.mjs +10 -0
  161. package/dist/series/bar/controller/index.d.mts +105 -0
  162. package/dist/series/bar/controller/index.mjs +44 -0
  163. package/dist/series/bar/controller-canvas/index.d.mts +7 -0
  164. package/dist/series/bar/controller-canvas/index.mjs +49 -0
  165. package/dist/series/bar/controller-svg/index.d.mts +7 -0
  166. package/dist/series/bar/controller-svg/index.mjs +49 -0
  167. package/dist/series/bar/index.d.mts +60 -0
  168. package/dist/series/bar/index.mjs +13 -0
  169. package/dist/series/bar/svg/index.d.mts +8 -0
  170. package/dist/series/bar/svg/index.mjs +11 -0
  171. package/dist/series/candlestick/canvas/index.d.mts +8 -0
  172. package/dist/series/candlestick/canvas/index.mjs +8 -0
  173. package/dist/series/candlestick/controller/index.d.mts +123 -0
  174. package/dist/series/candlestick/controller/index.mjs +40 -0
  175. package/dist/series/candlestick/controller-canvas/index.d.mts +7 -0
  176. package/dist/series/candlestick/controller-canvas/index.mjs +45 -0
  177. package/dist/series/candlestick/controller-svg/index.d.mts +7 -0
  178. package/dist/series/candlestick/controller-svg/index.mjs +45 -0
  179. package/dist/series/candlestick/index.d.mts +11 -0
  180. package/dist/series/candlestick/index.mjs +10 -0
  181. package/dist/series/candlestick/svg/index.d.mts +8 -0
  182. package/dist/series/candlestick/svg/index.mjs +8 -0
  183. package/dist/series/heatmap/canvas/index.d.mts +16 -0
  184. package/dist/series/heatmap/canvas/index.mjs +9 -0
  185. package/dist/series/heatmap/controller/index.d.mts +110 -0
  186. package/dist/series/heatmap/controller/index.mjs +23 -0
  187. package/dist/series/heatmap/controller-canvas/index.d.mts +7 -0
  188. package/dist/series/heatmap/controller-canvas/index.mjs +28 -0
  189. package/dist/series/heatmap/controller-svg/index.d.mts +7 -0
  190. package/dist/series/heatmap/controller-svg/index.mjs +28 -0
  191. package/dist/series/heatmap/index.d.mts +34 -0
  192. package/dist/series/heatmap/index.mjs +13 -0
  193. package/dist/series/heatmap/svg/index.d.mts +15 -0
  194. package/dist/series/heatmap/svg/index.mjs +10 -0
  195. package/dist/series/line/canvas/index.d.mts +6 -0
  196. package/dist/series/line/canvas/index.mjs +9 -0
  197. package/dist/series/line/controller/index.d.mts +111 -0
  198. package/dist/series/line/controller/index.mjs +47 -0
  199. package/dist/series/line/controller-canvas/index.d.mts +7 -0
  200. package/dist/series/line/controller-canvas/index.mjs +54 -0
  201. package/dist/series/line/controller-svg/index.d.mts +7 -0
  202. package/dist/series/line/controller-svg/index.mjs +54 -0
  203. package/dist/series/line/index.d.mts +49 -0
  204. package/dist/series/line/index.mjs +13 -0
  205. package/dist/series/line/svg/index.d.mts +6 -0
  206. package/dist/series/line/svg/index.mjs +9 -0
  207. package/dist/series/pie/canvas/index.d.mts +8 -0
  208. package/dist/series/pie/canvas/index.mjs +10 -0
  209. package/dist/series/pie/controller/index.d.mts +174 -0
  210. package/dist/series/pie/controller/index.mjs +110 -0
  211. package/dist/series/pie/controller-canvas/index.d.mts +8 -0
  212. package/dist/series/pie/controller-canvas/index.mjs +119 -0
  213. package/dist/series/pie/controller-svg/index.d.mts +8 -0
  214. package/dist/series/pie/controller-svg/index.mjs +118 -0
  215. package/dist/series/pie/index.d.mts +59 -0
  216. package/dist/series/pie/index.mjs +15 -0
  217. package/dist/series/pie/svg/index.d.mts +6 -0
  218. package/dist/series/pie/svg/index.mjs +11 -0
  219. package/dist/series/polar/canvas/index.d.mts +6 -0
  220. package/dist/series/polar/canvas/index.mjs +7 -0
  221. package/dist/series/polar/controller/index.d.mts +102 -0
  222. package/dist/series/polar/controller/index.mjs +46 -0
  223. package/dist/series/polar/controller-canvas/index.d.mts +8 -0
  224. package/dist/series/polar/controller-canvas/index.mjs +52 -0
  225. package/dist/series/polar/controller-svg/index.d.mts +8 -0
  226. package/dist/series/polar/controller-svg/index.mjs +52 -0
  227. package/dist/series/polar/index.d.mts +25 -0
  228. package/dist/series/polar/index.mjs +16 -0
  229. package/dist/series/polar/svg/index.d.mts +10 -0
  230. package/dist/series/polar/svg/index.mjs +8 -0
  231. package/dist/series/radar/canvas/index.d.mts +6 -0
  232. package/dist/series/radar/canvas/index.mjs +8 -0
  233. package/dist/series/radar/controller/index.d.mts +121 -0
  234. package/dist/series/radar/controller/index.mjs +43 -0
  235. package/dist/series/radar/controller-canvas/index.d.mts +8 -0
  236. package/dist/series/radar/controller-canvas/index.mjs +51 -0
  237. package/dist/series/radar/controller-svg/index.d.mts +8 -0
  238. package/dist/series/radar/controller-svg/index.mjs +51 -0
  239. package/dist/series/radar/index.d.mts +40 -0
  240. package/dist/series/radar/index.mjs +13 -0
  241. package/dist/series/radar/svg/index.d.mts +12 -0
  242. package/dist/series/radar/svg/index.mjs +9 -0
  243. package/dist/series/scatter/canvas/index.d.mts +8 -0
  244. package/dist/series/scatter/canvas/index.mjs +11 -0
  245. package/dist/series/scatter/controller/index.d.mts +124 -0
  246. package/dist/series/scatter/controller/index.mjs +44 -0
  247. package/dist/series/scatter/controller-canvas/index.d.mts +7 -0
  248. package/dist/series/scatter/controller-canvas/index.mjs +51 -0
  249. package/dist/series/scatter/controller-svg/index.d.mts +7 -0
  250. package/dist/series/scatter/controller-svg/index.mjs +51 -0
  251. package/dist/series/scatter/index.d.mts +25 -0
  252. package/dist/series/scatter/index.mjs +14 -0
  253. package/dist/series/scatter/svg/index.d.mts +8 -0
  254. package/dist/series/scatter/svg/index.mjs +12 -0
  255. package/dist/series/treemap/canvas/index.d.mts +50 -0
  256. package/dist/series/treemap/canvas/index.mjs +10 -0
  257. package/dist/series/treemap/controller/index.d.mts +130 -0
  258. package/dist/series/treemap/controller/index.mjs +20 -0
  259. package/dist/series/treemap/controller-canvas/index.d.mts +7 -0
  260. package/dist/series/treemap/controller-canvas/index.mjs +25 -0
  261. package/dist/series/treemap/controller-svg/index.d.mts +7 -0
  262. package/dist/series/treemap/controller-svg/index.mjs +25 -0
  263. package/dist/series/treemap/index.d.mts +15 -0
  264. package/dist/series/treemap/index.mjs +12 -0
  265. package/dist/series/treemap/svg/index.d.mts +15 -0
  266. package/dist/series/treemap/svg/index.mjs +9 -0
  267. package/dist/slices-DtewiwJx.d.mts +72 -0
  268. package/dist/spatialIndex.utils-B_GJkotZ.d.mts +5 -0
  269. package/dist/squarify.utils-B9CQBpa1.d.mts +50 -0
  270. package/dist/stacking-CChuAcLN.d.mts +319 -0
  271. package/dist/streaming.utils-DH-g1gNP.d.mts +49 -0
  272. package/dist/sync/index.d.mts +130 -0
  273. package/dist/sync/index.mjs +5 -0
  274. package/dist/tooltip.renderer-D5wpSlBa.d.mts +210 -0
  275. package/dist/utils/color/index.d.mts +58 -0
  276. package/dist/utils/color/index.mjs +4 -0
  277. package/dist/utils/data/index.d.mts +180 -0
  278. package/dist/utils/data/index.mjs +7 -0
  279. package/dist/utils/export/index.d.mts +14 -0
  280. package/dist/utils/export/index.mjs +6 -0
  281. package/dist/utils/index.d.mts +49 -0
  282. package/dist/utils/index.mjs +29 -0
  283. package/dist/utils/interaction/index.d.mts +255 -0
  284. package/dist/utils/interaction/index.mjs +9 -0
  285. package/dist/utils/layout/index.d.mts +3 -0
  286. package/dist/utils/layout/index.mjs +10 -0
  287. package/dist/utils/math/index.d.mts +162 -0
  288. package/dist/utils/math/index.mjs +1 -0
  289. package/dist/utils/render/index.d.mts +19 -0
  290. package/dist/utils/render/index.mjs +3 -0
  291. package/dist/utils/specialized/index.d.mts +37 -0
  292. package/dist/utils/specialized/index.mjs +66 -0
  293. package/dist/utils/text/index.d.mts +39 -0
  294. package/dist/utils/text/index.mjs +8 -0
  295. package/dist/utils/theme/index.d.mts +295 -0
  296. package/dist/utils/theme/index.mjs +5 -0
  297. package/dist/utils/zoom/index.d.mts +90 -0
  298. package/dist/utils/zoom/index.mjs +3 -0
  299. package/package.json +56 -0
@@ -0,0 +1,243 @@
1
+ import { perceivedLuminanceFromRGB } from './chunk-QS76E3TD.mjs';
2
+ import { defaultLightTheme } from './chunk-O2X6FF45.mjs';
3
+ import { parseHexColor } from './chunk-SSLTFJ3U.mjs';
4
+
5
+ // src/utils/theme/defaults.ts
6
+ var LIGHT_MODE_COLORS = {
7
+ text: "#000000",
8
+ background: "#ffffff",
9
+ surfaceBackground: "#f5f5f5"
10
+ };
11
+ var DARK_MODE_COLORS = {
12
+ text: "#ffffff",
13
+ background: "#3f3f46",
14
+ surfaceBackground: "#27272a"
15
+ };
16
+ var DEFAULT_AXIS_COLOR = "#666666";
17
+ var DEFAULT_GRID_COLOR = "#e2e8f0";
18
+ var DEFAULT_TICK_LABEL_COLOR = "#666666";
19
+ var DEFAULT_AXIS_COLOR_DARK = "#a1a1aa";
20
+ var DEFAULT_GRID_COLOR_DARK = "#3f3f46";
21
+ var DEFAULT_TICK_LABEL_COLOR_DARK = "#a1a1aa";
22
+ var DEFAULT_FONT_FAMILY = "system-ui, sans-serif";
23
+ var DEFAULT_TICK_FONT_SIZE = 12;
24
+ var DEFAULT_TITLE_FONT_SIZE = 14;
25
+ var DEFAULT_TICK_LENGTH = 6;
26
+ var DEFAULT_LABEL_PADDING = 8;
27
+ var DEFAULT_TITLE_OFFSET = 45;
28
+ var DEFAULT_CHART_TITLE_FONT_SIZE = 16;
29
+ var DEFAULT_CHART_TITLE_PADDING = 10;
30
+ var DEFAULT_CHART_CAPTION_FONT_SIZE = 13;
31
+ var DEFAULT_CHART_CAPTION_PADDING = { top: 8, bottom: 20 };
32
+ var DEFAULT_CHART_PADDING = 10;
33
+ var DEFAULT_LEGEND_HEIGHT = 30;
34
+ var DEFAULT_LEGEND_WIDTH = 100;
35
+ var DEFAULT_LEGEND_PADDING = 10;
36
+ var DEFAULT_CHART_TITLE_COLOR = "#0f172a";
37
+ var DEFAULT_CHART_TITLE_COLOR_DARK = "#fafafa";
38
+ var DEFAULT_CHART_CAPTION_COLOR = "#94a3b8";
39
+ var DEFAULT_CHART_CAPTION_COLOR_DARK = "#71717a";
40
+ var DEFAULT_DATA_LABEL_COLOR = "#334155";
41
+ var DEFAULT_DATA_LABEL_COLOR_DARK = "#e4e4e7";
42
+ var DEFAULT_ANNOTATION_COLOR = "#334155";
43
+ var DEFAULT_ANNOTATION_COLOR_DARK = "#e4e4e7";
44
+ var DEFAULT_DATA_LABEL_FONT_SIZE = 12;
45
+ var DEFAULT_DATA_LABEL_FONT_FAMILY = DEFAULT_FONT_FAMILY;
46
+ var DEFAULT_BRACKET_COLOR = "#999";
47
+ var DEFAULT_BRACKET_COLOR_DARK = "#71717a";
48
+ var DEFAULT_GROUP_LABEL_COLOR = "#444";
49
+ var DEFAULT_GROUP_LABEL_COLOR_DARK = "#a1a1aa";
50
+ var DEFAULT_GROUP_LABEL_FONT_SIZE = 11;
51
+ var DEFAULT_GROUP_LABEL_FONT_WEIGHT = 600;
52
+ var DEFAULT_CROSSHAIR_COLOR = "rgba(0, 0, 0, 0.5)";
53
+ var DEFAULT_CROSSHAIR_COLOR_DARK = "rgba(255, 255, 255, 0.3)";
54
+ var DEFAULT_REFERENCE_LINE_STROKE = "#94a3b8";
55
+ var DEFAULT_REFERENCE_LINE_WIDTH = 1;
56
+ var DEFAULT_REFERENCE_BAND_FILL = "#0000001a";
57
+ var DEFAULT_REFERENCE_BAND_OPACITY = 1;
58
+ var DEFAULT_REFERENCE_LABEL_FONT_SIZE = 11;
59
+ var DEFAULT_REFERENCE_LABEL_FONT_WEIGHT = 500;
60
+ var DEFAULT_REFERENCE_LABEL_OFFSET = 4;
61
+ var DEFAULT_HOVER_BRIGHTNESS = 1.1;
62
+ var DEFAULT_HOVER_DIM_OPACITY = 0.6;
63
+ var DEFAULT_HOVER_POINT_RADIUS_MULTIPLIER = 1.3;
64
+ var DEFAULT_HOVER_OFFSET = 0;
65
+ var DEFAULT_LINE_WIDTH = 2;
66
+ var DEFAULT_AREA_FILL_OPACITY = 0.3;
67
+ var DEFAULT_LINE_MARKER_SIZE = 4;
68
+ var DEFAULT_SCATTER_MARKER_SIZE = 6;
69
+ var DEFAULT_MIN_BUBBLE_SIZE = 4;
70
+ var DEFAULT_MAX_BUBBLE_SIZE = 40;
71
+ var DEFAULT_SCATTER_HIT_RADIUS = 10;
72
+ var DEFAULT_SCATTER_FILL_OPACITY = 0.7;
73
+ var DEFAULT_SCATTER_BORDER_WIDTH = 1;
74
+ var SCATTER_SPATIAL_INDEX_THRESHOLD = 2e3;
75
+ var SCATTER_BOOST_AUTO_THRESHOLD = 5e4;
76
+ var LINE_BOOST_AUTO_THRESHOLD = 5e4;
77
+ var SCATTER_SVG_CEILING_WARNING = 1e4;
78
+ var SVG_ELEMENT_CEILING_WARNING = 8e3;
79
+ var DEFAULT_RADAR_FILL_OPACITY = 0.2;
80
+ var DEFAULT_RADAR_HIT_RADIUS = 15;
81
+ var DEFAULT_GRID_LEVELS = 5;
82
+ var DEFAULT_RADIAL_LABEL_FONT_SIZE = 12;
83
+ var DEFAULT_POLAR_GAP_PX = 8;
84
+ var DEFAULT_CANDLESTICK_UP_COLOR = "#1eb854";
85
+ var DEFAULT_CANDLESTICK_DOWN_COLOR = "#dc2828";
86
+ var DEFAULT_CANDLESTICK_NEUTRAL_COLOR = "#6b7280";
87
+ var DEFAULT_CANDLESTICK_WICK_WIDTH = 1;
88
+ var DEFAULT_TREEMAP_PADDING = 2;
89
+ var DEFAULT_TREEMAP_GROUP_LABEL_HEIGHT = 18;
90
+ var DEFAULT_TREEMAP_CELL_COLOR = "#3563e9";
91
+ var DEFAULT_TREEMAP_HEADER_BG = "rgba(0,0,0,0.6)";
92
+ var DEFAULT_TREEMAP_HEADER_TEXT_COLOR = "#FFFFFF";
93
+ var DEFAULT_TREEMAP_CELL_BORDER_COLOR = "rgba(0,0,0,0.15)";
94
+ var DEFAULT_TREEMAP_GROUP_COLORS = ["#3563e9", "#e8722d", "#1fbe8b", "#dc2f4f", "#6852d9", "#1dafd9", "#d63384", "#88b83f", "#a855cc", "#d9a422"];
95
+ var DEFAULT_NAV_PADDING_Y = 4;
96
+ var DEFAULT_NAV_PADDING_X = 6;
97
+ var DEFAULT_NAV_MIN_SELECTION_WIDTH = 20;
98
+ var DEFAULT_NAV_HANDLE_WIDTH = 6;
99
+ var DEFAULT_NAV_GRIP_LINE_GAP = 3;
100
+ var DEFAULT_NAV_STYLE = {
101
+ height: 60,
102
+ gap: 8,
103
+ color: "#94a3b8",
104
+ opacity: 0.3,
105
+ selectionColor: "rgba(59,130,246,0.7)",
106
+ selectionFill: "rgba(59,130,246,0.08)",
107
+ maskColor: "rgba(0,0,0,0.12)"
108
+ };
109
+ var DEFAULT_BG_FILL_EVEN = "rgba(0,0,0,0.03)";
110
+ var DEFAULT_BG_FILL_ODD = "rgba(0,0,0,0.06)";
111
+ var DEFAULT_BRACKET_TICK_SIZE = 5;
112
+ var DEFAULT_BRACKET_GAP = 4;
113
+ var DEFAULT_BRACKET_DEPTH_LAYER_SIZE = 24;
114
+ var DEFAULT_BRACKET_LABEL_OFFSET = 6;
115
+ var DEFAULT_BRACKET_AXIS_TITLE_SPACE = 30;
116
+ var DEFAULT_LABEL_SPACING = 6;
117
+ var DEFAULT_TITLE_LABEL_GAP = 16;
118
+ var DEFAULT_FALLBACK_COLOR = "#808080";
119
+ var DEFAULT_BORDER_COLOR = "#000";
120
+ var BASE_FONT_SIZE = 12;
121
+ function resolveFontSize(defaultPx, globalFont) {
122
+ if (!globalFont?.size) return defaultPx;
123
+ return Math.round(defaultPx / BASE_FONT_SIZE * globalFont.size);
124
+ }
125
+ function resolveFontFamily(elementFamily, globalFont) {
126
+ return elementFamily ?? globalFont?.family ?? DEFAULT_FONT_FAMILY;
127
+ }
128
+
129
+ // src/utils/theme/resolution.ts
130
+ function resolveTheme(userTheme) {
131
+ if (!userTheme) return defaultLightTheme;
132
+ const series = userTheme.series ? defaultLightTheme.series.map((c, i) => userTheme.series[i] ?? c) : defaultLightTheme.series;
133
+ const axes = userTheme.axes ? defaultLightTheme.axes.map((c, i) => userTheme.axes[i] ?? c) : defaultLightTheme.axes;
134
+ return {
135
+ ...defaultLightTheme,
136
+ ...userTheme,
137
+ series,
138
+ axes
139
+ };
140
+ }
141
+ function resolveAxisColor(theme, index) {
142
+ return theme.axes[index ?? 0] ?? theme.axes[0] ?? "#666666";
143
+ }
144
+ function themeToCssVars(theme) {
145
+ if (!theme) return {};
146
+ const vars = {};
147
+ if (theme.series) {
148
+ for (let i = 0; i < theme.series.length; i++) {
149
+ const c = theme.series[i];
150
+ if (c) vars[`--p-chart-color-${i}`] = c;
151
+ }
152
+ }
153
+ if (theme.axes) {
154
+ for (let i = 0; i < 4 && i < theme.axes.length; i++) {
155
+ const c = theme.axes[i];
156
+ if (c) vars[`--p-chart-axis-${i}`] = c;
157
+ }
158
+ }
159
+ if (theme.grid) vars["--p-chart-grid"] = theme.grid;
160
+ if (theme.gridMinor) vars["--p-chart-grid-minor"] = theme.gridMinor;
161
+ if (theme.tickLabel) vars["--p-chart-tick-label-color"] = theme.tickLabel;
162
+ if (theme.dataLabel) vars["--p-chart-data-label-color"] = theme.dataLabel;
163
+ if (theme.dataLabelBackground) vars["--p-chart-data-label-background"] = theme.dataLabelBackground;
164
+ if (theme.dataLabelBorder) vars["--p-chart-data-label-border"] = theme.dataLabelBorder;
165
+ if (theme.annotation) vars["--p-chart-annotation-color"] = theme.annotation;
166
+ if (theme.annotationBackground) vars["--p-chart-annotation-background"] = theme.annotationBackground;
167
+ if (theme.annotationBorder) vars["--p-chart-annotation-border"] = theme.annotationBorder;
168
+ if (theme.titleColor) vars["--p-chart-title-color"] = theme.titleColor;
169
+ if (theme.captionColor) vars["--p-chart-caption-color"] = theme.captionColor;
170
+ if (theme.bandFill) vars["--p-chart-band-fill"] = theme.bandFill;
171
+ if (theme.positive) vars["--p-chart-positive"] = theme.positive;
172
+ if (theme.negative) vars["--p-chart-negative"] = theme.negative;
173
+ if (theme.candleNeutral) vars["--p-chart-candle-neutral"] = theme.candleNeutral;
174
+ if (theme.hoverBrightness != null) vars["--p-chart-hover-brightness"] = String(theme.hoverBrightness);
175
+ if (theme.dimOpacity != null) vars["--p-chart-dim-opacity"] = String(theme.dimOpacity);
176
+ if (theme.barStrokeWidth != null) vars["--p-chart-bar-stroke-width"] = `${theme.barStrokeWidth}px`;
177
+ if (theme.tickHalo) vars["--p-chart-tick-halo"] = theme.tickHalo;
178
+ if (theme.heatColorMin) vars["--p-chart-heat-min"] = theme.heatColorMin;
179
+ if (theme.heatColorMax) vars["--p-chart-heat-max"] = theme.heatColorMax;
180
+ if (theme.heatEmpty) vars["--p-chart-heat-empty"] = theme.heatEmpty;
181
+ if (theme.heatNull) vars["--p-chart-heat-null"] = theme.heatNull;
182
+ if (theme.tooltipBackground) vars["--p-chart-tooltip-background"] = theme.tooltipBackground;
183
+ if (theme.tooltipBorder) vars["--p-chart-tooltip-border"] = theme.tooltipBorder;
184
+ if (theme.tooltipColor) vars["--p-chart-tooltip-color"] = theme.tooltipColor;
185
+ if (theme.tooltipRadius) vars["--p-chart-tooltip-radius"] = theme.tooltipRadius;
186
+ if (theme.tooltipBlur) vars["--p-chart-tooltip-blur"] = theme.tooltipBlur;
187
+ if (theme.tooltipShadow) vars["--p-chart-tooltip-shadow"] = theme.tooltipShadow;
188
+ if (theme.tooltipPadding) vars["--p-chart-tooltip-padding"] = theme.tooltipPadding;
189
+ if (theme.legendColor) vars["--p-chart-legend-color"] = theme.legendColor;
190
+ if (theme.legendBackground) vars["--p-chart-legend-background"] = theme.legendBackground;
191
+ if (theme.legendBorder) vars["--p-chart-legend-border"] = theme.legendBorder;
192
+ if (theme.referenceLineColor) vars["--p-chart-reference-line"] = theme.referenceLineColor;
193
+ if (theme.referenceBandFill) vars["--p-chart-reference-band"] = theme.referenceBandFill;
194
+ if (theme.navigatorSeries) vars["--p-chart-navigator-series"] = theme.navigatorSeries;
195
+ if (theme.navigatorMask) vars["--p-chart-navigator-mask"] = theme.navigatorMask;
196
+ if (theme.navigatorSelectionColor) vars["--p-chart-navigator-selection"] = theme.navigatorSelectionColor;
197
+ if (theme.navigatorSelectionFill) vars["--p-chart-navigator-selection-fill"] = theme.navigatorSelectionFill;
198
+ if (theme.treemapCell) vars["--p-chart-treemap-cell"] = theme.treemapCell;
199
+ if (theme.treemapCellBorder) vars["--p-chart-treemap-cell-border"] = theme.treemapCellBorder;
200
+ if (theme.treemapHeaderBg) vars["--p-chart-treemap-header-bg"] = theme.treemapHeaderBg;
201
+ if (theme.treemapHeaderText) vars["--p-chart-treemap-header-text"] = theme.treemapHeaderText;
202
+ if (theme.borderColor) vars["--p-chart-border"] = theme.borderColor;
203
+ if (theme.crosshairColor) vars["--p-chart-crosshair-color"] = theme.crosshairColor;
204
+ if (theme.fontFamily) vars["--p-chart-font-family"] = theme.fontFamily;
205
+ if (theme.fontSize != null) vars["--p-chart-font-size"] = `${theme.fontSize}px`;
206
+ return vars;
207
+ }
208
+ function resolveBackgroundColor(container, requestedBg) {
209
+ if (requestedBg !== "auto") {
210
+ return requestedBg;
211
+ }
212
+ let element = container;
213
+ const view = container.ownerDocument.defaultView;
214
+ if (!view) return LIGHT_MODE_COLORS.background;
215
+ while (element) {
216
+ const computed = view.getComputedStyle(element);
217
+ const bg = computed.backgroundColor;
218
+ if (bg && bg !== "transparent" && bg !== "rgba(0, 0, 0, 0)") {
219
+ return bg;
220
+ }
221
+ element = element.parentElement;
222
+ }
223
+ return LIGHT_MODE_COLORS.background;
224
+ }
225
+ function calculateLuminance(r, g, b) {
226
+ return perceivedLuminanceFromRGB(r, g, b) * 255;
227
+ }
228
+ function isColorDark(color) {
229
+ if (color.startsWith("#")) {
230
+ const [r, g, b] = parseHexColor(color);
231
+ return calculateLuminance(r, g, b) < 128;
232
+ }
233
+ const match = color.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);
234
+ if (match) {
235
+ const r = parseInt(match[1], 10);
236
+ const g = parseInt(match[2], 10);
237
+ const b = parseInt(match[3], 10);
238
+ return calculateLuminance(r, g, b) < 128;
239
+ }
240
+ return false;
241
+ }
242
+
243
+ export { DARK_MODE_COLORS, DEFAULT_ANNOTATION_COLOR, DEFAULT_ANNOTATION_COLOR_DARK, DEFAULT_AREA_FILL_OPACITY, DEFAULT_AXIS_COLOR, DEFAULT_AXIS_COLOR_DARK, DEFAULT_BG_FILL_EVEN, DEFAULT_BG_FILL_ODD, DEFAULT_BORDER_COLOR, DEFAULT_BRACKET_AXIS_TITLE_SPACE, DEFAULT_BRACKET_COLOR, DEFAULT_BRACKET_COLOR_DARK, DEFAULT_BRACKET_DEPTH_LAYER_SIZE, DEFAULT_BRACKET_GAP, DEFAULT_BRACKET_LABEL_OFFSET, DEFAULT_BRACKET_TICK_SIZE, DEFAULT_CANDLESTICK_DOWN_COLOR, DEFAULT_CANDLESTICK_NEUTRAL_COLOR, DEFAULT_CANDLESTICK_UP_COLOR, DEFAULT_CANDLESTICK_WICK_WIDTH, DEFAULT_CHART_CAPTION_COLOR, DEFAULT_CHART_CAPTION_COLOR_DARK, DEFAULT_CHART_CAPTION_FONT_SIZE, DEFAULT_CHART_CAPTION_PADDING, DEFAULT_CHART_PADDING, DEFAULT_CHART_TITLE_COLOR, DEFAULT_CHART_TITLE_COLOR_DARK, DEFAULT_CHART_TITLE_FONT_SIZE, DEFAULT_CHART_TITLE_PADDING, DEFAULT_CROSSHAIR_COLOR, DEFAULT_CROSSHAIR_COLOR_DARK, DEFAULT_DATA_LABEL_COLOR, DEFAULT_DATA_LABEL_COLOR_DARK, DEFAULT_DATA_LABEL_FONT_FAMILY, DEFAULT_DATA_LABEL_FONT_SIZE, DEFAULT_FALLBACK_COLOR, DEFAULT_FONT_FAMILY, DEFAULT_GRID_COLOR, DEFAULT_GRID_COLOR_DARK, DEFAULT_GRID_LEVELS, DEFAULT_GROUP_LABEL_COLOR, DEFAULT_GROUP_LABEL_COLOR_DARK, DEFAULT_GROUP_LABEL_FONT_SIZE, DEFAULT_GROUP_LABEL_FONT_WEIGHT, DEFAULT_HOVER_BRIGHTNESS, DEFAULT_HOVER_DIM_OPACITY, DEFAULT_HOVER_OFFSET, DEFAULT_HOVER_POINT_RADIUS_MULTIPLIER, DEFAULT_LABEL_PADDING, DEFAULT_LABEL_SPACING, DEFAULT_LEGEND_HEIGHT, DEFAULT_LEGEND_PADDING, DEFAULT_LEGEND_WIDTH, DEFAULT_LINE_MARKER_SIZE, DEFAULT_LINE_WIDTH, DEFAULT_MAX_BUBBLE_SIZE, DEFAULT_MIN_BUBBLE_SIZE, DEFAULT_NAV_GRIP_LINE_GAP, DEFAULT_NAV_HANDLE_WIDTH, DEFAULT_NAV_MIN_SELECTION_WIDTH, DEFAULT_NAV_PADDING_X, DEFAULT_NAV_PADDING_Y, DEFAULT_NAV_STYLE, DEFAULT_POLAR_GAP_PX, DEFAULT_RADAR_FILL_OPACITY, DEFAULT_RADAR_HIT_RADIUS, DEFAULT_RADIAL_LABEL_FONT_SIZE, DEFAULT_REFERENCE_BAND_FILL, DEFAULT_REFERENCE_BAND_OPACITY, DEFAULT_REFERENCE_LABEL_FONT_SIZE, DEFAULT_REFERENCE_LABEL_FONT_WEIGHT, DEFAULT_REFERENCE_LABEL_OFFSET, DEFAULT_REFERENCE_LINE_STROKE, DEFAULT_REFERENCE_LINE_WIDTH, DEFAULT_SCATTER_BORDER_WIDTH, DEFAULT_SCATTER_FILL_OPACITY, DEFAULT_SCATTER_HIT_RADIUS, DEFAULT_SCATTER_MARKER_SIZE, DEFAULT_TICK_FONT_SIZE, DEFAULT_TICK_LABEL_COLOR, DEFAULT_TICK_LABEL_COLOR_DARK, DEFAULT_TICK_LENGTH, DEFAULT_TITLE_FONT_SIZE, DEFAULT_TITLE_LABEL_GAP, DEFAULT_TITLE_OFFSET, DEFAULT_TREEMAP_CELL_BORDER_COLOR, DEFAULT_TREEMAP_CELL_COLOR, DEFAULT_TREEMAP_GROUP_COLORS, DEFAULT_TREEMAP_GROUP_LABEL_HEIGHT, DEFAULT_TREEMAP_HEADER_BG, DEFAULT_TREEMAP_HEADER_TEXT_COLOR, DEFAULT_TREEMAP_PADDING, LIGHT_MODE_COLORS, LINE_BOOST_AUTO_THRESHOLD, SCATTER_BOOST_AUTO_THRESHOLD, SCATTER_SPATIAL_INDEX_THRESHOLD, SCATTER_SVG_CEILING_WARNING, SVG_ELEMENT_CEILING_WARNING, calculateLuminance, isColorDark, resolveAxisColor, resolveBackgroundColor, resolveFontFamily, resolveFontSize, resolveTheme, themeToCssVars };
@@ -0,0 +1,238 @@
1
+ import { DEFAULT_CHART_PADDING, resolveFontSize, DEFAULT_CHART_TITLE_FONT_SIZE, DEFAULT_CHART_TITLE_PADDING, DEFAULT_CHART_CAPTION_FONT_SIZE, DEFAULT_CHART_CAPTION_PADDING, DEFAULT_LEGEND_PADDING, DEFAULT_LEGEND_WIDTH, DEFAULT_LEGEND_HEIGHT } from './chunk-NKUYIWAP.mjs';
2
+ import { calculateArcBoundingBox } from './chunk-RQ3CKQOX.mjs';
3
+
4
+ // src/utils/layout/layout.utils.ts
5
+ function normalizePadding(padding) {
6
+ if (typeof padding === "number") {
7
+ return { top: padding, right: padding, bottom: padding, left: padding };
8
+ }
9
+ return {
10
+ top: padding?.top ?? DEFAULT_CHART_PADDING,
11
+ right: padding?.right ?? DEFAULT_CHART_PADDING,
12
+ bottom: padding?.bottom ?? DEFAULT_CHART_PADDING,
13
+ left: padding?.left ?? DEFAULT_CHART_PADDING
14
+ };
15
+ }
16
+ function calculateTitleDimensions(title, globalFont) {
17
+ if (!title?.display || !title.text) {
18
+ return { height: 0, fontSize: 0, padding: 0 };
19
+ }
20
+ const fontSize = title.fontSize ?? resolveFontSize(DEFAULT_CHART_TITLE_FONT_SIZE, globalFont);
21
+ const padding = title.padding ?? DEFAULT_CHART_TITLE_PADDING;
22
+ const height = fontSize + padding * 2;
23
+ return { height, fontSize, padding };
24
+ }
25
+ function calculateTitleArea(title, containerWidth, containerHeight, padding, globalFont) {
26
+ if (!title?.display) {
27
+ return null;
28
+ }
29
+ const { height } = calculateTitleDimensions(title, globalFont);
30
+ const position = title.position ?? "top";
31
+ const x = padding.left;
32
+ const width = containerWidth - padding.left - padding.right;
33
+ if (position === "top") {
34
+ return { x, y: padding.top, width, height };
35
+ } else {
36
+ return { x, y: containerHeight - padding.bottom - height, width, height };
37
+ }
38
+ }
39
+ function calculateTitleLayout(title, caption, containerWidth, containerHeight, padding, floating, globalFont) {
40
+ const hasTitle = !!title?.display && !!title.text;
41
+ const hasCaption = !!caption?.display && !!caption.text;
42
+ if (!hasTitle && !hasCaption) {
43
+ return { titleArea: null, captionArea: null, totalArea: null, totalHeight: 0, captionIndependentHeight: 0, captionIndependentPosition: null };
44
+ }
45
+ const titlePosition = title?.position ?? "top";
46
+ const captionPosition = caption?.position;
47
+ const captionIsIndependent = hasCaption && !!captionPosition && captionPosition !== titlePosition;
48
+ const x = padding.left;
49
+ const width = containerWidth - padding.left - padding.right;
50
+ const titleFontSize = title?.fontSize ?? resolveFontSize(DEFAULT_CHART_TITLE_FONT_SIZE, globalFont);
51
+ const titlePadding = title?.padding ?? DEFAULT_CHART_TITLE_PADDING;
52
+ const titleHeight = hasTitle ? titleFontSize + titlePadding * 2 : 0;
53
+ const captionFontSize = caption?.fontSize ?? resolveFontSize(DEFAULT_CHART_CAPTION_FONT_SIZE, globalFont);
54
+ const captionPaddingRaw = caption?.padding;
55
+ const captionPaddingTop = typeof captionPaddingRaw === "number" ? captionPaddingRaw : captionPaddingRaw?.top ?? DEFAULT_CHART_CAPTION_PADDING.top;
56
+ const captionPaddingBottom = typeof captionPaddingRaw === "number" ? captionPaddingRaw : captionPaddingRaw?.bottom ?? DEFAULT_CHART_CAPTION_PADDING.bottom;
57
+ const captionHeight = hasCaption ? caption?.measuredHeight ?? captionFontSize + captionPaddingTop + captionPaddingBottom : 0;
58
+ let titleArea = null;
59
+ let captionArea = null;
60
+ if (captionIsIndependent) {
61
+ if (hasTitle) {
62
+ const startY = titlePosition === "top" ? padding.top : containerHeight - padding.bottom - titleHeight;
63
+ titleArea = { x, y: startY, width, height: titleHeight };
64
+ }
65
+ const capSide = captionPosition;
66
+ const capY = capSide === "top" ? padding.top : containerHeight - padding.bottom - captionHeight;
67
+ captionArea = { x, y: capY, width, height: captionHeight };
68
+ const titleOnlyHeight = titleHeight;
69
+ const totalArea2 = titleOnlyHeight > 0 && hasTitle ? {
70
+ x,
71
+ y: titlePosition === "top" ? padding.top : containerHeight - padding.bottom - titleOnlyHeight,
72
+ width,
73
+ height: titleOnlyHeight
74
+ } : null;
75
+ return {
76
+ titleArea,
77
+ captionArea,
78
+ totalArea: totalArea2,
79
+ totalHeight: floating ? 0 : titleOnlyHeight,
80
+ captionIndependentHeight: floating ? 0 : captionHeight,
81
+ captionIndependentPosition: capSide
82
+ };
83
+ }
84
+ const stackedHeight = titleHeight + captionHeight;
85
+ if (titlePosition === "top") {
86
+ const startY = padding.top;
87
+ if (hasTitle) {
88
+ titleArea = { x, y: startY, width, height: titleHeight };
89
+ }
90
+ if (hasCaption) {
91
+ captionArea = { x, y: startY + titleHeight, width, height: captionHeight };
92
+ }
93
+ } else {
94
+ const bottomEdge = containerHeight - padding.bottom;
95
+ if (hasTitle) {
96
+ titleArea = { x, y: bottomEdge - titleHeight, width, height: titleHeight };
97
+ }
98
+ if (hasCaption) {
99
+ captionArea = { x, y: bottomEdge - stackedHeight, width, height: captionHeight };
100
+ }
101
+ }
102
+ const totalArea = stackedHeight > 0 ? {
103
+ x,
104
+ y: titlePosition === "top" ? padding.top : containerHeight - padding.bottom - stackedHeight,
105
+ width,
106
+ height: stackedHeight
107
+ } : null;
108
+ return {
109
+ titleArea,
110
+ captionArea,
111
+ totalArea,
112
+ totalHeight: floating ? 0 : stackedHeight,
113
+ captionIndependentHeight: 0,
114
+ captionIndependentPosition: null
115
+ };
116
+ }
117
+ function calculateLegendDimensions(legend) {
118
+ if (!legend?.display) {
119
+ return { width: 0, height: 0, padding: 0 };
120
+ }
121
+ const padding = legend.padding ?? DEFAULT_LEGEND_PADDING;
122
+ const position = legend.position ?? "bottom";
123
+ if (position === "left" || position === "right") {
124
+ const width = (legend.width ?? DEFAULT_LEGEND_WIDTH) + padding * 2;
125
+ return { width, height: 0, padding };
126
+ } else {
127
+ const height = (legend.height ?? DEFAULT_LEGEND_HEIGHT) + padding * 2;
128
+ return { width: 0, height, padding };
129
+ }
130
+ }
131
+ function calculateLegendArea(legend, containerWidth, containerHeight, padding, titleArea, titlePosition) {
132
+ if (!legend?.display) {
133
+ return null;
134
+ }
135
+ const position = legend.position ?? "bottom";
136
+ const legendPadding = legend.padding ?? DEFAULT_LEGEND_PADDING;
137
+ const titleTopHeight = titlePosition === "top" && titleArea ? titleArea.height : 0;
138
+ const titleBottomHeight = titlePosition === "bottom" && titleArea ? titleArea.height : 0;
139
+ if (position === "top") {
140
+ const y = padding.top + titleTopHeight;
141
+ const height = (legend.height ?? DEFAULT_LEGEND_HEIGHT) + legendPadding * 2;
142
+ return {
143
+ x: padding.left,
144
+ y,
145
+ width: containerWidth - padding.left - padding.right,
146
+ height
147
+ };
148
+ }
149
+ if (position === "bottom") {
150
+ const height = (legend.height ?? DEFAULT_LEGEND_HEIGHT) + legendPadding * 2;
151
+ const y = containerHeight - padding.bottom - titleBottomHeight - height;
152
+ return {
153
+ x: padding.left,
154
+ y,
155
+ width: containerWidth - padding.left - padding.right,
156
+ height
157
+ };
158
+ }
159
+ if (position === "left") {
160
+ const width = (legend.width ?? DEFAULT_LEGEND_WIDTH) + legendPadding * 2;
161
+ const y = padding.top + titleTopHeight;
162
+ return {
163
+ x: padding.left,
164
+ y,
165
+ width,
166
+ height: containerHeight - padding.top - padding.bottom - titleTopHeight - titleBottomHeight
167
+ };
168
+ }
169
+ if (position === "right") {
170
+ const width = (legend.width ?? DEFAULT_LEGEND_WIDTH) + legendPadding * 2;
171
+ const y = padding.top + titleTopHeight;
172
+ return {
173
+ x: containerWidth - padding.right - width,
174
+ y,
175
+ width,
176
+ height: containerHeight - padding.top - padding.bottom - titleTopHeight - titleBottomHeight
177
+ };
178
+ }
179
+ return null;
180
+ }
181
+ function calculateChartArea(containerWidth, containerHeight, padding, titleArea, legendArea, titlePosition, legendPosition) {
182
+ let x = padding.left;
183
+ let y = padding.top;
184
+ let width = containerWidth - padding.left - padding.right;
185
+ let height = containerHeight - padding.top - padding.bottom;
186
+ if (titleArea) {
187
+ if (titlePosition === "top") {
188
+ y += titleArea.height;
189
+ height -= titleArea.height;
190
+ } else if (titlePosition === "bottom") {
191
+ height -= titleArea.height;
192
+ }
193
+ }
194
+ if (legendArea) {
195
+ if (legendPosition === "top") {
196
+ y += legendArea.height;
197
+ height -= legendArea.height;
198
+ } else if (legendPosition === "bottom") {
199
+ height -= legendArea.height;
200
+ } else if (legendPosition === "left") {
201
+ x += legendArea.width;
202
+ width -= legendArea.width;
203
+ } else if (legendPosition === "right") {
204
+ width -= legendArea.width;
205
+ }
206
+ }
207
+ return { x, y, width: Math.max(0, width), height: Math.max(0, height) };
208
+ }
209
+ function calculateRadiusAndCenter(chartArea, radiusPercent, partialPieOptions) {
210
+ const baseCenterX = chartArea.x + chartArea.width / 2;
211
+ const baseCenterY = chartArea.y + chartArea.height / 2;
212
+ const rotation = partialPieOptions?.rotation ?? 0;
213
+ const sweepAngle = partialPieOptions?.sweepAngle ?? 360;
214
+ if (sweepAngle <= 270 && sweepAngle > 0) {
215
+ const unitBoundingBox = calculateArcBoundingBox(0, 0, 1, rotation, sweepAngle);
216
+ const scaleX = chartArea.width / unitBoundingBox.width;
217
+ const scaleY = chartArea.height / unitBoundingBox.height;
218
+ const maxRadius2 = Math.min(scaleX, scaleY);
219
+ const percentage2 = radiusPercent ?? 100;
220
+ const radius2 = maxRadius2 * (percentage2 / 100);
221
+ const actualBoundingBox = calculateArcBoundingBox(baseCenterX, baseCenterY, radius2, rotation, sweepAngle);
222
+ const centerX = baseCenterX + actualBoundingBox.centerOffsetX;
223
+ const centerY = baseCenterY + actualBoundingBox.centerOffsetY;
224
+ return {
225
+ center: { x: centerX, y: centerY },
226
+ radius: radius2
227
+ };
228
+ }
229
+ const maxRadius = Math.min(chartArea.width, chartArea.height) / 2;
230
+ const percentage = radiusPercent ?? 100;
231
+ const radius = maxRadius * (percentage / 100);
232
+ return {
233
+ center: { x: baseCenterX, y: baseCenterY },
234
+ radius
235
+ };
236
+ }
237
+
238
+ export { calculateChartArea, calculateLegendArea, calculateLegendDimensions, calculateRadiusAndCenter, calculateTitleArea, calculateTitleDimensions, calculateTitleLayout, normalizePadding };