@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.
- package/dist/download-config-DemuQ3Jm.js +56 -0
- package/dist/download-config-DemuQ3Jm.js.map +1 -0
- package/dist/error-Cj8eUMrl.js +40 -0
- package/dist/error-Cj8eUMrl.js.map +1 -0
- package/dist/formatter-B9Bxn1k7.js +6 -0
- package/dist/formatter-B9Bxn1k7.js.map +1 -0
- package/dist/no-data-DkIt7Qt1.js +61 -0
- package/dist/no-data-DkIt7Qt1.js.map +1 -0
- package/dist/row-D4VOhcNI.js +34 -0
- package/dist/row-D4VOhcNI.js.map +1 -0
- package/dist/series-Bola3CmD.js +90 -0
- package/dist/series-Bola3CmD.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/shared-resize-observer.d.ts +12 -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/index.d.ts +2 -1
- package/dist/types/widgets/stores/types.d.ts +2 -0
- package/dist/types/widgets/stores/use-widget-selector.d.ts +35 -0
- package/dist/types/widgets/stores/widget-store-performance.test.d.ts +1 -0
- package/dist/types/widgets/stores/widget-store.d.ts +49 -27
- package/dist/types/widgets/table/types.d.ts +1 -1
- 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/use-widget-ref-BFazQvJK.js +22 -0
- package/dist/use-widget-ref-BFazQvJK.js.map +1 -0
- package/dist/use-widget-selector-DqRmWQ1K.js +12 -0
- package/dist/use-widget-selector-DqRmWQ1K.js.map +1 -0
- package/dist/widget-store-CIrb9RKP.js +263 -0
- package/dist/widget-store-CIrb9RKP.js.map +1 -0
- package/dist/widgets/actions.js +799 -817
- package/dist/widgets/actions.js.map +1 -1
- package/dist/widgets/bar.js +53 -47
- package/dist/widgets/bar.js.map +1 -1
- package/dist/widgets/category.js +261 -255
- package/dist/widgets/category.js.map +1 -1
- package/dist/widgets/echart.js +109 -99
- package/dist/widgets/echart.js.map +1 -1
- package/dist/widgets/error.js +1 -1
- package/dist/widgets/formula.js +71 -63
- package/dist/widgets/formula.js.map +1 -1
- package/dist/widgets/histogram.js +119 -80
- package/dist/widgets/histogram.js.map +1 -1
- package/dist/widgets/loader.js +53 -60
- package/dist/widgets/loader.js.map +1 -1
- package/dist/widgets/markdown.js +51 -50
- package/dist/widgets/markdown.js.map +1 -1
- package/dist/widgets/no-data.js +1 -1
- package/dist/widgets/pie.js +111 -99
- package/dist/widgets/pie.js.map +1 -1
- package/dist/widgets/range.js +146 -144
- package/dist/widgets/range.js.map +1 -1
- package/dist/widgets/scatterplot.js +50 -44
- package/dist/widgets/scatterplot.js.map +1 -1
- package/dist/widgets/skeleton-loader.js +18 -17
- package/dist/widgets/skeleton-loader.js.map +1 -1
- package/dist/widgets/spread.js +110 -94
- package/dist/widgets/spread.js.map +1 -1
- package/dist/widgets/stores.js +5 -2
- package/dist/widgets/stores.js.map +1 -1
- package/dist/widgets/table.js +422 -436
- package/dist/widgets/table.js.map +1 -1
- package/dist/widgets/timeseries.js +52 -46
- 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/dist/widgets/wrapper.js +156 -158
- package/dist/widgets/wrapper.js.map +1 -1
- package/dist/widgets.js +4 -4
- package/package.json +5 -4
- package/src/hooks/use-widget-ref.ts +3 -4
- package/src/widgets/README.md +3 -3
- package/src/widgets/actions/brush-toggle/brush-toggle.tsx +60 -79
- package/src/widgets/actions/brush-toggle/types.ts +8 -2
- package/src/widgets/actions/change-column/change-column.tsx +15 -15
- package/src/widgets/actions/change-column/sortable-column-item.tsx +3 -1
- package/src/widgets/actions/download/download.tsx +4 -3
- package/src/widgets/actions/fullscreen/fullscreen.tsx +7 -11
- package/src/widgets/actions/lock-selection/lock-selection.tsx +12 -15
- package/src/widgets/actions/relative-data/relative-data.tsx +22 -26
- package/src/widgets/actions/searcher/searcher-toggle.tsx +11 -12
- package/src/widgets/actions/searcher/searcher.tsx +20 -21
- package/src/widgets/actions/stack-toggle/stack-toggle.tsx +15 -21
- package/src/widgets/actions/zoom-toggle/zoom-toggle.tsx +27 -43
- package/src/widgets/bar/config.ts +22 -14
- package/src/widgets/category/category-ui.tsx +31 -27
- 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/echart-ui.test.tsx +20 -16
- package/src/widgets/echart/echart-ui.tsx +6 -12
- package/src/widgets/echart/echart.tsx +13 -27
- package/src/widgets/echart/shared-resize-observer.ts +45 -0
- package/src/widgets/echart/types.ts +2 -0
- package/src/widgets/error/error.tsx +7 -9
- package/src/widgets/formula/components/prefix.tsx +4 -6
- package/src/widgets/formula/components/row.tsx +4 -4
- package/src/widgets/formula/components/series.tsx +4 -6
- package/src/widgets/formula/components/suffix.tsx +4 -6
- package/src/widgets/formula/components/value.tsx +9 -16
- 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/loader/loader.tsx +31 -44
- package/src/widgets/markdown/markdown.tsx +4 -7
- package/src/widgets/no-data/no-data.tsx +7 -10
- package/src/widgets/pie/config.ts +17 -5
- package/src/widgets/range/components/range-item.tsx +20 -18
- package/src/widgets/scatterplot/config.ts +8 -3
- package/src/widgets/skeleton-loader/skeleton-loader.tsx +2 -5
- package/src/widgets/spread/components/max-value.tsx +14 -16
- package/src/widgets/spread/components/min-value.tsx +14 -16
- package/src/widgets/stores/index.ts +2 -1
- package/src/widgets/stores/types.ts +2 -0
- package/src/widgets/stores/use-widget-selector.ts +47 -0
- package/src/widgets/stores/widget-store-performance.test.ts +750 -0
- package/src/widgets/stores/widget-store.test.ts +81 -0
- package/src/widgets/stores/widget-store.ts +225 -44
- package/src/widgets/table/config.ts +0 -1
- package/src/widgets/table/hooks/use-pagination.ts +28 -52
- package/src/widgets/table/hooks/use-selection.ts +20 -24
- package/src/widgets/table/hooks/use-sort.ts +22 -39
- package/src/widgets/table/types.ts +1 -1
- 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/src/widgets/wrapper/wrapper-ui.tsx +12 -13
- package/src/widgets/wrapper/wrapper.tsx +4 -6
- package/dist/error-CEkRPccv.js +0 -39
- package/dist/error-CEkRPccv.js.map +0 -1
- package/dist/formatter-B1Xh8XDH.js +0 -5
- package/dist/formatter-B1Xh8XDH.js.map +0 -1
- package/dist/no-data-hR3KcJ-_.js +0 -60
- package/dist/no-data-hR3KcJ-_.js.map +0 -1
- package/dist/row-DTCV0Ocm.js +0 -35
- package/dist/row-DTCV0Ocm.js.map +0 -1
- package/dist/series-CYNOu2Ju.js +0 -91
- package/dist/series-CYNOu2Ju.js.map +0 -1
- package/dist/styles-C_8vOEep.js +0 -167
- package/dist/styles-C_8vOEep.js.map +0 -1
- package/dist/use-widget-ref-wtFLDFCD.js +0 -25
- package/dist/use-widget-ref-wtFLDFCD.js.map +0 -1
- package/dist/widget-store-CzDt8oSK.js +0 -163
- package/dist/widget-store-CzDt8oSK.js.map +0 -1
package/dist/widgets/bar.js
CHANGED
|
@@ -1,32 +1,38 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { c as
|
|
1
|
+
import { jsxs as f, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { c as k } from "react/compiler-runtime";
|
|
3
3
|
import "react";
|
|
4
4
|
import "echarts";
|
|
5
|
-
import "../widget-store-
|
|
5
|
+
import "../widget-store-CIrb9RKP.js";
|
|
6
6
|
import "zustand/shallow";
|
|
7
|
-
import { g as
|
|
8
|
-
import { m as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
import { g as w } from "../options-D9wflre6.js";
|
|
8
|
+
import { m as _ } from "../utils-BOhInag6.js";
|
|
9
|
+
import { c as S, f as v } from "../download-config-DemuQ3Jm.js";
|
|
10
|
+
import { g as C, h as L, n as u, a as A, d as I, e as M, c as N } from "../styles-Y8q7Jff3.js";
|
|
11
|
+
import { Box as l, Skeleton as o } from "@mui/material";
|
|
12
|
+
const K = S(v);
|
|
13
|
+
function Q(e) {
|
|
13
14
|
return {
|
|
14
15
|
type: "bar",
|
|
15
|
-
option: w(
|
|
16
|
-
formatter: e.formatter
|
|
16
|
+
option: _(w(e), T(e)),
|
|
17
|
+
formatter: e.formatter,
|
|
18
|
+
labelFormatter: e.labelFormatter
|
|
17
19
|
};
|
|
18
20
|
}
|
|
19
|
-
function
|
|
21
|
+
function T({
|
|
20
22
|
data: e = [],
|
|
21
23
|
theme: n,
|
|
22
|
-
formatter: i
|
|
24
|
+
formatter: i,
|
|
25
|
+
labelFormatter: s
|
|
23
26
|
}) {
|
|
24
|
-
const
|
|
25
|
-
let
|
|
27
|
+
const h = (e?.length ?? 0) > 1;
|
|
28
|
+
let c = 0, m = 1;
|
|
26
29
|
return {
|
|
27
|
-
legend:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
legend: M({
|
|
31
|
+
hasLegend: h,
|
|
32
|
+
labelFormatter: s
|
|
33
|
+
}),
|
|
34
|
+
grid: I(h, n),
|
|
35
|
+
xAxis: A({
|
|
30
36
|
type: "category",
|
|
31
37
|
axisLine: {
|
|
32
38
|
show: !1
|
|
@@ -38,11 +44,11 @@ function A({
|
|
|
38
44
|
padding: [parseInt(n.spacing(0.5)), 0, 0, 0],
|
|
39
45
|
margin: 0
|
|
40
46
|
}
|
|
41
|
-
},
|
|
47
|
+
}, s),
|
|
42
48
|
yAxis: {
|
|
43
49
|
type: "value",
|
|
44
|
-
min: (t) => (
|
|
45
|
-
max: (t) => (
|
|
50
|
+
min: (t) => (c = t.min < 0 ? u(t.min) : 0, c),
|
|
51
|
+
max: (t) => (m = t.max <= 0 ? 1 : u(t.max), m),
|
|
46
52
|
axisLabel: {
|
|
47
53
|
fontSize: n.typography.overlineDelicate.fontSize,
|
|
48
54
|
fontFamily: n.typography.overlineDelicate.fontFamily,
|
|
@@ -52,7 +58,7 @@ function A({
|
|
|
52
58
|
showMinLabel: !0,
|
|
53
59
|
verticalAlign: "bottom",
|
|
54
60
|
inside: !0,
|
|
55
|
-
formatter: (t) => t !==
|
|
61
|
+
formatter: (t) => t !== m && t !== c || t === 0 ? "" : i ? i(t) : String(t)
|
|
56
62
|
},
|
|
57
63
|
axisLine: {
|
|
58
64
|
show: !1
|
|
@@ -68,14 +74,14 @@ function A({
|
|
|
68
74
|
}
|
|
69
75
|
},
|
|
70
76
|
tooltip: {
|
|
71
|
-
position:
|
|
72
|
-
formatter:
|
|
73
|
-
const g = t.value,
|
|
77
|
+
position: L(n),
|
|
78
|
+
formatter: C((t) => {
|
|
79
|
+
const g = t.value, x = t.dimensionNames?.[t.encode?.y?.at(0) ?? 1], p = g[x ?? ""], d = typeof p == "number" && i ? i(p) : p ?? "", y = typeof t.marker == "string" ? t.marker : "", b = t.seriesName ? `${t.seriesName}: ` : "";
|
|
74
80
|
return {
|
|
75
|
-
name: t.name ?? "",
|
|
76
|
-
seriesName:
|
|
77
|
-
marker:
|
|
78
|
-
value:
|
|
81
|
+
name: s ? String(s(t.name ?? "")) : t.name ?? "",
|
|
82
|
+
seriesName: b,
|
|
83
|
+
marker: y,
|
|
84
|
+
value: d
|
|
79
85
|
};
|
|
80
86
|
})
|
|
81
87
|
},
|
|
@@ -103,7 +109,7 @@ const r = {
|
|
|
103
109
|
}
|
|
104
110
|
},
|
|
105
111
|
graph: {
|
|
106
|
-
...
|
|
112
|
+
...N.graph,
|
|
107
113
|
grid: {
|
|
108
114
|
display: "flex",
|
|
109
115
|
justifyContent: "space-between",
|
|
@@ -114,10 +120,10 @@ const r = {
|
|
|
114
120
|
}
|
|
115
121
|
}
|
|
116
122
|
};
|
|
117
|
-
function
|
|
118
|
-
const e =
|
|
123
|
+
function R() {
|
|
124
|
+
const e = k(2);
|
|
119
125
|
let n;
|
|
120
|
-
e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (n = /* @__PURE__ */
|
|
126
|
+
e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (n = /* @__PURE__ */ f(l, { sx: r.skeleton.graph.grid, children: [
|
|
121
127
|
/* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
|
|
122
128
|
/* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "40%" }),
|
|
123
129
|
/* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "60%" }),
|
|
@@ -125,47 +131,47 @@ function K() {
|
|
|
125
131
|
/* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "80%" })
|
|
126
132
|
] }), e[0] = n) : n = e[0];
|
|
127
133
|
let i;
|
|
128
|
-
return e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */
|
|
134
|
+
return e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ f(l, { sx: r.skeleton.graph.container, children: [
|
|
129
135
|
n,
|
|
130
|
-
/* @__PURE__ */ a(
|
|
136
|
+
/* @__PURE__ */ a(l, { sx: {
|
|
131
137
|
display: "flex",
|
|
132
138
|
alignItems: "center",
|
|
133
|
-
gap:
|
|
134
|
-
height:
|
|
135
|
-
}, children: Array(2).fill(0).map(
|
|
139
|
+
gap: O,
|
|
140
|
+
height: F
|
|
141
|
+
}, children: Array(2).fill(0).map(j) })
|
|
136
142
|
] }), e[1] = i) : i = e[1], i;
|
|
137
143
|
}
|
|
138
|
-
function
|
|
139
|
-
return /* @__PURE__ */
|
|
144
|
+
function j(e, n) {
|
|
145
|
+
return /* @__PURE__ */ f(l, { sx: {
|
|
140
146
|
display: "flex",
|
|
141
147
|
alignItems: "center",
|
|
142
|
-
gap:
|
|
148
|
+
gap: D
|
|
143
149
|
}, children: [
|
|
144
150
|
/* @__PURE__ */ a(o, { variant: "circular", width: 8, height: 8 }),
|
|
145
151
|
/* @__PURE__ */ a(o, { width: 48, height: 8 })
|
|
146
152
|
] }, `skeleton-${n}`);
|
|
147
153
|
}
|
|
148
|
-
function
|
|
154
|
+
function D(e) {
|
|
149
155
|
const {
|
|
150
156
|
spacing: n
|
|
151
157
|
} = e;
|
|
152
158
|
return n(1.5);
|
|
153
159
|
}
|
|
154
|
-
function
|
|
160
|
+
function F(e) {
|
|
155
161
|
const {
|
|
156
162
|
spacing: n
|
|
157
163
|
} = e;
|
|
158
164
|
return n(5);
|
|
159
165
|
}
|
|
160
|
-
function
|
|
166
|
+
function O(e) {
|
|
161
167
|
const {
|
|
162
168
|
spacing: n
|
|
163
169
|
} = e;
|
|
164
170
|
return n(2);
|
|
165
171
|
}
|
|
166
172
|
export {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
173
|
+
R as BarSkeleton,
|
|
174
|
+
Q as barConfig,
|
|
175
|
+
K as barDownloadConfig
|
|
170
176
|
};
|
|
171
177
|
//# sourceMappingURL=bar.js.map
|
package/dist/widgets/bar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar.js","sources":["../../src/widgets/bar/config.ts","../../src/widgets/bar/style.ts","../../src/widgets/bar/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type { BarConfig, BarWidgetConfig, BarWidgetData } from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n createTooltipFormatter,\n createChartDownloadConfig,\n niceNum,\n} from '../utils/chart-config'\n\nexport const barDownloadConfig = createChartDownloadConfig<BarWidgetData>(\n flattenObjectArrayToCSV,\n)\n\n/**\n * Generates ECharts configuration for bar chart widgets (vertical and horizontal), including axis, tooltip, legend, and series options styled with the CARTO theme.\n *\n * @param props - Bar chart configuration including data and theme.\n * @returns Widget config with ECharts option object.\n */\nexport function barConfig(props: BarConfig): BarWidgetConfig {\n return {\n type: 'bar',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n formatter: props.formatter,\n }\n}\n\nfunction getOption({\n data = [],\n theme,\n formatter,\n}: BarConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n let niceMin = 0\n let niceMax = 1\n\n return {\n legend: buildLegendConfig(hasLegend),\n grid: buildGridConfig(hasLegend, theme),\n xAxis: {\n type: 'category',\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [parseInt(theme.spacing(0.5)), 0, 0, 0],\n margin: 0,\n },\n },\n yAxis: {\n type: 'value' as const,\n min: (extent: { min: number }) => {\n niceMin = extent.min < 0 ? niceNum(extent.min) : 0\n return niceMin\n },\n max: (extent: { min: number; max: number }) => {\n niceMax = extent.max <= 0 ? 1 : niceNum(extent.max)\n return niceMax\n },\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n margin: parseInt(theme.spacing(1)),\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n verticalAlign: 'bottom' as const,\n inside: true,\n formatter: (value: number) => {\n if (value !== niceMax && value !== niceMin) return ''\n if (value === 0) return ''\n return formatter ? formatter(value) : String(value)\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n tooltip: {\n position: createTooltipPositioner(theme),\n 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 series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'bar',\n barMaxWidth: 100,\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 item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(12),\n\n '& + &': {\n marginLeft: ({ spacing }) => spacing(1),\n },\n },\n graph: {\n ...baseSkeletonStyles.graph,\n grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n mask: {\n gray: {\n backgroundColor: ({ palette }) => palette.grey[100],\n },\n white: {\n backgroundColor: ({ palette }) => palette.common.white,\n },\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function BarSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n }}\n >\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={`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":["barDownloadConfig","createChartDownloadConfig","flattenObjectArrayToCSV","barConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","formatter","data","theme","hasLegend","length","niceMin","niceMax","legend","buildLegendConfig","grid","buildGridConfig","xAxis","axisLine","show","axisTick","axisLabel","padding","parseInt","spacing","margin","yAxis","min","extent","niceNum","max","fontSize","typography","overlineDelicate","fontFamily","showMaxLabel","showMinLabel","verticalAlign","inside","value","String","splitLine","lineStyle","color","palette","black","tooltip","position","createTooltipPositioner","createTooltipFormatter","item","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","series","map","_","datasetIndex","barMaxWidth","emphasis","focus","styles","skeleton","flex","maxWidth","marginLeft","graph","baseSkeletonStyles","display","justifyContent","alignItems","width","BarSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","container","gap","_temp","height","_temp2","Array","fill","_temp4","i","jsxs","_temp3","spacing_1","spacing_0"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bar.js","sources":["../../src/widgets/bar/config.ts","../../src/widgets/bar/style.ts","../../src/widgets/bar/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type { BarConfig, BarWidgetConfig, BarWidgetData } from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n createTooltipFormatter,\n createChartDownloadConfig,\n applyXAxisFormatter,\n niceNum,\n} from '../utils/chart-config'\n\nexport const barDownloadConfig = createChartDownloadConfig<BarWidgetData>(\n flattenObjectArrayToCSV,\n)\n\n/**\n * Generates ECharts configuration for bar chart widgets (vertical and horizontal), including axis, tooltip, legend, and series options styled with the CARTO theme.\n *\n * @param props - Bar chart configuration including data and theme.\n * @returns Widget config with ECharts option object.\n */\nexport function barConfig(props: BarConfig): BarWidgetConfig {\n return {\n type: 'bar',\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}: BarConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n let niceMin = 0\n let niceMax = 1\n\n return {\n legend: buildLegendConfig({ hasLegend, labelFormatter }),\n grid: buildGridConfig(hasLegend, theme),\n xAxis: applyXAxisFormatter(\n {\n type: 'category',\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [parseInt(theme.spacing(0.5)), 0, 0, 0],\n margin: 0,\n },\n },\n labelFormatter,\n ),\n yAxis: {\n type: 'value' as const,\n min: (extent: { min: number }) => {\n niceMin = extent.min < 0 ? niceNum(extent.min) : 0\n return niceMin\n },\n max: (extent: { min: number; max: number }) => {\n niceMax = extent.max <= 0 ? 1 : niceNum(extent.max)\n return niceMax\n },\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n margin: parseInt(theme.spacing(1)),\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n verticalAlign: 'bottom' as const,\n inside: true,\n formatter: (value: number) => {\n if (value !== niceMax && value !== niceMin) return ''\n if (value === 0) return ''\n return formatter ? formatter(value) : String(value)\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n tooltip: {\n position: createTooltipPositioner(theme),\n 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 series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'bar',\n barMaxWidth: 100,\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 item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(12),\n\n '& + &': {\n marginLeft: ({ spacing }) => spacing(1),\n },\n },\n graph: {\n ...baseSkeletonStyles.graph,\n grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n mask: {\n gray: {\n backgroundColor: ({ palette }) => palette.grey[100],\n },\n white: {\n backgroundColor: ({ palette }) => palette.common.white,\n },\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function BarSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n }}\n >\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={`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":["barDownloadConfig","createChartDownloadConfig","flattenObjectArrayToCSV","barConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","formatter","labelFormatter","data","theme","hasLegend","length","niceMin","niceMax","legend","buildLegendConfig","grid","buildGridConfig","xAxis","applyXAxisFormatter","axisLine","show","axisTick","axisLabel","padding","parseInt","spacing","margin","yAxis","min","extent","niceNum","max","fontSize","typography","overlineDelicate","fontFamily","showMaxLabel","showMinLabel","verticalAlign","inside","value","String","splitLine","lineStyle","color","palette","black","tooltip","position","createTooltipPositioner","createTooltipFormatter","item","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","series","map","_","datasetIndex","barMaxWidth","emphasis","focus","styles","skeleton","flex","maxWidth","marginLeft","graph","baseSkeletonStyles","display","justifyContent","alignItems","width","BarSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","container","gap","_temp","height","_temp2","Array","fill","_temp4","i","jsxs","_temp3","spacing_1","spacing_0"],"mappings":"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"}
|