@embeddable.com/remarkable-pro 0.0.20 → 0.0.21

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 (101) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +3 -3
  2. package/dist/BarChartDefaultPro.js +3 -3
  3. package/dist/BarChartGroupedHorizontalPro.js +3 -3
  4. package/dist/BarChartGroupedPro.js +3 -3
  5. package/dist/BarChartStackedHorizontalPro.js +3 -3
  6. package/dist/BarChartStackedPro.js +3 -3
  7. package/dist/ChartCard-D_A88_bS.js +116 -0
  8. package/dist/ChartCard-D_A88_bS.js.map +1 -0
  9. package/dist/{Color.type.emb-C4VcPjfM.js → Color.type.emb-Dkh_ZrO6.js} +914 -918
  10. package/dist/{Color.type.emb-C4VcPjfM.js.map → Color.type.emb-Dkh_ZrO6.js.map} +1 -1
  11. package/dist/ColorEditor.js +1 -1
  12. package/dist/ComparisonPeriodSelectFieldPro.js +3 -3
  13. package/dist/DateRangePickerCustomPro.js +3 -3
  14. package/dist/DateRangeSelectFieldPro.js +3 -3
  15. package/dist/DonutChartPro.js +3 -3
  16. package/dist/DonutLabelChartPro.js +3 -3
  17. package/dist/{EditorCard-CcsUaHcd.js → EditorCard-1Z3UFd1D.js} +3 -3
  18. package/dist/{EditorCard-CcsUaHcd.js.map → EditorCard-1Z3UFd1D.js.map} +1 -1
  19. package/dist/GranularitySelectFieldPro.js +46 -39
  20. package/dist/GranularitySelectFieldPro.js.map +1 -1
  21. package/dist/HeatMapPro.js +3 -3
  22. package/dist/KpiChartNumberComparisonPro.js +3 -3
  23. package/dist/KpiChartNumberPro.js +3 -3
  24. package/dist/LineChartComparisonDefaultPro.js +3 -3
  25. package/dist/LineChartDefaultPro.js +3 -3
  26. package/dist/LineChartGroupedPro.js +3 -3
  27. package/dist/MultiSelectFieldPro.js +3 -3
  28. package/dist/PieChartPro.js +3 -3
  29. package/dist/PivotTablePro.js +3 -3
  30. package/dist/SingleSelectFieldPro.js +3 -3
  31. package/dist/TableChartPaginated.js +3 -3
  32. package/dist/TableScrollable.js +4 -4
  33. package/dist/{bars.utils-Ck1w7NOo.js → bars.utils-CsJD9MNL.js} +4 -4
  34. package/dist/{bars.utils-Ck1w7NOo.js.map → bars.utils-CsJD9MNL.js.map} +1 -1
  35. package/dist/{charts.utils-g6NE_Jo3.js → charts.utils-CUPowt7F.js} +13 -13
  36. package/dist/charts.utils-CUPowt7F.js.map +1 -0
  37. package/dist/{component.inputs.constants-DN1efWXx.js → component.inputs.constants-CNdmawDt.js} +2 -2
  38. package/dist/{component.inputs.constants-DN1efWXx.js.map → component.inputs.constants-CNdmawDt.js.map} +1 -1
  39. package/dist/components/charts/shared/ChartCard/ChartCard.d.ts +6 -5
  40. package/dist/components/charts/shared/ChartCard/ChartCard.d.ts.map +1 -1
  41. package/dist/components/editors/GranularitySelectFieldPro/GranularitySelectFieldPro.utils.d.ts +2 -10
  42. package/dist/components/editors/GranularitySelectFieldPro/GranularitySelectFieldPro.utils.d.ts.map +1 -1
  43. package/dist/components/editors/GranularitySelectFieldPro/index.d.ts.map +1 -1
  44. package/dist/embeddable-components.json +15 -15
  45. package/dist/embeddable-theme-0137e.js +191 -191
  46. package/dist/{formatter.utils-pzrkapRL.js → formatter.utils-BiWZBhcE.js} +2 -2
  47. package/dist/{formatter.utils-pzrkapRL.js.map → formatter.utils-BiWZBhcE.js.map} +1 -1
  48. package/dist/{index-53w_cRnE.js → index-1vsLONt_.js} +5 -5
  49. package/dist/{index-53w_cRnE.js.map → index-1vsLONt_.js.map} +1 -1
  50. package/dist/{index-4mTCN1nI.js → index-8PpbF7SA.js} +5 -5
  51. package/dist/{index-4mTCN1nI.js.map → index-8PpbF7SA.js.map} +1 -1
  52. package/dist/{index-7Vgn0Xsn.js → index-B3m93Z4r.js} +5 -5
  53. package/dist/{index-7Vgn0Xsn.js.map → index-B3m93Z4r.js.map} +1 -1
  54. package/dist/{index-Cr68Ha2O.js → index-BBcQWvRk.js} +5 -5
  55. package/dist/{index-Cr68Ha2O.js.map → index-BBcQWvRk.js.map} +1 -1
  56. package/dist/{index-JiDnk-OU.js → index-BOI6FOwo.js} +5 -5
  57. package/dist/{index-JiDnk-OU.js.map → index-BOI6FOwo.js.map} +1 -1
  58. package/dist/{index-DCVqVqS5.js → index-Boogtc12.js} +6 -6
  59. package/dist/{index-DCVqVqS5.js.map → index-Boogtc12.js.map} +1 -1
  60. package/dist/{index-Brl5KgVS.js → index-BuBn1ktN.js} +5 -5
  61. package/dist/{index-Brl5KgVS.js.map → index-BuBn1ktN.js.map} +1 -1
  62. package/dist/{index-DXkwaXvx.js → index-CQ_mo5Eg.js} +6 -6
  63. package/dist/{index-DXkwaXvx.js.map → index-CQ_mo5Eg.js.map} +1 -1
  64. package/dist/{index-t3j3ZF8E.js → index-CSoASUv1.js} +5 -5
  65. package/dist/{index-t3j3ZF8E.js.map → index-CSoASUv1.js.map} +1 -1
  66. package/dist/{index-Dy4jGo4x.js → index-CVJKjJGv.js} +5 -5
  67. package/dist/{index-Dy4jGo4x.js.map → index-CVJKjJGv.js.map} +1 -1
  68. package/dist/{index-BUWTt_8s.js → index-Cv4JGkHO.js} +5 -5
  69. package/dist/{index-BUWTt_8s.js.map → index-Cv4JGkHO.js.map} +1 -1
  70. package/dist/{index-Cdu6WHsa.js → index-D5CZAWnJ.js} +4 -4
  71. package/dist/{index-Cdu6WHsa.js.map → index-D5CZAWnJ.js.map} +1 -1
  72. package/dist/{index-DHYMtecu.js → index-DVUJikiN.js} +5 -5
  73. package/dist/{index-DHYMtecu.js.map → index-DVUJikiN.js.map} +1 -1
  74. package/dist/{index-DG77FUkS.js → index-Dhzhtagm.js} +5 -5
  75. package/dist/{index-DG77FUkS.js.map → index-Dhzhtagm.js.map} +1 -1
  76. package/dist/{index-T15Mxwpw.js → index-DkmPuuV8.js} +6 -6
  77. package/dist/{index-T15Mxwpw.js.map → index-DkmPuuV8.js.map} +1 -1
  78. package/dist/{index-BEYR5f2d.js → index-DoFkdyxp.js} +5 -5
  79. package/dist/{index-BEYR5f2d.js.map → index-DoFkdyxp.js.map} +1 -1
  80. package/dist/{index-1mMgdK6h.js → index-Dp7Av-Oy.js} +5 -5
  81. package/dist/{index-1mMgdK6h.js.map → index-Dp7Av-Oy.js.map} +1 -1
  82. package/dist/{index-B6z6eyJE.js → index-Du2TCRQq.js} +5 -5
  83. package/dist/{index-B6z6eyJE.js.map → index-Du2TCRQq.js.map} +1 -1
  84. package/dist/{index-C_ExmNre.js → index-XTTodJI4.js} +5 -5
  85. package/dist/{index-C_ExmNre.js.map → index-XTTodJI4.js.map} +1 -1
  86. package/dist/{index-BjuvAqGb.js → index-tjFCL7Y-.js} +4 -4
  87. package/dist/{index-BjuvAqGb.js.map → index-tjFCL7Y-.js.map} +1 -1
  88. package/dist/{index-DXVl7yqM.js → index-yOOAOJHG.js} +5 -5
  89. package/dist/{index-DXVl7yqM.js.map → index-yOOAOJHG.js.map} +1 -1
  90. package/dist/index.js +29 -29
  91. package/dist/{pies.utils-dB2uJu3l.js → pies.utils-DCy5LWcY.js} +5 -5
  92. package/dist/{pies.utils-dB2uJu3l.js.map → pies.utils-DCy5LWcY.js.map} +1 -1
  93. package/dist/remarkable-pro.css +1 -1
  94. package/dist/{tables.utils-B8IT-c8T.js → tables.utils-8OmfcPmH.js} +4 -4
  95. package/dist/{tables.utils-B8IT-c8T.js.map → tables.utils-8OmfcPmH.js.map} +1 -1
  96. package/dist/{timeRange.utils-DIFMUM1C.js → timeRange.utils-81KUBS9O.js} +2 -2
  97. package/dist/{timeRange.utils-DIFMUM1C.js.map → timeRange.utils-81KUBS9O.js.map} +1 -1
  98. package/package.json +2 -2
  99. package/dist/ChartCard-B5IaBBTs.js +0 -124
  100. package/dist/ChartCard-B5IaBBTs.js.map +0 -1
  101. package/dist/charts.utils-g6NE_Jo3.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { c as i } from "./component.inputs.constants-DN1efWXx.js";
