@embeddable.com/remarkable-ui 0.1.11 → 0.1.13

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 (108) 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/{BaseButton-8lCm-nHV.js → BaseButton-BbhHQD9t.js} +2 -2
  8. package/dist/{BaseButton-8lCm-nHV.js.map → BaseButton-BbhHQD9t.js.map} +1 -1
  9. package/dist/ChartCard-11lQWjXq.js +106 -0
  10. package/dist/ChartCard-11lQWjXq.js.map +1 -0
  11. package/dist/ComparisonPeriod.type.emb-D51Sg3wt.js +15 -0
  12. package/dist/ComparisonPeriod.type.emb-D51Sg3wt.js.map +1 -0
  13. package/dist/ComparisonPeriodSelectFieldPro.js +45 -53
  14. package/dist/ComparisonPeriodSelectFieldPro.js.map +1 -1
  15. package/dist/DateRangeSelectFieldPro.js +3 -3
  16. package/dist/DonutChartPro.js +2 -2
  17. package/dist/DonutLabelChartPro.js +2 -2
  18. package/dist/{EditorCard-_U0it3Eb.js → EditorCard-BriyqUva.js} +17 -17
  19. package/dist/{EditorCard-_U0it3Eb.js.map → EditorCard-BriyqUva.js.map} +1 -1
  20. package/dist/KpiChart-BLMULQMh.js +77 -0
  21. package/dist/KpiChart-BLMULQMh.js.map +1 -0
  22. package/dist/KpiChartNumberComparisonPro.js +156 -0
  23. package/dist/KpiChartNumberComparisonPro.js.map +1 -0
  24. package/dist/KpiChartNumberPro.js +47 -0
  25. package/dist/KpiChartNumberPro.js.map +1 -0
  26. package/dist/MultiSelectFieldPro.js +2 -3
  27. package/dist/MultiSelectFieldPro.js.map +1 -1
  28. package/dist/PieChartPro.js +2 -2
  29. package/dist/{SingleSelectField-Coqlrz4l.js → SingleSelectField-D1E9OJxC.js} +3 -3
  30. package/dist/{SingleSelectField-Coqlrz4l.js.map → SingleSelectField-D1E9OJxC.js.map} +1 -1
  31. package/dist/SingleSelectFieldPro.js +2 -2
  32. package/dist/{charts.fillGaps.hooks-BdlMosSu.js → charts.fillGaps.hooks-lZwsRfDF.js} +4 -4
  33. package/dist/{charts.fillGaps.hooks-BdlMosSu.js.map → charts.fillGaps.hooks-lZwsRfDF.js.map} +1 -1
  34. package/dist/{component.constants-6skM25Z_.js → component.constants-DIhZCTG3.js} +120 -84
  35. package/dist/component.constants-DIhZCTG3.js.map +1 -0
  36. package/dist/{editors.timeRange.utils-Dv6T01Ys.js → date.utils-CNVHSCO8.js} +18 -31
  37. package/dist/date.utils-CNVHSCO8.js.map +1 -0
  38. package/dist/editors.timeRange.utils-CG333N7U.js +18 -0
  39. package/dist/editors.timeRange.utils-CG333N7U.js.map +1 -0
  40. package/dist/embeddable-components.json +8 -6
  41. package/dist/embeddable-theme-2b917.js +974 -964
  42. package/dist/{formatter.utils-DMMBiLDD.js → formatter.utils-CuZlh4EL.js} +2 -2
  43. package/dist/{formatter.utils-DMMBiLDD.js.map → formatter.utils-CuZlh4EL.js.map} +1 -1
  44. package/dist/{index-DufpVBMb.js → index-B7KNswsW.js} +8 -8
  45. package/dist/{index-DufpVBMb.js.map → index-B7KNswsW.js.map} +1 -1
  46. package/dist/{index-j6OFGLY6.js → index-B_4rK6tI.js} +12 -11
  47. package/dist/{index-j6OFGLY6.js.map → index-B_4rK6tI.js.map} +1 -1
  48. package/dist/{index-D7GTSbzO.js → index-Bgj2EBb8.js} +10 -10
  49. package/dist/{index-D7GTSbzO.js.map → index-Bgj2EBb8.js.map} +1 -1
  50. package/dist/{index-B3vcfrrk.js → index-C-zjH8iP.js} +5 -5
  51. package/dist/{index-B3vcfrrk.js.map → index-C-zjH8iP.js.map} +1 -1
  52. package/dist/{index-pxtCdM0I.js → index-C8pGCEGw.js} +5 -5
  53. package/dist/{index-pxtCdM0I.js.map → index-C8pGCEGw.js.map} +1 -1
  54. package/dist/{index-B9XcOUp_.js → index-DqKfDjMs.js} +25 -25
  55. package/dist/{index-B9XcOUp_.js.map → index-DqKfDjMs.js.map} +1 -1
  56. package/dist/index.js +115 -107
  57. package/dist/index.js.map +1 -1
  58. package/dist/{object.utils-DB9Hp3Uk.js → object.utils-CMJleY-P.js} +2511 -2602
  59. package/dist/object.utils-CMJleY-P.js.map +1 -0
  60. package/dist/{pies.utils-DrVWhPX3.js → pies.utils-DluC4GlY.js} +4 -4
  61. package/dist/{pies.utils-DrVWhPX3.js.map → pies.utils-DluC4GlY.js.map} +1 -1
  62. package/dist/remarkable-pro/components/charts/kpis/KpiChartNumberComparisonPro/index.d.ts +19 -0
  63. package/dist/remarkable-pro/components/charts/kpis/KpiChartNumberComparisonPro/index.d.ts.map +1 -0
  64. package/dist/remarkable-pro/components/charts/kpis/KpiChartNumberPro/index.d.ts +11 -0
  65. package/dist/remarkable-pro/components/charts/kpis/KpiChartNumberPro/index.d.ts.map +1 -0
  66. package/dist/remarkable-pro/components/component.constants.d.ts +35 -0
  67. package/dist/remarkable-pro/components/component.constants.d.ts.map +1 -1
  68. package/dist/remarkable-pro/components/utils/timeRange.utils.d.ts +5 -0
  69. package/dist/remarkable-pro/components/utils/timeRange.utils.d.ts.map +1 -0
  70. package/dist/remarkable-pro/theme/defaults/defaults.ComparisonPeriods.constants.d.ts +9 -0
  71. package/dist/remarkable-pro/theme/defaults/defaults.ComparisonPeriods.constants.d.ts.map +1 -0
  72. package/dist/remarkable-pro/theme/defaults/defaults.DateRanges.constants.d.ts +9 -0
  73. package/dist/remarkable-pro/theme/defaults/defaults.DateRanges.constants.d.ts.map +1 -0
  74. package/dist/remarkable-pro/theme/i18n/translations/de.d.ts.map +1 -1
  75. package/dist/remarkable-pro/theme/i18n/translations/en.d.ts.map +1 -1
  76. package/dist/remarkable-pro/theme/theme.constants.d.ts.map +1 -1
  77. package/dist/remarkable-pro/theme/theme.types.d.ts +7 -0
  78. package/dist/remarkable-pro/theme/theme.types.d.ts.map +1 -1
  79. package/dist/remarkable-ui/charts/kpis/KpiChart.d.ts +4 -0
  80. package/dist/remarkable-ui/charts/kpis/KpiChart.d.ts.map +1 -0
  81. package/dist/remarkable-ui/charts/{kpi/Kpi.stories.d.ts → kpis/KpiChart.stories.d.ts} +10 -2
  82. package/dist/remarkable-ui/charts/kpis/KpiChart.stories.d.ts.map +1 -0
  83. package/dist/remarkable-ui/charts/kpis/KpiChart.types.d.ts +13 -0
  84. package/dist/remarkable-ui/charts/kpis/KpiChart.types.d.ts.map +1 -0
  85. package/dist/remarkable-ui/charts/kpis/components/KpiChartChange.d.ts +8 -0
  86. package/dist/remarkable-ui/charts/kpis/components/KpiChartChange.d.ts.map +1 -0
  87. package/dist/remarkable-ui/index.d.ts +1 -0
  88. package/dist/remarkable-ui/index.d.ts.map +1 -1
  89. package/dist/remarkable-ui/shared/Typography/Typography.d.ts +2 -1
  90. package/dist/remarkable-ui/shared/Typography/Typography.d.ts.map +1 -1
  91. package/dist/remarkable-ui/types/css.types.d.ts +2 -0
  92. package/dist/remarkable-ui/types/css.types.d.ts.map +1 -0
  93. package/dist/remarkable-ui.css +559 -1
  94. package/package.json +3 -3
  95. package/dist/component.constants-6skM25Z_.js.map +0 -1
  96. package/dist/editors.timeRange.utils-Dv6T01Ys.js.map +0 -1
  97. package/dist/object.utils-DB9Hp3Uk.js.map +0 -1
  98. package/dist/remarkable-pro/components/editors/ComparisonPeriodSelectFieldPro/ComparisonPeriodSelectFieldPro.constants.d.ts +0 -3
  99. package/dist/remarkable-pro/components/editors/ComparisonPeriodSelectFieldPro/ComparisonPeriodSelectFieldPro.constants.d.ts.map +0 -1
  100. package/dist/remarkable-pro/components/editors/DateRangeSelectFieldPro/DateRangeSelectFieldPro.constants.d.ts +0 -3
  101. package/dist/remarkable-pro/components/editors/DateRangeSelectFieldPro/DateRangeSelectFieldPro.constants.d.ts.map +0 -1
  102. package/dist/remarkable-ui/charts/kpi/Kpi.d.ts +0 -4
  103. package/dist/remarkable-ui/charts/kpi/Kpi.d.ts.map +0 -1
  104. package/dist/remarkable-ui/charts/kpi/Kpi.stories.d.ts.map +0 -1
  105. package/dist/remarkable-ui/charts/kpi/Kpi.types.d.ts +0 -9
  106. package/dist/remarkable-ui/charts/kpi/Kpi.types.d.ts.map +0 -1
  107. package/dist/remarkable-ui/charts/kpi/KpiChange.d.ts +0 -8
  108. package/dist/remarkable-ui/charts/kpi/KpiChange.d.ts.map +0 -1
