@embeddable.com/remarkable-ui 1.0.3 → 1.0.5

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 (76) 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-CyemTSay.js → ChartCard-BzLW_64B.js} +15 -15
  8. package/dist/{ChartCard-CyemTSay.js.map → ChartCard-BzLW_64B.js.map} +1 -1
  9. package/dist/{ComparisonPeriod.type.emb-i3iGuRJI.js → ComparisonPeriod.type.emb-D0_AP_PM.js} +2 -2
  10. package/dist/{ComparisonPeriod.type.emb-i3iGuRJI.js.map → ComparisonPeriod.type.emb-D0_AP_PM.js.map} +1 -1
  11. package/dist/ComparisonPeriodSelectFieldPro.js +4 -4
  12. package/dist/DateRangeSelectFieldPro.js +2 -2
  13. package/dist/DonutChartPro.js +2 -2
  14. package/dist/DonutLabelChartPro.js +2 -2
  15. package/dist/{EditorCard-BICCSvPo.js → EditorCard-BLudeyiZ.js} +8 -8
  16. package/dist/{EditorCard-BICCSvPo.js.map → EditorCard-BLudeyiZ.js.map} +1 -1
  17. package/dist/{HeatMap-BueWUQTI.js → HeatMap-HTlj76CN.js} +7 -7
  18. package/dist/{HeatMap-BueWUQTI.js.map → HeatMap-HTlj76CN.js.map} +1 -1
  19. package/dist/HeatMapPro.js +4 -4
  20. package/dist/{KpiChart-BxmGCIn5.js → KpiChart-DWnEF3iA.js} +13 -13
  21. package/dist/{KpiChart-BxmGCIn5.js.map → KpiChart-DWnEF3iA.js.map} +1 -1
  22. package/dist/KpiChartNumberComparisonPro.js +23 -25
  23. package/dist/KpiChartNumberComparisonPro.js.map +1 -1
  24. package/dist/KpiChartNumberPro.js +4 -4
  25. package/dist/LineChartComparisonDefaultPro.js +11 -11
  26. package/dist/LineChartComparisonDefaultPro.js.map +1 -1
  27. package/dist/LineChartDefaultPro.js +3 -3
  28. package/dist/LineChartGroupedPro.js +3 -3
  29. package/dist/MultiSelectFieldPro.js +2 -2
  30. package/dist/PieChartPro.js +2 -2
  31. package/dist/{PivotTable-DrN-dl-H.js → PivotTable-Diy2xzoH.js} +2 -2
  32. package/dist/{PivotTable-DrN-dl-H.js.map → PivotTable-Diy2xzoH.js.map} +1 -1
  33. package/dist/PivotTablePro.js +4 -4
  34. package/dist/{SingleSelectField-CSJOpQeh.js → SingleSelectField-CX2hEN0u.js} +3 -3
  35. package/dist/{SingleSelectField-CSJOpQeh.js.map → SingleSelectField-CX2hEN0u.js.map} +1 -1
  36. package/dist/SingleSelectFieldPro.js +2 -2
  37. package/dist/TableChartPaginated.js +3 -3
  38. package/dist/{bars.utils-CfUdtqtZ.js → bars.utils-CAMiF7iA.js} +4 -4
  39. package/dist/{bars.utils-CfUdtqtZ.js.map → bars.utils-CAMiF7iA.js.map} +1 -1
  40. package/dist/{charts.utils-DnzWuMfl.js → charts.utils-Cw4SeX2m.js} +11 -7
  41. package/dist/charts.utils-Cw4SeX2m.js.map +1 -0
  42. package/dist/{component.constants-CYS5-3qd.js → component.constants-B5vygi6l.js} +603 -596
  43. package/dist/{component.constants-CYS5-3qd.js.map → component.constants-B5vygi6l.js.map} +1 -1
  44. package/dist/embeddable-components.json +12 -12
  45. package/dist/embeddable-theme-2b917.js +8 -4
  46. package/dist/{formatter.utils-CaFr8SlX.js → formatter.utils-N2gk49ys.js} +2 -2
  47. package/dist/{formatter.utils-CaFr8SlX.js.map → formatter.utils-N2gk49ys.js.map} +1 -1
  48. package/dist/{index-DDmT6wnq.js → index-BKkfcfXT.js} +4 -4
  49. package/dist/{index-DDmT6wnq.js.map → index-BKkfcfXT.js.map} +1 -1
  50. package/dist/{index-cQhXpSWY.js → index-BOcQ7e6Q.js} +5 -5
  51. package/dist/{index-cQhXpSWY.js.map → index-BOcQ7e6Q.js.map} +1 -1
  52. package/dist/{index-GHJlcYHx.js → index-DhfbSAKi.js} +4 -4
  53. package/dist/{index-GHJlcYHx.js.map → index-DhfbSAKi.js.map} +1 -1
  54. package/dist/{index-BYxqGfuR.js → index-Dwe8JLUr.js} +5 -5
  55. package/dist/{index-BYxqGfuR.js.map → index-Dwe8JLUr.js.map} +1 -1
  56. package/dist/{index-B7QvKSGz.js → index-Jm7acUco.js} +4 -4
  57. package/dist/{index-B7QvKSGz.js.map → index-Jm7acUco.js.map} +1 -1
  58. package/dist/{index-b_iMiCHA.js → index-_mthkdMa.js} +4 -4
  59. package/dist/{index-b_iMiCHA.js.map → index-_mthkdMa.js.map} +1 -1
  60. package/dist/index.js +155 -148
  61. package/dist/{pies.utils-C3VeiEKh.js → pies.utils-E8f3Hj1h.js} +4 -4
  62. package/dist/{pies.utils-C3VeiEKh.js.map → pies.utils-E8f3Hj1h.js.map} +1 -1
  63. package/dist/remarkable-ui/components/charts/chartjs.cartesian.constants.d.ts +5 -5
  64. package/dist/remarkable-ui/components/charts/chartjs.cartesian.constants.d.ts.map +1 -1
  65. package/dist/remarkable-ui/components/charts/chartjs.constants.d.ts +1 -1
  66. package/dist/remarkable-ui/components/charts/chartjs.constants.d.ts.map +1 -1
  67. package/dist/remarkable-ui/components/charts/kpis/KpiChart.stories.d.ts.map +1 -1
  68. package/dist/remarkable-ui/index.d.ts +1 -1
  69. package/dist/remarkable-ui/index.d.ts.map +1 -1
  70. package/dist/remarkable-ui/styles/styles.tokensComponents.constants.d.ts +8 -4
  71. package/dist/remarkable-ui/styles/styles.tokensComponents.constants.d.ts.map +1 -1
  72. package/dist/remarkable-ui.css +9 -5
  73. package/dist/{timeRange.utils-CplLUFvd.js → timeRange.utils-DuutFoIE.js} +2 -2
  74. package/dist/{timeRange.utils-CplLUFvd.js.map → timeRange.utils-DuutFoIE.js.map} +1 -1
  75. package/package.json +1 -1
  76. package/dist/charts.utils-DnzWuMfl.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import { i as L, r as w, m as M, j as l, B as V, d as y, a as z, b as P, t as k, c as v, s as H, e as R, f as j, g as I, x as S, y as T, h as Y, k as F, l as E, n as G, V as O, o as W } from "./component.constants-CYS5-3qd.js";
1
+ import { i as L, r as w, m as M, j as l, B as V, d as y, a as z, b as P, t as k, c as v, s as H, e as R, f as j, g as I, x as S, y as T, h as Y, k as F, l as E, n as G, V as O, o as W } from "./component.constants-B5vygi6l.js";
2
2
  import { useTheme as _, defineComponent as q } from "@embeddable.com/react";
3
- import { C as J } from "./ChartCard-CyemTSay.js";
3
+ import { C as J } from "./ChartCard-BzLW_64B.js";
4
4
  import "react";
5
- import { g as K, a as N } from "./bars.utils-CfUdtqtZ.js";
5
+ import { g as K, a as N } from "./bars.utils-CAMiF7iA.js";
6
6
  import { u as Q } from "./charts.fillGaps.hooks-5WclK2CD.js";