1
+ import { c as i } from "./component.inputs.constants-CNdmawDt.js";
2
2
  const f = (o, t, s) => {
3
3
  var d;
4
4
  if (!o || !t)
@@ -17,4 +17,4 @@ export {
17
17
  v as a,
18
18
  f as g
19
19
  };
20
- //# sourceMappingURL=timeRange.utils-DIFMUM1C.js.map
20
+ //# sourceMappingURL=timeRange.utils-81KUBS9O.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeRange.utils-DIFMUM1C.js","sources":["../src/components/utils/timeRange.utils.ts"],"sourcesContent":["import { TimeRange } from '@embeddable.com/core';\nimport { Theme } from '../../theme/theme.types';\nimport { resolveI18nString } from '../component.utils';\n\nexport const getComparisonPeriodDateRange = (\n primaryDateRange: TimeRange,\n comparisonPeriod: string | undefined,\n theme: Theme,\n): TimeRange => {\n if (!primaryDateRange || !comparisonPeriod) {\n return undefined;\n }\n\n const primaryDateRangeRange = primaryDateRange?.relativeTimeString\n ? theme.defaults.dateRangesOptions\n .find((option) => option.value === primaryDateRange?.relativeTimeString)\n ?.getRange()\n : primaryDateRange;\n\n const comparisonPeriodOption = theme.defaults.comparisonPeriodsOptions.find(\n (option) => option.value === comparisonPeriod,\n );\n\n return comparisonPeriodOption?.getRange(primaryDateRangeRange);\n};\n\nexport const getComparisonPeriodLabel = (\n comparisonPeriod: string | undefined,\n theme: Theme,\n): string => {\n const option = theme.defaults.comparisonPeriodsOptions.find(\n (option) => option.value === comparisonPeriod,\n );\n return option ? resolveI18nString(option.label) : '';\n};\n"],"names":["getComparisonPeriodDateRange","primaryDateRange","comparisonPeriod","theme","primaryDateRangeRange","_a","option","comparisonPeriodOption","getComparisonPeriodLabel","resolveI18nString"],"mappings":";AAIO,MAAMA,IAA+B,CAC1CC,GACAC,GACAC,MACc;;AACd,MAAI,CAACF,KAAoB,CAACC;AACxB;AAGF,QAAME,IAAwBH,KAAA,QAAAA,EAAkB,sBAC5CI,IAAAF,EAAM,SAAS,kBACZ,KAAK,CAACG,MAAWA,EAAO,WAAUL,KAAA,gBAAAA,EAAkB,mBAAkB,MADzE,gBAAAI,EAEI,aACJJ,GAEEM,IAAyBJ,EAAM,SAAS,yBAAyB;AAAA,IACrE,CAACG,MAAWA,EAAO,UAAUJ;AAAA,EAAA;AAG/B,SAAOK,KAAA,gBAAAA,EAAwB,SAASH;AAC1C,GAEaI,IAA2B,CACtCN,GACAC,MACW;AACX,QAAMG,IAASH,EAAM,SAAS,yBAAyB;AAAA,IACrD,CAACG,MAAWA,EAAO,UAAUJ;AAAA,EAAA;AAE/B,SAAOI,IAASG,EAAkBH,EAAO,KAAK,IAAI;AACpD;"}
1
+ {"version":3,"file":"timeRange.utils-81KUBS9O.js","sources":["../src/components/utils/timeRange.utils.ts"],"sourcesContent":["import { TimeRange } from '@embeddable.com/core';\nimport { Theme } from '../../theme/theme.types';\nimport { resolveI18nString } from '../component.utils';\n\nexport const getComparisonPeriodDateRange = (\n primaryDateRange: TimeRange,\n comparisonPeriod: string | undefined,\n theme: Theme,\n): TimeRange => {\n if (!primaryDateRange || !comparisonPeriod) {\n return undefined;\n }\n\n const primaryDateRangeRange = primaryDateRange?.relativeTimeString\n ? theme.defaults.dateRangesOptions\n .find((option) => option.value === primaryDateRange?.relativeTimeString)\n ?.getRange()\n : primaryDateRange;\n\n const comparisonPeriodOption = theme.defaults.comparisonPeriodsOptions.find(\n (option) => option.value === comparisonPeriod,\n );\n\n return comparisonPeriodOption?.getRange(primaryDateRangeRange);\n};\n\nexport const getComparisonPeriodLabel = (\n comparisonPeriod: string | undefined,\n theme: Theme,\n): string => {\n const option = theme.defaults.comparisonPeriodsOptions.find(\n (option) => option.value === comparisonPeriod,\n );\n return option ? resolveI18nString(option.label) : '';\n};\n"],"names":["getComparisonPeriodDateRange","primaryDateRange","comparisonPeriod","theme","primaryDateRangeRange","_a","option","comparisonPeriodOption","getComparisonPeriodLabel","resolveI18nString"],"mappings":";AAIO,MAAMA,IAA+B,CAC1CC,GACAC,GACAC,MACc;;AACd,MAAI,CAACF,KAAoB,CAACC;AACxB;AAGF,QAAME,IAAwBH,KAAA,QAAAA,EAAkB,sBAC5CI,IAAAF,EAAM,SAAS,kBACZ,KAAK,CAACG,MAAWA,EAAO,WAAUL,KAAA,gBAAAA,EAAkB,mBAAkB,MADzE,gBAAAI,EAEI,aACJJ,GAEEM,IAAyBJ,EAAM,SAAS,yBAAyB;AAAA,IACrE,CAACG,MAAWA,EAAO,UAAUJ;AAAA,EAAA;AAG/B,SAAOK,KAAA,gBAAAA,EAAwB,SAASH;AAC1C,GAEaI,IAA2B,CACtCN,GACAC,MACW;AACX,QAAMG,IAASH,EAAM,SAAS,yBAAyB;AAAA,IACrD,CAACG,MAAWA,EAAO,UAAUJ;AAAA,EAAA;AAE/B,SAAOI,IAASG,EAAkBH,EAAO,KAAK,IAAI;AACpD;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@embeddable.com/remarkable-pro",
3
3
  "author": "embeddable (https://embeddable.com)",
4
- "version": "0.0.20",
4
+ "version": "0.0.21",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/embeddable-hq/remarkable-pro"
@@ -59,7 +59,7 @@
59
59
  "@changesets/cli": "^2.29.6",
60
60
  "@embeddable.com/core": "^2.13.2",
61
61
  "@embeddable.com/react": "^2.12.2",
62
- "@embeddable.com/remarkable-ui": "^2.0.25",
62
+ "@embeddable.com/remarkable-ui": "^2.0.28",
63
63
  "@tabler/icons-react": "^3.34.1",
64
64
  "chart.js": "^4.5.0",
65
65
  "chartjs-plugin-datalabels": "^2.2.0",
@@ -1,124 +0,0 @@
1
- import { s as R, j as t, Q as I, x as S, y as L, z as N, A as k, n as D, o as M, R as x, p as b, U as T, q as _ } from "./Color.type.emb-C4VcPjfM.js";
2
- import f, { useRef as w } from "react";
3
- import { useTheme as j } from "@embeddable.com/react";
4
- import { a as p, i as C, I as A } from "./component.inputs.constants-DN1efWXx.js";
5
- /**
6
- * @license @tabler/icons-react v3.36.1 - MIT
7
- *
8
- * This source code is licensed under the MIT license.
9
- * See the LICENSE file in the root directory of this source tree.
10
- */
11
- const F = [["path", { d: "M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-0" }], ["path", { d: "M11 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-1" }], ["path", { d: "M11 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-2" }]], $ = R("outline", "dots-vertical", "DotsVertical", F), E = "_chartCard_84eo6_1", H = "_fixedContent_84eo6_6", O = "_loading_84eo6_13", P = "_hidden_84eo6_18", U = "_chartCardRightContent_84eo6_22", o = {
12
- chartCard: E,
13
- fixedContent: H,
14
- loading: O,
15
- hidden: P,
16
- chartCardRightContent: U
17
- }, V = "_loading_1amm4_7", q = {
18
- loading: V
19
- }, v = () => /* @__PURE__ */ t.jsx(I, { className: q.loading }), z = "_list_mwshn_1", B = {
20
- list: z
21
- };
22
- function K({ src: s, className: a, ...r }) {
23
- const e = decodeURIComponent(s.replace(/^data:image\/svg\+xml,/, ""));
24
- return /* @__PURE__ */ t.jsx("div", { className: a, ...r, dangerouslySetInnerHTML: { __html: e } });
25
- }
26
- const Q = (s) => {
27
- const a = j();
28
- p(a);
29
- const [r, e] = f.useState(!1), i = a.defaults.chartMenuOptions ?? [];
30
- if (i.length === 0)
31
- return null;
32
- const l = (n) => {
33
- setTimeout(() => {
34
- Promise.resolve(n()).finally(() => e(!1));
35
- }, 100);
36
- }, d = (n) => {
37
- if (e(!0), s.onCustomDownload) {
38
- s.onCustomDownload((c) => l(() => n(c)));
39
- return;
40
- }
41
- l(() => n({ ...s, theme: a }));
42
- };
43
- return /* @__PURE__ */ t.jsx(
44
- S,
45
- {
46
- side: "bottom",
47
- align: "end",
48
- triggerComponent: r ? /* @__PURE__ */ t.jsx(v, {}) : /* @__PURE__ */ t.jsx(k, { icon: $ }),
49
- children: /* @__PURE__ */ t.jsx(L, { className: B.list, autoFocus: !0, children: i.map((n, c) => {
50
- const h = C.t(n.labelKey);
51
- return /* @__PURE__ */ t.jsx(
52
- N,
53
- {
54
- label: h,
55
- onClick: () => d(n.onClick),
56
- startIcon: n.iconSrc ? /* @__PURE__ */ t.jsx(K, { src: n.iconSrc }) : void 0
57
- },
58
- c
59
- );
60
- }) })
61
- }
62
- );
63
- }, G = f.forwardRef(
64
- ({ title: s, subtitle: a, children: r, data: e, errorMessage: i, dimensionsAndMeasures: l = [], onCustomDownload: d }, n) => {
65
- var u;
66
- const c = j();
67
- p(c);
68
- const h = w(null), g = !!(e != null && e.data && ((u = e.data) == null ? void 0 : u.length) > 0), m = !e || (e == null ? void 0 : e.isLoading), y = () => m && !g ? /* @__PURE__ */ t.jsx(T, {}) : i ? /* @__PURE__ */ t.jsx(
69
- _,
70
- {
71
- variant: "error",
72
- icon: A,
73
- title: C.t("charts.errorTitle"),
74
- message: i
75
- }
76
- ) : g ? r : /* @__PURE__ */ t.jsx(
77
- _,
78
- {
79
- title: C.t("charts.emptyTitle"),
80
- message: C.t("charts.emptyMessage")
81
- }
82
- );
83
- return /* @__PURE__ */ t.jsxs(D, { className: o.chartCard, children: [
84
- /* @__PURE__ */ t.jsx(
85
- M,
86
- {
87
- title: s,
88
- subtitle: a,
89
- rightContent: /* @__PURE__ */ t.jsxs("div", { className: o.chartCardRightContent, children: [
90
- /* @__PURE__ */ t.jsx(
91
- "div",
92
- {
93
- className: x(o.fixedContent, m ? o.loading : o.hidden),
94
- children: /* @__PURE__ */ t.jsx(v, {})
95
- }
96
- ),
97
- /* @__PURE__ */ t.jsx(
98
- "div",
99
- {
100
- className: x(o.fixedContent, m ? o.hidden : o.visible),
101
- children: /* @__PURE__ */ t.jsx(
102
- Q,
103
- {
104
- title: s,
105
- containerRef: h,
106
- data: e == null ? void 0 : e.data,
107
- dimensionsAndMeasures: l,
108
- onCustomDownload: d
109
- }
110
- )
111
- }
112
- )
113
- ] })
114
- }
115
- ),
116
- /* @__PURE__ */ t.jsx(b, { ref: d ? n : h, children: y() })
117
- ] });
118
- }
119
- );
120
- G.displayName = "ChartCard";
121
- export {
122
- G as C
123
- };
124
- //# sourceMappingURL=ChartCard-B5IaBBTs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChartCard-B5IaBBTs.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconDotsVertical.mjs","../src/components/charts/shared/ChartCard/ChartCardLoading/ChartCardLoading.tsx","../src/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.tsx","../src/components/charts/shared/ChartCard/ChartCard.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.36.1 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M11 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M11 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-2\" }]];\nconst IconDotsVertical = createReactComponent(\"outline\", \"dots-vertical\", \"DotsVertical\", __iconNode);\n\nexport { __iconNode, IconDotsVertical as default };\n//# sourceMappingURL=IconDotsVertical.mjs.map\n","import { IconLoader2 } from '@tabler/icons-react';\nimport styles from './ChartCardLoading.module.css';\n\nexport const ChartCardLoading = () => <IconLoader2 className={styles.loading} />;\n","import { IconDotsVertical } from '@tabler/icons-react';\nimport React from 'react';\nimport { useTheme } from '@embeddable.com/react';\nimport { ChartCardLoading } from '../ChartCardLoading/ChartCardLoading';\nimport { i18n, i18nSetup } from '../../../../../theme/i18n/i18n';\nimport { Theme } from '../../../../../theme/theme.types';\nimport {\n Dropdown,\n ActionIcon,\n SelectFieldContent,\n SelectListOption,\n} from '@embeddable.com/remarkable-ui';\nimport styles from './ChartCardMenuPro.module.css';\nimport { ChartCardMenuOptionOnClickProps } from '../../../../../theme/defaults/defaults.ChartCardMenu.constants';\n\ntype InlineSvgFromDataProps = React.HTMLAttributes<HTMLSpanElement> & {\n src: string;\n};\n\nexport function InlineSvgFromData({ src, className, ...rest }: InlineSvgFromDataProps) {\n // Remove prefix and URL-decode the SVG markup\n const svgMarkup = decodeURIComponent(src.replace(/^data:image\\/svg\\+xml,/, ''));\n\n return <div className={className} {...rest} dangerouslySetInnerHTML={{ __html: svgMarkup }} />;\n}\n\ntype ChartCardMenuProProps = Omit<ChartCardMenuOptionOnClickProps, 'theme'>;\n\nexport const ChartCardMenuPro: React.FC<ChartCardMenuProProps> = (props) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const [isLoading, setIsLoading] = React.useState(false);\n\n const options = theme.defaults.chartMenuOptions ?? [];\n\n if (options.length === 0) {\n return null;\n }\n\n const startAction = (onClick: () => void | Promise<void>) => {\n setTimeout(() => {\n Promise.resolve(onClick()).finally(() => setIsLoading(false));\n }, 100);\n };\n\n const handleExport = (onClick: (props: ChartCardMenuOptionOnClickProps) => void) => {\n setIsLoading(true);\n if (props.onCustomDownload) {\n props.onCustomDownload((args) => startAction(() => onClick(args)));\n return;\n }\n startAction(() => onClick({ ...props, theme }));\n };\n\n return (\n <Dropdown\n side=\"bottom\"\n align=\"end\"\n triggerComponent={isLoading ? <ChartCardLoading /> : <ActionIcon icon={IconDotsVertical} />}\n >\n <SelectFieldContent className={styles.list} autoFocus>\n {options.map((option, index) => {\n const label = i18n.t(option.labelKey);\n\n return (\n <SelectListOption\n key={index}\n label={label}\n onClick={() => handleExport(option.onClick)}\n startIcon={option.iconSrc ? <InlineSvgFromData src={option.iconSrc} /> : undefined}\n />\n );\n })}\n </SelectFieldContent>\n </Dropdown>\n );\n};\n","import React, { CSSProperties, useRef } from 'react';\nimport { IconAlertCircle } from '@tabler/icons-react';\nimport {\n Card,\n CardContent,\n CardFeedback,\n CardHeader,\n Skeleton,\n} from '@embeddable.com/remarkable-ui';\nimport styles from './ChartCard.module.css';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { useTheme } from '@embeddable.com/react';\nimport { ChartCardLoading } from './ChartCardLoading/ChartCardLoading';\nimport { ChartCardMenuPro } from './ChartCardMenuPro/ChartCardMenuPro';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport clsx from 'clsx';\nimport { ChartCardMenuOptionOnClickProps } from '../../../../theme/defaults/defaults.ChartCardMenu.constants';\n\ntype ChartCardProps = {\n title: string;\n subtitle?: string;\n children: React.ReactNode;\n data: DataResponse;\n errorMessage?: string;\n style?: CSSProperties;\n dimensionsAndMeasures?: (Dimension | Measure)[];\n onCustomDownload?: (props: (props: ChartCardMenuOptionOnClickProps) => void) => void;\n};\n\nexport const ChartCard = React.forwardRef<HTMLDivElement, ChartCardProps>(\n (\n { title, subtitle, children, data, errorMessage, dimensionsAndMeasures = [], onCustomDownload },\n ref,\n ) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const chartRef = useRef<HTMLDivElement>(null);\n\n const hasData = Boolean(data?.data && data.data?.length > 0);\n\n const isLoading = !data || data?.isLoading;\n\n const getDisplay = () => {\n if (isLoading && !hasData) {\n return <Skeleton />;\n }\n\n if (errorMessage) {\n return (\n <CardFeedback\n variant=\"error\"\n icon={IconAlertCircle}\n title={i18n.t('charts.errorTitle')}\n message={errorMessage}\n />\n );\n }\n\n if (!hasData) {\n return (\n <CardFeedback\n title={i18n.t('charts.emptyTitle')}\n message={i18n.t('charts.emptyMessage')}\n />\n );\n }\n\n return children;\n };\n\n return (\n <Card className={styles.chartCard}>\n <CardHeader\n title={title}\n subtitle={subtitle}\n rightContent={\n <div className={styles.chartCardRightContent}>\n <div\n className={clsx(styles.fixedContent, isLoading ? styles.loading : styles.hidden)}\n >\n <ChartCardLoading />\n </div>\n <div\n className={clsx(styles.fixedContent, isLoading ? styles.hidden : styles.visible)}\n >\n <ChartCardMenuPro\n title={title}\n containerRef={chartRef}\n data={data?.data}\n dimensionsAndMeasures={dimensionsAndMeasures}\n onCustomDownload={onCustomDownload}\n />\n </div>\n </div>\n }\n />\n\n <CardContent ref={onCustomDownload ? ref : chartRef}>{getDisplay()}</CardContent>\n </Card>\n );\n },\n);\n\nChartCard.displayName = 'ChartCard';\n"],"names":["__iconNode","IconDotsVertical","createReactComponent","ChartCardLoading","jsx","IconLoader2","styles","InlineSvgFromData","src","className","rest","svgMarkup","ChartCardMenuPro","props","theme","useTheme","i18nSetup","isLoading","setIsLoading","React","options","startAction","onClick","handleExport","args","Dropdown","ActionIcon","SelectFieldContent","option","index","label","i18n","SelectListOption","ChartCard","title","subtitle","children","data","errorMessage","dimensionsAndMeasures","onCustomDownload","ref","chartRef","useRef","hasData","_a","getDisplay","Skeleton","CardFeedback","IconAlertCircle","jsxs","Card","CardHeader","clsx","CardContent"],"mappings":"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","x_google_ignoreList":[0]}