@carto/ps-react-ui 4.4.2 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/download-config-DemuQ3Jm.js +56 -0
  2. package/dist/download-config-DemuQ3Jm.js.map +1 -0
  3. package/dist/error-Cj8eUMrl.js +40 -0
  4. package/dist/error-Cj8eUMrl.js.map +1 -0
  5. package/dist/formatter-B9Bxn1k7.js +6 -0
  6. package/dist/formatter-B9Bxn1k7.js.map +1 -0
  7. package/dist/no-data-DkIt7Qt1.js +61 -0
  8. package/dist/no-data-DkIt7Qt1.js.map +1 -0
  9. package/dist/row-D4VOhcNI.js +34 -0
  10. package/dist/row-D4VOhcNI.js.map +1 -0
  11. package/dist/series-Bola3CmD.js +90 -0
  12. package/dist/series-Bola3CmD.js.map +1 -0
  13. package/dist/styles-Y8q7Jff3.js +118 -0
  14. package/dist/styles-Y8q7Jff3.js.map +1 -0
  15. package/dist/types/widgets/actions/brush-toggle/types.d.ts +8 -2
  16. package/dist/types/widgets/category/components/category-row-multi.d.ts +2 -1
  17. package/dist/types/widgets/category/components/category-row-single.d.ts +2 -1
  18. package/dist/types/widgets/category/types.d.ts +1 -0
  19. package/dist/types/widgets/echart/shared-resize-observer.d.ts +12 -0
  20. package/dist/types/widgets/echart/types.d.ts +2 -0
  21. package/dist/types/widgets/histogram/config.d.ts +15 -3
  22. package/dist/types/widgets/histogram/index.d.ts +2 -1
  23. package/dist/types/widgets/histogram/types.d.ts +6 -3
  24. package/dist/types/widgets/stores/index.d.ts +2 -1
  25. package/dist/types/widgets/stores/types.d.ts +2 -0
  26. package/dist/types/widgets/stores/use-widget-selector.d.ts +35 -0
  27. package/dist/types/widgets/stores/widget-store-performance.test.d.ts +1 -0
  28. package/dist/types/widgets/stores/widget-store.d.ts +49 -27
  29. package/dist/types/widgets/table/types.d.ts +1 -1
  30. package/dist/types/widgets/utils/chart-config/index.d.ts +1 -1
  31. package/dist/types/widgets/utils/chart-config/option-builders.d.ts +13 -8
  32. package/dist/types/widgets/utils/formatter.d.ts +1 -0
  33. package/dist/types/widgets/utils/index.d.ts +1 -1
  34. package/dist/use-widget-ref-BFazQvJK.js +22 -0
  35. package/dist/use-widget-ref-BFazQvJK.js.map +1 -0
  36. package/dist/use-widget-selector-DqRmWQ1K.js +12 -0
  37. package/dist/use-widget-selector-DqRmWQ1K.js.map +1 -0
  38. package/dist/widget-store-CIrb9RKP.js +263 -0
  39. package/dist/widget-store-CIrb9RKP.js.map +1 -0
  40. package/dist/widgets/actions.js +799 -817
  41. package/dist/widgets/actions.js.map +1 -1
  42. package/dist/widgets/bar.js +53 -47
  43. package/dist/widgets/bar.js.map +1 -1
  44. package/dist/widgets/category.js +261 -255
  45. package/dist/widgets/category.js.map +1 -1
  46. package/dist/widgets/echart.js +109 -99
  47. package/dist/widgets/echart.js.map +1 -1
  48. package/dist/widgets/error.js +1 -1
  49. package/dist/widgets/formula.js +71 -63
  50. package/dist/widgets/formula.js.map +1 -1
  51. package/dist/widgets/histogram.js +119 -80
  52. package/dist/widgets/histogram.js.map +1 -1
  53. package/dist/widgets/loader.js +53 -60
  54. package/dist/widgets/loader.js.map +1 -1
  55. package/dist/widgets/markdown.js +51 -50
  56. package/dist/widgets/markdown.js.map +1 -1
  57. package/dist/widgets/no-data.js +1 -1
  58. package/dist/widgets/pie.js +111 -99
  59. package/dist/widgets/pie.js.map +1 -1
  60. package/dist/widgets/range.js +146 -144
  61. package/dist/widgets/range.js.map +1 -1
  62. package/dist/widgets/scatterplot.js +50 -44
  63. package/dist/widgets/scatterplot.js.map +1 -1
  64. package/dist/widgets/skeleton-loader.js +18 -17
  65. package/dist/widgets/skeleton-loader.js.map +1 -1
  66. package/dist/widgets/spread.js +110 -94
  67. package/dist/widgets/spread.js.map +1 -1
  68. package/dist/widgets/stores.js +5 -2
  69. package/dist/widgets/stores.js.map +1 -1
  70. package/dist/widgets/table.js +422 -436
  71. package/dist/widgets/table.js.map +1 -1
  72. package/dist/widgets/timeseries.js +52 -46
  73. package/dist/widgets/timeseries.js.map +1 -1
  74. package/dist/widgets/toolbar-actions.js +101 -6693
  75. package/dist/widgets/toolbar-actions.js.map +1 -1
  76. package/dist/widgets/utils.js +16 -14
  77. package/dist/widgets/utils.js.map +1 -1
  78. package/dist/widgets/wrapper.js +156 -158
  79. package/dist/widgets/wrapper.js.map +1 -1
  80. package/dist/widgets.js +4 -4
  81. package/package.json +5 -4
  82. package/src/hooks/use-widget-ref.ts +3 -4
  83. package/src/widgets/README.md +3 -3
  84. package/src/widgets/actions/brush-toggle/brush-toggle.tsx +60 -79
  85. package/src/widgets/actions/brush-toggle/types.ts +8 -2
  86. package/src/widgets/actions/change-column/change-column.tsx +15 -15
  87. package/src/widgets/actions/change-column/sortable-column-item.tsx +3 -1
  88. package/src/widgets/actions/download/download.tsx +4 -3
  89. package/src/widgets/actions/fullscreen/fullscreen.tsx +7 -11
  90. package/src/widgets/actions/lock-selection/lock-selection.tsx +12 -15
  91. package/src/widgets/actions/relative-data/relative-data.tsx +22 -26
  92. package/src/widgets/actions/searcher/searcher-toggle.tsx +11 -12
  93. package/src/widgets/actions/searcher/searcher.tsx +20 -21
  94. package/src/widgets/actions/stack-toggle/stack-toggle.tsx +15 -21
  95. package/src/widgets/actions/zoom-toggle/zoom-toggle.tsx +27 -43
  96. package/src/widgets/bar/config.ts +22 -14
  97. package/src/widgets/category/category-ui.tsx +31 -27
  98. package/src/widgets/category/components/category-row-multi.tsx +6 -2
  99. package/src/widgets/category/components/category-row-single.tsx +5 -1
  100. package/src/widgets/category/types.ts +1 -0
  101. package/src/widgets/echart/echart-ui.test.tsx +20 -16
  102. package/src/widgets/echart/echart-ui.tsx +6 -12
  103. package/src/widgets/echart/echart.tsx +13 -27
  104. package/src/widgets/echart/shared-resize-observer.ts +45 -0
  105. package/src/widgets/echart/types.ts +2 -0
  106. package/src/widgets/error/error.tsx +7 -9
  107. package/src/widgets/formula/components/prefix.tsx +4 -6
  108. package/src/widgets/formula/components/row.tsx +4 -4
  109. package/src/widgets/formula/components/series.tsx +4 -6
  110. package/src/widgets/formula/components/suffix.tsx +4 -6
  111. package/src/widgets/formula/components/value.tsx +9 -16
  112. package/src/widgets/histogram/config.ts +101 -20
  113. package/src/widgets/histogram/index.ts +6 -1
  114. package/src/widgets/histogram/types.ts +9 -3
  115. package/src/widgets/loader/loader.tsx +31 -44
  116. package/src/widgets/markdown/markdown.tsx +4 -7
  117. package/src/widgets/no-data/no-data.tsx +7 -10
  118. package/src/widgets/pie/config.ts +17 -5
  119. package/src/widgets/range/components/range-item.tsx +20 -18
  120. package/src/widgets/scatterplot/config.ts +8 -3
  121. package/src/widgets/skeleton-loader/skeleton-loader.tsx +2 -5
  122. package/src/widgets/spread/components/max-value.tsx +14 -16
  123. package/src/widgets/spread/components/min-value.tsx +14 -16
  124. package/src/widgets/stores/index.ts +2 -1
  125. package/src/widgets/stores/types.ts +2 -0
  126. package/src/widgets/stores/use-widget-selector.ts +47 -0
  127. package/src/widgets/stores/widget-store-performance.test.ts +750 -0
  128. package/src/widgets/stores/widget-store.test.ts +81 -0
  129. package/src/widgets/stores/widget-store.ts +225 -44
  130. package/src/widgets/table/config.ts +0 -1
  131. package/src/widgets/table/hooks/use-pagination.ts +28 -52
  132. package/src/widgets/table/hooks/use-selection.ts +20 -24
  133. package/src/widgets/table/hooks/use-sort.ts +22 -39
  134. package/src/widgets/table/types.ts +1 -1
  135. package/src/widgets/timeseries/config.ts +21 -13
  136. package/src/widgets/utils/chart-config/index.ts +1 -1
  137. package/src/widgets/utils/chart-config/option-builders.ts +22 -12
  138. package/src/widgets/utils/formatter.ts +2 -1
  139. package/src/widgets/utils/index.ts +1 -1
  140. package/src/widgets/wrapper/wrapper-ui.tsx +12 -13
  141. package/src/widgets/wrapper/wrapper.tsx +4 -6
  142. package/dist/error-CEkRPccv.js +0 -39
  143. package/dist/error-CEkRPccv.js.map +0 -1
  144. package/dist/formatter-B1Xh8XDH.js +0 -5
  145. package/dist/formatter-B1Xh8XDH.js.map +0 -1
  146. package/dist/no-data-hR3KcJ-_.js +0 -60
  147. package/dist/no-data-hR3KcJ-_.js.map +0 -1
  148. package/dist/row-DTCV0Ocm.js +0 -35
  149. package/dist/row-DTCV0Ocm.js.map +0 -1
  150. package/dist/series-CYNOu2Ju.js +0 -91
  151. package/dist/series-CYNOu2Ju.js.map +0 -1
  152. package/dist/styles-C_8vOEep.js +0 -167
  153. package/dist/styles-C_8vOEep.js.map +0 -1
  154. package/dist/use-widget-ref-wtFLDFCD.js +0 -25
  155. package/dist/use-widget-ref-wtFLDFCD.js.map +0 -1
  156. package/dist/widget-store-CzDt8oSK.js +0 -163
  157. package/dist/widget-store-CzDt8oSK.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"scatterplot.js","sources":["../../src/widgets/scatterplot/config.ts","../../src/widgets/scatterplot/style.ts","../../src/widgets/scatterplot/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type {\n ScatterplotConfig,\n ScatterplotWidgetConfig,\n ScatterplotWidgetData,\n} from './types'\nimport {\n scatterplotDataToCSV,\n buildLegendConfig,\n createTooltipFormatter,\n createChartDownloadConfig,\n applyYAxisFormatter,\n} from '../utils/chart-config'\n\nexport const scatterplotDownloadConfig =\n createChartDownloadConfig<ScatterplotWidgetData>(scatterplotDataToCSV)\n\n/**\n * Generates ECharts configuration for X-Y scatter plot widgets with value axes, legend support, and CARTO qualitative color palette.\n *\n * @param props - Scatterplot configuration including data points and theme.\n * @returns Widget config with ECharts option object.\n */\nexport function scatterplotConfig(\n props: ScatterplotConfig,\n): ScatterplotWidgetConfig {\n return {\n type: 'scatterplot',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n formatter: props.formatter,\n }\n}\n\nfunction getOption({\n data = [],\n theme,\n formatter,\n}: ScatterplotConfig): EchartOptionsProps {\n const hasLegend = data.length > 1\n\n const xAxis = {\n type: 'value' as const,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n showMinLabel: true,\n showMaxLabel: true,\n hideOverlap: true,\n padding: [\n parseInt(theme.spacing(0.5)),\n parseInt(theme.spacing(0.5)),\n 0,\n parseInt(theme.spacing(0.5)),\n ],\n color: theme.palette.black[60],\n },\n splitLine: {\n show: true,\n lineStyle: { color: theme.palette.black[4] },\n },\n }\n\n const yAxis = {\n type: 'value' as const,\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n inside: false,\n padding: [\n 0,\n 0,\n parseInt(theme.spacing(1.25)),\n parseInt(theme.spacing(3.25)),\n ],\n margin: 0,\n show: true,\n showMaxLabel: true,\n showMinLabel: false,\n align: 'right',\n verticalAlign: 'bottom',\n },\n axisLine: { show: false },\n axisTick: { show: false },\n splitLine: {\n show: true,\n lineStyle: { color: theme.palette.black[4] },\n },\n }\n\n return {\n legend: buildLegendConfig(hasLegend),\n grid: {\n ...(!hasLegend && { bottom: parseInt(theme.spacing(1)) }),\n ...(hasLegend && { bottom: parseInt(theme.spacing(10)) }),\n },\n xAxis,\n yAxis: applyYAxisFormatter(yAxis, formatter),\n tooltip: {\n trigger: 'item',\n // position: createTooltipPositioner(theme),\n formatter: createTooltipFormatter((item) => {\n const value = item.value as Record<string, string | number>\n const index = item.encode?.y?.at(0)\n const _value = value[index ?? '']\n\n const formattedValue =\n typeof _value === 'number' && formatter\n ? formatter(_value)\n : (_value ?? '')\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const name = item.seriesName ?? ''\n\n return { name, seriesName: '', marker, value: formattedValue }\n }),\n },\n color: Object.values(theme.palette.qualitative.bold),\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'scatter',\n symbolSize: 8,\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../utils/skeleton'\n\nexport const styles = {\n skeleton: {\n graph: {\n container: {\n ...baseSkeletonStyles.graph.container,\n position: 'relative',\n },\n },\n legend: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n position: 'absolute',\n bottom: 0,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nconst SCATTER_POINTS = [\n { left: '20%', top: '62%' },\n { left: '26%', top: '70%' },\n { left: '29%', top: '73%' },\n { left: '38%', top: '63%' },\n { left: '41%', top: '68%' },\n { left: '47%', top: '62%' },\n { left: '53%', top: '49%' },\n { left: '56%', top: '55%' },\n { left: '65%', top: '37%' },\n { left: '68%', top: '43%' },\n { left: '77%', top: '59%' },\n { left: '25%', top: '30%' },\n { left: '60%', top: '70%' },\n { left: '10%', top: '55%' },\n { left: '40%', top: '40%' },\n]\n\nexport function ScatterplotSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n {SCATTER_POINTS.map((point, index) => (\n <Skeleton\n key={`skeleton-point-${index}`}\n variant='circular'\n width={12}\n height={12}\n sx={{\n position: 'absolute',\n top: point.top,\n left: point.left,\n transform: 'translate(-50%, -50%)',\n }}\n />\n ))}\n {/* Legend */}\n <Box sx={styles.skeleton.legend}>\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={`skeleton-${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":["scatterplotDownloadConfig","createChartDownloadConfig","scatterplotDataToCSV","scatterplotConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","formatter","data","theme","hasLegend","length","xAxis","axisLine","show","axisTick","axisLabel","fontSize","typography","overlineDelicate","fontFamily","showMinLabel","showMaxLabel","hideOverlap","padding","parseInt","spacing","color","palette","black","splitLine","lineStyle","yAxis","inside","margin","align","verticalAlign","legend","buildLegendConfig","grid","bottom","applyYAxisFormatter","tooltip","trigger","createTooltipFormatter","item","value","index","encode","y","at","_value","formattedValue","marker","name","seriesName","Object","values","qualitative","bold","series","map","_","datasetIndex","symbolSize","styles","skeleton","graph","container","baseSkeletonStyles","position","display","alignItems","gap","height","SCATTER_POINTS","left","top","ScatterplotSkeleton","$","_c","t0","Symbol","for","_temp","t1","Box","jsx","Array","fill","_temp3","i","jsxs","_temp2","Skeleton","point","transform"],"mappings":"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"}
