@carto/ps-react-ui 4.4.2 → 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.
- package/dist/download-config-Dqu78h2a.js +57 -0
- package/dist/download-config-Dqu78h2a.js.map +1 -0
- package/dist/formatter-B9Bxn1k7.js +6 -0
- package/dist/formatter-B9Bxn1k7.js.map +1 -0
- package/dist/styles-Y8q7Jff3.js +118 -0
- package/dist/styles-Y8q7Jff3.js.map +1 -0
- package/dist/types/widgets/actions/brush-toggle/types.d.ts +8 -2
- package/dist/types/widgets/category/components/category-row-multi.d.ts +2 -1
- package/dist/types/widgets/category/components/category-row-single.d.ts +2 -1
- package/dist/types/widgets/category/types.d.ts +1 -0
- package/dist/types/widgets/echart/types.d.ts +2 -0
- package/dist/types/widgets/histogram/config.d.ts +15 -3
- package/dist/types/widgets/histogram/index.d.ts +2 -1
- package/dist/types/widgets/histogram/types.d.ts +6 -3
- package/dist/types/widgets/stores/types.d.ts +2 -0
- package/dist/types/widgets/utils/chart-config/index.d.ts +1 -1
- package/dist/types/widgets/utils/chart-config/option-builders.d.ts +13 -8
- package/dist/types/widgets/utils/formatter.d.ts +1 -0
- package/dist/types/widgets/utils/index.d.ts +1 -1
- package/dist/widgets/actions.js +455 -439
- package/dist/widgets/actions.js.map +1 -1
- package/dist/widgets/bar.js +52 -46
- package/dist/widgets/bar.js.map +1 -1
- package/dist/widgets/category.js +206 -197
- package/dist/widgets/category.js.map +1 -1
- package/dist/widgets/formula.js +1 -1
- package/dist/widgets/histogram.js +119 -79
- package/dist/widgets/histogram.js.map +1 -1
- package/dist/widgets/pie.js +110 -98
- package/dist/widgets/pie.js.map +1 -1
- package/dist/widgets/range.js +1 -1
- package/dist/widgets/scatterplot.js +49 -43
- package/dist/widgets/scatterplot.js.map +1 -1
- package/dist/widgets/spread.js +1 -1
- package/dist/widgets/timeseries.js +51 -45
- package/dist/widgets/timeseries.js.map +1 -1
- package/dist/widgets/toolbar-actions.js +101 -6693
- package/dist/widgets/toolbar-actions.js.map +1 -1
- package/dist/widgets/utils.js +16 -14
- package/dist/widgets/utils.js.map +1 -1
- package/package.json +5 -4
- package/src/widgets/README.md +3 -3
- package/src/widgets/actions/brush-toggle/brush-toggle.tsx +42 -47
- package/src/widgets/actions/brush-toggle/types.ts +8 -2
- package/src/widgets/bar/config.ts +22 -14
- package/src/widgets/category/category-ui.tsx +9 -1
- package/src/widgets/category/components/category-row-multi.tsx +6 -2
- package/src/widgets/category/components/category-row-single.tsx +5 -1
- package/src/widgets/category/types.ts +1 -0
- package/src/widgets/echart/types.ts +2 -0
- package/src/widgets/histogram/config.ts +101 -20
- package/src/widgets/histogram/index.ts +6 -1
- package/src/widgets/histogram/types.ts +9 -3
- package/src/widgets/pie/config.ts +17 -5
- package/src/widgets/scatterplot/config.ts +8 -3
- package/src/widgets/stores/types.ts +2 -0
- package/src/widgets/timeseries/config.ts +21 -13
- package/src/widgets/utils/chart-config/index.ts +1 -1
- package/src/widgets/utils/chart-config/option-builders.ts +22 -12
- package/src/widgets/utils/formatter.ts +2 -1
- package/src/widgets/utils/index.ts +1 -1
- package/dist/formatter-B1Xh8XDH.js +0 -5
- package/dist/formatter-B1Xh8XDH.js.map +0 -1
- package/dist/styles-C_8vOEep.js +0 -167
- package/dist/styles-C_8vOEep.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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"}
|
package/dist/widgets/spread.js
CHANGED
|
@@ -3,7 +3,7 @@ import { c as w } from "react/compiler-runtime";
|
|
|
3
3
|
import { I as y, S as k, P as C, a as R } from "../series-CYNOu2Ju.js";
|
|
4
4
|
import { u as h } from "../widget-store-CzDt8oSK.js";
|
|
5
5
|
import { useShallow as S } from "zustand/shallow";
|
|
6
|
-
import { d as T } from "../formatter-
|
|
6
|
+
import { d as T } from "../formatter-B9Bxn1k7.js";
|
|
7
7
|
import { Box as $, Skeleton as V } from "@mui/material";
|
|
8
8
|
import { R as b } from "../row-DTCV0Ocm.js";
|
|
9
9
|
import "@mui/icons-material";
|
|
@@ -1,27 +1,30 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { c as
|
|
1
|
+
import { jsxs as m, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { c as y } from "react/compiler-runtime";
|
|
3
3
|
import "react";
|
|
4
4
|
import "echarts";
|
|
5
5
|
import "../widget-store-CzDt8oSK.js";
|
|
6
6
|
import "zustand/shallow";
|
|
7
|
-
import { g as
|
|
8
|
-
import { m as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
import { g as b } from "../options-D9wflre6.js";
|
|
8
|
+
import { m as k } from "../utils-BOhInag6.js";
|
|
9
|
+
import { c as v, f as w } from "../download-config-Dqu78h2a.js";
|
|
10
|
+
import { g as L, b as C, a as I, d as S, e as _, c as A } from "../styles-Y8q7Jff3.js";
|
|
11
|
+
import { Box as l, Skeleton as s } from "@mui/material";
|
|
12
|
+
const Y = v(w);
|
|
13
|
+
function z(e) {
|
|
13
14
|
return {
|
|
14
15
|
type: "timeseries",
|
|
15
|
-
option: b(
|
|
16
|
-
formatter: e.formatter
|
|
16
|
+
option: k(b(e), j(e)),
|
|
17
|
+
formatter: e.formatter,
|
|
18
|
+
labelFormatter: e.labelFormatter
|
|
17
19
|
};
|
|
18
20
|
}
|
|
19
|
-
function
|
|
21
|
+
function j({
|
|
20
22
|
data: e = [],
|
|
21
23
|
theme: t,
|
|
22
|
-
formatter: i
|
|
24
|
+
formatter: i,
|
|
25
|
+
labelFormatter: o
|
|
23
26
|
}) {
|
|
24
|
-
const
|
|
27
|
+
const p = (e?.length ?? 0) > 1, h = {
|
|
25
28
|
type: "value",
|
|
26
29
|
axisLabel: {
|
|
27
30
|
margin: 0,
|
|
@@ -45,16 +48,19 @@ function S({
|
|
|
45
48
|
}
|
|
46
49
|
};
|
|
47
50
|
return {
|
|
48
|
-
legend:
|
|
51
|
+
legend: _({
|
|
52
|
+
hasLegend: p,
|
|
53
|
+
labelFormatter: o
|
|
54
|
+
}),
|
|
49
55
|
grid: {
|
|
50
|
-
...
|
|
56
|
+
...S(p, t),
|
|
51
57
|
outerBounds: {
|
|
52
58
|
left: parseInt(t.spacing(3)),
|
|
53
59
|
right: parseInt(t.spacing(1)),
|
|
54
60
|
top: parseInt(t.spacing(2))
|
|
55
61
|
}
|
|
56
62
|
},
|
|
57
|
-
xAxis: {
|
|
63
|
+
xAxis: I({
|
|
58
64
|
type: "category",
|
|
59
65
|
axisTick: {
|
|
60
66
|
alignWithLabel: !0
|
|
@@ -65,22 +71,22 @@ function S({
|
|
|
65
71
|
showMinLabel: !0,
|
|
66
72
|
rotate: 45
|
|
67
73
|
}
|
|
68
|
-
},
|
|
69
|
-
yAxis:
|
|
74
|
+
}, o),
|
|
75
|
+
yAxis: C(h, i),
|
|
70
76
|
tooltip: {
|
|
71
|
-
formatter:
|
|
72
|
-
const
|
|
77
|
+
formatter: L((a) => {
|
|
78
|
+
const c = a.value, f = a.dimensionNames?.[a.encode?.y?.at(0) ?? 1], g = c[f ?? ""], u = typeof g == "number" && i ? i(g) : g ?? "", d = typeof a.marker == "string" ? a.marker : "", x = a.seriesName ? `${a.seriesName}: ` : "";
|
|
73
79
|
return {
|
|
74
|
-
name: a.name ?? "",
|
|
75
|
-
seriesName:
|
|
76
|
-
marker:
|
|
80
|
+
name: o ? String(o(a.name ?? "")) : a.name ?? "",
|
|
81
|
+
seriesName: x,
|
|
82
|
+
marker: d,
|
|
77
83
|
value: u
|
|
78
84
|
};
|
|
79
85
|
})
|
|
80
86
|
},
|
|
81
87
|
color: Object.values(t.palette.qualitative.bold),
|
|
82
|
-
series: e.map((a,
|
|
83
|
-
datasetIndex:
|
|
88
|
+
series: e.map((a, c) => ({
|
|
89
|
+
datasetIndex: c,
|
|
84
90
|
type: "line",
|
|
85
91
|
smooth: !0,
|
|
86
92
|
emphasis: {
|
|
@@ -93,7 +99,7 @@ const n = {
|
|
|
93
99
|
skeleton: {
|
|
94
100
|
graph: {
|
|
95
101
|
container: {
|
|
96
|
-
...
|
|
102
|
+
...A.graph.container,
|
|
97
103
|
position: "relative"
|
|
98
104
|
},
|
|
99
105
|
grid: {
|
|
@@ -127,41 +133,41 @@ const n = {
|
|
|
127
133
|
}
|
|
128
134
|
}
|
|
129
135
|
};
|
|
130
|
-
function
|
|
131
|
-
const e =
|
|
136
|
+
function H() {
|
|
137
|
+
const e = y(2);
|
|
132
138
|
let t;
|
|
133
|
-
e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */
|
|
134
|
-
/* @__PURE__ */ s
|
|
135
|
-
/* @__PURE__ */ s
|
|
136
|
-
/* @__PURE__ */ s
|
|
137
|
-
/* @__PURE__ */ s
|
|
138
|
-
/* @__PURE__ */ s
|
|
139
|
+
e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ m(l, { sx: n.skeleton.graph.grid, children: [
|
|
140
|
+
/* @__PURE__ */ r(s, { sx: n.skeleton.histogram.item, variant: "rectangular", height: "20%" }),
|
|
141
|
+
/* @__PURE__ */ r(s, { sx: n.skeleton.histogram.item, variant: "rectangular", height: "40%" }),
|
|
142
|
+
/* @__PURE__ */ r(s, { sx: n.skeleton.histogram.item, variant: "rectangular", height: "60%" }),
|
|
143
|
+
/* @__PURE__ */ r(s, { sx: n.skeleton.histogram.item, variant: "rectangular", height: "20%" }),
|
|
144
|
+
/* @__PURE__ */ r(s, { sx: n.skeleton.histogram.item, variant: "rectangular", height: "80%" })
|
|
139
145
|
] }), e[0] = t) : t = e[0];
|
|
140
146
|
let i;
|
|
141
|
-
return e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */
|
|
147
|
+
return e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ m(l, { sx: n.skeleton.graph.container, children: [
|
|
142
148
|
t,
|
|
143
|
-
/* @__PURE__ */
|
|
149
|
+
/* @__PURE__ */ r(l, { sx: n.skeleton.legend, children: Array(2).fill(0).map(T) })
|
|
144
150
|
] }), e[1] = i) : i = e[1], i;
|
|
145
151
|
}
|
|
146
|
-
function
|
|
147
|
-
return /* @__PURE__ */
|
|
152
|
+
function T(e, t) {
|
|
153
|
+
return /* @__PURE__ */ m(l, { sx: {
|
|
148
154
|
display: "flex",
|
|
149
155
|
alignItems: "center",
|
|
150
|
-
gap:
|
|
156
|
+
gap: M
|
|
151
157
|
}, children: [
|
|
152
|
-
/* @__PURE__ */ s
|
|
153
|
-
/* @__PURE__ */ s
|
|
158
|
+
/* @__PURE__ */ r(s, { variant: "circular", width: 8, height: 8 }),
|
|
159
|
+
/* @__PURE__ */ r(s, { width: 48, height: 8 })
|
|
154
160
|
] }, `skeleton-${t}`);
|
|
155
161
|
}
|
|
156
|
-
function
|
|
162
|
+
function M(e) {
|
|
157
163
|
const {
|
|
158
164
|
spacing: t
|
|
159
165
|
} = e;
|
|
160
166
|
return t(1.5);
|
|
161
167
|
}
|
|
162
168
|
export {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
169
|
+
H as TimeseriesSkeleton,
|
|
170
|
+
z as timeseriesConfig,
|
|
171
|
+
Y as timeseriesDownloadConfig
|
|
166
172
|
};
|
|
167
173
|
//# sourceMappingURL=timeseries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeseries.js","sources":["../../src/widgets/timeseries/config.ts","../../src/widgets/timeseries/style.ts","../../src/widgets/timeseries/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type {\n TimeseriesConfig,\n TimeseriesWidgetConfig,\n TimeseriesWidgetData,\n} from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipFormatter,\n createChartDownloadConfig,\n applyYAxisFormatter,\n} from '../utils/chart-config'\n\nexport const timeseriesDownloadConfig =\n createChartDownloadConfig<TimeseriesWidgetData>(flattenObjectArrayToCSV)\n\n/**\n * Generates ECharts configuration for line and area chart widgets over time, with smooth curves, rotated axis labels, and CARTO qualitative color palette.\n *\n * @param props - Timeseries configuration including data and theme.\n * @returns Widget config with ECharts option object.\n */\nexport function timeseriesConfig(\n props: TimeseriesConfig,\n): TimeseriesWidgetConfig {\n return {\n type: 'timeseries',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n formatter: props.formatter,\n }\n}\n\nfunction getOption({\n data = [],\n theme,\n formatter,\n}: TimeseriesConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n const yAxis = {\n type: 'value' as const,\n axisLabel: {\n margin: 0,\n padding: [\n 0,\n parseInt(theme.spacing(0.75)),\n parseInt(theme.spacing(1.25)),\n -parseInt(theme.spacing(1)),\n ],\n show: true,\n showMaxLabel: true,\n showMinLabel: false,\n verticalAlign: 'bottom' as const,\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n }\n\n return {\n legend: buildLegendConfig(hasLegend),\n grid: {\n ...buildGridConfig(hasLegend, theme),\n outerBounds: {\n left: parseInt(theme.spacing(3)),\n right: parseInt(theme.spacing(1)),\n top: parseInt(theme.spacing(2)),\n },\n },\n xAxis: {\n type: 'category',\n axisTick: {\n alignWithLabel: true,\n },\n axisLabel: {\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n rotate: 45,\n },\n },\n yAxis: applyYAxisFormatter(yAxis, formatter),\n tooltip: {\n formatter: createTooltipFormatter((item) => {\n const value = item.value as Record<string, string | number>\n const index = item.dimensionNames?.[item.encode?.y?.at(0) ?? 1]\n const _value = value[index ?? '']\n\n const formattedValue =\n typeof _value === 'number' && formatter\n ? formatter(_value)\n : (_value ?? '')\n\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const seriesName = item.seriesName ? `${item.seriesName}: ` : ''\n const name = item.name ?? ''\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: 'line',\n smooth: true,\n emphasis: {\n focus: 'series',\n },\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 grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n histogram: {\n item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(8),\n\n '& + &': {\n marginLeft: '1px',\n },\n },\n },\n legend: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function TimeseriesSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n {/* Timeseries bar */}\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\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":["timeseriesDownloadConfig","createChartDownloadConfig","flattenObjectArrayToCSV","timeseriesConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","formatter","data","theme","hasLegend","length","yAxis","axisLabel","margin","padding","parseInt","spacing","show","showMaxLabel","showMinLabel","verticalAlign","axisLine","axisTick","splitLine","lineStyle","color","palette","black","legend","buildLegendConfig","grid","buildGridConfig","outerBounds","left","right","top","xAxis","alignWithLabel","rotate","applyYAxisFormatter","tooltip","createTooltipFormatter","item","value","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","Object","values","qualitative","bold","series","map","_","datasetIndex","smooth","emphasis","focus","styles","skeleton","graph","container","baseSkeletonStyles","position","display","justifyContent","flex","alignItems","width","histogram","maxWidth","marginLeft","gap","height","TimeseriesSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","Array","fill","_temp2","i","jsxs","_temp"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"timeseries.js","sources":["../../src/widgets/timeseries/config.ts","../../src/widgets/timeseries/style.ts","../../src/widgets/timeseries/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type {\n TimeseriesConfig,\n TimeseriesWidgetConfig,\n TimeseriesWidgetData,\n} from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipFormatter,\n createChartDownloadConfig,\n applyYAxisFormatter,\n applyXAxisFormatter,\n} from '../utils/chart-config'\n\nexport const timeseriesDownloadConfig =\n createChartDownloadConfig<TimeseriesWidgetData>(flattenObjectArrayToCSV)\n\n/**\n * Generates ECharts configuration for line and area chart widgets over time, with smooth curves, rotated axis labels, and CARTO qualitative color palette.\n *\n * @param props - Timeseries configuration including data and theme.\n * @returns Widget config with ECharts option object.\n */\nexport function timeseriesConfig(\n props: TimeseriesConfig,\n): TimeseriesWidgetConfig {\n return {\n type: 'timeseries',\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}: TimeseriesConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n const yAxis = {\n type: 'value' as const,\n axisLabel: {\n margin: 0,\n padding: [\n 0,\n parseInt(theme.spacing(0.75)),\n parseInt(theme.spacing(1.25)),\n -parseInt(theme.spacing(1)),\n ],\n show: true,\n showMaxLabel: true,\n showMinLabel: false,\n verticalAlign: 'bottom' as const,\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n }\n\n return {\n legend: buildLegendConfig({ hasLegend, labelFormatter }),\n grid: {\n ...buildGridConfig(hasLegend, theme),\n outerBounds: {\n left: parseInt(theme.spacing(3)),\n right: parseInt(theme.spacing(1)),\n top: parseInt(theme.spacing(2)),\n },\n },\n xAxis: applyXAxisFormatter(\n {\n type: 'category',\n axisTick: {\n alignWithLabel: true,\n },\n axisLabel: {\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n rotate: 45,\n },\n },\n labelFormatter,\n ),\n yAxis: applyYAxisFormatter(yAxis, formatter),\n tooltip: {\n formatter: createTooltipFormatter((item) => {\n const value = item.value as Record<string, string | number>\n const index = item.dimensionNames?.[item.encode?.y?.at(0) ?? 1]\n const _value = value[index ?? '']\n\n const formattedValue =\n typeof _value === 'number' && formatter\n ? formatter(_value)\n : (_value ?? '')\n\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const seriesName = item.seriesName ? `${item.seriesName}: ` : ''\n const name = labelFormatter\n ? String(labelFormatter(item.name ?? ''))\n : (item.name ?? '')\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: 'line',\n smooth: true,\n emphasis: {\n focus: 'series',\n },\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 grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n histogram: {\n item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(8),\n\n '& + &': {\n marginLeft: '1px',\n },\n },\n },\n legend: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function TimeseriesSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n {/* Timeseries bar */}\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\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":["timeseriesDownloadConfig","createChartDownloadConfig","flattenObjectArrayToCSV","timeseriesConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","formatter","labelFormatter","data","theme","hasLegend","length","yAxis","axisLabel","margin","padding","parseInt","spacing","show","showMaxLabel","showMinLabel","verticalAlign","axisLine","axisTick","splitLine","lineStyle","color","palette","black","legend","buildLegendConfig","grid","buildGridConfig","outerBounds","left","right","top","xAxis","applyXAxisFormatter","alignWithLabel","rotate","applyYAxisFormatter","tooltip","createTooltipFormatter","item","value","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","String","Object","values","qualitative","bold","series","map","_","datasetIndex","smooth","emphasis","focus","styles","skeleton","graph","container","baseSkeletonStyles","position","display","justifyContent","flex","alignItems","width","histogram","maxWidth","marginLeft","gap","height","TimeseriesSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","Array","fill","_temp2","i","jsxs","_temp"],"mappings":"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"}
|