@erpsquad/common 1.8.7 → 1.8.9

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 (560) hide show
  1. package/dist/_virtual/ArrowDropDown/index.esm.js +5 -0
  2. package/dist/_virtual/ArrowDropDown/index.esm.js.map +1 -0
  3. package/dist/_virtual/ArrowDropDown/index.js +2 -0
  4. package/dist/_virtual/ArrowDropDown/index.js.map +1 -0
  5. package/dist/_virtual/ArrowDropUp/index.esm.js +5 -0
  6. package/dist/_virtual/ArrowDropUp/index.esm.js.map +1 -0
  7. package/dist/_virtual/ArrowDropUp/index.js +2 -0
  8. package/dist/_virtual/ArrowDropUp/index.js.map +1 -0
  9. package/dist/components/Dashboard/dashboard-card/index.esm.js +17 -0
  10. package/dist/components/Dashboard/dashboard-card/index.esm.js.map +1 -0
  11. package/dist/components/Dashboard/dashboard-card/index.js +6 -0
  12. package/dist/components/Dashboard/dashboard-card/index.js.map +1 -0
  13. package/dist/components/Dashboard/dashboard-header/index.esm.js +68 -0
  14. package/dist/components/Dashboard/dashboard-header/index.esm.js.map +1 -0
  15. package/dist/components/Dashboard/dashboard-header/index.js +7 -0
  16. package/dist/components/Dashboard/dashboard-header/index.js.map +1 -0
  17. package/dist/components/activityLog/activity-log/index.esm.js +104 -0
  18. package/dist/components/activityLog/activity-log/index.esm.js.map +1 -0
  19. package/dist/components/activityLog/activity-log/index.js +14 -0
  20. package/dist/components/activityLog/activity-log/index.js.map +1 -0
  21. package/dist/components/charts/ChartLegends/index.esm.js +31 -0
  22. package/dist/components/charts/ChartLegends/index.esm.js.map +1 -0
  23. package/dist/components/charts/ChartLegends/index.js +5 -0
  24. package/dist/components/charts/ChartLegends/index.js.map +1 -0
  25. package/dist/components/charts/areaLinerChart/index.esm.js +110 -0
  26. package/dist/components/charts/areaLinerChart/index.esm.js.map +1 -0
  27. package/dist/components/charts/areaLinerChart/index.js +4 -0
  28. package/dist/components/charts/areaLinerChart/index.js.map +1 -0
  29. package/dist/components/charts/bar-chart/bar-chart/index.esm.js +85 -0
  30. package/dist/components/charts/bar-chart/bar-chart/index.esm.js.map +1 -0
  31. package/dist/components/charts/bar-chart/bar-chart/index.js +2 -0
  32. package/dist/components/charts/bar-chart/bar-chart/index.js.map +1 -0
  33. package/dist/components/charts/barChart/barChart/index.esm.js +147 -0
  34. package/dist/components/charts/barChart/barChart/index.esm.js.map +1 -0
  35. package/dist/components/charts/barChart/barChart/index.js +2 -0
  36. package/dist/components/charts/barChart/barChart/index.js.map +1 -0
  37. package/dist/components/charts/barLineChart/barLinechart/index.esm.js +193 -0
  38. package/dist/components/charts/barLineChart/barLinechart/index.esm.js.map +1 -0
  39. package/dist/components/charts/barLineChart/barLinechart/index.js +11 -0
  40. package/dist/components/charts/barLineChart/barLinechart/index.js.map +1 -0
  41. package/dist/components/charts/donut-chart/donut-chart/index.esm.js +85 -0
  42. package/dist/components/charts/donut-chart/donut-chart/index.esm.js.map +1 -0
  43. package/dist/components/charts/donut-chart/donut-chart/index.js +6 -0
  44. package/dist/components/charts/donut-chart/donut-chart/index.js.map +1 -0
  45. package/dist/components/charts/donutChart/DonutChart/index.esm.js +96 -0
  46. package/dist/components/charts/donutChart/DonutChart/index.esm.js.map +1 -0
  47. package/dist/components/charts/donutChart/DonutChart/index.js +5 -0
  48. package/dist/components/charts/donutChart/DonutChart/index.js.map +1 -0
  49. package/dist/components/charts/groupBarChart/GroupBarChart/index.esm.js +92 -0
  50. package/dist/components/charts/groupBarChart/GroupBarChart/index.esm.js.map +1 -0
  51. package/dist/components/charts/groupBarChart/GroupBarChart/index.js +2 -0
  52. package/dist/components/charts/groupBarChart/GroupBarChart/index.js.map +1 -0
  53. package/dist/components/charts/line-chart/area-lineChart/index.esm.js +55 -0
  54. package/dist/components/charts/line-chart/area-lineChart/index.esm.js.map +1 -0
  55. package/dist/components/charts/line-chart/area-lineChart/index.js +2 -0
  56. package/dist/components/charts/line-chart/area-lineChart/index.js.map +1 -0
  57. package/dist/components/charts/line-chart/line-chart/index.esm.js +108 -0
  58. package/dist/components/charts/line-chart/line-chart/index.esm.js.map +1 -0
  59. package/dist/components/charts/line-chart/line-chart/index.js +2 -0
  60. package/dist/components/charts/line-chart/line-chart/index.js.map +1 -0
  61. package/dist/components/charts/multiLineChart/multi-line-chart/index.esm.js +100 -0
  62. package/dist/components/charts/multiLineChart/multi-line-chart/index.esm.js.map +1 -0
  63. package/dist/components/charts/multiLineChart/multi-line-chart/index.js +2 -0
  64. package/dist/components/charts/multiLineChart/multi-line-chart/index.js.map +1 -0
  65. package/dist/components/filter/filter/index.esm.js +1 -1
  66. package/dist/components/filter/filter/index.js +6 -6
  67. package/dist/components/grid/custom-grid-card/custom-grid-card/index.esm.js +131 -0
  68. package/dist/components/grid/custom-grid-card/custom-grid-card/index.esm.js.map +1 -0
  69. package/dist/components/grid/custom-grid-card/custom-grid-card/index.js +11 -0
  70. package/dist/components/grid/custom-grid-card/custom-grid-card/index.js.map +1 -0
  71. package/dist/components/grid/grid-card/grid-card/index.esm.js +102 -0
  72. package/dist/components/grid/grid-card/grid-card/index.esm.js.map +1 -0
  73. package/dist/components/grid/grid-card/grid-card/index.js +12 -0
  74. package/dist/components/grid/grid-card/grid-card/index.js.map +1 -0
  75. package/dist/components/grid/grid-wrapper/grid-wrapper/index.esm.js +17 -0
  76. package/dist/components/grid/grid-wrapper/grid-wrapper/index.esm.js.map +1 -0
  77. package/dist/components/grid/grid-wrapper/grid-wrapper/index.js +5 -0
  78. package/dist/components/grid/grid-wrapper/grid-wrapper/index.js.map +1 -0
  79. package/dist/components/index.d.ts +54 -12
  80. package/dist/components/index.esm.js +479 -431
  81. package/dist/components/index.esm.js.map +1 -1
  82. package/dist/components/index.js +1 -1
  83. package/dist/components/material-table/material-table/index.esm.js +2 -2
  84. package/dist/components/material-table/material-table/index.js +4 -4
  85. package/dist/components/mulitline/multiline/index.esm.js +62 -0
  86. package/dist/components/mulitline/multiline/index.esm.js.map +1 -0
  87. package/dist/components/mulitline/multiline/index.js +13 -0
  88. package/dist/components/mulitline/multiline/index.js.map +1 -0
  89. package/dist/components/reports/dynamic-report/dynamic-report/index.esm.js +472 -0
  90. package/dist/components/reports/dynamic-report/dynamic-report/index.esm.js.map +1 -0
  91. package/dist/components/reports/dynamic-report/dynamic-report/index.js +8 -0
  92. package/dist/components/reports/dynamic-report/dynamic-report/index.js.map +1 -0
  93. package/dist/components/reports/dynamic-report/dynamic-rows/index.esm.js +201 -0
  94. package/dist/components/reports/dynamic-report/dynamic-rows/index.esm.js.map +1 -0
  95. package/dist/components/reports/dynamic-report/dynamic-rows/index.js +6 -0
  96. package/dist/components/reports/dynamic-report/dynamic-rows/index.js.map +1 -0
  97. package/dist/components/rfq-response/item-response-details/index.esm.js +91 -0
  98. package/dist/components/rfq-response/item-response-details/index.esm.js.map +1 -0
  99. package/dist/components/rfq-response/item-response-details/index.js +9 -0
  100. package/dist/components/rfq-response/item-response-details/index.js.map +1 -0
  101. package/dist/constants/index.d.ts +4 -1
  102. package/dist/constants/index.esm.js +2 -0
  103. package/dist/constants/index.esm.js.map +1 -1
  104. package/dist/constants/index.js +1 -1
  105. package/dist/index.esm.js +571 -523
  106. package/dist/index.esm.js.map +1 -1
  107. package/dist/index.js +1 -1
  108. package/dist/node_modules/@mui/icons-material/ArrowDropDown/index.esm.js +18 -0
  109. package/dist/node_modules/@mui/icons-material/ArrowDropDown/index.esm.js.map +1 -0
  110. package/dist/node_modules/@mui/icons-material/ArrowDropDown/index.js +2 -0
  111. package/dist/node_modules/@mui/icons-material/ArrowDropDown/index.js.map +1 -0
  112. package/dist/node_modules/@mui/icons-material/ArrowDropUp/index.esm.js +18 -0
  113. package/dist/node_modules/@mui/icons-material/ArrowDropUp/index.esm.js.map +1 -0
  114. package/dist/node_modules/@mui/icons-material/ArrowDropUp/index.js +2 -0
  115. package/dist/node_modules/@mui/icons-material/ArrowDropUp/index.js.map +1 -0
  116. package/dist/node_modules/d3-array/src/ascending/index.esm.js +7 -0
  117. package/dist/node_modules/d3-array/src/ascending/index.esm.js.map +1 -0
  118. package/dist/node_modules/d3-array/src/ascending/index.js +2 -0
  119. package/dist/node_modules/d3-array/src/ascending/index.js.map +1 -0
  120. package/dist/node_modules/d3-array/src/bisect/index.esm.js +11 -0
  121. package/dist/node_modules/d3-array/src/bisect/index.esm.js.map +1 -0
  122. package/dist/node_modules/d3-array/src/bisect/index.js +2 -0
  123. package/dist/node_modules/d3-array/src/bisect/index.js.map +1 -0
  124. package/dist/node_modules/d3-array/src/bisector/index.esm.js +48 -0
  125. package/dist/node_modules/d3-array/src/bisector/index.esm.js.map +1 -0
  126. package/dist/node_modules/d3-array/src/bisector/index.js +2 -0
  127. package/dist/node_modules/d3-array/src/bisector/index.js.map +1 -0
  128. package/dist/node_modules/d3-array/src/descending/index.esm.js +7 -0
  129. package/dist/node_modules/d3-array/src/descending/index.esm.js.map +1 -0
  130. package/dist/node_modules/d3-array/src/descending/index.js +2 -0
  131. package/dist/node_modules/d3-array/src/descending/index.js.map +1 -0
  132. package/dist/node_modules/d3-array/src/max/index.esm.js +22 -0
  133. package/dist/node_modules/d3-array/src/max/index.esm.js.map +1 -0
  134. package/dist/node_modules/d3-array/src/max/index.js +2 -0
  135. package/dist/node_modules/d3-array/src/max/index.js.map +1 -0
  136. package/dist/node_modules/d3-array/src/min/index.esm.js +22 -0
  137. package/dist/node_modules/d3-array/src/min/index.esm.js.map +1 -0
  138. package/dist/node_modules/d3-array/src/min/index.js +2 -0
  139. package/dist/node_modules/d3-array/src/min/index.js.map +1 -0
  140. package/dist/node_modules/d3-array/src/number/index.esm.js +7 -0
  141. package/dist/node_modules/d3-array/src/number/index.esm.js.map +1 -0
  142. package/dist/node_modules/d3-array/src/number/index.js +2 -0
  143. package/dist/node_modules/d3-array/src/number/index.js.map +1 -0
  144. package/dist/node_modules/d3-array/src/range/index.esm.js +12 -0
  145. package/dist/node_modules/d3-array/src/range/index.esm.js.map +1 -0
  146. package/dist/node_modules/d3-array/src/range/index.js +2 -0
  147. package/dist/node_modules/d3-array/src/range/index.js.map +1 -0
  148. package/dist/node_modules/d3-array/src/ticks/index.esm.js +52 -0
  149. package/dist/node_modules/d3-array/src/ticks/index.esm.js.map +1 -0
  150. package/dist/node_modules/d3-array/src/ticks/index.js +2 -0
  151. package/dist/node_modules/d3-array/src/ticks/index.js.map +1 -0
  152. package/dist/node_modules/d3-axis/src/axis/index.esm.js +99 -0
  153. package/dist/node_modules/d3-axis/src/axis/index.esm.js.map +1 -0
  154. package/dist/node_modules/d3-axis/src/axis/index.js +2 -0
  155. package/dist/node_modules/d3-axis/src/axis/index.js.map +1 -0
  156. package/dist/node_modules/d3-axis/src/identity/index.esm.js +7 -0
  157. package/dist/node_modules/d3-axis/src/identity/index.esm.js.map +1 -0
  158. package/dist/node_modules/d3-axis/src/identity/index.js +2 -0
  159. package/dist/node_modules/d3-axis/src/identity/index.js.map +1 -0
  160. package/dist/node_modules/d3-color/src/color/index.esm.js +339 -0
  161. package/dist/node_modules/d3-color/src/color/index.esm.js.map +1 -0
  162. package/dist/node_modules/d3-color/src/color/index.js +2 -0
  163. package/dist/node_modules/d3-color/src/color/index.js.map +1 -0
  164. package/dist/node_modules/d3-color/src/define/index.esm.js +14 -0
  165. package/dist/node_modules/d3-color/src/define/index.esm.js.map +1 -0
  166. package/dist/node_modules/d3-color/src/define/index.js +2 -0
  167. package/dist/node_modules/d3-color/src/define/index.js.map +1 -0
  168. package/dist/node_modules/d3-format/src/defaultLocale/index.esm.js +21 -0
  169. package/dist/node_modules/d3-format/src/defaultLocale/index.esm.js.map +1 -0
  170. package/dist/node_modules/d3-format/src/defaultLocale/index.js +2 -0
  171. package/dist/node_modules/d3-format/src/defaultLocale/index.js.map +1 -0
  172. package/dist/node_modules/d3-format/src/exponent/index.esm.js +8 -0
  173. package/dist/node_modules/d3-format/src/exponent/index.esm.js.map +1 -0
  174. package/dist/node_modules/d3-format/src/exponent/index.js +2 -0
  175. package/dist/node_modules/d3-format/src/exponent/index.js.map +1 -0
  176. package/dist/node_modules/d3-format/src/formatDecimal/index.esm.js +16 -0
  177. package/dist/node_modules/d3-format/src/formatDecimal/index.esm.js.map +1 -0
  178. package/dist/node_modules/d3-format/src/formatDecimal/index.js +2 -0
  179. package/dist/node_modules/d3-format/src/formatDecimal/index.js.map +1 -0
  180. package/dist/node_modules/d3-format/src/formatGroup/index.esm.js +16 -0
  181. package/dist/node_modules/d3-format/src/formatGroup/index.esm.js.map +1 -0
  182. package/dist/node_modules/d3-format/src/formatGroup/index.js +2 -0
  183. package/dist/node_modules/d3-format/src/formatGroup/index.js.map +1 -0
  184. package/dist/node_modules/d3-format/src/formatNumerals/index.esm.js +11 -0
  185. package/dist/node_modules/d3-format/src/formatNumerals/index.esm.js.map +1 -0
  186. package/dist/node_modules/d3-format/src/formatNumerals/index.js +2 -0
  187. package/dist/node_modules/d3-format/src/formatNumerals/index.js.map +1 -0
  188. package/dist/node_modules/d3-format/src/formatPrefixAuto/index.esm.js +13 -0
  189. package/dist/node_modules/d3-format/src/formatPrefixAuto/index.esm.js.map +1 -0
  190. package/dist/node_modules/d3-format/src/formatPrefixAuto/index.js +2 -0
  191. package/dist/node_modules/d3-format/src/formatPrefixAuto/index.js.map +1 -0
  192. package/dist/node_modules/d3-format/src/formatRounded/index.esm.js +11 -0
  193. package/dist/node_modules/d3-format/src/formatRounded/index.esm.js.map +1 -0
  194. package/dist/node_modules/d3-format/src/formatRounded/index.js +2 -0
  195. package/dist/node_modules/d3-format/src/formatRounded/index.js.map +1 -0
  196. package/dist/node_modules/d3-format/src/formatSpecifier/index.esm.js +38 -0
  197. package/dist/node_modules/d3-format/src/formatSpecifier/index.esm.js.map +1 -0
  198. package/dist/node_modules/d3-format/src/formatSpecifier/index.js +2 -0
  199. package/dist/node_modules/d3-format/src/formatSpecifier/index.js.map +1 -0
  200. package/dist/node_modules/d3-format/src/formatTrim/index.esm.js +22 -0
  201. package/dist/node_modules/d3-format/src/formatTrim/index.esm.js.map +1 -0
  202. package/dist/node_modules/d3-format/src/formatTrim/index.js +2 -0
  203. package/dist/node_modules/d3-format/src/formatTrim/index.js.map +1 -0
  204. package/dist/node_modules/d3-format/src/formatTypes/index.esm.js +22 -0
  205. package/dist/node_modules/d3-format/src/formatTypes/index.esm.js.map +1 -0
  206. package/dist/node_modules/d3-format/src/formatTypes/index.js +2 -0
  207. package/dist/node_modules/d3-format/src/formatTypes/index.js.map +1 -0
  208. package/dist/node_modules/d3-format/src/identity/index.esm.js +7 -0
  209. package/dist/node_modules/d3-format/src/identity/index.esm.js.map +1 -0
  210. package/dist/node_modules/d3-format/src/identity/index.js +2 -0
  211. package/dist/node_modules/d3-format/src/identity/index.js.map +1 -0
  212. package/dist/node_modules/d3-format/src/locale/index.esm.js +83 -0
  213. package/dist/node_modules/d3-format/src/locale/index.esm.js.map +1 -0
  214. package/dist/node_modules/d3-format/src/locale/index.js +2 -0
  215. package/dist/node_modules/d3-format/src/locale/index.js.map +1 -0
  216. package/dist/node_modules/d3-format/src/precisionFixed/index.esm.js +8 -0
  217. package/dist/node_modules/d3-format/src/precisionFixed/index.esm.js.map +1 -0
  218. package/dist/node_modules/d3-format/src/precisionFixed/index.js +2 -0
  219. package/dist/node_modules/d3-format/src/precisionFixed/index.js.map +1 -0
  220. package/dist/node_modules/d3-format/src/precisionPrefix/index.esm.js +8 -0
  221. package/dist/node_modules/d3-format/src/precisionPrefix/index.esm.js.map +1 -0
  222. package/dist/node_modules/d3-format/src/precisionPrefix/index.js +2 -0
  223. package/dist/node_modules/d3-format/src/precisionPrefix/index.js.map +1 -0
  224. package/dist/node_modules/d3-format/src/precisionRound/index.esm.js +9 -0
  225. package/dist/node_modules/d3-format/src/precisionRound/index.esm.js.map +1 -0
  226. package/dist/node_modules/d3-format/src/precisionRound/index.js +2 -0
  227. package/dist/node_modules/d3-format/src/precisionRound/index.js.map +1 -0
  228. package/dist/node_modules/d3-interpolate/src/array/index.esm.js +14 -0
  229. package/dist/node_modules/d3-interpolate/src/array/index.esm.js.map +1 -0
  230. package/dist/node_modules/d3-interpolate/src/array/index.js +2 -0
  231. package/dist/node_modules/d3-interpolate/src/array/index.js.map +1 -0
  232. package/dist/node_modules/d3-interpolate/src/color/index.esm.js +25 -0
  233. package/dist/node_modules/d3-interpolate/src/color/index.esm.js.map +1 -0
  234. package/dist/node_modules/d3-interpolate/src/color/index.js +2 -0
  235. package/dist/node_modules/d3-interpolate/src/color/index.js.map +1 -0
  236. package/dist/node_modules/d3-interpolate/src/constant/index.esm.js +5 -0
  237. package/dist/node_modules/d3-interpolate/src/constant/index.esm.js.map +1 -0
  238. package/dist/node_modules/d3-interpolate/src/constant/index.js +2 -0
  239. package/dist/node_modules/d3-interpolate/src/constant/index.js.map +1 -0
  240. package/dist/node_modules/d3-interpolate/src/date/index.esm.js +10 -0
  241. package/dist/node_modules/d3-interpolate/src/date/index.esm.js.map +1 -0
  242. package/dist/node_modules/d3-interpolate/src/date/index.js +2 -0
  243. package/dist/node_modules/d3-interpolate/src/date/index.js.map +1 -0
  244. package/dist/node_modules/d3-interpolate/src/number/index.esm.js +9 -0
  245. package/dist/node_modules/d3-interpolate/src/number/index.esm.js.map +1 -0
  246. package/dist/node_modules/d3-interpolate/src/number/index.js +2 -0
  247. package/dist/node_modules/d3-interpolate/src/number/index.js.map +1 -0
  248. package/dist/node_modules/d3-interpolate/src/numberArray/index.esm.js +16 -0
  249. package/dist/node_modules/d3-interpolate/src/numberArray/index.esm.js.map +1 -0
  250. package/dist/node_modules/d3-interpolate/src/numberArray/index.js +2 -0
  251. package/dist/node_modules/d3-interpolate/src/numberArray/index.js.map +1 -0
  252. package/dist/node_modules/d3-interpolate/src/object/index.esm.js +21 -0
  253. package/dist/node_modules/d3-interpolate/src/object/index.esm.js.map +1 -0
  254. package/dist/node_modules/d3-interpolate/src/object/index.js +2 -0
  255. package/dist/node_modules/d3-interpolate/src/object/index.js.map +1 -0
  256. package/dist/node_modules/d3-interpolate/src/rgb/index.esm.js +21 -0
  257. package/dist/node_modules/d3-interpolate/src/rgb/index.esm.js.map +1 -0
  258. package/dist/node_modules/d3-interpolate/src/rgb/index.js +2 -0
  259. package/dist/node_modules/d3-interpolate/src/rgb/index.js.map +1 -0
  260. package/dist/node_modules/d3-interpolate/src/round/index.esm.js +9 -0
  261. package/dist/node_modules/d3-interpolate/src/round/index.esm.js.map +1 -0
  262. package/dist/node_modules/d3-interpolate/src/round/index.js +2 -0
  263. package/dist/node_modules/d3-interpolate/src/round/index.js.map +1 -0
  264. package/dist/node_modules/d3-interpolate/src/string/index.esm.js +44 -0
  265. package/dist/node_modules/d3-interpolate/src/string/index.esm.js.map +1 -0
  266. package/dist/node_modules/d3-interpolate/src/string/index.js +2 -0
  267. package/dist/node_modules/d3-interpolate/src/string/index.js.map +1 -0
  268. package/dist/node_modules/d3-interpolate/src/value/index.esm.js +17 -0
  269. package/dist/node_modules/d3-interpolate/src/value/index.esm.js.map +1 -0
  270. package/dist/node_modules/d3-interpolate/src/value/index.js +2 -0
  271. package/dist/node_modules/d3-interpolate/src/value/index.js.map +1 -0
  272. package/dist/node_modules/d3-path/src/path/index.esm.js +89 -0
  273. package/dist/node_modules/d3-path/src/path/index.esm.js.map +1 -0
  274. package/dist/node_modules/d3-path/src/path/index.js +2 -0
  275. package/dist/node_modules/d3-path/src/path/index.js.map +1 -0
  276. package/dist/node_modules/d3-scale/src/band/index.esm.js +71 -0
  277. package/dist/node_modules/d3-scale/src/band/index.esm.js.map +1 -0
  278. package/dist/node_modules/d3-scale/src/band/index.js +2 -0
  279. package/dist/node_modules/d3-scale/src/band/index.js.map +1 -0
  280. package/dist/node_modules/d3-scale/src/constant/index.esm.js +9 -0
  281. package/dist/node_modules/d3-scale/src/constant/index.esm.js.map +1 -0
  282. package/dist/node_modules/d3-scale/src/constant/index.js +2 -0
  283. package/dist/node_modules/d3-scale/src/constant/index.js.map +1 -0
  284. package/dist/node_modules/d3-scale/src/continuous/index.esm.js +96 -0
  285. package/dist/node_modules/d3-scale/src/continuous/index.esm.js.map +1 -0
  286. package/dist/node_modules/d3-scale/src/continuous/index.js +2 -0
  287. package/dist/node_modules/d3-scale/src/continuous/index.js.map +1 -0
  288. package/dist/node_modules/d3-scale/src/init/index.esm.js +17 -0
  289. package/dist/node_modules/d3-scale/src/init/index.esm.js.map +1 -0
  290. package/dist/node_modules/d3-scale/src/init/index.js +2 -0
  291. package/dist/node_modules/d3-scale/src/init/index.js.map +1 -0
  292. package/dist/node_modules/d3-scale/src/linear/index.esm.js +62 -0
  293. package/dist/node_modules/d3-scale/src/linear/index.esm.js.map +1 -0
  294. package/dist/node_modules/d3-scale/src/linear/index.js +2 -0
  295. package/dist/node_modules/d3-scale/src/linear/index.js.map +1 -0
  296. package/dist/node_modules/d3-scale/src/number/index.esm.js +7 -0
  297. package/dist/node_modules/d3-scale/src/number/index.esm.js.map +1 -0
  298. package/dist/node_modules/d3-scale/src/number/index.js +2 -0
  299. package/dist/node_modules/d3-scale/src/number/index.js.map +1 -0
  300. package/dist/node_modules/d3-scale/src/ordinal/index.esm.js +39 -0
  301. package/dist/node_modules/d3-scale/src/ordinal/index.esm.js.map +1 -0
  302. package/dist/node_modules/d3-scale/src/ordinal/index.js +2 -0
  303. package/dist/node_modules/d3-scale/src/ordinal/index.js.map +1 -0
  304. package/dist/node_modules/d3-scale/src/tickFormat/index.esm.js +35 -0
  305. package/dist/node_modules/d3-scale/src/tickFormat/index.esm.js.map +1 -0
  306. package/dist/node_modules/d3-scale/src/tickFormat/index.js +2 -0
  307. package/dist/node_modules/d3-scale/src/tickFormat/index.js.map +1 -0
  308. package/dist/node_modules/d3-selection/src/array/index.esm.js +7 -0
  309. package/dist/node_modules/d3-selection/src/array/index.esm.js.map +1 -0
  310. package/dist/node_modules/d3-selection/src/array/index.js +2 -0
  311. package/dist/node_modules/d3-selection/src/array/index.js.map +1 -0
  312. package/dist/node_modules/d3-selection/src/constant/index.esm.js +9 -0
  313. package/dist/node_modules/d3-selection/src/constant/index.esm.js.map +1 -0
  314. package/dist/node_modules/d3-selection/src/constant/index.js +2 -0
  315. package/dist/node_modules/d3-selection/src/constant/index.js.map +1 -0
  316. package/dist/node_modules/d3-selection/src/creator/index.esm.js +21 -0
  317. package/dist/node_modules/d3-selection/src/creator/index.esm.js.map +1 -0
  318. package/dist/node_modules/d3-selection/src/creator/index.js +2 -0
  319. package/dist/node_modules/d3-selection/src/creator/index.js.map +1 -0
  320. package/dist/node_modules/d3-selection/src/matcher/index.esm.js +15 -0
  321. package/dist/node_modules/d3-selection/src/matcher/index.esm.js.map +1 -0
  322. package/dist/node_modules/d3-selection/src/matcher/index.js +2 -0
  323. package/dist/node_modules/d3-selection/src/matcher/index.js.map +1 -0
  324. package/dist/node_modules/d3-selection/src/namespace/index.esm.js +10 -0
  325. package/dist/node_modules/d3-selection/src/namespace/index.esm.js.map +1 -0
  326. package/dist/node_modules/d3-selection/src/namespace/index.js +2 -0
  327. package/dist/node_modules/d3-selection/src/namespace/index.js.map +1 -0
  328. package/dist/node_modules/d3-selection/src/namespaces/index.esm.js +13 -0
  329. package/dist/node_modules/d3-selection/src/namespaces/index.esm.js.map +1 -0
  330. package/dist/node_modules/d3-selection/src/namespaces/index.js +2 -0
  331. package/dist/node_modules/d3-selection/src/namespaces/index.js.map +1 -0
  332. package/dist/node_modules/d3-selection/src/pointer/index.esm.js +23 -0
  333. package/dist/node_modules/d3-selection/src/pointer/index.esm.js.map +1 -0
  334. package/dist/node_modules/d3-selection/src/pointer/index.js +2 -0
  335. package/dist/node_modules/d3-selection/src/pointer/index.js.map +1 -0
  336. package/dist/node_modules/d3-selection/src/select/index.esm.js +8 -0
  337. package/dist/node_modules/d3-selection/src/select/index.esm.js.map +1 -0
  338. package/dist/node_modules/d3-selection/src/select/index.js +2 -0
  339. package/dist/node_modules/d3-selection/src/select/index.js.map +1 -0
  340. package/dist/node_modules/d3-selection/src/selection/append/index.esm.js +11 -0
  341. package/dist/node_modules/d3-selection/src/selection/append/index.esm.js.map +1 -0
  342. package/dist/node_modules/d3-selection/src/selection/append/index.js +2 -0
  343. package/dist/node_modules/d3-selection/src/selection/append/index.js.map +1 -0
  344. package/dist/node_modules/d3-selection/src/selection/attr/index.esm.js +47 -0
  345. package/dist/node_modules/d3-selection/src/selection/attr/index.esm.js.map +1 -0
  346. package/dist/node_modules/d3-selection/src/selection/attr/index.js +2 -0
  347. package/dist/node_modules/d3-selection/src/selection/attr/index.js.map +1 -0
  348. package/dist/node_modules/d3-selection/src/selection/call/index.esm.js +10 -0
  349. package/dist/node_modules/d3-selection/src/selection/call/index.esm.js.map +1 -0
  350. package/dist/node_modules/d3-selection/src/selection/call/index.js +2 -0
  351. package/dist/node_modules/d3-selection/src/selection/call/index.js.map +1 -0
  352. package/dist/node_modules/d3-selection/src/selection/classed/index.esm.js +65 -0
  353. package/dist/node_modules/d3-selection/src/selection/classed/index.esm.js.map +1 -0
  354. package/dist/node_modules/d3-selection/src/selection/classed/index.js +2 -0
  355. package/dist/node_modules/d3-selection/src/selection/classed/index.js.map +1 -0
  356. package/dist/node_modules/d3-selection/src/selection/clone/index.esm.js +15 -0
  357. package/dist/node_modules/d3-selection/src/selection/clone/index.esm.js.map +1 -0
  358. package/dist/node_modules/d3-selection/src/selection/clone/index.js +2 -0
  359. package/dist/node_modules/d3-selection/src/selection/clone/index.js.map +1 -0
  360. package/dist/node_modules/d3-selection/src/selection/data/index.esm.js +77 -0
  361. package/dist/node_modules/d3-selection/src/selection/data/index.esm.js.map +1 -0
  362. package/dist/node_modules/d3-selection/src/selection/data/index.js +2 -0
  363. package/dist/node_modules/d3-selection/src/selection/data/index.js.map +1 -0
  364. package/dist/node_modules/d3-selection/src/selection/datum/index.esm.js +7 -0
  365. package/dist/node_modules/d3-selection/src/selection/datum/index.esm.js.map +1 -0
  366. package/dist/node_modules/d3-selection/src/selection/datum/index.js +2 -0
  367. package/dist/node_modules/d3-selection/src/selection/datum/index.js.map +1 -0
  368. package/dist/node_modules/d3-selection/src/selection/dispatch/index.esm.js +29 -0
  369. package/dist/node_modules/d3-selection/src/selection/dispatch/index.esm.js.map +1 -0
  370. package/dist/node_modules/d3-selection/src/selection/dispatch/index.js +2 -0
  371. package/dist/node_modules/d3-selection/src/selection/dispatch/index.js.map +1 -0
  372. package/dist/node_modules/d3-selection/src/selection/each/index.esm.js +12 -0
  373. package/dist/node_modules/d3-selection/src/selection/each/index.esm.js.map +1 -0
  374. package/dist/node_modules/d3-selection/src/selection/each/index.js +2 -0
  375. package/dist/node_modules/d3-selection/src/selection/each/index.js.map +1 -0
  376. package/dist/node_modules/d3-selection/src/selection/empty/index.esm.js +7 -0
  377. package/dist/node_modules/d3-selection/src/selection/empty/index.esm.js.map +1 -0
  378. package/dist/node_modules/d3-selection/src/selection/empty/index.js +2 -0
  379. package/dist/node_modules/d3-selection/src/selection/empty/index.js.map +1 -0
  380. package/dist/node_modules/d3-selection/src/selection/enter/index.esm.js +32 -0
  381. package/dist/node_modules/d3-selection/src/selection/enter/index.esm.js.map +1 -0
  382. package/dist/node_modules/d3-selection/src/selection/enter/index.js +2 -0
  383. package/dist/node_modules/d3-selection/src/selection/enter/index.js.map +1 -0
  384. package/dist/node_modules/d3-selection/src/selection/exit/index.esm.js +9 -0
  385. package/dist/node_modules/d3-selection/src/selection/exit/index.esm.js.map +1 -0
  386. package/dist/node_modules/d3-selection/src/selection/exit/index.js +2 -0
  387. package/dist/node_modules/d3-selection/src/selection/exit/index.js.map +1 -0
  388. package/dist/node_modules/d3-selection/src/selection/filter/index.esm.js +17 -0
  389. package/dist/node_modules/d3-selection/src/selection/filter/index.esm.js.map +1 -0
  390. package/dist/node_modules/d3-selection/src/selection/filter/index.js +2 -0
  391. package/dist/node_modules/d3-selection/src/selection/filter/index.js.map +1 -0
  392. package/dist/node_modules/d3-selection/src/selection/html/index.esm.js +21 -0
  393. package/dist/node_modules/d3-selection/src/selection/html/index.esm.js.map +1 -0
  394. package/dist/node_modules/d3-selection/src/selection/html/index.js +2 -0
  395. package/dist/node_modules/d3-selection/src/selection/html/index.js.map +1 -0
  396. package/dist/node_modules/d3-selection/src/selection/index/index.esm.js +85 -0
  397. package/dist/node_modules/d3-selection/src/selection/index/index.esm.js.map +1 -0
  398. package/dist/node_modules/d3-selection/src/selection/index/index.js +2 -0
  399. package/dist/node_modules/d3-selection/src/selection/index/index.js.map +1 -0
  400. package/dist/node_modules/d3-selection/src/selection/insert/index.esm.js +15 -0
  401. package/dist/node_modules/d3-selection/src/selection/insert/index.esm.js.map +1 -0
  402. package/dist/node_modules/d3-selection/src/selection/insert/index.js +2 -0
  403. package/dist/node_modules/d3-selection/src/selection/insert/index.js.map +1 -0
  404. package/dist/node_modules/d3-selection/src/selection/iterator/index.esm.js +11 -0
  405. package/dist/node_modules/d3-selection/src/selection/iterator/index.esm.js.map +1 -0
  406. package/dist/node_modules/d3-selection/src/selection/iterator/index.js +2 -0
  407. package/dist/node_modules/d3-selection/src/selection/iterator/index.js.map +1 -0
  408. package/dist/node_modules/d3-selection/src/selection/join/index.esm.js +20 -0
  409. package/dist/node_modules/d3-selection/src/selection/join/index.esm.js.map +1 -0
  410. package/dist/node_modules/d3-selection/src/selection/join/index.js +2 -0
  411. package/dist/node_modules/d3-selection/src/selection/join/index.js.map +1 -0
  412. package/dist/node_modules/d3-selection/src/selection/lower/index.esm.js +10 -0
  413. package/dist/node_modules/d3-selection/src/selection/lower/index.esm.js.map +1 -0
  414. package/dist/node_modules/d3-selection/src/selection/lower/index.js +2 -0
  415. package/dist/node_modules/d3-selection/src/selection/lower/index.js.map +1 -0
  416. package/dist/node_modules/d3-selection/src/selection/merge/index.esm.js +19 -0
  417. package/dist/node_modules/d3-selection/src/selection/merge/index.esm.js.map +1 -0
  418. package/dist/node_modules/d3-selection/src/selection/merge/index.js +2 -0
  419. package/dist/node_modules/d3-selection/src/selection/merge/index.js.map +1 -0
  420. package/dist/node_modules/d3-selection/src/selection/node/index.esm.js +13 -0
  421. package/dist/node_modules/d3-selection/src/selection/node/index.esm.js.map +1 -0
  422. package/dist/node_modules/d3-selection/src/selection/node/index.js +2 -0
  423. package/dist/node_modules/d3-selection/src/selection/node/index.js.map +1 -0
  424. package/dist/node_modules/d3-selection/src/selection/nodes/index.esm.js +7 -0
  425. package/dist/node_modules/d3-selection/src/selection/nodes/index.esm.js.map +1 -0
  426. package/dist/node_modules/d3-selection/src/selection/nodes/index.js +2 -0
  427. package/dist/node_modules/d3-selection/src/selection/nodes/index.js.map +1 -0
  428. package/dist/node_modules/d3-selection/src/selection/on/index.esm.js +65 -0
  429. package/dist/node_modules/d3-selection/src/selection/on/index.esm.js.map +1 -0
  430. package/dist/node_modules/d3-selection/src/selection/on/index.js +2 -0
  431. package/dist/node_modules/d3-selection/src/selection/on/index.js.map +1 -0
  432. package/dist/node_modules/d3-selection/src/selection/order/index.esm.js +15 -0
  433. package/dist/node_modules/d3-selection/src/selection/order/index.esm.js.map +1 -0
  434. package/dist/node_modules/d3-selection/src/selection/order/index.js +2 -0
  435. package/dist/node_modules/d3-selection/src/selection/order/index.js.map +1 -0
  436. package/dist/node_modules/d3-selection/src/selection/property/index.esm.js +24 -0
  437. package/dist/node_modules/d3-selection/src/selection/property/index.esm.js.map +1 -0
  438. package/dist/node_modules/d3-selection/src/selection/property/index.js +2 -0
  439. package/dist/node_modules/d3-selection/src/selection/property/index.js.map +1 -0
  440. package/dist/node_modules/d3-selection/src/selection/raise/index.esm.js +10 -0
  441. package/dist/node_modules/d3-selection/src/selection/raise/index.esm.js.map +1 -0
  442. package/dist/node_modules/d3-selection/src/selection/raise/index.js +2 -0
  443. package/dist/node_modules/d3-selection/src/selection/raise/index.js.map +1 -0
  444. package/dist/node_modules/d3-selection/src/selection/remove/index.esm.js +11 -0
  445. package/dist/node_modules/d3-selection/src/selection/remove/index.esm.js.map +1 -0
  446. package/dist/node_modules/d3-selection/src/selection/remove/index.js +2 -0
  447. package/dist/node_modules/d3-selection/src/selection/remove/index.js.map +1 -0
  448. package/dist/node_modules/d3-selection/src/selection/select/index.esm.js +18 -0
  449. package/dist/node_modules/d3-selection/src/selection/select/index.esm.js.map +1 -0
  450. package/dist/node_modules/d3-selection/src/selection/select/index.js +2 -0
  451. package/dist/node_modules/d3-selection/src/selection/select/index.js.map +1 -0
  452. package/dist/node_modules/d3-selection/src/selection/selectAll/index.esm.js +25 -0
  453. package/dist/node_modules/d3-selection/src/selection/selectAll/index.esm.js.map +1 -0
  454. package/dist/node_modules/d3-selection/src/selection/selectAll/index.js +2 -0
  455. package/dist/node_modules/d3-selection/src/selection/selectAll/index.js.map +1 -0
  456. package/dist/node_modules/d3-selection/src/selection/selectChild/index.esm.js +17 -0
  457. package/dist/node_modules/d3-selection/src/selection/selectChild/index.esm.js.map +1 -0
  458. package/dist/node_modules/d3-selection/src/selection/selectChild/index.js +2 -0
  459. package/dist/node_modules/d3-selection/src/selection/selectChild/index.js.map +1 -0
  460. package/dist/node_modules/d3-selection/src/selection/selectChildren/index.esm.js +17 -0
  461. package/dist/node_modules/d3-selection/src/selection/selectChildren/index.esm.js.map +1 -0
  462. package/dist/node_modules/d3-selection/src/selection/selectChildren/index.js +2 -0
  463. package/dist/node_modules/d3-selection/src/selection/selectChildren/index.js.map +1 -0
  464. package/dist/node_modules/d3-selection/src/selection/size/index.esm.js +9 -0
  465. package/dist/node_modules/d3-selection/src/selection/size/index.esm.js.map +1 -0
  466. package/dist/node_modules/d3-selection/src/selection/size/index.js +2 -0
  467. package/dist/node_modules/d3-selection/src/selection/size/index.js.map +1 -0
  468. package/dist/node_modules/d3-selection/src/selection/sort/index.esm.js +23 -0
  469. package/dist/node_modules/d3-selection/src/selection/sort/index.esm.js.map +1 -0
  470. package/dist/node_modules/d3-selection/src/selection/sort/index.js +2 -0
  471. package/dist/node_modules/d3-selection/src/selection/sort/index.js.map +1 -0
  472. package/dist/node_modules/d3-selection/src/selection/sparse/index.esm.js +7 -0
  473. package/dist/node_modules/d3-selection/src/selection/sparse/index.esm.js.map +1 -0
  474. package/dist/node_modules/d3-selection/src/selection/sparse/index.js +2 -0
  475. package/dist/node_modules/d3-selection/src/selection/sparse/index.js.map +1 -0
  476. package/dist/node_modules/d3-selection/src/selection/style/index.esm.js +29 -0
  477. package/dist/node_modules/d3-selection/src/selection/style/index.esm.js.map +1 -0
  478. package/dist/node_modules/d3-selection/src/selection/style/index.js +2 -0
  479. package/dist/node_modules/d3-selection/src/selection/style/index.js.map +1 -0
  480. package/dist/node_modules/d3-selection/src/selection/text/index.esm.js +21 -0
  481. package/dist/node_modules/d3-selection/src/selection/text/index.esm.js.map +1 -0
  482. package/dist/node_modules/d3-selection/src/selection/text/index.js +2 -0
  483. package/dist/node_modules/d3-selection/src/selection/text/index.js.map +1 -0
  484. package/dist/node_modules/d3-selection/src/selector/index.esm.js +11 -0
  485. package/dist/node_modules/d3-selection/src/selector/index.esm.js.map +1 -0
  486. package/dist/node_modules/d3-selection/src/selector/index.js +2 -0
  487. package/dist/node_modules/d3-selection/src/selector/index.js.map +1 -0
  488. package/dist/node_modules/d3-selection/src/selectorAll/index.esm.js +12 -0
  489. package/dist/node_modules/d3-selection/src/selectorAll/index.esm.js.map +1 -0
  490. package/dist/node_modules/d3-selection/src/selectorAll/index.js +2 -0
  491. package/dist/node_modules/d3-selection/src/selectorAll/index.js.map +1 -0
  492. package/dist/node_modules/d3-selection/src/sourceEvent/index.esm.js +9 -0
  493. package/dist/node_modules/d3-selection/src/sourceEvent/index.esm.js.map +1 -0
  494. package/dist/node_modules/d3-selection/src/sourceEvent/index.js +2 -0
  495. package/dist/node_modules/d3-selection/src/sourceEvent/index.js.map +1 -0
  496. package/dist/node_modules/d3-selection/src/window/index.esm.js +7 -0
  497. package/dist/node_modules/d3-selection/src/window/index.esm.js.map +1 -0
  498. package/dist/node_modules/d3-selection/src/window/index.js +2 -0
  499. package/dist/node_modules/d3-selection/src/window/index.js.map +1 -0
  500. package/dist/node_modules/d3-shape/src/arc/index.esm.js +134 -0
  501. package/dist/node_modules/d3-shape/src/arc/index.esm.js.map +1 -0
  502. package/dist/node_modules/d3-shape/src/arc/index.js +2 -0
  503. package/dist/node_modules/d3-shape/src/arc/index.js.map +1 -0
  504. package/dist/node_modules/d3-shape/src/area/index.esm.js +82 -0
  505. package/dist/node_modules/d3-shape/src/area/index.esm.js.map +1 -0
  506. package/dist/node_modules/d3-shape/src/area/index.js +2 -0
  507. package/dist/node_modules/d3-shape/src/area/index.js.map +1 -0
  508. package/dist/node_modules/d3-shape/src/array/index.esm.js +7 -0
  509. package/dist/node_modules/d3-shape/src/array/index.esm.js.map +1 -0
  510. package/dist/node_modules/d3-shape/src/array/index.js +2 -0
  511. package/dist/node_modules/d3-shape/src/array/index.js.map +1 -0
  512. package/dist/node_modules/d3-shape/src/constant/index.esm.js +9 -0
  513. package/dist/node_modules/d3-shape/src/constant/index.esm.js.map +1 -0
  514. package/dist/node_modules/d3-shape/src/constant/index.js +2 -0
  515. package/dist/node_modules/d3-shape/src/constant/index.js.map +1 -0
  516. package/dist/node_modules/d3-shape/src/curve/linear/index.esm.js +39 -0
  517. package/dist/node_modules/d3-shape/src/curve/linear/index.esm.js.map +1 -0
  518. package/dist/node_modules/d3-shape/src/curve/linear/index.js +2 -0
  519. package/dist/node_modules/d3-shape/src/curve/linear/index.js.map +1 -0
  520. package/dist/node_modules/d3-shape/src/curve/monotone/index.esm.js +76 -0
  521. package/dist/node_modules/d3-shape/src/curve/monotone/index.esm.js.map +1 -0
  522. package/dist/node_modules/d3-shape/src/curve/monotone/index.js +2 -0
  523. package/dist/node_modules/d3-shape/src/curve/monotone/index.js.map +1 -0
  524. package/dist/node_modules/d3-shape/src/descending/index.esm.js +7 -0
  525. package/dist/node_modules/d3-shape/src/descending/index.esm.js.map +1 -0
  526. package/dist/node_modules/d3-shape/src/descending/index.js +2 -0
  527. package/dist/node_modules/d3-shape/src/descending/index.js.map +1 -0
  528. package/dist/node_modules/d3-shape/src/identity/index.esm.js +7 -0
  529. package/dist/node_modules/d3-shape/src/identity/index.esm.js.map +1 -0
  530. package/dist/node_modules/d3-shape/src/identity/index.js +2 -0
  531. package/dist/node_modules/d3-shape/src/identity/index.js.map +1 -0
  532. package/dist/node_modules/d3-shape/src/line/index.esm.js +42 -0
  533. package/dist/node_modules/d3-shape/src/line/index.esm.js.map +1 -0
  534. package/dist/node_modules/d3-shape/src/line/index.js +2 -0
  535. package/dist/node_modules/d3-shape/src/line/index.js.map +1 -0
  536. package/dist/node_modules/d3-shape/src/math/index.esm.js +33 -0
  537. package/dist/node_modules/d3-shape/src/math/index.esm.js.map +1 -0
  538. package/dist/node_modules/d3-shape/src/math/index.js +2 -0
  539. package/dist/node_modules/d3-shape/src/math/index.js.map +1 -0
  540. package/dist/node_modules/d3-shape/src/path/index.esm.js +20 -0
  541. package/dist/node_modules/d3-shape/src/path/index.esm.js.map +1 -0
  542. package/dist/node_modules/d3-shape/src/path/index.js +2 -0
  543. package/dist/node_modules/d3-shape/src/path/index.js.map +1 -0
  544. package/dist/node_modules/d3-shape/src/pie/index.esm.js +56 -0
  545. package/dist/node_modules/d3-shape/src/pie/index.esm.js.map +1 -0
  546. package/dist/node_modules/d3-shape/src/pie/index.js +2 -0
  547. package/dist/node_modules/d3-shape/src/pie/index.js.map +1 -0
  548. package/dist/node_modules/d3-shape/src/point/index.esm.js +11 -0
  549. package/dist/node_modules/d3-shape/src/point/index.esm.js.map +1 -0
  550. package/dist/node_modules/d3-shape/src/point/index.js +2 -0
  551. package/dist/node_modules/d3-shape/src/point/index.js.map +1 -0
  552. package/dist/node_modules/internmap/src/index/index.esm.js +44 -0
  553. package/dist/node_modules/internmap/src/index/index.esm.js.map +1 -0
  554. package/dist/node_modules/internmap/src/index/index.js +2 -0
  555. package/dist/node_modules/internmap/src/index/index.js.map +1 -0
  556. package/dist/style.css +2 -2
  557. package/dist/views/template-editor/components/EditorHeader/index.esm.js +1 -1
  558. package/dist/views/template-editor/components/EditorHeader/index.js +3 -3
  559. package/dist/views/template-editor/utils/index.d.ts +1 -1
  560. package/package.json +1 -1
