@carto/ps-react-ui 4.3.6 → 4.3.8

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 (117) hide show
  1. package/dist/components.js +123 -123
  2. package/dist/components.js.map +1 -1
  3. package/dist/error-CEkRPccv.js +39 -0
  4. package/dist/error-CEkRPccv.js.map +1 -0
  5. package/dist/{lasso-tool-BctzdzBu.js → lasso-tool-jl4YK02H.js} +19 -19
  6. package/dist/lasso-tool-jl4YK02H.js.map +1 -0
  7. package/dist/no-data-hR3KcJ-_.js +60 -0
  8. package/dist/no-data-hR3KcJ-_.js.map +1 -0
  9. package/dist/{row-D3uVFImu.js → row-BKmVAUN5.js} +2 -2
  10. package/dist/{row-D3uVFImu.js.map → row-BKmVAUN5.js.map} +1 -1
  11. package/dist/{series-BAImrSBo.js → series-D1pynfeh.js} +3 -3
  12. package/dist/{series-BAImrSBo.js.map → series-D1pynfeh.js.map} +1 -1
  13. package/dist/{styles-CCZnY17y.js → styles-DrPyd0y5.js} +28 -22
  14. package/dist/styles-DrPyd0y5.js.map +1 -0
  15. package/dist/types/components/lasso-tool/types.d.ts +1 -1
  16. package/dist/types/widgets/_shared/chart-config/index.d.ts +1 -1
  17. package/dist/types/widgets/_shared/chart-config/option-builders.d.ts +7 -0
  18. package/dist/types/widgets/_shared/chart-config/option-builders.test.d.ts +1 -0
  19. package/dist/types/widgets/actions/change-column/change-column.d.ts +4 -0
  20. package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +1 -1
  21. package/dist/types/widgets/actions/fullscreen/types.d.ts +2 -1
  22. package/dist/types/widgets/actions/index.d.ts +1 -1
  23. package/dist/types/widgets/actions/lock-selection/types.d.ts +7 -7
  24. package/dist/types/widgets/actions/relative-data/types.d.ts +1 -1
  25. package/dist/types/widgets/echart/types.d.ts +0 -4
  26. package/dist/types/widgets/echart/utils.d.ts +2 -1
  27. package/dist/types/widgets/error/error.d.ts +1 -1
  28. package/dist/types/widgets/error/types.d.ts +8 -0
  29. package/dist/types/widgets/loader/loader.d.ts +1 -1
  30. package/dist/types/widgets/loader/types.d.ts +1 -1
  31. package/dist/types/widgets/stores/types.d.ts +1 -1
  32. package/dist/{use-widget-ref-B8x4sHIj.js → use-widget-ref-P-2i0MJG.js} +2 -2
  33. package/dist/{use-widget-ref-B8x4sHIj.js.map → use-widget-ref-P-2i0MJG.js.map} +1 -1
  34. package/dist/{utils-D3-eQyDR.js → utils-idmvq0Oa.js} +17 -16
  35. package/dist/utils-idmvq0Oa.js.map +1 -0
  36. package/dist/{widget-store-Dn0Bnc4h.js → widget-store-CzDt8oSK.js} +31 -46
  37. package/dist/widget-store-CzDt8oSK.js.map +1 -0
  38. package/dist/widgets/actions.js +714 -697
  39. package/dist/widgets/actions.js.map +1 -1
  40. package/dist/widgets/bar.js +67 -63
  41. package/dist/widgets/bar.js.map +1 -1
  42. package/dist/widgets/category.js +250 -241
  43. package/dist/widgets/category.js.map +1 -1
  44. package/dist/widgets/echart.js +93 -100
  45. package/dist/widgets/echart.js.map +1 -1
  46. package/dist/widgets/error.js +1 -1
  47. package/dist/widgets/formula.js +64 -72
  48. package/dist/widgets/formula.js.map +1 -1
  49. package/dist/widgets/histogram.js +75 -73
  50. package/dist/widgets/histogram.js.map +1 -1
  51. package/dist/widgets/loader.js +58 -49
  52. package/dist/widgets/loader.js.map +1 -1
  53. package/dist/widgets/markdown.js +2 -2
  54. package/dist/widgets/no-data.js +1 -1
  55. package/dist/widgets/pie.js +4 -4
  56. package/dist/widgets/range.js +97 -105
  57. package/dist/widgets/range.js.map +1 -1
  58. package/dist/widgets/scatterplot.js +8 -8
  59. package/dist/widgets/skeleton-loader.js +1 -1
  60. package/dist/widgets/spread.js +84 -100
  61. package/dist/widgets/spread.js.map +1 -1
  62. package/dist/widgets/stores.js +1 -1
  63. package/dist/widgets/table.js +493 -485
  64. package/dist/widgets/table.js.map +1 -1
  65. package/dist/widgets/timeseries.js +4 -4
  66. package/dist/widgets/wrapper.js +156 -156
  67. package/dist/widgets/wrapper.js.map +1 -1
  68. package/dist/widgets.js +4 -4
  69. package/package.json +1 -1
  70. package/src/components/lasso-tool/lasso-tool-inline.tsx +19 -17
  71. package/src/components/lasso-tool/lasso-tool.tsx +22 -20
  72. package/src/components/lasso-tool/types.ts +4 -3
  73. package/src/widgets/_shared/chart-config/index.ts +1 -0
  74. package/src/widgets/_shared/chart-config/option-builders.test.ts +40 -0
  75. package/src/widgets/_shared/chart-config/option-builders.ts +12 -0
  76. package/src/widgets/actions/change-column/change-column.test.tsx +129 -2
  77. package/src/widgets/actions/change-column/change-column.tsx +79 -2
  78. package/src/widgets/actions/fullscreen/fullscreen.tsx +8 -8
  79. package/src/widgets/actions/fullscreen/types.ts +6 -1
  80. package/src/widgets/actions/index.ts +4 -1
  81. package/src/widgets/actions/lock-selection/lock-selection.test.tsx +28 -30
  82. package/src/widgets/actions/lock-selection/types.ts +8 -8
  83. package/src/widgets/actions/relative-data/relative-data.test.tsx +13 -13
  84. package/src/widgets/actions/relative-data/types.ts +1 -1
  85. package/src/widgets/actions/stack-toggle/stack-toggle.test.tsx +19 -9
  86. package/src/widgets/actions/zoom-toggle/zoom-toggle.tsx +113 -95
  87. package/src/widgets/bar/config.ts +37 -28
  88. package/src/widgets/category/category-ui.tsx +25 -22
  89. package/src/widgets/echart/echart-ui.test.tsx +3 -18
  90. package/src/widgets/echart/echart-ui.tsx +4 -22
  91. package/src/widgets/echart/echart.test.tsx +9 -25
  92. package/src/widgets/echart/echart.tsx +36 -29
  93. package/src/widgets/echart/types.ts +0 -4
  94. package/src/widgets/echart/utils.ts +3 -1
  95. package/src/widgets/error/error.tsx +17 -14
  96. package/src/widgets/error/types.ts +10 -0
  97. package/src/widgets/formula/components/value.tsx +13 -13
  98. package/src/widgets/histogram/config.ts +36 -29
  99. package/src/widgets/loader/loader.tsx +28 -25
  100. package/src/widgets/loader/types.ts +3 -1
  101. package/src/widgets/no-data/no-data.tsx +8 -11
  102. package/src/widgets/range/components/range-item.tsx +9 -13
  103. package/src/widgets/spread/components/max-value.tsx +13 -13
  104. package/src/widgets/spread/components/min-value.tsx +13 -13
  105. package/src/widgets/stores/types.ts +1 -4
  106. package/src/widgets/stores/widget-store.ts +1 -27
  107. package/src/widgets/table/hooks/use-pagination.ts +44 -35
  108. package/src/widgets/table/hooks/use-sort.ts +25 -23
  109. package/src/widgets/wrapper/wrapper-ui.tsx +16 -17
  110. package/dist/error-piB8FwYO.js +0 -38
  111. package/dist/error-piB8FwYO.js.map +0 -1
  112. package/dist/lasso-tool-BctzdzBu.js.map +0 -1
  113. package/dist/no-data-jdlbMef0.js +0 -61
  114. package/dist/no-data-jdlbMef0.js.map +0 -1
  115. package/dist/styles-CCZnY17y.js.map +0 -1
  116. package/dist/utils-D3-eQyDR.js.map +0 -1
  117. package/dist/widget-store-Dn0Bnc4h.js.map +0 -1
