@carto/ps-react-ui 4.4.1 → 4.4.3

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 (225) hide show
  1. package/dist/components.js.map +1 -1
  2. package/dist/download-config-Dqu78h2a.js +57 -0
  3. package/dist/download-config-Dqu78h2a.js.map +1 -0
  4. package/dist/error-CEkRPccv.js.map +1 -1
  5. package/dist/exports-Cr43OCul.js.map +1 -1
  6. package/dist/formatter-B9Bxn1k7.js +6 -0
  7. package/dist/formatter-B9Bxn1k7.js.map +1 -0
  8. package/dist/lasso-tool-BYbxrJ-7.js.map +1 -1
  9. package/dist/note-t51drNe0.js.map +1 -1
  10. package/dist/options-D9wflre6.js.map +1 -1
  11. package/dist/row-DTCV0Ocm.js.map +1 -1
  12. package/dist/series-CYNOu2Ju.js.map +1 -1
  13. package/dist/smart-tooltip-D4vwQpFf.js.map +1 -1
  14. package/dist/styles-Y8q7Jff3.js +118 -0
  15. package/dist/styles-Y8q7Jff3.js.map +1 -0
  16. package/dist/tooltip-BDnrRKrp.js.map +1 -1
  17. package/dist/types/components/basemaps/basemaps.d.ts +20 -0
  18. package/dist/types/components/geolocation-controls/geolocation-controls.d.ts +11 -0
  19. package/dist/types/components/lasso-tool/lasso-tool-inline.d.ts +17 -0
  20. package/dist/types/components/lasso-tool/lasso-tool.d.ts +21 -0
  21. package/dist/types/components/list-data/list-data.d.ts +16 -0
  22. package/dist/types/components/measurement-tools/measurement-tools.d.ts +20 -0
  23. package/dist/types/components/smart-tooltip/smart-tooltip.d.ts +17 -0
  24. package/dist/types/components/tooltip/tooltip.d.ts +13 -0
  25. package/dist/types/components/zoom-controls/zoom-controls.d.ts +16 -0
  26. package/dist/types/hooks/use-widget-ref.d.ts +4 -4
  27. package/dist/types/widgets/actions/brush-toggle/types.d.ts +8 -2
  28. package/dist/types/widgets/actions/download/download.d.ts +11 -0
  29. package/dist/types/widgets/actions/download/exports.d.ts +15 -0
  30. package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +13 -0
  31. package/dist/types/widgets/actions/index.d.ts +1 -1
  32. package/dist/types/widgets/actions/relative-data/relative-data.d.ts +1 -0
  33. package/dist/types/widgets/bar/config.d.ts +8 -4
  34. package/dist/types/widgets/category/category-ui.d.ts +3 -0
  35. package/dist/types/widgets/category/components/category-bar.d.ts +3 -0
  36. package/dist/types/widgets/category/components/category-legend.d.ts +3 -0
  37. package/dist/types/widgets/category/components/category-row-multi.d.ts +5 -1
  38. package/dist/types/widgets/category/components/category-row-other.d.ts +3 -0
  39. package/dist/types/widgets/category/components/category-row-single.d.ts +5 -1
  40. package/dist/types/widgets/category/config.d.ts +11 -0
  41. package/dist/types/widgets/category/types.d.ts +1 -0
  42. package/dist/types/widgets/echart/echart-ui.d.ts +7 -0
  43. package/dist/types/widgets/echart/echart.d.ts +6 -0
  44. package/dist/types/widgets/echart/options.d.ts +7 -0
  45. package/dist/types/widgets/echart/types.d.ts +3 -0
  46. package/dist/types/widgets/echart/utils.d.ts +41 -0
  47. package/dist/types/widgets/error/error.d.ts +10 -0
  48. package/dist/types/widgets/formula/components/item.d.ts +3 -0
  49. package/dist/types/widgets/formula/components/prefix.d.ts +3 -0
  50. package/dist/types/widgets/formula/components/row.d.ts +3 -0
  51. package/dist/types/widgets/formula/components/series.d.ts +3 -0
  52. package/dist/types/widgets/formula/components/suffix.d.ts +3 -0
  53. package/dist/types/widgets/formula/components/value.d.ts +3 -0
  54. package/dist/types/widgets/formula/config.d.ts +11 -0
  55. package/dist/types/widgets/formula/formula-ui.d.ts +3 -0
  56. package/dist/types/widgets/histogram/config.d.ts +18 -2
  57. package/dist/types/widgets/histogram/index.d.ts +2 -1
  58. package/dist/types/widgets/histogram/types.d.ts +6 -3
  59. package/dist/types/widgets/loader/loader.d.ts +22 -0
  60. package/dist/types/widgets/loader/utils.d.ts +26 -3
  61. package/dist/types/widgets/markdown/config.d.ts +10 -0
  62. package/dist/types/widgets/markdown/markdown-ui.d.ts +7 -0
  63. package/dist/types/widgets/markdown/markdown.d.ts +3 -0
  64. package/dist/types/widgets/note/note.d.ts +10 -0
  65. package/dist/types/widgets/pie/config.d.ts +8 -4
  66. package/dist/types/widgets/range/components/range-item.d.ts +3 -0
  67. package/dist/types/widgets/range/config.d.ts +5 -0
  68. package/dist/types/widgets/range/range-ui.d.ts +3 -0
  69. package/dist/types/widgets/scatterplot/config.d.ts +7 -3
  70. package/dist/types/widgets/selection-summary/selection-summary.d.ts +11 -0
  71. package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +10 -0
  72. package/dist/types/widgets/spread/components/max-value.d.ts +3 -0
  73. package/dist/types/widgets/spread/components/min-value.d.ts +3 -0
  74. package/dist/types/widgets/spread/components/separator.d.ts +3 -0
  75. package/dist/types/widgets/spread/config.d.ts +11 -0
  76. package/dist/types/widgets/spread/spread-ui.d.ts +3 -0
  77. package/dist/types/widgets/stores/types.d.ts +2 -0
  78. package/dist/types/widgets/subheader/subheader.d.ts +11 -0
  79. package/dist/types/widgets/table/config.d.ts +8 -3
  80. package/dist/types/widgets/table/hooks/use-pagination.d.ts +11 -3
  81. package/dist/types/widgets/table/hooks/use-selection.d.ts +11 -2
  82. package/dist/types/widgets/table/hooks/use-sort.d.ts +11 -3
  83. package/dist/types/widgets/timeseries/config.d.ts +8 -4
  84. package/dist/types/widgets/utils/chart-config/download-config.d.ts +3 -0
  85. package/dist/types/widgets/{_shared → utils}/chart-config/index.d.ts +2 -0
  86. package/dist/types/widgets/{_shared → utils}/chart-config/option-builders.d.ts +14 -9
  87. package/dist/types/widgets/utils/formatter.d.ts +2 -0
  88. package/dist/types/widgets/utils/index.d.ts +7 -0
  89. package/dist/types/widgets/wrapper/components/actions.d.ts +3 -0
  90. package/dist/types/widgets/wrapper/components/options.d.ts +3 -0
  91. package/dist/types/widgets/wrapper/components/title.d.ts +3 -0
  92. package/dist/types/widgets/wrapper/wrapper-ui.d.ts +14 -0
  93. package/dist/types/widgets/wrapper/wrapper.d.ts +14 -0
  94. package/dist/use-widget-ref-wtFLDFCD.js.map +1 -1
  95. package/dist/utils-BOhInag6.js.map +1 -1
  96. package/dist/widgets/actions.js +720 -681
  97. package/dist/widgets/actions.js.map +1 -1
  98. package/dist/widgets/bar.js +78 -92
  99. package/dist/widgets/bar.js.map +1 -1
  100. package/dist/widgets/category.js +206 -197
  101. package/dist/widgets/category.js.map +1 -1
  102. package/dist/widgets/echart.js.map +1 -1
  103. package/dist/widgets/formula.js +54 -54
  104. package/dist/widgets/formula.js.map +1 -1
  105. package/dist/widgets/histogram.js +106 -86
  106. package/dist/widgets/histogram.js.map +1 -1
  107. package/dist/widgets/loader.js.map +1 -1
  108. package/dist/widgets/markdown.js.map +1 -1
  109. package/dist/widgets/pie.js +147 -112
  110. package/dist/widgets/pie.js.map +1 -1
  111. package/dist/widgets/range.js +23 -22
  112. package/dist/widgets/range.js.map +1 -1
  113. package/dist/widgets/scatterplot.js +46 -60
  114. package/dist/widgets/scatterplot.js.map +1 -1
  115. package/dist/widgets/selection-summary.js.map +1 -1
  116. package/dist/widgets/skeleton-loader.js.map +1 -1
  117. package/dist/widgets/spread.js +40 -41
  118. package/dist/widgets/spread.js.map +1 -1
  119. package/dist/widgets/subheader.js.map +1 -1
  120. package/dist/widgets/table.js.map +1 -1
  121. package/dist/widgets/timeseries.js +51 -65
  122. package/dist/widgets/timeseries.js.map +1 -1
  123. package/dist/widgets/toolbar-actions.js +101 -6693
  124. package/dist/widgets/toolbar-actions.js.map +1 -1
  125. package/dist/widgets/utils.js +33 -0
  126. package/dist/widgets/utils.js.map +1 -0
  127. package/dist/widgets/wrapper.js.map +1 -1
  128. package/package.json +9 -4
  129. package/src/components/basemaps/basemaps.tsx +20 -0
  130. package/src/components/geolocation-controls/geolocation-controls.tsx +11 -0
  131. package/src/components/lasso-tool/lasso-tool-inline.tsx +17 -0
  132. package/src/components/lasso-tool/lasso-tool.tsx +21 -0
  133. package/src/components/list-data/list-data.tsx +16 -0
  134. package/src/components/measurement-tools/measurement-tools.tsx +20 -0
  135. package/src/components/smart-tooltip/smart-tooltip.tsx +17 -0
  136. package/src/components/tooltip/tooltip.tsx +13 -0
  137. package/src/components/zoom-controls/zoom-controls.tsx +16 -0
  138. package/src/hooks/use-widget-ref.ts +4 -4
  139. package/src/widgets/README.md +13 -13
  140. package/src/widgets/actions/brush-toggle/brush-toggle.tsx +42 -47
  141. package/src/widgets/actions/brush-toggle/types.ts +8 -2
  142. package/src/widgets/actions/download/download.tsx +11 -0
  143. package/src/widgets/actions/download/exports.tsx +15 -0
  144. package/src/widgets/actions/fullscreen/fullscreen.tsx +13 -0
  145. package/src/widgets/actions/index.ts +1 -0
  146. package/src/widgets/actions/relative-data/relative-data.test.tsx +62 -1
  147. package/src/widgets/actions/relative-data/relative-data.tsx +62 -39
  148. package/src/widgets/bar/config.ts +34 -34
  149. package/src/widgets/bar/style.ts +1 -1
  150. package/src/widgets/category/category-ui.tsx +12 -2
  151. package/src/widgets/category/components/category-bar.tsx +3 -0
  152. package/src/widgets/category/components/category-legend.tsx +3 -0
  153. package/src/widgets/category/components/category-row-multi.tsx +9 -2
  154. package/src/widgets/category/components/category-row-other.tsx +3 -0
  155. package/src/widgets/category/components/category-row-single.tsx +8 -1
  156. package/src/widgets/category/config.ts +11 -0
  157. package/src/widgets/category/types.ts +1 -0
  158. package/src/widgets/echart/echart-ui.tsx +7 -0
  159. package/src/widgets/echart/echart.tsx +6 -0
  160. package/src/widgets/echart/options.ts +7 -0
  161. package/src/widgets/echart/types.ts +3 -0
  162. package/src/widgets/echart/utils.ts +41 -0
  163. package/src/widgets/error/error.tsx +10 -0
  164. package/src/widgets/formula/components/item.tsx +3 -0
  165. package/src/widgets/formula/components/prefix.tsx +3 -0
  166. package/src/widgets/formula/components/row.tsx +3 -0
  167. package/src/widgets/formula/components/series.tsx +3 -0
  168. package/src/widgets/formula/components/suffix.tsx +3 -0
  169. package/src/widgets/formula/components/value.tsx +4 -2
  170. package/src/widgets/formula/config.ts +11 -0
  171. package/src/widgets/formula/formula-ui.tsx +3 -0
  172. package/src/widgets/histogram/config.ts +93 -21
  173. package/src/widgets/histogram/index.ts +6 -1
  174. package/src/widgets/histogram/style.ts +1 -1
  175. package/src/widgets/histogram/types.ts +9 -3
  176. package/src/widgets/loader/loader.tsx +22 -0
  177. package/src/widgets/loader/utils.ts +26 -3
  178. package/src/widgets/markdown/config.ts +10 -0
  179. package/src/widgets/markdown/markdown-ui.tsx +7 -0
  180. package/src/widgets/markdown/markdown.tsx +3 -0
  181. package/src/widgets/note/note.tsx +10 -0
  182. package/src/widgets/pie/config.ts +100 -33
  183. package/src/widgets/pie/style.ts +1 -1
  184. package/src/widgets/range/components/range-item.tsx +5 -2
  185. package/src/widgets/range/config.ts +5 -0
  186. package/src/widgets/range/range-ui.tsx +3 -0
  187. package/src/widgets/scatterplot/config.ts +19 -23
  188. package/src/widgets/scatterplot/style.ts +1 -1
  189. package/src/widgets/selection-summary/selection-summary.tsx +11 -0
  190. package/src/widgets/skeleton-loader/skeleton-loader.tsx +10 -0
  191. package/src/widgets/spread/components/max-value.tsx +4 -2
  192. package/src/widgets/spread/components/min-value.tsx +4 -2
  193. package/src/widgets/spread/components/separator.tsx +3 -0
  194. package/src/widgets/spread/config.ts +11 -0
  195. package/src/widgets/spread/spread-ui.tsx +3 -0
  196. package/src/widgets/stores/types.ts +2 -0
  197. package/src/widgets/subheader/subheader.tsx +11 -0
  198. package/src/widgets/table/config.ts +8 -3
  199. package/src/widgets/table/hooks/use-pagination.ts +11 -3
  200. package/src/widgets/table/hooks/use-selection.ts +11 -2
  201. package/src/widgets/table/hooks/use-sort.ts +11 -3
  202. package/src/widgets/timeseries/config.ts +32 -33
  203. package/src/widgets/timeseries/style.ts +1 -1
  204. package/src/widgets/utils/chart-config/download-config.ts +22 -0
  205. package/src/widgets/{_shared → utils}/chart-config/index.ts +4 -0
  206. package/src/widgets/{_shared → utils}/chart-config/option-builders.ts +23 -13
  207. package/src/widgets/utils/formatter.ts +2 -0
  208. package/src/widgets/utils/index.ts +26 -0
  209. package/src/widgets/wrapper/components/actions.tsx +3 -0
  210. package/src/widgets/wrapper/components/options.tsx +3 -0
  211. package/src/widgets/wrapper/components/title.tsx +3 -0
  212. package/src/widgets/wrapper/wrapper-ui.tsx +14 -0
  213. package/src/widgets/wrapper/wrapper.tsx +14 -0
  214. package/dist/styles-CAroD5Rc.js +0 -123
  215. package/dist/styles-CAroD5Rc.js.map +0 -1
  216. /package/dist/types/widgets/{_shared → utils}/chart-config/config-factory.d.ts +0 -0
  217. /package/dist/types/widgets/{_shared → utils}/chart-config/csv-modifiers.d.ts +0 -0
  218. /package/dist/types/widgets/{_shared → utils}/chart-config/option-builders.test.d.ts +0 -0
  219. /package/dist/types/widgets/{_shared → utils}/skeleton/index.d.ts +0 -0
  220. /package/dist/types/widgets/{_shared → utils}/skeleton/styles.d.ts +0 -0
  221. /package/src/widgets/{_shared → utils}/chart-config/config-factory.ts +0 -0
  222. /package/src/widgets/{_shared → utils}/chart-config/csv-modifiers.ts +0 -0
  223. /package/src/widgets/{_shared → utils}/chart-config/option-builders.test.ts +0 -0
  224. /package/src/widgets/{_shared → utils}/skeleton/index.ts +0 -0
  225. /package/src/widgets/{_shared → utils}/skeleton/styles.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"category.js","sources":["../../src/widgets/category/style.ts","../../src/widgets/category/components/category-bar.tsx","../../src/widgets/category/components/category-row-single.tsx","../../src/widgets/category/components/category-row-multi.tsx","../../src/widgets/category/components/category-row-other.tsx","../../src/widgets/category/components/category-legend.tsx","../../src/widgets/category/category-ui.tsx","../../src/widgets/category/skeleton.tsx","../../src/widgets/category/config.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(1),\n },\n row: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(0.5),\n pointerEvents: 'none',\n },\n rowClickable: {\n pointerEvents: 'auto',\n // display: 'flex',\n // flexDirection: 'column',\n // gap: (theme: Theme) => theme.spacing(0.5),\n // cursor: 'pointer',\n // borderRadius: 1,\n // padding: (theme: Theme) => theme.spacing(0.5),\n // margin: (theme: Theme) => theme.spacing(-0.5),\n // transition: 'background-color 0.15s ease-in-out',\n // '&:hover': {\n // backgroundColor: (theme: Theme) => theme.palette.action.hover,\n // },\n },\n rowHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n rowLabel: {\n typography: 'body2',\n fontWeight: 'medium',\n color: 'text.primary',\n },\n rowValue: {\n typography: 'body2',\n color: 'text.secondary',\n },\n barContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n bar: {\n height: 4,\n borderRadius: 2,\n backgroundColor: (theme: Theme) => theme.palette.action.disabledBackground,\n overflow: 'hidden',\n position: 'relative',\n transition: 'background-color 0.15s ease-in-out',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.hover,\n\n '& > div': {\n filter: 'brightness(1.2)',\n },\n },\n },\n barFill: {\n height: '100%',\n borderRadius: 2,\n transition: 'width 0.3s ease-in-out, background-color 0.15s ease-in-out',\n },\n barFillMuted: {\n backgroundColor: (theme: Theme) => theme.palette.action.disabled,\n },\n legend: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(2),\n flexWrap: 'wrap',\n paddingTop: (theme: Theme) => theme.spacing(2),\n position: 'sticky',\n bottom: 0,\n backgroundColor: 'background.paper',\n borderTop: (theme: Theme) => `1px solid ${theme.palette.divider}`,\n marginTop: (theme: Theme) => theme.spacing(2),\n },\n legendItem: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(1),\n },\n legendDot: {\n width: 8,\n height: 8,\n borderRadius: '50%',\n },\n legendLabel: {\n typography: 'caption',\n color: 'text.secondary',\n textTransform: 'uppercase',\n fontWeight: 'medium',\n },\n multiBarRow: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(1),\n },\n multiBarValue: {\n typography: 'body2',\n color: 'text.secondary',\n minWidth: 48,\n textAlign: 'right',\n },\n multiBarContainer: {\n flex: 1,\n },\n otherRow: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n otherLabel: {\n typography: 'body2',\n fontWeight: 'medium',\n color: 'text.secondary',\n fontStyle: 'italic',\n },\n otherCount: {\n typography: 'body2',\n color: 'text.disabled',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport { styles } from '../style'\n\nexport interface CategoryBarProps {\n value: number\n maxValue: number\n color: string\n selected?: boolean\n}\n\nexport function CategoryBar({\n value,\n maxValue,\n color,\n selected = true,\n}: CategoryBarProps) {\n const percentage = maxValue > 0 ? (value / maxValue) * 100 : 0\n\n const barFillSx = selected\n ? { ...styles.barFill, width: `${percentage}%`, backgroundColor: color }\n : { ...styles.barFill, ...styles.barFillMuted, width: `${percentage}%` }\n\n return (\n <Box sx={styles.bar}>\n <Box sx={barFillSx} />\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport { CategoryBar } from './category-bar'\nimport type { CategoryWidgetConfig } from '../types'\n\nexport interface CategoryRowSingleProps {\n name: string\n value: number\n maxValue: number\n color: string\n formatter: NonNullable<CategoryWidgetConfig['formatter']>\n onClick?: CategoryWidgetConfig['onRowClick']\n selected?: boolean\n}\n\nexport function CategoryRowSingle({\n name,\n value,\n maxValue,\n color,\n formatter,\n onClick,\n selected = true,\n}: CategoryRowSingleProps) {\n const handleClick = onClick\n ? () =>\n onClick({\n name,\n })\n : undefined\n const rowStyle = onClick ? styles.rowClickable : styles.row\n\n return (\n <Box sx={rowStyle} onClick={handleClick}>\n <Box sx={styles.rowHeader}>\n <Typography sx={styles.rowLabel}>{name}</Typography>\n <Typography sx={styles.rowValue}>{formatter(value)}</Typography>\n </Box>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={color}\n selected={selected}\n />\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport { CategoryBar } from './category-bar'\nimport type { CategoryWidgetConfig } from '../types'\n\nexport interface CategoryRowMultiProps {\n name: string\n values: number[]\n maxValue: number\n colors: string[]\n formatter: NonNullable<CategoryWidgetConfig['formatter']>\n onClick?: CategoryWidgetConfig['onRowClick']\n selected?: boolean\n}\n\nexport function CategoryRowMulti({\n name,\n values,\n maxValue,\n colors,\n formatter,\n onClick,\n selected = true,\n}: CategoryRowMultiProps) {\n const handleClick = onClick ? () => onClick({ name }) : undefined\n const rowStyle = onClick ? styles.rowClickable : styles.row\n\n return (\n <Box sx={rowStyle} onClick={handleClick}>\n <Typography sx={styles.rowLabel}>{name}</Typography>\n <Box sx={styles.barContainer}>\n {values.map((value, index) => (\n <Box key={`${name}-${value}`} sx={styles.multiBarRow}>\n <Box sx={styles.multiBarContainer}>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={colors[index % colors.length] ?? ''}\n selected={selected}\n />\n </Box>\n <Typography sx={styles.multiBarValue}>\n {formatter(value)}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\n\nexport interface CategoryRowOtherProps {\n hiddenCount: number\n otherLabel?: string\n otherCountLabel?: string\n}\n\nexport function CategoryRowOther({\n hiddenCount,\n otherLabel = 'Other',\n otherCountLabel = '{count} more',\n}: CategoryRowOtherProps) {\n const countText = otherCountLabel.replace('{count}', String(hiddenCount))\n\n return (\n <Box sx={styles.otherRow}>\n <Typography sx={styles.otherLabel}>{otherLabel}</Typography>\n <Typography sx={styles.otherCount}>({countText})</Typography>\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport type { CategorySeriesConfig } from '../types'\n\nexport interface CategoryLegendProps {\n series: CategorySeriesConfig[]\n colors: string[]\n}\n\nexport function CategoryLegend({ series, colors }: CategoryLegendProps) {\n if (series.length === 0) {\n return null\n }\n\n return (\n <Box sx={styles.legend}>\n {series.map((item, index) => (\n <Box key={item.name} sx={styles.legendItem}>\n <Box\n sx={{\n ...styles.legendDot,\n backgroundColor: item.color ?? colors[index % colors.length],\n }}\n />\n <Typography sx={styles.legendLabel}>{item.name}</Typography>\n </Box>\n ))}\n </Box>\n )\n}\n","import { Box, useTheme } from '@mui/material'\nimport { useWidgetStore } from '../stores/widget-store'\nimport { styles } from './style'\nimport type { CategoryUIProps, CategoryWidgetState } from './types'\nimport {\n CategoryRowSingle,\n CategoryRowMulti,\n CategoryRowOther,\n CategoryLegend,\n} from './components'\nimport { useShallow } from 'zustand/shallow'\nimport { useState } from 'react'\n\nconst defaultFormatter = (value: number) => value.toString()\n\nexport function CategoryUI({ id }: CategoryUIProps) {\n const theme = useTheme()\n const _formatter = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.formatter),\n )\n const _series = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.series),\n )\n const data = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.data),\n )\n const maxItems = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.maxItems),\n )\n const labels = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.labels),\n )\n const onRowClick = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.onRowClick),\n )\n const selected = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.selected),\n )\n const max = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.max),\n )\n\n const formatter = _formatter ?? defaultFormatter\n const series = _series ?? []\n\n const [maxHeight] = useState<string | number | undefined>(\n maxItems ? 40 * (series.length || 1) * maxItems : undefined,\n )\n\n const qualitativeColors = Object.values(theme.palette.qualitative.bold)\n\n const colors =\n series.length > 0\n ? series.map(\n (s, index: number) =>\n s.color ??\n qualitativeColors[index % qualitativeColors.length] ??\n theme.palette.secondary.main,\n )\n : [theme.palette.secondary.main]\n\n // Group data items by name to support multi-series display\n // data is CategoryDataItem[][] where data[seriesIndex] contains items for that series\n const groupedData = generateGroupedData({ data })\n\n if (groupedData.length === 0) {\n return null\n }\n\n const maxValue =\n max ?? Math.max(...groupedData.flatMap((item) => item.values))\n\n // Slice data to maxItems and compute hidden count\n const visibleData =\n maxItems !== undefined && maxItems >= 0\n ? groupedData.slice(0, maxItems)\n : groupedData\n\n const hiddenCount = groupedData.length - visibleData.length\n const isMulti = series.length > 1\n\n return (\n <Box\n sx={{\n ...styles.root,\n }}\n >\n <Box\n sx={styles.list}\n style={{ maxHeight, overflow: hiddenCount === 0 ? 'auto' : 'hidden' }}\n >\n {isMulti\n ? visibleData.map((item) => (\n <CategoryRowMulti\n key={item.name}\n name={item.name}\n values={item.values}\n maxValue={maxValue}\n colors={colors}\n formatter={formatter}\n onClick={onRowClick}\n selected={selected?.(item.name) ?? true}\n />\n ))\n : visibleData.map((item) => (\n <CategoryRowSingle\n key={item.name}\n name={item.name}\n value={item.values[0] ?? 0}\n selected={selected?.(item.name) ?? true}\n maxValue={maxValue}\n color={colors[0]!}\n formatter={formatter}\n onClick={onRowClick}\n />\n ))}\n {hiddenCount > 0 && (\n <CategoryRowOther\n hiddenCount={hiddenCount}\n otherLabel={labels?.other}\n otherCountLabel={labels?.otherCount}\n />\n )}\n </Box>\n {series.length > 0 && <CategoryLegend series={series} colors={colors} />}\n </Box>\n )\n}\n\nfunction generateGroupedData({\n data,\n}: {\n data: { name: string; value: number }[][] | undefined\n}) {\n if (!data || data.length === 0) return []\n\n const seriesCount = Math.max(data.length, 1)\n const grouped = new Map<string, number[]>()\n const nameOrder: string[] = []\n\n // Iterate over each series (outer array)\n for (let seriesIndex = 0; seriesIndex < data.length; seriesIndex++) {\n const seriesData = data[seriesIndex]!\n for (const item of seriesData) {\n let values = grouped.get(item.name)\n if (!values) {\n values = new Array<number>(seriesCount).fill(0)\n grouped.set(item.name, values)\n nameOrder.push(item.name)\n }\n values[seriesIndex] = item.value\n }\n }\n\n return nameOrder.map((name) => ({\n name,\n values: grouped.get(name)!,\n }))\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nconst widthPatterns = [85, 70, 55, 75, 60]\n\nexport function CategorySkeleton() {\n return (\n <Box sx={styles.list} aria-label='Category skeleton'>\n {Array.from({ length: 5 }).map((_, index) => (\n <Box key={index} sx={styles.row}>\n <Box sx={styles.rowHeader}>\n <Skeleton width={80} height={16} />\n <Skeleton width={40} height={16} />\n </Box>\n <Skeleton\n variant='rectangular'\n height={4}\n sx={{ borderRadius: 2, width: `${widthPatterns[index]}%` }}\n />\n </Box>\n ))}\n </Box>\n )\n}\n","import { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type {\n CategoryWidgetConfig,\n CategoryWidgetData,\n CategorySeriesConfig,\n} from './types'\n\ninterface CategoryDownloadConfigProps extends ConfigProps {\n series?: CategorySeriesConfig[]\n}\n\nexport function categoryDownloadConfig({\n refUI,\n series,\n}: CategoryDownloadConfigProps): DownloadItem<CategoryWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n if (!data?.length || data[0]?.length === 0) {\n return downloadToCSV.modifier([])\n }\n\n // data is CategoryDataItem[][] where data[seriesIndex] contains items for that series\n const seriesCount = data.length\n const grouped = new Map<string, number[]>()\n const nameOrder: string[] = []\n\n // Iterate over each series (outer array)\n for (let seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) {\n const seriesData = data[seriesIndex]!\n for (const item of seriesData) {\n let values = grouped.get(item.name)\n if (!values) {\n values = new Array<number>(seriesCount).fill(0)\n grouped.set(item.name, values)\n nameOrder.push(item.name)\n }\n values[seriesIndex] = item.value\n }\n }\n\n // Build rows\n const rows = nameOrder.map((name) => [name, ...grouped.get(name)!])\n\n const isMulti = seriesCount > 1\n const headers = isMulti\n ? [\n 'Category',\n ...(series?.map((s: CategorySeriesConfig) => s.name) ??\n Array.from(\n { length: seriesCount },\n (_, i) => `Series ${i + 1}`,\n )),\n ]\n : ['Category', 'Value']\n\n return downloadToCSV.modifier([headers, ...rows])\n },\n },\n ]\n}\n\nexport function categoryConfig(): CategoryWidgetConfig {\n return {\n series: [],\n maxItems: 10,\n max: undefined,\n }\n}\n"],"names":["styles","root","display","flexDirection","position","list","gap","theme","spacing","row","pointerEvents","rowClickable","rowHeader","justifyContent","alignItems","rowLabel","typography","fontWeight","color","rowValue","barContainer","bar","height","borderRadius","backgroundColor","palette","action","disabledBackground","overflow","transition","cursor","hover","filter","barFill","barFillMuted","disabled","legend","flexWrap","paddingTop","bottom","borderTop","divider","marginTop","legendItem","legendDot","width","legendLabel","textTransform","multiBarRow","multiBarValue","minWidth","textAlign","multiBarContainer","flex","otherRow","otherLabel","fontStyle","otherCount","CategoryBar","t0","$","_c","value","maxValue","selected","t1","undefined","percentage","t2","barFillSx","t3","jsx","Box","CategoryRowSingle","name","formatter","onClick","handleClick","rowStyle","Typography","t4","t5","t6","t7","t8","jsxs","CategoryRowMulti","values","colors","index","length","map","CategoryRowOther","hiddenCount","otherCountLabel","replace","String","countText","CategoryLegend","series","item","defaultFormatter","toString","CategoryUI","id","useTheme","state","getWidget","_formatter","useWidgetStore","useShallow","state_0","_series","state_1","data","state_2","maxItems","state_3","labels","state_4","onRowClick","state_5","state_6","max","maxHeight","useState","qualitativeColors","Object","qualitative","bold","s","secondary","main","T0","T1","t10","t11","t12","t13","t9","Symbol","for","bb0","groupedData","generateGroupedData","Math","flatMap","_temp","visibleData","slice","isMulti","t14","item_0","item_1","other","t15","t16","t17","seriesCount","grouped","Map","nameOrder","seriesIndex","seriesData","get","Array","fill","set","push","widthPatterns","CategorySkeleton","from","_","Skeleton","categoryDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","rows","headers","i","categoryConfig"],"mappings":"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"}
