@carto/ps-react-ui 4.4.0 → 4.4.1

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.
@@ -1,6 +1,6 @@
1
1
  import { EchartOptionsProps } from './types';
2
2
  import { Theme } from '@mui/material';
3
- export declare function mergeEchartWidgetConfig<T extends EchartOptionsProps>(...options: [T | undefined, T | undefined]): T;
3
+ export declare function mergeEchartWidgetConfig<T extends EchartOptionsProps>(optionA: T | undefined, optionB: T | undefined, customMergeFn?: (key: string) => ((a: unknown, b: unknown) => unknown) | undefined): T;
4
4
  export declare function getEChartZoomConfig({ start, end }?: {
5
5
  start: number;
6
6
  end: number;
@@ -1,87 +1,106 @@
1
1
  import { d } from "./cjs-D4KH3azB.js";
2
2
  const m = "stacked";
3
- function h(...o) {
4
- return d(o[0] ?? {}, o[1] ?? {}, {
5
- customMerge: (e) => {
6
- if (e === "color")
7
- return (i, I) => I;
8
- if (e === "series")
9
- return (i, I) => i.length ? I?.map((r, l) => {
10
- const g = i?.[l] ?? {};
11
- return d(g, r);
12
- }) : i;
3
+ function S(o, i, n) {
4
+ return d(o ?? {}, i ?? {}, {
5
+ customMerge: (r) => {
6
+ const l = n?.(r);
7
+ if (l) return l;
8
+ if (r === "color")
9
+ return (t, e) => e;
10
+ if (r === "axisLabel")
11
+ return (t, e) => {
12
+ const g = {
13
+ ...t,
14
+ ...e
15
+ };
16
+ if (typeof t?.formatter == "function" && typeof e?.formatter == "function") {
17
+ const a = t.formatter, c = e.formatter;
18
+ g.formatter = (I) => a(I) === "" ? "" : c(I);
19
+ }
20
+ return g;
21
+ };
22
+ if (r === "series")
23
+ return (t, e) => {
24
+ const g = Math.max(t?.length ?? 0, e?.length ?? 0);
25
+ return Array.from({
26
+ length: g
27
+ }, (a, c) => {
28
+ const I = t?.[c] ?? {}, s = e?.[c] ?? {};
29
+ return d(I, s);
30
+ });
31
+ };
13
32
  }
14
33
  });
15
34
  }
16
35
  function p({
17
36
  start: o,
18
- end: e
37
+ end: i
19
38
  } = {
20
39
  start: 0,
21
40
  end: 100
22
41
  }, {
23
- inside: i = !0,
24
- xSlider: I = !0,
25
- ySlider: a = !1,
26
- showSliders: r = !0,
27
- xAxisLabelFormatter: l,
42
+ inside: n = !0,
43
+ xSlider: r = !0,
44
+ ySlider: l = !1,
45
+ showSliders: t = !0,
46
+ xAxisLabelFormatter: e,
28
47
  bottomOffset: g = 0
29
- } = {}, t) {
30
- const n = t ? s(t) : {};
48
+ } = {}, a) {
49
+ const I = a ? y(a) : {};
31
50
  return {
32
- dataZoom: [i && {
51
+ dataZoom: [n && {
33
52
  throttle: 0,
34
53
  type: "inside",
35
- xAxisIndex: I ? [0] : [],
36
- yAxisIndex: a ? [0] : [],
54
+ xAxisIndex: r ? [0] : [],
55
+ yAxisIndex: l ? [0] : [],
37
56
  show: !0,
38
57
  zoomLock: !1,
39
58
  start: o,
40
- end: e
41
- }, i && a && {
59
+ end: i
60
+ }, n && l && {
42
61
  throttle: 0,
43
62
  type: "inside",
44
63
  show: !0,
45
64
  zoomLock: !1,
46
65
  start: o,
47
- end: e,
66
+ end: i,
48
67
  orientation: "vertical"
49
- }, I && {
68
+ }, r && {
50
69
  throttle: 0,
51
70
  type: "slider",
52
71
  xAxisIndex: [0],
53
72
  bottom: g,
54
- height: parseInt(t?.spacing?.(4) ?? "32"),
55
- show: r,
73
+ height: parseInt(a?.spacing?.(4) ?? "32"),
74
+ show: t,
56
75
  zoomLock: !1,
57
76
  start: o,
58
- end: e,
59
- labelFormatter: l,
77
+ end: i,
78
+ labelFormatter: e,
60
79
  showDetail: !1,
61
- ...n,
80
+ ...I,
62
81
  brushSelect: !1,
63
82
  moveHandleSize: 8,
64
83
  handleSize: "100%",
65
84
  handleIcon: "image://data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOSIgaGVpZ2h0PSIzNiIgdmlld0JveD0iMCAwIDkgMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iLTAuNSIgd2lkdGg9IjgiIGhlaWdodD0iMTgiIHJ4PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDI3KSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzM1OEJFNyIvPgo8cmVjdCB3aWR0aD0iMyIgaGVpZ2h0PSIyIiByeD0iMSIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMyAyMykiIGZpbGw9IiMzNThCRTciLz4KPHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMiIgcng9IjEiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDMgMTkpIiBmaWxsPSIjMzU4QkU3Ii8+CjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHJ4PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAzIDE1KSIgZmlsbD0iIzM1OEJFNyIvPgo8L3N2Zz4="
66
- }, a && {
85
+ }, l && {
67
86
  throttle: 0,
68
87
  type: "slider",
69
- left: parseInt(t?.spacing?.(6) ?? "48"),
70
- width: parseInt(t?.spacing?.(4) ?? "32"),
88
+ left: parseInt(a?.spacing?.(6) ?? "48"),
89
+ width: parseInt(a?.spacing?.(4) ?? "32"),
71
90
  yAxisIndex: [0],
72
- show: r,
91
+ show: t,
73
92
  zoomLock: !1,
74
93
  start: o,
75
- end: e,
76
- ...n,
94
+ end: i,
95
+ ...I,
77
96
  brushSelect: !1,
78
97
  moveHandleSize: 8,
79
98
  handleSize: "100%",
80
99
  handleIcon: "image://data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iOSIgdmlld0JveD0iMCAwIDM2IDkiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iOCIgaGVpZ2h0PSIxOCIgcng9IjQiIHRyYW5zZm9ybT0icm90YXRlKC05MCAwLjUgMC41KSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzM1OEJFNyIvPgo8cmVjdCB3aWR0aD0iMyIgaGVpZ2h0PSIyIiByeD0iMSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDEzIDYpIiBmaWxsPSIjMzU4QkU3Ii8+CjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHJ4PSIxIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAgMTcgNikiIGZpbGw9IiMzNThCRTciLz4KPHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMiIgcng9IjEiIHRyYW5zZm9ybT0icm90YXRlKC05MCAyMSA2KSIgZmlsbD0iIzM1OEJFNyIvPgo8L3N2Zz4="
81
- }].filter((c) => !!c)
100
+ }].filter((s) => !!s)
82
101
  };
83
102
  }
84
- function s(o) {
103
+ function y(o) {
85
104
  return {
86
105
  fillerColor: "rgba(53, 139, 231, 0.25)",
87
106
  borderColor: "rgba(53, 139, 231, 0.3)",
@@ -122,30 +141,30 @@ function s(o) {
122
141
  }
123
142
  };
124
143
  }
125
- function z({
144
+ function b({
126
145
  brushType: o = "lineX",
127
- brushMode: e = "single",
128
- xAxisIndex: i = 0
146
+ brushMode: i = "single",
147
+ xAxisIndex: n = 0
129
148
  } = {}) {
130
149
  return {
131
150
  brush: {
132
151
  toolbox: ["lineX", "clear"],
133
152
  brushType: o,
134
- brushMode: e,
135
- xAxisIndex: i
153
+ brushMode: i,
154
+ xAxisIndex: n
136
155
  }
137
156
  };
138
157
  }
139
- function b(o = m) {
158
+ function u(o = m) {
140
159
  return {
141
160
  stack: o
142
161
  };
143
162
  }
144
163
  export {
145
164
  m as D,
146
- b as a,
165
+ u as a,
147
166
  p as b,
148
- z as g,
149
- h as m
167
+ b as g,
168
+ S as m
150
169
  };
151
- //# sourceMappingURL=utils-Cx3gYUcL.js.map
170
+ //# sourceMappingURL=utils-BOhInag6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-BOhInag6.js","sources":["../src/widgets/echart/const.ts","../src/widgets/echart/utils.ts"],"sourcesContent":["export const DEFAULT_STACK_GROUP = 'stacked'\n","import deepmerge from 'deepmerge'\nimport type { EchartOptionsProps } from './types'\nimport type { Theme } from '@mui/material'\nimport { DEFAULT_STACK_GROUP } from './const'\n\nexport function mergeEchartWidgetConfig<T extends EchartOptionsProps>(\n optionA: T | undefined,\n optionB: T | undefined,\n customMergeFn?: (\n key: string,\n ) => ((a: unknown, b: unknown) => unknown) | undefined,\n): T {\n return deepmerge(optionA ?? {}, optionB ?? {}, {\n customMerge: (key) => {\n const externalMerge = customMergeFn?.(key)\n if (externalMerge) return externalMerge\n\n if (key === 'color') {\n return (_, b: T['color']) => b\n }\n if (key === 'axisLabel') {\n return (\n a: Record<string, unknown> | undefined,\n b: Record<string, unknown> | undefined,\n ) => {\n const merged = { ...a, ...b }\n if (\n typeof a?.formatter === 'function' &&\n typeof b?.formatter === 'function'\n ) {\n const baseFormatter = a.formatter as (value: unknown) => unknown\n const customFormatter = b.formatter as (value: unknown) => unknown\n merged.formatter = (value: unknown) => {\n const baseResult = baseFormatter(value)\n if (baseResult === '') return ''\n return customFormatter(value)\n }\n }\n return merged\n }\n }\n if (key === 'series') {\n return (a: T['series'][], b: T['series'][]) => {\n const maxLength = Math.max(a?.length ?? 0, b?.length ?? 0)\n return Array.from({ length: maxLength }, (_, index) => {\n const aItem = a?.[index] ?? {}\n const bItem = b?.[index] ?? {}\n return deepmerge(aItem, bItem as object)\n })\n }\n }\n },\n }) as T\n}\n\nexport function getEChartZoomConfig(\n { start, end }: { start: number; end: number } = { start: 0, end: 100 },\n {\n inside = true,\n xSlider = true,\n ySlider = false,\n showSliders = true,\n xAxisLabelFormatter,\n bottomOffset = 0,\n } = {} as {\n inside?: boolean\n xSlider?: boolean\n ySlider?: boolean\n showSliders?: boolean\n xAxisLabelFormatter?: (value: number) => string\n bottomOffset?: number\n },\n theme?: Theme,\n) {\n const zoom = true\n const sliderStyles = theme ? getEChartZoomSliderStyles(theme) : {}\n\n return {\n dataZoom: [\n inside && {\n throttle: 0,\n type: 'inside',\n xAxisIndex: xSlider ? [0] : [],\n yAxisIndex: ySlider ? [0] : [],\n show: zoom,\n zoomLock: !zoom,\n start,\n end,\n },\n inside &&\n ySlider && {\n throttle: 0,\n type: 'inside',\n show: zoom,\n zoomLock: !zoom,\n start,\n end,\n orientation: 'vertical',\n },\n xSlider && {\n throttle: 0,\n type: 'slider',\n xAxisIndex: [0],\n bottom: bottomOffset,\n height: parseInt(theme?.spacing?.(4) ?? '32'),\n show: zoom && showSliders,\n zoomLock: !zoom,\n start,\n end,\n labelFormatter: xAxisLabelFormatter,\n showDetail: false,\n ...sliderStyles,\n brushSelect: false,\n moveHandleSize: 8,\n handleSize: '100%',\n handleIcon:\n 'image://data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOSIgaGVpZ2h0PSIzNiIgdmlld0JveD0iMCAwIDkgMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iLTAuNSIgd2lkdGg9IjgiIGhlaWdodD0iMTgiIHJ4PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDI3KSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzM1OEJFNyIvPgo8cmVjdCB3aWR0aD0iMyIgaGVpZ2h0PSIyIiByeD0iMSIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMyAyMykiIGZpbGw9IiMzNThCRTciLz4KPHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMiIgcng9IjEiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDMgMTkpIiBmaWxsPSIjMzU4QkU3Ii8+CjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHJ4PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAzIDE1KSIgZmlsbD0iIzM1OEJFNyIvPgo8L3N2Zz4=',\n },\n ySlider && {\n throttle: 0,\n type: 'slider',\n left: parseInt(theme?.spacing?.(6) ?? '48'),\n width: parseInt(theme?.spacing?.(4) ?? '32'),\n yAxisIndex: [0],\n show: zoom && showSliders,\n zoomLock: !zoom,\n start,\n end,\n ...sliderStyles,\n brushSelect: false,\n moveHandleSize: 8,\n handleSize: '100%',\n handleIcon:\n 'image://data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iOSIgdmlld0JveD0iMCAwIDM2IDkiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iOCIgaGVpZ2h0PSIxOCIgcng9IjQiIHRyYW5zZm9ybT0icm90YXRlKC05MCAwLjUgMC41KSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzM1OEJFNyIvPgo8cmVjdCB3aWR0aD0iMyIgaGVpZ2h0PSIyIiByeD0iMSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDEzIDYpIiBmaWxsPSIjMzU4QkU3Ii8+CjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHJ4PSIxIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAgMTcgNikiIGZpbGw9IiMzNThCRTciLz4KPHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMiIgcng9IjEiIHRyYW5zZm9ybT0icm90YXRlKC05MCAyMSA2KSIgZmlsbD0iIzM1OEJFNyIvPgo8L3N2Zz4=',\n },\n ].filter((d) => !!d),\n }\n}\n\nfunction getEChartZoomSliderStyles(theme: Theme) {\n return {\n fillerColor: 'rgba(53, 139, 231, 0.25)',\n borderColor: 'rgba(53, 139, 231, 0.3)',\n borderWidth: 0.5,\n backgroundColor: 'transparent',\n borderRadius: 4,\n dataBackground: {\n lineStyle: {\n opacity: 0,\n },\n areaStyle: {\n opacity: 1,\n color: theme.palette.secondary.main,\n },\n },\n selectedDataBackground: {\n lineStyle: {\n opacity: 0,\n },\n areaStyle: {\n opacity: 1,\n color: theme.palette.secondary.main,\n },\n },\n handleStyle: {\n color: theme.palette.common.white,\n borderColor: 'rgba(3, 111, 226, 0.08)',\n borderWidth: 1,\n shadowBlur: 3,\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n shadowOffsetX: 0,\n shadowOffsetY: 1,\n },\n textStyle: {\n color: theme.palette.black[60],\n fontSize: parseInt(theme.typography.overlineDelicate.fontSize as string),\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n },\n } as const\n}\n\nexport function getEChartBrushConfig(\n { brushType = 'lineX', brushMode = 'single', xAxisIndex = 0 } = {} as {\n brushType?: string\n brushMode?: string\n xAxisIndex?: number\n throttleType?: string\n throttleDelay?: number\n },\n) {\n return {\n brush: {\n toolbox: ['lineX', 'clear'],\n brushType,\n brushMode,\n xAxisIndex,\n },\n }\n}\n\nexport function getEChartStackConfig(stackGroup: string = DEFAULT_STACK_GROUP) {\n return { stack: stackGroup }\n}\n"],"names":["DEFAULT_STACK_GROUP","mergeEchartWidgetConfig","optionA","optionB","customMergeFn","deepmerge","customMerge","key","externalMerge","_","b","a","merged","formatter","baseFormatter","customFormatter","value","maxLength","Math","max","length","Array","from","index","aItem","bItem","getEChartZoomConfig","start","end","inside","xSlider","ySlider","showSliders","xAxisLabelFormatter","bottomOffset","theme","sliderStyles","getEChartZoomSliderStyles","dataZoom","throttle","type","xAxisIndex","yAxisIndex","show","zoom","zoomLock","orientation","bottom","height","parseInt","spacing","labelFormatter","showDetail","brushSelect","moveHandleSize","handleSize","handleIcon","left","width","filter","d","fillerColor","borderColor","borderWidth","backgroundColor","borderRadius","dataBackground","lineStyle","opacity","areaStyle","color","palette","secondary","main","selectedDataBackground","handleStyle","common","white","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","textStyle","black","fontSize","typography","overlineDelicate","fontFamily","getEChartBrushConfig","brushType","brushMode","brush","toolbox","getEChartStackConfig","stackGroup","stack"],"mappings":"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"}
@@ -10,7 +10,7 @@ import { a as Zn, d as Hn } from "../exports-Cr43OCul.js";
10
10
  import "../lasso-tool-BYbxrJ-7.js";
11
11
  import "../cjs-D4KH3azB.js";
12
12
  import { T as se } from "../tooltip-BDnrRKrp.js";
13
- import { b as et, a as tt, D as nt, g as Te } from "../utils-Cx3gYUcL.js";
13
+ import { b as et, a as tt, D as nt, g as Te } from "../utils-BOhInag6.js";
14
14
  import { useSensors as ot, useSensor as _e, PointerSensor as lt, KeyboardSensor as st, DndContext as rt, closestCenter as it } from "@dnd-kit/core";
15
15
  import { useSortable as ct, sortableKeyboardCoordinates as at, arrayMove as dt, SortableContext as ut, verticalListSortingStrategy as ft } from "@dnd-kit/sortable";
16
16
  import { CSS as gt } from "@dnd-kit/utilities";
@@ -5,7 +5,7 @@ import "echarts";
5
5
  import "../widget-store-CzDt8oSK.js";
6
6
  import "zustand/shallow";
7
7
  import { g as _ } from "../options-D9wflre6.js";
8
- import { m as S } from "../utils-Cx3gYUcL.js";
8
+ import { m as S } from "../utils-BOhInag6.js";
9
9
  import { f as v, c as L, a as C, n as u, b as T, d as I, e as N } from "../styles-CAroD5Rc.js";
10
10
  import { Box as s, Skeleton as o } from "@mui/material";
11
11
  import "@mui/icons-material";
@@ -6,7 +6,7 @@ import { u as D } from "../use-widget-ref-wtFLDFCD.js";
6
6
  import { u as b } from "../widget-store-CzDt8oSK.js";
7
7
  import { useShallow as y } from "zustand/shallow";
8
8
  import { g as Q } from "../options-D9wflre6.js";
9
- import { g as V, a as X, b as Y, m as p } from "../utils-Cx3gYUcL.js";
9
+ import { g as V, a as X, b as Y, m as p } from "../utils-BOhInag6.js";
10
10
  function H(t) {
11
11
  const e = U(21), {
12
12
  id: s,
@@ -5,7 +5,7 @@ import "echarts";
5
5
  import "../widget-store-CzDt8oSK.js";
6
6
  import "zustand/shallow";
7
7
  import { g as _ } from "../options-D9wflre6.js";
8
- import { m as k } from "../utils-Cx3gYUcL.js";
8
+ import { m as k } from "../utils-BOhInag6.js";
9
9
  import { f as S, c as L, a as C, n as m, b as v, d as I, e as N } from "../styles-CAroD5Rc.js";
10
10
  import { Box as c, Skeleton as u } from "@mui/material";
11
11
  import "@mui/icons-material";
@@ -5,7 +5,7 @@ import "echarts";
5
5
  import "../widget-store-CzDt8oSK.js";
6
6
  import "zustand/shallow";
7
7
  import { g as w } from "../options-D9wflre6.js";
8
- import { m as I } from "../utils-Cx3gYUcL.js";
8
+ import { m as I } from "../utils-BOhInag6.js";
9
9
  import { f as C, c as k, b as j, d as A, e as O } from "../styles-CAroD5Rc.js";
10
10
  import { Box as d, Skeleton as a } from "@mui/material";
11
11
  import "@mui/icons-material";
@@ -5,7 +5,7 @@ import "echarts";
5
5
  import "../widget-store-CzDt8oSK.js";
6
6
  import "zustand/shallow";
7
7
  import { g as w } from "../options-D9wflre6.js";
8
- import { m as S } from "../utils-Cx3gYUcL.js";
8
+ import { m as S } from "../utils-BOhInag6.js";
9
9
  import { s as v, c as k, g as L, d as I, e as _ } from "../styles-CAroD5Rc.js";
10
10
  import { Box as s, Skeleton as p } from "@mui/material";
11
11
  import "@mui/icons-material";
@@ -5,7 +5,7 @@ import "echarts";
5
5
  import "../widget-store-CzDt8oSK.js";
6
6
  import "zustand/shallow";
7
7
  import { g as k } from "../options-D9wflre6.js";
8
- import { m as w } from "../utils-Cx3gYUcL.js";
8
+ import { m as w } from "../utils-BOhInag6.js";
9
9
  import { f as v, c as L, g as I, b as C, d as S, e as _ } from "../styles-CAroD5Rc.js";
10
10
  import { Box as s, Skeleton as o } from "@mui/material";
11
11
  import "@mui/icons-material";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carto/ps-react-ui",
3
- "version": "4.4.0",
3
+ "version": "4.4.1",
4
4
  "description": "CARTO's Professional Service React Material library",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -4,22 +4,49 @@ import type { Theme } from '@mui/material'
4
4
  import { DEFAULT_STACK_GROUP } from './const'
5
5
 
6
6
  export function mergeEchartWidgetConfig<T extends EchartOptionsProps>(
7
- ...options: [T | undefined, T | undefined]
7
+ optionA: T | undefined,
8
+ optionB: T | undefined,
9
+ customMergeFn?: (
10
+ key: string,
11
+ ) => ((a: unknown, b: unknown) => unknown) | undefined,
8
12
  ): T {
9
- return deepmerge(options[0] ?? {}, options[1] ?? {}, {
13
+ return deepmerge(optionA ?? {}, optionB ?? {}, {
10
14
  customMerge: (key) => {
15
+ const externalMerge = customMergeFn?.(key)
16
+ if (externalMerge) return externalMerge
17
+
11
18
  if (key === 'color') {
12
19
  return (_, b: T['color']) => b
13
20
  }
21
+ if (key === 'axisLabel') {
22
+ return (
23
+ a: Record<string, unknown> | undefined,
24
+ b: Record<string, unknown> | undefined,
25
+ ) => {
26
+ const merged = { ...a, ...b }
27
+ if (
28
+ typeof a?.formatter === 'function' &&
29
+ typeof b?.formatter === 'function'
30
+ ) {
31
+ const baseFormatter = a.formatter as (value: unknown) => unknown
32
+ const customFormatter = b.formatter as (value: unknown) => unknown
33
+ merged.formatter = (value: unknown) => {
34
+ const baseResult = baseFormatter(value)
35
+ if (baseResult === '') return ''
36
+ return customFormatter(value)
37
+ }
38
+ }
39
+ return merged
40
+ }
41
+ }
14
42
  if (key === 'series') {
15
43
  return (a: T['series'][], b: T['series'][]) => {
16
- if (!a.length) return a // If there is no series in a, return a as is
17
-
18
- const mergedSeries = b?.map((bItem, index) => {
44
+ const maxLength = Math.max(a?.length ?? 0, b?.length ?? 0)
45
+ return Array.from({ length: maxLength }, (_, index) => {
19
46
  const aItem = a?.[index] ?? {}
47
+ const bItem = b?.[index] ?? {}
20
48
  return deepmerge(aItem, bItem as object)
21
49
  })
22
- return mergedSeries
23
50
  }
24
51
  }
25
52
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils-Cx3gYUcL.js","sources":["../src/widgets/echart/const.ts","../src/widgets/echart/utils.ts"],"sourcesContent":["export const DEFAULT_STACK_GROUP = 'stacked'\n","import deepmerge from 'deepmerge'\nimport type { EchartOptionsProps } from './types'\nimport type { Theme } from '@mui/material'\nimport { DEFAULT_STACK_GROUP } from './const'\n\nexport function mergeEchartWidgetConfig<T extends EchartOptionsProps>(\n ...options: [T | undefined, T | undefined]\n): T {\n return deepmerge(options[0] ?? {}, options[1] ?? {}, {\n customMerge: (key) => {\n if (key === 'color') {\n return (_, b: T['color']) => b\n }\n if (key === 'series') {\n return (a: T['series'][], b: T['series'][]) => {\n if (!a.length) return a // If there is no series in a, return a as is\n\n const mergedSeries = b?.map((bItem, index) => {\n const aItem = a?.[index] ?? {}\n return deepmerge(aItem, bItem as object)\n })\n return mergedSeries\n }\n }\n },\n }) as T\n}\n\nexport function getEChartZoomConfig(\n { start, end }: { start: number; end: number } = { start: 0, end: 100 },\n {\n inside = true,\n xSlider = true,\n ySlider = false,\n showSliders = true,\n xAxisLabelFormatter,\n bottomOffset = 0,\n } = {} as {\n inside?: boolean\n xSlider?: boolean\n ySlider?: boolean\n showSliders?: boolean\n xAxisLabelFormatter?: (value: number) => string\n bottomOffset?: number\n },\n theme?: Theme,\n) {\n const zoom = true\n const sliderStyles = theme ? getEChartZoomSliderStyles(theme) : {}\n\n return {\n dataZoom: [\n inside && {\n throttle: 0,\n type: 'inside',\n xAxisIndex: xSlider ? [0] : [],\n yAxisIndex: ySlider ? [0] : [],\n show: zoom,\n zoomLock: !zoom,\n start,\n end,\n },\n inside &&\n ySlider && {\n throttle: 0,\n type: 'inside',\n show: zoom,\n zoomLock: !zoom,\n start,\n end,\n orientation: 'vertical',\n },\n xSlider && {\n throttle: 0,\n type: 'slider',\n xAxisIndex: [0],\n bottom: bottomOffset,\n height: parseInt(theme?.spacing?.(4) ?? '32'),\n show: zoom && showSliders,\n zoomLock: !zoom,\n start,\n end,\n labelFormatter: xAxisLabelFormatter,\n showDetail: false,\n ...sliderStyles,\n brushSelect: false,\n moveHandleSize: 8,\n handleSize: '100%',\n handleIcon:\n 'image://data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOSIgaGVpZ2h0PSIzNiIgdmlld0JveD0iMCAwIDkgMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iLTAuNSIgd2lkdGg9IjgiIGhlaWdodD0iMTgiIHJ4PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDI3KSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzM1OEJFNyIvPgo8cmVjdCB3aWR0aD0iMyIgaGVpZ2h0PSIyIiByeD0iMSIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMyAyMykiIGZpbGw9IiMzNThCRTciLz4KPHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMiIgcng9IjEiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDMgMTkpIiBmaWxsPSIjMzU4QkU3Ii8+CjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHJ4PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAzIDE1KSIgZmlsbD0iIzM1OEJFNyIvPgo8L3N2Zz4=',\n },\n ySlider && {\n throttle: 0,\n type: 'slider',\n left: parseInt(theme?.spacing?.(6) ?? '48'),\n width: parseInt(theme?.spacing?.(4) ?? '32'),\n yAxisIndex: [0],\n show: zoom && showSliders,\n zoomLock: !zoom,\n start,\n end,\n ...sliderStyles,\n brushSelect: false,\n moveHandleSize: 8,\n handleSize: '100%',\n handleIcon:\n 'image://data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iOSIgdmlld0JveD0iMCAwIDM2IDkiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iOCIgaGVpZ2h0PSIxOCIgcng9IjQiIHRyYW5zZm9ybT0icm90YXRlKC05MCAwLjUgMC41KSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzM1OEJFNyIvPgo8cmVjdCB3aWR0aD0iMyIgaGVpZ2h0PSIyIiByeD0iMSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDEzIDYpIiBmaWxsPSIjMzU4QkU3Ii8+CjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHJ4PSIxIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAgMTcgNikiIGZpbGw9IiMzNThCRTciLz4KPHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMiIgcng9IjEiIHRyYW5zZm9ybT0icm90YXRlKC05MCAyMSA2KSIgZmlsbD0iIzM1OEJFNyIvPgo8L3N2Zz4=',\n },\n ].filter((d) => !!d),\n }\n}\n\nfunction getEChartZoomSliderStyles(theme: Theme) {\n return {\n fillerColor: 'rgba(53, 139, 231, 0.25)',\n borderColor: 'rgba(53, 139, 231, 0.3)',\n borderWidth: 0.5,\n backgroundColor: 'transparent',\n borderRadius: 4,\n dataBackground: {\n lineStyle: {\n opacity: 0,\n },\n areaStyle: {\n opacity: 1,\n color: theme.palette.secondary.main,\n },\n },\n selectedDataBackground: {\n lineStyle: {\n opacity: 0,\n },\n areaStyle: {\n opacity: 1,\n color: theme.palette.secondary.main,\n },\n },\n handleStyle: {\n color: theme.palette.common.white,\n borderColor: 'rgba(3, 111, 226, 0.08)',\n borderWidth: 1,\n shadowBlur: 3,\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n shadowOffsetX: 0,\n shadowOffsetY: 1,\n },\n textStyle: {\n color: theme.palette.black[60],\n fontSize: parseInt(theme.typography.overlineDelicate.fontSize as string),\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n },\n } as const\n}\n\nexport function getEChartBrushConfig(\n { brushType = 'lineX', brushMode = 'single', xAxisIndex = 0 } = {} as {\n brushType?: string\n brushMode?: string\n xAxisIndex?: number\n throttleType?: string\n throttleDelay?: number\n },\n) {\n return {\n brush: {\n toolbox: ['lineX', 'clear'],\n brushType,\n brushMode,\n xAxisIndex,\n },\n }\n}\n\nexport function getEChartStackConfig(stackGroup: string = DEFAULT_STACK_GROUP) {\n return { stack: stackGroup }\n}\n"],"names":["DEFAULT_STACK_GROUP","mergeEchartWidgetConfig","options","deepmerge","customMerge","key","_","b","a","length","map","bItem","index","aItem","getEChartZoomConfig","start","end","inside","xSlider","ySlider","showSliders","xAxisLabelFormatter","bottomOffset","theme","sliderStyles","getEChartZoomSliderStyles","dataZoom","throttle","type","xAxisIndex","yAxisIndex","show","zoom","zoomLock","orientation","bottom","height","parseInt","spacing","labelFormatter","showDetail","brushSelect","moveHandleSize","handleSize","handleIcon","left","width","filter","d","fillerColor","borderColor","borderWidth","backgroundColor","borderRadius","dataBackground","lineStyle","opacity","areaStyle","color","palette","secondary","main","selectedDataBackground","handleStyle","common","white","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","textStyle","black","fontSize","typography","overlineDelicate","fontFamily","getEChartBrushConfig","brushType","brushMode","brush","toolbox","getEChartStackConfig","stackGroup","stack"],"mappings":";AAAO,MAAMA,IAAsB;ACK5B,SAASC,KACXC,GACA;AACH,SAAOC,EAAUD,EAAQ,CAAC,KAAK,CAAA,GAAIA,EAAQ,CAAC,KAAK,IAAI;AAAA,IACnDE,aAAcC,CAAAA,MAAQ;AACpB,UAAIA,MAAQ;AACV,eAAO,CAACC,GAAGC,MAAkBA;AAE/B,UAAIF,MAAQ;AACV,eAAO,CAACG,GAAkBD,MACnBC,EAAEC,SAEcF,GAAGG,IAAI,CAACC,GAAOC,MAAU;AAC5C,gBAAMC,IAAQL,IAAII,CAAK,KAAK,CAAA;AAC5B,iBAAOT,EAAUU,GAAOF,CAAe;AAAA,QACzC,CAAC,IALqBH;AAAAA,IAS5B;AAAA,EAAA,CACD;AACH;AAEO,SAASM,EACd;AAAA,EAAEC,OAAAA;AAAAA,EAAOC,KAAAA;AAAoC,IAAI;AAAA,EAAED,OAAO;AAAA,EAAGC,KAAK;AAAI,GACtE;AAAA,EACEC,QAAAA,IAAS;AAAA,EACTC,SAAAA,IAAU;AAAA,EACVC,SAAAA,IAAU;AAAA,EACVC,aAAAA,IAAc;AAAA,EACdC,qBAAAA;AAAAA,EACAC,cAAAA,IAAe;AACjB,IAAI,CAAA,GAQJC,GACA;AAEA,QAAMC,IAAeD,IAAQE,EAA0BF,CAAK,IAAI,CAAA;AAEhE,SAAO;AAAA,IACLG,UAAU,CACRT,KAAU;AAAA,MACRU,UAAU;AAAA,MACVC,MAAM;AAAA,MACNC,YAAYX,IAAU,CAAC,CAAC,IAAI,CAAA;AAAA,MAC5BY,YAAYX,IAAU,CAAC,CAAC,IAAI,CAAA;AAAA,MAC5BY,MAAMC;AAAAA,MACNC,UAAU;AAAA,MACVlB,OAAAA;AAAAA,MACAC,KAAAA;AAAAA,IAAAA,GAEFC,KACEE,KAAW;AAAA,MACTQ,UAAU;AAAA,MACVC,MAAM;AAAA,MACNG,MAAMC;AAAAA,MACNC,UAAU;AAAA,MACVlB,OAAAA;AAAAA,MACAC,KAAAA;AAAAA,MACAkB,aAAa;AAAA,IAAA,GAEjBhB,KAAW;AAAA,MACTS,UAAU;AAAA,MACVC,MAAM;AAAA,MACNC,YAAY,CAAC,CAAC;AAAA,MACdM,QAAQb;AAAAA,MACRc,QAAQC,SAASd,GAAOe,UAAU,CAAC,KAAK,IAAI;AAAA,MAC5CP,MAAcX;AAAAA,MACda,UAAU;AAAA,MACVlB,OAAAA;AAAAA,MACAC,KAAAA;AAAAA,MACAuB,gBAAgBlB;AAAAA,MAChBmB,YAAY;AAAA,MACZ,GAAGhB;AAAAA,MACHiB,aAAa;AAAA,MACbC,gBAAgB;AAAA,MAChBC,YAAY;AAAA,MACZC,YACE;AAAA,IAAA,GAEJzB,KAAW;AAAA,MACTQ,UAAU;AAAA,MACVC,MAAM;AAAA,MACNiB,MAAMR,SAASd,GAAOe,UAAU,CAAC,KAAK,IAAI;AAAA,MAC1CQ,OAAOT,SAASd,GAAOe,UAAU,CAAC,KAAK,IAAI;AAAA,MAC3CR,YAAY,CAAC,CAAC;AAAA,MACdC,MAAcX;AAAAA,MACda,UAAU;AAAA,MACVlB,OAAAA;AAAAA,MACAC,KAAAA;AAAAA,MACA,GAAGQ;AAAAA,MACHiB,aAAa;AAAA,MACbC,gBAAgB;AAAA,MAChBC,YAAY;AAAA,MACZC,YACE;AAAA,IAAA,CACH,EACDG,OAAQC,CAAAA,MAAM,CAAC,CAACA,CAAC;AAAA,EAAA;AAEvB;AAEA,SAASvB,EAA0BF,GAAc;AAC/C,SAAO;AAAA,IACL0B,aAAa;AAAA,IACbC,aAAa;AAAA,IACbC,aAAa;AAAA,IACbC,iBAAiB;AAAA,IACjBC,cAAc;AAAA,IACdC,gBAAgB;AAAA,MACdC,WAAW;AAAA,QACTC,SAAS;AAAA,MAAA;AAAA,MAEXC,WAAW;AAAA,QACTD,SAAS;AAAA,QACTE,OAAOnC,EAAMoC,QAAQC,UAAUC;AAAAA,MAAAA;AAAAA,IACjC;AAAA,IAEFC,wBAAwB;AAAA,MACtBP,WAAW;AAAA,QACTC,SAAS;AAAA,MAAA;AAAA,MAEXC,WAAW;AAAA,QACTD,SAAS;AAAA,QACTE,OAAOnC,EAAMoC,QAAQC,UAAUC;AAAAA,MAAAA;AAAAA,IACjC;AAAA,IAEFE,aAAa;AAAA,MACXL,OAAOnC,EAAMoC,QAAQK,OAAOC;AAAAA,MAC5Bf,aAAa;AAAA,MACbC,aAAa;AAAA,MACbe,YAAY;AAAA,MACZC,aAAa;AAAA,MACbC,eAAe;AAAA,MACfC,eAAe;AAAA,IAAA;AAAA,IAEjBC,WAAW;AAAA,MACTZ,OAAOnC,EAAMoC,QAAQY,MAAM,EAAE;AAAA,MAC7BC,UAAUnC,SAASd,EAAMkD,WAAWC,iBAAiBF,QAAkB;AAAA,MACvEG,YAAYpD,EAAMkD,WAAWC,iBAAiBC;AAAAA,IAAAA;AAAAA,EAChD;AAEJ;AAEO,SAASC,EACd;AAAA,EAAEC,WAAAA,IAAY;AAAA,EAASC,WAAAA,IAAY;AAAA,EAAUjD,YAAAA,IAAa;AAAE,IAAI,IAOhE;AACA,SAAO;AAAA,IACLkD,OAAO;AAAA,MACLC,SAAS,CAAC,SAAS,OAAO;AAAA,MAC1BH,WAAAA;AAAAA,MACAC,WAAAA;AAAAA,MACAjD,YAAAA;AAAAA,IAAAA;AAAAA,EACF;AAEJ;AAEO,SAASoD,EAAqBC,IAAqBlF,GAAqB;AAC7E,SAAO;AAAA,IAAEmF,OAAOD;AAAAA,EAAAA;AAClB;"}