@carto/ps-react-ui 4.3.0-widgets.0 → 5.0.0-widgets.10

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 (284) hide show
  1. package/dist/components.js +25 -23
  2. package/dist/components.js.map +1 -1
  3. package/dist/error-B2IJ9d2h.js +38 -0
  4. package/dist/error-B2IJ9d2h.js.map +1 -0
  5. package/dist/exports-Cr43OCul.js +51 -0
  6. package/dist/exports-Cr43OCul.js.map +1 -0
  7. package/dist/{lasso-tool-BC-rsMMW.js → lasso-tool-CYn3ivf-.js} +165 -183
  8. package/dist/lasso-tool-CYn3ivf-.js.map +1 -0
  9. package/dist/no-data-C54XJt13.js +61 -0
  10. package/dist/no-data-C54XJt13.js.map +1 -0
  11. package/dist/note-Clng2ej6.js +124 -0
  12. package/dist/note-Clng2ej6.js.map +1 -0
  13. package/dist/options-D9wflre6.js +49 -0
  14. package/dist/options-D9wflre6.js.map +1 -0
  15. package/dist/row-DrHwXNvF.js +35 -0
  16. package/dist/row-DrHwXNvF.js.map +1 -0
  17. package/dist/series-Do02NQUF.js +91 -0
  18. package/dist/series-Do02NQUF.js.map +1 -0
  19. package/dist/{smart-tooltip-BSlcAkBM.js → smart-tooltip-BEtBaIdz.js} +2 -2
  20. package/dist/{smart-tooltip-BSlcAkBM.js.map → smart-tooltip-BEtBaIdz.js.map} +1 -1
  21. package/dist/styles-dOu_pRNb.js +77 -0
  22. package/dist/styles-dOu_pRNb.js.map +1 -0
  23. package/dist/tooltip-BDnrRKrp.js +25 -0
  24. package/dist/tooltip-BDnrRKrp.js.map +1 -0
  25. package/dist/types/hooks/index.d.ts +2 -0
  26. package/dist/types/hooks/use-debounce.d.ts +19 -0
  27. package/dist/types/hooks/use-widget-ref.d.ts +17 -0
  28. package/dist/types/widgets/_shared/chart-config/config-factory.d.ts +5 -11
  29. package/dist/types/widgets/_shared/chart-config/option-builders.d.ts +3 -8
  30. package/dist/types/widgets/actions/change-column/change-column-icon.d.ts +1 -0
  31. package/dist/types/widgets/actions/change-column/change-column.d.ts +16 -0
  32. package/dist/types/widgets/actions/change-column/sortable-column-item.d.ts +9 -0
  33. package/dist/types/widgets/actions/change-column/types.d.ts +19 -0
  34. package/dist/types/widgets/actions/download/download.d.ts +1 -1
  35. package/dist/types/widgets/actions/download/exports.d.ts +1 -1
  36. package/dist/types/widgets/actions/download/types.d.ts +3 -11
  37. package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +1 -1
  38. package/dist/types/widgets/actions/fullscreen/styles.d.ts +6 -0
  39. package/dist/types/widgets/actions/fullscreen/types.d.ts +8 -9
  40. package/dist/types/widgets/actions/index.d.ts +14 -1
  41. package/dist/types/widgets/actions/lock-selection/lock-selection.d.ts +19 -0
  42. package/dist/types/widgets/actions/lock-selection/types.d.ts +38 -0
  43. package/dist/types/widgets/actions/relative-data/relative-data.d.ts +18 -0
  44. package/dist/types/widgets/actions/relative-data/style.d.ts +8 -0
  45. package/dist/types/widgets/actions/relative-data/types.d.ts +27 -0
  46. package/dist/types/widgets/actions/relative-data/utils.d.ts +9 -0
  47. package/dist/types/widgets/actions/relative-data/utils.test.d.ts +1 -0
  48. package/dist/types/widgets/actions/searcher/searcher-toggle.d.ts +18 -0
  49. package/dist/types/widgets/actions/searcher/searcher.d.ts +21 -0
  50. package/dist/types/widgets/actions/searcher/types.d.ts +64 -0
  51. package/dist/types/widgets/actions/shared/styles.d.ts +11 -0
  52. package/dist/types/widgets/actions/stack-toggle/grouped-bar-chart-icon.d.ts +1 -0
  53. package/dist/types/widgets/actions/stack-toggle/stack-toggle.d.ts +16 -0
  54. package/dist/types/widgets/actions/stack-toggle/types.d.ts +25 -0
  55. package/dist/types/widgets/actions/zoom-toggle/index.d.ts +2 -0
  56. package/dist/types/widgets/actions/zoom-toggle/style.d.ts +13 -0
  57. package/dist/types/widgets/actions/zoom-toggle/types.d.ts +41 -0
  58. package/dist/types/widgets/actions/zoom-toggle/zoom-toggle.d.ts +18 -0
  59. package/dist/types/widgets/bar/config.d.ts +5 -4
  60. package/dist/types/widgets/bar/index.d.ts +2 -2
  61. package/dist/types/widgets/bar/types.d.ts +6 -12
  62. package/dist/types/widgets/category/category-ui.d.ts +2 -0
  63. package/dist/types/widgets/category/components/category-bar.d.ts +7 -0
  64. package/dist/types/widgets/category/components/category-legend.d.ts +6 -0
  65. package/dist/types/widgets/category/components/category-row-multi.d.ts +11 -0
  66. package/dist/types/widgets/category/components/category-row-other.d.ts +6 -0
  67. package/dist/types/widgets/category/components/category-row-single.d.ts +11 -0
  68. package/dist/types/widgets/category/components/index.d.ts +10 -0
  69. package/dist/types/widgets/category/config.d.ts +16 -0
  70. package/dist/types/widgets/category/index.d.ts +6 -0
  71. package/dist/types/widgets/category/skeleton.d.ts +1 -0
  72. package/dist/types/widgets/category/style.d.ts +121 -0
  73. package/dist/types/widgets/category/types.d.ts +34 -0
  74. package/dist/types/widgets/echart/echart-ui.d.ts +1 -1
  75. package/dist/types/widgets/echart/index.d.ts +2 -2
  76. package/dist/types/widgets/echart/options.d.ts +2 -3
  77. package/dist/types/widgets/echart/types.d.ts +12 -10
  78. package/dist/types/widgets/echart/utils.d.ts +22 -16
  79. package/dist/types/widgets/error/error.d.ts +2 -0
  80. package/dist/types/widgets/error/index.d.ts +2 -0
  81. package/dist/types/widgets/error/types.d.ts +12 -0
  82. package/dist/types/widgets/formula/components/row.d.ts +1 -1
  83. package/dist/types/widgets/formula/config.d.ts +4 -2
  84. package/dist/types/widgets/formula/index.d.ts +2 -1
  85. package/dist/types/widgets/formula/types.d.ts +6 -18
  86. package/dist/types/widgets/histogram/config.d.ts +5 -4
  87. package/dist/types/widgets/histogram/index.d.ts +2 -2
  88. package/dist/types/widgets/histogram/types.d.ts +6 -12
  89. package/dist/types/widgets/index.d.ts +8 -4
  90. package/dist/types/widgets/loader/index.d.ts +3 -0
  91. package/dist/types/widgets/loader/loader.d.ts +2 -0
  92. package/dist/types/widgets/loader/types.d.ts +9 -0
  93. package/dist/types/widgets/loader/utils.d.ts +1 -0
  94. package/dist/types/widgets/markdown/config.d.ts +4 -2
  95. package/dist/types/widgets/markdown/index.d.ts +2 -2
  96. package/dist/types/widgets/markdown/markdown-ui.d.ts +1 -1
  97. package/dist/types/widgets/markdown/types.d.ts +6 -16
  98. package/dist/types/widgets/no-data/index.d.ts +2 -0
  99. package/dist/types/widgets/no-data/no-data.d.ts +35 -0
  100. package/dist/types/widgets/no-data/style.d.ts +6 -0
  101. package/dist/types/widgets/no-data/types.d.ts +67 -0
  102. package/dist/types/widgets/note/index.d.ts +2 -2
  103. package/dist/types/widgets/note/note.d.ts +2 -2
  104. package/dist/types/widgets/note/style.d.ts +12 -1
  105. package/dist/types/widgets/note/types.d.ts +4 -3
  106. package/dist/types/widgets/pie/config.d.ts +5 -4
  107. package/dist/types/widgets/pie/index.d.ts +2 -2
  108. package/dist/types/widgets/pie/types.d.ts +6 -12
  109. package/dist/types/widgets/range/config.d.ts +6 -2
  110. package/dist/types/widgets/range/index.d.ts +2 -1
  111. package/dist/types/widgets/range/types.d.ts +6 -17
  112. package/dist/types/widgets/scatterplot/config.d.ts +5 -4
  113. package/dist/types/widgets/scatterplot/index.d.ts +2 -2
  114. package/dist/types/widgets/scatterplot/types.d.ts +6 -12
  115. package/dist/types/widgets/selection-summary/index.d.ts +2 -0
  116. package/dist/types/widgets/selection-summary/selection-summary.d.ts +2 -0
  117. package/dist/types/widgets/{root → selection-summary}/style.d.ts +3 -2
  118. package/dist/types/widgets/selection-summary/types.d.ts +13 -0
  119. package/dist/types/widgets/spread/config.d.ts +10 -2
  120. package/dist/types/widgets/spread/index.d.ts +2 -1
  121. package/dist/types/widgets/spread/types.d.ts +6 -18
  122. package/dist/types/widgets/stores/index.d.ts +2 -0
  123. package/dist/types/widgets/stores/types.d.ts +104 -12
  124. package/dist/types/widgets/stores/widget-store.d.ts +2 -27
  125. package/dist/types/widgets/subheader/index.d.ts +2 -0
  126. package/dist/types/widgets/subheader/style.d.ts +19 -0
  127. package/dist/types/widgets/subheader/subheader.d.ts +2 -0
  128. package/dist/types/widgets/subheader/types.d.ts +10 -0
  129. package/dist/types/widgets/table/components/cell-header.d.ts +5 -0
  130. package/dist/types/widgets/table/components/cell.d.ts +16 -0
  131. package/dist/types/widgets/table/components/index.d.ts +4 -0
  132. package/dist/types/widgets/table/components/pagination-actions.d.ts +5 -0
  133. package/dist/types/widgets/table/components/pagination.d.ts +5 -0
  134. package/dist/types/widgets/table/components/row.d.ts +5 -0
  135. package/dist/types/widgets/table/config.d.ts +17 -0
  136. package/dist/types/widgets/table/helpers.d.ts +38 -0
  137. package/dist/types/widgets/table/helpers.test.d.ts +1 -0
  138. package/dist/types/widgets/table/hooks/index.d.ts +6 -0
  139. package/dist/types/widgets/table/hooks/use-pagination.d.ts +33 -0
  140. package/dist/types/widgets/table/hooks/use-pagination.test.d.ts +1 -0
  141. package/dist/types/widgets/table/hooks/use-selection.d.ts +30 -0
  142. package/dist/types/widgets/table/hooks/use-selection.test.d.ts +1 -0
  143. package/dist/types/widgets/table/hooks/use-sort.d.ts +22 -0
  144. package/dist/types/widgets/table/hooks/use-sort.test.d.ts +1 -0
  145. package/dist/types/widgets/table/index.d.ts +13 -0
  146. package/dist/types/widgets/table/serializer.d.ts +16 -0
  147. package/dist/types/widgets/table/skeleton.d.ts +10 -0
  148. package/dist/types/widgets/table/style.d.ts +33 -0
  149. package/dist/types/widgets/table/table-ui.d.ts +32 -0
  150. package/dist/types/widgets/table/types.d.ts +196 -0
  151. package/dist/types/widgets/timeseries/config.d.ts +5 -4
  152. package/dist/types/widgets/timeseries/index.d.ts +2 -2
  153. package/dist/types/widgets/timeseries/types.d.ts +6 -12
  154. package/dist/types/widgets/toolbar-actions/index.d.ts +2 -0
  155. package/dist/types/widgets/toolbar-actions/styles.d.ts +37 -0
  156. package/dist/types/widgets/toolbar-actions/toolbar-actions.d.ts +8 -0
  157. package/dist/types/widgets/toolbar-actions/types.d.ts +45 -0
  158. package/dist/types/widgets/wrapper/index.d.ts +2 -2
  159. package/dist/types/widgets/wrapper/styles.d.ts +6 -0
  160. package/dist/types/widgets/wrapper/types.d.ts +7 -5
  161. package/dist/types/widgets/wrapper/wrapper-ui.d.ts +1 -1
  162. package/dist/types/widgets/wrapper/wrapper.d.ts +1 -1
  163. package/dist/utils-Dv5Z47UQ.js +144 -0
  164. package/dist/utils-Dv5Z47UQ.js.map +1 -0
  165. package/dist/widget-store-CB6Trp_0.js +131 -0
  166. package/dist/widget-store-CB6Trp_0.js.map +1 -0
  167. package/dist/widgets/actions.js +834 -6
  168. package/dist/widgets/actions.js.map +1 -1
  169. package/dist/widgets/bar.js +190 -4
  170. package/dist/widgets/bar.js.map +1 -1
  171. package/dist/widgets/category.js +467 -0
  172. package/dist/widgets/category.js.map +1 -0
  173. package/dist/widgets/echart.js +120 -8
  174. package/dist/widgets/echart.js.map +1 -1
  175. package/dist/widgets/error.js +5 -0
  176. package/dist/widgets/error.js.map +1 -0
  177. package/dist/widgets/formula.js +118 -20
  178. package/dist/widgets/formula.js.map +1 -1
  179. package/dist/widgets/histogram.js +173 -4
  180. package/dist/widgets/histogram.js.map +1 -1
  181. package/dist/widgets/loader.js +57 -0
  182. package/dist/widgets/loader.js.map +1 -0
  183. package/dist/widgets/markdown.js +127 -0
  184. package/dist/widgets/markdown.js.map +1 -0
  185. package/dist/widgets/no-data.js +5 -0
  186. package/dist/widgets/no-data.js.map +1 -0
  187. package/dist/widgets/note.js +2 -2
  188. package/dist/widgets/pie.js +214 -4
  189. package/dist/widgets/pie.js.map +1 -1
  190. package/dist/widgets/range.js +210 -12
  191. package/dist/widgets/range.js.map +1 -1
  192. package/dist/widgets/scatterplot.js +220 -4
  193. package/dist/widgets/scatterplot.js.map +1 -1
  194. package/dist/widgets/selection-summary.js +40 -0
  195. package/dist/widgets/selection-summary.js.map +1 -0
  196. package/dist/widgets/skeleton-loader.js +21 -2
  197. package/dist/widgets/skeleton-loader.js.map +1 -1
  198. package/dist/widgets/spread.js +163 -17
  199. package/dist/widgets/spread.js.map +1 -1
  200. package/dist/widgets/stores.js +5 -0
  201. package/dist/widgets/stores.js.map +1 -0
  202. package/dist/widgets/subheader.js +52 -0
  203. package/dist/widgets/subheader.js.map +1 -0
  204. package/dist/widgets/table.js +683 -0
  205. package/dist/widgets/table.js.map +1 -0
  206. package/dist/widgets/timeseries.js +172 -4
  207. package/dist/widgets/timeseries.js.map +1 -1
  208. package/dist/widgets/toolbar-actions.js +6106 -0
  209. package/dist/widgets/toolbar-actions.js.map +1 -0
  210. package/dist/widgets/wrapper.js +292 -6
  211. package/dist/widgets/wrapper.js.map +1 -1
  212. package/dist/widgets.js +8 -83
  213. package/dist/widgets.js.map +1 -1
  214. package/package.json +49 -9
  215. package/dist/const-BLV7Tvte.js +0 -758
  216. package/dist/const-BLV7Tvte.js.map +0 -1
  217. package/dist/download-KroQ0SWg.js +0 -195
  218. package/dist/download-KroQ0SWg.js.map +0 -1
  219. package/dist/echart-CqfROFu3.js +0 -214
  220. package/dist/echart-CqfROFu3.js.map +0 -1
  221. package/dist/formula-ui-ChzvMEOG.js +0 -52
  222. package/dist/formula-ui-ChzvMEOG.js.map +0 -1
  223. package/dist/lasso-tool-BC-rsMMW.js.map +0 -1
  224. package/dist/markdown-n_tOtoiT.js +0 -27
  225. package/dist/markdown-n_tOtoiT.js.map +0 -1
  226. package/dist/markdown-ui-BBrzzd7Y.js +0 -62
  227. package/dist/markdown-ui-BBrzzd7Y.js.map +0 -1
  228. package/dist/note-DF-n70TX.js +0 -101
  229. package/dist/note-DF-n70TX.js.map +0 -1
  230. package/dist/range-ui-CtUX11Xm.js +0 -146
  231. package/dist/range-ui-CtUX11Xm.js.map +0 -1
  232. package/dist/root-L_WZnJY5.js +0 -46
  233. package/dist/root-L_WZnJY5.js.map +0 -1
  234. package/dist/row-DQaSxmDV.js +0 -18
  235. package/dist/row-DQaSxmDV.js.map +0 -1
  236. package/dist/series-CsyEPq-X.js +0 -83
  237. package/dist/series-CsyEPq-X.js.map +0 -1
  238. package/dist/skeleton-BSPcEvfq.js +0 -27
  239. package/dist/skeleton-BSPcEvfq.js.map +0 -1
  240. package/dist/skeleton-C4rOYTy-.js +0 -78
  241. package/dist/skeleton-C4rOYTy-.js.map +0 -1
  242. package/dist/skeleton-C9Jqc241.js +0 -82
  243. package/dist/skeleton-C9Jqc241.js.map +0 -1
  244. package/dist/skeleton-D-zHBBIw.js +0 -64
  245. package/dist/skeleton-D-zHBBIw.js.map +0 -1
  246. package/dist/skeleton-DMP-IwaJ.js +0 -109
  247. package/dist/skeleton-DMP-IwaJ.js.map +0 -1
  248. package/dist/skeleton-DRorqowB.js +0 -22
  249. package/dist/skeleton-DRorqowB.js.map +0 -1
  250. package/dist/skeleton-DsZhv-AH.js +0 -89
  251. package/dist/skeleton-DsZhv-AH.js.map +0 -1
  252. package/dist/skeleton-Dx3FCer0.js +0 -13
  253. package/dist/skeleton-Dx3FCer0.js.map +0 -1
  254. package/dist/skeleton-QVDdb1c2.js +0 -21
  255. package/dist/skeleton-QVDdb1c2.js.map +0 -1
  256. package/dist/skeleton-loader-DWC1-EAx.js +0 -23
  257. package/dist/skeleton-loader-DWC1-EAx.js.map +0 -1
  258. package/dist/spread-ui-BjzH190y.js +0 -82
  259. package/dist/spread-ui-BjzH190y.js.map +0 -1
  260. package/dist/style-BGeCtQkP.js +0 -19
  261. package/dist/style-BGeCtQkP.js.map +0 -1
  262. package/dist/style-C7v1iwqD.js +0 -34
  263. package/dist/style-C7v1iwqD.js.map +0 -1
  264. package/dist/styles-cohnxh9F.js +0 -23
  265. package/dist/styles-cohnxh9F.js.map +0 -1
  266. package/dist/types/widgets/config-loader/index.d.ts +0 -2
  267. package/dist/types/widgets/config-loader/types.d.ts +0 -12
  268. package/dist/types/widgets/config-loader/use-config.d.ts +0 -5
  269. package/dist/types/widgets/root/index.d.ts +0 -2
  270. package/dist/types/widgets/root/root.d.ts +0 -2
  271. package/dist/types/widgets/root/types.d.ts +0 -15
  272. package/dist/types/widgets/widget/const.d.ts +0 -2
  273. package/dist/types/widgets/widget/types.d.ts +0 -47
  274. package/dist/types/widgets/widget/widget.d.ts +0 -2
  275. package/dist/use-config-BYEOiIcu.js +0 -43
  276. package/dist/use-config-BYEOiIcu.js.map +0 -1
  277. package/dist/widget-store-yDO2ul8g.js +0 -44
  278. package/dist/widget-store-yDO2ul8g.js.map +0 -1
  279. package/dist/widgets/config-loader.js +0 -5
  280. package/dist/widgets/config-loader.js.map +0 -1
  281. package/dist/widgets/root.js +0 -5
  282. package/dist/widgets/root.js.map +0 -1
  283. package/dist/wrapper-57csMybC.js +0 -265
  284. package/dist/wrapper-57csMybC.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