1
+ {"version":3,"file":"category.js","sources":["../../src/widgets/category/style.ts","../../src/widgets/category/components/category-bar.tsx","../../src/widgets/category/components/category-row-single.tsx","../../src/widgets/category/components/category-row-multi.tsx","../../src/widgets/category/components/category-row-other.tsx","../../src/widgets/category/components/category-legend.tsx","../../src/widgets/category/category-ui.tsx","../../src/widgets/category/skeleton.tsx","../../src/widgets/category/config.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(1),\n },\n row: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(0.5),\n pointerEvents: 'none',\n },\n rowClickable: {\n pointerEvents: 'auto',\n // display: 'flex',\n // flexDirection: 'column',\n // gap: (theme: Theme) => theme.spacing(0.5),\n // cursor: 'pointer',\n // borderRadius: 1,\n // padding: (theme: Theme) => theme.spacing(0.5),\n // margin: (theme: Theme) => theme.spacing(-0.5),\n // transition: 'background-color 0.15s ease-in-out',\n // '&:hover': {\n // backgroundColor: (theme: Theme) => theme.palette.action.hover,\n // },\n },\n rowHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n rowLabel: {\n typography: 'body2',\n fontWeight: 'medium',\n color: 'text.primary',\n },\n rowValue: {\n typography: 'body2',\n color: 'text.secondary',\n },\n barContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n bar: {\n height: 4,\n borderRadius: 2,\n backgroundColor: (theme: Theme) => theme.palette.action.disabledBackground,\n overflow: 'hidden',\n position: 'relative',\n transition: 'background-color 0.15s ease-in-out',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.hover,\n\n '& > div': {\n filter: 'brightness(1.2)',\n },\n },\n },\n barFill: {\n height: '100%',\n borderRadius: 2,\n transition: 'width 0.3s ease-in-out, background-color 0.15s ease-in-out',\n },\n barFillMuted: {\n backgroundColor: (theme: Theme) => theme.palette.action.disabled,\n },\n legend: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(2),\n flexWrap: 'wrap',\n paddingTop: (theme: Theme) => theme.spacing(2),\n position: 'sticky',\n bottom: 0,\n backgroundColor: 'background.paper',\n borderTop: (theme: Theme) => `1px solid ${theme.palette.divider}`,\n marginTop: (theme: Theme) => theme.spacing(2),\n },\n legendItem: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(1),\n },\n legendDot: {\n width: 8,\n height: 8,\n borderRadius: '50%',\n },\n legendLabel: {\n typography: 'caption',\n color: 'text.secondary',\n textTransform: 'uppercase',\n fontWeight: 'medium',\n },\n multiBarRow: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(1),\n },\n multiBarValue: {\n typography: 'body2',\n color: 'text.secondary',\n minWidth: 48,\n textAlign: 'right',\n },\n multiBarContainer: {\n flex: 1,\n },\n otherRow: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n otherLabel: {\n typography: 'body2',\n fontWeight: 'medium',\n color: 'text.secondary',\n fontStyle: 'italic',\n },\n otherCount: {\n typography: 'body2',\n color: 'text.disabled',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport { styles } from '../style'\n\nexport interface CategoryBarProps {\n value: number\n maxValue: number\n color: string\n selected?: boolean\n}\n\n/**\n * Renders a single horizontal bar fill proportional to its value relative to the maximum.\n */\nexport function CategoryBar({\n value,\n maxValue,\n color,\n selected = true,\n}: CategoryBarProps) {\n const percentage = maxValue > 0 ? (value / maxValue) * 100 : 0\n\n const barFillSx = selected\n ? { ...styles.barFill, width: `${percentage}%`, backgroundColor: color }\n : { ...styles.barFill, ...styles.barFillMuted, width: `${percentage}%` }\n\n return (\n <Box sx={styles.bar}>\n <Box sx={barFillSx} />\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport { CategoryBar } from './category-bar'\nimport type { CategoryWidgetConfig } from '../types'\n\nexport interface CategoryRowSingleProps {\n name: string\n value: number\n maxValue: number\n color: string\n formatter: NonNullable<CategoryWidgetConfig['formatter']>\n labelFormatter?: CategoryWidgetConfig['labelFormatter']\n onClick?: CategoryWidgetConfig['onRowClick']\n selected?: boolean\n}\n\n/**\n * Renders a single-series category row with a label, formatted value, and proportional bar.\n */\nexport function CategoryRowSingle({\n name,\n value,\n maxValue,\n color,\n formatter,\n labelFormatter,\n onClick,\n selected = true,\n}: CategoryRowSingleProps) {\n const handleClick = onClick\n ? () =>\n onClick({\n name,\n })\n : undefined\n const rowStyle = onClick ? styles.rowClickable : styles.row\n\n return (\n <Box sx={rowStyle} onClick={handleClick}>\n <Box sx={styles.rowHeader}>\n <Typography sx={styles.rowLabel}>\n {labelFormatter ? labelFormatter(name) : name}\n </Typography>\n <Typography sx={styles.rowValue}>{formatter(value)}</Typography>\n </Box>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={color}\n selected={selected}\n />\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport { CategoryBar } from './category-bar'\nimport type { CategoryWidgetConfig } from '../types'\n\nexport interface CategoryRowMultiProps {\n name: string\n values: number[]\n maxValue: number\n colors: string[]\n formatter: NonNullable<CategoryWidgetConfig['formatter']>\n labelFormatter?: CategoryWidgetConfig['labelFormatter']\n onClick?: CategoryWidgetConfig['onRowClick']\n selected?: boolean\n}\n\n/**\n * Renders a multi-series category row with a label and multiple color-coded bars stacked vertically.\n */\nexport function CategoryRowMulti({\n name,\n values,\n maxValue,\n colors,\n formatter,\n labelFormatter,\n onClick,\n selected = true,\n}: CategoryRowMultiProps) {\n const handleClick = onClick ? () => onClick({ name }) : undefined\n const rowStyle = onClick ? styles.rowClickable : styles.row\n\n return (\n <Box sx={rowStyle} onClick={handleClick}>\n <Typography sx={styles.rowLabel}>\n {labelFormatter ? labelFormatter(name) : name}\n </Typography>\n <Box sx={styles.barContainer}>\n {values.map((value, index) => (\n <Box key={`${name}-${value}-${index}`} sx={styles.multiBarRow}>\n <Box sx={styles.multiBarContainer}>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={colors[index % colors.length] ?? ''}\n selected={selected}\n />\n </Box>\n <Typography sx={styles.multiBarValue}>\n {formatter(value)}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\n\nexport interface CategoryRowOtherProps {\n hiddenCount: number\n otherLabel?: string\n otherCountLabel?: string\n}\n\n/**\n * Renders an \"Other\" summary row indicating how many additional categories are hidden beyond `maxItems`.\n */\nexport function CategoryRowOther({\n hiddenCount,\n otherLabel = 'Other',\n otherCountLabel = '{count} more',\n}: CategoryRowOtherProps) {\n const countText = otherCountLabel.replace('{count}', String(hiddenCount))\n\n return (\n <Box sx={styles.otherRow}>\n <Typography sx={styles.otherLabel}>{otherLabel}</Typography>\n <Typography sx={styles.otherCount}>({countText})</Typography>\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport type { CategorySeriesConfig } from '../types'\n\nexport interface CategoryLegendProps {\n series: CategorySeriesConfig[]\n colors: string[]\n}\n\n/**\n * Renders a color-coded legend for multi-series category widgets.\n */\nexport function CategoryLegend({ series, colors }: CategoryLegendProps) {\n if (series.length === 0) {\n return null\n }\n\n return (\n <Box sx={styles.legend}>\n {series.map((item, index) => (\n <Box key={item.name} sx={styles.legendItem}>\n <Box\n sx={{\n ...styles.legendDot,\n backgroundColor: item.color ?? colors[index % colors.length],\n }}\n />\n <Typography sx={styles.legendLabel}>{item.name}</Typography>\n </Box>\n ))}\n </Box>\n )\n}\n","import { Box, useTheme } from '@mui/material'\nimport { useWidgetStore } from '../stores/widget-store'\nimport { styles } from './style'\nimport type { CategoryUIProps, CategoryWidgetState } from './types'\nimport {\n CategoryRowSingle,\n CategoryRowMulti,\n CategoryRowOther,\n CategoryLegend,\n} from './components'\nimport { useShallow } from 'zustand/shallow'\nimport { useState } from 'react'\nimport { defaultFormatter, defaultLabelFormatter } from '../utils/formatter'\n\n/**\n * Renders a category widget displaying horizontal bars for categorical data with support for single and multi-series layouts, selection, and overflow grouping.\n */\nexport function CategoryUI({ id }: CategoryUIProps) {\n const theme = useTheme()\n const _formatter = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.formatter),\n )\n const _labelFormatter = useWidgetStore(\n useShallow(\n (state) => state.getWidget<CategoryWidgetState>(id)?.labelFormatter,\n ),\n )\n const _series = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.series),\n )\n const data = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.data),\n )\n const maxItems = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.maxItems),\n )\n const labels = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.labels),\n )\n const onRowClick = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.onRowClick),\n )\n const selected = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.selected),\n )\n const max = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.max),\n )\n\n const formatter = _formatter ?? defaultFormatter\n const labelFormatter = _labelFormatter ?? defaultLabelFormatter\n const series = _series ?? []\n\n const [maxHeight] = useState<string | number | undefined>(\n maxItems ? 40 * (series.length || 1) * maxItems : undefined,\n )\n\n const qualitativeColors = Object.values(theme.palette.qualitative.bold)\n\n const colors =\n series.length > 0\n ? series.map(\n (s, index: number) =>\n s.color ??\n qualitativeColors[index % qualitativeColors.length] ??\n theme.palette.secondary.main,\n )\n : [theme.palette.secondary.main]\n\n // Group data items by name to support multi-series display\n // data is CategoryDataItem[][] where data[seriesIndex] contains items for that series\n const groupedData = generateGroupedData({ data })\n\n if (groupedData.length === 0) {\n return null\n }\n\n const maxValue =\n max ?? Math.max(...groupedData.flatMap((item) => item.values))\n\n // Slice data to maxItems and compute hidden count\n const visibleData =\n maxItems !== undefined && maxItems >= 0\n ? groupedData.slice(0, maxItems)\n : groupedData\n\n const hiddenCount = groupedData.length - visibleData.length\n const isMulti = series.length > 1\n\n return (\n <Box\n sx={{\n ...styles.root,\n }}\n >\n <Box\n sx={styles.list}\n style={{ maxHeight, overflow: hiddenCount === 0 ? 'auto' : 'hidden' }}\n >\n {isMulti\n ? visibleData.map((item) => (\n <CategoryRowMulti\n key={item.name}\n name={item.name}\n values={item.values}\n maxValue={maxValue}\n colors={colors}\n formatter={formatter}\n labelFormatter={labelFormatter}\n onClick={onRowClick}\n selected={selected?.(item.name) ?? true}\n />\n ))\n : visibleData.map((item) => (\n <CategoryRowSingle\n key={item.name}\n name={item.name}\n value={item.values[0] ?? 0}\n selected={selected?.(item.name) ?? true}\n maxValue={maxValue}\n color={colors[0]!}\n formatter={formatter}\n labelFormatter={labelFormatter}\n onClick={onRowClick}\n />\n ))}\n {hiddenCount > 0 && (\n <CategoryRowOther\n hiddenCount={hiddenCount}\n otherLabel={labels?.other}\n otherCountLabel={labels?.otherCount}\n />\n )}\n </Box>\n {series.length > 0 && <CategoryLegend series={series} colors={colors} />}\n </Box>\n )\n}\n\nfunction generateGroupedData({\n data,\n}: {\n data: { name: string; value: number }[][] | undefined\n}) {\n if (!data || data.length === 0) return []\n\n const seriesCount = Math.max(data.length, 1)\n const grouped = new Map<string, number[]>()\n const nameOrder: string[] = []\n\n // Iterate over each series (outer array)\n for (let seriesIndex = 0; seriesIndex < data.length; seriesIndex++) {\n const seriesData = data[seriesIndex]!\n for (const item of seriesData) {\n let values = grouped.get(item.name)\n if (!values) {\n values = new Array<number>(seriesCount).fill(0)\n grouped.set(item.name, values)\n nameOrder.push(item.name)\n }\n values[seriesIndex] = item.value\n }\n }\n\n return nameOrder.map((name) => ({\n name,\n values: grouped.get(name)!,\n }))\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nconst widthPatterns = [85, 70, 55, 75, 60]\n\nexport function CategorySkeleton() {\n return (\n <Box sx={styles.list} aria-label='Category skeleton'>\n {Array.from({ length: 5 }).map((_, index) => (\n <Box key={index} sx={styles.row}>\n <Box sx={styles.rowHeader}>\n <Skeleton width={80} height={16} />\n <Skeleton width={40} height={16} />\n </Box>\n <Skeleton\n variant='rectangular'\n height={4}\n sx={{ borderRadius: 2, width: `${widthPatterns[index]}%` }}\n />\n </Box>\n ))}\n </Box>\n )\n}\n","import { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type {\n CategoryWidgetConfig,\n CategoryWidgetData,\n CategorySeriesConfig,\n} from './types'\n\ninterface CategoryDownloadConfigProps extends ConfigProps {\n series?: CategorySeriesConfig[]\n}\n\n/**\n * Creates download configuration for category widgets, supporting PNG (screenshot) and CSV (data) exports. CSV output groups values by category across multiple series.\n *\n * @param props - Configuration with `refUI` reference and optional `series` for CSV column headers.\n * @returns Array of download items for use with the Download action.\n */\nexport function categoryDownloadConfig({\n refUI,\n series,\n}: CategoryDownloadConfigProps): DownloadItem<CategoryWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n if (!data?.length || data[0]?.length === 0) {\n return downloadToCSV.modifier([])\n }\n\n // data is CategoryDataItem[][] where data[seriesIndex] contains items for that series\n const seriesCount = data.length\n const grouped = new Map<string, number[]>()\n const nameOrder: string[] = []\n\n // Iterate over each series (outer array)\n for (let seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) {\n const seriesData = data[seriesIndex]!\n for (const item of seriesData) {\n let values = grouped.get(item.name)\n if (!values) {\n values = new Array<number>(seriesCount).fill(0)\n grouped.set(item.name, values)\n nameOrder.push(item.name)\n }\n values[seriesIndex] = item.value\n }\n }\n\n // Build rows\n const rows = nameOrder.map((name) => [name, ...grouped.get(name)!])\n\n const isMulti = seriesCount > 1\n const headers = isMulti\n ? [\n 'Category',\n ...(series?.map((s: CategorySeriesConfig) => s.name) ??\n Array.from(\n { length: seriesCount },\n (_, i) => `Series ${i + 1}`,\n )),\n ]\n : ['Category', 'Value']\n\n return downloadToCSV.modifier([headers, ...rows])\n },\n },\n ]\n}\n\n/**\n * Returns the default configuration for category list widgets, including empty series and a default `maxItems` of 10.\n *\n * @returns Default category widget config.\n */\nexport function categoryConfig(): CategoryWidgetConfig {\n return {\n series: [],\n maxItems: 10,\n max: undefined,\n }\n}\n"],"names":["styles","root","display","flexDirection","position","list","gap","theme","spacing","row","pointerEvents","rowClickable","rowHeader","justifyContent","alignItems","rowLabel","typography","fontWeight","color","rowValue","barContainer","bar","height","borderRadius","backgroundColor","palette","action","disabledBackground","overflow","transition","cursor","hover","filter","barFill","barFillMuted","disabled","legend","flexWrap","paddingTop","bottom","borderTop","divider","marginTop","legendItem","legendDot","width","legendLabel","textTransform","multiBarRow","multiBarValue","minWidth","textAlign","multiBarContainer","flex","otherRow","otherLabel","fontStyle","otherCount","CategoryBar","t0","$","_c","value","maxValue","selected","t1","undefined","percentage","t2","barFillSx","t3","jsx","Box","CategoryRowSingle","name","formatter","labelFormatter","onClick","handleClick","rowStyle","t4","Typography","t5","t6","t7","t8","t9","jsxs","CategoryRowMulti","values","colors","index","length","map","CategoryRowOther","hiddenCount","otherCountLabel","replace","String","countText","CategoryLegend","series","item","CategoryUI","id","useTheme","state","getWidget","_formatter","useWidgetStore","useShallow","state_0","_labelFormatter","state_1","_series","state_2","data","state_3","maxItems","state_4","labels","state_5","onRowClick","state_6","state_7","max","defaultFormatter","defaultLabelFormatter","maxHeight","useState","qualitativeColors","Object","qualitative","bold","s","secondary","main","T0","T1","t10","t11","t12","t13","t14","Symbol","for","bb0","groupedData","generateGroupedData","Math","flatMap","_temp","visibleData","slice","isMulti","t15","item_0","item_1","other","t16","t17","t18","seriesCount","grouped","Map","nameOrder","seriesIndex","seriesData","get","Array","fill","set","push","widthPatterns","CategorySkeleton","from","_","Skeleton","categoryDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","rows","headers","i","categoryConfig"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"echart.js","sources":["../../src/widgets/echart/echart-ui.tsx","../../src/widgets/echart/echart.tsx"],"sourcesContent":["import { useEffect, useRef, useImperativeHandle } from 'react'\nimport * as echarts from 'echarts'\nimport type { EchartUIProps } from './types'\nimport { useWidgetRef } from '../../hooks'\n\nexport function EchartUI(props: EchartUIProps) {\n const { id, ref, init, option, className, style, onEvents } = props\n\n const { ref: chartRef, instance: chartInstanceRef } =\n useWidgetRef<HTMLDivElement>(id)\n const chartInstance = useRef<echarts.ECharts>(null)\n const resizeObserverRef = useRef<ResizeObserver | null>(null)\n\n useImperativeHandle(ref, () => chartInstance.current!, [])\n\n useEffect(() => {\n if (!chartRef.current) return\n\n chartInstance.current = echarts.init(chartRef.current, null, {\n renderer: 'svg',\n height: 304,\n ...init,\n })\n chartInstanceRef.current = chartInstance.current\n // Cleanup function\n return () => {\n chartInstance.current?.dispose()\n chartInstance.current = null\n chartInstanceRef.current = null\n }\n }, [chartInstanceRef, chartRef, init])\n\n // Update chart when options change\n useEffect(() => {\n chartInstance.current?.setOption(option, {\n lazyUpdate: true,\n notMerge: true,\n })\n }, [option])\n\n // Handle resize using ResizeObserver\n useEffect(() => {\n const handleResize = () => {\n chartInstance.current?.resize()\n }\n\n resizeObserverRef.current = new ResizeObserver(handleResize)\n resizeObserverRef.current.observe(chartRef.current!)\n\n return () => {\n resizeObserverRef.current?.disconnect()\n resizeObserverRef.current = null\n }\n }, [chartRef])\n\n useEffect(() => {\n const _onEvents = { ...(onEvents ?? {}) }\n if (!_onEvents.click) {\n _onEvents.mousemove = () => {\n chartInstance.current?.getZr().setCursorStyle('default')\n }\n }\n\n // Attach event listeners\n Object.entries(_onEvents).forEach(([event, handler]) => {\n chartInstance.current?.on(event, handler)\n })\n // Cleanup function to remove event listeners\n return () => {\n Object.entries(_onEvents).forEach(([event]) => {\n chartInstance.current?.off(event)\n })\n }\n }, [onEvents])\n\n return <div id={id} ref={chartRef} style={style} className={className} />\n}\n","import type {\n EchartProps,\n EchartWidgetState,\n EchartWidgetData,\n EchartOptionsProps,\n} from './types'\nimport { EchartUI } from './echart-ui'\nimport { useWidgetStore } from '../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport { useMemo } from 'react'\n\nexport function Echart(props: EchartProps) {\n const id = useWidgetStore(\n useShallow((state) => state.getWidget<EchartWidgetState>(props.id)?.id),\n )\n\n const data = useWidgetStore(\n useShallow(\n (state) =>\n state.getWidget<EchartWidgetState>(props.id)?.data as\n | EchartWidgetData\n | undefined,\n ),\n )\n\n const widgetOption = useWidgetStore(\n useShallow((state) => state.getWidget<EchartWidgetState>(props.id)?.option),\n )\n\n const onEvents = useWidgetStore(\n useShallow(\n (state) => state.getWidget<EchartWidgetState>(props.id)?.onEvents,\n ),\n )\n\n const init = useWidgetStore(\n (state) => state.getWidget<EchartWidgetState>(props.id)?.init,\n )\n\n // Memoize dataset transformation to avoid re-computing on every render\n const dataset = useMemo(() => buildDataset(data), [data])\n\n const option = useMemo<EchartOptionsProps>(\n () => ({\n ...widgetOption,\n ...(dataset && { dataset }),\n }),\n [widgetOption, dataset],\n )\n\n if (!id) {\n return null\n }\n\n return (\n <EchartUI id={props.id} option={option} onEvents={onEvents} init={init} />\n )\n}\n\n/**\n * Builds the dataset configuration from widget data\n * @param data - The widget data array\n * @returns The dataset configuration for ECharts\n */\nfunction buildDataset(\n data: EchartWidgetData | undefined,\n): EchartOptionsProps['dataset'] {\n if (!data || data.length === 0) {\n return undefined\n }\n\n return data.map((d) => ({\n source: d,\n }))\n}\n"],"names":["EchartUI","props","$","_c","id","ref","init","option","className","style","onEvents","chartRef","instance","chartInstanceRef","useWidgetRef","chartInstance","useRef","resizeObserverRef","t0","t1","Symbol","for","current","useImperativeHandle","t2","t3","echarts","renderer","height","dispose","useEffect","t4","t5","setOption","lazyUpdate","notMerge","t6","t7","handleResize","resize","ResizeObserver","observe","disconnect","t8","t9","_onEvents","click","mousemove","getZr","setCursorStyle","Object","entries","forEach","t10","event","handler","on","t11","event_0","off","Echart","state","getWidget","useWidgetStore","useShallow","state_0","data","state_1","widgetOption","state_2","state_3","buildDataset","dataset","length","map","d","source"],"mappings":"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"}
1
+ {"version":3,"file":"echart.js","sources":["../../src/widgets/echart/echart-ui.tsx","../../src/widgets/echart/echart.tsx"],"sourcesContent":["import { useEffect, useRef, useImperativeHandle } from 'react'\nimport * as echarts from 'echarts'\nimport type { EchartUIProps } from './types'\nimport { useWidgetRef } from '../../hooks'\n\n/**\n * Presentational component that initializes and manages an Apache ECharts instance.\n *\n * @remarks\n * Handles chart lifecycle (init, dispose), option updates, resize observation, and event listener management.\n * Uses SVG renderer with a default height of 304px.\n */\nexport function EchartUI(props: EchartUIProps) {\n const { id, ref, init, option, className, style, onEvents } = props\n\n const { ref: chartRef, instance: chartInstanceRef } =\n useWidgetRef<HTMLDivElement>(id)\n const chartInstance = useRef<echarts.ECharts>(null)\n const resizeObserverRef = useRef<ResizeObserver | null>(null)\n\n useImperativeHandle(ref, () => chartInstance.current!, [])\n\n useEffect(() => {\n if (!chartRef.current) return\n\n chartInstance.current = echarts.init(chartRef.current, null, {\n renderer: 'svg',\n height: 304,\n ...init,\n })\n chartInstanceRef.current = chartInstance.current\n // Cleanup function\n return () => {\n chartInstance.current?.dispose()\n chartInstance.current = null\n chartInstanceRef.current = null\n }\n }, [chartInstanceRef, chartRef, init])\n\n // Update chart when options change\n useEffect(() => {\n chartInstance.current?.setOption(option, {\n lazyUpdate: true,\n notMerge: true,\n })\n }, [option])\n\n // Handle resize using ResizeObserver\n useEffect(() => {\n const handleResize = () => {\n chartInstance.current?.resize()\n }\n\n resizeObserverRef.current = new ResizeObserver(handleResize)\n resizeObserverRef.current.observe(chartRef.current!)\n\n return () => {\n resizeObserverRef.current?.disconnect()\n resizeObserverRef.current = null\n }\n }, [chartRef])\n\n useEffect(() => {\n const _onEvents = { ...(onEvents ?? {}) }\n if (!_onEvents.click) {\n _onEvents.mousemove = () => {\n chartInstance.current?.getZr().setCursorStyle('default')\n }\n }\n\n // Attach event listeners\n Object.entries(_onEvents).forEach(([event, handler]) => {\n chartInstance.current?.on(event, handler)\n })\n // Cleanup function to remove event listeners\n return () => {\n Object.entries(_onEvents).forEach(([event]) => {\n chartInstance.current?.off(event)\n })\n }\n }, [onEvents])\n\n return <div id={id} ref={chartRef} style={style} className={className} />\n}\n","import type {\n EchartProps,\n EchartWidgetState,\n EchartWidgetData,\n EchartOptionsProps,\n} from './types'\nimport { EchartUI } from './echart-ui'\nimport { useWidgetStore } from '../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport { useMemo } from 'react'\n\n/**\n * Stateful EChart widget component that reads data and options from the widget store and renders an ECharts chart.\n *\n * @remarks\n * Transforms widget data into ECharts dataset format and delegates rendering to {@link EchartUI}.\n */\nexport function Echart(props: EchartProps) {\n const id = useWidgetStore(\n useShallow((state) => state.getWidget<EchartWidgetState>(props.id)?.id),\n )\n\n const data = useWidgetStore(\n useShallow(\n (state) =>\n state.getWidget<EchartWidgetState>(props.id)?.data as\n | EchartWidgetData\n | undefined,\n ),\n )\n\n const widgetOption = useWidgetStore(\n useShallow((state) => state.getWidget<EchartWidgetState>(props.id)?.option),\n )\n\n const onEvents = useWidgetStore(\n useShallow(\n (state) => state.getWidget<EchartWidgetState>(props.id)?.onEvents,\n ),\n )\n\n const init = useWidgetStore(\n (state) => state.getWidget<EchartWidgetState>(props.id)?.init,\n )\n\n // Memoize dataset transformation to avoid re-computing on every render\n const dataset = useMemo(() => buildDataset(data), [data])\n\n const option = useMemo<EchartOptionsProps>(\n () => ({\n ...widgetOption,\n ...(dataset && { dataset }),\n }),\n [widgetOption, dataset],\n )\n\n if (!id) {\n return null\n }\n\n return (\n <EchartUI id={props.id} option={option} onEvents={onEvents} init={init} />\n )\n}\n\n/**\n * Builds the dataset configuration from widget data\n * @param data - The widget data array\n * @returns The dataset configuration for ECharts\n */\nfunction buildDataset(\n data: EchartWidgetData | undefined,\n): EchartOptionsProps['dataset'] {\n if (!data || data.length === 0) {\n return undefined\n }\n\n return data.map((d) => ({\n source: d,\n }))\n}\n"],"names":["EchartUI","props","$","_c","id","ref","init","option","className","style","onEvents","chartRef","instance","chartInstanceRef","useWidgetRef","chartInstance","useRef","resizeObserverRef","t0","t1","Symbol","for","current","useImperativeHandle","t2","t3","echarts","renderer","height","dispose","useEffect","t4","t5","setOption","lazyUpdate","notMerge","t6","t7","handleResize","resize","ResizeObserver","observe","disconnect","t8","t9","_onEvents","click","mousemove","getZr","setCursorStyle","Object","entries","forEach","t10","event","handler","on","t11","event_0","off","Echart","state","getWidget","useWidgetStore","useShallow","state_0","data","state_1","widgetOption","state_2","state_3","buildDataset","dataset","length","map","d","source"],"mappings":"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"}
@@ -3,8 +3,9 @@ import { jsx as f, jsxs as k, Fragment as C } from "react/jsx-runtime";
3
3
  import { c as w } from "react/compiler-runtime";
4
4
  import { u as h } from "../widget-store-CzDt8oSK.js";
5
5
  import { useShallow as S } from "zustand/shallow";
6
- import { R, s as T } from "../row-DTCV0Ocm.js";
7
- import { Box as F, Skeleton as $ } from "@mui/material";
6
+ import { d as R } from "../formatter-B9Bxn1k7.js";
7
+ import { R as T, s as $ } from "../row-DTCV0Ocm.js";
8
+ import { Box as F, Skeleton as b } from "@mui/material";
8
9
  import "@mui/icons-material";
9
10
  import "react";
10
11
  import "react-markdown";
@@ -14,100 +15,99 @@ import "../cjs-D4KH3azB.js";
14
15
  import "@dnd-kit/core";
15
16
  import "@dnd-kit/sortable";
16
17
  import "@dnd-kit/utilities";
17
- import { u as b } from "../use-widget-ref-wtFLDFCD.js";
18
- const j = (e) => e.toString();
19
- function z(e) {
20
- const t = w(19);
18
+ import { u as j } from "../use-widget-ref-wtFLDFCD.js";
19
+ function z(t) {
20
+ const e = w(19);
21
21
  let i, o, r;
22
- t[0] !== e ? ({
22
+ e[0] !== t ? ({
23
23
  id: i,
24
24
  index: r,
25
25
  ...o
26
- } = e, t[0] = e, t[1] = i, t[2] = o, t[3] = r) : (i = t[1], o = t[2], r = t[3]);
26
+ } = t, e[0] = t, e[1] = i, e[2] = o, e[3] = r) : (i = e[1], o = e[2], r = e[3]);
27
27
  const n = r === void 0 ? 0 : r;
28
- let l;
29
- t[4] !== i || t[5] !== n ? (l = (m) => m.getWidget(i)?.data?.[n]?.value, t[4] = i, t[5] = n, t[6] = l) : l = t[6];
30
- const a = h(S(l));
28
+ let a;
29
+ e[4] !== i || e[5] !== n ? (a = (m) => m.getWidget(i)?.data?.[n]?.value, e[4] = i, e[5] = n, e[6] = a) : a = e[6];
30
+ const l = h(S(a));
31
31
  let u;
32
- t[7] !== i || t[8] !== n ? (u = (m) => m.getWidget(i)?.data?.[n]?.color, t[7] = i, t[8] = n, t[9] = u) : u = t[9];
33
- const g = h(S(u)), x = h(S((m) => m.getWidget(i)?.formatter)) ?? j;
32
+ e[7] !== i || e[8] !== n ? (u = (m) => m.getWidget(i)?.data?.[n]?.color, e[7] = i, e[8] = n, e[9] = u) : u = e[9];
33
+ const x = h(S(u)), g = h(S((m) => m.getWidget(i)?.formatter)) ?? R;
34
34
  let s;
35
- t[10] !== g ? (s = {
36
- color: g
37
- }, t[10] = g, t[11] = s) : s = t[11];
38
- const p = a ?? 0;
35
+ e[10] !== x ? (s = {
36
+ color: x
37
+ }, e[10] = x, e[11] = s) : s = e[11];
38
+ const p = l ?? 0;
39
39
  let d;
40
- t[12] !== x || t[13] !== p ? (d = x(p), t[12] = x, t[13] = p, t[14] = d) : d = t[14];
40
+ e[12] !== g || e[13] !== p ? (d = g(p), e[12] = g, e[13] = p, e[14] = d) : d = e[14];
41
41
  let c;
42
- return t[15] !== o || t[16] !== s || t[17] !== d ? (c = /* @__PURE__ */ f(I, { TypographyProps: s, ...o, children: d }), t[15] = o, t[16] = s, t[17] = d, t[18] = c) : c = t[18], c;
42
+ return e[15] !== o || e[16] !== s || e[17] !== d ? (c = /* @__PURE__ */ f(I, { TypographyProps: s, ...o, children: d }), e[15] = o, e[16] = s, e[17] = d, e[18] = c) : c = e[18], c;
43
43
  }
44
- function Z({
45
- refUI: e
44
+ function ee({
45
+ refUI: t
46
46
  }) {
47
47
  return [{
48
48
  ...y,
49
- modifier: () => y.modifier(e)
49
+ modifier: () => y.modifier(t)
50
50
  }, {
51
51
  ...v,
52
- modifier: async (t) => {
53
- const i = [t?.map((o) => o.value) ?? []];
52
+ modifier: async (e) => {
53
+ const i = [e?.map((o) => o.value) ?? []];
54
54
  return v.modifier(i);
55
55
  }
56
56
  }];
57
57
  }
58
- function tt() {
58
+ function te() {
59
59
  return {
60
60
  series: []
61
61
  };
62
62
  }
63
- function et(e) {
64
- const t = w(8), {
63
+ function ie(t) {
64
+ const e = w(8), {
65
65
  ref: i
66
- } = b(e.id);
66
+ } = j(t.id);
67
67
  let o;
68
- t[0] !== e.id ? (o = (l) => {
68
+ e[0] !== t.id ? (o = (a) => {
69
69
  const {
70
- index: a
71
- } = l;
70
+ index: l
71
+ } = a;
72
72
  return /* @__PURE__ */ k(C, { children: [
73
- /* @__PURE__ */ f(W, { id: e.id, index: a }),
74
- /* @__PURE__ */ f(D, { id: e.id, index: a }),
75
- /* @__PURE__ */ f(z, { id: e.id, index: a }),
76
- /* @__PURE__ */ f(P, { id: e.id, index: a })
73
+ /* @__PURE__ */ f(W, { id: t.id, index: l }),
74
+ /* @__PURE__ */ f(D, { id: t.id, index: l }),
75
+ /* @__PURE__ */ f(z, { id: t.id, index: l }),
76
+ /* @__PURE__ */ f(P, { id: t.id, index: l })
77
77
  ] });
78
- }, t[0] = e.id, t[1] = o) : o = t[1];
78
+ }, e[0] = t.id, e[1] = o) : o = e[1];
79
79
  let r;
80
- t[2] !== e.id || t[3] !== o ? (r = /* @__PURE__ */ f(R, { id: e.id, children: o }), t[2] = e.id, t[3] = o, t[4] = r) : r = t[4];
80
+ e[2] !== t.id || e[3] !== o ? (r = /* @__PURE__ */ f(T, { id: t.id, children: o }), e[2] = t.id, e[3] = o, e[4] = r) : r = e[4];
81
81
  let n;
82
- return t[5] !== i || t[6] !== r ? (n = /* @__PURE__ */ f(F, { ref: i, children: r }), t[5] = i, t[6] = r, t[7] = n) : n = t[7], n;
82
+ return e[5] !== i || e[6] !== r ? (n = /* @__PURE__ */ f(F, { ref: i, children: r }), e[5] = i, e[6] = r, e[7] = n) : n = e[7], n;
83
83
  }
84
- function it() {
85
- const e = w(1);
86
- let t;
87
- return e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ f(F, { sx: T.row, "aria-label": "Formula skeleton", children: /* @__PURE__ */ f($, { width: 120, height: 32 }) }), e[0] = t) : t = e[0], t;
84
+ function oe() {
85
+ const t = w(1);
86
+ let e;
87
+ return t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ f(F, { sx: $.row, "aria-label": "Formula skeleton", children: /* @__PURE__ */ f(b, { width: 120, height: 32 }) }), t[0] = e) : e = t[0], e;
88
88
  }
89
- function V(e) {
89
+ function V(t) {
90
90
  return {
91
- ...e,
92
- prefix: typeof e.prefix == "string" ? e.prefix : void 0,
93
- suffix: typeof e.suffix == "string" ? e.suffix : void 0
91
+ ...t,
92
+ prefix: typeof t.prefix == "string" ? t.prefix : void 0,
93
+ suffix: typeof t.suffix == "string" ? t.suffix : void 0
94
94
  };
95
95
  }
96
- function ot(e) {
97
- return e?.map(V);
96
+ function re(t) {
97
+ return t?.map(V);
98
98
  }
99
99
  export {
100
- it as FormulaSkeleton,
101
- et as FormulaUI,
100
+ oe as FormulaSkeleton,
101
+ ie as FormulaUI,
102
102
  I as Item,
103
103
  D as Prefix,
104
- R as Row,
104
+ T as Row,
105
105
  W as Series,
106
106
  P as Suffix,
107
107
  z as Value,
108
- tt as formulaConfig,
109
- Z as formulaDownloadConfig,
108
+ te as formulaConfig,
109
+ ee as formulaDownloadConfig,
110
110
  V as sanitizeDataItem,
111
- ot as sanitizeDataItems
111
+ re as sanitizeDataItems
112
112
  };
113
113
  //# sourceMappingURL=formula.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formula.js","sources":["../../src/widgets/formula/components/value.tsx","../../src/widgets/formula/config.ts","../../src/widgets/formula/formula-ui.tsx","../../src/widgets/formula/skeleton.tsx","../../src/widgets/formula/serializer.ts"],"sourcesContent":["import { type FormulaWidgetState, type ValueProps } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Item } from './item'\nimport { useShallow } from 'zustand/shallow'\n\nconst defaultFormatter = (value: number) => value.toString()\n\nexport function Value({ id, index = 0, ...props }: ValueProps) {\n const value = useWidgetStore(\n useShallow(\n (state) => state.getWidget<FormulaWidgetState>(id)?.data?.[index]?.value,\n ),\n )\n const color = useWidgetStore(\n useShallow(\n (state) => state.getWidget<FormulaWidgetState>(id)?.data?.[index]?.color,\n ),\n )\n const formatter =\n useWidgetStore(\n useShallow((state) => state.getWidget<FormulaWidgetState>(id)?.formatter),\n ) ?? defaultFormatter\n\n return (\n <Item TypographyProps={{ color }} {...props}>\n {formatter(value ?? 0)}\n </Item>\n )\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type { FormulaDownloadConfig, FormulaWidgetConfig } from './types'\n\nexport function formulaDownloadConfig({\n refUI,\n}: ConfigProps): FormulaDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const formulaData = [data?.map((item) => item.value) ?? []]\n return downloadToCSV.modifier(formulaData)\n },\n },\n ]\n}\n\nexport function formulaConfig(): FormulaWidgetConfig {\n return {\n series: [],\n }\n}\n","import type { FormulaUIProps } from './types'\nimport { Row } from './components/row'\nimport { Value } from './components/value'\nimport { Prefix } from './components/prefix'\nimport { Suffix } from './components/suffix'\nimport { Series } from './components/series'\nimport { useWidgetRef } from '../../hooks'\nimport { Box } from '@mui/material'\n\nexport function FormulaUI(props: FormulaUIProps) {\n const { ref } = useWidgetRef(props.id)\n\n return (\n <Box ref={ref}>\n <Row id={props.id}>\n {({ index }) => (\n <>\n <Series id={props.id} index={index} />\n <Prefix id={props.id} index={index} />\n <Value id={props.id} index={index} />\n <Suffix id={props.id} index={index} />\n </>\n )}\n </Row>\n </Box>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function FormulaSkeleton() {\n return (\n <Box sx={styles.row} aria-label='Formula skeleton'>\n <Skeleton width={120} height={32} />\n </Box>\n )\n}\n","import type { DataItem } from './types'\n\n/**\n * Sanitizes DataItem by converting ReactNode prefix/suffix values to undefined.\n * This ensures only string values are stored in the widget state.\n *\n * @param item - The DataItem to sanitize\n * @returns A new DataItem with ReactNode prefix/suffix values converted to undefined\n */\nexport function sanitizeDataItem(item: DataItem): DataItem {\n return {\n ...item,\n prefix: typeof item.prefix === 'string' ? item.prefix : undefined,\n suffix: typeof item.suffix === 'string' ? item.suffix : undefined,\n }\n}\n\n/**\n * Sanitizes an array of DataItems by converting ReactNode prefix/suffix values to undefined.\n *\n * @param items - Array of DataItems to sanitize\n * @returns A new array with sanitized DataItems\n */\nexport function sanitizeDataItems(\n items: DataItem[] | undefined,\n): DataItem[] | undefined {\n return items?.map(sanitizeDataItem)\n}\n"],"names":["defaultFormatter","value","toString","Value","t0","$","_c","id","props","t1","index","undefined","t2","state","getWidget","data","useWidgetStore","useShallow","t3","state_0","color","formatter","state_1","t4","t5","t6","t7","Item","formulaDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","formulaData","map","item","formulaConfig","series","FormulaUI","ref","useWidgetRef","jsxs","Fragment","jsx","Series","Prefix","Suffix","Row","Box","FormulaSkeleton","Symbol","for","styles","row","Skeleton","sanitizeDataItem","prefix","suffix","sanitizeDataItems","items"],"mappings":"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"}
1
+ {"version":3,"file":"formula.js","sources":["../../src/widgets/formula/components/value.tsx","../../src/widgets/formula/config.ts","../../src/widgets/formula/formula-ui.tsx","../../src/widgets/formula/skeleton.tsx","../../src/widgets/formula/serializer.ts"],"sourcesContent":["import { type FormulaWidgetState, type ValueProps } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Item } from './item'\nimport { useShallow } from 'zustand/shallow'\nimport { defaultFormatter } from '../../utils/formatter'\n\n/**\n * Displays the formatted numeric value for a formula widget data item, applying the widget's formatter and color.\n */\nexport function Value({ id, index = 0, ...props }: ValueProps) {\n const value = useWidgetStore(\n useShallow(\n (state) => state.getWidget<FormulaWidgetState>(id)?.data?.[index]?.value,\n ),\n )\n const color = useWidgetStore(\n useShallow(\n (state) => state.getWidget<FormulaWidgetState>(id)?.data?.[index]?.color,\n ),\n )\n const formatter =\n useWidgetStore(\n useShallow((state) => state.getWidget<FormulaWidgetState>(id)?.formatter),\n ) ?? defaultFormatter\n\n return (\n <Item TypographyProps={{ color }} {...props}>\n {formatter(value ?? 0)}\n </Item>\n )\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type { FormulaDownloadConfig, FormulaWidgetConfig } from './types'\n\n/**\n * Creates download configuration for formula widgets, supporting PNG (screenshot) and CSV (data) exports.\n *\n * @param props - Configuration with `refUI` reference for PNG export.\n * @returns Array of download items for use with the Download action.\n */\nexport function formulaDownloadConfig({\n refUI,\n}: ConfigProps): FormulaDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const formulaData = [data?.map((item) => item.value) ?? []]\n return downloadToCSV.modifier(formulaData)\n },\n },\n ]\n}\n\n/**\n * Returns the default configuration for formula (single or multiple numeric value) widgets.\n *\n * @returns Default formula widget config with empty series.\n */\nexport function formulaConfig(): FormulaWidgetConfig {\n return {\n series: [],\n }\n}\n","import type { FormulaUIProps } from './types'\nimport { Row } from './components/row'\nimport { Value } from './components/value'\nimport { Prefix } from './components/prefix'\nimport { Suffix } from './components/suffix'\nimport { Series } from './components/series'\nimport { useWidgetRef } from '../../hooks'\nimport { Box } from '@mui/material'\n\n/**\n * Renders a formula widget displaying one or more KPI values with optional prefixes, suffixes, and series indicators.\n */\nexport function FormulaUI(props: FormulaUIProps) {\n const { ref } = useWidgetRef(props.id)\n\n return (\n <Box ref={ref}>\n <Row id={props.id}>\n {({ index }) => (\n <>\n <Series id={props.id} index={index} />\n <Prefix id={props.id} index={index} />\n <Value id={props.id} index={index} />\n <Suffix id={props.id} index={index} />\n </>\n )}\n </Row>\n </Box>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function FormulaSkeleton() {\n return (\n <Box sx={styles.row} aria-label='Formula skeleton'>\n <Skeleton width={120} height={32} />\n </Box>\n )\n}\n","import type { DataItem } from './types'\n\n/**\n * Sanitizes DataItem by converting ReactNode prefix/suffix values to undefined.\n * This ensures only string values are stored in the widget state.\n *\n * @param item - The DataItem to sanitize\n * @returns A new DataItem with ReactNode prefix/suffix values converted to undefined\n */\nexport function sanitizeDataItem(item: DataItem): DataItem {\n return {\n ...item,\n prefix: typeof item.prefix === 'string' ? item.prefix : undefined,\n suffix: typeof item.suffix === 'string' ? item.suffix : undefined,\n }\n}\n\n/**\n * Sanitizes an array of DataItems by converting ReactNode prefix/suffix values to undefined.\n *\n * @param items - Array of DataItems to sanitize\n * @returns A new array with sanitized DataItems\n */\nexport function sanitizeDataItems(\n items: DataItem[] | undefined,\n): DataItem[] | undefined {\n return items?.map(sanitizeDataItem)\n}\n"],"names":["Value","t0","$","_c","id","props","t1","index","undefined","t2","state","getWidget","data","value","useWidgetStore","useShallow","t3","state_0","color","formatter","state_1","defaultFormatter","t4","t5","t6","t7","Item","formulaDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","formulaData","map","item","formulaConfig","series","FormulaUI","ref","useWidgetRef","jsxs","Fragment","jsx","Series","Prefix","Suffix","Row","Box","FormulaSkeleton","Symbol","for","styles","row","Skeleton","sanitizeDataItem","prefix","suffix","sanitizeDataItems","items"],"mappings":"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"}