1
+ {"version":3,"file":"scatterplot.js","sources":["../../src/widgets/scatterplot/config.ts","../../src/widgets/scatterplot/style.ts","../../src/widgets/scatterplot/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type {\n ScatterplotConfig,\n ScatterplotWidgetConfig,\n ScatterplotWidgetData,\n} from './types'\nimport {\n scatterplotDataToCSV,\n buildLegendConfig,\n createTooltipFormatter,\n createChartDownloadConfig,\n applyYAxisFormatter,\n applyXAxisFormatter,\n} from '../utils/chart-config'\n\nexport const scatterplotDownloadConfig =\n createChartDownloadConfig<ScatterplotWidgetData>(scatterplotDataToCSV)\n\n/**\n * Generates ECharts configuration for X-Y scatter plot widgets with value axes, legend support, and CARTO qualitative color palette.\n *\n * @param props - Scatterplot configuration including data points and theme.\n * @returns Widget config with ECharts option object.\n */\nexport function scatterplotConfig(\n props: ScatterplotConfig,\n): ScatterplotWidgetConfig {\n return {\n type: 'scatterplot',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n formatter: props.formatter,\n labelFormatter: props.labelFormatter,\n }\n}\n\nfunction getOption({\n data = [],\n theme,\n formatter,\n labelFormatter,\n}: ScatterplotConfig): EchartOptionsProps {\n const hasLegend = data.length > 1\n\n const xAxis = {\n type: 'value' as const,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n showMinLabel: true,\n showMaxLabel: true,\n hideOverlap: true,\n padding: [\n parseInt(theme.spacing(0.5)),\n parseInt(theme.spacing(0.5)),\n 0,\n parseInt(theme.spacing(0.5)),\n ],\n color: theme.palette.black[60],\n },\n splitLine: {\n show: true,\n lineStyle: { color: theme.palette.black[4] },\n },\n }\n\n const yAxis = {\n type: 'value' as const,\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n inside: false,\n padding: [\n 0,\n 0,\n parseInt(theme.spacing(1.25)),\n parseInt(theme.spacing(3.25)),\n ],\n margin: 0,\n show: true,\n showMaxLabel: true,\n showMinLabel: false,\n align: 'right',\n verticalAlign: 'bottom',\n },\n axisLine: { show: false },\n axisTick: { show: false },\n splitLine: {\n show: true,\n lineStyle: { color: theme.palette.black[4] },\n },\n }\n\n return {\n legend: buildLegendConfig({ hasLegend, labelFormatter }),\n grid: {\n ...(!hasLegend && { bottom: parseInt(theme.spacing(1)) }),\n ...(hasLegend && { bottom: parseInt(theme.spacing(10)) }),\n },\n xAxis: applyXAxisFormatter(xAxis, labelFormatter),\n yAxis: applyYAxisFormatter(yAxis, formatter),\n tooltip: {\n trigger: 'item',\n // position: createTooltipPositioner(theme),\n formatter: createTooltipFormatter((item) => {\n const value = item.value as Record<string, string | number>\n const index = item.encode?.y?.at(0)\n const _value = value[index ?? '']\n\n const formattedValue =\n typeof _value === 'number' && formatter\n ? formatter(_value)\n : (_value ?? '')\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const name = labelFormatter\n ? String(labelFormatter(item.seriesName ?? ''))\n : (item.seriesName ?? '')\n\n return { name, seriesName: '', marker, value: formattedValue }\n }),\n },\n color: Object.values(theme.palette.qualitative.bold),\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'scatter',\n symbolSize: 8,\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../utils/skeleton'\n\nexport const styles = {\n skeleton: {\n graph: {\n container: {\n ...baseSkeletonStyles.graph.container,\n position: 'relative',\n },\n },\n legend: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n position: 'absolute',\n bottom: 0,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nconst SCATTER_POINTS = [\n { left: '20%', top: '62%' },\n { left: '26%', top: '70%' },\n { left: '29%', top: '73%' },\n { left: '38%', top: '63%' },\n { left: '41%', top: '68%' },\n { left: '47%', top: '62%' },\n { left: '53%', top: '49%' },\n { left: '56%', top: '55%' },\n { left: '65%', top: '37%' },\n { left: '68%', top: '43%' },\n { left: '77%', top: '59%' },\n { left: '25%', top: '30%' },\n { left: '60%', top: '70%' },\n { left: '10%', top: '55%' },\n { left: '40%', top: '40%' },\n]\n\nexport function ScatterplotSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n {SCATTER_POINTS.map((point, index) => (\n <Skeleton\n key={`skeleton-point-${index}`}\n variant='circular'\n width={12}\n height={12}\n sx={{\n position: 'absolute',\n top: point.top,\n left: point.left,\n transform: 'translate(-50%, -50%)',\n }}\n />\n ))}\n {/* Legend */}\n <Box sx={styles.skeleton.legend}>\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={`skeleton-${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":["scatterplotDownloadConfig","createChartDownloadConfig","scatterplotDataToCSV","scatterplotConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","formatter","labelFormatter","data","theme","hasLegend","length","xAxis","axisLine","show","axisTick","axisLabel","fontSize","typography","overlineDelicate","fontFamily","showMinLabel","showMaxLabel","hideOverlap","padding","parseInt","spacing","color","palette","black","splitLine","lineStyle","yAxis","inside","margin","align","verticalAlign","legend","buildLegendConfig","grid","bottom","applyXAxisFormatter","applyYAxisFormatter","tooltip","trigger","createTooltipFormatter","item","value","index","encode","y","at","_value","formattedValue","marker","name","String","seriesName","Object","values","qualitative","bold","series","map","_","datasetIndex","symbolSize","styles","skeleton","graph","container","baseSkeletonStyles","position","display","alignItems","gap","height","SCATTER_POINTS","left","top","ScatterplotSkeleton","$","_c","t0","Symbol","for","_temp","t1","Box","jsx","Array","fill","_temp3","i","jsxs","_temp2","Skeleton","point","transform"],"mappings":"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"}
@@ -1,24 +1,25 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import { c as f } from "react/compiler-runtime";
3
- import { u as m } from "../widget-store-CzDt8oSK.js";
4
- import { Suspense as u } from "react";
5
- import { useShallow as d } from "zustand/shallow";
6
- function h(l) {
7
- const e = f(4), {
8
- id: r,
9
- children: s,
10
- Skeleton: t
11
- } = l;
12
- let i;
13
- if (e[0] !== r ? (i = (o) => o.widgets[r]?.isLoading, e[0] = r, e[1] = i) : i = e[1], m(d(i))) {
14
- if (!t)
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { c as s } from "react/compiler-runtime";
3
+ import { u } from "../use-widget-selector-DqRmWQ1K.js";
4
+ import { Suspense as c } from "react";
5
+ function L(r) {
6
+ const e = s(2), {
7
+ id: i,
8
+ children: l,
9
+ Skeleton: n
10
+ } = r;
11
+ if (u(i, f)) {
12
+ if (!n)
15
13
  return null;
16
14
  let o;
17
- return e[2] !== t ? (o = /* @__PURE__ */ n(u, { fallback: null, children: /* @__PURE__ */ n(t, {}) }), e[2] = t, e[3] = o) : o = e[3], o;
15
+ return e[0] !== n ? (o = /* @__PURE__ */ t(c, { fallback: null, children: /* @__PURE__ */ t(n, {}) }), e[0] = n, e[1] = o) : o = e[1], o;
18
16
  }
19
- return s;
17
+ return l;
18
+ }
19
+ function f(r) {
20
+ return r?.isLoading;
20
21
  }
21
22
  export {
22
- h as SkeletonLoader
23
+ L as SkeletonLoader
23
24
  };
24
25
  //# sourceMappingURL=skeleton-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-loader.js","sources":["../../src/widgets/skeleton-loader/skeleton-loader.tsx"],"sourcesContent":["import type { SkeletonLoaderProps } from './types'\nimport { useWidgetStore } from '../stores/widget-store'\nimport { Suspense } from 'react'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Displays a skeleton loading placeholder while widget data is loading. Subscribes to widget loading state in the store and renders the provided Skeleton component or children accordingly.\n *\n * @example\n * ```tsx\n * <SkeletonLoader id=\"sales-chart\" Skeleton={BarSkeleton}>\n * <Bar id=\"sales-chart\" />\n * </SkeletonLoader>\n * ```\n */\nexport function SkeletonLoader({\n id,\n children,\n Skeleton,\n}: SkeletonLoaderProps) {\n const isLoading = useWidgetStore(\n useShallow((state) => state.widgets[id]?.isLoading),\n )\n\n if (isLoading) {\n if (!Skeleton) {\n return null\n }\n\n return (\n <Suspense fallback={null}>\n <Skeleton />\n </Suspense>\n )\n }\n\n return children\n}\n"],"names":["SkeletonLoader","t0","$","_c","id","children","Skeleton","t1","state","widgets","isLoading","useWidgetStore","useShallow","t2","Suspense","jsx"],"mappings":";;;;;AAeO,SAAAA,EAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAwB;AAAA,IAAAC,IAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,EAAAA,IAAAL;AAIT,MAAAM;AAKpB,MALoBL,SAAAE,KAEPG,IAAAC,CAAAA,MAAWA,EAAKC,QAASL,CAAE,GAAYM,WAAAR,OAAAE,GAAAF,OAAAK,KAAAA,IAAAL,EAAA,CAAA,GADlCS,EAChBC,EAAWL,CAAuC,CACpD,GAEa;AACX,QAAI,CAACD;AAAQ,aACJ;AACR,QAAAO;AAAA,WAAAX,SAAAI,KAGCO,sBAACC,GAAA,EAAmB,UAAA,MAClB,UAAA,gBAAAC,EAACT,KAAQ,GACX,GAAWJ,OAAAI,GAAAJ,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GAFXW;AAAAA,EAEW;AAEd,SAEMR;AAAQ;"}
1
+ {"version":3,"file":"skeleton-loader.js","sources":["../../src/widgets/skeleton-loader/skeleton-loader.tsx"],"sourcesContent":["import type { SkeletonLoaderProps } from './types'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\nimport { Suspense } from 'react'\n\n/**\n * Displays a skeleton loading placeholder while widget data is loading. Subscribes to widget loading state in the store and renders the provided Skeleton component or children accordingly.\n *\n * @example\n * ```tsx\n * <SkeletonLoader id=\"sales-chart\" Skeleton={BarSkeleton}>\n * <Bar id=\"sales-chart\" />\n * </SkeletonLoader>\n * ```\n */\nexport function SkeletonLoader({\n id,\n children,\n Skeleton,\n}: SkeletonLoaderProps) {\n const isLoading = useWidgetSelector(id, (w) => w?.isLoading)\n\n if (isLoading) {\n if (!Skeleton) {\n return null\n }\n\n return (\n <Suspense fallback={null}>\n <Skeleton />\n </Suspense>\n )\n }\n\n return children\n}\n"],"names":["SkeletonLoader","t0","$","_c","id","children","Skeleton","useWidgetSelector","_temp","t1","Suspense","jsx","w","isLoading"],"mappings":";;;;AAcO,SAAAA,EAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAwB;AAAA,IAAAC,IAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,EAAAA,IAAAL;AAO7B,MAFkBM,EAAkBH,GAAII,CAAmB,GAE9C;AACX,QAAI,CAACF;AAAQ,aACJ;AACR,QAAAG;AAAA,WAAAP,SAAAI,KAGCG,sBAACC,GAAA,EAAmB,UAAA,MAClB,UAAA,gBAAAC,EAACL,KAAQ,GACX,GAAWJ,OAAAI,GAAAJ,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAFXO;AAAAA,EAEW;AAEd,SAEMJ;AAAQ;AAnBV,SAAAG,EAAAI,GAAA;AAAA,SAK0CA,GAACC;AAAW;"}
@@ -1,146 +1,162 @@
1
- import { jsx as a, jsxs as I, Fragment as M } from "react/jsx-runtime";
2
- import { c as w } from "react/compiler-runtime";
3
- import { I as y, S as k, P as C, a as R } from "../series-CYNOu2Ju.js";
4
- import { u as h } from "../widget-store-CzDt8oSK.js";
5
- import { useShallow as S } from "zustand/shallow";
6
- import { d as T } from "../formatter-B1Xh8XDH.js";
7
- import { Box as $, Skeleton as V } from "@mui/material";
8
- import { R as b } from "../row-DTCV0Ocm.js";
1
+ import { jsx as s, jsxs as M, Fragment as _ } from "react/jsx-runtime";
2
+ import { c as g } from "react/compiler-runtime";
3
+ import { I as w, S as k, P as C, a as R } from "../series-Bola3CmD.js";
4
+ import { u as T } from "../use-widget-selector-DqRmWQ1K.js";
5
+ import { d as $ } from "../formatter-B9Bxn1k7.js";
6
+ import { Box as I, Skeleton as V } from "@mui/material";
7
+ import "../widget-store-CIrb9RKP.js";
8
+ import "zustand/shallow";
9
+ import { R as b } from "../row-D4VOhcNI.js";
9
10
  import "@mui/icons-material";
10
11
  import "react";
11
- import { u as j } from "../use-widget-ref-wtFLDFCD.js";
12
- import "react-markdown";
13
12
  import "html2canvas";
14
13
  import "../lasso-tool-BYbxrJ-7.js";
15
14
  import "../cjs-D4KH3azB.js";
16
15
  import "@dnd-kit/core";
17
16
  import "@dnd-kit/sortable";
18
17
  import "@dnd-kit/utilities";
19
- import { d as W, a as P } from "../exports-Cr43OCul.js";
20
- function v(t) {
21
- const e = w(2);
18
+ import { u as j } from "../use-widget-ref-BFazQvJK.js";
19
+ import { d as y, a as P } from "../exports-Cr43OCul.js";
20
+ function v(e) {
21
+ const t = g(2);
22
22
  let i;
23
- return e[0] !== t ? (i = /* @__PURE__ */ a(y, { ...t, children: "-" }), e[0] = t, e[1] = i) : i = e[1], i;
23
+ return t[0] !== e ? (i = /* @__PURE__ */ s(w, { ...e, children: "-" }), t[0] = e, t[1] = i) : i = t[1], i;
24
24
  }
25
- function F(t) {
26
- const e = w(19);
27
- let i, o, r;
28
- e[0] !== t ? ({
25
+ function F(e) {
26
+ const t = g(15);
27
+ let i, r, o;
28
+ t[0] !== e ? ({
29
29
  id: i,
30
- index: r,
31
- ...o
32
- } = t, e[0] = t, e[1] = i, e[2] = o, e[3] = r) : (i = e[1], o = e[2], r = e[3]);
33
- const n = r === void 0 ? 0 : r;
34
- let s;
35
- e[4] !== i || e[5] !== n ? (s = (f) => f.getWidget(i)?.data[n]?.min, e[4] = i, e[5] = n, e[6] = s) : s = e[6];
36
- const m = h(S(s));
37
- let c;
38
- e[7] !== i || e[8] !== n ? (c = (f) => f.getWidget(i)?.data[n]?.color, e[7] = i, e[8] = n, e[9] = c) : c = e[9];
39
- const u = h(S(c)), p = h(S((f) => f.getWidget(i)?.formatter)) ?? T;
40
- let l;
41
- e[10] !== u ? (l = {
42
- color: u
43
- }, e[10] = u, e[11] = l) : l = e[11];
44
- const x = m ?? 0;
30
+ index: o,
31
+ ...r
32
+ } = e, t[0] = e, t[1] = i, t[2] = r, t[3] = o) : (i = t[1], r = t[2], o = t[3]);
33
+ const n = o === void 0 ? 0 : o;
45
34
  let d;
46
- e[12] !== p || e[13] !== x ? (d = p(x), e[12] = p, e[13] = x, e[14] = d) : d = e[14];
47
- let g;
48
- return e[15] !== o || e[16] !== l || e[17] !== d ? (g = /* @__PURE__ */ a(y, { TypographyProps: l, ...o, children: d }), e[15] = o, e[16] = l, e[17] = d, e[18] = g) : g = e[18], g;
35
+ t[4] !== n ? (d = (S) => {
36
+ const p = S;
37
+ return {
38
+ min: p?.data[n]?.min,
39
+ color: p?.data[n]?.color,
40
+ formatter: p?.formatter
41
+ };
42
+ }, t[4] = n, t[5] = d) : d = t[5];
43
+ const {
44
+ min: m,
45
+ color: c,
46
+ formatter: h
47
+ } = T(i, d), u = h ?? $;
48
+ let a;
49
+ t[6] !== c ? (a = {
50
+ color: c
51
+ }, t[6] = c, t[7] = a) : a = t[7];
52
+ const x = m ?? 0;
53
+ let l;
54
+ t[8] !== u || t[9] !== x ? (l = u(x), t[8] = u, t[9] = x, t[10] = l) : l = t[10];
55
+ let f;
56
+ return t[11] !== r || t[12] !== a || t[13] !== l ? (f = /* @__PURE__ */ s(w, { TypographyProps: a, ...r, children: l }), t[11] = r, t[12] = a, t[13] = l, t[14] = f) : f = t[14], f;
49
57
  }
50
- function _(t) {
51
- const e = w(19);
52
- let i, o, r;
53
- e[0] !== t ? ({
58
+ function W(e) {
59
+ const t = g(15);
60
+ let i, r, o;
61
+ t[0] !== e ? ({
54
62
  id: i,
55
- index: r,
56
- ...o
57
- } = t, e[0] = t, e[1] = i, e[2] = o, e[3] = r) : (i = e[1], o = e[2], r = e[3]);
58
- const n = r === void 0 ? 0 : r;
59
- let s;
60
- e[4] !== i || e[5] !== n ? (s = (f) => f.getWidget(i)?.data[n]?.max, e[4] = i, e[5] = n, e[6] = s) : s = e[6];
61
- const m = h(S(s));
62
- let c;
63
- e[7] !== i || e[8] !== n ? (c = (f) => f.getWidget(i)?.data[n]?.color, e[7] = i, e[8] = n, e[9] = c) : c = e[9];
64
- const u = h(S(c)), p = h(S((f) => f.getWidget(i)?.formatter)) ?? T;
65
- let l;
66
- e[10] !== u ? (l = {
67
- color: u
68
- }, e[10] = u, e[11] = l) : l = e[11];
69
- const x = m ?? 0;
63
+ index: o,
64
+ ...r
65
+ } = e, t[0] = e, t[1] = i, t[2] = r, t[3] = o) : (i = t[1], r = t[2], o = t[3]);
66
+ const n = o === void 0 ? 0 : o;
70
67
  let d;
71
- e[12] !== p || e[13] !== x ? (d = p(x), e[12] = p, e[13] = x, e[14] = d) : d = e[14];
72
- let g;
73
- return e[15] !== o || e[16] !== l || e[17] !== d ? (g = /* @__PURE__ */ a(y, { TypographyProps: l, ...o, children: d }), e[15] = o, e[16] = l, e[17] = d, e[18] = g) : g = e[18], g;
68
+ t[4] !== n ? (d = (S) => {
69
+ const p = S;
70
+ return {
71
+ max: p?.data[n]?.max,
72
+ color: p?.data[n]?.color,
73
+ formatter: p?.formatter
74
+ };
75
+ }, t[4] = n, t[5] = d) : d = t[5];
76
+ const {
77
+ max: m,
78
+ color: c,
79
+ formatter: h
80
+ } = T(i, d), u = h ?? $;
81
+ let a;
82
+ t[6] !== c ? (a = {
83
+ color: c
84
+ }, t[6] = c, t[7] = a) : a = t[7];
85
+ const x = m ?? 0;
86
+ let l;
87
+ t[8] !== u || t[9] !== x ? (l = u(x), t[8] = u, t[9] = x, t[10] = l) : l = t[10];
88
+ let f;
89
+ return t[11] !== r || t[12] !== a || t[13] !== l ? (f = /* @__PURE__ */ s(w, { TypographyProps: a, ...r, children: l }), t[11] = r, t[12] = a, t[13] = l, t[14] = f) : f = t[14], f;
74
90
  }
75
- function ie(t) {
76
- const e = w(8), {
91
+ function rt(e) {
92
+ const t = g(8), {
77
93
  ref: i
78
- } = j(t.id);
79
- let o;
80
- e[0] !== t.id ? (o = (s) => {
94
+ } = j(e.id);
95
+ let r;
96
+ t[0] !== e.id ? (r = (d) => {
81
97
  const {
82
98
  index: m
83
- } = s;
84
- return /* @__PURE__ */ I(M, { children: [
85
- /* @__PURE__ */ a(k, { id: t.id, index: m }),
86
- /* @__PURE__ */ a(C, { id: t.id, index: m }),
87
- /* @__PURE__ */ a(F, { id: t.id, index: m }),
88
- /* @__PURE__ */ a(v, {}),
89
- /* @__PURE__ */ a(_, { id: t.id, index: m }),
90
- /* @__PURE__ */ a(R, { id: t.id, index: m })
99
+ } = d;
100
+ return /* @__PURE__ */ M(_, { children: [
101
+ /* @__PURE__ */ s(k, { id: e.id, index: m }),
102
+ /* @__PURE__ */ s(C, { id: e.id, index: m }),
103
+ /* @__PURE__ */ s(F, { id: e.id, index: m }),
104
+ /* @__PURE__ */ s(v, {}),
105
+ /* @__PURE__ */ s(W, { id: e.id, index: m }),
106
+ /* @__PURE__ */ s(R, { id: e.id, index: m })
91
107
  ] });
92
- }, e[0] = t.id, e[1] = o) : o = e[1];
93
- let r;
94
- e[2] !== t.id || e[3] !== o ? (r = /* @__PURE__ */ a(b, { id: t.id, children: o }), e[2] = t.id, e[3] = o, e[4] = r) : r = e[4];
108
+ }, t[0] = e.id, t[1] = r) : r = t[1];
109
+ let o;
110
+ t[2] !== e.id || t[3] !== r ? (o = /* @__PURE__ */ s(b, { id: e.id, children: r }), t[2] = e.id, t[3] = r, t[4] = o) : o = t[4];
95
111
  let n;
96
- return e[5] !== i || e[6] !== r ? (n = /* @__PURE__ */ a($, { ref: i, children: r }), e[5] = i, e[6] = r, e[7] = n) : n = e[7], n;
112
+ return t[5] !== i || t[6] !== o ? (n = /* @__PURE__ */ s(I, { ref: i, children: o }), t[5] = i, t[6] = o, t[7] = n) : n = t[7], n;
97
113
  }
98
114
  const B = {
99
115
  row: {
100
116
  display: "flex",
101
117
  alignItems: "center",
102
- gap: (t) => t.spacing(0.25),
118
+ gap: (e) => e.spacing(0.25),
103
119
  "& + &": {
104
- marginTop: (t) => t.spacing(1)
120
+ marginTop: (e) => e.spacing(1)
105
121
  }
106
122
  }
107
123
  };
108
- function oe() {
109
- const t = w(1);
110
- let e;
111
- return t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ a($, { sx: B.row, "aria-label": "Spread skeleton", children: /* @__PURE__ */ a(V, { width: 120, height: 32 }) }), t[0] = e) : e = t[0], e;
124
+ function it() {
125
+ const e = g(1);
126
+ let t;
127
+ return e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ s(I, { sx: B.row, "aria-label": "Spread skeleton", children: /* @__PURE__ */ s(V, { width: 120, height: 32 }) }), e[0] = t) : t = e[0], t;
112
128
  }
113
- function re({
114
- refUI: t
129
+ function ot({
130
+ refUI: e
115
131
  }) {
116
132
  return [{
117
- ...W,
118
- modifier: () => W.modifier(t)
133
+ ...y,
134
+ modifier: () => y.modifier(e)
119
135
  }, {
120
136
  ...P,
121
- modifier: async (e) => {
122
- const i = e.map((o) => [o.min, o.max]);
137
+ modifier: async (t) => {
138
+ const i = t.map((r) => [r.min, r.max]);
123
139
  return P.modifier([["Min", "Max"], ...i]);
124
140
  }
125
141
  }];
126
142
  }
127
- function ne() {
143
+ function nt() {
128
144
  return {
129
145
  series: []
130
146
  };
131
147
  }
132
148
  export {
133
- y as Item,
134
- _ as MaxValue,
149
+ w as Item,
150
+ W as MaxValue,
135
151
  F as MinValue,
136
152
  C as Prefix,
137
153
  b as Row,
138
154
  v as Separator,
139
155
  k as Series,
140
- oe as SpreadSkeleton,
141
- ie as SpreadUI,
156
+ it as SpreadSkeleton,
157
+ rt as SpreadUI,
142
158
  R as Suffix,
143
- ne as spreadConfig,
144
- re as spreadDownloadConfig
159
+ nt as spreadConfig,
160
+ ot as spreadDownloadConfig
145
161
  };
146
162
  //# sourceMappingURL=spread.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spread.js","sources":["../../src/widgets/spread/components/separator.tsx","../../src/widgets/spread/components/min-value.tsx","../../src/widgets/spread/components/max-value.tsx","../../src/widgets/spread/spread-ui.tsx","../../src/widgets/spread/style.ts","../../src/widgets/spread/skeleton.tsx","../../src/widgets/spread/config.ts"],"sourcesContent":["import { Item } from '../../formula/components/item'\nimport type { ItemProps } from '../../formula/types'\n\n/**\n * Renders a dash separator between the min and max values in a spread widget.\n */\nexport function Separator(props: Omit<ItemProps, 'children'>) {\n return <Item {...props}>-</Item>\n}\n","import { type SpreadWidgetState, type ValueProps } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Item } from '../../formula/components/item'\nimport { useShallow } from 'zustand/shallow'\nimport { defaultFormatter } from '../../utils/formatter'\n\n/**\n * Displays the formatted minimum value for a spread widget data item.\n */\nexport function MinValue({ id, index = 0, ...props }: ValueProps) {\n const min = useWidgetStore(\n useShallow(\n (state) => state.getWidget<SpreadWidgetState>(id)?.data[index]?.min,\n ),\n )\n const color = useWidgetStore(\n useShallow(\n (state) => state.getWidget<SpreadWidgetState>(id)?.data[index]?.color,\n ),\n )\n const formatter =\n useWidgetStore(\n useShallow((state) => state.getWidget<SpreadWidgetState>(id)?.formatter),\n ) ?? defaultFormatter\n\n return (\n <Item TypographyProps={{ color }} {...props}>\n {formatter(min ?? 0)}\n </Item>\n )\n}\n","import { type SpreadWidgetState, type ValueProps } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Item } from '../../formula/components/item'\nimport { useShallow } from 'zustand/shallow'\nimport { defaultFormatter } from '../../utils/formatter'\n\n/**\n * Displays the formatted maximum value for a spread widget data item.\n */\nexport function MaxValue({ id, index = 0, ...props }: ValueProps) {\n const max = useWidgetStore(\n useShallow(\n (state) => state.getWidget<SpreadWidgetState>(id)?.data[index]?.max,\n ),\n )\n const color = useWidgetStore(\n useShallow(\n (state) => state.getWidget<SpreadWidgetState>(id)?.data[index]?.color,\n ),\n )\n const formatter =\n useWidgetStore(\n useShallow((state) => state.getWidget<SpreadWidgetState>(id)?.formatter),\n ) ?? defaultFormatter\n\n return (\n <Item TypographyProps={{ color }} {...props}>\n {formatter(max ?? 0)}\n </Item>\n )\n}\n","import type { SpreadUIProps } from './types'\n\nimport { Separator } from './components/separator'\nimport { MinValue } from './components/min-value'\nimport { MaxValue } from './components/max-value'\nimport { Prefix, Row, Suffix, Series } from '../formula'\nimport { useWidgetRef } from '../../hooks'\nimport { Box } from '@mui/material'\n\n/**\n * Renders a spread widget displaying min-max value pairs with optional prefixes, suffixes, and series indicators.\n */\nexport function SpreadUI(props: SpreadUIProps) {\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 <MinValue id={props.id} index={index} />\n <Separator />\n <MaxValue id={props.id} index={index} />\n <Suffix id={props.id} index={index} />\n </>\n )}\n </Row>\n </Box>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(2),\n },\n item: {\n '&[data-disabled=\"true\"]': {\n color: (theme: Theme) => theme.palette.text.disabled,\n },\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(0.25),\n '& + &': {\n marginTop: (theme: Theme) => theme.spacing(1),\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function SpreadSkeleton() {\n return (\n <Box sx={styles.row} aria-label='Spread skeleton'>\n <Skeleton width={120} height={32} />\n </Box>\n )\n}\n","import { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type { SpreadWidgetConfig, SpreadWidgetData } from './types'\n\n/**\n * Creates download configuration for spread widgets, supporting PNG (screenshot) and CSV (min/max 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 spreadDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<SpreadWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = data.map((item) => [item.min, item.max])\n\n return downloadToCSV.modifier([['Min', 'Max'], ...rows])\n },\n },\n ]\n}\n\n/**\n * Returns the default configuration for spread (min/max value range) widgets.\n *\n * @returns Default spread widget config with empty series.\n */\nexport function spreadConfig(): SpreadWidgetConfig {\n return {\n series: [],\n }\n}\n"],"names":["Separator","props","$","_c","t0","jsx","Item","MinValue","id","t1","index","undefined","t2","state","getWidget","data","min","useWidgetStore","useShallow","t3","state_0","color","formatter","state_1","defaultFormatter","t4","t5","t6","t7","MaxValue","max","SpreadUI","ref","useWidgetRef","jsxs","Fragment","Series","Prefix","Suffix","Row","Box","styles","row","display","alignItems","gap","theme","spacing","marginTop","SpreadSkeleton","Symbol","for","Skeleton","spreadDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","rows","map","item","spreadConfig","series"],"mappings":"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"}
1
+ {"version":3,"file":"spread.js","sources":["../../src/widgets/spread/components/separator.tsx","../../src/widgets/spread/components/min-value.tsx","../../src/widgets/spread/components/max-value.tsx","../../src/widgets/spread/spread-ui.tsx","../../src/widgets/spread/style.ts","../../src/widgets/spread/skeleton.tsx","../../src/widgets/spread/config.ts"],"sourcesContent":["import { Item } from '../../formula/components/item'\nimport type { ItemProps } from '../../formula/types'\n\n/**\n * Renders a dash separator between the min and max values in a spread widget.\n */\nexport function Separator(props: Omit<ItemProps, 'children'>) {\n return <Item {...props}>-</Item>\n}\n","import { type SpreadWidgetState, type ValueProps } from '../types'\nimport { useWidgetSelector } from '../../stores/use-widget-selector'\nimport { Item } from '../../formula/components/item'\nimport { defaultFormatter } from '../../utils/formatter'\n\n/**\n * Displays the formatted minimum value for a spread widget data item.\n */\nexport function MinValue({ id, index = 0, ...props }: ValueProps) {\n const {\n min,\n color,\n formatter: _formatter,\n } = useWidgetSelector(id, (w) => {\n const sw = w as SpreadWidgetState | undefined\n return {\n min: sw?.data[index]?.min,\n color: sw?.data[index]?.color,\n formatter: sw?.formatter,\n }\n })\n const formatter = _formatter ?? defaultFormatter\n\n return (\n <Item TypographyProps={{ color }} {...props}>\n {formatter(min ?? 0)}\n </Item>\n )\n}\n","import { type SpreadWidgetState, type ValueProps } from '../types'\nimport { useWidgetSelector } from '../../stores/use-widget-selector'\nimport { Item } from '../../formula/components/item'\nimport { defaultFormatter } from '../../utils/formatter'\n\n/**\n * Displays the formatted maximum value for a spread widget data item.\n */\nexport function MaxValue({ id, index = 0, ...props }: ValueProps) {\n const {\n max,\n color,\n formatter: _formatter,\n } = useWidgetSelector(id, (w) => {\n const sw = w as SpreadWidgetState | undefined\n return {\n max: sw?.data[index]?.max,\n color: sw?.data[index]?.color,\n formatter: sw?.formatter,\n }\n })\n const formatter = _formatter ?? defaultFormatter\n\n return (\n <Item TypographyProps={{ color }} {...props}>\n {formatter(max ?? 0)}\n </Item>\n )\n}\n","import type { SpreadUIProps } from './types'\n\nimport { Separator } from './components/separator'\nimport { MinValue } from './components/min-value'\nimport { MaxValue } from './components/max-value'\nimport { Prefix, Row, Suffix, Series } from '../formula'\nimport { useWidgetRef } from '../../hooks'\nimport { Box } from '@mui/material'\n\n/**\n * Renders a spread widget displaying min-max value pairs with optional prefixes, suffixes, and series indicators.\n */\nexport function SpreadUI(props: SpreadUIProps) {\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 <MinValue id={props.id} index={index} />\n <Separator />\n <MaxValue id={props.id} index={index} />\n <Suffix id={props.id} index={index} />\n </>\n )}\n </Row>\n </Box>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(2),\n },\n item: {\n '&[data-disabled=\"true\"]': {\n color: (theme: Theme) => theme.palette.text.disabled,\n },\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(0.25),\n '& + &': {\n marginTop: (theme: Theme) => theme.spacing(1),\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function SpreadSkeleton() {\n return (\n <Box sx={styles.row} aria-label='Spread skeleton'>\n <Skeleton width={120} height={32} />\n </Box>\n )\n}\n","import { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type { SpreadWidgetConfig, SpreadWidgetData } from './types'\n\n/**\n * Creates download configuration for spread widgets, supporting PNG (screenshot) and CSV (min/max 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 spreadDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<SpreadWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = data.map((item) => [item.min, item.max])\n\n return downloadToCSV.modifier([['Min', 'Max'], ...rows])\n },\n },\n ]\n}\n\n/**\n * Returns the default configuration for spread (min/max value range) widgets.\n *\n * @returns Default spread widget config with empty series.\n */\nexport function spreadConfig(): SpreadWidgetConfig {\n return {\n series: [],\n }\n}\n"],"names":["Separator","props","$","_c","t0","jsx","Item","MinValue","id","t1","index","undefined","t2","w","sw","min","data","color","formatter","_formatter","useWidgetSelector","defaultFormatter","t3","t4","t5","t6","MaxValue","max","SpreadUI","ref","useWidgetRef","jsxs","Fragment","Series","Prefix","Suffix","Row","Box","styles","row","display","alignItems","gap","theme","spacing","marginTop","SpreadSkeleton","Symbol","for","Skeleton","spreadDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","rows","map","item","spreadConfig","series"],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import { u as r } from "../widget-store-CzDt8oSK.js";
1
+ import { u as o, w as r } from "../widget-store-CIrb9RKP.js";
2
+ import { u as i } from "../use-widget-selector-DqRmWQ1K.js";
2
3
  export {
3
- r as useWidgetStore
4
+ i as useWidgetSelector,
5
+ o as useWidgetStore,
6
+ r as widgetStoreActions
4
7
  };
5
8
  //# sourceMappingURL=stores.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stores.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"stores.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}