7
7
  const U = (a) => {
8
8
  var i, n;
@@ -1,8 +1,8 @@
1
- import { i as L, r as y, m as w, j as l, B as M, d as V, a as P, b as v, t as k, c as R, s as j, e as I, f as S, g as T, x as X, y as F, p as q, q as z, u as E, v as G, V as O, o as W } from "./component.constants-CYS5-3qd.js";
1
+ import { i as L, r as y, m as w, j as l, B as M, d as V, a as P, b as v, t as k, c as R, s as j, e as I, f as S, g as T, x as X, y as F, p as q, q as z, u as E, v as G, V as O, o as W } from "./component.constants-B5vygi6l.js";
2
2
  import { useTheme as _, defineComponent as H } from "@embeddable.com/react";
3
- import { C as J } from "./ChartCard-CyemTSay.js";
3
+ import { C as J } from "./ChartCard-BzLW_64B.js";
4
4
  import "react";
5
- import { g as K, a as N } from "./bars.utils-CfUdtqtZ.js";
5
+ import { g as K, a as N } from "./bars.utils-CAMiF7iA.js";
6
6
  import { u as Q } from "./charts.fillGaps.hooks-5WclK2CD.js";
7
7
  const U = (a) => {
8
8
  var o, n;
@@ -1,8 +1,8 @@
1
- import { i as L, r as w, m as k, j as m, B as z, d as G, w as P, b as R, z as M, t as H, c as j, A as v, s as S, e as T, f as F, g as Y, x as E, y as I, h as O, k as W, l as _, V as u, o as q } from "./component.constants-CYS5-3qd.js";
1
+ import { i as L, r as w, m as k, j as m, B as z, d as G, w as P, b as R, z as M, t as H, c as j, A as v, s as S, e as T, f as F, g as Y, x as E, y as I, h as O, k as W, l as _, V as u, o as q } from "./component.constants-B5vygi6l.js";
2
2
  import { useTheme as J, defineComponent as K } from "@embeddable.com/react";
3
- import { C as N } from "./ChartCard-CyemTSay.js";
3
+ import { C as N } from "./ChartCard-BzLW_64B.js";
4
4
  import "react";
5
- import { b as Q, a as U } from "./bars.utils-CfUdtqtZ.js";
5
+ import { b as Q, a as U } from "./bars.utils-CAMiF7iA.js";
6
6
  import { u as X } from "./charts.fillGaps.hooks-5WclK2CD.js";
7
7
  const Z = (e) => {
8
8
  var n, l;
@@ -1,8 +1,8 @@
1
- import { i as L, r as w, m as G, j as m, B as k, d as P, w as R, b as M, z as j, t as v, c as S, A as T, s as F, e as X, f as z, g as q, x as E, y as I, p as O, q as W, u as _, V as u, o as H } from "./component.constants-CYS5-3qd.js";
1
+ import { i as L, r as w, m as G, j as m, B as k, d as P, w as R, b as M, z as j, t as v, c as S, A as T, s as F, e as X, f as z, g as q, x as E, y as I, p as O, q as W, u as _, V as u, o as H } from "./component.constants-B5vygi6l.js";
2
2
  import { useTheme as J, defineComponent as K } from "@embeddable.com/react";
3
- import { C as N } from "./ChartCard-CyemTSay.js";
3
+ import { C as N } from "./ChartCard-BzLW_64B.js";
4
4
  import "react";
5
- import { b as Q, a as U } from "./bars.utils-CfUdtqtZ.js";
5
+ import { b as Q, a as U } from "./bars.utils-CAMiF7iA.js";
6
6
  import { u as Y } from "./charts.fillGaps.hooks-5WclK2CD.js";
7
7
  const Z = (e) => {
8
8
  var n, l;
@@ -1,8 +1,8 @@
1
- import { i as L, r as f, m as w, j as m, B as S, d as z, w as P, b as R, z as M, t as H, c as T, A as j, s as v, e as F, f as G, g as Y, x as E, y as I, h as O, k as W, l as _, C as q, V as u, o as J } from "./component.constants-CYS5-3qd.js";
1
+ import { i as L, r as f, m as w, j as m, B as S, d as z, w as P, b as R, z as M, t as H, c as T, A as j, s as v, e as F, f as G, g as Y, x as E, y as I, h as O, k as W, l as _, C as q, V as u, o as J } from "./component.constants-B5vygi6l.js";
2
2
  import { useTheme as K, defineComponent as N } from "@embeddable.com/react";
3
- import { C as Q } from "./ChartCard-CyemTSay.js";
3
+ import { C as Q } from "./ChartCard-BzLW_64B.js";
4
4
  import "react";
5
- import { b as U, a as X } from "./bars.utils-CfUdtqtZ.js";
5
+ import { b as U, a as X } from "./bars.utils-CAMiF7iA.js";
6
6
  import { u as Z } from "./charts.fillGaps.hooks-5WclK2CD.js";
7
7
  const $ = (a) => {
8
8
  var n, l;
@@ -1,8 +1,8 @@
1
- import { i as D, r as L, m as w, j as m, B as S, d as P, w as R, b as M, z as T, t as j, c as v, A as F, s as G, e as X, f as z, g as q, x as E, y as I, p as O, q as W, u as _, C as H, V as u, o as J } from "./component.constants-CYS5-3qd.js";
1
+ import { i as D, r as L, m as w, j as m, B as S, d as P, w as R, b as M, z as T, t as j, c as v, A as F, s as G, e as X, f as z, g as q, x as E, y as I, p as O, q as W, u as _, C as H, V as u, o as J } from "./component.constants-B5vygi6l.js";
2
2
  import { useTheme as K, defineComponent as N } from "@embeddable.com/react";
3
- import { C as Q } from "./ChartCard-CyemTSay.js";
3
+ import { C as Q } from "./ChartCard-BzLW_64B.js";
4
4
  import "react";
5
- import { b as U, a as Y } from "./bars.utils-CfUdtqtZ.js";
5
+ import { b as U, a as Y } from "./bars.utils-CAMiF7iA.js";
6
6
  import { u as Z } from "./charts.fillGaps.hooks-5WclK2CD.js";
7
7
  const $ = (e) => {
8
8
  var n, l;
@@ -1,4 +1,4 @@
1
- import { a0 as R, j as t, aJ as p, i as f, a8 as D, ad as w, F as m, a9 as N, a7 as S, a3 as L, a5 as I, a2 as x, a4 as b, a6 as _, aK as M } from "./component.constants-CYS5-3qd.js";
1
+ import { a0 as k, j as t, aQ as p, i as f, a8 as D, ad as w, F as m, a9 as N, a7 as S, a3 as L, a5 as I, a2 as x, a4 as b, a6 as _, aR as M } from "./component.constants-B5vygi6l.js";
2
2
  import j, { useRef as $ } from "react";
3
3
  import { useTheme as y } from "@embeddable.com/react";
4
4
  /**
@@ -7,19 +7,19 @@ import { useTheme as y } from "@embeddable.com/react";
7
7
  * This source code is licensed under the MIT license.
8
8
  * See the LICENSE file in the root directory of this source tree.
9
9
  */
10
- const F = [["path", { d: "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-0" }], ["path", { d: "M12 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-1" }], ["path", { d: "M12 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-2" }]], T = R("outline", "dots-vertical", "DotsVertical", F), A = "_skeleton_1r4sj_10", P = {
10
+ const F = [["path", { d: "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-0" }], ["path", { d: "M12 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-1" }], ["path", { d: "M12 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-2" }]], T = k("outline", "dots-vertical", "DotsVertical", F), A = "_skeleton_1r4sj_10", P = {
11
11
  skeleton: A
12
- }, E = () => /* @__PURE__ */ t.jsx("div", { className: P.skeleton }), K = "_chartCard_84eo6_1", V = "_fixedContent_84eo6_6", B = "_loading_84eo6_13", H = "_hidden_84eo6_18", J = "_chartCardRightContent_84eo6_22", n = {
13
- chartCard: K,
14
- fixedContent: V,
15
- loading: B,
16
- hidden: H,
17
- chartCardRightContent: J
18
- }, O = "_loading_k5y8w_7", q = {
19
- loading: O
12
+ }, E = () => /* @__PURE__ */ t.jsx("div", { className: P.skeleton }), V = "_chartCard_84eo6_1", B = "_fixedContent_84eo6_6", H = "_loading_84eo6_13", K = "_hidden_84eo6_18", O = "_chartCardRightContent_84eo6_22", n = {
13
+ chartCard: V,
14
+ fixedContent: B,
15
+ loading: H,
16
+ hidden: K,
17
+ chartCardRightContent: O
18
+ }, Q = "_loading_k5y8w_7", q = {
19
+ loading: Q
20
20
  }, v = () => /* @__PURE__ */ t.jsx(p, { className: q.loading }), z = "_list_mwshn_1", G = {
21
21
  list: z
22
- }, Q = (o) => {
22
+ }, J = (o) => {
23
23
  var h, C;
24
24
  const i = y();
25
25
  f(i);
@@ -62,7 +62,7 @@ const F = [["path", { d: "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-0
62
62
  var g;
63
63
  const C = y();
64
64
  f(C);
65
- const s = $(null), a = !!(e != null && e.data && ((g = e.data) == null ? void 0 : g.length) > 0), r = !e || (e == null ? void 0 : e.isLoading), k = () => r && !a ? /* @__PURE__ */ t.jsx(E, {}) : c ? /* @__PURE__ */ t.jsx(
65
+ const s = $(null), a = !!(e != null && e.data && ((g = e.data) == null ? void 0 : g.length) > 0), r = !e || (e == null ? void 0 : e.isLoading), R = () => r && !a ? /* @__PURE__ */ t.jsx(E, {}) : c ? /* @__PURE__ */ t.jsx(
66
66
  _,
67
67
  {
68
68
  variant: "error",
@@ -96,7 +96,7 @@ const F = [["path", { d: "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-0
96
96
  {
97
97
  className: x(n.fixedContent, r ? n.hidden : n.visible),
98
98
  children: /* @__PURE__ */ t.jsx(
99
- Q,
99
+ J,
100
100
  {
101
101
  title: o,
102
102
  containerRef: s,
@@ -110,7 +110,7 @@ const F = [["path", { d: "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-0
110
110
  ] })
111
111
  }
112
112
  ),
113
- /* @__PURE__ */ t.jsx(b, { ref: l.onCustomDownload ? h : s, children: k() })
113
+ /* @__PURE__ */ t.jsx(b, { ref: l.onCustomDownload ? h : s, children: R() })
114
114
  ] });
115
115
  }
116
116
  );
@@ -119,4 +119,4 @@ export {
119
119
  U as C,
120
120
  E as S
121
121
  };
122
- //# sourceMappingURL=ChartCard-CyemTSay.js.map
122
+ //# sourceMappingURL=ChartCard-BzLW_64B.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartCard-CyemTSay.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconDotsVertical.mjs","../src/remarkable-ui/components/shared/Skeleton/Skeleton.tsx","../src/remarkable-pro/components/charts/shared/ChartCard/ChartCardLoading/ChartCardLoading.tsx","../src/remarkable-pro/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.tsx","../src/remarkable-pro/components/charts/shared/ChartCard/ChartCard.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.35.0 - 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\": \"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M12 5m-1 0a1 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 styles from './Skeleton.module.css';\n\nexport const Skeleton = () => {\n return <div className={styles.skeleton} />;\n};\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 '../../../../../../remarkable-ui';\nimport { ChartCardMenuProOptionOnClickProps } from './ChartCardMenuPro.types';\nimport styles from './ChartCardMenuPro.module.css';\n\ntype ChartCardMenuProProps = Omit<ChartCardMenuProOptionOnClickProps, '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.charts?.chartCardMenuPro?.options ?? [];\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: ChartCardMenuProOptionOnClickProps) => 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={\n option.iconSrc ? <img src={option.iconSrc} alt={`${label} icon`} /> : undefined\n }\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 '../../../../../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 { ChartCardMenuProOptionOnClickProps } from './ChartCardMenuPro/ChartCardMenuPro.types';\nimport clsx from 'clsx';\n\ntype ChartCardProps = {\n title: string;\n subtitle?: string;\n children: React.ReactNode;\n data: DataResponse;\n isLoading?: boolean;\n errorMessage?: string;\n style?: CSSProperties;\n dimensionsAndMeasures?: (Dimension | Measure)[];\n onCustomDownload?: (props: (props: ChartCardMenuProOptionOnClickProps) => void) => void;\n};\n\nexport const ChartCard = React.forwardRef<HTMLDivElement, ChartCardProps>(\n (\n { title, subtitle, children, data, errorMessage, dimensionsAndMeasures = [], ...props },\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} {...props}>\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={props.onCustomDownload}\n />\n </div>\n </div>\n }\n />\n\n <CardContent ref={props.onCustomDownload ? ref : chartRef}>{getDisplay()}</CardContent>\n </Card>\n );\n },\n);\n\nChartCard.displayName = 'ChartCard';\n"],"names":["__iconNode","IconDotsVertical","createReactComponent","Skeleton","jsx","styles","ChartCardLoading","IconLoader2","ChartCardMenuPro","props","theme","useTheme","i18nSetup","isLoading","setIsLoading","React","options","_b","_a","startAction","onClick","handleExport","args","Dropdown","ActionIcon","SelectFieldContent","option","index","label","i18n","SelectListOption","ChartCard","title","subtitle","children","data","errorMessage","dimensionsAndMeasures","ref","chartRef","useRef","hasData","getDisplay","CardFeedback","IconAlertCircle","Card","CardHeader","jsxs","clsx","CardContent"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"ChartCard-BzLW_64B.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconDotsVertical.mjs","../src/remarkable-ui/components/shared/Skeleton/Skeleton.tsx","../src/remarkable-pro/components/charts/shared/ChartCard/ChartCardLoading/ChartCardLoading.tsx","../src/remarkable-pro/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.tsx","../src/remarkable-pro/components/charts/shared/ChartCard/ChartCard.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.35.0 - 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\": \"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M12 5m-1 0a1 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 styles from './Skeleton.module.css';\n\nexport const Skeleton = () => {\n return <div className={styles.skeleton} />;\n};\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 '../../../../../../remarkable-ui';\nimport { ChartCardMenuProOptionOnClickProps } from './ChartCardMenuPro.types';\nimport styles from './ChartCardMenuPro.module.css';\n\ntype ChartCardMenuProProps = Omit<ChartCardMenuProOptionOnClickProps, '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.charts?.chartCardMenuPro?.options ?? [];\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: ChartCardMenuProOptionOnClickProps) => 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={\n option.iconSrc ? <img src={option.iconSrc} alt={`${label} icon`} /> : undefined\n }\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 '../../../../../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 { ChartCardMenuProOptionOnClickProps } from './ChartCardMenuPro/ChartCardMenuPro.types';\nimport clsx from 'clsx';\n\ntype ChartCardProps = {\n title: string;\n subtitle?: string;\n children: React.ReactNode;\n data: DataResponse;\n isLoading?: boolean;\n errorMessage?: string;\n style?: CSSProperties;\n dimensionsAndMeasures?: (Dimension | Measure)[];\n onCustomDownload?: (props: (props: ChartCardMenuProOptionOnClickProps) => void) => void;\n};\n\nexport const ChartCard = React.forwardRef<HTMLDivElement, ChartCardProps>(\n (\n { title, subtitle, children, data, errorMessage, dimensionsAndMeasures = [], ...props },\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} {...props}>\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={props.onCustomDownload}\n />\n </div>\n </div>\n }\n />\n\n <CardContent ref={props.onCustomDownload ? ref : chartRef}>{getDisplay()}</CardContent>\n </Card>\n );\n },\n);\n\nChartCard.displayName = 'ChartCard';\n"],"names":["__iconNode","IconDotsVertical","createReactComponent","Skeleton","jsx","styles","ChartCardLoading","IconLoader2","ChartCardMenuPro","props","theme","useTheme","i18nSetup","isLoading","setIsLoading","React","options","_b","_a","startAction","onClick","handleExport","args","Dropdown","ActionIcon","SelectFieldContent","option","index","label","i18n","SelectListOption","ChartCard","title","subtitle","children","data","errorMessage","dimensionsAndMeasures","ref","chartRef","useRef","hasData","getDisplay","CardFeedback","IconAlertCircle","Card","CardHeader","jsxs","clsx","CardContent"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- import { aL as i, aM as o } from "./component.constants-CYS5-3qd.js";
1
+ import { aS as i, aT as o } from "./component.constants-B5vygi6l.js";
2
2
  const e = i("comparisonPeriod", {
3
3
  label: "Comparison Period",
4
4
  optionLabel: (r) => r
@@ -11,4 +11,4 @@ o(e, "Previous year");
11
11
  export {
12
12
  e as C
13
13
  };
14
- //# sourceMappingURL=ComparisonPeriod.type.emb-i3iGuRJI.js.map
14
+ //# sourceMappingURL=ComparisonPeriod.type.emb-D0_AP_PM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComparisonPeriod.type.emb-i3iGuRJI.js","sources":["../src/remarkable-pro/components/types/ComparisonPeriod.type.emb.ts"],"sourcesContent":["import { defineOption, defineType } from '@embeddable.com/core';\n\nconst ComparisonPeriodType = defineType('comparisonPeriod', {\n label: 'Comparison Period',\n optionLabel: (value: string) => value,\n});\n\ndefineOption(ComparisonPeriodType, 'Previous period');\ndefineOption(ComparisonPeriodType, 'Previous week');\ndefineOption(ComparisonPeriodType, 'Previous month');\ndefineOption(ComparisonPeriodType, 'Previous quarter');\ndefineOption(ComparisonPeriodType, 'Previous year');\n\nexport default ComparisonPeriodType;\n"],"names":["ComparisonPeriodType","defineType","value","defineOption"],"mappings":";AAEA,MAAMA,IAAuBC,EAAW,oBAAoB;AAAA,EAC1D,OAAO;AAAA,EACP,aAAa,CAACC,MAAkBA;AAClC,CAAC;AAEDC,EAAaH,GAAsB,iBAAiB;AACpDG,EAAaH,GAAsB,eAAe;AAClDG,EAAaH,GAAsB,gBAAgB;AACnDG,EAAaH,GAAsB,kBAAkB;AACrDG,EAAaH,GAAsB,eAAe;"}
1
+ {"version":3,"file":"ComparisonPeriod.type.emb-D0_AP_PM.js","sources":["../src/remarkable-pro/components/types/ComparisonPeriod.type.emb.ts"],"sourcesContent":["import { defineOption, defineType } from '@embeddable.com/core';\n\nconst ComparisonPeriodType = defineType('comparisonPeriod', {\n label: 'Comparison Period',\n optionLabel: (value: string) => value,\n});\n\ndefineOption(ComparisonPeriodType, 'Previous period');\ndefineOption(ComparisonPeriodType, 'Previous week');\ndefineOption(ComparisonPeriodType, 'Previous month');\ndefineOption(ComparisonPeriodType, 'Previous quarter');\ndefineOption(ComparisonPeriodType, 'Previous year');\n\nexport default ComparisonPeriodType;\n"],"names":["ComparisonPeriodType","defineType","value","defineOption"],"mappings":";AAEA,MAAMA,IAAuBC,EAAW,oBAAoB;AAAA,EAC1D,OAAO;AAAA,EACP,aAAa,CAACC,MAAkBA;AAClC,CAAC;AAEDC,EAAaH,GAAsB,iBAAiB;AACpDG,EAAaH,GAAsB,eAAe;AAClDG,EAAaH,GAAsB,gBAAgB;AACnDG,EAAaH,GAAsB,kBAAkB;AACrDG,EAAaH,GAAsB,eAAe;"}
@@ -1,10 +1,10 @@
1
1
  import { useTheme as v, defineComponent as h } from "@embeddable.com/react";
2
- import { a0 as P, P as y, i as f, r as b, j as l, F as C, t as S, c as F, a1 as R, V as d } from "./component.constants-CYS5-3qd.js";
2
+ import { a0 as P, P as y, i as f, r as b, j as l, F as C, t as S, c as F, a1 as R, V as d } from "./component.constants-B5vygi6l.js";
3
3
  import { useMemo as M, useEffect as k } from "react";
4
- import { S as D } from "./SingleSelectField-CSJOpQeh.js";
4
+ import { S as D } from "./SingleSelectField-CX2hEN0u.js";
5
5
  import { g as T, u as j, a as x } from "./editors.timeRange.utils-D9m6B3r1.js";
6
- import { E as L } from "./EditorCard-BICCSvPo.js";
7
- import { C as s } from "./ComparisonPeriod.type.emb-i3iGuRJI.js";
6
+ import { E as L } from "./EditorCard-BLudeyiZ.js";
7
+ import { C as s } from "./ComparisonPeriod.type.emb-D0_AP_PM.js";
8
8
  /**
9
9
  * @license @tabler/icons-react v3.35.0 - MIT
10
10
  *
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as t } from "@embeddable.com/react";
2
- import { t as l, c as n, a1 as r, V as a } from "./component.constants-CYS5-3qd.js";
3
- import { D as o } from "./index-b_iMiCHA.js";
2
+ import { t as l, c as n, a1 as r, V as a } from "./component.constants-B5vygi6l.js";
3
+ import { D as o } from "./index-_mthkdMa.js";
4
4
  const i = {
5
5
  name: "DateRangeSelectFieldPro",
6
6
  label: "Date Range Select Field",
@@ -1,6 +1,6 @@
1
- import { d as a, w as s, z as t, t as o, c as n, s as r, Q as i, e as m, f as l, V as d, o as u } from "./component.constants-CYS5-3qd.js";
1
+ import { d as a, w as s, z as t, t as o, c as n, s as r, Q as i, e as m, f as l, V as d, o as u } from "./component.constants-B5vygi6l.js";
2
2
  import { defineComponent as c } from "@embeddable.com/react";
3
- import { D as p } from "./index-GHJlcYHx.js";
3
+ import { D as p } from "./index-DhfbSAKi.js";
4
4
  const C = {
5
5
  name: "DonutChartPro",
6
6
  label: "Donut Chart",
@@ -1,5 +1,5 @@
1
- import { D as n } from "./index-cQhXpSWY.js";
2
- import { d as s, w as a, z as r, t as o, c as l, s as i, Q as m, e as d, f as u, V as b, o as t } from "./component.constants-CYS5-3qd.js";
1
+ import { D as n } from "./index-BOcQ7e6Q.js";
2
+ import { d as s, w as a, z as r, t as o, c as l, s as i, Q as m, e as d, f as u, V as b, o as t } from "./component.constants-B5vygi6l.js";
3
3
  import { defineComponent as c } from "@embeddable.com/react";
4
4
  const p = {
5
5
  name: "DonutLabelChartPro",
@@ -1,4 +1,4 @@
1
- import { a0 as i, j as c, i as l, a3 as u, a5 as d, a4 as m, a6 as y, F as g, aK as h } from "./component.constants-CYS5-3qd.js";
1
+ import { a0 as i, j as c, i as l, a3 as u, a5 as d, a4 as m, a6 as y, F as g, aR as h } from "./component.constants-B5vygi6l.js";
2
2
  import { useEffect as f } from "react";
3
3
  import { useTheme as C } from "@embeddable.com/react";
4
4
  /**
@@ -28,8 +28,8 @@ const _ = [["path", { d: "M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0", key: "svg
28
28
  }, [t, s]);
29
29
  }, j = "_selectFieldCategory_fdkgf_1", x = {
30
30
  selectFieldCategory: j
31
- }, $ = ({ label: t }) => /* @__PURE__ */ c.jsx("span", { className: x.selectFieldCategory, children: t });
32
- function w(t, s = 300) {
31
+ }, R = ({ label: t }) => /* @__PURE__ */ c.jsx("span", { className: x.selectFieldCategory, children: t });
32
+ function $(t, s = 300) {
33
33
  let e;
34
34
  return (...r) => {
35
35
  clearTimeout(e), e = setTimeout(() => {
@@ -39,7 +39,7 @@ function w(t, s = 300) {
39
39
  }
40
40
  const b = "_card_15bw3_1", S = {
41
41
  card: b
42
- }, A = ({
42
+ }, w = ({
43
43
  title: t,
44
44
  subtitle: s,
45
45
  children: e,
@@ -63,12 +63,12 @@ const b = "_card_15bw3_1", S = {
63
63
  ] });
64
64
  };
65
65
  export {
66
- A as E,
66
+ w as E,
67
67
  B as I,
68
- $ as S,
69
- w as d,
68
+ R as S,
69
+ $ as d,
70
70
  E as g,
71
71
  I as s,
72
72
  N as u
73
73
  };
74
- //# sourceMappingURL=EditorCard-BICCSvPo.js.map
74
+ //# sourceMappingURL=EditorCard-BLudeyiZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditorCard-BICCSvPo.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.mjs","../src/remarkable-ui/components/editors/selects/shared/SelectFieldContent/SelectFieldContent.utils.ts","../src/remarkable-ui/components/editors/selects/shared/useSelectSearchFocus.hook.ts","../src/remarkable-ui/components/editors/selects/shared/SelectFieldContent/SelectListOptions/SelectFieldCategory/SelectFieldCategory.tsx","../src/remarkable-ui/utils/debounce.utils.ts","../src/remarkable-pro/components/editors/shared/EditorCard/EditorCard.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.35.0 - 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\": \"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M21 21l-6 -6\", \"key\": \"svg-1\" }]];\nconst IconSearch = createReactComponent(\"outline\", \"search\", \"Search\", __iconNode);\n\nexport { __iconNode, IconSearch as default };\n//# sourceMappingURL=IconSearch.mjs.map\n","import {\n SelectListOptionProps,\n SelectListOptionPropsWithCategory,\n} from './SelectListOptions/SelectFieldOption/SelectFieldOption';\n\ntype GroupedOptions = {\n [category: string]: SelectListOptionPropsWithCategory[];\n};\n\nexport const groupOptionsByCategory = (\n options: (SelectListOptionProps | SelectListOptionPropsWithCategory)[],\n): GroupedOptions | null => {\n const result = options.reduce<GroupedOptions>((acc, option) => {\n if ('category' in option && option.category) {\n const category = option.category;\n if (!acc[category]) {\n acc[category] = [];\n }\n acc[category].push(option);\n }\n return acc;\n }, {});\n\n // Return null if no categories were found\n return Object.keys(result).length === 0 ? null : result;\n};\n","import { useEffect } from 'react';\n\nexport const useSelectSearchFocus = (\n isOpen: boolean,\n searchFieldRef: React.RefObject<HTMLInputElement | null>,\n) => {\n useEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n (searchFieldRef.current as unknown as HTMLInputElement)?.focus();\n }, 100);\n }\n }, [isOpen, searchFieldRef]);\n};\n","import { FC } from 'react';\nimport styles from './SelectFieldCategory.module.css';\n\ntype SelectFieldCategoryProps = {\n label: string;\n};\n\nexport const SelectFieldCategory: FC<SelectFieldCategoryProps> = ({ label }) => {\n return <span className={styles.selectFieldCategory}>{label}</span>;\n};\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function debounce<T extends (...args: any[]) => void>(\n fn: T,\n delay = 300,\n): (...args: Parameters<T>) => void {\n let timer: NodeJS.Timeout;\n return (...args: Parameters<T>) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n}\n","import { useTheme } from '@embeddable.com/react';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport styles from './EditorCard.module.css';\nimport { FC } from 'react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { Card, CardContent, CardFeedback, CardHeader } from '../../../../../remarkable-ui';\nimport { IconAlertCircle } from '@tabler/icons-react';\n\ntype EditorCardProps = {\n title?: string;\n subtitle?: string;\n children: React.ReactNode;\n errorMessage?: string;\n};\n\nexport const EditorCard: FC<EditorCardProps> = ({\n title,\n subtitle,\n children,\n errorMessage,\n ...props\n}) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const getDisplay = () => {\n if (errorMessage) {\n return (\n <CardFeedback\n variant=\"error\"\n icon={IconAlertCircle}\n title={i18n.t('editors.errorTitle')}\n message={errorMessage}\n />\n );\n }\n\n return children;\n };\n\n return (\n <Card className={styles.card} {...props}>\n <CardHeader title={title} subtitle={subtitle} />\n <CardContent>{getDisplay()}</CardContent>\n </Card>\n );\n};\n"],"names":["__iconNode","IconSearch","createReactComponent","groupOptionsByCategory","options","result","acc","option","category","useSelectSearchFocus","isOpen","searchFieldRef","useEffect","_a","SelectFieldCategory","label","jsx","styles","debounce","fn","delay","timer","args","EditorCard","title","subtitle","children","errorMessage","props","theme","useTheme","i18nSetup","getDisplay","CardFeedback","IconAlertCircle","i18n","Card","CardHeader","CardContent"],"mappings":";;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa,CAAC,CAAC,QAAQ,EAAE,GAAK,8CAA8C,KAAO,QAAO,CAAE,GAAG,CAAC,QAAQ,EAAE,GAAK,gBAAgB,KAAO,QAAO,CAAE,CAAC,GAChJC,IAAaC,EAAqB,WAAW,UAAU,UAAUF,CAAU,GCDpEG,IAAyB,CACpCC,MAC0B;AAC1B,QAAMC,IAASD,EAAQ,OAAuB,CAACE,GAAKC,MAAW;AAC7D,QAAI,cAAcA,KAAUA,EAAO,UAAU;AAC3C,YAAMC,IAAWD,EAAO;AACxB,MAAKD,EAAIE,CAAQ,MACfF,EAAIE,CAAQ,IAAI,CAAA,IAElBF,EAAIE,CAAQ,EAAE,KAAKD,CAAM;AAAA,IAC3B;AACA,WAAOD;AAAA,EACT,GAAG,CAAA,CAAE;AAGL,SAAO,OAAO,KAAKD,CAAM,EAAE,WAAW,IAAI,OAAOA;AACnD;;;GCvBaI,IAAuB,CAClCC,GACAC,MACG;AACH,EAAAC,EAAU,MAAM;AACd,IAAIF,KACF,WAAW,MAAM;;AACd,OAAAG,IAAAF,EAAe,YAAf,QAAAE,EAAwD;AAAA,IAC3D,GAAG,GAAG;AAAA,EAEV,GAAG,CAACH,GAAQC,CAAc,CAAC;AAC7B;;GCNaG,IAAoD,CAAC,EAAE,OAAAC,QAC3DC,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAWC,EAAO,qBAAsB,UAAAF,GAAM;ACPtD,SAASG,EACdC,GACAC,IAAQ,KAC0B;AAClC,MAAIC;AACJ,SAAO,IAAIC,MAAwB;AACjC,iBAAaD,CAAK,GAClBA,IAAQ,WAAW,MAAM;AACvB,MAAAF,EAAG,GAAGG,CAAI;AAAA,IACZ,GAAGF,CAAK;AAAA,EACV;AACF;;;GCGaG,IAAkC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAMG,IAAa,MACbL,IAEAX,gBAAAA,EAAAA;AAAAA,IAACiB;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAMC;AAAA,MACN,OAAOC,EAAK,EAAE,oBAAoB;AAAA,MAClC,SAASR;AAAA,IAAA;AAAA,EAAA,IAKRD;AAGT,gCACGU,GAAA,EAAK,WAAWnB,EAAO,MAAO,GAAGW,GAChC,UAAA;AAAA,IAAAZ,gBAAAA,EAAAA,IAACqB,GAAA,EAAW,OAAAb,GAAc,UAAAC,EAAA,CAAoB;AAAA,IAC9CT,gBAAAA,EAAAA,IAACsB,GAAA,EAAa,UAAAN,EAAA,EAAW,CAAE;AAAA,EAAA,GAC7B;AAEJ;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"EditorCard-BLudeyiZ.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.mjs","../src/remarkable-ui/components/editors/selects/shared/SelectFieldContent/SelectFieldContent.utils.ts","../src/remarkable-ui/components/editors/selects/shared/useSelectSearchFocus.hook.ts","../src/remarkable-ui/components/editors/selects/shared/SelectFieldContent/SelectListOptions/SelectFieldCategory/SelectFieldCategory.tsx","../src/remarkable-ui/utils/debounce.utils.ts","../src/remarkable-pro/components/editors/shared/EditorCard/EditorCard.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.35.0 - 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\": \"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M21 21l-6 -6\", \"key\": \"svg-1\" }]];\nconst IconSearch = createReactComponent(\"outline\", \"search\", \"Search\", __iconNode);\n\nexport { __iconNode, IconSearch as default };\n//# sourceMappingURL=IconSearch.mjs.map\n","import {\n SelectListOptionProps,\n SelectListOptionPropsWithCategory,\n} from './SelectListOptions/SelectFieldOption/SelectFieldOption';\n\ntype GroupedOptions = {\n [category: string]: SelectListOptionPropsWithCategory[];\n};\n\nexport const groupOptionsByCategory = (\n options: (SelectListOptionProps | SelectListOptionPropsWithCategory)[],\n): GroupedOptions | null => {\n const result = options.reduce<GroupedOptions>((acc, option) => {\n if ('category' in option && option.category) {\n const category = option.category;\n if (!acc[category]) {\n acc[category] = [];\n }\n acc[category].push(option);\n }\n return acc;\n }, {});\n\n // Return null if no categories were found\n return Object.keys(result).length === 0 ? null : result;\n};\n","import { useEffect } from 'react';\n\nexport const useSelectSearchFocus = (\n isOpen: boolean,\n searchFieldRef: React.RefObject<HTMLInputElement | null>,\n) => {\n useEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n (searchFieldRef.current as unknown as HTMLInputElement)?.focus();\n }, 100);\n }\n }, [isOpen, searchFieldRef]);\n};\n","import { FC } from 'react';\nimport styles from './SelectFieldCategory.module.css';\n\ntype SelectFieldCategoryProps = {\n label: string;\n};\n\nexport const SelectFieldCategory: FC<SelectFieldCategoryProps> = ({ label }) => {\n return <span className={styles.selectFieldCategory}>{label}</span>;\n};\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function debounce<T extends (...args: any[]) => void>(\n fn: T,\n delay = 300,\n): (...args: Parameters<T>) => void {\n let timer: NodeJS.Timeout;\n return (...args: Parameters<T>) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n}\n","import { useTheme } from '@embeddable.com/react';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport styles from './EditorCard.module.css';\nimport { FC } from 'react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { Card, CardContent, CardFeedback, CardHeader } from '../../../../../remarkable-ui';\nimport { IconAlertCircle } from '@tabler/icons-react';\n\ntype EditorCardProps = {\n title?: string;\n subtitle?: string;\n children: React.ReactNode;\n errorMessage?: string;\n};\n\nexport const EditorCard: FC<EditorCardProps> = ({\n title,\n subtitle,\n children,\n errorMessage,\n ...props\n}) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const getDisplay = () => {\n if (errorMessage) {\n return (\n <CardFeedback\n variant=\"error\"\n icon={IconAlertCircle}\n title={i18n.t('editors.errorTitle')}\n message={errorMessage}\n />\n );\n }\n\n return children;\n };\n\n return (\n <Card className={styles.card} {...props}>\n <CardHeader title={title} subtitle={subtitle} />\n <CardContent>{getDisplay()}</CardContent>\n </Card>\n );\n};\n"],"names":["__iconNode","IconSearch","createReactComponent","groupOptionsByCategory","options","result","acc","option","category","useSelectSearchFocus","isOpen","searchFieldRef","useEffect","_a","SelectFieldCategory","label","jsx","styles","debounce","fn","delay","timer","args","EditorCard","title","subtitle","children","errorMessage","props","theme","useTheme","i18nSetup","getDisplay","CardFeedback","IconAlertCircle","i18n","Card","CardHeader","CardContent"],"mappings":";;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa,CAAC,CAAC,QAAQ,EAAE,GAAK,8CAA8C,KAAO,QAAO,CAAE,GAAG,CAAC,QAAQ,EAAE,GAAK,gBAAgB,KAAO,QAAO,CAAE,CAAC,GAChJC,IAAaC,EAAqB,WAAW,UAAU,UAAUF,CAAU,GCDpEG,IAAyB,CACpCC,MAC0B;AAC1B,QAAMC,IAASD,EAAQ,OAAuB,CAACE,GAAKC,MAAW;AAC7D,QAAI,cAAcA,KAAUA,EAAO,UAAU;AAC3C,YAAMC,IAAWD,EAAO;AACxB,MAAKD,EAAIE,CAAQ,MACfF,EAAIE,CAAQ,IAAI,CAAA,IAElBF,EAAIE,CAAQ,EAAE,KAAKD,CAAM;AAAA,IAC3B;AACA,WAAOD;AAAA,EACT,GAAG,CAAA,CAAE;AAGL,SAAO,OAAO,KAAKD,CAAM,EAAE,WAAW,IAAI,OAAOA;AACnD;;;GCvBaI,IAAuB,CAClCC,GACAC,MACG;AACH,EAAAC,EAAU,MAAM;AACd,IAAIF,KACF,WAAW,MAAM;;AACd,OAAAG,IAAAF,EAAe,YAAf,QAAAE,EAAwD;AAAA,IAC3D,GAAG,GAAG;AAAA,EAEV,GAAG,CAACH,GAAQC,CAAc,CAAC;AAC7B;;GCNaG,IAAoD,CAAC,EAAE,OAAAC,QAC3DC,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAWC,EAAO,qBAAsB,UAAAF,GAAM;ACPtD,SAASG,EACdC,GACAC,IAAQ,KAC0B;AAClC,MAAIC;AACJ,SAAO,IAAIC,MAAwB;AACjC,iBAAaD,CAAK,GAClBA,IAAQ,WAAW,MAAM;AACvB,MAAAF,EAAG,GAAGG,CAAI;AAAA,IACZ,GAAGF,CAAK;AAAA,EACV;AACF;;;GCGaG,IAAkC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAMG,IAAa,MACbL,IAEAX,gBAAAA,EAAAA;AAAAA,IAACiB;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAMC;AAAA,MACN,OAAOC,EAAK,EAAE,oBAAoB;AAAA,MAClC,SAASR;AAAA,IAAA;AAAA,EAAA,IAKRD;AAGT,gCACGU,GAAA,EAAK,WAAWnB,EAAO,MAAO,GAAGW,GAChC,UAAA;AAAA,IAAAZ,gBAAAA,EAAAA,IAACqB,GAAA,EAAW,OAAAb,GAAc,UAAAC,EAAA,CAAoB;AAAA,IAC9CT,gBAAAA,EAAAA,IAACsB,GAAA,EAAa,UAAAN,EAAA,EAAW,CAAE;AAAA,EAAA,GAC7B;AAEJ;","x_google_ignoreList":[0]}
@@ -1,7 +1,7 @@
1
- import { aq as z, j as f, a2 as T, aI as N } from "./component.constants-CYS5-3qd.js";
1
+ import { aq as z, j as f, a2 as T, aP as N } from "./component.constants-B5vygi6l.js";
2
2
  import { useMemo as S, useCallback as Q } from "react";
3
3
  import { g as k } from "./tables.utils-D7KXdM2S.js";
4
- const $ = (t) => t < 0 ? 0 : t > 1 ? 1 : t, I = (t) => 1 - (1 - t) * (1 - t), j = (t, e, r) => t + (e - t) * r, P = 0.35, U = "#000000", J = "#FFFFFF", C = (t) => String(t ?? ""), W = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/i, w = /* @__PURE__ */ new Map(), B = (t) => {
4
+ const $ = (t) => t < 0 ? 0 : t > 1 ? 1 : t, P = (t) => 1 - (1 - t) * (1 - t), j = (t, e, r) => t + (e - t) * r, V = 0.35, U = "#000000", J = "#FFFFFF", C = (t) => String(t ?? ""), W = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/i, w = /* @__PURE__ */ new Map(), B = (t) => {
5
5
  if (!t || t[0] !== "#") return t;
6
6
  const e = t.slice(1).toLowerCase();
7
7
  return e.length === 3 ? `#${e[0]}${e[0]}${e[1]}${e[1]}${e[2]}${e[2]}` : e.length === 6 ? `#${e}` : t.toLowerCase();
@@ -48,7 +48,7 @@ const $ = (t) => t < 0 ? 0 : t > 1 ? 1 : t, I = (t) => 1 - (1 - t) * (1 - t), j
48
48
  if (!e.endsWith("%")) return null;
49
49
  const r = Number.parseFloat(e.slice(0, -1));
50
50
  return Number.isFinite(r) ? $(r / 100) : null;
51
- }, V = (t, e, r, o) => {
51
+ }, I = (t, e, r, o) => {
52
52
  if (t == null) return o;
53
53
  if (typeof t == "number" && Number.isFinite(t)) return t;
54
54
  const s = typeof t == "string" ? et(t) : null;
@@ -83,11 +83,11 @@ const $ = (t) => t < 0 ? 0 : t > 1 ? 1 : t, I = (t) => 1 - (1 - t) * (1 - t), j
83
83
  if (!Number.isFinite(g)) return b(0.5);
84
84
  const F = (g - t) / x;
85
85
  if (F <= 0) {
86
- const m = Math.max(0, t - g) / d, i = I($(m)) * P;
86
+ const m = Math.max(0, t - g) / d, i = P($(m)) * V;
87
87
  return i > 0 ? M(s, J, i) : s;
88
88
  }
89
89
  if (F >= 1) {
90
- const m = Math.max(0, g - e) / h, i = I($(m)) * P;
90
+ const m = Math.max(0, g - e) / h, i = P($(m)) * V;
91
91
  return i > 0 ? M(a, U, i) : a;
92
92
  }
93
93
  return b(F);
@@ -116,7 +116,7 @@ const $ = (t) => t < 0 ? 0 : t > 1 ? 1 : t, I = (t) => 1 - (1 - t) * (1 - t), j
116
116
  }
117
117
  return !Number.isFinite(n) || !Number.isFinite(c) ? { rawMin: 0, rawMax: 0 } : { rawMin: n, rawMax: c };
118
118
  }, [t, l.key, F]), { domainMin: E, domainMax: L } = S(() => {
119
- const n = V(a, m, i, m), c = V(p, m, i, i);
119
+ const n = I(a, m, i, m), c = I(p, m, i, i);
120
120
  return n <= c ? { domainMin: n, domainMax: c } : { domainMin: c, domainMax: n };
121
121
  }, [a, p, m, i]), O = S(
122
122
  () => Array.from(
@@ -205,4 +205,4 @@ const $ = (t) => t < 0 ? 0 : t > 1 ? 1 : t, I = (t) => 1 - (1 - t) * (1 - t), j
205
205
  export {
206
206
  ut as H
207
207
  };
208
- //# sourceMappingURL=HeatMap-BueWUQTI.js.map
208
+ //# sourceMappingURL=HeatMap-HTlj76CN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeatMap-BueWUQTI.js","sources":["../src/remarkable-ui/components/charts/tables/HeatMap/HeatMap.utils.ts","../src/remarkable-ui/components/charts/tables/HeatMap/HeatMap.tsx"],"sourcesContent":["import { HeatMapPropsMeasure, HeatMapPropsThreshold } from './HeatMap.types';\n\n/* -------------------------------------------------------------------------- */\n/* Core math + tiny helpers */\n/* -------------------------------------------------------------------------- */\n\nconst clamp01 = (x: number) => (x < 0 ? 0 : x > 1 ? 1 : x);\nconst easeOutQuad = (x: number) => 1 - (1 - x) * (1 - x);\nconst lerp = (a: number, b: number, t: number) => a + (b - a) * t;\n\n/** Max darkening applied for values outside the domain (0..1). Lower = lighter tails. */\nconst OUTSIDE_DARKEN_MAX = 0.35;\n/** Darkest color to lerp toward when outside domain (kept as const for tree-shakeability). */\nconst LERP_DARKEST_COLOR = '#000000';\nconst LERP_LIGHTEST_COLOR = '#FFFFFF';\n\nexport const idOf = (v: unknown) => String(v ?? '');\n\n/* -------------------------------------------------------------------------- */\n/* Color parsing / conversion */\n/* - Resolves hex/rgb/hsl/named/var(...) to a hex string (#rrggbb) */\n/* - Memoized to avoid repeated DOM work */\n/* -------------------------------------------------------------------------- */\n\nconst CSS_RGB_REGEX = /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/i;\nconst COLOR_CACHE = new Map<string, string>();\n\n/** Normalizes short or long hex to lowercase #rrggbb; returns input if not hex. */\nconst normalizeHex = (hex: string) => {\n if (!hex || hex[0] !== '#') return hex;\n const v = hex.slice(1).toLowerCase();\n if (v.length === 3) return `#${v[0]}${v[0]}${v[1]}${v[1]}${v[2]}${v[2]}`;\n if (v.length === 6) return `#${v}`;\n return hex.toLowerCase();\n};\n\n/**\n * Resolves any CSS color (hex, rgb/rgba, hsl/hsla, named, var(--token)) into #rrggbb.\n * SSR-safe: returns input unchanged if `document` is not available.\n */\nconst resolveCssColorToHex = (input: string): string => {\n if (!input) return input;\n const cached = COLOR_CACHE.get(input);\n if (cached) return cached;\n\n // Quick-path for hex.\n if (input.startsWith('#')) {\n const hex = normalizeHex(input);\n COLOR_CACHE.set(input, hex);\n return hex;\n }\n\n if (typeof document === 'undefined') {\n // SSR: cannot resolve computed styles → return as-is (caller should accept).\n return input;\n }\n\n // Use the browser to compute final color (resolves var(...), named, hsl, etc.)\n const el = document.createElement('span');\n el.style.color = input;\n document.body.appendChild(el);\n const computed = getComputedStyle(el).color || '';\n el.remove();\n\n // Expect \"rgb(...)\" or \"rgba(...)\" now.\n const m = computed.match(CSS_RGB_REGEX);\n if (!m) return input;\n\n const [, r = '0', g = '0', b = '0'] = m;\n const toHex = (n: string) => Number(n).toString(16).padStart(2, '0');\n const hex = `#${toHex(r)}${toHex(g)}${toHex(b)}`.toLowerCase();\n COLOR_CACHE.set(input, hex);\n return hex;\n};\n\nconst hexToRgb = (color: string) => {\n const hex = normalizeHex(resolveCssColorToHex(color)).slice(1);\n // Guard against bad inputs\n if (hex.length !== 6) return { r: 0, g: 0, b: 0 };\n const i = parseInt(hex, 16);\n return { r: (i >> 16) & 255, g: (i >> 8) & 255, b: i & 255 };\n};\n\nconst rgbToHex = (r: number, g: number, b: number) => {\n const to = (x: number) => Math.round(x).toString(16).padStart(2, '0');\n return `#${to(r)}${to(g)}${to(b)}`;\n};\n\n/** Linear interpolation between two colors (0..1). */\nexport const lerpColor = (a: string, b: string, t: number) => {\n const A = hexToRgb(a);\n const B = hexToRgb(b);\n return rgbToHex(lerp(A.r, B.r, t), lerp(A.g, B.g, t), lerp(A.b, B.b, t));\n};\n\n/** YIQ perceived brightness, used to pick white/black text. */\nconst getBrightness = (color: string) => {\n const { r, g, b } = hexToRgb(color);\n return (r * 299 + g * 587 + b * 114) / 1000;\n};\n\n/** Returns '#FFFFFF' for dark backgrounds, '#212129' for light ones. */\nexport const getCellColor = (backgroundColor: string) => {\n return getBrightness(backgroundColor) < 150 ? '#FFFFFF' : '#212129';\n};\n\n/* -------------------------------------------------------------------------- */\n/* Scales / thresholds */\n/* -------------------------------------------------------------------------- */\n\n/** Creates a diverging scale: t∈[0..1] → color blended across [min→mid→max]. */\nconst makeDiverging = (minC: string, midC: string, maxC: string, midpoint = 0.5) => {\n const m = clamp01(midpoint);\n return (t: number) => {\n const x = clamp01(t);\n return x <= m\n ? lerpColor(minC, midC, m === 0 ? 1 : x / m)\n : lerpColor(midC, maxC, (x - m) / (1 - m));\n };\n};\n\n/** Parses \"NN%\" → 0..1; otherwise null. */\nconst parsePercentString = (s: string): number | null => {\n const t = s.trim();\n if (!t.endsWith('%')) return null;\n const n = Number.parseFloat(t.slice(0, -1));\n return Number.isFinite(n) ? clamp01(n / 100) : null;\n};\n\n/**\n * Converts a flexible threshold into a RAW domain value.\n * - number → raw value\n * - \"NN%\" → percentage of [rawMin..rawMax]\n * - undefined/invalid → fallback\n */\nexport const thresholdToRaw = (\n t: HeatMapPropsThreshold,\n rawMin: number,\n rawMax: number,\n fallback: number,\n): number => {\n if (t == null) return fallback;\n if (typeof t === 'number' && Number.isFinite(t)) return t;\n const asPct = typeof t === 'string' ? parsePercentString(t) : null;\n if (asPct != null) return rawMin + asPct * (rawMax - rawMin);\n\n // Last-chance: numeric string without %\n const maybe = Number(t as unknown as string);\n return Number.isFinite(maybe) ? maybe : fallback;\n};\n\n/* -------------------------------------------------------------------------- */\n/* Cell value helpers */\n/* -------------------------------------------------------------------------- */\n\nconst toFiniteOrSelf = (v: number | string | undefined): number | string | undefined => {\n if (v == null) return v;\n const n = Number(v);\n return Number.isFinite(n) ? n : v;\n};\n\n/**\n * Normalizes the raw cell value for display/compute:\n * - if nullish, uses `displayNullAs` (if numeric string, coerces to number)\n * - if numeric-like, returns as number\n * - otherwise returns original string\n */\nexport const getCellValue = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any,\n displayNullAs: string | number | undefined,\n): string | number | undefined => {\n const fallback =\n displayNullAs && Number.isFinite(Number(displayNullAs)) ? Number(displayNullAs) : displayNullAs;\n return toFiniteOrSelf(value ?? fallback);\n};\n\n/** Returns the background color for a given cell value using a prepared mapper. */\nexport const getCellBackground = (\n value: number | string | undefined,\n colorForValue: (t: number) => string,\n): string => {\n if (typeof value !== 'number' || !Number.isFinite(value)) return 'white';\n return colorForValue(value);\n};\n\n/** Formats the cell’s display text (respects showValues & measure.format). */\nexport const getCellDisplayValue = (\n value: number | string | undefined,\n showValues: boolean,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n measure: HeatMapPropsMeasure<any>,\n) => {\n if (!showValues) return null;\n if (typeof value === 'string' || value == null || Number.isNaN(value as number)) return value;\n return measure?.format ? measure.format(Number(value)) : value;\n};\n\n/* -------------------------------------------------------------------------- */\n/* Color mapper factory */\n/* -------------------------------------------------------------------------- */\n\n/** Returns midpoint in [0..1] for the diverging scale given raw min/max. */\nconst getMidPoint = (domainMin: number, domainMax: number) => {\n const range = domainMax - domainMin;\n if (range === 0) return 0.5;\n return ((domainMin + domainMax) / 2 - domainMin) / range;\n};\n\n/**\n * Builds a fast `(value:number) => color` mapper.\n *\n * Behavior:\n * - Inside [domainMin..domainMax]: interpolate via diverging scale.\n * - Below domain: darken from `minColor` toward black, eased & capped.\n * - Above domain: darken from `maxColor` toward black, eased & capped.\n * - Degenerate domain: always returns mid color.\n */\nexport const createColorForValue = ({\n domainMin,\n domainMax,\n rawMin,\n rawMax,\n minColor,\n midColor,\n maxColor,\n}: {\n domainMin: number;\n domainMax: number;\n rawMin: number;\n rawMax: number;\n minColor: string;\n midColor: string;\n maxColor: string;\n}) => {\n const midPoint = getMidPoint(domainMin, domainMax);\n const scale = makeDiverging(minColor, midColor, maxColor, midPoint);\n\n const leftTailLen = Math.max(1e-6, domainMin - rawMin);\n const rightTailLen = Math.max(1e-6, rawMax - domainMax);\n const domRange = domainMax - domainMin;\n\n if (domRange === 0) {\n // Degenerate domain → fixed color\n const mid = scale(0.5);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return (_v: number) => mid;\n }\n\n return (v: number) => {\n if (!Number.isFinite(v)) return scale(0.5);\n\n const t = (v - domainMin) / domRange;\n\n if (t <= 0) {\n const dist = Math.max(0, domainMin - v) / leftTailLen;\n const strength = easeOutQuad(clamp01(dist)) * OUTSIDE_DARKEN_MAX;\n return strength > 0 ? lerpColor(minColor, LERP_LIGHTEST_COLOR, strength) : minColor;\n }\n\n if (t >= 1) {\n const dist = Math.max(0, v - domainMax) / rightTailLen;\n const strength = easeOutQuad(clamp01(dist)) * OUTSIDE_DARKEN_MAX;\n return strength > 0 ? lerpColor(maxColor, LERP_DARKEST_COLOR, strength) : maxColor;\n }\n\n return scale(t);\n };\n};\n","import { useMemo, useCallback } from 'react';\nimport tableStyles from '../tables.module.css';\nimport clsx from 'clsx';\nimport { HeatMapProps } from './HeatMap.types';\nimport {\n createColorForValue,\n getCellBackground,\n getCellColor,\n getCellDisplayValue,\n getCellValue,\n idOf,\n thresholdToRaw,\n} from './HeatMap.utils';\nimport { getTableCellWidthStyle } from '../tables.utils';\nimport { getStyle } from '../../../../styles/styles.utils';\n\nexport const HeatMap = <T extends Record<string, unknown>>({\n data,\n showValues = false,\n className,\n columnDimension,\n rowDimension,\n measure,\n minThreshold,\n maxThreshold,\n minColor,\n midColor = getStyle('--em-tablechart-heatmap-color', '#FF5400'),\n maxColor,\n columnWidth,\n firstColumnWidth,\n displayNullAs,\n}: HeatMapProps<T>) => {\n // 1. Get raw min/max from data\n const { rawMin, rawMax } = useMemo(() => {\n let min = Infinity;\n let max = -Infinity;\n for (const d of data) {\n const value = getCellValue(d[measure.key], displayNullAs);\n\n if (value != null && typeof value === 'number' && Number.isFinite(value)) {\n if (value < min) min = value;\n if (value > max) max = value;\n }\n }\n if (!Number.isFinite(min) || !Number.isFinite(max)) return { rawMin: 0, rawMax: 0 };\n return { rawMin: min, rawMax: max };\n }, [data, measure.key, displayNullAs]);\n\n // 2. Resolve thresholds to a raw domain\n const { domainMin, domainMax } = useMemo(() => {\n const domMin = thresholdToRaw(minThreshold, rawMin, rawMax, rawMin);\n const domMax = thresholdToRaw(maxThreshold, rawMin, rawMax, rawMax);\n return domMin <= domMax\n ? { domainMin: domMin, domainMax: domMax }\n : { domainMin: domMax, domainMax: domMin };\n }, [minThreshold, maxThreshold, rawMin, rawMax]);\n\n const columnValues = useMemo(\n () =>\n Array.from(\n new Set(\n data\n .map((d) => d[columnDimension.key])\n .filter((v) => v != null)\n .map(idOf),\n ),\n ),\n [data, columnDimension.key],\n );\n\n const rowValues = useMemo(\n () =>\n Array.from(\n new Set(\n data\n .map((d) => d[rowDimension.key])\n .filter((v) => v != null)\n .map(idOf),\n ),\n ),\n [data, rowDimension.key],\n );\n\n // 3. Store data in a map for fast lookup\n const cellMap = useMemo(() => {\n const map = new Map<string, Map<string, Record<string, unknown>>>();\n for (const d of data) {\n const r = idOf(d[rowDimension.key]);\n const c = idOf(d[columnDimension.key]);\n if (!map.has(r)) map.set(r, new Map());\n map.get(r)!.set(c, d as Record<string, unknown>);\n }\n return map;\n }, [data, rowDimension.key, columnDimension.key]);\n\n // 4. Create color scale function\n const colorForValue = useCallback(\n (v: number) => {\n return createColorForValue({\n domainMin,\n domainMax,\n rawMin,\n rawMax,\n minColor,\n midColor,\n maxColor,\n })(v);\n },\n [domainMin, domainMax, rawMin, rawMax, minColor, midColor, maxColor],\n );\n\n return (\n <div className={clsx(tableStyles.tableFullContainer, className)}>\n <div\n className={clsx(\n tableStyles.tableAdjustedContainer,\n (!columnWidth || !firstColumnWidth) && tableStyles.fullWidth,\n )}\n >\n <table className={tableStyles.table} aria-label=\"Heat map\">\n <thead>\n <tr>\n <th\n className={tableStyles.stickyFirstColumn}\n style={getTableCellWidthStyle(firstColumnWidth)}\n >\n {measure.label}\n </th>\n {columnValues.map((cv, index) => (\n <th key={`col-${cv}-${index}`} style={getTableCellWidthStyle(columnWidth)}>\n {columnDimension.format ? columnDimension.format(cv) : cv}\n </th>\n ))}\n </tr>\n </thead>\n\n <tbody>\n {rowValues.map((rv) => (\n <tr key={`row-${rv}`}>\n <th\n scope=\"row\"\n className={tableStyles.stickyFirstColumn}\n style={getTableCellWidthStyle(firstColumnWidth)}\n >\n {rowDimension.format ? rowDimension.format(rv) : rv}\n </th>\n\n {columnValues.map((cv) => {\n const obj = cellMap.get(rv)?.get(cv);\n const value = getCellValue(obj?.[measure.key], displayNullAs);\n const background = getCellBackground(value, colorForValue);\n const color = getCellColor(background);\n\n return (\n <td\n key={`cell-${rv}-${cv}`}\n style={{\n background,\n color,\n textAlign: 'center',\n ...getTableCellWidthStyle(columnWidth),\n }}\n >\n {getCellDisplayValue(value, showValues, measure)}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n"],"names":["clamp01","x","easeOutQuad","lerp","a","b","t","OUTSIDE_DARKEN_MAX","LERP_DARKEST_COLOR","LERP_LIGHTEST_COLOR","idOf","v","CSS_RGB_REGEX","COLOR_CACHE","normalizeHex","hex","resolveCssColorToHex","input","cached","el","computed","m","r","g","toHex","n","hexToRgb","color","i","rgbToHex","to","lerpColor","A","B","getBrightness","getCellColor","backgroundColor","makeDiverging","minC","midC","maxC","midpoint","parsePercentString","s","thresholdToRaw","rawMin","rawMax","fallback","asPct","maybe","toFiniteOrSelf","getCellValue","value","displayNullAs","getCellBackground","colorForValue","getCellDisplayValue","showValues","measure","getMidPoint","domainMin","domainMax","range","createColorForValue","minColor","midColor","maxColor","midPoint","scale","leftTailLen","rightTailLen","domRange","mid","_v","dist","strength","HeatMap","data","className","columnDimension","rowDimension","minThreshold","maxThreshold","getStyle","columnWidth","firstColumnWidth","useMemo","min","max","d","domMin","domMax","columnValues","rowValues","cellMap","map","c","useCallback","clsx","tableStyles","jsx","getTableCellWidthStyle","cv","index","rv","obj","_a","background"],"mappings":";;;AAMA,MAAMA,IAAU,CAACC,MAAeA,IAAI,IAAI,IAAIA,IAAI,IAAI,IAAIA,GAClDC,IAAc,CAACD,MAAc,KAAK,IAAIA,MAAM,IAAIA,IAChDE,IAAO,CAACC,GAAWC,GAAWC,MAAcF,KAAKC,IAAID,KAAKE,GAG1DC,IAAqB,MAErBC,IAAqB,WACrBC,IAAsB,WAEfC,IAAO,CAACC,MAAe,OAAOA,KAAK,EAAE,GAQ5CC,IAAgB,4CAChBC,wBAAkB,IAAA,GAGlBC,IAAe,CAACC,MAAgB;AACpC,MAAI,CAACA,KAAOA,EAAI,CAAC,MAAM,IAAK,QAAOA;AACnC,QAAMJ,IAAII,EAAI,MAAM,CAAC,EAAE,YAAA;AACvB,SAAIJ,EAAE,WAAW,IAAU,IAAIA,EAAE,CAAC,CAAC,GAAGA,EAAE,CAAC,CAAC,GAAGA,EAAE,CAAC,CAAC,GAAGA,EAAE,CAAC,CAAC,GAAGA,EAAE,CAAC,CAAC,GAAGA,EAAE,CAAC,CAAC,KAClEA,EAAE,WAAW,IAAU,IAAIA,CAAC,KACzBI,EAAI,YAAA;AACb,GAMMC,IAAuB,CAACC,MAA0B;AACtD,MAAI,CAACA,EAAO,QAAOA;AACnB,QAAMC,IAASL,EAAY,IAAII,CAAK;AACpC,MAAIC,EAAQ,QAAOA;AAGnB,MAAID,EAAM,WAAW,GAAG,GAAG;AACzB,UAAMF,IAAMD,EAAaG,CAAK;AAC9B,WAAAJ,EAAY,IAAII,GAAOF,CAAG,GACnBA;AAAAA,EACT;AAEA,MAAI,OAAO,WAAa;AAEtB,WAAOE;AAIT,QAAME,IAAK,SAAS,cAAc,MAAM;AACxC,EAAAA,EAAG,MAAM,QAAQF,GACjB,SAAS,KAAK,YAAYE,CAAE;AAC5B,QAAMC,IAAW,iBAAiBD,CAAE,EAAE,SAAS;AAC/C,EAAAA,EAAG,OAAA;AAGH,QAAME,IAAID,EAAS,MAAMR,CAAa;AACtC,MAAI,CAACS,EAAG,QAAOJ;AAEf,QAAM,CAAA,EAAGK,IAAI,KAAKC,IAAI,KAAKlB,IAAI,GAAG,IAAIgB,GAChCG,IAAQ,CAACC,MAAc,OAAOA,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,GAC7DV,IAAM,IAAIS,EAAMF,CAAC,CAAC,GAAGE,EAAMD,CAAC,CAAC,GAAGC,EAAMnB,CAAC,CAAC,GAAG,YAAA;AACjD,SAAAQ,EAAY,IAAII,GAAOF,CAAG,GACnBA;AACT,GAEMW,IAAW,CAACC,MAAkB;AAClC,QAAMZ,IAAMD,EAAaE,EAAqBW,CAAK,CAAC,EAAE,MAAM,CAAC;AAE7D,MAAIZ,EAAI,WAAW,EAAG,QAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAA;AAC9C,QAAMa,IAAI,SAASb,GAAK,EAAE;AAC1B,SAAO,EAAE,GAAIa,KAAK,KAAM,KAAK,GAAIA,KAAK,IAAK,KAAK,GAAGA,IAAI,IAAA;AACzD,GAEMC,IAAW,CAACP,GAAWC,GAAWlB,MAAc;AACpD,QAAMyB,IAAK,CAAC7B,MAAc,KAAK,MAAMA,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AACpE,SAAO,IAAI6B,EAAGR,CAAC,CAAC,GAAGQ,EAAGP,CAAC,CAAC,GAAGO,EAAGzB,CAAC,CAAC;AAClC,GAGa0B,IAAY,CAAC3B,GAAWC,GAAWC,MAAc;AAC5D,QAAM0B,IAAIN,EAAStB,CAAC,GACd6B,IAAIP,EAASrB,CAAC;AACpB,SAAOwB,EAAS1B,EAAK6B,EAAE,GAAGC,EAAE,GAAG3B,CAAC,GAAGH,EAAK6B,EAAE,GAAGC,EAAE,GAAG3B,CAAC,GAAGH,EAAK6B,EAAE,GAAGC,EAAE,GAAG3B,CAAC,CAAC;AACzE,GAGM4B,IAAgB,CAACP,MAAkB;AACvC,QAAM,EAAE,GAAAL,GAAG,GAAAC,GAAG,GAAAlB,EAAA,IAAMqB,EAASC,CAAK;AAClC,UAAQL,IAAI,MAAMC,IAAI,MAAMlB,IAAI,OAAO;AACzC,GAGa8B,IAAe,CAACC,MACpBF,EAAcE,CAAe,IAAI,MAAM,YAAY,WAQtDC,KAAgB,CAACC,GAAcC,GAAcC,GAAcC,IAAW,QAAQ;AAClF,QAAMpB,IAAIrB,EAAQyC,CAAQ;AAC1B,SAAO,CAACnC,MAAc;AACpB,UAAML,IAAID,EAAQM,CAAC;AACnB,WAAOL,KAAKoB,IACRU,EAAUO,GAAMC,GAAMlB,MAAM,IAAI,IAAIpB,IAAIoB,CAAC,IACzCU,EAAUQ,GAAMC,IAAOvC,IAAIoB,MAAM,IAAIA,EAAE;AAAA,EAC7C;AACF,GAGMqB,KAAqB,CAACC,MAA6B;AACvD,QAAMrC,IAAIqC,EAAE,KAAA;AACZ,MAAI,CAACrC,EAAE,SAAS,GAAG,EAAG,QAAO;AAC7B,QAAMmB,IAAI,OAAO,WAAWnB,EAAE,MAAM,GAAG,EAAE,CAAC;AAC1C,SAAO,OAAO,SAASmB,CAAC,IAAIzB,EAAQyB,IAAI,GAAG,IAAI;AACjD,GAQamB,IAAiB,CAC5B,GACAC,GACAC,GACAC,MACW;AACX,MAAI,KAAK,KAAM,QAAOA;AACtB,MAAI,OAAO,KAAM,YAAY,OAAO,SAAS,CAAC,EAAG,QAAO;AACxD,QAAMC,IAAQ,OAAO,KAAM,WAAWN,GAAmB,CAAC,IAAI;AAC9D,MAAIM,KAAS,KAAM,QAAOH,IAASG,KAASF,IAASD;AAGrD,QAAMI,IAAQ,OAAO,CAAsB;AAC3C,SAAO,OAAO,SAASA,CAAK,IAAIA,IAAQF;AAC1C,GAMMG,KAAiB,CAACvC,MAAgE;AACtF,MAAIA,KAAK,KAAM,QAAOA;AACtB,QAAMc,IAAI,OAAOd,CAAC;AAClB,SAAO,OAAO,SAASc,CAAC,IAAIA,IAAId;AAClC,GAQawC,IAAe,CAE1BC,GACAC,MACgC;AAChC,QAAMN,IACJM,KAAiB,OAAO,SAAS,OAAOA,CAAa,CAAC,IAAI,OAAOA,CAAa,IAAIA;AACpF,SAAOH,GAAeE,KAASL,CAAQ;AACzC,GAGaO,KAAoB,CAC/BF,GACAG,MAEI,OAAOH,KAAU,YAAY,CAAC,OAAO,SAASA,CAAK,IAAU,UAC1DG,EAAcH,CAAK,GAIfI,KAAsB,CACjCJ,GACAK,GAEAC,MAEKD,IACD,OAAOL,KAAU,YAAYA,KAAS,QAAQ,OAAO,MAAMA,CAAe,IAAUA,IACjFM,KAAA,QAAAA,EAAS,SAASA,EAAQ,OAAO,OAAON,CAAK,CAAC,IAAIA,IAFjC,MAUpBO,KAAc,CAACC,GAAmBC,MAAsB;AAC5D,QAAMC,IAAQD,IAAYD;AAC1B,SAAIE,MAAU,IAAU,QACfF,IAAYC,KAAa,IAAID,KAAaE;AACrD,GAWaC,KAAsB,CAAC;AAAA,EAClC,WAAAH;AAAA,EACA,WAAAC;AAAA,EACA,QAAAhB;AAAA,EACA,QAAAC;AAAA,EACA,UAAAkB;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AACF,MAQM;AACJ,QAAMC,IAAWR,GAAYC,GAAWC,CAAS,GAC3CO,IAAQ/B,GAAc2B,GAAUC,GAAUC,GAAUC,CAAQ,GAE5DE,IAAc,KAAK,IAAI,MAAMT,IAAYf,CAAM,GAC/CyB,IAAe,KAAK,IAAI,MAAMxB,IAASe,CAAS,GAChDU,IAAWV,IAAYD;AAE7B,MAAIW,MAAa,GAAG;AAElB,UAAMC,IAAMJ,EAAM,GAAG;AAErB,WAAO,CAACK,MAAeD;AAAA,EACzB;AAEA,SAAO,CAAC7D,MAAc;AACpB,QAAI,CAAC,OAAO,SAASA,CAAC,EAAG,QAAOyD,EAAM,GAAG;AAEzC,UAAM9D,KAAKK,IAAIiD,KAAaW;AAE5B,QAAIjE,KAAK,GAAG;AACV,YAAMoE,IAAO,KAAK,IAAI,GAAGd,IAAYjD,CAAC,IAAI0D,GACpCM,IAAWzE,EAAYF,EAAQ0E,CAAI,CAAC,IAAInE;AAC9C,aAAOoE,IAAW,IAAI5C,EAAUiC,GAAUvD,GAAqBkE,CAAQ,IAAIX;AAAA,IAC7E;AAEA,QAAI1D,KAAK,GAAG;AACV,YAAMoE,IAAO,KAAK,IAAI,GAAG/D,IAAIkD,CAAS,IAAIS,GACpCK,IAAWzE,EAAYF,EAAQ0E,CAAI,CAAC,IAAInE;AAC9C,aAAOoE,IAAW,IAAI5C,EAAUmC,GAAU1D,GAAoBmE,CAAQ,IAAIT;AAAA,IAC5E;AAEA,WAAOE,EAAM9D,CAAC;AAAA,EAChB;AACF,GC5PasE,KAAU,CAAoC;AAAA,EACzD,MAAAC;AAAA,EACA,YAAApB,IAAa;AAAA,EACb,WAAAqB;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,SAAAtB;AAAA,EACA,cAAAuB;AAAA,EACA,cAAAC;AAAA,EACA,UAAAlB;AAAA,EACA,UAAAC,IAAWkB,EAAS,iCAAiC,SAAS;AAAA,EAC9D,UAAAjB;AAAA,EACA,aAAAkB;AAAA,EACA,kBAAAC;AAAA,EACA,eAAAhC;AACF,MAAuB;AAErB,QAAM,EAAE,QAAAR,GAAQ,QAAAC,EAAA,IAAWwC,EAAQ,MAAM;AACvC,QAAIC,IAAM,OACNC,IAAM;AACV,eAAWC,KAAKZ,GAAM;AACpB,YAAMzB,IAAQD,EAAasC,EAAE/B,EAAQ,GAAG,GAAGL,CAAa;AAExD,MAAID,KAAS,QAAQ,OAAOA,KAAU,YAAY,OAAO,SAASA,CAAK,MACjEA,IAAQmC,MAAKA,IAAMnC,IACnBA,IAAQoC,MAAKA,IAAMpC;AAAA,IAE3B;AACA,WAAI,CAAC,OAAO,SAASmC,CAAG,KAAK,CAAC,OAAO,SAASC,CAAG,IAAU,EAAE,QAAQ,GAAG,QAAQ,EAAA,IACzE,EAAE,QAAQD,GAAK,QAAQC,EAAA;AAAA,EAChC,GAAG,CAACX,GAAMnB,EAAQ,KAAKL,CAAa,CAAC,GAG/B,EAAE,WAAAO,GAAW,WAAAC,EAAA,IAAcyB,EAAQ,MAAM;AAC7C,UAAMI,IAAS9C,EAAeqC,GAAcpC,GAAQC,GAAQD,CAAM,GAC5D8C,IAAS/C,EAAesC,GAAcrC,GAAQC,GAAQA,CAAM;AAClE,WAAO4C,KAAUC,IACb,EAAE,WAAWD,GAAQ,WAAWC,EAAA,IAChC,EAAE,WAAWA,GAAQ,WAAWD,EAAA;AAAA,EACtC,GAAG,CAACT,GAAcC,GAAcrC,GAAQC,CAAM,CAAC,GAEzC8C,IAAeN;AAAA,IACnB,MACE,MAAM;AAAA,MACJ,IAAI;AAAA,QACFT,EACG,IAAI,CAACY,MAAMA,EAAEV,EAAgB,GAAG,CAAC,EACjC,OAAO,CAACpE,MAAMA,KAAK,IAAI,EACvB,IAAID,CAAI;AAAA,MAAA;AAAA,IACb;AAAA,IAEJ,CAACmE,GAAME,EAAgB,GAAG;AAAA,EAAA,GAGtBc,IAAYP;AAAA,IAChB,MACE,MAAM;AAAA,MACJ,IAAI;AAAA,QACFT,EACG,IAAI,CAACY,MAAMA,EAAET,EAAa,GAAG,CAAC,EAC9B,OAAO,CAACrE,MAAMA,KAAK,IAAI,EACvB,IAAID,CAAI;AAAA,MAAA;AAAA,IACb;AAAA,IAEJ,CAACmE,GAAMG,EAAa,GAAG;AAAA,EAAA,GAInBc,IAAUR,EAAQ,MAAM;AAC5B,UAAMS,wBAAU,IAAA;AAChB,eAAWN,KAAKZ,GAAM;AACpB,YAAMvD,IAAIZ,EAAK+E,EAAET,EAAa,GAAG,CAAC,GAC5BgB,IAAItF,EAAK+E,EAAEV,EAAgB,GAAG,CAAC;AACrC,MAAKgB,EAAI,IAAIzE,CAAC,OAAO,IAAIA,GAAG,oBAAI,KAAK,GACrCyE,EAAI,IAAIzE,CAAC,EAAG,IAAI0E,GAAGP,CAA4B;AAAA,IACjD;AACA,WAAOM;AAAA,EACT,GAAG,CAAClB,GAAMG,EAAa,KAAKD,EAAgB,GAAG,CAAC,GAG1CxB,IAAgB0C;AAAA,IACpB,CAACtF,MACQoD,GAAoB;AAAA,MACzB,WAAAH;AAAA,MACA,WAAAC;AAAA,MACA,QAAAhB;AAAA,MACA,QAAAC;AAAA,MACA,UAAAkB;AAAA,MACA,UAAAC;AAAA,MACA,UAAAC;AAAA,IAAA,CACD,EAAEvD,CAAC;AAAA,IAEN,CAACiD,GAAWC,GAAWhB,GAAQC,GAAQkB,GAAUC,GAAUC,CAAQ;AAAA,EAAA;AAGrE,+BACG,OAAA,EAAI,WAAWgC,EAAKC,EAAY,oBAAoBrB,CAAS,GAC5D,UAAAsB,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWF;AAAA,QACTC,EAAY;AAAA,SACX,CAACf,KAAe,CAACC,MAAqBc,EAAY;AAAA,MAAA;AAAA,MAGrD,iCAAC,SAAA,EAAM,WAAWA,EAAY,OAAO,cAAW,YAC9C,UAAA;AAAA,QAAAC,gBAAAA,EAAAA,IAAC,SAAA,EACC,iCAAC,MAAA,EACC,UAAA;AAAA,UAAAA,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWD,EAAY;AAAA,cACvB,OAAOE,EAAuBhB,CAAgB;AAAA,cAE7C,UAAA3B,EAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,UAEVkC,EAAa,IAAI,CAACU,GAAIC,MACrBH,gBAAAA,EAAAA,IAAC,MAAA,EAA8B,OAAOC,EAAuBjB,CAAW,GACrE,YAAgB,SAASL,EAAgB,OAAOuB,CAAE,IAAIA,EAAA,GADhD,OAAOA,CAAE,IAAIC,CAAK,EAE3B,CACD;AAAA,QAAA,EAAA,CACH,EAAA,CACF;AAAA,8BAEC,SAAA,EACE,UAAAV,EAAU,IAAI,CAACW,6BACb,MAAA,EACC,UAAA;AAAA,UAAAJ,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAM;AAAA,cACN,WAAWD,EAAY;AAAA,cACvB,OAAOE,EAAuBhB,CAAgB;AAAA,cAE7C,UAAAL,EAAa,SAASA,EAAa,OAAOwB,CAAE,IAAIA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGlDZ,EAAa,IAAI,CAACU,MAAO;;AACxB,kBAAMG,KAAMC,IAAAZ,EAAQ,IAAIU,CAAE,MAAd,gBAAAE,EAAiB,IAAIJ,IAC3BlD,IAAQD,EAAasD,KAAA,gBAAAA,EAAM/C,EAAQ,MAAML,CAAa,GACtDsD,IAAarD,GAAkBF,GAAOG,CAAa,GACnD5B,IAAQQ,EAAawE,CAAU;AAErC,mBACEP,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,OAAO;AAAA,kBACL,YAAAO;AAAA,kBACA,OAAAhF;AAAA,kBACA,WAAW;AAAA,kBACX,GAAG0E,EAAuBjB,CAAW;AAAA,gBAAA;AAAA,gBAGtC,UAAA5B,GAAoBJ,GAAOK,GAAYC,CAAO;AAAA,cAAA;AAAA,cAR1C,QAAQ8C,CAAE,IAAIF,CAAE;AAAA,YAAA;AAAA,UAW3B,CAAC;AAAA,QAAA,EAAA,GA5BM,OAAOE,CAAE,EA6BlB,CACD,EAAA,CACH;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"HeatMap-HTlj76CN.js","sources":["../src/remarkable-ui/components/charts/tables/HeatMap/HeatMap.utils.ts","../src/remarkable-ui/components/charts/tables/HeatMap/HeatMap.tsx"],"sourcesContent":["import { HeatMapPropsMeasure, HeatMapPropsThreshold } from './HeatMap.types';\n\n/* -------------------------------------------------------------------------- */\n/* Core math + tiny helpers */\n/* -------------------------------------------------------------------------- */\n\nconst clamp01 = (x: number) => (x < 0 ? 0 : x > 1 ? 1 : x);\nconst easeOutQuad = (x: number) => 1 - (1 - x) * (1 - x);\nconst lerp = (a: number, b: number, t: number) => a + (b - a) * t;\n\n/** Max darkening applied for values outside the domain (0..1). Lower = lighter tails. */\nconst OUTSIDE_DARKEN_MAX = 0.35;\n/** Darkest color to lerp toward when outside domain (kept as const for tree-shakeability). */\nconst LERP_DARKEST_COLOR = '#000000';\nconst LERP_LIGHTEST_COLOR = '#FFFFFF';\n\nexport const idOf = (v: unknown) => String(v ?? '');\n\n/* -------------------------------------------------------------------------- */\n/* Color parsing / conversion */\n/* - Resolves hex/rgb/hsl/named/var(...) to a hex string (#rrggbb) */\n/* - Memoized to avoid repeated DOM work */\n/* -------------------------------------------------------------------------- */\n\nconst CSS_RGB_REGEX = /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/i;\nconst COLOR_CACHE = new Map<string, string>();\n\n/** Normalizes short or long hex to lowercase #rrggbb; returns input if not hex. */\nconst normalizeHex = (hex: string) => {\n if (!hex || hex[0] !== '#') return hex;\n const v = hex.slice(1).toLowerCase();\n if (v.length === 3) return `#${v[0]}${v[0]}${v[1]}${v[1]}${v[2]}${v[2]}`;\n if (v.length === 6) return `#${v}`;\n return hex.toLowerCase();\n};\n\n/**\n * Resolves any CSS color (hex, rgb/rgba, hsl/hsla, named, var(--token)) into #rrggbb.\n * SSR-safe: returns input unchanged if `document` is not available.\n */\nconst resolveCssColorToHex = (input: string): string => {\n if (!input) return input;\n const cached = COLOR_CACHE.get(input);\n if (cached) return cached;\n\n // Quick-path for hex.\n if (input.startsWith('#')) {\n const hex = normalizeHex(input);\n COLOR_CACHE.set(input, hex);\n return hex;\n }\n\n if (typeof document === 'undefined') {\n // SSR: cannot resolve computed styles → return as-is (caller should accept).\n return input;\n }\n\n // Use the browser to compute final color (resolves var(...), named, hsl, etc.)\n const el = document.createElement('span');\n el.style.color = input;\n document.body.appendChild(el);\n const computed = getComputedStyle(el).color || '';\n el.remove();\n\n // Expect \"rgb(...)\" or \"rgba(...)\" now.\n const m = computed.match(CSS_RGB_REGEX);\n if (!m) return input;\n\n const [, r = '0', g = '0', b = '0'] = m;\n const toHex = (n: string) => Number(n).toString(16).padStart(2, '0');\n const hex = `#${toHex(r)}${toHex(g)}${toHex(b)}`.toLowerCase();\n COLOR_CACHE.set(input, hex);\n return hex;\n};\n\nconst hexToRgb = (color: string) => {\n const hex = normalizeHex(resolveCssColorToHex(color)).slice(1);\n // Guard against bad inputs\n if (hex.length !== 6) return { r: 0, g: 0, b: 0 };\n const i = parseInt(hex, 16);\n return { r: (i >> 16) & 255, g: (i >> 8) & 255, b: i & 255 };\n};\n\nconst rgbToHex = (r: number, g: number, b: number) => {\n const to = (x: number) => Math.round(x).toString(16).padStart(2, '0');\n return `#${to(r)}${to(g)}${to(b)}`;\n};\n\n/** Linear interpolation between two colors (0..1). */\nexport const lerpColor = (a: string, b: string, t: number) => {\n const A = hexToRgb(a);\n const B = hexToRgb(b);\n return rgbToHex(lerp(A.r, B.r, t), lerp(A.g, B.g, t), lerp(A.b, B.b, t));\n};\n\n/** YIQ perceived brightness, used to pick white/black text. */\nconst getBrightness = (color: string) => {\n const { r, g, b } = hexToRgb(color);\n return (r * 299 + g * 587 + b * 114) / 1000;\n};\n\n/** Returns '#FFFFFF' for dark backgrounds, '#212129' for light ones. */\nexport const getCellColor = (backgroundColor: string) => {\n return getBrightness(backgroundColor) < 150 ? '#FFFFFF' : '#212129';\n};\n\n/* -------------------------------------------------------------------------- */\n/* Scales / thresholds */\n/* -------------------------------------------------------------------------- */\n\n/** Creates a diverging scale: t∈[0..1] → color blended across [min→mid→max]. */\nconst makeDiverging = (minC: string, midC: string, maxC: string, midpoint = 0.5) => {\n const m = clamp01(midpoint);\n return (t: number) => {\n const x = clamp01(t);\n return x <= m\n ? lerpColor(minC, midC, m === 0 ? 1 : x / m)\n : lerpColor(midC, maxC, (x - m) / (1 - m));\n };\n};\n\n/** Parses \"NN%\" → 0..1; otherwise null. */\nconst parsePercentString = (s: string): number | null => {\n const t = s.trim();\n if (!t.endsWith('%')) return null;\n const n = Number.parseFloat(t.slice(0, -1));\n return Number.isFinite(n) ? clamp01(n / 100) : null;\n};\n\n/**\n * Converts a flexible threshold into a RAW domain value.\n * - number → raw value\n * - \"NN%\" → percentage of [rawMin..rawMax]\n * - undefined/invalid → fallback\n */\nexport const thresholdToRaw = (\n t: HeatMapPropsThreshold,\n rawMin: number,\n rawMax: number,\n fallback: number,\n): number => {\n if (t == null) return fallback;\n if (typeof t === 'number' && Number.isFinite(t)) return t;\n const asPct = typeof t === 'string' ? parsePercentString(t) : null;\n if (asPct != null) return rawMin + asPct * (rawMax - rawMin);\n\n // Last-chance: numeric string without %\n const maybe = Number(t as unknown as string);\n return Number.isFinite(maybe) ? maybe : fallback;\n};\n\n/* -------------------------------------------------------------------------- */\n/* Cell value helpers */\n/* -------------------------------------------------------------------------- */\n\nconst toFiniteOrSelf = (v: number | string | undefined): number | string | undefined => {\n if (v == null) return v;\n const n = Number(v);\n return Number.isFinite(n) ? n : v;\n};\n\n/**\n * Normalizes the raw cell value for display/compute:\n * - if nullish, uses `displayNullAs` (if numeric string, coerces to number)\n * - if numeric-like, returns as number\n * - otherwise returns original string\n */\nexport const getCellValue = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any,\n displayNullAs: string | number | undefined,\n): string | number | undefined => {\n const fallback =\n displayNullAs && Number.isFinite(Number(displayNullAs)) ? Number(displayNullAs) : displayNullAs;\n return toFiniteOrSelf(value ?? fallback);\n};\n\n/** Returns the background color for a given cell value using a prepared mapper. */\nexport const getCellBackground = (\n value: number | string | undefined,\n colorForValue: (t: number) => string,\n): string => {\n if (typeof value !== 'number' || !Number.isFinite(value)) return 'white';\n return colorForValue(value);\n};\n\n/** Formats the cell’s display text (respects showValues & measure.format). */\nexport const getCellDisplayValue = (\n value: number | string | undefined,\n showValues: boolean,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n measure: HeatMapPropsMeasure<any>,\n) => {\n if (!showValues) return null;\n if (typeof value === 'string' || value == null || Number.isNaN(value as number)) return value;\n return measure?.format ? measure.format(Number(value)) : value;\n};\n\n/* -------------------------------------------------------------------------- */\n/* Color mapper factory */\n/* -------------------------------------------------------------------------- */\n\n/** Returns midpoint in [0..1] for the diverging scale given raw min/max. */\nconst getMidPoint = (domainMin: number, domainMax: number) => {\n const range = domainMax - domainMin;\n if (range === 0) return 0.5;\n return ((domainMin + domainMax) / 2 - domainMin) / range;\n};\n\n/**\n * Builds a fast `(value:number) => color` mapper.\n *\n * Behavior:\n * - Inside [domainMin..domainMax]: interpolate via diverging scale.\n * - Below domain: darken from `minColor` toward black, eased & capped.\n * - Above domain: darken from `maxColor` toward black, eased & capped.\n * - Degenerate domain: always returns mid color.\n */\nexport const createColorForValue = ({\n domainMin,\n domainMax,\n rawMin,\n rawMax,\n minColor,\n midColor,\n maxColor,\n}: {\n domainMin: number;\n domainMax: number;\n rawMin: number;\n rawMax: number;\n minColor: string;\n midColor: string;\n maxColor: string;\n}) => {\n const midPoint = getMidPoint(domainMin, domainMax);\n const scale = makeDiverging(minColor, midColor, maxColor, midPoint);\n\n const leftTailLen = Math.max(1e-6, domainMin - rawMin);\n const rightTailLen = Math.max(1e-6, rawMax - domainMax);\n const domRange = domainMax - domainMin;\n\n if (domRange === 0) {\n // Degenerate domain → fixed color\n const mid = scale(0.5);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return (_v: number) => mid;\n }\n\n return (v: number) => {\n if (!Number.isFinite(v)) return scale(0.5);\n\n const t = (v - domainMin) / domRange;\n\n if (t <= 0) {\n const dist = Math.max(0, domainMin - v) / leftTailLen;\n const strength = easeOutQuad(clamp01(dist)) * OUTSIDE_DARKEN_MAX;\n return strength > 0 ? lerpColor(minColor, LERP_LIGHTEST_COLOR, strength) : minColor;\n }\n\n if (t >= 1) {\n const dist = Math.max(0, v - domainMax) / rightTailLen;\n const strength = easeOutQuad(clamp01(dist)) * OUTSIDE_DARKEN_MAX;\n return strength > 0 ? lerpColor(maxColor, LERP_DARKEST_COLOR, strength) : maxColor;\n }\n\n return scale(t);\n };\n};\n","import { useMemo, useCallback } from 'react';\nimport tableStyles from '../tables.module.css';\nimport clsx from 'clsx';\nimport { HeatMapProps } from './HeatMap.types';\nimport {\n createColorForValue,\n getCellBackground,\n getCellColor,\n getCellDisplayValue,\n getCellValue,\n idOf,\n thresholdToRaw,\n} from './HeatMap.utils';\nimport { getTableCellWidthStyle } from '../tables.utils';\nimport { getStyle } from '../../../../styles/styles.utils';\n\nexport const HeatMap = <T extends Record<string, unknown>>({\n data,\n showValues = false,\n className,\n columnDimension,\n rowDimension,\n measure,\n minThreshold,\n maxThreshold,\n minColor,\n midColor = getStyle('--em-tablechart-heatmap-color', '#FF5400'),\n maxColor,\n columnWidth,\n firstColumnWidth,\n displayNullAs,\n}: HeatMapProps<T>) => {\n // 1. Get raw min/max from data\n const { rawMin, rawMax } = useMemo(() => {\n let min = Infinity;\n let max = -Infinity;\n for (const d of data) {\n const value = getCellValue(d[measure.key], displayNullAs);\n\n if (value != null && typeof value === 'number' && Number.isFinite(value)) {\n if (value < min) min = value;\n if (value > max) max = value;\n }\n }\n if (!Number.isFinite(min) || !Number.isFinite(max)) return { rawMin: 0, rawMax: 0 };\n return { rawMin: min, rawMax: max };\n }, [data, measure.key, displayNullAs]);\n\n // 2. Resolve thresholds to a raw domain\n const { domainMin, domainMax } = useMemo(() => {\n const domMin = thresholdToRaw(minThreshold, rawMin, rawMax, rawMin);\n const domMax = thresholdToRaw(maxThreshold, rawMin, rawMax, rawMax);\n return domMin <= domMax\n ? { domainMin: domMin, domainMax: domMax }\n : { domainMin: domMax, domainMax: domMin };\n }, [minThreshold, maxThreshold, rawMin, rawMax]);\n\n const columnValues = useMemo(\n () =>\n Array.from(\n new Set(\n data\n .map((d) => d[columnDimension.key])\n .filter((v) => v != null)\n .map(idOf),\n ),\n ),\n [data, columnDimension.key],\n );\n\n const rowValues = useMemo(\n () =>\n Array.from(\n new Set(\n data\n .map((d) => d[rowDimension.key])\n .filter((v) => v != null)\n .map(idOf),\n ),\n ),\n [data, rowDimension.key],\n );\n\n // 3. Store data in a map for fast lookup\n const cellMap = useMemo(() => {\n const map = new Map<string, Map<string, Record<string, unknown>>>();\n for (const d of data) {\n const r = idOf(d[rowDimension.key]);\n const c = idOf(d[columnDimension.key]);\n if (!map.has(r)) map.set(r, new Map());\n map.get(r)!.set(c, d as Record<string, unknown>);\n }\n return map;\n }, [data, rowDimension.key, columnDimension.key]);\n\n // 4. Create color scale function\n const colorForValue = useCallback(\n (v: number) => {\n return createColorForValue({\n domainMin,\n domainMax,\n rawMin,\n rawMax,\n minColor,\n midColor,\n maxColor,\n })(v);\n },\n [domainMin, domainMax, rawMin, rawMax, minColor, midColor, maxColor],\n );\n\n return (\n <div className={clsx(tableStyles.tableFullContainer, className)}>\n <div\n className={clsx(\n tableStyles.tableAdjustedContainer,\n (!columnWidth || !firstColumnWidth) && tableStyles.fullWidth,\n )}\n >\n <table className={tableStyles.table} aria-label=\"Heat map\">\n <thead>\n <tr>\n <th\n className={tableStyles.stickyFirstColumn}\n style={getTableCellWidthStyle(firstColumnWidth)}\n >\n {measure.label}\n </th>\n {columnValues.map((cv, index) => (\n <th key={`col-${cv}-${index}`} style={getTableCellWidthStyle(columnWidth)}>\n {columnDimension.format ? columnDimension.format(cv) : cv}\n </th>\n ))}\n </tr>\n </thead>\n\n <tbody>\n {rowValues.map((rv) => (\n <tr key={`row-${rv}`}>\n <th\n scope=\"row\"\n className={tableStyles.stickyFirstColumn}\n style={getTableCellWidthStyle(firstColumnWidth)}\n >\n {rowDimension.format ? rowDimension.format(rv) : rv}\n </th>\n\n {columnValues.map((cv) => {\n const obj = cellMap.get(rv)?.get(cv);\n const value = getCellValue(obj?.[measure.key], displayNullAs);\n const background = getCellBackground(value, colorForValue);\n const color = getCellColor(background);\n\n return (\n <td\n key={`cell-${rv}-${cv}`}\n style={{\n background,\n color,\n textAlign: 'center',\n ...getTableCellWidthStyle(columnWidth),\n }}\n >\n {getCellDisplayValue(value, showValues, measure)}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n"],"names":["clamp01","x","easeOutQuad","lerp","a","b","t","OUTSIDE_DARKEN_MAX","LERP_DARKEST_COLOR","LERP_LIGHTEST_COLOR","idOf","v","CSS_RGB_REGEX","COLOR_CACHE","normalizeHex","hex","resolveCssColorToHex","input","cached","el","computed","m","r","g","toHex","n","hexToRgb","color","i","rgbToHex","to","lerpColor","A","B","getBrightness","getCellColor","backgroundColor","makeDiverging","minC","midC","maxC","midpoint","parsePercentString","s","thresholdToRaw","rawMin","rawMax","fallback","asPct","maybe","toFiniteOrSelf","getCellValue","value","displayNullAs","getCellBackground","colorForValue","getCellDisplayValue","showValues","measure","getMidPoint","domainMin","domainMax","range","createColorForValue","minColor","midColor","maxColor","midPoint","scale","leftTailLen","rightTailLen","domRange","mid","_v","dist","strength","HeatMap","data","className","columnDimension","rowDimension","minThreshold","maxThreshold","getStyle","columnWidth","firstColumnWidth","useMemo","min","max","d","domMin","domMax","columnValues","rowValues","cellMap","map","c","useCallback","clsx","tableStyles","jsx","getTableCellWidthStyle","cv","index","rv","obj","_a","background"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { i as v, r as F, j as u, d as S, w as A, b as d, t as j, c as N, R as i, S as l, I as P, J as c, A as q, o as E } from "./component.constants-CYS5-3qd.js";
1
+ import { i as v, r as F, j as u, d as S, w as A, b as d, t as j, c as N, R as i, S as l, I as P, J as c, A as q, o as E } from "./component.constants-B5vygi6l.js";
2
2
  import { useTheme as k, defineComponent as B } from "@embeddable.com/react";
3
- import { C as G } from "./ChartCard-CyemTSay.js";
3
+ import { C as G } from "./ChartCard-BzLW_64B.js";
4
4
  import "react";
5
- import { H as I } from "./HeatMap-BueWUQTI.js";
6
- import { g as C } from "./formatter.utils-CaFr8SlX.js";
5
+ import { H as I } from "./HeatMap-HTlj76CN.js";
6
+ import { g as C } from "./formatter.utils-N2gk49ys.js";
7
7
  import { u as h } from "./charts.fillGaps.hooks-5WclK2CD.js";
8
8
  const O = (e, a) => {
9
9
  const n = C(a);