@@ -0,0 +1,77 @@
1
+ import { Z as x, j as n, a1 as _, a6 as l } from "./component.constants-DIhZCTG3.js";
2
+ /**
3
+ * @license @tabler/icons-react v3.34.1 - MIT
4
+ *
5
+ * This source code is licensed under the MIT license.
6
+ * See the LICENSE file in the root directory of this source tree.
7
+ */
8
+ const j = [["path", { d: "M3 7l6 6l4 -4l8 8", key: "svg-0" }], ["path", { d: "M21 10l0 7l-7 0", key: "svg-1" }]], v = x("outline", "trending-down", "TrendingDown", j);
9
+ /**
10
+ * @license @tabler/icons-react v3.34.1 - MIT
11
+ *
12
+ * This source code is licensed under the MIT license.
13
+ * See the LICENSE file in the root directory of this source tree.
14
+ */
15
+ const m = [["path", { d: "M3 17l6 -6l4 4l8 -8", key: "svg-0" }], ["path", { d: "M14 7l7 0l0 7", key: "svg-1" }]], y = x("outline", "trending-up", "TrendingUp", m), f = "_kpiChartContainer_joxtc_1", N = "_kpiComparisonContainer_joxtc_26", $ = "_kpiChangeHidden_joxtc_47", C = {
16
+ kpiChartContainer: f,
17
+ kpiComparisonContainer: N,
18
+ kpiChangeHidden: $
19
+ }, u = "_kpiChartChangeContainer_13m4l_1", T = "_kpiChangeBadge_13m4l_13", B = "_positive_13m4l_36", D = "_negative_13m4l_41", t = {
20
+ kpiChartChangeContainer: u,
21
+ kpiChangeBadge: T,
22
+ positive: B,
23
+ negative: D
24
+ }, H = (i, e) => i ? e ? t.negative : t.positive : e ? t.positive : t.negative, M = ({
25
+ value: i,
26
+ comparisonValue: e = 0,
27
+ showChangeAsPercentage: s,
28
+ invertChangeColors: g = !1,
29
+ comparisonLabel: p,
30
+ className: h
31
+ }) => {
32
+ const a = i - e, o = a > 0;
33
+ let r = a.toString();
34
+ if (s) {
35
+ const c = e === 0 ? 0 : a / e * 100;
36
+ r = `${c % 1 === 0 ? c : c.toFixed(1).replace(/\.?0+$/, "")}%`;
37
+ }
38
+ const d = `${o ? "+" : ""}${r}`, k = o ? y : v;
39
+ return /* @__PURE__ */ n.jsxs("div", { className: _(h, t.kpiChartChangeContainer), children: [
40
+ /* @__PURE__ */ n.jsxs("div", { className: _(t.kpiChangeBadge, H(o, g)), children: [
41
+ /* @__PURE__ */ n.jsx(k, {}),
42
+ /* @__PURE__ */ n.jsx(l, { children: d })
43
+ ] }),
44
+ p && /* @__PURE__ */ n.jsx(l, { children: p })
45
+ ] });
46
+ }, K = ({
47
+ value: i,
48
+ changeFontSize: e,
49
+ comparisonValue: s,
50
+ comparisonLabel: g,
51
+ invertChangeColors: p,
52
+ showChangeAsPercentage: h,
53
+ equalComparisonLabel: a = "No change",
54
+ valueFontSize: o,
55
+ valueFormatter: r
56
+ }) => {
57
+ const d = s !== void 0, k = d && s === i, c = r ? r(i) : i;
58
+ return /* @__PURE__ */ n.jsxs("div", { className: C.kpiChartContainer, children: [
59
+ /* @__PURE__ */ n.jsx(l, { className: C.kpiValue, style: { fontSize: o }, children: c }),
60
+ /* @__PURE__ */ n.jsx("div", { className: C.kpiComparisonContainer, style: { fontSize: e }, children: k ? /* @__PURE__ */ n.jsx(l, { children: a }) : /* @__PURE__ */ n.jsx(
61
+ M,
62
+ {
63
+ className: _(!d && C.kpiChangeHidden),
64
+ value: i,
65
+ comparisonValue: s,
66
+ invertChangeColors: p,
67
+ showChangeAsPercentage: h,
68
+ comparisonLabel: g,
69
+ changeFontSize: e
70
+ }
71
+ ) })
72
+ ] });
73
+ };
74
+ export {
75
+ K
76
+ };
77
+ //# sourceMappingURL=KpiChart-BLMULQMh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KpiChart-BLMULQMh.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconTrendingDown.mjs","../node_modules/@tabler/icons-react/dist/esm/icons/IconTrendingUp.mjs","../src/remarkable-ui/charts/kpis/components/KpiChartChange.tsx","../src/remarkable-ui/charts/kpis/KpiChart.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.34.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\": \"M3 7l6 6l4 -4l8 8\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M21 10l0 7l-7 0\", \"key\": \"svg-1\" }]];\nconst IconTrendingDown = createReactComponent(\"outline\", \"trending-down\", \"TrendingDown\", __iconNode);\n\nexport { __iconNode, IconTrendingDown as default };\n//# sourceMappingURL=IconTrendingDown.mjs.map\n","/**\n * @license @tabler/icons-react v3.34.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\": \"M3 17l6 -6l4 4l8 -8\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M14 7l7 0l0 7\", \"key\": \"svg-1\" }]];\nconst IconTrendingUp = createReactComponent(\"outline\", \"trending-up\", \"TrendingUp\", __iconNode);\n\nexport { __iconNode, IconTrendingUp as default };\n//# sourceMappingURL=IconTrendingUp.mjs.map\n","import { FC } from 'react';\nimport styles from './KpiChartChange.module.css';\nimport clsx from 'clsx';\nimport { Typography } from '../../../shared/Typography/Typography';\nimport { IconTrendingDown, IconTrendingUp } from '@tabler/icons-react';\nimport { KpiChartProps } from '../KpiChart.types';\n\nconst getChangeClass = (isPositive: boolean, invertChangeColors: boolean) => {\n if (isPositive) return invertChangeColors ? styles.negative : styles.positive;\n return invertChangeColors ? styles.positive : styles.negative;\n};\n\ntype KpiChartChangeProps = KpiChartProps & { className?: string };\n\nexport const KpiChartChange: FC<KpiChartChangeProps> = ({\n value,\n comparisonValue = 0,\n showChangeAsPercentage,\n invertChangeColors = false,\n comparisonLabel,\n className,\n}) => {\n const difference = value - comparisonValue;\n const isPositive = difference > 0;\n\n let differenceLabel: string = difference.toString();\n\n if (showChangeAsPercentage) {\n const percentage = comparisonValue === 0 ? 0 : (difference / comparisonValue) * 100;\n\n const percentageDisplay =\n percentage % 1 === 0 ? percentage : percentage.toFixed(1).replace(/\\.?0+$/, '');\n\n differenceLabel = `${percentageDisplay}%`;\n }\n\n const displayValue = `${isPositive ? '+' : ''}${differenceLabel}`;\n\n const Icon = isPositive ? IconTrendingUp : IconTrendingDown;\n\n return (\n <div className={clsx(className, styles.kpiChartChangeContainer)}>\n <div className={clsx(styles.kpiChangeBadge, getChangeClass(isPositive, invertChangeColors))}>\n <Icon />\n <Typography>{displayValue}</Typography>\n </div>\n {comparisonLabel && <Typography>{comparisonLabel}</Typography>}\n </div>\n );\n};\n","import { FC } from 'react';\nimport { Typography } from '../../shared/Typography/Typography';\nimport styles from './KpiChart.module.css';\nimport { KpiChartChange } from './components/KpiChartChange';\nimport { KpiChartProps } from './KpiChart.types';\nimport clsx from 'clsx';\n\nexport const KpiChart: FC<KpiChartProps> = ({\n value,\n changeFontSize,\n comparisonValue,\n comparisonLabel,\n invertChangeColors,\n showChangeAsPercentage,\n equalComparisonLabel = 'No change',\n valueFontSize,\n valueFormatter,\n}) => {\n const hasComparisonValue = comparisonValue !== undefined;\n const equalComparison = hasComparisonValue && comparisonValue === value;\n\n const displayValue = valueFormatter ? valueFormatter(value) : value;\n\n return (\n <div className={styles.kpiChartContainer}>\n <Typography className={styles.kpiValue} style={{ fontSize: valueFontSize }}>\n {displayValue}\n </Typography>\n <div className={styles.kpiComparisonContainer} style={{ fontSize: changeFontSize }}>\n {equalComparison ? (\n <Typography>{equalComparisonLabel}</Typography>\n ) : (\n <KpiChartChange\n className={clsx(!hasComparisonValue && styles.kpiChangeHidden)}\n value={value}\n comparisonValue={comparisonValue}\n invertChangeColors={invertChangeColors}\n showChangeAsPercentage={showChangeAsPercentage}\n comparisonLabel={comparisonLabel}\n changeFontSize={changeFontSize}\n />\n )}\n </div>\n </div>\n );\n};\n"],"names":["__iconNode","IconTrendingDown","createReactComponent","IconTrendingUp","getChangeClass","isPositive","invertChangeColors","styles","KpiChartChange","value","comparisonValue","showChangeAsPercentage","comparisonLabel","className","difference","differenceLabel","percentage","displayValue","Icon","clsx","jsxs","jsx","Typography","KpiChart","changeFontSize","equalComparisonLabel","valueFontSize","valueFormatter","hasComparisonValue","equalComparison"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -0,0 +1,156 @@
1
+ import { useTheme as x, defineComponent as V } from "@embeddable.com/react";
2
+ import { S as j, i as w, r as A, j as f, d as L, w as O, T as q, U as E, t as I, c as M, W as v, X as P, o as h } from "./component.constants-DIhZCTG3.js";
3
+ import { C as U } from "./ChartCard-11lQWjXq.js";
4
+ import { useEffect as Y } from "react";
5
+ import { K as B } from "./KpiChart-BLMULQMh.js";
6
+ import { g as J } from "./formatter.utils-CuZlh4EL.js";
7
+ import { C as W } from "./ComparisonPeriod.type.emb-D51Sg3wt.js";
8
+ import { l as b } from "./date.utils-CNVHSCO8.js";
9
+ const X = (e, o, a) => {
10
+ var t;
11
+ if (!e || !o)
12
+ return;
13
+ const r = e != null && e.relativeTimeString ? (t = a.defaults.dateRangesOptions.find((i) => i.value === (e == null ? void 0 : e.relativeTimeString))) == null ? void 0 : t.getRange() : e, n = a.defaults.comparisonPeriodsOptions.find(
14
+ (i) => i.value === o
15
+ );
16
+ return n == null ? void 0 : n.getRange(r);
17
+ }, _ = (e, o) => {
18
+ const a = o.defaults.comparisonPeriodsOptions.find(
19
+ (r) => r.value === e
20
+ );
21
+ return a ? j(a.label) : "";
22
+ }, $ = (e) => {
23
+ var g, d, u, C;
24
+ const o = x();
25
+ w(o);
26
+ const { title: a, description: r } = A(e), {
27
+ changeFontSize: n,
28
+ comparisonPeriod: t,
29
+ comparisonDateRange: i,
30
+ displayChangeAsPercentage: R,
31
+ fontSize: S,
32
+ measure: s,
33
+ primaryDateRange: p,
34
+ results: m,
35
+ resultsComparison: l,
36
+ reversePositiveNegativeColors: y,
37
+ setComparisonDateRange: D
38
+ } = e;
39
+ Y(() => {
40
+ const c = X(
41
+ p,
42
+ t,
43
+ o
44
+ );
45
+ D(c);
46
+ }, [t, JSON.stringify(p)]);
47
+ const T = (d = (g = m.data) == null ? void 0 : g[0]) == null ? void 0 : d[s.name], N = i ? (C = (u = l == null ? void 0 : l.data) == null ? void 0 : u[0]) == null ? void 0 : C[s.name] : void 0, F = J(o), z = (c) => F.data(s, c), K = `vs ${_(t, o).toLowerCase()}`;
48
+ return /* @__PURE__ */ f.jsx(
49
+ U,
50
+ {
51
+ data: m,
52
+ dimensionsAndMeasures: [s],
53
+ errorMessage: m.error,
54
+ subtitle: r,
55
+ title: a,
56
+ children: /* @__PURE__ */ f.jsx(
57
+ B,
58
+ {
59
+ value: T,
60
+ comparisonValue: N,
61
+ valueFormatter: z,
62
+ valueFontSize: S,
63
+ changeFontSize: n,
64
+ invertChangeColors: y,
65
+ showChangeAsPercentage: R,
66
+ comparisonLabel: K
67
+ }
68
+ )
69
+ }
70
+ );
71
+ }, k = {
72
+ name: "KpiChartNumberComparisonPro",
73
+ label: "Kpi Chart - Number Comparison",
74
+ category: "Kpi Charts",
75
+ inputs: [
76
+ L,
77
+ O,
78
+ { ...q, name: "timeProperty", label: "Time Property" },
79
+ {
80
+ ...E,
81
+ name: "primaryDateRange",
82
+ label: "Primary Date Range",
83
+ description: "You can also connect this to a date range selector using its variable",
84
+ category: "Component Data"
85
+ },
86
+ {
87
+ name: "comparisonPeriod",
88
+ type: W,
89
+ label: "Comparison Period",
90
+ description: "You can also connect this to a comparison period selector using its variable",
91
+ category: "Component Data"
92
+ },
93
+ I,
94
+ M,
95
+ {
96
+ ...v,
97
+ name: "displayChangeAsPercentage",
98
+ label: "Display Change as %",
99
+ defaultValue: !1
100
+ },
101
+ {
102
+ ...v,
103
+ name: "reversePositiveNegativeColors",
104
+ label: "Reverse Positive/Negative Colors",
105
+ defaultValue: !1
106
+ },
107
+ { ...P, name: "fontSize", label: "Font Size", defaultValue: 44, required: !0 },
108
+ {
109
+ ...P,
110
+ name: "changeFontSize",
111
+ label: "Change Font Size",
112
+ defaultValue: 16,
113
+ required: !0
114
+ }
115
+ ]
116
+ }, te = V($, k, {
117
+ /* @ts-expect-error - to be fixed in @embeddable.com/react */
118
+ props: (e, [o, a]) => ({
119
+ ...e,
120
+ comparisonDateRange: o == null ? void 0 : o.comparisonDateRange,
121
+ setComparisonDateRange: (r) => a({ comparisonDateRange: r }),
122
+ results: h({
123
+ from: e.dataset,
124
+ select: [e.measure],
125
+ limit: 1,
126
+ filters: e.primaryDateRange && e.timeProperty ? [
127
+ {
128
+ property: e.timeProperty,
129
+ operator: "inDateRange",
130
+ value: e.primaryDateRange
131
+ }
132
+ ] : void 0
133
+ }),
134
+ resultsComparison: e.primaryDateRange && e.timeProperty && (o != null && o.comparisonDateRange) ? h({
135
+ from: e.dataset,
136
+ select: [e.measure],
137
+ limit: 1,
138
+ filters: [
139
+ {
140
+ property: e.timeProperty,
141
+ operator: "inDateRange",
142
+ value: {
143
+ from: b(o.comparisonDateRange.from),
144
+ to: b(o.comparisonDateRange.to),
145
+ relativeTimeString: ""
146
+ }
147
+ }
148
+ ]
149
+ }) : void 0
150
+ })
151
+ });
152
+ export {
153
+ te as default,
154
+ k as meta
155
+ };
156
+ //# sourceMappingURL=KpiChartNumberComparisonPro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KpiChartNumberComparisonPro.js","sources":["../src/remarkable-pro/components/utils/timeRange.utils.ts","../src/remarkable-pro/components/charts/kpis/KpiChartNumberComparisonPro/index.tsx","../src/remarkable-pro/components/charts/kpis/KpiChartNumberComparisonPro/KpiChartNumberComparisonPro.emb.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","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { DataResponse, Measure, TimeRange } from '@embeddable.com/core';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport { KpiChart } from '../../../../../remarkable-ui';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\nimport { useEffect } from 'react';\nimport {\n getComparisonPeriodDateRange,\n getComparisonPeriodLabel,\n} from '../../../utils/timeRange.utils';\n\ntype KpiChartNumberComparisonProProp = {\n changeFontSize: number;\n comparisonPeriod?: string;\n description: string;\n displayChangeAsPercentage?: boolean;\n fontSize: number;\n measure: Measure;\n primaryDateRange: TimeRange;\n results: DataResponse;\n resultsComparison: DataResponse | undefined;\n reversePositiveNegativeColors?: boolean;\n title: string;\n comparisonDateRange: TimeRange;\n setComparisonDateRange: (dateRange: TimeRange) => void;\n};\n\nconst KpiChartNumberComparisonPro = (props: KpiChartNumberComparisonProProp) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description } = resolveI18nProps(props);\n const {\n changeFontSize,\n comparisonPeriod,\n comparisonDateRange,\n displayChangeAsPercentage,\n fontSize,\n measure,\n primaryDateRange,\n results,\n resultsComparison,\n reversePositiveNegativeColors,\n setComparisonDateRange,\n } = props;\n\n useEffect(() => {\n const newComparisonDateRange = getComparisonPeriodDateRange(\n primaryDateRange,\n comparisonPeriod,\n theme,\n );\n setComparisonDateRange(newComparisonDateRange);\n }, [comparisonPeriod, JSON.stringify(primaryDateRange)]);\n\n const value = results.data?.[0]?.[measure.name];\n const comparisonValue = comparisonDateRange\n ? resultsComparison?.data?.[0]?.[measure.name]\n : undefined;\n\n const themeFormatter = getThemeFormatter(theme);\n const valueFormatter = (valueToFormat: number) => themeFormatter.data(measure, valueToFormat);\n const comparisonLabel = `vs ${getComparisonPeriodLabel(comparisonPeriod, theme).toLowerCase()}`;\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[measure]}\n errorMessage={results.error}\n subtitle={description}\n title={title}\n >\n <KpiChart\n value={value}\n comparisonValue={comparisonValue}\n valueFormatter={valueFormatter}\n valueFontSize={fontSize}\n changeFontSize={changeFontSize}\n invertChangeColors={reversePositiveNegativeColors}\n showChangeAsPercentage={displayChangeAsPercentage}\n comparisonLabel={comparisonLabel}\n />\n </ChartCard>\n );\n};\n\nexport default KpiChartNumberComparisonPro;\n","import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport {\n dataset,\n description,\n dimensionTime,\n genericBoolean,\n genericNumber,\n genericTimeRange,\n measure,\n title,\n} from '../../../component.constants';\nimport KpiChartNumberComparisonPro from './index';\nimport { loadData, TimeRange } from '@embeddable.com/core';\nimport ComparisonPeriodType from '../../../types/ComparisonPeriod.type.emb';\nimport { localToUtcDate } from '../../../../utils.ts/date.utils';\n\nexport const meta = {\n name: 'KpiChartNumberComparisonPro',\n label: 'Kpi Chart - Number Comparison',\n category: 'Kpi Charts',\n inputs: [\n dataset,\n measure,\n { ...dimensionTime, name: 'timeProperty', label: 'Time Property' },\n {\n ...genericTimeRange,\n name: 'primaryDateRange',\n label: 'Primary Date Range',\n description: 'You can also connect this to a date range selector using its variable',\n category: 'Component Data',\n },\n {\n name: 'comparisonPeriod',\n type: ComparisonPeriodType,\n label: 'Comparison Period',\n description: 'You can also connect this to a comparison period selector using its variable',\n category: 'Component Data',\n },\n title,\n description,\n {\n ...genericBoolean,\n name: 'displayChangeAsPercentage',\n label: 'Display Change as %',\n defaultValue: false,\n },\n {\n ...genericBoolean,\n name: 'reversePositiveNegativeColors',\n label: 'Reverse Positive/Negative Colors',\n defaultValue: false,\n },\n { ...genericNumber, name: 'fontSize', label: 'Font Size', defaultValue: 44, required: true },\n {\n ...genericNumber,\n name: 'changeFontSize',\n label: 'Change Font Size',\n defaultValue: 16,\n required: true,\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\ntype KpiChartNumberComparisonProState = {\n comparisonDateRange: TimeRange;\n};\n\nexport default defineComponent(KpiChartNumberComparisonPro, meta, {\n /* @ts-expect-error - to be fixed in @embeddable.com/react */\n props: (\n inputs: Inputs<typeof meta>,\n [state, setState]: [\n KpiChartNumberComparisonProState,\n (state: KpiChartNumberComparisonProState) => void,\n ],\n ) => {\n return {\n ...inputs,\n comparisonDateRange: state?.comparisonDateRange,\n setComparisonDateRange: (comparisonDateRange: TimeRange) => setState({ comparisonDateRange }),\n results: loadData({\n from: inputs.dataset,\n select: [inputs.measure],\n limit: 1,\n filters:\n inputs.primaryDateRange && inputs.timeProperty\n ? [\n {\n property: inputs.timeProperty,\n operator: 'inDateRange',\n value: inputs.primaryDateRange,\n },\n ]\n : undefined,\n }),\n resultsComparison:\n inputs.primaryDateRange && inputs.timeProperty && state?.comparisonDateRange\n ? loadData({\n from: inputs.dataset,\n select: [inputs.measure],\n limit: 1,\n filters: [\n {\n property: inputs.timeProperty,\n operator: 'inDateRange',\n value: {\n from: localToUtcDate(state.comparisonDateRange.from!),\n to: localToUtcDate(state.comparisonDateRange.to!),\n relativeTimeString: '',\n },\n },\n ],\n })\n : undefined,\n };\n },\n});\n"],"names":["getComparisonPeriodDateRange","primaryDateRange","comparisonPeriod","theme","primaryDateRangeRange","_a","option","comparisonPeriodOption","getComparisonPeriodLabel","resolveI18nString","KpiChartNumberComparisonPro","props","useTheme","i18nSetup","title","description","resolveI18nProps","changeFontSize","comparisonDateRange","displayChangeAsPercentage","fontSize","measure","results","resultsComparison","reversePositiveNegativeColors","setComparisonDateRange","useEffect","newComparisonDateRange","value","_b","comparisonValue","_d","_c","themeFormatter","getThemeFormatter","valueFormatter","valueToFormat","comparisonLabel","jsx","ChartCard","KpiChart","meta","dataset","dimensionTime","genericTimeRange","ComparisonPeriodType","genericBoolean","genericNumber","KpiChartNumberComparisonPro_emb","defineComponent","inputs","state","setState","loadData","localToUtcDate"],"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,GCJMI,IAA8B,CAACC,MAA2C;;AAC9E,QAAMR,IAAeS,EAAA;AACrB,EAAAC,EAAUV,CAAK;AAEf,QAAM,EAAE,OAAAW,GAAO,aAAAC,MAAgBC,EAAiBL,CAAK,GAC/C;AAAA,IACJ,gBAAAM;AAAA,IACA,kBAAAf;AAAA,IACA,qBAAAgB;AAAA,IACA,2BAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,kBAAApB;AAAA,IACA,SAAAqB;AAAA,IACA,mBAAAC;AAAA,IACA,+BAAAC;AAAA,IACA,wBAAAC;AAAA,EAAA,IACEd;AAEJ,EAAAe,EAAU,MAAM;AACd,UAAMC,IAAyB3B;AAAA,MAC7BC;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAEF,IAAAsB,EAAuBE,CAAsB;AAAA,EAC/C,GAAG,CAACzB,GAAkB,KAAK,UAAUD,CAAgB,CAAC,CAAC;AAEvD,QAAM2B,KAAQC,KAAAxB,IAAAiB,EAAQ,SAAR,gBAAAjB,EAAe,OAAf,gBAAAwB,EAAoBR,EAAQ,OACpCS,IAAkBZ,KACpBa,KAAAC,IAAAT,KAAA,gBAAAA,EAAmB,SAAnB,gBAAAS,EAA0B,OAA1B,gBAAAD,EAA+BV,EAAQ,QACvC,QAEEY,IAAiBC,EAAkB/B,CAAK,GACxCgC,IAAiB,CAACC,MAA0BH,EAAe,KAAKZ,GAASe,CAAa,GACtFC,IAAkB,MAAM7B,EAAyBN,GAAkBC,CAAK,EAAE,aAAa;AAE7F,SACEmC,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAMjB;AAAA,MACN,uBAAuB,CAACD,CAAO;AAAA,MAC/B,cAAcC,EAAQ;AAAA,MACtB,UAAUP;AAAA,MACV,OAAAD;AAAA,MAEA,UAAAwB,gBAAAA,EAAAA;AAAAA,QAACE;AAAA,QAAA;AAAA,UACC,OAAAZ;AAAA,UACA,iBAAAE;AAAA,UACA,gBAAAK;AAAA,UACA,eAAef;AAAA,UACf,gBAAAH;AAAA,UACA,oBAAoBO;AAAA,UACpB,wBAAwBL;AAAA,UACxB,iBAAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GCvEaI,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,IACNC;AAAA,IACArB;AAAA,IACA,EAAE,GAAGsB,GAAe,MAAM,gBAAgB,OAAO,gBAAA;AAAA,IACjD;AAAA,MACE,GAAGC;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,MAAM;AAAA,MACN,MAAMC;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,UAAU;AAAA,IAAA;AAAA,IAEZ/B;AAAA,IACAC;AAAA,IACA;AAAA,MACE,GAAG+B;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,cAAc;AAAA,IAAA;AAAA,IAEhB;AAAA,MACE,GAAGA;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,cAAc;AAAA,IAAA;AAAA,IAEhB,EAAE,GAAGC,GAAe,MAAM,YAAY,OAAO,aAAa,cAAc,IAAI,UAAU,GAAA;AAAA,IACtF;AAAA,MACE,GAAGA;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,EACZ;AAEJ,GAMAC,KAAeC,EAAgBvC,GAA6B+B,GAAM;AAAA;AAAA,EAEhE,OAAO,CACLS,GACA,CAACC,GAAOC,CAAQ,OAKT;AAAA,IACL,GAAGF;AAAA,IACH,qBAAqBC,KAAA,gBAAAA,EAAO;AAAA,IAC5B,wBAAwB,CAACjC,MAAmCkC,EAAS,EAAE,qBAAAlC,GAAqB;AAAA,IAC5F,SAASmC,EAAS;AAAA,MAChB,MAAMH,EAAO;AAAA,MACb,QAAQ,CAACA,EAAO,OAAO;AAAA,MACvB,OAAO;AAAA,MACP,SACEA,EAAO,oBAAoBA,EAAO,eAC9B;AAAA,QACE;AAAA,UACE,UAAUA,EAAO;AAAA,UACjB,UAAU;AAAA,UACV,OAAOA,EAAO;AAAA,QAAA;AAAA,MAChB,IAEF;AAAA,IAAA,CACP;AAAA,IACD,mBACEA,EAAO,oBAAoBA,EAAO,iBAAgBC,KAAA,QAAAA,EAAO,uBACrDE,EAAS;AAAA,MACP,MAAMH,EAAO;AAAA,MACb,QAAQ,CAACA,EAAO,OAAO;AAAA,MACvB,OAAO;AAAA,MACP,SAAS;AAAA,QACP;AAAA,UACE,UAAUA,EAAO;AAAA,UACjB,UAAU;AAAA,UACV,OAAO;AAAA,YACL,MAAMI,EAAeH,EAAM,oBAAoB,IAAK;AAAA,YACpD,IAAIG,EAAeH,EAAM,oBAAoB,EAAG;AAAA,YAChD,oBAAoB;AAAA,UAAA;AAAA,QACtB;AAAA,MACF;AAAA,IACF,CACD,IACD;AAAA,EAAA;AAGZ,CAAC;"}
@@ -0,0 +1,47 @@
1
+ import { useTheme as h, defineComponent as f } from "@embeddable.com/react";
2
+ import { i as C, r as b, j as m, d as K, w as g, t as x, c as F, X as N, o as S } from "./component.constants-DIhZCTG3.js";
3
+ import { C as j } from "./ChartCard-11lQWjXq.js";
4
+ import "react";
5
+ import { K as v } from "./KpiChart-BLMULQMh.js";
6
+ import { g as z } from "./formatter.utils-CuZlh4EL.js";
7
+ const P = (e) => {
8
+ var s, o;
9
+ const a = h();
10
+ C(a);
11
+ const { title: i, description: n, results: t, measure: r, fontSize: u } = b(e), p = (o = (s = t.data) == null ? void 0 : s[0]) == null ? void 0 : o[r.name], l = z(a), d = (c) => l.data(r, c);
12
+ return /* @__PURE__ */ m.jsx(
13
+ j,
14
+ {
15
+ data: t,
16
+ dimensionsAndMeasures: [r],
17
+ errorMessage: t.error,
18
+ subtitle: n,
19
+ title: i,
20
+ children: /* @__PURE__ */ m.jsx(v, { value: p, valueFormatter: d, valueFontSize: u })
21
+ }
22
+ );
23
+ }, M = {
24
+ name: "KpiChartNumberPro",
25
+ label: "Kpi Chart - Number",
26
+ category: "Kpi Charts",
27
+ inputs: [
28
+ K,
29
+ g,
30
+ x,
31
+ F,
32
+ { ...N, name: "fontSize", label: "Font Size", defaultValue: 44, required: !0 }
33
+ ]
34
+ }, E = f(P, M, {
35
+ props: (e) => ({
36
+ ...e,
37
+ results: S({
38
+ from: e.dataset,
39
+ select: [e.measure]
40
+ })
41
+ })
42
+ });
43
+ export {
44
+ E as default,
45
+ M as meta
46
+ };
47
+ //# sourceMappingURL=KpiChartNumberPro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KpiChartNumberPro.js","sources":["../src/remarkable-pro/components/charts/kpis/KpiChartNumberPro/index.tsx","../src/remarkable-pro/components/charts/kpis/KpiChartNumberPro/KpiChartNumberPro.emb.ts"],"sourcesContent":["import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { DataResponse, Measure } from '@embeddable.com/core';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport { KpiChart } from '../../../../../remarkable-ui';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\n\ntype KpiChartNumberProProp = {\n title: string;\n description: string;\n results: DataResponse;\n measure: Measure;\n fontSize: number;\n};\n\nconst KpiChartNumberPro = (props: KpiChartNumberProProp) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, results, measure, fontSize } = resolveI18nProps(props);\n\n const value = results.data?.[0]?.[measure.name];\n\n const themeFormatter = getThemeFormatter(theme);\n const valueFormatter = (valueToFormat: number) => themeFormatter.data(measure, valueToFormat);\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[measure]}\n errorMessage={results.error}\n subtitle={description}\n title={title}\n >\n <KpiChart value={value} valueFormatter={valueFormatter} valueFontSize={fontSize} />\n </ChartCard>\n );\n};\n\nexport default KpiChartNumberPro;\n","import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport { dataset, description, genericNumber, measure, title } from '../../../component.constants';\nimport KpiChartNumberPro from './index';\nimport { loadData } from '@embeddable.com/core';\n\nexport const meta = {\n name: 'KpiChartNumberPro',\n label: 'Kpi Chart - Number',\n category: 'Kpi Charts',\n inputs: [\n dataset,\n measure,\n title,\n description,\n { ...genericNumber, name: 'fontSize', label: 'Font Size', defaultValue: 44, required: true },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(KpiChartNumberPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n results: loadData({\n from: inputs.dataset,\n select: [inputs.measure],\n }),\n };\n },\n});\n"],"names":["KpiChartNumberPro","props","theme","useTheme","i18nSetup","title","description","results","measure","fontSize","resolveI18nProps","value","_b","_a","themeFormatter","getThemeFormatter","valueFormatter","valueToFormat","jsx","ChartCard","KpiChart","meta","dataset","genericNumber","KpiChartNumberPro_emb","defineComponent","inputs","loadData"],"mappings":";;;;;;AAiBA,MAAMA,IAAoB,CAACC,MAAiC;;AAC1D,QAAMC,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAM,EAAE,OAAAG,GAAO,aAAAC,GAAa,SAAAC,GAAS,SAAAC,GAAS,UAAAC,EAAA,IAAaC,EAAiBT,CAAK,GAE3EU,KAAQC,KAAAC,IAAAN,EAAQ,SAAR,gBAAAM,EAAe,OAAf,gBAAAD,EAAoBJ,EAAQ,OAEpCM,IAAiBC,EAAkBb,CAAK,GACxCc,IAAiB,CAACC,MAA0BH,EAAe,KAAKN,GAASS,CAAa;AAE5F,SACEC,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAMZ;AAAA,MACN,uBAAuB,CAACC,CAAO;AAAA,MAC/B,cAAcD,EAAQ;AAAA,MACtB,UAAUD;AAAA,MACV,OAAAD;AAAA,MAEA,UAAAa,gBAAAA,EAAAA,IAACE,GAAA,EAAS,OAAAT,GAAc,gBAAAK,GAAgC,eAAeP,EAAA,CAAU;AAAA,IAAA;AAAA,EAAA;AAGvF,GClCaY,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,IACNC;AAAA,IACAd;AAAA,IACAH;AAAA,IACAC;AAAA,IACA,EAAE,GAAGiB,GAAe,MAAM,YAAY,OAAO,aAAa,cAAc,IAAI,UAAU,GAAA;AAAA,EAAK;AAE/F,GAEAC,IAAeC,EAAgBzB,GAAmBqB,GAAM;AAAA,EACtD,OAAO,CAACK,OACC;AAAA,IACL,GAAGA;AAAA,IACH,SAASC,EAAS;AAAA,MAChB,MAAMD,EAAO;AAAA,MACb,QAAQ,CAACA,EAAO,OAAO;AAAA,IAAA,CACxB;AAAA,EAAA;AAGP,CAAC;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as i } from "@embeddable.com/react";
2
- import { d as r, z as s, t as d, c as u, Y as m, V as t, o as c } from "./component.constants-6skM25Z_.js";
3
- import { M as p, a as f } from "./index-B9XcOUp_.js";
2
+ import { d as r, z as s, t as d, c as u, _ as m, V as t, o as c } from "./component.constants-DIhZCTG3.js";
3
+ import { M as p, a as f } from "./index-DqKfDjMs.js";
4
4
  const g = {
5
5
  name: "MultiSelectFieldPro",
6
6
  label: "Multi Select Field",
@@ -68,7 +68,6 @@ const g = {
68
68
  const n = e.dimension.nativeType === "string" ? "contains" : "equals";
69
69
  return {
70
70
  ...e,
71
- maxOptions: e.maxOptions,
72
71
  setSearchValue: (o) => l({ searchValue: o }),
73
72
  results: c({
74
73
  limit: e.maxOptions,
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelectFieldPro.js","sources":["../src/remarkable-pro/components/editors/MultiSelectFieldPro/MultiSelectFieldPro.emb.ts"],"sourcesContent":["import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport { Value, loadData } from '@embeddable.com/core';\nimport { dataset, description, dimension, placeholder, title } from '../../component.constants';\nimport MultiSelectFieldPro, { MAX_OPTIONS } from '.';\n\nexport const meta = {\n name: 'MultiSelectFieldPro',\n label: 'Multi Select Field',\n category: 'Dropdowns',\n defaultWidth: 300,\n defaultHeight: 120,\n inputs: [\n dataset,\n { ...dimension, label: 'Dimension (to load Dropdown values)' },\n title,\n description,\n { ...placeholder, defaultValue: 'Select values...' },\n {\n name: 'maxOptions',\n type: 'number',\n label: 'Maximum options',\n category: 'Component Settings',\n defaultValue: MAX_OPTIONS,\n },\n {\n name: 'selectedValues',\n type: 'string',\n array: true,\n label: 'Selected Values',\n category: 'Pre-configured Variables',\n },\n {\n type: 'dimension',\n config: {\n dataset: 'dataset',\n },\n required: false,\n name: 'optionalSecondDimension',\n label: 'Optional secondary dimension',\n category: 'Data Mapping for Interactions',\n description: 'Send a different dimension to embeddable when the user clicks. Must be unique.',\n },\n ],\n events: [\n {\n name: 'onChange',\n label: 'selected values updated',\n properties: [\n {\n name: 'value',\n label: 'selected values',\n type: 'string',\n array: true,\n },\n ],\n },\n ],\n variables: [\n {\n name: 'multi-select values',\n type: 'string',\n array: true,\n defaultValue: Value.noFilter(),\n inputs: ['selectedValues'],\n events: [{ name: 'onChange', property: 'value' }],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\ntype MultiSelectDropdownState = {\n searchValue?: string;\n};\n\nexport default defineComponent(MultiSelectFieldPro, meta, {\n props: (\n inputs: Inputs<typeof meta>,\n [state, setState]: [MultiSelectDropdownState, (state: MultiSelectDropdownState) => void],\n ) => {\n const operator = inputs.dimension.nativeType === 'string' ? 'contains' : 'equals';\n return {\n ...inputs,\n maxOptions: inputs.maxOptions,\n setSearchValue: (searchValue: string) => setState({ searchValue }),\n results: loadData({\n limit: inputs.maxOptions,\n from: inputs.dataset,\n select: [inputs.dimension, inputs.optionalSecondDimension].filter(Boolean),\n filters: state?.searchValue\n ? [\n {\n operator,\n property: inputs.dimension,\n value: state.searchValue,\n },\n ]\n : undefined,\n }),\n };\n },\n events: {\n onChange: (selectedValues: string[]) => {\n return {\n value: selectedValues.length ? selectedValues : Value.noFilter(),\n };\n },\n },\n});\n"],"names":["meta","dataset","dimension","title","description","placeholder","MAX_OPTIONS","Value","MultiSelectFieldPro_emb","defineComponent","MultiSelectFieldPro","inputs","state","setState","operator","searchValue","loadData","selectedValues"],"mappings":";;;AAKO,MAAMA,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd,eAAe;AAAA,EACf,QAAQ;AAAA,IACNC;AAAA,IACA,EAAE,GAAGC,GAAW,OAAO,sCAAA;AAAA,IACvBC;AAAA,IACAC;AAAA,IACA,EAAE,GAAGC,GAAa,cAAc,mBAAA;AAAA,IAChC;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,cAAcC;AAAA,IAAA;AAAA,IAEhB;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,MAEX,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa;AAAA,IAAA;AAAA,EACf;AAAA,EAEF,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEF,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,cAAcC,EAAM,SAAA;AAAA,MACpB,QAAQ,CAAC,gBAAgB;AAAA,MACzB,QAAQ,CAAC,EAAE,MAAM,YAAY,UAAU,SAAS;AAAA,IAAA;AAAA,EAClD;AAEJ,GAMAC,IAAeC,EAAgBC,GAAqBV,GAAM;AAAA,EACxD,OAAO,CACLW,GACA,CAACC,GAAOC,CAAQ,MACb;AACH,UAAMC,IAAWH,EAAO,UAAU,eAAe,WAAW,aAAa;AACzE,WAAO;AAAA,MACL,GAAGA;AAAA,MACH,YAAYA,EAAO;AAAA,MACnB,gBAAgB,CAACI,MAAwBF,EAAS,EAAE,aAAAE,GAAa;AAAA,MACjE,SAASC,EAAS;AAAA,QAChB,OAAOL,EAAO;AAAA,QACd,MAAMA,EAAO;AAAA,QACb,QAAQ,CAACA,EAAO,WAAWA,EAAO,uBAAuB,EAAE,OAAO,OAAO;AAAA,QACzE,SAASC,KAAA,QAAAA,EAAO,cACZ;AAAA,UACE;AAAA,YACE,UAAAE;AAAA,YACA,UAAUH,EAAO;AAAA,YACjB,OAAOC,EAAM;AAAA,UAAA;AAAA,QACf,IAEF;AAAA,MAAA,CACL;AAAA,IAAA;AAAA,EAEL;AAAA,EACA,QAAQ;AAAA,IACN,UAAU,CAACK,OACF;AAAA,MACL,OAAOA,EAAe,SAASA,IAAiBV,EAAM,SAAA;AAAA,IAAS;AAAA,EAEnE;AAEJ,CAAC;"}
1
+ {"version":3,"file":"MultiSelectFieldPro.js","sources":["../src/remarkable-pro/components/editors/MultiSelectFieldPro/MultiSelectFieldPro.emb.ts"],"sourcesContent":["import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport { Value, loadData } from '@embeddable.com/core';\nimport { dataset, description, dimension, placeholder, title } from '../../component.constants';\nimport MultiSelectFieldPro, { MAX_OPTIONS } from '.';\n\nexport const meta = {\n name: 'MultiSelectFieldPro',\n label: 'Multi Select Field',\n category: 'Dropdowns',\n defaultWidth: 300,\n defaultHeight: 120,\n inputs: [\n dataset,\n { ...dimension, label: 'Dimension (to load Dropdown values)' },\n title,\n description,\n { ...placeholder, defaultValue: 'Select values...' },\n {\n name: 'maxOptions',\n type: 'number',\n label: 'Maximum options',\n category: 'Component Settings',\n defaultValue: MAX_OPTIONS,\n },\n {\n name: 'selectedValues',\n type: 'string',\n array: true,\n label: 'Selected Values',\n category: 'Pre-configured Variables',\n },\n {\n type: 'dimension',\n config: {\n dataset: 'dataset',\n },\n required: false,\n name: 'optionalSecondDimension',\n label: 'Optional secondary dimension',\n category: 'Data Mapping for Interactions',\n description: 'Send a different dimension to embeddable when the user clicks. Must be unique.',\n },\n ],\n events: [\n {\n name: 'onChange',\n label: 'selected values updated',\n properties: [\n {\n name: 'value',\n label: 'selected values',\n type: 'string',\n array: true,\n },\n ],\n },\n ],\n variables: [\n {\n name: 'multi-select values',\n type: 'string',\n array: true,\n defaultValue: Value.noFilter(),\n inputs: ['selectedValues'],\n events: [{ name: 'onChange', property: 'value' }],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\ntype MultiSelectDropdownState = {\n searchValue?: string;\n};\n\nexport default defineComponent(MultiSelectFieldPro, meta, {\n props: (\n inputs: Inputs<typeof meta>,\n [state, setState]: [MultiSelectDropdownState, (state: MultiSelectDropdownState) => void],\n ) => {\n const operator = inputs.dimension.nativeType === 'string' ? 'contains' : 'equals';\n return {\n ...inputs,\n setSearchValue: (searchValue: string) => setState({ searchValue }),\n results: loadData({\n limit: inputs.maxOptions,\n from: inputs.dataset,\n select: [inputs.dimension, inputs.optionalSecondDimension].filter(Boolean),\n filters: state?.searchValue\n ? [\n {\n operator,\n property: inputs.dimension,\n value: state.searchValue,\n },\n ]\n : undefined,\n }),\n };\n },\n events: {\n onChange: (selectedValues: string[]) => {\n return {\n value: selectedValues.length ? selectedValues : Value.noFilter(),\n };\n },\n },\n});\n"],"names":["meta","dataset","dimension","title","description","placeholder","MAX_OPTIONS","Value","MultiSelectFieldPro_emb","defineComponent","MultiSelectFieldPro","inputs","state","setState","operator","searchValue","loadData","selectedValues"],"mappings":";;;AAKO,MAAMA,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd,eAAe;AAAA,EACf,QAAQ;AAAA,IACNC;AAAA,IACA,EAAE,GAAGC,GAAW,OAAO,sCAAA;AAAA,IACvBC;AAAA,IACAC;AAAA,IACA,EAAE,GAAGC,GAAa,cAAc,mBAAA;AAAA,IAChC;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,cAAcC;AAAA,IAAA;AAAA,IAEhB;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,MAEX,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa;AAAA,IAAA;AAAA,EACf;AAAA,EAEF,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEF,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,cAAcC,EAAM,SAAA;AAAA,MACpB,QAAQ,CAAC,gBAAgB;AAAA,MACzB,QAAQ,CAAC,EAAE,MAAM,YAAY,UAAU,SAAS;AAAA,IAAA;AAAA,EAClD;AAEJ,GAMAC,IAAeC,EAAgBC,GAAqBV,GAAM;AAAA,EACxD,OAAO,CACLW,GACA,CAACC,GAAOC,CAAQ,MACb;AACH,UAAMC,IAAWH,EAAO,UAAU,eAAe,WAAW,aAAa;AACzE,WAAO;AAAA,MACL,GAAGA;AAAA,MACH,gBAAgB,CAACI,MAAwBF,EAAS,EAAE,aAAAE,GAAa;AAAA,MACjE,SAASC,EAAS;AAAA,QAChB,OAAOL,EAAO;AAAA,QACd,MAAMA,EAAO;AAAA,QACb,QAAQ,CAACA,EAAO,WAAWA,EAAO,uBAAuB,EAAE,OAAO,OAAO;AAAA,QACzE,SAASC,KAAA,QAAAA,EAAO,cACZ;AAAA,UACE;AAAA,YACE,UAAAE;AAAA,YACA,UAAUH,EAAO;AAAA,YACjB,OAAOC,EAAM;AAAA,UAAA;AAAA,QACf,IAEF;AAAA,MAAA,CACL;AAAA,IAAA;AAAA,EAEL;AAAA,EACA,QAAQ;AAAA,IACN,UAAU,CAACK,OACF;AAAA,MACL,OAAOA,EAAe,SAASA,IAAiBV,EAAM,SAAA;AAAA,IAAS;AAAA,EAEnE;AAEJ,CAAC;"}
@@ -1,6 +1,6 @@
1
- import { d as a, w as s, z as t, t as o, c as n, s as i, S as r, e as m, f as l, V as d, o as c } from "./component.constants-6skM25Z_.js";
1
+ import { d as a, w as s, z as t, t as o, c as n, s as i, Y as r, e as m, f as l, V as d, o as c } from "./component.constants-DIhZCTG3.js";
2
2
  import { defineComponent as p } from "@embeddable.com/react";
3
- import { P as u } from "./index-DufpVBMb.js";
3
+ import { P as u } from "./index-B7KNswsW.js";
4
4
  const C = {
5
5
  name: "PieChartPro",
6
6
  label: "Pie Chart",
@@ -1,6 +1,6 @@
1
- import { j as l, a4 as R, a7 as D, a8 as E, a5 as h, a6 as k } from "./component.constants-6skM25Z_.js";
1
+ import { j as l, a8 as R, ab as D, ac as E, a9 as h, aa as k } from "./component.constants-DIhZCTG3.js";
2
2
  import { useState as i, useRef as w, useEffect as B, useMemo as K } from "react";
3
- import { u as M, d as N, I as P, S as T } from "./EditorCard-_U0it3Eb.js";
3
+ import { u as M, d as N, I as P, S as T } from "./EditorCard-BriyqUva.js";
4
4
  const G = ({
5
5
  value: t = "",
6
6
  startIcon: p,
@@ -85,4 +85,4 @@ const G = ({
85
85
  export {
86
86
  G as S
87
87
  };
88
- //# sourceMappingURL=SingleSelectField-Coqlrz4l.js.map
88
+ //# sourceMappingURL=SingleSelectField-D1E9OJxC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SingleSelectField-Coqlrz4l.js","sources":["../src/remarkable-ui/editors/select/SingleSelectField/SingleSelectField.tsx"],"sourcesContent":["import { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport { TextField } from '../../TextField/TextField';\nimport { SelectButton } from '../shared/SelectButton/SelectButton';\nimport { Dropdown } from '../../../shared/Dropdown/Dropdown';\nimport { SelectList } from '../shared/SelectList/SelectList';\nimport { SelectListOptions } from '../shared/SelectList/SelectListOptions/SelectListOptions';\nimport {\n SelectListOption,\n SelectListOptionProps,\n} from '../shared/SelectList/SelectListOptions/SelectListOption/SelectListOption';\nimport { debounce } from '../../../utils/debounce.utils';\nimport { IconSearch, TablerIcon } from '@tabler/icons-react';\nimport { useSelectSearchFocus } from '../shared/useSelectSearchFocus.hook';\n\nexport type SingleSelectFieldProps = {\n options: SelectListOptionProps[];\n startIcon?: TablerIcon;\n value?: string;\n disabled?: boolean;\n placeholder?: string;\n isSearchable?: boolean;\n isClearable?: boolean;\n isLoading?: boolean;\n noOptionsMessage?: string;\n onChange: (value: string) => void;\n onSearch?: (search: string) => void;\n};\n\nexport const SingleSelectField: FC<SingleSelectFieldProps> = ({\n value = '',\n startIcon,\n options,\n disabled,\n placeholder,\n isSearchable,\n isClearable,\n isLoading,\n noOptionsMessage = 'No options available',\n onChange,\n onSearch,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [searchValue, setSearchValue] = useState<string>('');\n const [selectedLabel, setSelectedLabel] = useState<string>(value);\n\n const searchFieldRef = useRef<HTMLInputElement>(null);\n useSelectSearchFocus(isOpen, searchFieldRef);\n\n useEffect(() => {\n if (!value) {\n setSelectedLabel('');\n return;\n }\n\n const option = options.find((opt) => opt.value === value);\n if (option) {\n setSelectedLabel(option.label);\n }\n }, [value, options]);\n\n const debouncedSearch = useMemo(() => (onSearch ? debounce(onSearch) : undefined), [onSearch]);\n\n const displayOptions =\n isSearchable && !onSearch\n ? options.filter((option) => option.label.toLowerCase().includes(searchValue.toLowerCase()))\n : options;\n\n const handleChange = (newValue?: string) => {\n setSearchValue('');\n onChange(newValue ?? '');\n onSearch?.('');\n\n if (newValue === '') {\n setSelectedLabel('');\n } else {\n const option = options.find((opt) => opt.value === newValue);\n if (option) setSelectedLabel(option.label);\n }\n };\n\n const handleSearch = (newSearch: string) => {\n setSearchValue(newSearch);\n debouncedSearch?.(newSearch);\n };\n\n return (\n <Dropdown\n open={isOpen}\n onOpenChange={setIsOpen}\n disabled={disabled}\n triggerComponent={\n <SelectButton\n startIcon={startIcon}\n aria-label=\"Select option\"\n placeholder={placeholder}\n disabled={disabled}\n valueLabel={selectedLabel}\n onClear={() => handleChange('')}\n isClearable={isClearable}\n isLoading={isLoading}\n />\n }\n >\n <SelectList>\n {isSearchable && (\n <TextField\n ref={searchFieldRef}\n startIcon={IconSearch}\n aria-label=\"Search options\"\n placeholder=\"Search…\"\n role=\"searchbox\"\n value={searchValue}\n onKeyDown={(e) => e.stopPropagation()}\n onChange={handleSearch}\n />\n )}\n <SelectListOptions disabled={isLoading}>\n {displayOptions.map((option) => (\n <SelectListOption\n key={option?.value ?? option.label}\n onClick={() => handleChange(option?.value)}\n isSelected={option.value === value}\n {...option}\n />\n ))}\n {options.length === 0 && (\n <SelectListOption disabled value=\"empty\" label={noOptionsMessage} />\n )}\n </SelectListOptions>\n </SelectList>\n </Dropdown>\n );\n};\n"],"names":["SingleSelectField","value","startIcon","options","disabled","placeholder","isSearchable","isClearable","isLoading","noOptionsMessage","onChange","onSearch","isOpen","setIsOpen","useState","searchValue","setSearchValue","selectedLabel","setSelectedLabel","searchFieldRef","useRef","useSelectSearchFocus","useEffect","option","opt","debouncedSearch","useMemo","debounce","displayOptions","handleChange","newValue","handleSearch","newSearch","jsx","Dropdown","SelectButton","SelectList","TextField","IconSearch","jsxs","SelectListOptions","SelectListOption"],"mappings":"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"}
1
+ {"version":3,"file":"SingleSelectField-D1E9OJxC.js","sources":["../src/remarkable-ui/editors/select/SingleSelectField/SingleSelectField.tsx"],"sourcesContent":["import { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport { TextField } from '../../TextField/TextField';\nimport { SelectButton } from '../shared/SelectButton/SelectButton';\nimport { Dropdown } from '../../../shared/Dropdown/Dropdown';\nimport { SelectList } from '../shared/SelectList/SelectList';\nimport { SelectListOptions } from '../shared/SelectList/SelectListOptions/SelectListOptions';\nimport {\n SelectListOption,\n SelectListOptionProps,\n} from '../shared/SelectList/SelectListOptions/SelectListOption/SelectListOption';\nimport { debounce } from '../../../utils/debounce.utils';\nimport { IconSearch, TablerIcon } from '@tabler/icons-react';\nimport { useSelectSearchFocus } from '../shared/useSelectSearchFocus.hook';\n\nexport type SingleSelectFieldProps = {\n options: SelectListOptionProps[];\n startIcon?: TablerIcon;\n value?: string;\n disabled?: boolean;\n placeholder?: string;\n isSearchable?: boolean;\n isClearable?: boolean;\n isLoading?: boolean;\n noOptionsMessage?: string;\n onChange: (value: string) => void;\n onSearch?: (search: string) => void;\n};\n\nexport const SingleSelectField: FC<SingleSelectFieldProps> = ({\n value = '',\n startIcon,\n options,\n disabled,\n placeholder,\n isSearchable,\n isClearable,\n isLoading,\n noOptionsMessage = 'No options available',\n onChange,\n onSearch,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [searchValue, setSearchValue] = useState<string>('');\n const [selectedLabel, setSelectedLabel] = useState<string>(value);\n\n const searchFieldRef = useRef<HTMLInputElement>(null);\n useSelectSearchFocus(isOpen, searchFieldRef);\n\n useEffect(() => {\n if (!value) {\n setSelectedLabel('');\n return;\n }\n\n const option = options.find((opt) => opt.value === value);\n if (option) {\n setSelectedLabel(option.label);\n }\n }, [value, options]);\n\n const debouncedSearch = useMemo(() => (onSearch ? debounce(onSearch) : undefined), [onSearch]);\n\n const displayOptions =\n isSearchable && !onSearch\n ? options.filter((option) => option.label.toLowerCase().includes(searchValue.toLowerCase()))\n : options;\n\n const handleChange = (newValue?: string) => {\n setSearchValue('');\n onChange(newValue ?? '');\n onSearch?.('');\n\n if (newValue === '') {\n setSelectedLabel('');\n } else {\n const option = options.find((opt) => opt.value === newValue);\n if (option) setSelectedLabel(option.label);\n }\n };\n\n const handleSearch = (newSearch: string) => {\n setSearchValue(newSearch);\n debouncedSearch?.(newSearch);\n };\n\n return (\n <Dropdown\n open={isOpen}\n onOpenChange={setIsOpen}\n disabled={disabled}\n triggerComponent={\n <SelectButton\n startIcon={startIcon}\n aria-label=\"Select option\"\n placeholder={placeholder}\n disabled={disabled}\n valueLabel={selectedLabel}\n onClear={() => handleChange('')}\n isClearable={isClearable}\n isLoading={isLoading}\n />\n }\n >\n <SelectList>\n {isSearchable && (\n <TextField\n ref={searchFieldRef}\n startIcon={IconSearch}\n aria-label=\"Search options\"\n placeholder=\"Search…\"\n role=\"searchbox\"\n value={searchValue}\n onKeyDown={(e) => e.stopPropagation()}\n onChange={handleSearch}\n />\n )}\n <SelectListOptions disabled={isLoading}>\n {displayOptions.map((option) => (\n <SelectListOption\n key={option?.value ?? option.label}\n onClick={() => handleChange(option?.value)}\n isSelected={option.value === value}\n {...option}\n />\n ))}\n {options.length === 0 && (\n <SelectListOption disabled value=\"empty\" label={noOptionsMessage} />\n )}\n </SelectListOptions>\n </SelectList>\n </Dropdown>\n );\n};\n"],"names":["SingleSelectField","value","startIcon","options","disabled","placeholder","isSearchable","isClearable","isLoading","noOptionsMessage","onChange","onSearch","isOpen","setIsOpen","useState","searchValue","setSearchValue","selectedLabel","setSelectedLabel","searchFieldRef","useRef","useSelectSearchFocus","useEffect","option","opt","debouncedSearch","useMemo","debounce","displayOptions","handleChange","newValue","handleSearch","newSearch","jsx","Dropdown","SelectButton","SelectList","TextField","IconSearch","jsxs","SelectListOptions","SelectListOption"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as i } from "@embeddable.com/react";
2
- import { d as s, z as r, t as d, c as m, Y as c, V as n, o as u } from "./component.constants-6skM25Z_.js";
3
- import { M as p, S as g } from "./index-B3vcfrrk.js";
2
+ import { d as s, z as r, t as d, c as m, _ as c, V as n, o as u } from "./component.constants-DIhZCTG3.js";
3
+ import { M as p, S as g } from "./index-C-zjH8iP.js";
4
4
  const f = {
5
5
  name: "SingleSelectFieldPro",
6
6
  label: "Single Select Field",
@@ -1,7 +1,7 @@
1
- import { B as f, C as O, D as Q, m as I, E as R, F as J, G as X, L as tt, H as et, I as at, J as rt, K as st, M as nt, j as N, N as ot, O as lt, P as it, Q as L, R as ct } from "./component.constants-6skM25Z_.js";
1
+ import { B as f, C as O, D as Q, m as I, E as R, F as J, G as X, L as tt, H as et, I as at, J as rt, K as st, M as nt, j as N, N as ot, O as lt, P as it, Q as L, R as ct } from "./component.constants-DIhZCTG3.js";
2
2
  import { useRef as dt, useMemo as ut } from "react";
3
- import { r as mt, g as W, a as ft, b as H } from "./object.utils-DB9Hp3Uk.js";
4
- import { g as Y } from "./formatter.utils-DMMBiLDD.js";
3
+ import { r as mt, g as W, a as ft, b as H } from "./object.utils-CMJleY-P.js";
4
+ import { g as Y } from "./formatter.utils-CuZlh4EL.js";
5
5
  import { d as D } from "./dayjs.min-B_s8lXoY.js";
6
6
  import { useTheme as ht } from "@embeddable.com/react";
7
7
  const j = {
@@ -555,4 +555,4 @@ export {
555
555
  _t as g,
556
556
  $t as u
557
557
  };
558
- //# sourceMappingURL=charts.fillGaps.hooks-BdlMosSu.js.map
558
+ //# sourceMappingURL=charts.fillGaps.hooks-lZwsRfDF.js.map