@@ -1,119 +1,111 @@
1
- import { I as F, S as I, P as D, a as P } from "../series-BAImrSBo.js";
1
+ import { I, S as W, P as D, a as P } from "../series-D1pynfeh.js";
2
2
  import { jsx as f, jsxs as k, Fragment as C } from "react/jsx-runtime";
3
- import { c as p } from "react/compiler-runtime";
4
- import { u as R } from "../widget-store-Dn0Bnc4h.js";
5
- import { useShallow as T } from "zustand/shallow";
6
- import { R as W, s as $ } from "../row-D3uVFImu.js";
7
- import { Box as w, Skeleton as b } from "@mui/material";
3
+ import { c as w } from "react/compiler-runtime";
4
+ import { u as h } from "../widget-store-CzDt8oSK.js";
5
+ import { useShallow as S } from "zustand/shallow";
6
+ import { R, s as T } from "../row-BKmVAUN5.js";
7
+ import { Box as F, Skeleton as $ } from "@mui/material";
8
8
  import "@mui/icons-material";
9
9
  import "react";
10
10
  import "react-markdown";
11
- import { d as S, a as v } from "../exports-Cr43OCul.js";
12
- import "../lasso-tool-BctzdzBu.js";
11
+ import { d as y, a as v } from "../exports-Cr43OCul.js";
12
+ import "../lasso-tool-jl4YK02H.js";
13
13
  import "../cjs-D4KH3azB.js";
14
14
  import "@dnd-kit/core";
15
15
  import "@dnd-kit/sortable";
16
16
  import "@dnd-kit/utilities";