@@ -0,0 +1,11 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=;/* empty css */;/* empty css */var n=,/* empty css */s=,/* empty css */l=,/* empty css */a=,/* empty css */d=,/* empty css */o=,/* empty css */i=,/* empty css */c=,/* empty css */u=,/* empty css */h=,/* empty css */f=;/* empty css */exports.default=({data:p,height:x=400,margin:m={top:20,right:30,bottom:30,left:50},bars:y,lines:g,line:j=!0,showGrid:v=!0,barColors:b,lineColors:k})=>{var w;const q=t.useRef(null),_=t.useRef(null),$=t.useRef(null),[C,R]=t.useState(null),[A,E]=t.useState(0),L=e=>c.format(".2s")(e).replace("k","K"),M=p.length>y.length,B=M?Math.max(60*p.length,A):A;return t.useEffect(()=>{const e=_.current,t=new ResizeObserver(e=>{if(e[0]){const t=e[0].contentRect.width;E(t)}});return e&&t.observe(e),()=>{e&&t.unobserve(e)}},[]),t.useEffect(()=>{if(0===A)return;const e=n.default(p,e=>Math.max(...y.map(t=>e[t.field]),...g.map(t=>e[t.field])))??0,t=s.default(p,e=>Math.min(...y.map(t=>e[t.field]),...g.map(t=>e[t.field])))??0,r=o.default(q.current),d=B-m.left-m.right,c=e||t?x-m.top-m.bottom:0,w=l.default().domain(p.map(e=>e.month)).range([0,d]).padding(.3),_=a.default().domain([t,e]).nice().range([c,0]);r.selectAll("*").remove();const C=r.append("g").attr("transform",`translate(${m.left},${m.top})`);C.append("g").call(i.axisLeft(_).tickFormat(L)).call(e=>e.select(".domain").remove()).select(".domain").attr("stroke","none"),C.append("g").attr("transform",`translate(0,${c})`).call(i.axisBottom(w)).selectAll(".tick text").attr("text-anchor","middle").select(".domain").attr("stroke","none"),v&&C.selectAll(".grid-line").data(_.ticks()).enter().append("line").attr("class","grid-line").attr("x1",0).attr("x2",d).attr("y1",e=>_(e)).attr("y2",e=>_(e)).style("stroke","#ddd").style("stroke-dasharray","8,8").style("stroke-width",1),j&&C.selectAll(".grid-line-2").data(_.ticks()).enter().append("line").attr("class","grid-line-2").attr("x1",0).attr("x2",d).attr("y1",e=>_(e)).attr("y2",e=>_(e)).style("stroke","#ddd").style("stroke-dasharray","8,8").style("stroke-width",1),y.forEach((e,t)=>{C.selectAll(`.bar-${e.field}`).data(p).enter().append("rect").attr("class",`bar bar-${e.field}`).attr("x",e=>w(e.month)??0).attr("y",t=>t[e.field]>=0?_(t[e.field]):_(0)).attr("rx",5).attr("ry",5).attr("width",w.bandwidth()/y.length).attr("height",t=>Math.abs(_(t[e.field])-_(0))).attr("fill",b[t]).attr("transform",`translate(${t*w.bandwidth()/y.length}, 0)`).on("mouseover",function(e,t){var r;const[n,s]=u.default(e,q.current),l=(null==(r=$.current)?void 0:r.scrollLeft)||0;R({x:n+m.left-l,y:s+m.top,content:t})}).on("mouseout",()=>R(null))}),g.forEach((e,t)=>{const r=h.default().x(e=>(w(e.month)??0)+w.bandwidth()/2).y(t=>_(t[e.field])).curve(f.monotoneX);C.append("path").datum(p).attr("fill","none").attr("stroke",k[t]).attr("stroke-width",2).attr("d",r).on("mouseover",function(t){var r;const[n]=u.default(t,q.current),s=w.domain().find(e=>{const t=w(e)??0;return n>=t&&n<=t+w.bandwidth()});if(s){const t=p.find(e=>e.month===s);if(t){const s=(null==(r=$.current)?void 0:r.scrollLeft)||0;R({x:n+m.left-s,y:_(t[e.field])+m.top,content:t})}}}).on("mouseout",()=>R(null))})},[p,A,B,j,x,m,y,g,v,b,k]),/* @__PURE__ */e.jsx("div",{ref:_,style:{width:"100%",height:"100%"},children:/* @__PURE__ */e.jsxs("div",{style:{position:"relative"},children:[
2
+ /* @__PURE__ */e.jsx("div",{ref:$,style:{width:"100%",overflowX:M?"auto":"hidden",overflowY:"hidden"},children:/* @__PURE__ */e.jsx("svg",{ref:q,width:B,height:x,viewBox:`0 0 ${B} ${x}`,style:{display:"block"}})}),C&&/* @__PURE__ */e.jsx("div",{style:{position:"absolute",left:C.x,top:C.y,pointerEvents:"none",backgroundColor:"white",zIndex:"99999",border:"none",padding:"5px",borderRadius:"3px",transform:"translate(-50%, -100%)"},children:/* @__PURE__ */e.jsxs(d.default,{children:[
3
+ /* @__PURE__ */e.jsx("div",{style:{background:"#F3F2F2",padding:"10px"},children:/* @__PURE__ */e.jsx(r.Typography,{type:"s4",style:{whiteSpace:"noWrap",width:"200px",color:"#232529"},children:null==(w=C.content)?void 0:w.month})}),
4
+ /* @__PURE__ */e.jsxs(d.default,{sx:{p:1.5,display:"flex",flexDirection:"column",gap:1.5},children:[y.map((t,n)=>/* @__PURE__ */e.jsxs(d.default,{sx:{display:"flex",gap:1.5,alignItems:"center"},children:[
5
+ /* @__PURE__ */e.jsx("div",{className:"circle",style:{backgroundColor:b[n]}}),
6
+ /* @__PURE__ */e.jsxs(r.Typography,{type:"s5",color:"theme.secondary.900",children:[t.label,": ",
7
+ /* @__PURE__ */e.jsxs("span",{style:{fontWeight:600},children:["$ ",C.content[t.field]]})]})]},`bar-${n}`)),g.map((t,n)=>/* @__PURE__ */e.jsxs(d.default,{sx:{display:"flex",gap:1.5,alignItems:"center"},children:[
8
+ /* @__PURE__ */e.jsx("div",{className:"circle",style:{backgroundColor:k[n]}}),
9
+ /* @__PURE__ */e.jsxs(r.Typography,{type:"s5",color:"theme.secondary.900",children:[t.label,": ",
10
+ /* @__PURE__ */e.jsxs("span",{style:{fontWeight:600},children:["$ ",C.content[t.field]]})]})]},`line-${n}`))]})]})})]})})};
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/charts/barLineChart/barLinechart.tsx"],"sourcesContent":["import React, { useRef, useEffect, useState } from 'react';\nimport * as d3 from 'd3';\nimport { Box, /* List, ListItem */ } from '@mui/material';\nimport Typography from '../../typography/typography';\nimport './barLineChart.scss';\n\ninterface DataPoint {\n [key: string]: string | number;\n}\n\ninterface ChartField {\n field: string;\n color: string;\n label: string;\n}\n\nexport interface IBarLineChartProps {\n data: DataPoint[];\n width?: number;\n height?: number;\n margin?: { top: number; right: number; bottom: number; left: number };\n bars: ChartField[];\n lines: ChartField[];\n line?: boolean;\n showGrid?: boolean;\n barColors?: any[];\n lineColors?: any[];\n}\n\nconst BarLineChart: React.FC<IBarLineChartProps> = ({\n data,\n height = 400,\n margin = { top: 20, right: 30, bottom: 30, left: 50 },\n bars,\n lines,\n line = true,\n showGrid = true,\n barColors,\n lineColors\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const [tooltip, setTooltip] = useState<{ x: number; y: number; content: DataPoint } | null>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n const formatNumber = (num: number) => d3.format('.2s')(num).replace('k', 'K');\n\n const needsHorizontalScroll = data.length > bars.length;\n const minBarWidth = 60\n const calculatedChartWidth = needsHorizontalScroll \n ? Math.max(data.length * minBarWidth, containerWidth)\n : containerWidth;\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries[0]) {\n const newWidth = entries[0].contentRect.width;\n setContainerWidth(newWidth);\n }\n });\n\n if (wrapper) {\n resizeObserver.observe(wrapper);\n }\n\n return () => {\n if (wrapper) {\n resizeObserver.unobserve(wrapper);\n }\n };\n }, [])\n \n useEffect(() => {\n if (containerWidth === 0) return;\n const yMax = d3.max(data, d => {\n return Math.max(\n ...bars.map(bar => d[bar.field] as number),\n ...lines.map(line => d[line.field] as number)\n );\n }) ?? 0;\n const yMin = d3.min(data, d => {\n return Math.min(\n ...bars.map(bar => d[bar.field] as number),\n ...lines.map(line => d[line.field] as number)\n );\n }) ?? 0;\n\n const svg = d3.select(svgRef.current);\n const innerWidth = calculatedChartWidth - margin.left - margin.right;\n const innerHeight = yMax || yMin ? height - margin.top - margin.bottom : 0;\n\n const x = d3.scaleBand()\n .domain(data.map(d => d.month as string))\n .range([0, innerWidth])\n .padding(0.3);\n\n const y = d3.scaleLinear()\n .domain([yMin, yMax])\n .nice()\n .range([innerHeight, 0]);\n\n svg.selectAll('*').remove();\n\n const g = svg.append('g')\n .attr('transform', `translate(${margin.left},${margin.top})`);\n\n // Y axis\n const yAxis = g.append('g')\n .call(d3.axisLeft(y).tickFormat(formatNumber))\n .call(g => g.select('.domain').remove());\n yAxis.select(\".domain\").attr(\"stroke\", \"none\")\n \n // X axis\n const xAxis = g.append('g')\n .attr('transform', `translate(0,${innerHeight})`)\n .call(d3.axisBottom(x))\n .selectAll('.tick text')\n .attr('text-anchor', 'middle');\n xAxis.select(\".domain\").attr(\"stroke\", \"none\")\n \n // Render grid lines if applicable\n if (showGrid) {\n g.selectAll('.grid-line')\n .data(y.ticks())\n .enter()\n .append('line')\n .attr('class', 'grid-line')\n .attr('x1', 0)\n .attr('x2', innerWidth)\n .attr('y1', d => y(d))\n .attr('y2', d => y(d))\n .style('stroke', '#ddd')\n .style('stroke-dasharray', '8,8') // Dotted line\n .style('stroke-width', 1);\n }\n \n // Render grid lines if applicable\n if (line) {\n g.selectAll('.grid-line-2')\n .data(y.ticks())\n .enter()\n .append('line')\n .attr('class', 'grid-line-2')\n .attr('x1', 0)\n .attr('x2', innerWidth)\n .attr('y1', d => y(d))\n .attr('y2', d => y(d))\n .style('stroke', '#ddd')\n .style('stroke-dasharray', '8,8') // Dotted line\n .style('stroke-width', 1)\n }\n\n // Draw bars for bar chart\n bars.forEach((bar, i) => {\n g.selectAll(`.bar-${bar.field}`)\n .data(data)\n .enter()\n .append('rect')\n .attr('class', `bar bar-${bar.field}`)\n .attr('x', d => x(d.month as string) ?? 0)\n .attr('y', d => d[bar.field] >= 0 ? y(d[bar.field]) : y(0)) // Positive bars above y(0), negative bars below\n .attr(\"rx\", 5)\n .attr(\"ry\", 5)\n .attr('width', x.bandwidth() / bars.length)\n .attr('height', d => {\n return Math.abs(y(d[bar.field]) - y(0)); // Absolute height from y(0)\n })\n .attr('fill', barColors[i])\n .attr('transform', `translate(${(i * x.bandwidth()) / bars.length}, 0)`)\n .on('mouseover', function (event, d) {\n const [xPos, yPos] = d3.pointer(event, svgRef.current);\n const scrollLeft = scrollContainerRef.current?.scrollLeft || 0;\n setTooltip({ \n x: xPos + margin.left - scrollLeft, \n y: yPos + margin.top, \n content: d \n });\n })\n .on('mouseout', () => setTooltip(null));\n });\n \n // Draw lines for line chart\n lines.forEach((line, index) => {\n const lineGenerator = d3.line<DataPoint>()\n .x(d => (x(d.month as string) ?? 0) + x.bandwidth() / 2) // Calculate x position for each data point\n .y(d => y(d[line.field] as number))\n .curve(d3.curveMonotoneX);\n\n g.append('path')\n .datum(data)\n .attr('fill', 'none')\n .attr('stroke', lineColors[index])\n .attr('stroke-width', 2)\n .attr('d', lineGenerator)\n .on('mouseover', function (event) {\n const [xPos] = d3.pointer(event, svgRef.current);\n const month = x.domain().find((month) => {\n const monthPosition = x(month as string) ?? 0;\n return xPos >= monthPosition && xPos <= monthPosition + x.bandwidth();\n });\n\n if (month) {\n const closestDataPoint = data.find(d => d.month === month);\n if (closestDataPoint) {\n const scrollLeft = scrollContainerRef.current?.scrollLeft || 0;\n setTooltip({\n x: xPos + margin.left - scrollLeft,\n y: y(closestDataPoint[line.field]) + margin.top,\n content: closestDataPoint\n });\n }\n }\n })\n .on('mouseout', () => setTooltip(null));\n });\n }, [data, containerWidth, calculatedChartWidth, line, height, margin, bars, lines, showGrid, barColors, lineColors]);\n\n return (\n <div ref={wrapperRef} style={{ width: '100%', height: '100%' }}>\n <div style={{ position: 'relative' }}>\n <div \n ref={scrollContainerRef}\n style={{ \n width: '100%', \n overflowX: needsHorizontalScroll ? 'auto' : 'hidden',\n overflowY: 'hidden'\n }}\n >\n <svg \n ref={svgRef} \n width={calculatedChartWidth} \n height={height} \n viewBox={`0 0 ${calculatedChartWidth} ${height}`}\n style={{ display: 'block' }}\n />\n </div>\n {tooltip && (\n <div\n style={{\n position: 'absolute',\n left: tooltip.x,\n top: tooltip.y,\n pointerEvents: 'none',\n backgroundColor: 'white',\n zIndex: '99999',\n border: 'none',\n padding: '5px',\n borderRadius: '3px',\n transform: 'translate(-50%, -100%)'\n }}\n >\n <Box>\n <div style={{ background: '#F3F2F2', padding: '10px' }}>\n <Typography type='s4' style={{ whiteSpace: 'noWrap', width: '200px', color: '#232529' }}>{tooltip.content?.month}</Typography>\n </div>\n <Box sx={{ p: 1.5, display: 'flex', flexDirection: 'column', gap: 1.5 }}>\n\n {bars.map((bar, index) => (\n <Box key={`bar-${index}`} sx={{ display: 'flex', gap: 1.5, alignItems: 'center' }}>\n <div className=\"circle\" style={{ backgroundColor: barColors[index] }} />\n <Typography type='s5' color='theme.secondary.900'>\n {bar.label}: <span style={{ fontWeight: 600 }}>$ {tooltip.content[bar.field]}</span>\n </Typography>\n </Box>\n ))}\n {lines.map((line, index) => (\n <Box key={`line-${index}`} sx={{ display: 'flex', gap: 1.5, alignItems: 'center' }}>\n <div className=\"circle\" style={{ backgroundColor: lineColors[index] }} />\n <Typography type='s5' color='theme.secondary.900'>\n {line.label}: <span style={{ fontWeight: 600 }}>$ {tooltip.content[line.field]}</span>\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n \n </div>\n )\n }\n </div>\n </div>\n );\n};\n\nexport default BarLineChart;"],"names":["data","height","margin","top","right","bottom","left","bars","lines","line","showGrid","barColors","lineColors","svgRef","useRef","wrapperRef","scrollContainerRef","tooltip","setTooltip","useState","containerWidth","setContainerWidth","formatNumber","num","d3.format","replace","needsHorizontalScroll","length","calculatedChartWidth","Math","max","useEffect","wrapper","current","resizeObserver","ResizeObserver","entries","newWidth","contentRect","width","observe","unobserve","yMax","d3.max","d","map","bar","field","yMin","d3.min","min","svg","d3.select","innerWidth","innerHeight","x","d3.scaleBand","domain","month","range","padding","y","d3.scaleLinear","nice","selectAll","remove","g","append","attr","call","d3.axisLeft","tickFormat","select","d3.axisBottom","ticks","enter","style","forEach","i","bandwidth","abs","on","event","xPos","yPos","d3.pointer","scrollLeft","_a","content","index","lineGenerator","d3.line","curve","d3.curveMonotoneX","datum","find","monthPosition","closestDataPoint","ref","children","jsxs","position","jsx","overflowX","overflowY","viewBox","display","pointerEvents","backgroundColor","zIndex","border","borderRadius","transform","Box","background","Typography","type","whiteSpace","color","sx","p","flexDirection","gap","alignItems","className","label","fontWeight"],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
+ import { useRef, useEffect } from "react";
3
+ /* empty css */
4
+ import { Typography } from "../../../typography/typography/index.esm.js";
5
+ import select from "../../../../node_modules/d3-selection/src/select/index.esm.js";
6
+ import pie from "../../../../node_modules/d3-shape/src/pie/index.esm.js";
7
+ import arc from "../../../../node_modules/d3-shape/src/arc/index.esm.js";
8
+ const defaultColors = [
9
+ "#5BCE97",
10
+ "#B3D8E2",
11
+ "#F5F6F5",
12
+ "#AE6B9E",
13
+ "#CBD49A",
14
+ "#EEE0B3"
15
+ ];
16
+ const getSingleNumberFromString = (str) => {
17
+ if (typeof str === "number") {
18
+ return str;
19
+ }
20
+ const match = (str == null ? void 0 : str.match(/\d.+/)) || null;
21
+ return match ? Number(match[0]) : 0;
22
+ };
23
+ const DonutChart = ({
24
+ data,
25
+ height = 140,
26
+ width = 140,
27
+ isUserDashbord,
28
+ legend = true,
29
+ direction = "horizontal",
30
+ totalUsers,
31
+ total = isUserDashbord ? totalUsers : "2.4 GB",
32
+ colors = defaultColors,
33
+ titleProps = {},
34
+ valueProps = {}
35
+ }) => {
36
+ const svgRef = useRef(null);
37
+ useEffect(() => {
38
+ if (!svgRef.current) return;
39
+ const svg = select(svgRef.current);
40
+ svg.selectAll("*").remove();
41
+ const margin = 6;
42
+ const outerRadius = Math.min(width, height) / 2 - margin;
43
+ const innerRadius = Math.min(width, height) / 2 - margin * 2;
44
+ const g = svg.append("g").attr("transform", `translate(${width / 2}, ${height / 2})`);
45
+ const pie$1 = pie().value((d) => getSingleNumberFromString(d.value));
46
+ const path = arc().outerRadius(outerRadius).innerRadius(innerRadius);
47
+ const pies = g.selectAll(".arc").data(pie$1(data)).enter().append("g").attr("class", "arc");
48
+ pies.append("path").attr("d", path).attr("fill", (d, i) => {
49
+ return colors[i % colors.length];
50
+ });
51
+ g.append("text").attr("text-anchor", "middle").attr("font-size", "18px").attr("font-weight", "600").attr("alignment-baseline", `central`).html(total);
52
+ }, [colors, data, height, total, width]);
53
+ if (!legend) {
54
+ return /* @__PURE__ */ jsx("svg", { ref: svgRef, width, height });
55
+ }
56
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: `donut-chart-container ${direction}`, children: [
57
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("svg", { ref: svgRef, width, height }) }),
58
+ /* @__PURE__ */ jsx("div", { className: "donut-chart-legend", children: data && data.map((d, i) => {
59
+ return /* @__PURE__ */ jsxs(
60
+ "div",
61
+ {
62
+ className: "legend",
63
+ style: { borderLeft: `0.188rem solid ${colors[i]}` },
64
+ children: [
65
+ /* @__PURE__ */ jsx("div", { className: "legend-title", children: /* @__PURE__ */ jsx(Typography, { type: "s5", color: "theme.secondary.800", ...titleProps, children: d.label }) }),
66
+ /* @__PURE__ */ jsx("div", { className: "legend-value", children: /* @__PURE__ */ jsx(
67
+ Typography,
68
+ {
69
+ type: "s5",
70
+ weight: "medium",
71
+ color: "theme.secondary.1000",
72
+ children: /* @__PURE__ */ jsx(Typography, { type: "s5", color: "theme.secondary.1000", weight: "bold", ...valueProps, children: d.value })
73
+ }
74
+ ) })
75
+ ]
76
+ },
77
+ d.label
78
+ );
79
+ }) })
80
+ ] }) });
81
+ };
82
+ export {
83
+ DonutChart as default
84
+ };
85
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../../src/components/charts/donut-chart/donut-chart.tsx"],"sourcesContent":["import React, { useRef, useEffect } from \"react\";\nimport * as d3 from \"d3\";\nimport \"./donut-chart.scss\";\nimport Typography from \"../../typography/typography\";\n\ninterface DataPoint {\n label: string;\n value: number;\n}\n\ninterface DonutChartProps {\n data: DataPoint[];\n width?: number;\n height?: number;\n legend?: boolean;\n direction?: \"vertical\" | \"horizontal\";\n total?: string;\n colors ?:Array<string>;\n titleProps?:any\n valueProps?:any \n isUserDashbord ?: boolean \n totalUsers ? : any \n}\n\nconst defaultColors = [\n \"#5BCE97\",\n \"#B3D8E2\",\n \"#F5F6F5\",\n \"#AE6B9E\",\n \"#CBD49A\",\n \"#EEE0B3\",\n];\n\nconst getSingleNumberFromString = (str) => {\n if (typeof str === \"number\") {\n return str;\n }\n const match = str?.match(/\\d.+/) || null;\n return match ? Number(match[0]) : 0;\n};\n\nconst DonutChart: React.FC<DonutChartProps> = ({\n\tdata,\n\theight = 140,\n\twidth = 140,\n isUserDashbord , \n\tlegend = true,\n\tdirection = 'horizontal' ,\n totalUsers , \n\ttotal = isUserDashbord ? totalUsers : \"2.4 GB\",\n colors = defaultColors,\n titleProps={},\n valueProps={}, \n\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n\n useEffect(() => {\n if (!svgRef.current) return;\n\n const svg = d3.select(svgRef.current);\n\n svg.selectAll(\"*\").remove();\n\n const margin = 6;\n\n const outerRadius = Math.min(width, height) / 2 - margin;\n const innerRadius = Math.min(width, height) / 2 - margin * 2;\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${width / 2}, ${height / 2})`);\n //@ts-expect-error not applicable\n const pie = d3\n .pie()\n .value((d: DataPoint) => getSingleNumberFromString(d.value));\n\n const path = d3.arc().outerRadius(outerRadius).innerRadius(innerRadius);\n\n const pies = g\n .selectAll(\".arc\")\n //@ts-expect-error not applicable\n .data(pie(data))\n .enter()\n .append(\"g\")\n .attr(\"class\", \"arc\");\n\n pies\n .append(\"path\")\n //@ts-expect-error not applicable\n .attr(\"d\", path)\n //@ts-expect-error not applicable\n .attr(\"fill\", (d: DataPoint, i: number) => {\n return colors[i % colors.length]});\n\n\n // const words = total.split(' '); // Split the text into words\n // const lineHeight = 22; // Define the line height\n // const maxCharsPerLine = 15; // Define the maximum number of characters per line\n\n // let currentLine = '';\n // let lineNumber = 0;\n\n // const textElement =\n g.append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-size\", \"18px\")\n .attr(\"font-weight\", \"600\")\n .attr(\"alignment-baseline\", `central`)\n .html(total);\n // .text(total);\n\n // words.forEach((word) => {\n // \tconst tempLine = currentLine + word + ' ';\n\n // \t// Check if the line exceeds the max character count\n // \tif (tempLine.length > maxCharsPerLine && currentLine.length > 0) {\n // \t\ttextElement\n // \t\t\t.append('tspan')\n // \t\t\t.attr('x', 0)\n // \t\t\t.attr('y', lineHeight * lineNumber)\n // \t\t\t.text(currentLine.trim());\n\n // \t\tcurrentLine = word + ' ';\n // \t\tlineNumber++;\n // \t} else {\n // \t\tcurrentLine = tempLine;\n // \t}\n // });\n\n // // Add the last line\n // textElement\n // \t.append('tspan')\n // \t.attr('x', 0)\n // \t.attr('y', lineHeight * lineNumber)\n // \t.text(currentLine.trim());\n }, [colors, data, height, total, width]);\n\n if (!legend) {\n return <svg ref={svgRef} width={width} height={height}></svg>;\n }\n\n return (\n <>\n <div className={`donut-chart-container ${direction}`}>\n <div>\n <svg ref={svgRef} width={width} height={height}></svg>\n </div>\n <div className=\"donut-chart-legend\">\n {data && data.map((d: DataPoint, i: number) => {\n return (\n <div\n className=\"legend\"\n key={d.label}\n style={{ borderLeft: `0.188rem solid ${colors[i]}` }}\n >\n <div className=\"legend-title\">\n <Typography type=\"s5\" color=\"theme.secondary.800\" {...titleProps}>\n {d.label}\n </Typography>\n </div>\n <div className=\"legend-value\">\n <Typography\n type=\"s5\"\n weight=\"medium\"\n color=\"theme.secondary.1000\"\n >\n <Typography type=\"s5\" color=\"theme.secondary.1000\" weight=\"bold\" {...valueProps}>\n {d.value}\n </Typography>\n </Typography>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </>\n );\n};\n\nexport default DonutChart;\n"],"names":["d3.select","pie","d3.pie","d3.arc"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react");;/* empty css */var r=,/* empty css */s=,/* empty css */a=,/* empty css */l=;/* empty css */const n=["#5BCE97","#B3D8E2","#F5F6F5","#AE6B9E","#CBD49A","#EEE0B3"];exports.default=({data:d,height:i=140,width:o=140,isUserDashbord:c,legend:h=!0,direction:u="horizontal",totalUsers:p,total:m=(c?p:"2.4 GB"),colors:g=n,titleProps:x={},valueProps:j={}})=>{const y=t.useRef(null);return t.useEffect(()=>{if(!y.current)return;const e=s.default(y.current);e.selectAll("*").remove();const t=Math.min(o,i)/2-6,r=Math.min(o,i)/2-12,n=e.append("g").attr("transform",`translate(${o/2}, ${i/2})`),c=a.default().value(e=>(e=>{if("number"==typeof e)return e;const t=(null==e?void 0:e.match(/\d.+/))||null;return t?Number(t[0]):0})(e.value)),h=l.default().outerRadius(t).innerRadius(r);n.selectAll(".arc").data(c(d)).enter().append("g").attr("class","arc").append("path").attr("d",h).attr("fill",(e,t)=>g[t%g.length]),n.append("text").attr("text-anchor","middle").attr("font-size","18px").attr("font-weight","600").attr("alignment-baseline","central").html(m)},[g,d,i,m,o]),h?/* @__PURE__ */e.jsx(e.Fragment,{children:/* @__PURE__ */e.jsxs("div",{className:`donut-chart-container ${u}`,children:[
2
+ /* @__PURE__ */e.jsx("div",{children:/* @__PURE__ */e.jsx("svg",{ref:y,width:o,height:i})}),
3
+ /* @__PURE__ */e.jsx("div",{className:"donut-chart-legend",children:d&&d.map((t,s)=>/* @__PURE__ */e.jsxs("div",{className:"legend",style:{borderLeft:`0.188rem solid ${g[s]}`},children:[
4
+ /* @__PURE__ */e.jsx("div",{className:"legend-title",children:/* @__PURE__ */e.jsx(r.Typography,{type:"s5",color:"theme.secondary.800",...x,children:t.label})}),
5
+ /* @__PURE__ */e.jsx("div",{className:"legend-value",children:/* @__PURE__ */e.jsx(r.Typography,{type:"s5",weight:"medium",color:"theme.secondary.1000",children:/* @__PURE__ */e.jsx(r.Typography,{type:"s5",color:"theme.secondary.1000",weight:"bold",...j,children:t.value})})})]},t.label))})]})}):/* @__PURE__ */e.jsx("svg",{ref:y,width:o,height:i})};
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/charts/donut-chart/donut-chart.tsx"],"sourcesContent":["import React, { useRef, useEffect } from \"react\";\nimport * as d3 from \"d3\";\nimport \"./donut-chart.scss\";\nimport Typography from \"../../typography/typography\";\n\ninterface DataPoint {\n label: string;\n value: number;\n}\n\ninterface DonutChartProps {\n data: DataPoint[];\n width?: number;\n height?: number;\n legend?: boolean;\n direction?: \"vertical\" | \"horizontal\";\n total?: string;\n colors ?:Array<string>;\n titleProps?:any\n valueProps?:any \n isUserDashbord ?: boolean \n totalUsers ? : any \n}\n\nconst defaultColors = [\n \"#5BCE97\",\n \"#B3D8E2\",\n \"#F5F6F5\",\n \"#AE6B9E\",\n \"#CBD49A\",\n \"#EEE0B3\",\n];\n\nconst getSingleNumberFromString = (str) => {\n if (typeof str === \"number\") {\n return str;\n }\n const match = str?.match(/\\d.+/) || null;\n return match ? Number(match[0]) : 0;\n};\n\nconst DonutChart: React.FC<DonutChartProps> = ({\n\tdata,\n\theight = 140,\n\twidth = 140,\n isUserDashbord , \n\tlegend = true,\n\tdirection = 'horizontal' ,\n totalUsers , \n\ttotal = isUserDashbord ? totalUsers : \"2.4 GB\",\n colors = defaultColors,\n titleProps={},\n valueProps={}, \n\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n\n useEffect(() => {\n if (!svgRef.current) return;\n\n const svg = d3.select(svgRef.current);\n\n svg.selectAll(\"*\").remove();\n\n const margin = 6;\n\n const outerRadius = Math.min(width, height) / 2 - margin;\n const innerRadius = Math.min(width, height) / 2 - margin * 2;\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${width / 2}, ${height / 2})`);\n //@ts-expect-error not applicable\n const pie = d3\n .pie()\n .value((d: DataPoint) => getSingleNumberFromString(d.value));\n\n const path = d3.arc().outerRadius(outerRadius).innerRadius(innerRadius);\n\n const pies = g\n .selectAll(\".arc\")\n //@ts-expect-error not applicable\n .data(pie(data))\n .enter()\n .append(\"g\")\n .attr(\"class\", \"arc\");\n\n pies\n .append(\"path\")\n //@ts-expect-error not applicable\n .attr(\"d\", path)\n //@ts-expect-error not applicable\n .attr(\"fill\", (d: DataPoint, i: number) => {\n return colors[i % colors.length]});\n\n\n // const words = total.split(' '); // Split the text into words\n // const lineHeight = 22; // Define the line height\n // const maxCharsPerLine = 15; // Define the maximum number of characters per line\n\n // let currentLine = '';\n // let lineNumber = 0;\n\n // const textElement =\n g.append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-size\", \"18px\")\n .attr(\"font-weight\", \"600\")\n .attr(\"alignment-baseline\", `central`)\n .html(total);\n // .text(total);\n\n // words.forEach((word) => {\n // \tconst tempLine = currentLine + word + ' ';\n\n // \t// Check if the line exceeds the max character count\n // \tif (tempLine.length > maxCharsPerLine && currentLine.length > 0) {\n // \t\ttextElement\n // \t\t\t.append('tspan')\n // \t\t\t.attr('x', 0)\n // \t\t\t.attr('y', lineHeight * lineNumber)\n // \t\t\t.text(currentLine.trim());\n\n // \t\tcurrentLine = word + ' ';\n // \t\tlineNumber++;\n // \t} else {\n // \t\tcurrentLine = tempLine;\n // \t}\n // });\n\n // // Add the last line\n // textElement\n // \t.append('tspan')\n // \t.attr('x', 0)\n // \t.attr('y', lineHeight * lineNumber)\n // \t.text(currentLine.trim());\n }, [colors, data, height, total, width]);\n\n if (!legend) {\n return <svg ref={svgRef} width={width} height={height}></svg>;\n }\n\n return (\n <>\n <div className={`donut-chart-container ${direction}`}>\n <div>\n <svg ref={svgRef} width={width} height={height}></svg>\n </div>\n <div className=\"donut-chart-legend\">\n {data && data.map((d: DataPoint, i: number) => {\n return (\n <div\n className=\"legend\"\n key={d.label}\n style={{ borderLeft: `0.188rem solid ${colors[i]}` }}\n >\n <div className=\"legend-title\">\n <Typography type=\"s5\" color=\"theme.secondary.800\" {...titleProps}>\n {d.label}\n </Typography>\n </div>\n <div className=\"legend-value\">\n <Typography\n type=\"s5\"\n weight=\"medium\"\n color=\"theme.secondary.1000\"\n >\n <Typography type=\"s5\" color=\"theme.secondary.1000\" weight=\"bold\" {...valueProps}>\n {d.value}\n </Typography>\n </Typography>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </>\n );\n};\n\nexport default DonutChart;\n"],"names":["defaultColors","data","height","width","isUserDashbord","legend","direction","totalUsers","total","colors","titleProps","valueProps","svgRef","useRef","useEffect","current","svg","d3.select","selectAll","remove","outerRadius","Math","min","innerRadius","margin","g","append","attr","pie","d3.pie","value","d","str","match","Number","getSingleNumberFromString","path","d3.arc","enter","i","length","html","children","jsxs","className","jsx","ref","map","style","borderLeft","Typography","type","color","label","weight"],"mappings":"kaAwBA,MAAMA,EAAgB,CACpB,UACA,UACA,UACA,UACA,UACA,2BAW4C,EAC7CC,OACAC,SAAS,IACTC,QAAQ,IACPC,iBACDC,UAAS,EACTC,YAAY,aACXC,aACDC,SAASJ,EAAiBG,EAAa,UACtCE,SAAST,EACTU,aAAW,CAAA,EACXC,aAAW,CAAA,MAGX,MAAMC,EAASC,EAAAA,OAAsB,MAmFrC,OAjFAC,EAAAA,UAAU,KACR,IAAKF,EAAOG,QAAS,OAErB,MAAMC,EAAMC,EAAAA,QAAUL,EAAOG,SAE7BC,EAAIE,UAAU,KAAKC,SAEnB,MAEMC,EAAcC,KAAKC,IAAInB,EAAOD,GAAU,EAF/B,EAGTqB,EAAcF,KAAKC,IAAInB,EAAOD,GAAU,EAAIsB,GAE5CC,EAAIT,EACPU,OAAO,KACPC,KAAK,YAAa,aAAaxB,EAAQ,MAAMD,EAAS,MAEnD0B,EAAMC,EAAAA,UAETC,MAAOC,GA1CoB,CAACC,IACjC,GAAmB,iBAARA,EACT,OAAOA,EAET,MAAMC,GAAQ,MAAAD,OAAA,EAAAA,EAAKC,MAAM,UAAW,KACpC,OAAOA,EAAQC,OAAOD,EAAM,IAAM,GAqCLE,CAA0BJ,EAAED,QAEjDM,EAAOC,EAAAA,UAASjB,YAAYA,GAAaG,YAAYA,GAE9CE,EACVP,UAAU,QAEVjB,KAAK2B,EAAI3B,IACTqC,QACAZ,OAAO,KACPC,KAAK,QAAS,OAGdD,OAAO,QAEPC,KAAK,IAAKS,GAEVT,KAAK,OAAQ,CAACI,EAAcQ,IACpB9B,EAAO8B,EAAI9B,EAAO+B,SAW7Bf,EAAEC,OAAO,QACNC,KAAK,cAAe,UACpBA,KAAK,YAAa,QAClBA,KAAK,cAAe,OACpBA,KAAK,qBAAsB,WAC3Bc,KAAKjC,IA2BP,CAACC,EAAQR,EAAMC,EAAQM,EAAOL,IAE5BE,mCAMDqC,wBAAAC,EAAAA,KAAC,MAAA,CAAIC,UAAW,yBAAyBtC,IACvCoC,SAAA;eAAAG,EAAAA,IAAC,OACCH,wBAAAG,EAAAA,IAAC,MAAA,CAAIC,IAAKlC,EAAQT,QAAcD;eAElC2C,EAAAA,IAAC,OAAID,UAAU,qBACZF,YAAQzC,EAAK8C,IAAI,CAAChB,EAAcQ,mBAE7BI,EAAAA,KAAC,MAAA,CACCC,UAAU,SAEVI,MAAO,CAAEC,WAAY,kBAAkBxC,EAAO8B,MAE9CG,SAAA;eAAAG,EAAAA,IAAC,MAAA,CAAID,UAAU,eACfF,wBAAAG,EAAAA,IAACK,EAAAA,WAAA,CAAWC,KAAK,KAAKC,MAAM,yBAA0B1C,EACnDgC,SAAAX,EAAEsB;iBAGLR,IAAC,MAAA,CAAID,UAAU,eACbF,wBAAAG,EAAAA,IAACK,EAAAA,WAAA,CACCC,KAAK,KACLG,OAAO,SACPF,MAAM,uBAENV,wBAAAG,EAAAA,IAACK,EAAAA,WAAA,CAAWC,KAAK,KAAKC,MAAM,uBAAuBE,OAAO,UAAW3C,EAClE+B,SAAAX,EAAED,cAfJC,EAAEsB,8BAdZR,EAAAA,IAAC,MAAA,CAAIC,IAAKlC,EAAQT,QAAcD"}
@@ -0,0 +1,96 @@
1
+ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
+ import { useRef, useEffect } from "react";
3
+ /* empty css */
4
+ import { Typography } from "../../../typography/typography/index.esm.js";
5
+ import { useAuth } from "../../../../hooks/useAuth/index.esm.js";
6
+ import select from "../../../../node_modules/d3-selection/src/select/index.esm.js";
7
+ import pie from "../../../../node_modules/d3-shape/src/pie/index.esm.js";
8
+ import arc from "../../../../node_modules/d3-shape/src/arc/index.esm.js";
9
+ const formatNumber = (num, defaultCurrencySymbol = "") => {
10
+ if (num >= 1e6) {
11
+ return `${defaultCurrencySymbol} ${(num / 1e6).toFixed(1)} M`;
12
+ } else if (num >= 1e5) {
13
+ return `${defaultCurrencySymbol} ${(num / 1e5).toFixed(1)} L`;
14
+ } else if (num >= 1e3) {
15
+ return `${(num / 1e3).toFixed(1)} K`;
16
+ } else {
17
+ return `${defaultCurrencySymbol} ${num.toFixed(2)}`;
18
+ }
19
+ };
20
+ const getSingleNumberFromString = (str) => {
21
+ if (typeof str === "number") {
22
+ return str;
23
+ }
24
+ const match = (str == null ? void 0 : str.match(/\d.+/)) || null;
25
+ return match ? Number(match[0]) : 0;
26
+ };
27
+ const DonutChart = ({
28
+ data,
29
+ height = 140,
30
+ width = 140,
31
+ legend = true,
32
+ direction = "vertical",
33
+ total = "300",
34
+ donutThickerValue,
35
+ CustomLegends,
36
+ title = ""
37
+ }) => {
38
+ var _a;
39
+ const svgRef = useRef(null);
40
+ const { user } = useAuth();
41
+ const defaultCurrencySymbol = ((_a = user == null ? void 0 : user.currency_data) == null ? void 0 : _a.symbol) || "";
42
+ useEffect(() => {
43
+ if (!svgRef.current) return;
44
+ const svg = select(svgRef.current);
45
+ svg.selectAll("*").remove();
46
+ const margin = 6;
47
+ const outerRadius = Math.min(width, height) / 2 - margin;
48
+ let innerRadius = Math.min(width, height) / 2 - margin * 2;
49
+ if (donutThickerValue) {
50
+ innerRadius = outerRadius - donutThickerValue;
51
+ }
52
+ const g = svg.append("g").attr("transform", `translate(${width / 2}, ${height / 2})`);
53
+ const pie$1 = pie().value((d) => getSingleNumberFromString(d.value)).padAngle(0);
54
+ const path = arc().outerRadius(outerRadius).innerRadius(innerRadius);
55
+ const pies = g.selectAll(".arc").data(pie$1(data)).enter().append("g").attr("class", "arc");
56
+ pies.append("path").attr("d", path).attr("fill", (d) => {
57
+ var _a2;
58
+ return (_a2 = d == null ? void 0 : d.data) == null ? void 0 : _a2.color;
59
+ }).attr("stroke", "none");
60
+ g.append("text").attr("text-anchor", "middle").attr("font-size", "18px").attr("font-weight", "600").attr("alignment-baseline", `central`).html(total);
61
+ g.append("text").attr("text-anchor", "middle").attr("maring-top", "20px").attr("font-size", "13px").attr("font-weight", "600").attr("dy", "2em").attr("color", "#7B7C7F").html(title);
62
+ }, [data, height, total, width, defaultCurrencySymbol, donutThickerValue, CustomLegends, title]);
63
+ if (!legend) {
64
+ return /* @__PURE__ */ jsx("svg", { ref: svgRef, width, height });
65
+ }
66
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: `donut-chart-container ${direction}`, children: [
67
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("svg", { ref: svgRef, width, height }) }),
68
+ CustomLegends ? /* @__PURE__ */ jsx(CustomLegends, { data }) : /* @__PURE__ */ jsx("div", { className: "donut-legend", children: /* @__PURE__ */ jsx("div", { className: `donut-chart-legend ${direction}`, children: data.map((d) => /* @__PURE__ */ jsxs(
69
+ "div",
70
+ {
71
+ className: "legend",
72
+ style: { borderLeft: `0.188rem solid ${d.color}` },
73
+ children: [
74
+ /* @__PURE__ */ jsx("div", { className: "legend-title", style: { color: `${d.labelColor}` }, children: d.label }),
75
+ /* @__PURE__ */ jsx("div", { className: "legend-value", children: /* @__PURE__ */ jsx(
76
+ Typography,
77
+ {
78
+ type: "s5",
79
+ weight: "medium",
80
+ color: d.valueColor,
81
+ style: {
82
+ whiteSpace: "nowrap"
83
+ },
84
+ children: formatNumber(d.value, defaultCurrencySymbol)
85
+ }
86
+ ) })
87
+ ]
88
+ },
89
+ d.label
90
+ )) }) })
91
+ ] }) });
92
+ };
93
+ export {
94
+ DonutChart as default
95
+ };
96
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../../src/components/charts/donutChart/DonutChart.tsx"],"sourcesContent":["import React, { useRef, useEffect } from \"react\";\nimport * as d3 from \"d3\";\nimport \"./donut-chart.scss\";\nimport Typography from \"../../typography/typography\";\nimport { useAuth } from \"../../../hooks/useAuth\";\n\ninterface DataPoint {\n label: string;\n value: number;\n\n}\n\ninterface DonutChartProps {\n data: DataPoint[];\n width?: number;\n height?: number;\n legend?: boolean;\n direction?: \"vertical\" | \"horizontal\";\n total?: string;\n donutThickerValue?: number\n CustomLegends?: React.FC<{ data: DataPoint[] }>;\n title: string\n}\n\nconst formatNumber = (num: number, defaultCurrencySymbol: string = ''): string => {\n if (num >= 1_000_000) {\n return `${defaultCurrencySymbol} ${(num / 1_000_000).toFixed(1)} M`;\n } else if (num >= 100_000) {\n return `${defaultCurrencySymbol} ${(num / 100_000).toFixed(1)} L`; // L for Lakhs\n } else if (num >= 1_000) {\n return `${(num / 1_000).toFixed(1)} K`;\n } else {\n return `${defaultCurrencySymbol} ${num.toFixed(2)}`;\n }\n};\nconst getSingleNumberFromString = (str) => {\n if (typeof str === \"number\") {\n return str;\n }\n const match = str?.match(/\\d.+/) || null;\n return match ? Number(match[0]) : 0;\n};\n\nconst DonutChart: React.FC<DonutChartProps> = ({\n data,\n height = 140,\n width = 140,\n legend = true,\n direction = \"vertical\",\n total = \"300\",\n donutThickerValue,\n CustomLegends,\n title = ''\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const { user } = useAuth();\n const defaultCurrencySymbol = user?.currency_data?.symbol || '';\n useEffect(() => {\n if (!svgRef.current) return;\n\n const svg = d3.select(svgRef.current);\n\n svg.selectAll(\"*\").remove();\n\n const margin = 6;\n\n const outerRadius = Math.min(width, height) / 2 - margin;\n let innerRadius = Math.min(width, height) / 2 - margin * 2;\n if (donutThickerValue) {\n innerRadius = outerRadius - donutThickerValue;\n }\n\n\n\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${width / 2}, ${height / 2})`);\n const pie = d3\n .pie()\n .value((d: DataPoint) => getSingleNumberFromString(d.value)).padAngle(0);\n\n const path = d3.arc().outerRadius(outerRadius).innerRadius(innerRadius)\n\n const pies = g\n .selectAll(\".arc\")\n .data(pie(data))\n .enter()\n .append(\"g\")\n .attr(\"class\", \"arc\");\n\n\n pies\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"fill\", (d: DataPoint) => d?.data?.color).attr(\"stroke\", \"none\");\n g.append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-size\", \"18px\")\n .attr(\"font-weight\", \"600\")\n .attr(\"alignment-baseline\", `central`)\n .html(total);\n g.append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .attr('maring-top', \"20px\")\n .attr(\"font-size\", \"13px\")\n .attr(\"font-weight\", \"600\")\n .attr(\"dy\", \"2em\")\n .attr(\"color\", \"#7B7C7F\")\n .html(title);\n\n }, [data, height, total, width, defaultCurrencySymbol, donutThickerValue, CustomLegends, title]);\n\n if (!legend) {\n return <svg ref={svgRef} width={width} height={height}></svg>;\n }\n\n return (\n <>\n <div className={`donut-chart-container ${direction}`}>\n <div>\n <svg ref={svgRef} width={width} height={height}></svg>\n </div>\n\n\n {CustomLegends ? (\n <CustomLegends data={data} /> // Render the custom component\n ) : (\n <div className='donut-legend'>\n <div className={`donut-chart-legend ${direction}`}>\n {data.map((d: DataPoint) => (\n <div\n className=\"legend\"\n key={d.label}\n style={{ borderLeft: `0.188rem solid ${d.color}` }}\n >\n <div className=\"legend-title\" style={{ color: `${d.labelColor}` }}>{d.label}</div>\n <div className=\"legend-value\">\n <Typography\n type=\"s5\"\n weight=\"medium\"\n color={d.valueColor}\n style={{\n whiteSpace: 'nowrap'\n }}\n >\n {formatNumber(d.value, defaultCurrencySymbol)}\n </Typography>\n </div>\n </div>\n ))\n }\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport default DonutChart;\n"],"names":["d3.select","pie","d3.pie","d3.arc","_a"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react");;/* empty css */var r=,/* empty css */a=,/* empty css */l=,/* empty css */n=,/* empty css */d=;/* empty css */const s=(e,t="")=>e>=1e6?`${t} ${(e/1e6).toFixed(1)} M`:e>=1e5?`${t} ${(e/1e5).toFixed(1)} L`:e>=1e3?`${(e/1e3).toFixed(1)} K`:`${t} ${e.toFixed(2)}`;exports.default=({data:i,height:o=140,width:c=140,legend:u=!0,direction:h="vertical",total:p="300",donutThickerValue:x,CustomLegends:m,title:v=""})=>{var g;const f=t.useRef(null),{user:j}=a.useAuth(),y=(null==(g=null==j?void 0:j.currency_data)?void 0:g.symbol)||"";return t.useEffect(()=>{if(!f.current)return;const e=l.default(f.current);e.selectAll("*").remove();const t=Math.min(c,o)/2-6;let r=Math.min(c,o)/2-12;x&&(r=t-x);const a=e.append("g").attr("transform",`translate(${c/2}, ${o/2})`),s=n.default().value(e=>(e=>{if("number"==typeof e)return e;const t=(null==e?void 0:e.match(/\d.+/))||null;return t?Number(t[0]):0})(e.value)).padAngle(0),u=d.default().outerRadius(t).innerRadius(r);a.selectAll(".arc").data(s(i)).enter().append("g").attr("class","arc").append("path").attr("d",u).attr("fill",e=>{var t;return null==(t=null==e?void 0:e.data)?void 0:t.color}).attr("stroke","none"),a.append("text").attr("text-anchor","middle").attr("font-size","18px").attr("font-weight","600").attr("alignment-baseline","central").html(p),a.append("text").attr("text-anchor","middle").attr("maring-top","20px").attr("font-size","13px").attr("font-weight","600").attr("dy","2em").attr("color","#7B7C7F").html(v)},[i,o,p,c,y,x,m,v]),u?/* @__PURE__ */e.jsx(e.Fragment,{children:/* @__PURE__ */e.jsxs("div",{className:`donut-chart-container ${h}`,children:[
2
+ /* @__PURE__ */e.jsx("div",{children:/* @__PURE__ */e.jsx("svg",{ref:f,width:c,height:o})}),m?/* @__PURE__ */e.jsx(m,{data:i}):/* @__PURE__ */e.jsx("div",{className:"donut-legend",children:/* @__PURE__ */e.jsx("div",{className:`donut-chart-legend ${h}`,children:i.map(t=>/* @__PURE__ */e.jsxs("div",{className:"legend",style:{borderLeft:`0.188rem solid ${t.color}`},children:[
3
+ /* @__PURE__ */e.jsx("div",{className:"legend-title",style:{color:`${t.labelColor}`},children:t.label}),
4
+ /* @__PURE__ */e.jsx("div",{className:"legend-value",children:/* @__PURE__ */e.jsx(r.Typography,{type:"s5",weight:"medium",color:t.valueColor,style:{whiteSpace:"nowrap"},children:s(t.value,y)})})]},t.label))})})]})}):/* @__PURE__ */e.jsx("svg",{ref:f,width:c,height:o})};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/charts/donutChart/DonutChart.tsx"],"sourcesContent":["import React, { useRef, useEffect } from \"react\";\nimport * as d3 from \"d3\";\nimport \"./donut-chart.scss\";\nimport Typography from \"../../typography/typography\";\nimport { useAuth } from \"../../../hooks/useAuth\";\n\ninterface DataPoint {\n label: string;\n value: number;\n\n}\n\ninterface DonutChartProps {\n data: DataPoint[];\n width?: number;\n height?: number;\n legend?: boolean;\n direction?: \"vertical\" | \"horizontal\";\n total?: string;\n donutThickerValue?: number\n CustomLegends?: React.FC<{ data: DataPoint[] }>;\n title: string\n}\n\nconst formatNumber = (num: number, defaultCurrencySymbol: string = ''): string => {\n if (num >= 1_000_000) {\n return `${defaultCurrencySymbol} ${(num / 1_000_000).toFixed(1)} M`;\n } else if (num >= 100_000) {\n return `${defaultCurrencySymbol} ${(num / 100_000).toFixed(1)} L`; // L for Lakhs\n } else if (num >= 1_000) {\n return `${(num / 1_000).toFixed(1)} K`;\n } else {\n return `${defaultCurrencySymbol} ${num.toFixed(2)}`;\n }\n};\nconst getSingleNumberFromString = (str) => {\n if (typeof str === \"number\") {\n return str;\n }\n const match = str?.match(/\\d.+/) || null;\n return match ? Number(match[0]) : 0;\n};\n\nconst DonutChart: React.FC<DonutChartProps> = ({\n data,\n height = 140,\n width = 140,\n legend = true,\n direction = \"vertical\",\n total = \"300\",\n donutThickerValue,\n CustomLegends,\n title = ''\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const { user } = useAuth();\n const defaultCurrencySymbol = user?.currency_data?.symbol || '';\n useEffect(() => {\n if (!svgRef.current) return;\n\n const svg = d3.select(svgRef.current);\n\n svg.selectAll(\"*\").remove();\n\n const margin = 6;\n\n const outerRadius = Math.min(width, height) / 2 - margin;\n let innerRadius = Math.min(width, height) / 2 - margin * 2;\n if (donutThickerValue) {\n innerRadius = outerRadius - donutThickerValue;\n }\n\n\n\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${width / 2}, ${height / 2})`);\n const pie = d3\n .pie()\n .value((d: DataPoint) => getSingleNumberFromString(d.value)).padAngle(0);\n\n const path = d3.arc().outerRadius(outerRadius).innerRadius(innerRadius)\n\n const pies = g\n .selectAll(\".arc\")\n .data(pie(data))\n .enter()\n .append(\"g\")\n .attr(\"class\", \"arc\");\n\n\n pies\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"fill\", (d: DataPoint) => d?.data?.color).attr(\"stroke\", \"none\");\n g.append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-size\", \"18px\")\n .attr(\"font-weight\", \"600\")\n .attr(\"alignment-baseline\", `central`)\n .html(total);\n g.append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .attr('maring-top', \"20px\")\n .attr(\"font-size\", \"13px\")\n .attr(\"font-weight\", \"600\")\n .attr(\"dy\", \"2em\")\n .attr(\"color\", \"#7B7C7F\")\n .html(title);\n\n }, [data, height, total, width, defaultCurrencySymbol, donutThickerValue, CustomLegends, title]);\n\n if (!legend) {\n return <svg ref={svgRef} width={width} height={height}></svg>;\n }\n\n return (\n <>\n <div className={`donut-chart-container ${direction}`}>\n <div>\n <svg ref={svgRef} width={width} height={height}></svg>\n </div>\n\n\n {CustomLegends ? (\n <CustomLegends data={data} /> // Render the custom component\n ) : (\n <div className='donut-legend'>\n <div className={`donut-chart-legend ${direction}`}>\n {data.map((d: DataPoint) => (\n <div\n className=\"legend\"\n key={d.label}\n style={{ borderLeft: `0.188rem solid ${d.color}` }}\n >\n <div className=\"legend-title\" style={{ color: `${d.labelColor}` }}>{d.label}</div>\n <div className=\"legend-value\">\n <Typography\n type=\"s5\"\n weight=\"medium\"\n color={d.valueColor}\n style={{\n whiteSpace: 'nowrap'\n }}\n >\n {formatNumber(d.value, defaultCurrencySymbol)}\n </Typography>\n </div>\n </div>\n ))\n }\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport default DonutChart;\n"],"names":["formatNumber","num","defaultCurrencySymbol","toFixed","data","height","width","legend","direction","total","donutThickerValue","CustomLegends","title","svgRef","useRef","user","useAuth","_a","currency_data","symbol","useEffect","current","svg","d3.select","selectAll","remove","outerRadius","Math","min","innerRadius","margin","g","append","attr","pie","d3.pie","value","d","str","match","Number","getSingleNumberFromString","padAngle","path","d3.arc","enter","color","html","children","jsxs","className","jsx","ref","map","style","borderLeft","labelColor","label","Typography","type","weight","valueColor","whiteSpace"],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useRef, useState, useMemo, useEffect } from "react";
3
+ import { useAuth } from "../../../../hooks/useAuth/index.esm.js";
4
+ import band from "../../../../node_modules/d3-scale/src/band/index.esm.js";
5
+ import linear from "../../../../node_modules/d3-scale/src/linear/index.esm.js";
6
+ import max from "../../../../node_modules/d3-array/src/max/index.esm.js";
7
+ import select from "../../../../node_modules/d3-selection/src/select/index.esm.js";
8
+ import { axisBottom, axisLeft } from "../../../../node_modules/d3-axis/src/axis/index.esm.js";
9
+ import { format } from "../../../../node_modules/d3-format/src/defaultLocale/index.esm.js";
10
+ const formatNumber = (num, symbol) => {
11
+ return `${symbol} ${format(".2s")(num).replace("k", "K")}`;
12
+ };
13
+ const GroupedBarChart = ({
14
+ chartData,
15
+ height = 500,
16
+ barWidth = 40,
17
+ margin = { top: 40, right: 20, bottom: 40, left: 50 },
18
+ line = false
19
+ }) => {
20
+ var _a;
21
+ const svgRef = useRef(null);
22
+ const wrapperRef = useRef(null);
23
+ const scrollContainerRef = useRef(null);
24
+ const [containerWidth, setContainerWidth] = useState(0);
25
+ const maxValue = useMemo(() => Math.max(...chartData.map((d) => d.data.map((v) => v.value)).flat()), [chartData]);
26
+ const needsHorizontalScroll = chartData.length > 12;
27
+ const minGroupWidth = 120;
28
+ const calculatedChartWidth = needsHorizontalScroll ? Math.max(chartData.length * minGroupWidth, containerWidth) : containerWidth;
29
+ const { user } = useAuth();
30
+ const defaultCurrencySymbol = ((_a = user == null ? void 0 : user.currency_data) == null ? void 0 : _a.symbol) || "";
31
+ useEffect(() => {
32
+ const wrapper = wrapperRef.current;
33
+ const resizeObserver = new ResizeObserver((entries) => {
34
+ if (entries[0]) {
35
+ const newWidth = entries[0].contentRect.width;
36
+ setContainerWidth(newWidth);
37
+ }
38
+ });
39
+ if (wrapper) {
40
+ resizeObserver.observe(wrapper);
41
+ }
42
+ return () => {
43
+ if (wrapper) {
44
+ resizeObserver.unobserve(wrapper);
45
+ }
46
+ };
47
+ }, []);
48
+ useEffect(() => {
49
+ if (containerWidth === 0) return;
50
+ const chartWidth = calculatedChartWidth - margin.left - margin.right;
51
+ const chartHeight = maxValue ? height - margin.top - margin.bottom : 0;
52
+ select(svgRef.current).selectAll("*").remove();
53
+ const svg = select(svgRef.current).attr("height", height).append("g").attr("transform", `translate(${margin.left}, ${maxValue ? margin.top : height - 50})`);
54
+ const x0 = band().domain(chartData.map((d) => d.month)).range([0, chartWidth]).padding(0.2);
55
+ const x1 = band().domain(["Total Transaction", "Total Value", "Average Value"]).range([0, x0.bandwidth()]).padding(0.1);
56
+ const y = linear().domain([0, max(chartData, (d) => max(d.data, (data) => data.value))]).nice().range([chartHeight, 0]);
57
+ const xAxis = svg.append("g").attr("class", "x-axis").attr("transform", `translate(0, ${chartHeight})`).call(axisBottom(x0).tickPadding(20));
58
+ const yAxis = svg.append("g").attr("class", "y-axis").call(axisLeft(y).tickPadding(10).tickFormat((d) => formatNumber(d, defaultCurrencySymbol)));
59
+ yAxis.select(".domain").attr("stroke", "none");
60
+ xAxis.select(".domain").attr("stroke", "none");
61
+ if (line) {
62
+ svg.selectAll(".grid-line").data(y.ticks()).enter().append("line").attr("class", "grid-line").attr("x1", 0).attr("x2", chartWidth).attr("y1", (d) => y(d)).attr("y2", (d) => y(d)).style("stroke", "#ddd").style("stroke-dasharray", "3,3").style("stroke-width", 1);
63
+ }
64
+ const monthGroups = svg.selectAll(".month-group").data(chartData).enter().append("g").attr("class", "month-group").attr("transform", (d) => `translate(${x0(d.month)}, 0)`);
65
+ monthGroups.selectAll("rect").data((d) => d.data).enter().append("rect").attr("x", (d) => x1(d.type) + (x1.bandwidth() - barWidth) / 2).attr("y", (d) => y(d.value)).attr("width", barWidth).attr("height", (d) => chartHeight - y(d.value)).attr("fill", (d) => d.color).attr("rx", 5).attr("ry", 5);
66
+ }, [chartData, barWidth, height, calculatedChartWidth, containerWidth, line, margin, defaultCurrencySymbol, maxValue]);
67
+ return /* @__PURE__ */ jsx("div", { ref: wrapperRef, style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsx("div", { style: { position: "relative" }, children: /* @__PURE__ */ jsx(
68
+ "div",
69
+ {
70
+ ref: scrollContainerRef,
71
+ style: {
72
+ width: "100%",
73
+ overflowX: needsHorizontalScroll ? "auto" : "hidden",
74
+ overflowY: "hidden"
75
+ },
76
+ children: /* @__PURE__ */ jsx(
77
+ "svg",
78
+ {
79
+ ref: svgRef,
80
+ width: calculatedChartWidth,
81
+ height,
82
+ viewBox: `0 0 ${calculatedChartWidth} ${height}`,
83
+ style: { display: "block" }
84
+ }
85
+ )
86
+ }
87
+ ) }) });
88
+ };
89
+ export {
90
+ GroupedBarChart as default
91
+ };
92
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../../src/components/charts/groupBarChart/GroupBarChart.tsx"],"sourcesContent":["import React, { useRef, useEffect, useState, useMemo } from 'react';\nimport * as d3 from 'd3';\nimport { useAuth } from '../../../hooks/useAuth';\n\nexport interface IGroupChartProps {\n chartData: any[],\n height?: number,\n margin?: any,\n barWidth?: number,\n line?: boolean\n}\n\nconst formatNumber = (num: number, symbol) => {\n return `${symbol} ${d3.format(\".2s\")(num).replace('k', 'K')}`;\n};\n\nconst GroupedBarChart = ({ \n chartData, \n height = 500, \n barWidth = 40, \n margin = { top: 40, right: 20, bottom: 40, left: 50 }, \n line = false \n}: IGroupChartProps) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n const maxValue = useMemo(() => Math.max(...chartData.map((d) => d.data.map(v=>v.value)).flat()), [chartData]);\n\n const needsHorizontalScroll = chartData.length > 12;\n const minGroupWidth = 120; \n const calculatedChartWidth = needsHorizontalScroll \n ? Math.max(chartData.length * minGroupWidth, containerWidth)\n : containerWidth;\n\n const { user } = useAuth();\n const defaultCurrencySymbol = user?.currency_data?.symbol || '';\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries[0]) {\n const newWidth = entries[0].contentRect.width;\n setContainerWidth(newWidth);\n }\n });\n\n if (wrapper) {\n resizeObserver.observe(wrapper);\n }\n\n return () => {\n if (wrapper) {\n resizeObserver.unobserve(wrapper);\n }\n };\n }, []);\n\n useEffect(() => {\n if (containerWidth === 0) return; \n \n const chartWidth = calculatedChartWidth - margin.left - margin.right;\n const chartHeight = maxValue ? height - margin.top - margin.bottom : 0;\n \n d3.select(svgRef.current).selectAll('*').remove();\n \n const svg = d3.select(svgRef.current)\n .attr('height', height)\n .append('g')\n .attr('transform', `translate(${margin.left}, ${maxValue ? margin.top : height-50})`);\n\n const x0 = d3.scaleBand()\n .domain(chartData.map(d => d.month))\n .range([0, chartWidth])\n .padding(0.2);\n\n const x1 = d3.scaleBand()\n .domain(['Total Transaction', 'Total Value', 'Average Value'])\n .range([0, x0.bandwidth()])\n .padding(0.1);\n\n const y = d3.scaleLinear()\n .domain([0, d3.max(chartData, d => d3.max(d.data, data => data.value))])\n .nice()\n .range([chartHeight, 0]);\n\n const xAxis = svg.append('g')\n .attr('class', 'x-axis')\n .attr('transform', `translate(0, ${chartHeight})`)\n .call(d3.axisBottom(x0).tickPadding(20));\n \n const yAxis = svg.append('g')\n .attr('class', 'y-axis')\n .call(d3.axisLeft(y).tickPadding(10).tickFormat((d: any) => formatNumber(d, defaultCurrencySymbol)));\n\n yAxis.select(\".domain\").attr(\"stroke\", \"none\");\n xAxis.select(\".domain\").attr(\"stroke\", \"none\");\n \n if (line) {\n svg.selectAll('.grid-line')\n .data(y.ticks())\n .enter()\n .append('line')\n .attr('class', 'grid-line')\n .attr('x1', 0)\n .attr('x2', chartWidth)\n .attr('y1', d => y(d))\n .attr('y2', d => y(d))\n .style('stroke', '#ddd')\n .style('stroke-dasharray', '3,3') // Dotted line\n .style('stroke-width', 1);\n }\n\n const monthGroups = svg.selectAll('.month-group')\n .data(chartData)\n .enter()\n .append('g')\n .attr('class', 'month-group')\n .attr('transform', d => `translate(${x0(d.month)}, 0)`);\n\n monthGroups.selectAll('rect')\n .data(d => d.data)\n .enter()\n .append('rect')\n .attr('x', d => x1(d.type) + (x1.bandwidth() - barWidth) / 2)\n .attr('y', d => y(d.value))\n .attr('width', barWidth)\n .attr('height', d => chartHeight - y(d.value))\n .attr('fill', d => d.color)\n .attr('rx', 5)\n .attr('ry', 5);\n\n }, [chartData, barWidth, height, calculatedChartWidth, containerWidth, line, margin, defaultCurrencySymbol, maxValue]);\n\n return (\n <div ref={wrapperRef} style={{ width: '100%', height: '100%' }}>\n <div style={{ position: 'relative' }}>\n <div \n ref={scrollContainerRef}\n style={{ \n width: '100%', \n overflowX: needsHorizontalScroll ? 'auto' : 'hidden',\n overflowY: 'hidden'\n }}\n >\n <svg \n ref={svgRef} \n width={calculatedChartWidth} \n height={height} \n viewBox={`0 0 ${calculatedChartWidth} ${height}`}\n style={{ display: 'block' }}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default GroupedBarChart;"],"names":["d3.format","d3.select","d3.scaleBand","d3.scaleLinear","d3.max","d3.axisBottom","d3.axisLeft"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),a=require("../../../../hooks/useAuth/index.js"),r=require("../../../../node_modules/d3-scale/src/band/index.js"),s=require("../../../../node_modules/d3-scale/src/linear/index.js"),l=require("../../../../node_modules/d3-array/src/max/index.js"),d=require("../../../../node_modules/d3-selection/src/select/index.js"),n=require("../../../../node_modules/d3-axis/src/axis/index.js"),i=require("../../../../node_modules/d3-format/src/defaultLocale/index.js");exports.default=({chartData:o,height:u=500,barWidth:c=40,margin:h={top:40,right:20,bottom:40,left:50},line:f=!1})=>{var m;const p=t.useRef(null),x=t.useRef(null),g=t.useRef(null),[v,y]=t.useState(0),j=t.useMemo(()=>Math.max(...o.map(e=>e.data.map(e=>e.value)).flat()),[o]),b=o.length>12,k=b?Math.max(120*o.length,v):v,{user:w}=a.useAuth(),q=(null==(m=null==w?void 0:w.currency_data)?void 0:m.symbol)||"";return t.useEffect(()=>{const e=x.current,t=new ResizeObserver(e=>{if(e[0]){const t=e[0].contentRect.width;y(t)}});return e&&t.observe(e),()=>{e&&t.unobserve(e)}},[]),t.useEffect(()=>{if(0===v)return;const e=k-h.left-h.right,t=j?u-h.top-h.bottom:0;d.default(p.current).selectAll("*").remove();const a=d.default(p.current).attr("height",u).append("g").attr("transform",`translate(${h.left}, ${j?h.top:u-50})`),m=r.default().domain(o.map(e=>e.month)).range([0,e]).padding(.2),x=r.default().domain(["Total Transaction","Total Value","Average Value"]).range([0,m.bandwidth()]).padding(.1),g=s.default().domain([0,l.default(o,e=>l.default(e.data,e=>e.value))]).nice().range([t,0]),y=a.append("g").attr("class","x-axis").attr("transform",`translate(0, ${t})`).call(n.axisBottom(m).tickPadding(20));a.append("g").attr("class","y-axis").call(n.axisLeft(g).tickPadding(10).tickFormat(e=>{return t=e,`${q} ${i.format(".2s")(t).replace("k","K")}`;var t})).select(".domain").attr("stroke","none"),y.select(".domain").attr("stroke","none"),f&&a.selectAll(".grid-line").data(g.ticks()).enter().append("line").attr("class","grid-line").attr("x1",0).attr("x2",e).attr("y1",e=>g(e)).attr("y2",e=>g(e)).style("stroke","#ddd").style("stroke-dasharray","3,3").style("stroke-width",1),a.selectAll(".month-group").data(o).enter().append("g").attr("class","month-group").attr("transform",e=>`translate(${m(e.month)}, 0)`).selectAll("rect").data(e=>e.data).enter().append("rect").attr("x",e=>x(e.type)+(x.bandwidth()-c)/2).attr("y",e=>g(e.value)).attr("width",c).attr("height",e=>t-g(e.value)).attr("fill",e=>e.color).attr("rx",5).attr("ry",5)},[o,c,u,k,v,f,h,q,j]),/* @__PURE__ */e.jsx("div",{ref:x,style:{width:"100%",height:"100%"},children:/* @__PURE__ */e.jsx("div",{style:{position:"relative"},children:/* @__PURE__ */e.jsx("div",{ref:g,style:{width:"100%",overflowX:b?"auto":"hidden",overflowY:"hidden"},children:/* @__PURE__ */e.jsx("svg",{ref:p,width:k,height:u,viewBox:`0 0 ${k} ${u}`,style:{display:"block"}})})})})};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/charts/groupBarChart/GroupBarChart.tsx"],"sourcesContent":["import React, { useRef, useEffect, useState, useMemo } from 'react';\nimport * as d3 from 'd3';\nimport { useAuth } from '../../../hooks/useAuth';\n\nexport interface IGroupChartProps {\n chartData: any[],\n height?: number,\n margin?: any,\n barWidth?: number,\n line?: boolean\n}\n\nconst formatNumber = (num: number, symbol) => {\n return `${symbol} ${d3.format(\".2s\")(num).replace('k', 'K')}`;\n};\n\nconst GroupedBarChart = ({ \n chartData, \n height = 500, \n barWidth = 40, \n margin = { top: 40, right: 20, bottom: 40, left: 50 }, \n line = false \n}: IGroupChartProps) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n const maxValue = useMemo(() => Math.max(...chartData.map((d) => d.data.map(v=>v.value)).flat()), [chartData]);\n\n const needsHorizontalScroll = chartData.length > 12;\n const minGroupWidth = 120; \n const calculatedChartWidth = needsHorizontalScroll \n ? Math.max(chartData.length * minGroupWidth, containerWidth)\n : containerWidth;\n\n const { user } = useAuth();\n const defaultCurrencySymbol = user?.currency_data?.symbol || '';\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries[0]) {\n const newWidth = entries[0].contentRect.width;\n setContainerWidth(newWidth);\n }\n });\n\n if (wrapper) {\n resizeObserver.observe(wrapper);\n }\n\n return () => {\n if (wrapper) {\n resizeObserver.unobserve(wrapper);\n }\n };\n }, []);\n\n useEffect(() => {\n if (containerWidth === 0) return; \n \n const chartWidth = calculatedChartWidth - margin.left - margin.right;\n const chartHeight = maxValue ? height - margin.top - margin.bottom : 0;\n \n d3.select(svgRef.current).selectAll('*').remove();\n \n const svg = d3.select(svgRef.current)\n .attr('height', height)\n .append('g')\n .attr('transform', `translate(${margin.left}, ${maxValue ? margin.top : height-50})`);\n\n const x0 = d3.scaleBand()\n .domain(chartData.map(d => d.month))\n .range([0, chartWidth])\n .padding(0.2);\n\n const x1 = d3.scaleBand()\n .domain(['Total Transaction', 'Total Value', 'Average Value'])\n .range([0, x0.bandwidth()])\n .padding(0.1);\n\n const y = d3.scaleLinear()\n .domain([0, d3.max(chartData, d => d3.max(d.data, data => data.value))])\n .nice()\n .range([chartHeight, 0]);\n\n const xAxis = svg.append('g')\n .attr('class', 'x-axis')\n .attr('transform', `translate(0, ${chartHeight})`)\n .call(d3.axisBottom(x0).tickPadding(20));\n \n const yAxis = svg.append('g')\n .attr('class', 'y-axis')\n .call(d3.axisLeft(y).tickPadding(10).tickFormat((d: any) => formatNumber(d, defaultCurrencySymbol)));\n\n yAxis.select(\".domain\").attr(\"stroke\", \"none\");\n xAxis.select(\".domain\").attr(\"stroke\", \"none\");\n \n if (line) {\n svg.selectAll('.grid-line')\n .data(y.ticks())\n .enter()\n .append('line')\n .attr('class', 'grid-line')\n .attr('x1', 0)\n .attr('x2', chartWidth)\n .attr('y1', d => y(d))\n .attr('y2', d => y(d))\n .style('stroke', '#ddd')\n .style('stroke-dasharray', '3,3') // Dotted line\n .style('stroke-width', 1);\n }\n\n const monthGroups = svg.selectAll('.month-group')\n .data(chartData)\n .enter()\n .append('g')\n .attr('class', 'month-group')\n .attr('transform', d => `translate(${x0(d.month)}, 0)`);\n\n monthGroups.selectAll('rect')\n .data(d => d.data)\n .enter()\n .append('rect')\n .attr('x', d => x1(d.type) + (x1.bandwidth() - barWidth) / 2)\n .attr('y', d => y(d.value))\n .attr('width', barWidth)\n .attr('height', d => chartHeight - y(d.value))\n .attr('fill', d => d.color)\n .attr('rx', 5)\n .attr('ry', 5);\n\n }, [chartData, barWidth, height, calculatedChartWidth, containerWidth, line, margin, defaultCurrencySymbol, maxValue]);\n\n return (\n <div ref={wrapperRef} style={{ width: '100%', height: '100%' }}>\n <div style={{ position: 'relative' }}>\n <div \n ref={scrollContainerRef}\n style={{ \n width: '100%', \n overflowX: needsHorizontalScroll ? 'auto' : 'hidden',\n overflowY: 'hidden'\n }}\n >\n <svg \n ref={svgRef} \n width={calculatedChartWidth} \n height={height} \n viewBox={`0 0 ${calculatedChartWidth} ${height}`}\n style={{ display: 'block' }}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default GroupedBarChart;"],"names":["chartData","height","barWidth","margin","top","right","bottom","left","line","svgRef","useRef","wrapperRef","scrollContainerRef","containerWidth","setContainerWidth","useState","maxValue","useMemo","Math","max","map","d","data","v","value","flat","needsHorizontalScroll","length","calculatedChartWidth","user","useAuth","defaultCurrencySymbol","_a","currency_data","symbol","useEffect","wrapper","current","resizeObserver","ResizeObserver","entries","newWidth","contentRect","width","observe","unobserve","chartWidth","chartHeight","d3.select","selectAll","remove","svg","attr","append","x0","d3.scaleBand","domain","month","range","padding","x1","bandwidth","y","d3.scaleLinear","d3.max","nice","xAxis","call","d3.axisBottom","tickPadding","d3.axisLeft","tickFormat","formatNumber","num","d3.format","replace","select","ticks","enter","style","type","color","ref","children","jsx","position","overflowX","overflowY","viewBox","display"],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useRef, useState, useEffect } from "react";
3
+ import linear from "../../../../node_modules/d3-scale/src/linear/index.esm.js";
4
+ import max from "../../../../node_modules/d3-array/src/max/index.esm.js";
5
+ import select from "../../../../node_modules/d3-selection/src/select/index.esm.js";
6
+ import line from "../../../../node_modules/d3-shape/src/line/index.esm.js";
7
+ import area from "../../../../node_modules/d3-shape/src/area/index.esm.js";
8
+ const AreaLineChart = ({
9
+ data,
10
+ width = "100%",
11
+ // Default to responsive width
12
+ height = 200,
13
+ // Set a default numeric height
14
+ lineColor = "#ADE7CB",
15
+ lineFillColor = "#EBF9F2",
16
+ ...rest
17
+ }) => {
18
+ const svgRef = useRef(null);
19
+ const containerRef = useRef(null);
20
+ const [containerWidth, setContainerWidth] = useState(0);
21
+ useEffect(() => {
22
+ const resizeObserver = new ResizeObserver(() => {
23
+ if (containerRef.current) {
24
+ setContainerWidth(containerRef.current.clientWidth);
25
+ }
26
+ });
27
+ if (containerRef.current) {
28
+ resizeObserver.observe(containerRef.current);
29
+ setContainerWidth(containerRef.current.clientWidth);
30
+ }
31
+ return () => resizeObserver.disconnect();
32
+ }, []);
33
+ useEffect(() => {
34
+ if (containerWidth === 0) return;
35
+ const svg = select(svgRef.current);
36
+ svg.selectAll("*").remove();
37
+ const margin = { top: 5, left: 0, right: 0 };
38
+ const chartWidth = containerWidth - margin.left - margin.right;
39
+ const chartHeight = height;
40
+ const x = linear().domain([0, data.length - 1]).range([0, chartWidth]);
41
+ const y = linear().domain([0, max(data, (d) => d.value) || 1]).range([chartHeight, 0]);
42
+ const line$1 = line().x((_, i) => x(i)).y((d) => y(d.value));
43
+ const area$1 = area().x((_, i) => x(i)).y0(chartHeight).y1((d) => y(d.value));
44
+ const chart = svg.append("g").attr("transform", `translate(${margin.left},${margin.top})`);
45
+ chart.append("path").datum(data).attr("class", "line").attr("d", line$1).style("fill", "none").style("stroke", lineColor).style("stroke-width", 5);
46
+ chart.append("path").datum(data).attr("class", "area").attr("d", area$1).style("fill", lineFillColor);
47
+ chart.selectAll(".domain").remove();
48
+ chart.selectAll(".tick line").remove();
49
+ }, [data, height, lineColor, lineFillColor, containerWidth]);
50
+ return /* @__PURE__ */ jsx("div", { ref: containerRef, style: { width, height }, children: /* @__PURE__ */ jsx("svg", { ref: svgRef, width: "100%", height: "100%", ...rest }) });
51
+ };
52
+ export {
53
+ AreaLineChart as default
54
+ };
55
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../../src/components/charts/line-chart/area-lineChart.tsx"],"sourcesContent":["import React, { useRef, useEffect, useState } from \"react\";\nimport * as d3 from \"d3\";\n\ninterface DataPoint {\n label: string;\n value: number;\n}\n\ninterface LineChartProps {\n data: DataPoint[];\n width?: number | string; // Accept string for percentage width\n height?: number | string;\n lineColor?: string;\n lineFillColor?: string;\n}\n\nconst AreaLineChart: React.FC<LineChartProps> = ({\n data,\n width = \"100%\", // Default to responsive width\n height = 200, // Set a default numeric height\n lineColor = \"#ADE7CB\",\n lineFillColor = \"#EBF9F2\",\n ...rest\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const containerRef = useRef<HTMLDivElement>(null); // Reference to the container\n const [containerWidth, setContainerWidth] = useState(0);\n\n useEffect(() => {\n // Set up ResizeObserver to track container width\n const resizeObserver = new ResizeObserver(() => {\n if (containerRef.current) {\n setContainerWidth(containerRef.current.clientWidth);\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n setContainerWidth(containerRef.current.clientWidth);\n }\n\n return () => resizeObserver.disconnect();\n }, []);\n\n useEffect(() => {\n if (containerWidth === 0) return; // Skip rendering until we have a valid width\n\n const svg = d3.select(svgRef.current);\n svg.selectAll(\"*\").remove(); // Clear previous content\n\n const margin = { top: 5, left: 0, right: 0, bottom: 5 };\n const chartWidth = containerWidth - margin.left - margin.right; // Use container width\n const chartHeight = height as number;\n\n const x = d3\n .scaleLinear()\n .domain([0, data.length - 1])\n .range([0, chartWidth]);\n\n const y = d3\n .scaleLinear()\n .domain([0, d3.max(data, (d: DataPoint) => d.value) || 1]) // Fallback for empty data\n .range([chartHeight, 0]);\n\n const line = d3\n .line<DataPoint>()\n .x((_, i) => x(i))\n .y((d) => y(d.value));\n\n const area = d3\n .area<DataPoint>()\n .x((_, i) => x(i))\n .y0(chartHeight)\n .y1((d) => y(d.value));\n\n const chart = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n chart\n .append(\"path\")\n .datum(data)\n .attr(\"class\", \"line\")\n .attr(\"d\", line)\n .style(\"fill\", \"none\")\n .style(\"stroke\", lineColor)\n .style(\"stroke-width\", 5);\n\n chart\n .append(\"path\")\n .datum(data)\n .attr(\"class\", \"area\")\n .attr(\"d\", area)\n .style(\"fill\", lineFillColor);\n\n chart.selectAll(\".domain\").remove();\n chart.selectAll(\".tick line\").remove();\n }, [data, height, lineColor, lineFillColor, containerWidth]);\n\n return (\n <div ref={containerRef} style={{ width: width, height: height }}>\n <svg ref={svgRef} width=\"100%\" height=\"100%\" {...rest}></svg>\n </div>\n );\n};\n\nexport default AreaLineChart;\n"],"names":["d3.select","d3.scaleLinear","d3.max","line","d3.line","area","d3.area"],"mappings":";;;;;;;AAgBA,MAAM,gBAA0C,CAAC;AAAA,EAC/C;AAAA,EACA,QAAQ;AAAA;AAAA,EACR,SAAS;AAAA;AAAA,EACT,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,GAAG;AACL,MAAM;AACJ,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,eAAe,OAAuB,IAAI;AAChD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,CAAC;AAEtD,YAAU,MAAM;AAEd,UAAM,iBAAiB,IAAI,eAAe,MAAM;AAC9C,UAAI,aAAa,SAAS;AACxB,0BAAkB,aAAa,QAAQ,WAAW;AAAA,MACpD;AAAA,IACF,CAAC;AAED,QAAI,aAAa,SAAS;AACxB,qBAAe,QAAQ,aAAa,OAAO;AAC3C,wBAAkB,aAAa,QAAQ,WAAW;AAAA,IACpD;AAEA,WAAO,MAAM,eAAe,WAAA;AAAA,EAC9B,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACd,QAAI,mBAAmB,EAAG;AAE1B,UAAM,MAAMA,OAAU,OAAO,OAAO;AACpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,EAAa;AACtD,UAAM,aAAa,iBAAiB,OAAO,OAAO,OAAO;AACzD,UAAM,cAAc;AAEpB,UAAM,IAAIC,OACP,EACA,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,EAC3B,MAAM,CAAC,GAAG,UAAU,CAAC;AAExB,UAAM,IAAIA,SAEP,OAAO,CAAC,GAAGC,IAAO,MAAM,CAAC,MAAiB,EAAE,KAAK,KAAK,CAAC,CAAC,EACxD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,UAAMC,SAAOC,KACV,EACA,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,EAChB,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC;AAEtB,UAAMC,SAAOC,OAEV,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,EAChB,GAAG,WAAW,EACd,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC;AAEvB,UAAM,QAAQ,IACX,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG;AAE9D,UACG,OAAO,MAAM,EACb,MAAM,IAAI,EACV,KAAK,SAAS,MAAM,EACpB,KAAK,KAAKH,MAAI,EACd,MAAM,QAAQ,MAAM,EACpB,MAAM,UAAU,SAAS,EACzB,MAAM,gBAAgB,CAAC;AAE1B,UACG,OAAO,MAAM,EACb,MAAM,IAAI,EACV,KAAK,SAAS,MAAM,EACpB,KAAK,KAAKE,MAAI,EACd,MAAM,QAAQ,aAAa;AAE9B,UAAM,UAAU,SAAS,EAAE,OAAA;AAC3B,UAAM,UAAU,YAAY,EAAE,OAAA;AAAA,EAChC,GAAG,CAAC,MAAM,QAAQ,WAAW,eAAe,cAAc,CAAC;AAE3D,6BACG,OAAA,EAAI,KAAK,cAAc,OAAO,EAAE,OAAc,OAAA,GAC7C,8BAAC,OAAA,EAAI,KAAK,QAAQ,OAAM,QAAO,QAAO,QAAQ,GAAG,MAAM,GACzD;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("../../../../node_modules/d3-scale/src/linear/index.js"),l=require("../../../../node_modules/d3-array/src/max/index.js"),s=require("../../../../node_modules/d3-selection/src/select/index.js"),n=require("../../../../node_modules/d3-shape/src/line/index.js"),a=require("../../../../node_modules/d3-shape/src/area/index.js");exports.default=({data:d,width:i="100%",height:u=200,lineColor:c="#ADE7CB",lineFillColor:o="#EBF9F2",...f})=>{const h=t.useRef(null),m=t.useRef(null),[p,x]=t.useState(0);return t.useEffect(()=>{const e=new ResizeObserver(()=>{m.current&&x(m.current.clientWidth)});return m.current&&(e.observe(m.current),x(m.current.clientWidth)),()=>e.disconnect()},[]),t.useEffect(()=>{if(0===p)return;const e=s.default(h.current);e.selectAll("*").remove();const t=p-0-0,i=u,f=r.default().domain([0,d.length-1]).range([0,t]),m=r.default().domain([0,l.default(d,e=>e.value)||1]).range([i,0]),x=n.default().x((e,t)=>f(t)).y(e=>m(e.value)),v=a.default().x((e,t)=>f(t)).y0(i).y1(e=>m(e.value)),y=e.append("g").attr("transform","translate(0,5)");y.append("path").datum(d).attr("class","line").attr("d",x).style("fill","none").style("stroke",c).style("stroke-width",5),y.append("path").datum(d).attr("class","area").attr("d",v).style("fill",o),y.selectAll(".domain").remove(),y.selectAll(".tick line").remove()},[d,u,c,o,p]),/* @__PURE__ */e.jsx("div",{ref:m,style:{width:i,height:u},children:/* @__PURE__ */e.jsx("svg",{ref:h,width:"100%",height:"100%",...f})})};
2
+ //# sourceMappingURL=index.js.map