1
+ {"version":3,"file":"actions.js","sources":["../../src/widgets/actions/fullscreen/styles.ts","../../src/widgets/actions/fullscreen/fullscreen.tsx","../../src/widgets/actions/download/download.tsx","../../src/widgets/actions/shared/styles.ts","../../src/widgets/actions/relative-data/utils.ts","../../src/widgets/actions/relative-data/relative-data.tsx","../../src/widgets/actions/zoom-toggle/style.ts","../../src/widgets/actions/zoom-toggle/zoom-toggle.tsx","../../src/widgets/actions/stack-toggle/grouped-bar-chart-icon.tsx","../../src/widgets/actions/stack-toggle/stack-toggle.tsx","../../src/widgets/actions/lock-selection/lock-selection.tsx","../../src/widgets/actions/searcher/searcher.tsx","../../src/widgets/actions/searcher/searcher-toggle.tsx","../../src/widgets/actions/change-column/change-column-icon.tsx","../../src/widgets/actions/change-column/sortable-column-item.tsx","../../src/widgets/actions/change-column/change-column.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n title: {\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 1,\n },\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(1),\n },\n} satisfies Record<string, SxProps<Theme>>\n","import {\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n} from '@mui/material'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Close, FullscreenOutlined } from '@mui/icons-material'\nimport type {\n FullScreenConfig,\n FullScreenProps,\n FullScreenState,\n} from './types'\nimport { styles } from './styles'\nimport { useShallow } from 'zustand/shallow'\n\nexport function FullScreen({\n id,\n labels,\n children,\n Icon,\n IconButtonProps,\n DialogContentProps: { sx, ...DialogContentProps } = {},\n}: FullScreenProps) {\n const { isFullScreen, title } = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<FullScreenState>(id)\n return {\n isFullScreen: widget?.isFullScreen,\n title: widget?.title,\n }\n }),\n )\n const setWidget = useWidgetStore((state) => state.setWidget)\n\n const updateFullScreenConfig = (updates: Partial<FullScreenConfig>) => {\n setWidget<FullScreenState>(id, {\n isFullScreen: updates.isFullScreen,\n })\n }\n\n return (\n <>\n <IconButton\n {...IconButtonProps}\n onClick={() => updateFullScreenConfig({ isFullScreen: true })}\n >\n {Icon ?? <FullscreenOutlined />}\n </IconButton>\n <Dialog\n maxWidth={false}\n open={!!isFullScreen}\n aria-labelledby={labels?.ariaLabel ?? `fullscreen-dialog-title-${id}`}\n onClose={() => updateFullScreenConfig({ isFullScreen: false })}\n >\n <DialogTitle\n id={`fullscreen-dialog-title-${id}`}\n sx={styles.title.container}\n >\n <Typography variant='subtitle1' component='span'>\n {title}\n </Typography>\n <IconButton\n onClick={() => updateFullScreenConfig({ isFullScreen: false })}\n >\n <Close />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n ...styles.content,\n ...sx,\n }}\n {...DialogContentProps}\n >\n {children}\n </DialogContent>\n </Dialog>\n </>\n )\n}\n","import {\n CircularProgress,\n IconButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n} from '@mui/material'\nimport type { DownloadItem, DownloadProps } from './types'\nimport { FileDownloadOutlined } from '@mui/icons-material'\nimport { useState, type MouseEvent } from 'react'\nimport { useWidgetStore } from '../../../widgets'\nimport { useShallow } from 'zustand/shallow'\n\nexport function Download({\n id,\n items,\n labels = {},\n Icon,\n IconButtonProps,\n}: DownloadProps) {\n const data = useWidgetStore(useShallow((state) => state.getWidget(id)?.data))\n\n const [isDownloading, setIsDownloading] = useState(false)\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n\n const handleToggle = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation()\n setAnchorEl(event.currentTarget)\n }\n\n const handleDownload = (data: string, option: DownloadItem) => {\n const link = document.createElement('a')\n link.href = data\n link.download = option.filename ?? id\n link.style.display = 'none'\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n option.callback?.(link.href)\n }\n\n const handleClick = async (\n event: MouseEvent<HTMLElement>,\n option: DownloadItem,\n ) => {\n event.stopPropagation()\n\n setIsDownloading(true)\n setAnchorEl(null)\n\n const result = await option.modifier(data)\n\n if (!result) {\n setIsDownloading(false)\n return\n }\n\n handleDownload(result, option)\n setIsDownloading(false)\n }\n\n return (\n <>\n <IconButton\n size='small'\n aria-label={labels.ariaLabel ?? 'download options'}\n aria-controls='options-menu'\n aria-haspopup='true'\n onClick={handleToggle}\n {...IconButtonProps}\n disabled={isDownloading || items.length === 0}\n className={isDownloading || anchorEl ? 'active' : ''}\n >\n {isDownloading ? (\n <CircularProgress size={18} color='inherit' />\n ) : (\n (Icon ?? <FileDownloadOutlined />)\n )}\n </IconButton>\n <Menu\n variant='menu'\n elevation={8}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n sx: {\n paddingBottom: 0,\n },\n }}\n >\n {items.map((option) => (\n <MenuItem\n key={option.id}\n disabled={option.disabled}\n onClick={(e) => void handleClick(e, option)}\n >\n {option.icon && (\n <ListItemIcon sx={{ color: 'text.primary' }}>\n {option.icon}\n </ListItemIcon>\n )}\n <ListItemText>{option.label}</ListItemText>\n </MenuItem>\n ))}\n </Menu>\n </>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\n/**\n * Shared styles for widget action buttons\n */\nexport const actionButtonStyles = {\n trigger: {\n '&[data-active=\"true\"]': {\n background: (theme: Theme) => theme.palette.primary.relatedLight,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import type { EchartWidgetData } from '../../echart/types'\n\n/**\n * Calculates the sum of all numeric values in the data\n */\nexport function calculateTotal(data: EchartWidgetData): number {\n return data.reduce((total, series) => {\n return series.reduce((seriesTotal, item) => {\n return Object.values(item).reduce((itemTotal: number, value) => {\n return typeof value === 'number' ? itemTotal + value : itemTotal\n }, seriesTotal)\n }, total)\n }, 0)\n}\n\n/**\n * Transforms data to relative (percentage) values\n */\nexport function toRelativeData(\n data: EchartWidgetData,\n total: number,\n): EchartWidgetData {\n if (total === 0) return data\n\n return data.map((series) =>\n series.map((item) => {\n const transformed: Record<string, string | number> = {}\n\n for (const [key, value] of Object.entries(item)) {\n transformed[key] =\n typeof value === 'number' ? (value / total) * 100 : value\n }\n\n return transformed\n }),\n )\n}\n","import { IconButton } from '@mui/material'\nimport { PercentOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect, useRef } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { RelativeDataProps, RelativeDataState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { calculateTotal, toRelativeData } from './utils'\nimport type { EchartWidgetData } from '../../../widgets/echart'\n\nexport const RELATIVE_DATA_TOOL_ID = 'relative-data'\n\n/**\n * Widget action to toggle between relative (percentage) and absolute data display.\n *\n * Registers a transformation tool in the widget pipeline when mounted.\n * When relative mode is active, transforms data to percentages via the pipeline.\n *\n * @example\n * ```tsx\n * <RelativeData\n * id=\"my-widget\"\n * order={20}\n * defaultIsRelative={false}\n * />\n * ```\n */\nexport function RelativeData({\n id,\n order = 10,\n defaultIsRelative = false,\n labels,\n Icon,\n IconButtonProps,\n}: RelativeDataProps) {\n const previousMaxValue = useRef<number | undefined>(undefined)\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n\n const storeIsRelative = useWidgetStore(\n (state) => state.getWidget<RelativeDataState>(id)?.isRelative,\n )\n\n const isRelative = storeIsRelative ?? defaultIsRelative\n\n // Initialize store with default value on mount\n useEffect(() => {\n const currentValue = getWidget<RelativeDataState>(id)?.isRelative\n if (currentValue === undefined) {\n setWidget(id, { isRelative: defaultIsRelative })\n }\n }, [defaultIsRelative, getWidget, id, setWidget])\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: RELATIVE_DATA_TOOL_ID,\n order,\n enabled: isRelative,\n fn: (data) => {\n const echartData = data as EchartWidgetData\n const total = calculateTotal(echartData)\n return toRelativeData(echartData, total)\n },\n })\n\n return () => unregisterTool(id, RELATIVE_DATA_TOOL_ID)\n }, [id, order, registerTool, unregisterTool, isRelative])\n\n // Update enabled flag when toggle changes\n useEffect(() => {\n setToolEnabled(id, RELATIVE_DATA_TOOL_ID, isRelative)\n }, [id, isRelative, setToolEnabled])\n\n const handleToggle = useCallback(() => {\n const newIsRelative = !isRelative\n let max = previousMaxValue.current\n\n if (newIsRelative) {\n // Save current max value before setting to 100\n const currentMax = (getWidget(id) as { max?: number })?.max\n previousMaxValue.current = currentMax\n max = 100\n }\n\n setWidget(id, {\n isRelative: newIsRelative,\n max,\n })\n }, [isRelative, setWidget, id, getWidget])\n\n const tooltipLabel = isRelative\n ? (labels?.absolute ?? 'Show absolute values')\n : (labels?.relative ?? 'Show relative values')\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isRelative}\n {...IconButtonProps}\n >\n {Icon ?? <PercentOutlined />}\n </IconButton>\n </Tooltip>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(0.25),\n },\n trigger: {\n '&[data-active=\"true\"]': {\n background: (theme: Theme) => theme.palette.primary.relatedLight,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, IconButton, useTheme } from '@mui/material'\nimport {\n SubdirectoryArrowLeftOutlined,\n ZoomInOutlined,\n} from '@mui/icons-material'\nimport { useEffect, useCallback } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { ZoomToggleProps, ZoomState } from './types'\nimport { styles } from './style'\nimport { Tooltip } from '../../../components'\nimport { getEChartZoomConfig } from '../../echart/utils'\nimport type { EchartWidgetState } from '../../echart/types'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to toggle EChart zoom functionality.\n *\n * When zoom is active, displays an inline reset button to disable zoom.\n * Only intended for use in fullscreen ToolbarActions for bar and histogram widgets.\n *\n * @example\n * ```tsx\n * <ZoomToggle\n * id=\"my-widget\"\n * defaultZoom={false}\n * zoomStart={0}\n * zoomEnd={100}\n * />\n * ```\n */\nexport function ZoomToggle({\n id,\n defaultZoom = false,\n defaultZoomStart = 0,\n defaultZoomEnd = 100,\n labels,\n Icon,\n ResetIcon,\n IconButtonProps,\n}: ZoomToggleProps) {\n const theme = useTheme()\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n\n const zoom = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<ZoomState>(id)\n return widget?.zoom ?? false\n }),\n )\n\n const updateZoomOption = useCallback(\n (enabled: boolean, start: number, end: number) => {\n const zoomConfig = getEChartZoomConfig(\n enabled,\n { start, end },\n { inside: true, xSlider: true, ySlider: false },\n theme,\n )\n const currentOption = getWidget<EchartWidgetState>(id)?.option\n\n setWidget<EchartWidgetState & ZoomState>(id, {\n zoom: enabled,\n zoomStart: start,\n zoomEnd: end,\n option: {\n ...currentOption,\n ...zoomConfig,\n },\n })\n },\n [getWidget, id, setWidget, theme],\n )\n\n // Initialize zoom state from defaults only if not already set\n useEffect(() => {\n const existingState = getWidget<ZoomState>(id)\n\n if (existingState?.zoom) return\n\n // Apply initial zoom config\n updateZoomOption(\n existingState?.zoom ?? defaultZoom,\n existingState?.zoomStart ?? defaultZoomStart,\n existingState?.zoomEnd ?? defaultZoomEnd,\n )\n }, [\n defaultZoom,\n defaultZoomEnd,\n defaultZoomStart,\n getWidget,\n id,\n updateZoomOption,\n ])\n\n // Cleanup: reset zoom when component unmounts\n useEffect(() => {\n return () => {\n const existingState = getWidget<ZoomState>(id)\n updateZoomOption(\n false,\n existingState?.zoomStart ?? 0,\n existingState?.zoomEnd ?? 100,\n )\n }\n }, [getWidget, id, updateZoomOption])\n\n const handleToggle = () => {\n const newZoom = !zoom\n\n const existingState = getWidget<ZoomState>(id)\n\n updateZoomOption(\n newZoom,\n newZoom ? (existingState?.zoomStart ?? defaultZoomStart) : 0,\n newZoom ? (existingState?.zoomEnd ?? defaultZoomEnd) : 100,\n )\n }\n\n const handleReset = () => {\n updateZoomOption(true, defaultZoomStart, defaultZoomEnd)\n }\n\n // Handle dataZoom event to update zoom range in store\n const handleDataZoom = useCallback(\n (event: unknown) => {\n const zoomEvent = event as {\n start: number\n end: number\n }\n\n const start = zoomEvent.start\n const end = zoomEvent.end\n\n if (start !== undefined && end !== undefined) {\n updateZoomOption(true, start, end)\n }\n },\n [updateZoomOption],\n )\n\n // Register dataZoom event handler when zoom is enabled\n useEffect(() => {\n if (zoom) {\n setWidget<EchartWidgetState>(id, {\n onEvents: {\n dataZoom: handleDataZoom,\n },\n })\n }\n }, [id, zoom, handleDataZoom, setWidget])\n\n const enableLabel = labels?.enable ?? 'Enable zoom'\n const disableLabel = labels?.disable ?? 'Disable zoom'\n const resetLabel = labels?.reset ?? 'Reset zoom'\n const tooltipLabel = zoom ? disableLabel : enableLabel\n\n return (\n <Box sx={styles.container}>\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={styles.trigger}\n data-active={zoom}\n {...IconButtonProps}\n >\n {Icon ?? <ZoomInOutlined />}\n </IconButton>\n </Tooltip>\n {zoom && (\n <Tooltip title={resetLabel}>\n <IconButton\n size='small'\n aria-label={resetLabel}\n onClick={handleReset}\n {...IconButtonProps}\n >\n {ResetIcon ?? <SubdirectoryArrowLeftOutlined />}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n )\n}\n","export const GroupedBarChartIcon = () => (\n <svg\n width='24'\n height='24'\n viewBox='0 0 24 24'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <path\n d='M4 20V8H8V20H4ZM9 20V13H13V20H9ZM16 20V4H20V20H16Z'\n fill='currentColor'\n />\n </svg>\n)\n","import { IconButton } from '@mui/material'\nimport { useCallback, useEffect, useMemo } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { StackToggleProps, StackToggleState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { GroupedBarChartIcon } from './grouped-bar-chart-icon'\nimport { getEChartStackConfig } from '../../echart/utils'\nimport { DEFAULT_STACK_GROUP } from '../../echart/const'\nimport type { EchartWidgetState } from '../../echart/types'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to toggle stacking behavior in ECharts bar and histogram widgets.\n *\n * Stores the stack state in the widget store and updates the ECharts option\n * using getEChartStackConfig to apply stacking to all series.\n *\n * @example\n * ```tsx\n * <StackToggle\n * id=\"my-widget\"\n * defaultIsStacked={false}\n * />\n * ```\n */\nexport function StackToggle({\n id,\n defaultIsStacked = false,\n labels,\n Icon,\n IconButtonProps,\n}: StackToggleProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const storeIsStacked = useWidgetStore(\n useShallow((state) => state.getWidget<StackToggleState>(id)?.isStacked),\n )\n\n const getWidget = useWidgetStore((state) => state.getWidget)\n\n /**\n * Checks if any series in the option has a stack property defined\n */\n const hasStackInSeries = useMemo(() => {\n const option = getWidget<EchartWidgetState>(id)?.option\n if (!option) return false\n\n const series = Array.isArray(option.series)\n ? option.series\n : [option.series]\n\n return series.some((s) => (s as { stack?: string })?.stack)\n }, [getWidget, id])\n\n // If series already has stack defined, default to stacked=true\n const effectiveDefaultIsStacked = hasStackInSeries || defaultIsStacked\n const isStacked = storeIsStacked ?? effectiveDefaultIsStacked\n\n /**\n * Updates the ECharts option with the stack configuration\n * Preserves existing stack group names from series, falling back to DEFAULT_STACK_GROUP\n */\n const updateOptions = useCallback(\n (stacked: boolean) => {\n const option = getWidget<EchartWidgetState>(id)?.option\n\n if (!option) return\n\n const series = Array.isArray(option.series)\n ? option.series\n : [option.series]\n\n const updatedSeries = series.map((s) => {\n // Extract existing stack group from series, fallback to default\n const existingStack = (s as { stack?: string })?.stack\n const stackGroup =\n typeof existingStack === 'string'\n ? existingStack\n : DEFAULT_STACK_GROUP\n\n return {\n ...s,\n ...getEChartStackConfig(stacked, stackGroup),\n }\n })\n\n setWidget(id, {\n option: {\n ...option,\n series: updatedSeries,\n },\n })\n },\n [getWidget, id, setWidget],\n )\n\n // Initialize store with default value only if not already configured\n useEffect(() => {\n setWidget(id, { isStacked: effectiveDefaultIsStacked })\n }, [effectiveDefaultIsStacked, id, setWidget])\n\n const handleToggle = useCallback(() => {\n const newIsStacked = !isStacked\n\n setWidget(id, { isStacked: newIsStacked })\n updateOptions(newIsStacked)\n }, [isStacked, id, setWidget, updateOptions])\n\n const tooltipLabel = isStacked\n ? (labels?.unstacked ?? 'Disable stacking')\n : (labels?.stacked ?? 'Enable stacking')\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isStacked}\n {...IconButtonProps}\n >\n {Icon ?? <GroupedBarChartIcon />}\n </IconButton>\n </Tooltip>\n )\n}\n","import { IconButton } from '@mui/material'\nimport { CheckBoxOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect, useMemo } from 'react'\nimport type { LockSelectionProps, LockSelectionState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport type { EchartWidgetData } from '../../echart/types'\n\nexport const LOCK_SELECTION_TOOL_ID = 'lock-selection'\n\n/**\n * Widget action button to lock the current selection.\n *\n * When locked, the widget data is filtered to only show the selected items.\n * The button is only visible when there are selected items.\n * Registers a transformation tool in the widget pipeline when mounted.\n *\n * @example\n * ```tsx\n * <LockSelection\n * id=\"my-widget\"\n * order={30}\n * selectedItems={selectedItems}\n * />\n * ```\n */\nexport function LockSelection({\n id,\n selectedItems,\n order = 30,\n labels,\n Icon,\n IconButtonProps,\n}: LockSelectionProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n const updateToolConfig = useWidgetStore((state) => state.updateToolConfig)\n\n const storeIsLocked = useWidgetStore(\n useShallow((state) => state.getWidget<LockSelectionState>(id)?.isLocked),\n )\n const storeLockedItems = useWidgetStore(\n useShallow((state) => state.getWidget<LockSelectionState>(id)?.lockedItems),\n )\n\n const isLocked = storeIsLocked ?? false\n const lockedItems = useMemo(() => storeLockedItems ?? [], [storeLockedItems])\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: LOCK_SELECTION_TOOL_ID,\n order,\n enabled: isLocked,\n fn: (data, config) => {\n const items = (config?.lockedItems as string[]) || []\n if (items.length === 0) return data\n\n return filterDataByLockedItems(data as EchartWidgetData, items)\n },\n config: { lockedItems },\n })\n\n return () => unregisterTool(id, LOCK_SELECTION_TOOL_ID)\n }, [id, order, registerTool, unregisterTool, isLocked, lockedItems])\n\n // Update enabled flag and config when they change\n useEffect(() => {\n setToolEnabled(id, LOCK_SELECTION_TOOL_ID, isLocked)\n updateToolConfig(id, LOCK_SELECTION_TOOL_ID, { lockedItems })\n }, [id, isLocked, lockedItems, setToolEnabled, updateToolConfig])\n\n const handleToggle = useCallback(() => {\n if (isLocked) {\n // Unlock: clear locked items and disable tool\n setWidget(id, {\n isLocked: false,\n lockedItems: [],\n })\n } else {\n // Lock: save selected items and enable tool\n setWidget(id, {\n isLocked: true,\n lockedItems: selectedItems,\n })\n }\n }, [id, isLocked, selectedItems, setWidget])\n\n // Don't render if no selections\n if (selectedItems.length === 0) {\n return null\n }\n\n const tooltipLabel = isLocked\n ? (labels?.unlock ?? 'Unlock selection')\n : (labels?.lock ?? 'Lock selection')\n\n const ariaLabel = labels?.ariaLabel ?? tooltipLabel\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={ariaLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isLocked}\n {...IconButtonProps}\n >\n {Icon ?? <CheckBoxOutlined fontSize='small' />}\n </IconButton>\n </Tooltip>\n )\n}\n\n/**\n * Filters widget data to only include items with names matching the locked items.\n */\nfunction filterDataByLockedItems(\n data: EchartWidgetData,\n lockedItems: string[],\n): EchartWidgetData {\n return data.map((series) =>\n series.filter((item) => {\n const name = item.name\n return typeof name === 'string' && lockedItems.includes(name)\n }),\n )\n}\n","import { TextField, InputAdornment, IconButton } from '@mui/material'\nimport { ClearOutlined, SearchOutlined } from '@mui/icons-material'\nimport { useEffect, useRef, useCallback } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { SearcherProps, SearcherFilterFn, SearcherState } from './types'\nimport type { EchartWidgetData } from '../../echart/types'\nimport { LOCK_SELECTION_TOOL_ID } from '../lock-selection/lock-selection'\n\nexport const SEARCHER_TOOL_ID = 'searcher'\n\nconst DEBOUNCE_DELAY = 300\n\n/**\n * Search input component that works with SearcherToggle.\n *\n * Registers a transformation tool in the widget pipeline when mounted.\n * Reads the enabled state from the widget store using the provided id.\n * Uses a debounced search to filter data via the transformation pipeline.\n * Auto-focuses when enabled becomes true.\n *\n * @example\n * ```tsx\n * <SearcherToggle id=\"my-widget\" />\n * <Searcher\n * id=\"my-widget\"\n * order={10}\n * labels={{ placeholder: 'Search categories...' }}\n * />\n * ```\n */\nexport function Searcher({\n id,\n filterFn,\n order = 20,\n labels,\n TextFieldProps,\n ClearIcon,\n debounceDelay = DEBOUNCE_DELAY,\n}: SearcherProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n const debounceTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // Read enabled state and search text from widget store\n const widgetState = useWidgetStore((state) =>\n state.getWidget<SearcherState>(id),\n )\n const enabled = widgetState?.isSearchEnabled ?? false\n const searchText = widgetState?.searchText ?? ''\n const prevEnabledRef = useRef(enabled)\n\n const filter = filterFn ?? defaultFilterFn\n\n const setWidget = useWidgetStore((state) => state.setWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n const updateToolConfig = useWidgetStore((state) => state.updateToolConfig)\n\n const setSearchText = useCallback(\n (text: string) => {\n setWidget(id, { searchText: text })\n },\n [id, setWidget],\n )\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: SEARCHER_TOOL_ID,\n order,\n enabled,\n fn: async (data, config) => {\n const searchTextFromConfig = (config?.searchText as string) || ''\n\n // Execute filter (can be sync or async)\n const result = filter(data as EchartWidgetData, searchTextFromConfig)\n\n // Return result directly (pipeline will handle Promise)\n return result\n },\n config: { searchText },\n disables: [LOCK_SELECTION_TOOL_ID],\n })\n\n return () => unregisterTool(id, SEARCHER_TOOL_ID)\n }, [id, order, filter, registerTool, unregisterTool, enabled, searchText])\n\n // Update enabled flag when it changes\n useEffect(() => {\n setToolEnabled(id, SEARCHER_TOOL_ID, enabled)\n }, [id, enabled, setToolEnabled])\n\n // Update config when search text changes (debounced)\n const debouncedUpdateConfig = useCallback(\n (text: string) => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current)\n }\n debounceTimeoutRef.current = setTimeout(() => {\n updateToolConfig(id, SEARCHER_TOOL_ID, { searchText: text })\n }, debounceDelay)\n },\n [id, updateToolConfig, debounceDelay],\n )\n\n // Auto-focus when enabled becomes true\n useEffect(() => {\n // Transition from disabled to enabled - focus input\n if (enabled && !prevEnabledRef.current && inputRef.current) {\n inputRef.current.focus()\n }\n\n prevEnabledRef.current = enabled\n }, [enabled])\n\n // Cleanup debounce timeout on unmount\n useEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current)\n }\n }\n }, [])\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value\n setSearchText(newValue)\n debouncedUpdateConfig(newValue)\n },\n [debouncedUpdateConfig, setSearchText],\n )\n\n const handleClear = useCallback(() => {\n setSearchText('')\n updateToolConfig(id, SEARCHER_TOOL_ID, { searchText: '' })\n if (inputRef.current) {\n inputRef.current.focus()\n }\n }, [id, setSearchText, updateToolConfig])\n\n if (!enabled) {\n return null\n }\n\n const placeholder = labels?.placeholder ?? 'Search...'\n const clearAriaLabel = labels?.clearAriaLabel ?? 'Clear search'\n\n return (\n <TextField\n inputRef={inputRef}\n size='small'\n fullWidth\n variant='filled'\n placeholder={placeholder}\n value={searchText}\n onChange={handleChange}\n InputProps={{\n startAdornment: (\n <InputAdornment position='start'>\n <SearchOutlined />\n </InputAdornment>\n ),\n endAdornment: searchText ? (\n <InputAdornment position='end'>\n <IconButton\n size='small'\n aria-label={clearAriaLabel}\n onClick={handleClear}\n edge='end'\n >\n {ClearIcon ?? <ClearOutlined fontSize='small' />}\n </IconButton>\n </InputAdornment>\n ) : null,\n }}\n {...TextFieldProps}\n />\n )\n}\n\n/**\n * Default filter function that searches all string fields case-insensitively.\n * Note: Should be synchronous for the new pipeline architecture.\n */\nconst defaultFilterFn: SearcherFilterFn = (\n data: EchartWidgetData,\n searchText: string,\n) => {\n if (!searchText.trim()) return Promise.resolve(data)\n\n const lowerSearch = searchText.toLowerCase()\n\n return Promise.resolve(\n data.map((series) =>\n series.filter((item) =>\n Object.values(item).some(\n (value) =>\n typeof value === 'string' &&\n value.toLowerCase().includes(lowerSearch),\n ),\n ),\n ),\n )\n}\n","import { IconButton } from '@mui/material'\nimport { SearchOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect } from 'react'\nimport type { SearcherToggleProps, SearcherState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action button to toggle search functionality.\n *\n * Stores the enabled state in the widget store using the provided id.\n * When search is active, the button shows an active state with a light background.\n * Use in conjunction with the Searcher component to display the search input.\n *\n * @example\n * ```tsx\n * <SearcherToggle id=\"my-widget\" />\n * <Searcher\n * id=\"my-widget\"\n * data={widgetData}\n * />\n * ```\n */\nexport function SearcherToggle({\n id,\n defaultEnabled = false,\n labels,\n Icon,\n IconButtonProps,\n}: SearcherToggleProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const storeIsEnabled = useWidgetStore(\n useShallow((state) => state.getWidget<SearcherState>(id)?.isSearchEnabled),\n )\n\n const isEnabled = storeIsEnabled ?? defaultEnabled\n\n // Initialize store with default value on mount\n useEffect(() => {\n const currentValue = getWidget<SearcherState>(id)?.isSearchEnabled\n if (currentValue === undefined) {\n setWidget(id, { isSearchEnabled: defaultEnabled })\n }\n }, [defaultEnabled, getWidget, id, setWidget])\n\n const handleToggle = useCallback(() => {\n setWidget(id, { isSearchEnabled: !isEnabled })\n }, [id, isEnabled, setWidget])\n\n const tooltipLabel = isEnabled\n ? (labels?.disable ?? 'Disable search')\n : (labels?.enable ?? 'Enable search')\n\n const ariaLabel = labels?.ariaLabel ?? tooltipLabel\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={ariaLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isEnabled}\n {...IconButtonProps}\n >\n {Icon ?? <SearchOutlined fontSize='small' />}\n </IconButton>\n </Tooltip>\n )\n}\n","export const ChangeColumnIcon = () => (\n <svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 18 18'>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M14.25 2.25H3.75c-.825 0-1.5.675-1.5 1.5v10.5c0 .825.675 1.5 1.5 1.5h10.5c.825 0 1.5-.675 1.5-1.5V3.75c0-.825-.675-1.5-1.5-1.5m-3.75 12h-3V3.75h3zM3.75 3.75H6v10.5H3.75zM12 14.25V3.75h2.25v10.5z'\n clipRule='evenodd'\n />\n </svg>\n)\n","import { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { ListItemText, MenuItem } from '@mui/material'\nimport type { TableColumn } from '../../table/types'\n\nexport interface SortableColumnItemProps {\n column: TableColumn\n}\n\n/**\n * A draggable menu item for column reordering.\n * Uses @dnd-kit/sortable for drag-and-drop functionality.\n */\nexport function SortableColumnItem({ column }: SortableColumnItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: column.id })\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n cursor: isDragging ? 'grabbing' : 'grab',\n }\n\n return (\n <MenuItem\n ref={setNodeRef}\n style={style}\n {...attributes}\n {...listeners}\n role='menuitem'\n tabIndex={0}\n sx={{\n '&:focus-visible': {\n outline: (theme) => `2px solid ${theme.palette.primary.main}`,\n outlineOffset: -2,\n },\n }}\n >\n <ListItemText>{column.label}</ListItemText>\n </MenuItem>\n )\n}\n","import {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type DragEndEvent,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { IconButton, Menu, SvgIcon } from '@mui/material'\nimport { useCallback, useMemo, useState, type MouseEvent } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { ChangeColumnProps } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport type { TableWidgetState } from '../../table/types'\nimport { ChangeColumnIcon } from './change-column-icon'\nimport { SortableColumnItem } from './sortable-column-item'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to reorder columns in a table widget via drag-and-drop.\n *\n * This action reads the columns from the widget store and allows users to\n * drag and drop columns to reorder them. All columns are displayed and\n * can be reordered.\n *\n * Returns null if there are fewer than 2 columns.\n *\n * @example\n * ```tsx\n * <ChangeColumn id=\"my-table-widget\" />\n * ```\n */\nexport function ChangeColumn({\n id,\n labels,\n Icon,\n IconButtonProps,\n MenuProps,\n}: ChangeColumnProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n const setWidget = useWidgetStore((state) => state.setWidget)\n const columns = useWidgetStore(\n useShallow((state) => state.getWidget<TableWidgetState>(id)?.columns),\n )\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const columnIds = useMemo(\n () => columns?.map((col) => col.id) ?? [],\n [columns],\n )\n\n const handleToggle = useCallback((event: MouseEvent<HTMLElement>) => {\n event.stopPropagation()\n setAnchorEl(event.currentTarget)\n }, [])\n\n const handleClose = useCallback(() => {\n setAnchorEl(null)\n }, [])\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id || !columns) return\n const oldIndex = columns.findIndex((col) => col.id === active.id)\n const newIndex = columns.findIndex((col) => col.id === over.id)\n if (oldIndex !== -1 && newIndex !== -1) {\n const newColumns = arrayMove(columns, oldIndex, newIndex)\n setWidget(id, { columns: newColumns })\n }\n }\n\n // Return null if there are fewer than 2 columns\n if (!columns || columns.length < 2) {\n return null\n }\n\n const tooltipLabel = labels?.tooltip ?? 'Change column'\n const isOpen = Boolean(anchorEl)\n\n return (\n <>\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n aria-controls={isOpen ? 'change-column-menu' : undefined}\n aria-haspopup='true'\n aria-expanded={isOpen ? 'true' : undefined}\n onClick={handleToggle}\n data-active={isOpen}\n sx={actionButtonStyles.trigger}\n {...IconButtonProps}\n >\n {Icon ?? (\n <SvgIcon>\n <ChangeColumnIcon />\n </SvgIcon>\n )}\n </IconButton>\n </Tooltip>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <Menu\n id='change-column-menu'\n anchorEl={anchorEl}\n open={isOpen}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n {...MenuProps}\n >\n <SortableContext\n items={columnIds}\n strategy={verticalListSortingStrategy}\n >\n {columns.map((column) => (\n <SortableColumnItem key={column.id} column={column} />\n ))}\n </SortableContext>\n </Menu>\n </DndContext>\n </>\n )\n}\n"],"names":["styles","title","container","display","alignItems","justifyContent","gap","content","flexDirection","spacing","FullScreen","t0","$","_c","id","labels","children","Icon","IconButtonProps","DialogContentProps","t1","t2","undefined","sx","t3","state","widget","getWidget","isFullScreen","useWidgetStore","useShallow","setWidget","_temp","t4","updates","updateFullScreenConfig","t5","t6","FullscreenOutlined","t7","IconButton","t8","t9","ariaLabel","t10","t11","t12","Typography","t13","t14","Symbol","for","Close","t15","jsx","t16","DialogTitle","t17","t18","DialogContent","t19","jsxs","Dialog","t20","state_0","Download","items","data","isDownloading","setIsDownloading","useState","anchorEl","setAnchorEl","event","stopPropagation","currentTarget","handleToggle","data_0","option","link","document","createElement","href","download","filename","style","body","appendChild","click","removeChild","callback","handleDownload","event_0","option_0","result","modifier","handleClick","length","CircularProgress","FileDownloadOutlined","vertical","horizontal","Boolean","paddingBottom","option_1","MenuItem","disabled","e","icon","ListItemIcon","color","ListItemText","label","map","Menu","actionButtonStyles","trigger","background","theme","palette","primary","relatedLight","calculateTotal","reduce","total","series","seriesTotal","item","Object","values","itemTotal","value","toRelativeData","transformed","key","entries","RELATIVE_DATA_TOOL_ID","RelativeData","order","defaultIsRelative","previousMaxValue","useRef","_temp2","registerTool","_temp3","unregisterTool","_temp4","setToolEnabled","_temp5","state_4","isRelative","useEffect","enabled","fn","_temp6","newIsRelative","max","current","currentMax","tooltipLabel","absolute","relative","PercentOutlined","Tooltip","echartData","state_3","state_2","state_1","ZoomToggle","defaultZoom","defaultZoomStart","defaultZoomEnd","ResetIcon","useTheme","zoom","start","end","zoomConfig","getEChartZoomConfig","inside","xSlider","ySlider","currentOption","zoomStart","zoomEnd","updateZoomOption","existingState","existingState_0","newZoom","existingState_1","handleReset","zoomEvent","start_0","end_0","handleDataZoom","onEvents","dataZoom","enableLabel","enable","disableLabel","disable","resetLabel","reset","ZoomInOutlined","SubdirectoryArrowLeftOutlined","Box","GroupedBarChartIcon","StackToggle","defaultIsStacked","isStacked","storeIsStacked","bb0","Array","isArray","some","effectiveDefaultIsStacked","stacked","updatedSeries","s_0","existingStack","s","stack","getEChartStackConfig","DEFAULT_STACK_GROUP","updateOptions","newIsStacked","unstacked","LOCK_SELECTION_TOOL_ID","LockSelection","selectedItems","updateToolConfig","isLocked","storeIsLocked","state_5","lockedItems","storeLockedItems","config","unlock","lock","CheckBoxOutlined","filterDataByLockedItems","filter","name","includes","SEARCHER_TOOL_ID","DEBOUNCE_DELAY","Searcher","filterFn","TextFieldProps","ClearIcon","debounceDelay","inputRef","debounceTimeoutRef","widgetState","isSearchEnabled","searchText","prevEnabledRef","defaultFilterFn","text","setSearchText","searchTextFromConfig","disables","text_0","clearTimeout","setTimeout","debouncedUpdateConfig","focus","newValue","target","handleChange","handleClear","placeholder","clearAriaLabel","InputAdornment","SearchOutlined","ClearOutlined","startAdornment","endAdornment","TextField","trim","Promise","resolve","lowerSearch","toLowerCase","SearcherToggle","defaultEnabled","isEnabled","ChangeColumnIcon","SortableColumnItem","column","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Transform","toString","opacity","cursor","outline","outlineOffset","main","ChangeColumn","MenuProps","columns","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","columnIds","handleClose","active","over","oldIndex","findIndex","col_0","col","newIndex","col_1","newColumns","arrayMove","handleDragEnd","tooltip","isOpen","SvgIcon","SortableContext","verticalListSortingStrategy","DndContext","closestCenter"],"mappings":"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"}
@@ -1,7 +1,193 @@
1
- import { b as e } from "../const-BLV7Tvte.js";
2
- import { BarSkeleton as f } from "../skeleton-C9Jqc241.js";
1
+ import { jsxs as s, jsx as n } from "react/jsx-runtime";
2
+ import { c as m } from "react/compiler-runtime";
3
+ import "react";
4
+ import "echarts";
5
+ import "../widget-store-CB6Trp_0.js";
6
+ import "zustand/shallow";
7
+ import { g } from "../options-D9wflre6.js";
8
+ import { m as f } from "../utils-Dv5Z47UQ.js";
9
+ import { f as h, c as d, b as u, a as x, d as y } from "../styles-dOu_pRNb.js";
10
+ import { Box as a, Skeleton as o } from "@mui/material";
11
+ import "@mui/icons-material";
12
+ import "react-markdown";
13
+ import { d as l, a as p } from "../exports-Cr43OCul.js";
14
+ import "../lasso-tool-CYn3ivf-.js";
15
+ import "../cjs-D9ro6BXv.js";
16
+ import "@dnd-kit/core";
17
+ import "@dnd-kit/sortable";
18
+ import "@dnd-kit/utilities";
19
+ function $({
20
+ refUI: e
21
+ }) {
22
+ return [{
23
+ ...l,
24
+ modifier: () => l.modifier(e)
25
+ }, {
26
+ ...p,
27
+ modifier: async (t) => {
28
+ const i = h(t);
29
+ return p.modifier(i);
30
+ }
31
+ }];
32
+ }
33
+ function q(e) {
34
+ return {
35
+ type: "bar",
36
+ option: f(g(e), b(e))
37
+ };
38
+ }
39
+ function b({
40
+ data: e = [],
41
+ theme: t
42
+ }) {
43
+ const i = (e?.length ?? 0) > 1;
44
+ return {
45
+ legend: x(i),
46
+ grid: u(i, t),
47
+ xAxis: {
48
+ type: "category",
49
+ axisLine: {
50
+ show: !1
51
+ },
52
+ axisTick: {
53
+ show: !1
54
+ },
55
+ axisLabel: {
56
+ padding: [parseInt(t.spacing(0.5)), 0, 0, 0],
57
+ margin: 0
58
+ }
59
+ },
60
+ yAxis: {
61
+ type: "value",
62
+ splitNumber: 1,
63
+ axisLabel: {
64
+ fontSize: t.typography.overlineDelicate.fontSize,
65
+ fontFamily: t.typography.overlineDelicate.fontFamily,
66
+ margin: parseInt(t.spacing(1)),
67
+ show: !0,
68
+ showMaxLabel: !0,
69
+ showMinLabel: !0,
70
+ verticalAlign: "bottom"
71
+ },
72
+ axisLine: {
73
+ show: !1
74
+ },
75
+ axisTick: {
76
+ show: !1
77
+ },
78
+ splitLine: {
79
+ show: !0,
80
+ lineStyle: {
81
+ color: t.palette.black[4]
82
+ }
83
+ }
84
+ },
85
+ tooltip: {
86
+ position: d(t)
87
+ },
88
+ series: e.map((v, c) => ({
89
+ datasetIndex: c,
90
+ type: "bar",
91
+ barMaxWidth: 100,
92
+ emphasis: {
93
+ focus: "series"
94
+ }
95
+ // itemStyle: {
96
+ // color(params) {
97
+ // const color =
98
+ // getColorBySchema({
99
+ // colorSchema: config?.colorSchema,
100
+ // value: params.value as ColorSchemaValue,
101
+ // }) ?? params.color!
102
+ // if (!selected?.length) {
103
+ // return color
104
+ // }
105
+ // if (selected.map(String).includes(params.name)) {
106
+ // return color
107
+ // }
108
+ // return theme.palette.black[25]
109
+ // },
110
+ // },
111
+ }))
112
+ };
113
+ }
114
+ const r = {
115
+ skeleton: {
116
+ item: {
117
+ flex: 1,
118
+ maxWidth: ({
119
+ spacing: e
120
+ }) => e(12),
121
+ "& + &": {
122
+ marginLeft: ({
123
+ spacing: e
124
+ }) => e(1)
125
+ }
126
+ },
127
+ graph: {
128
+ ...y.graph,
129
+ grid: {
130
+ display: "flex",
131
+ justifyContent: "space-between",
132
+ flex: "1 1 auto",
133
+ alignItems: "flex-end",
134
+ width: "100%"
135
+ }
136
+ }
137
+ }
138
+ };
139
+ function H() {
140
+ const e = m(2);
141
+ let t;
142
+ e[0] === Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ s(a, { sx: r.skeleton.graph.grid, children: [
143
+ /* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
144
+ /* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "40%" }),
145
+ /* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "60%" }),
146
+ /* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
147
+ /* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "80%" })
148
+ ] }), e[0] = t) : t = e[0];
149
+ let i;
150
+ return e[1] === Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ s(a, { sx: r.skeleton.graph.container, children: [
151
+ t,
152
+ /* @__PURE__ */ n(a, { sx: {
153
+ display: "flex",
154
+ alignItems: "center",
155
+ gap: S,
156
+ height: _
157
+ }, children: Array(2).fill(0).map(w) })
158
+ ] }), e[1] = i) : i = e[1], i;
159
+ }
160
+ function w(e, t) {
161
+ return /* @__PURE__ */ s(a, { sx: {
162
+ display: "flex",
163
+ alignItems: "center",
164
+ gap: k
165
+ }, children: [
166
+ /* @__PURE__ */ n(o, { variant: "circular", width: 8, height: 8 }),
167
+ /* @__PURE__ */ n(o, { width: 48, height: 8 })
168
+ ] }, t);
169
+ }
170
+ function k(e) {
171
+ const {
172
+ spacing: t
173
+ } = e;
174
+ return t(1.5);
175
+ }
176
+ function _(e) {
177
+ const {
178
+ spacing: t
179
+ } = e;
180
+ return t(5);
181
+ }
182
+ function S(e) {
183
+ const {
184
+ spacing: t
185
+ } = e;
186
+ return t(2);
187
+ }
3
188
  export {
4
- f as BarSkeleton,
5
- e as barConfig
189
+ H as BarSkeleton,
190
+ q as barConfig,
191
+ $ as barDownloadConfig
6
192
  };