17
- import { u as j } from "../use-widget-ref-B8x4sHIj.js";
18
- const z = (e) => e.toString();
19
- function V(e) {
20
- const t = p(16);
21
- let o, i, r;
17
+ import { u as b } from "../use-widget-ref-P-2i0MJG.js";
18
+ const j = (e) => e.toString();
19
+ function z(e) {
20
+ const t = w(19);
21
+ let i, o, r;
22
22
  t[0] !== e ? ({
23
- id: o,
23
+ id: i,
24
24
  index: r,
25
- ...i
26
- } = e, t[0] = e, t[1] = o, t[2] = i, t[3] = r) : (o = t[1], i = t[2], r = t[3]);
25
+ ...o
26
+ } = e, t[0] = e, t[1] = i, t[2] = o, t[3] = r) : (i = t[1], o = t[2], r = t[3]);
27
27
  const n = r === void 0 ? 0 : r;
28
- let a;
29
- t[4] !== o || t[5] !== n ? (a = (y) => {
30
- const g = y.getWidget(o);
31
- return {
32
- value: g?.data?.[n]?.value,
33
- color: g?.data?.[n]?.color,
34
- formatter: g?.formatter
35
- };
36
- }, t[4] = o, t[5] = n, t[6] = a) : a = t[6];
37
- const {
38
- value: l,
39
- color: u,
40
- formatter: h
41
- } = R(T(a)), c = h === void 0 ? z : h;
28
+ let l;
29
+ t[4] !== i || t[5] !== n ? (l = (m) => m.getWidget(i)?.data?.[n]?.value, t[4] = i, t[5] = n, t[6] = l) : l = t[6];
30
+ const a = h(S(l));
31
+ let u;
32
+ t[7] !== i || t[8] !== n ? (u = (m) => m.getWidget(i)?.data?.[n]?.color, t[7] = i, t[8] = n, t[9] = u) : u = t[9];
33
+ const g = h(S(u)), x = h(S((m) => m.getWidget(i)?.formatter)) ?? j;
42
34
  let s;
43
- t[7] !== u ? (s = {
44
- color: u
45
- }, t[7] = u, t[8] = s) : s = t[8];
46
- const x = l ?? 0;
35
+ t[10] !== g ? (s = {
36
+ color: g
37
+ }, t[10] = g, t[11] = s) : s = t[11];
38
+ const p = a ?? 0;
47
39
  let d;
48
- t[9] !== c || t[10] !== x ? (d = c(x), t[9] = c, t[10] = x, t[11] = d) : d = t[11];
49
- let m;
50
- return t[12] !== i || t[13] !== s || t[14] !== d ? (m = /* @__PURE__ */ f(F, { TypographyProps: s, ...i, children: d }), t[12] = i, t[13] = s, t[14] = d, t[15] = m) : m = t[15], m;
40
+ t[12] !== x || t[13] !== p ? (d = x(p), t[12] = x, t[13] = p, t[14] = d) : d = t[14];
41
+ let c;
42
+ return t[15] !== o || t[16] !== s || t[17] !== d ? (c = /* @__PURE__ */ f(I, { TypographyProps: s, ...o, children: d }), t[15] = o, t[16] = s, t[17] = d, t[18] = c) : c = t[18], c;
51
43
  }
52
- function tt({
44
+ function Z({
53
45
  refUI: e
54
46
  }) {
55
47
  return [{
56
- ...S,
57
- modifier: () => S.modifier(e)
48
+ ...y,
49
+ modifier: () => y.modifier(e)
58
50
  }, {
59
51
  ...v,
60
52
  modifier: async (t) => {
61
- const o = [t?.map((i) => i.value) ?? []];
62
- return v.modifier(o);
53
+ const i = [t?.map((o) => o.value) ?? []];
54
+ return v.modifier(i);
63
55
  }
64
56
  }];
65
57
  }
66
- function et() {
58
+ function tt() {
67
59
  return {
68
60
  series: []
69
61
  };
70
62
  }
71
- function it(e) {
72
- const t = p(8), o = j(e.id);
73
- let i;
74
- t[0] !== e.id ? (i = (a) => {
63
+ function et(e) {
64
+ const t = w(8), i = b(e.id);
65
+ let o;
66
+ t[0] !== e.id ? (o = (l) => {
75
67
  const {
76
- index: l
77
- } = a;
68
+ index: a
69
+ } = l;
78
70
  return /* @__PURE__ */ k(C, { children: [
79
- /* @__PURE__ */ f(I, { id: e.id, index: l }),
80
- /* @__PURE__ */ f(D, { id: e.id, index: l }),
81
- /* @__PURE__ */ f(V, { id: e.id, index: l }),
82
- /* @__PURE__ */ f(P, { id: e.id, index: l })
71
+ /* @__PURE__ */ f(W, { id: e.id, index: a }),
72
+ /* @__PURE__ */ f(D, { id: e.id, index: a }),
73
+ /* @__PURE__ */ f(z, { id: e.id, index: a }),
74
+ /* @__PURE__ */ f(P, { id: e.id, index: a })
83
75
  ] });
84
- }, t[0] = e.id, t[1] = i) : i = t[1];
76
+ }, t[0] = e.id, t[1] = o) : o = t[1];
85
77
  let r;
86
- t[2] !== e.id || t[3] !== i ? (r = /* @__PURE__ */ f(W, { id: e.id, children: i }), t[2] = e.id, t[3] = i, t[4] = r) : r = t[4];
78
+ t[2] !== e.id || t[3] !== o ? (r = /* @__PURE__ */ f(R, { id: e.id, children: o }), t[2] = e.id, t[3] = o, t[4] = r) : r = t[4];
87
79
  let n;
88
- return t[5] !== o || t[6] !== r ? (n = /* @__PURE__ */ f(w, { ref: o, children: r }), t[5] = o, t[6] = r, t[7] = n) : n = t[7], n;
80
+ return t[5] !== i || t[6] !== r ? (n = /* @__PURE__ */ f(F, { ref: i, children: r }), t[5] = i, t[6] = r, t[7] = n) : n = t[7], n;
89
81
  }
90
- function ot() {
91
- const e = p(1);
82
+ function it() {
83
+ const e = w(1);
92
84
  let t;
93
- return e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ f(w, { sx: $.row, "aria-label": "Formula skeleton", children: /* @__PURE__ */ f(b, { width: 120, height: 32 }) }), e[0] = t) : t = e[0], t;
85
+ return e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ f(F, { sx: T.row, "aria-label": "Formula skeleton", children: /* @__PURE__ */ f($, { width: 120, height: 32 }) }), e[0] = t) : t = e[0], t;
94
86
  }
95
- function _(e) {
87
+ function V(e) {
96
88
  return {
97
89
  ...e,
98
90
  prefix: typeof e.prefix == "string" ? e.prefix : void 0,
99
91
  suffix: typeof e.suffix == "string" ? e.suffix : void 0
100
92
  };
101
93
  }
102
- function rt(e) {
103
- return e?.map(_);
94
+ function ot(e) {
95
+ return e?.map(V);
104
96
  }
105
97
  export {
106
- ot as FormulaSkeleton,
107
- it as FormulaUI,
108
- F as Item,
98
+ it as FormulaSkeleton,
99
+ et as FormulaUI,
100
+ I as Item,
109
101
  D as Prefix,
110
- W as Row,
111
- I as Series,
102
+ R as Row,
103
+ W as Series,
112
104
  P as Suffix,
113
- V as Value,
114
- et as formulaConfig,
115
- tt as formulaDownloadConfig,
116
- _ as sanitizeDataItem,
117
- rt as sanitizeDataItems
105
+ z as Value,
106
+ tt as formulaConfig,
107
+ Z as formulaDownloadConfig,
108
+ V as sanitizeDataItem,
109
+ ot as sanitizeDataItems
118
110
  };
119
111
  //# sourceMappingURL=formula.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formula.js","sources":["../../src/widgets/formula/components/value.tsx","../../src/widgets/formula/config.ts","../../src/widgets/formula/formula-ui.tsx","../../src/widgets/formula/skeleton.tsx","../../src/widgets/formula/serializer.ts"],"sourcesContent":["import { type FormulaWidgetState, type ValueProps } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Item } from './item'\nimport { useShallow } from 'zustand/shallow'\n\nconst defaultFormatter = (value: number) => value.toString()\n\nexport function Value({ id, index = 0, ...props }: ValueProps) {\n const {\n value,\n color,\n formatter = defaultFormatter,\n } = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<FormulaWidgetState>(id)\n return {\n value: widget?.data?.[index]?.value,\n color: widget?.data?.[index]?.color,\n formatter: widget?.formatter,\n }\n }),\n )\n\n return (\n <Item TypographyProps={{ color }} {...props}>\n {formatter(value ?? 0)}\n </Item>\n )\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type { FormulaDownloadConfig, FormulaWidgetConfig } from './types'\n\nexport function formulaDownloadConfig({\n refUI,\n}: ConfigProps): FormulaDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const formulaData = [data?.map((item) => item.value) ?? []]\n return downloadToCSV.modifier(formulaData)\n },\n },\n ]\n}\n\nexport function formulaConfig(): FormulaWidgetConfig {\n return {\n series: [],\n }\n}\n","import type { FormulaUIProps } from './types'\nimport { Row } from './components/row'\nimport { Value } from './components/value'\nimport { Prefix } from './components/prefix'\nimport { Suffix } from './components/suffix'\nimport { Series } from './components/series'\nimport { useWidgetRef } from '../../hooks'\nimport { Box } from '@mui/material'\n\nexport function FormulaUI(props: FormulaUIProps) {\n const ref = useWidgetRef(props.id)\n\n return (\n <Box ref={ref}>\n <Row id={props.id}>\n {({ index }) => (\n <>\n <Series id={props.id} index={index} />\n <Prefix id={props.id} index={index} />\n <Value id={props.id} index={index} />\n <Suffix id={props.id} index={index} />\n </>\n )}\n </Row>\n </Box>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function FormulaSkeleton() {\n return (\n <Box sx={styles.row} aria-label='Formula skeleton'>\n <Skeleton width={120} height={32} />\n </Box>\n )\n}\n","import type { DataItem } from './types'\n\n/**\n * Sanitizes DataItem by converting ReactNode prefix/suffix values to undefined.\n * This ensures only string values are stored in the widget state.\n *\n * @param item - The DataItem to sanitize\n * @returns A new DataItem with ReactNode prefix/suffix values converted to undefined\n */\nexport function sanitizeDataItem(item: DataItem): DataItem {\n return {\n ...item,\n prefix: typeof item.prefix === 'string' ? item.prefix : undefined,\n suffix: typeof item.suffix === 'string' ? item.suffix : undefined,\n }\n}\n\n/**\n * Sanitizes an array of DataItems by converting ReactNode prefix/suffix values to undefined.\n *\n * @param items - Array of DataItems to sanitize\n * @returns A new array with sanitized DataItems\n */\nexport function sanitizeDataItems(\n items: DataItem[] | undefined,\n): DataItem[] | undefined {\n return items?.map(sanitizeDataItem)\n}\n"],"names":["defaultFormatter","value","toString","Value","t0","$","_c","id","props","t1","index","undefined","t2","state","widget","getWidget","data","color","formatter","t3","useWidgetStore","useShallow","t4","t5","t6","t7","Item","formulaDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","formulaData","map","item","formulaConfig","series","FormulaUI","ref","useWidgetRef","jsxs","Fragment","jsx","Series","Prefix","Suffix","Row","Box","FormulaSkeleton","Symbol","for","styles","row","Skeleton","sanitizeDataItem","prefix","suffix","sanitizeDataItems","items"],"mappings":"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"}
1
+ {"version":3,"file":"formula.js","sources":["../../src/widgets/formula/components/value.tsx","../../src/widgets/formula/config.ts","../../src/widgets/formula/formula-ui.tsx","../../src/widgets/formula/skeleton.tsx","../../src/widgets/formula/serializer.ts"],"sourcesContent":["import { type FormulaWidgetState, type ValueProps } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Item } from './item'\nimport { useShallow } from 'zustand/shallow'\n\nconst defaultFormatter = (value: number) => value.toString()\n\nexport function Value({ id, index = 0, ...props }: ValueProps) {\n const value = useWidgetStore(\n useShallow(\n (state) => state.getWidget<FormulaWidgetState>(id)?.data?.[index]?.value,\n ),\n )\n const color = useWidgetStore(\n useShallow(\n (state) => state.getWidget<FormulaWidgetState>(id)?.data?.[index]?.color,\n ),\n )\n const formatter =\n useWidgetStore(\n useShallow((state) => state.getWidget<FormulaWidgetState>(id)?.formatter),\n ) ?? defaultFormatter\n\n return (\n <Item TypographyProps={{ color }} {...props}>\n {formatter(value ?? 0)}\n </Item>\n )\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type { FormulaDownloadConfig, FormulaWidgetConfig } from './types'\n\nexport function formulaDownloadConfig({\n refUI,\n}: ConfigProps): FormulaDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const formulaData = [data?.map((item) => item.value) ?? []]\n return downloadToCSV.modifier(formulaData)\n },\n },\n ]\n}\n\nexport function formulaConfig(): FormulaWidgetConfig {\n return {\n series: [],\n }\n}\n","import type { FormulaUIProps } from './types'\nimport { Row } from './components/row'\nimport { Value } from './components/value'\nimport { Prefix } from './components/prefix'\nimport { Suffix } from './components/suffix'\nimport { Series } from './components/series'\nimport { useWidgetRef } from '../../hooks'\nimport { Box } from '@mui/material'\n\nexport function FormulaUI(props: FormulaUIProps) {\n const ref = useWidgetRef(props.id)\n\n return (\n <Box ref={ref}>\n <Row id={props.id}>\n {({ index }) => (\n <>\n <Series id={props.id} index={index} />\n <Prefix id={props.id} index={index} />\n <Value id={props.id} index={index} />\n <Suffix id={props.id} index={index} />\n </>\n )}\n </Row>\n </Box>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function FormulaSkeleton() {\n return (\n <Box sx={styles.row} aria-label='Formula skeleton'>\n <Skeleton width={120} height={32} />\n </Box>\n )\n}\n","import type { DataItem } from './types'\n\n/**\n * Sanitizes DataItem by converting ReactNode prefix/suffix values to undefined.\n * This ensures only string values are stored in the widget state.\n *\n * @param item - The DataItem to sanitize\n * @returns A new DataItem with ReactNode prefix/suffix values converted to undefined\n */\nexport function sanitizeDataItem(item: DataItem): DataItem {\n return {\n ...item,\n prefix: typeof item.prefix === 'string' ? item.prefix : undefined,\n suffix: typeof item.suffix === 'string' ? item.suffix : undefined,\n }\n}\n\n/**\n * Sanitizes an array of DataItems by converting ReactNode prefix/suffix values to undefined.\n *\n * @param items - Array of DataItems to sanitize\n * @returns A new array with sanitized DataItems\n */\nexport function sanitizeDataItems(\n items: DataItem[] | undefined,\n): DataItem[] | undefined {\n return items?.map(sanitizeDataItem)\n}\n"],"names":["defaultFormatter","value","toString","Value","t0","$","_c","id","props","t1","index","undefined","t2","state","getWidget","data","useWidgetStore","useShallow","t3","state_0","color","formatter","state_1","t4","t5","t6","t7","Item","formulaDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","formulaData","map","item","formulaConfig","series","FormulaUI","ref","useWidgetRef","jsxs","Fragment","jsx","Series","Prefix","Suffix","Row","Box","FormulaSkeleton","Symbol","for","styles","row","Skeleton","sanitizeDataItem","prefix","suffix","sanitizeDataItems","items"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
- import { jsx as a, jsxs as h } from "react/jsx-runtime";
1
+ import { jsx as r, jsxs as h } from "react/jsx-runtime";
2
2
  import { c as x } from "react/compiler-runtime";
3
3
  import "react";
4
4
  import "echarts";
5
- import "../widget-store-Dn0Bnc4h.js";
5
+ import "../widget-store-CzDt8oSK.js";
6
6
  import "zustand/shallow";
7
7
  import { g as b } from "../options-D9wflre6.js";
8
- import { m as w } from "../utils-D3-eQyDR.js";
9
- import { f as _, c as L, a as S, b as k, d as v, e as C, g as A } from "../styles-CCZnY17y.js";
10
- import { Box as l, Skeleton as m } from "@mui/material";
8
+ import { m as w } from "../utils-idmvq0Oa.js";
9
+ import { f as _, c as S, a as k, n as L, b as C, d as v, e as I } from "../styles-DrPyd0y5.js";
10
+ import { Box as p, Skeleton as f } from "@mui/material";
11
11
  import "@mui/icons-material";
12
12
  import "react-markdown";
13
- import { d as p, a as c } from "../exports-Cr43OCul.js";
14
- import "../lasso-tool-BctzdzBu.js";
13
+ import { d as c, a as m } from "../exports-Cr43OCul.js";
14
+ import "../lasso-tool-jl4YK02H.js";
15
15
  import "../cjs-D4KH3azB.js";
16
16
  import "@dnd-kit/core";
17
17
  import "@dnd-kit/sortable";
@@ -20,57 +20,32 @@ function ee({
20
20
  refUI: t
21
21
  }) {
22
22
  return [{
23
- ...p,
24
- modifier: () => p.modifier(t)
25
- }, {
26
23
  ...c,
24
+ modifier: () => c.modifier(t)
25
+ }, {
26
+ ...m,
27
27
  modifier: async (e) => {
28
- const o = _(e);
29
- return c.modifier(o);
28
+ const n = _(e);
29
+ return m.modifier(n);
30
30
  }
31
31
  }];
32
32
  }
33
33
  function te(t) {
34
34
  return {
35
35
  type: "histogram",
36
- option: w(b(t), I(t))
36
+ option: w(b(t), N(t))
37
37
  };
38
38
  }
39
- function I({
39
+ function N({
40
40
  data: t = [],
41
41
  theme: e,
42
- formatter: o
42
+ formatter: n
43
43
  }) {
44
- const n = (t?.length ?? 0) > 1, f = {
45
- type: "value",
46
- showMaxLabel: !0,
47
- showMinLabel: !0,
48
- splitNumber: 1,
49
- axisLabel: {
50
- fontSize: e.typography.overlineDelicate.fontSize,
51
- fontFamily: e.typography.overlineDelicate.fontFamily,
52
- margin: parseInt(e.spacing(1)),
53
- show: !0,
54
- showMaxLabel: !0,
55
- showMinLabel: !0,
56
- verticalAlign: "bottom"
57
- },
58
- axisLine: {
59
- show: !1
60
- },
61
- axisTick: {
62
- show: !1
63
- },
64
- splitLine: {
65
- show: !0,
66
- lineStyle: {
67
- color: e.palette.black[4]
68
- }
69
- }
70
- };
44
+ const i = (t?.length ?? 0) > 1;
45
+ let a = 1;
71
46
  return {
72
- legend: C(n),
73
- grid: v(n, e),
47
+ legend: v(i),
48
+ grid: C(i, e),
74
49
  xAxis: {
75
50
  type: "category",
76
51
  axisLine: {
@@ -96,21 +71,48 @@ function I({
96
71
  }
97
72
  }
98
73
  },
99
- yAxis: k(f, o),
74
+ yAxis: {
75
+ type: "value",
76
+ min: 0,
77
+ max: (o) => (a = o.max <= 0 ? 1 : L(o.max), a),
78
+ splitNumber: 1,
79
+ axisLabel: {
80
+ fontSize: e.typography.overlineDelicate.fontSize,
81
+ fontFamily: e.typography.overlineDelicate.fontFamily,
82
+ margin: parseInt(e.spacing(1)),
83
+ show: !0,
84
+ showMaxLabel: !0,
85
+ showMinLabel: !0,
86
+ verticalAlign: "bottom",
87
+ formatter: (o) => o !== a ? "" : n ? n(o) : String(o)
88
+ },
89
+ axisLine: {
90
+ show: !1
91
+ },
92
+ axisTick: {
93
+ show: !1
94
+ },
95
+ splitLine: {
96
+ show: !0,
97
+ lineStyle: {
98
+ color: e.palette.black[4]
99
+ }
100
+ }
101
+ },
100
102
  tooltip: {
101
- position: S(e),
102
- formatter: L((i) => {
103
- const r = i.value, g = i.dimensionNames?.[i.encode?.y?.at(0) ?? 1], s = r[g ?? ""], u = typeof s == "number" && o ? o(s) : s ?? "", y = typeof i.marker == "string" ? i.marker : "", d = i.seriesName ? `${i.seriesName}: ` : "";
103
+ position: k(e),
104
+ formatter: S((o) => {
105
+ const s = o.value, g = o.dimensionNames?.[o.encode?.y?.at(0) ?? 1], l = s[g ?? ""], u = typeof l == "number" && n ? n(l) : l ?? "", d = typeof o.marker == "string" ? o.marker : "", y = o.seriesName ? `${o.seriesName}: ` : "";
104
106
  return {
105
- name: i.name ?? "",
106
- seriesName: d,
107
- marker: y,
107
+ name: o.name ?? "",
108
+ seriesName: y,
109
+ marker: d,
108
110
  value: u
109
111
  };
110
112
  })
111
113
  },
112
- series: t.map((i, r) => ({
113
- datasetIndex: r,
114
+ series: t.map((o, s) => ({
115
+ datasetIndex: s,
114
116
  type: "bar",
115
117
  barGap: "1%",
116
118
  // No gap between bars in histogram
@@ -124,55 +126,55 @@ function I({
124
126
  }
125
127
  const T = {
126
128
  skeleton: {
127
- graph: A.graph
129
+ graph: I.graph
128
130
  }
129
131
  };
130
132
  function oe() {
131
133
  const t = x(2);
132
134
  let e;
133
- t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ a(l, { sx: {
135
+ t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ r(p, { sx: {
134
136
  display: "flex",
135
137
  alignItems: "flex-end",
136
138
  justifyContent: "space-between",
137
- gap: D,
138
- height: j,
139
+ gap: M,
140
+ height: F,
139
141
  width: "100%"
140
- }, children: Array(8).fill(0).map(N) }), t[0] = e) : e = t[0];
141
- let o;
142
- return t[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (o = /* @__PURE__ */ h(l, { sx: T.skeleton.graph.container, children: [
142
+ }, children: Array(8).fill(0).map(D) }), t[0] = e) : e = t[0];
143
+ let n;
144
+ return t[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (n = /* @__PURE__ */ h(p, { sx: T.skeleton.graph.container, children: [
143
145
  e,
144
- /* @__PURE__ */ a(l, { sx: {
146
+ /* @__PURE__ */ r(p, { sx: {
145
147
  display: "flex",
146
148
  alignItems: "center",
147
149
  justifyContent: "space-between",
148
150
  width: "100%",
149
- mt: M
150
- }, children: Array(4).fill(0).map(F) })
151
- ] }), t[1] = o) : o = t[1], o;
151
+ mt: j
152
+ }, children: Array(4).fill(0).map(A) })
153
+ ] }), t[1] = n) : n = t[1], n;
152
154
  }
153
- function F(t, e) {
154
- return /* @__PURE__ */ a(m, { width: 32, height: 8 }, e);
155
+ function A(t, e) {
156
+ return /* @__PURE__ */ r(f, { width: 32, height: 8 }, e);
155
157
  }
156
- function M(t) {
158
+ function j(t) {
157
159
  const {
158
160
  spacing: e
159
161
  } = t;
160
162
  return e(1);
161
163
  }
162
- function N(t, e) {
163
- const n = `${[60, 80, 95, 85, 70, 55, 40, 30][e]}%`;
164
- return /* @__PURE__ */ a(m, { variant: "rectangular", sx: {
164
+ function D(t, e) {
165
+ const i = `${[60, 80, 95, 85, 70, 55, 40, 30][e]}%`;
166
+ return /* @__PURE__ */ r(f, { variant: "rectangular", sx: {
165
167
  flex: 1,
166
- height: n
168
+ height: i
167
169
  } }, e);
168
170
  }
169
- function j(t) {
171
+ function F(t) {
170
172
  const {
171
173
  spacing: e
172
174
  } = t;
173
175
  return e(30);
174
176
  }
175
- function D(t) {
177
+ function M(t) {
176
178
  const {
177
179
  spacing: e
178
180
  } = t;
@@ -1 +1 @@
1
- {"version":3,"file":"histogram.js","sources":["../../src/widgets/histogram/config.ts","../../src/widgets/histogram/style.ts","../../src/widgets/histogram/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type {\n HistogramConfig,\n HistogramWidgetConfig,\n HistogramWidgetData,\n} from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n createTooltipFormatter,\n applyYAxisFormatter,\n} from '../_shared/chart-config'\nimport { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\n\nexport function histogramDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<HistogramWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = flattenObjectArrayToCSV(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n}\nexport function histogramConfig(props: HistogramConfig): HistogramWidgetConfig {\n return {\n type: 'histogram',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n }\n}\nfunction getOption({\n data = [],\n theme,\n formatter,\n}: HistogramConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n const yAxis = {\n type: 'value' as const,\n showMaxLabel: true,\n showMinLabel: true,\n splitNumber: 1,\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 },\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: buildGridConfig(hasLegend, theme),\n xAxis: {\n type: 'category',\n axisLine: {\n show: false,\n },\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n showMinLabel: true,\n showMaxLabel: true,\n hideOverlap: true,\n margin: 0,\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 axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n yAxis: applyYAxisFormatter(yAxis, formatter),\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 barGap: '1%', // No gap between bars in histogram\n barCategoryGap: '1%', // No gap between categories in histogram\n emphasis: {\n focus: 'series',\n },\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../_shared/skeleton'\n\nexport const styles = {\n skeleton: {\n graph: baseSkeletonStyles.graph,\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function HistogramSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'space-between',\n gap: ({ spacing }) => spacing(0.5),\n height: ({ spacing }) => spacing(30),\n width: '100%',\n }}\n >\n {Array(8)\n .fill(0)\n .map((_, i) => {\n // Create varying heights for histogram bars\n const heights = [60, 80, 95, 85, 70, 55, 40, 30]\n const height = `${heights[i]}%`\n return (\n <Skeleton\n key={i}\n variant='rectangular'\n sx={{\n flex: 1,\n height,\n }}\n />\n )\n })}\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n mt: ({ spacing }) => spacing(1),\n }}\n >\n {Array(4)\n .fill(0)\n .map((_, i) => (\n <Skeleton key={i} width={32} height={8} />\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["histogramDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","data","rows","flattenObjectArrayToCSV","histogramConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","theme","formatter","hasLegend","length","yAxis","showMaxLabel","showMinLabel","splitNumber","axisLabel","fontSize","typography","overlineDelicate","fontFamily","margin","parseInt","spacing","show","verticalAlign","axisLine","axisTick","splitLine","lineStyle","color","palette","black","legend","buildLegendConfig","grid","buildGridConfig","xAxis","hideOverlap","padding","applyYAxisFormatter","tooltip","position","createTooltipPositioner","createTooltipFormatter","item","value","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","series","map","_","datasetIndex","barGap","barCategoryGap","emphasis","focus","styles","skeleton","graph","baseSkeletonStyles","HistogramSkeleton","$","_c","t0","Symbol","for","jsx","Box","display","alignItems","justifyContent","gap","_temp","height","_temp2","width","Array","fill","_temp3","t1","container","mt","_temp4","_temp5","__0","i_0","Skeleton","spacing_1","i","flex","spacing_0"],"mappings":"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"}
1
+ {"version":3,"file":"histogram.js","sources":["../../src/widgets/histogram/config.ts","../../src/widgets/histogram/style.ts","../../src/widgets/histogram/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type {\n HistogramConfig,\n HistogramWidgetConfig,\n HistogramWidgetData,\n} from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n createTooltipFormatter,\n niceNum,\n} from '../_shared/chart-config'\nimport { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\n\nexport function histogramDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<HistogramWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = flattenObjectArrayToCSV(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n}\nexport function histogramConfig(props: HistogramConfig): HistogramWidgetConfig {\n return {\n type: 'histogram',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n }\n}\nfunction getOption({\n data = [],\n theme,\n formatter,\n}: HistogramConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\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 axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n showMinLabel: true,\n showMaxLabel: true,\n hideOverlap: true,\n margin: 0,\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 axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n yAxis: {\n type: 'value' as const,\n min: 0,\n max: (extent: { min: number; max: number }) => {\n niceMax = extent.max <= 0 ? 1 : niceNum(extent.max)\n return niceMax\n },\n splitNumber: 1,\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 formatter: (value: number) => {\n if (value !== niceMax) 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 barGap: '1%', // No gap between bars in histogram\n barCategoryGap: '1%', // No gap between categories in histogram\n emphasis: {\n focus: 'series',\n },\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../_shared/skeleton'\n\nexport const styles = {\n skeleton: {\n graph: baseSkeletonStyles.graph,\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function HistogramSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'space-between',\n gap: ({ spacing }) => spacing(0.5),\n height: ({ spacing }) => spacing(30),\n width: '100%',\n }}\n >\n {Array(8)\n .fill(0)\n .map((_, i) => {\n // Create varying heights for histogram bars\n const heights = [60, 80, 95, 85, 70, 55, 40, 30]\n const height = `${heights[i]}%`\n return (\n <Skeleton\n key={i}\n variant='rectangular'\n sx={{\n flex: 1,\n height,\n }}\n />\n )\n })}\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n mt: ({ spacing }) => spacing(1),\n }}\n >\n {Array(4)\n .fill(0)\n .map((_, i) => (\n <Skeleton key={i} width={32} height={8} />\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["histogramDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","data","rows","flattenObjectArrayToCSV","histogramConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","theme","formatter","hasLegend","length","niceMax","legend","buildLegendConfig","grid","buildGridConfig","xAxis","axisLine","show","axisLabel","fontSize","typography","overlineDelicate","fontFamily","showMinLabel","showMaxLabel","hideOverlap","margin","padding","parseInt","spacing","color","palette","black","axisTick","splitLine","lineStyle","yAxis","min","max","extent","niceNum","splitNumber","verticalAlign","value","String","tooltip","position","createTooltipPositioner","createTooltipFormatter","item","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","series","map","_","datasetIndex","barGap","barCategoryGap","emphasis","focus","styles","skeleton","graph","baseSkeletonStyles","HistogramSkeleton","$","_c","t0","Symbol","for","jsx","Box","display","alignItems","justifyContent","gap","_temp","height","_temp2","width","Array","fill","_temp3","t1","container","mt","_temp4","_temp5","__0","i_0","Skeleton","spacing_1","i","flex","spacing_0"],"mappings":"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"}