7
193
  //# sourceMappingURL=bar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bar.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
1
+ {"version":3,"file":"bar.js","sources":["../../src/widgets/bar/config.ts","../../src/widgets/bar/style.ts","../../src/widgets/bar/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type { BarConfig, BarWidgetConfig, BarWidgetData } from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n} from '../_shared/chart-config'\nimport { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\n\nexport function barDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<BarWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = flattenObjectArrayToCSV(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n}\n\nexport function barConfig(props: BarConfig): BarWidgetConfig {\n return {\n type: 'bar',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n }\n}\n\nfunction getOption({ data = [], theme }: BarConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n return {\n legend: buildLegendConfig(hasLegend),\n grid: buildGridConfig(hasLegend, theme),\n xAxis: {\n type: 'category',\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [parseInt(theme.spacing(0.5)), 0, 0, 0],\n margin: 0,\n },\n },\n yAxis: {\n type: 'value',\n splitNumber: 1,\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n margin: parseInt(theme.spacing(1)),\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n verticalAlign: 'bottom',\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n tooltip: {\n position: createTooltipPositioner(theme),\n },\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'bar',\n barMaxWidth: 100,\n emphasis: {\n focus: 'series',\n },\n // itemStyle: {\n // color(params) {\n // const color =\n // getColorBySchema({\n // colorSchema: config?.colorSchema,\n // value: params.value as ColorSchemaValue,\n // }) ?? params.color!\n\n // if (!selected?.length) {\n // return color\n // }\n\n // if (selected.map(String).includes(params.name)) {\n // return color\n // }\n\n // return theme.palette.black[25]\n // },\n // },\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../_shared/skeleton'\n\nexport const styles = {\n skeleton: {\n item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(12),\n\n '& + &': {\n marginLeft: ({ spacing }) => spacing(1),\n },\n },\n graph: {\n ...baseSkeletonStyles.graph,\n grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n mask: {\n gray: {\n backgroundColor: ({ palette }) => palette.grey[100],\n },\n white: {\n backgroundColor: ({ palette }) => palette.common.white,\n },\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function BarSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n }}\n >\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={i}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1.5),\n }}\n >\n <Skeleton variant='circular' width={8} height={8} />\n <Skeleton width={48} height={8} />\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["barDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","data","rows","flattenObjectArrayToCSV","barConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","theme","hasLegend","length","legend","buildLegendConfig","grid","buildGridConfig","xAxis","axisLine","show","axisTick","axisLabel","padding","parseInt","spacing","margin","yAxis","splitNumber","fontSize","typography","overlineDelicate","fontFamily","showMaxLabel","showMinLabel","verticalAlign","splitLine","lineStyle","color","palette","black","tooltip","position","createTooltipPositioner","series","map","_","index","datasetIndex","barMaxWidth","emphasis","focus","styles","skeleton","item","flex","maxWidth","marginLeft","graph","baseSkeletonStyles","display","justifyContent","alignItems","width","BarSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","container","gap","_temp","height","_temp2","Array","fill","_temp4","i","jsxs","_temp3","spacing_1","spacing_0"],"mappings":"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"}