@embeddable.com/remarkable-ui 0.1.49 → 0.1.51

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 (100) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +18 -17
  2. package/dist/BarChartDefaultHorizontalPro.js.map +1 -1
  3. package/dist/BarChartDefaultPro.js +18 -17
  4. package/dist/BarChartDefaultPro.js.map +1 -1
  5. package/dist/BarChartGroupedHorizontalPro.js +20 -19
  6. package/dist/BarChartGroupedHorizontalPro.js.map +1 -1
  7. package/dist/BarChartGroupedPro.js +20 -19
  8. package/dist/BarChartGroupedPro.js.map +1 -1
  9. package/dist/BarChartStackedHorizontalPro.js +24 -23
  10. package/dist/BarChartStackedHorizontalPro.js.map +1 -1
  11. package/dist/BarChartStackedPro.js +24 -23
  12. package/dist/BarChartStackedPro.js.map +1 -1
  13. package/dist/{ChartCard-CMgDz_bs.js → ChartCard-D-0O5ugW.js} +37 -37
  14. package/dist/{ChartCard-CMgDz_bs.js.map → ChartCard-D-0O5ugW.js.map} +1 -1
  15. package/dist/{ComparisonPeriod.type.emb-C1o3iM9L.js → ComparisonPeriod.type.emb-CYp3nw-9.js} +2 -2
  16. package/dist/{ComparisonPeriod.type.emb-C1o3iM9L.js.map → ComparisonPeriod.type.emb-CYp3nw-9.js.map} +1 -1
  17. package/dist/ComparisonPeriodSelectFieldPro.js +8 -8
  18. package/dist/DateRangeSelectFieldPro.js +2 -2
  19. package/dist/DonutChartPro.js +2 -2
  20. package/dist/DonutLabelChartPro.js +2 -2
  21. package/dist/{EditorCard-CJoUz4uM.js → EditorCard-BhC7oToX.js} +15 -15
  22. package/dist/{EditorCard-CJoUz4uM.js.map → EditorCard-BhC7oToX.js.map} +1 -1
  23. package/dist/HeatMap-By9_uzV_.js +223 -0
  24. package/dist/HeatMap-By9_uzV_.js.map +1 -0
  25. package/dist/HeatMapPro.js +138 -0
  26. package/dist/HeatMapPro.js.map +1 -0
  27. package/dist/{KpiChart-C6zepuhF.js → KpiChart-CS9s8nJ4.js} +10 -10
  28. package/dist/{KpiChart-C6zepuhF.js.map → KpiChart-CS9s8nJ4.js.map} +1 -1
  29. package/dist/KpiChartNumberComparisonPro.js +29 -29
  30. package/dist/KpiChartNumberPro.js +4 -4
  31. package/dist/LineChartComparisonDefaultPro.js +13 -13
  32. package/dist/LineChartDefaultPro.js +10 -10
  33. package/dist/LineChartGroupedPro.js +6 -6
  34. package/dist/MultiSelectFieldPro.js +2 -2
  35. package/dist/PieChartPro.js +2 -2
  36. package/dist/PivotTable-Cx4WG6MV.js +273 -0
  37. package/dist/PivotTable-Cx4WG6MV.js.map +1 -0
  38. package/dist/PivotTablePro.js +43 -43
  39. package/dist/PivotTablePro.js.map +1 -1
  40. package/dist/{SingleSelectField-CJNiLfee.js → SingleSelectField-DlVCi5Ej.js} +15 -15
  41. package/dist/{SingleSelectField-CJNiLfee.js.map → SingleSelectField-DlVCi5Ej.js.map} +1 -1
  42. package/dist/SingleSelectFieldPro.js +2 -2
  43. package/dist/TableChartPaginated.js +27 -27
  44. package/dist/bars.utils-DTdoPs5N.js +146 -0
  45. package/dist/bars.utils-DTdoPs5N.js.map +1 -0
  46. package/dist/{charts.utils-HfNL9dVl.js → charts.utils-D9TXwxGs.js} +4 -4
  47. package/dist/charts.utils-D9TXwxGs.js.map +1 -0
  48. package/dist/{component.constants-CFaxyNCw.js → component.constants-DCOqCFoY.js} +3286 -3124
  49. package/dist/component.constants-DCOqCFoY.js.map +1 -0
  50. package/dist/embeddable-components.json +12 -11
  51. package/dist/embeddable-theme-2b917.js +1 -1
  52. package/dist/{formatter.utils-Cu4uKJSZ.js → formatter.utils-B80iNq9Q.js} +2 -2
  53. package/dist/{formatter.utils-Cu4uKJSZ.js.map → formatter.utils-B80iNq9Q.js.map} +1 -1
  54. package/dist/{index-BAfVF5iP.js → index--tdFwk_H.js} +7 -7
  55. package/dist/{index-BAfVF5iP.js.map → index--tdFwk_H.js.map} +1 -1
  56. package/dist/{index-DvEWwlqq.js → index-BcPj51g3.js} +23 -23
  57. package/dist/{index-DvEWwlqq.js.map → index-BcPj51g3.js.map} +1 -1
  58. package/dist/{index-CxxeUDMD.js → index-C3o3AQpK.js} +11 -11
  59. package/dist/{index-CxxeUDMD.js.map → index-C3o3AQpK.js.map} +1 -1
  60. package/dist/{index-C4BiW71l.js → index-CmE__sUg.js} +8 -8
  61. package/dist/{index-C4BiW71l.js.map → index-CmE__sUg.js.map} +1 -1
  62. package/dist/{index-DW-LmiPi.js → index-D4oPbYPT.js} +8 -8
  63. package/dist/{index-DW-LmiPi.js.map → index-D4oPbYPT.js.map} +1 -1
  64. package/dist/{index-DvMr1tvf.js → index-DpIR-B0R.js} +18 -18
  65. package/dist/{index-DvMr1tvf.js.map → index-DpIR-B0R.js.map} +1 -1
  66. package/dist/index.js +148 -138
  67. package/dist/index.js.map +1 -1
  68. package/dist/{pies.utils-JpKM3rVw.js → pies.utils-DEkgZgVk.js} +6 -6
  69. package/dist/{pies.utils-JpKM3rVw.js.map → pies.utils-DEkgZgVk.js.map} +1 -1
  70. package/dist/remarkable-pro/components/charts/tables/HeatMapPro/index.d.ts +29 -0
  71. package/dist/remarkable-pro/components/charts/tables/HeatMapPro/index.d.ts.map +1 -0
  72. package/dist/remarkable-pro/components/component.constants.d.ts +7 -0
  73. package/dist/remarkable-pro/components/component.constants.d.ts.map +1 -1
  74. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.d.ts +3 -0
  75. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.d.ts.map +1 -0
  76. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.stories.d.ts +9 -0
  77. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.stories.d.ts.map +1 -0
  78. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.types.d.ts +30 -0
  79. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.types.d.ts.map +1 -0
  80. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.utils.d.ts +43 -0
  81. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.utils.d.ts.map +1 -0
  82. package/dist/remarkable-ui/charts/tables/PivotTable/PivotTable.d.ts.map +1 -1
  83. package/dist/remarkable-ui/charts/tables/PivotTable/PivotTable.types.d.ts +1 -0
  84. package/dist/remarkable-ui/charts/tables/PivotTable/PivotTable.types.d.ts.map +1 -1
  85. package/dist/remarkable-ui/charts/tables/tables.utils.d.ts +6 -0
  86. package/dist/remarkable-ui/charts/tables/tables.utils.d.ts.map +1 -0
  87. package/dist/remarkable-ui/index.d.ts +6 -1
  88. package/dist/remarkable-ui/index.d.ts.map +1 -1
  89. package/dist/remarkable-ui.css +1 -1
  90. package/dist/tables.utils-D7KXdM2S.js +9 -0
  91. package/dist/tables.utils-D7KXdM2S.js.map +1 -0
  92. package/dist/{timeRange.utils-Z2lmKTCB.js → timeRange.utils-u1NZ0u7o.js} +2 -2
  93. package/dist/{timeRange.utils-Z2lmKTCB.js.map → timeRange.utils-u1NZ0u7o.js.map} +1 -1
  94. package/package.json +1 -1
  95. package/dist/PivotTable-SNPquHl0.js +0 -253
  96. package/dist/PivotTable-SNPquHl0.js.map +0 -1
  97. package/dist/bars.utils-vXPRJDGQ.js +0 -311
  98. package/dist/bars.utils-vXPRJDGQ.js.map +0 -1
  99. package/dist/charts.utils-HfNL9dVl.js.map +0 -1
  100. package/dist/component.constants-CFaxyNCw.js.map +0 -1
@@ -1,6 +1,6 @@
1
- import { d as a, w as s, z as t, t as o, c as n, s as r, a3 as i, e as m, f as l, V as d, o as u } from "./component.constants-CFaxyNCw.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-DCOqCFoY.js";
2
2
  import { defineComponent as c } from "@embeddable.com/react";
3
- import { D as p } from "./index-BAfVF5iP.js";
3
+ import { D as p } from "./index--tdFwk_H.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-CxxeUDMD.js";
2
- import { d as s, w as a, z as r, t as o, c as l, s as i, a3 as m, e as d, f as u, V as b, o as t } from "./component.constants-CFaxyNCw.js";
1
+ import { D as n } from "./index-C3o3AQpK.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-DCOqCFoY.js";
3
3
  import { defineComponent as c } from "@embeddable.com/react";
4
4
  const p = {
5
5
  name: "DonutLabelChartPro",
@@ -1,16 +1,16 @@
1
- import { ad as u, j as a, ag as m, i as y, ai as g, aj as _, am as p, an as h, U as x, aQ as f } from "./component.constants-CFaxyNCw.js";
2
- import { useEffect as j } from "react";
3
- import { useTheme as C } from "@embeddable.com/react";
1
+ import { a0 as u, j as a, a3 as y, i as m, a5 as g, a6 as _, a9 as p, aa as h, F as x, aK as f } from "./component.constants-DCOqCFoY.js";
2
+ import { useEffect as C } from "react";
3
+ import { useTheme as b } from "@embeddable.com/react";
4
4
  /**
5
5
  * @license @tabler/icons-react v3.35.0 - MIT
6
6
  *
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 b = [["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" }]], $ = u("outline", "search", "Search", b), S = "_listOptions_2o1ip_1", v = "_disabled_2o1ip_6", c = {
10
+ const j = [["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" }]], $ = u("outline", "search", "Search", j), S = "_listOptions_2o1ip_1", v = "_disabled_2o1ip_6", c = {
11
11
  listOptions: S,
12
12
  disabled: v
13
- }, A = ({ children: t, disabled: s, ...e }) => /* @__PURE__ */ a.jsx("div", { className: m(c.listOptions, s && c.disabled), ...e, children: t }), L = "_category_1p6u3_1", N = "_categoryLabel_1p6u3_11", n = {
13
+ }, A = ({ children: t, disabled: s, ...e }) => /* @__PURE__ */ a.jsx("div", { className: y(c.listOptions, s && c.disabled), ...e, children: t }), L = "_category_1p6u3_1", N = "_categoryLabel_1p6u3_11", n = {
14
14
  category: L,
15
15
  categoryLabel: N
16
16
  }, B = ({ label: t }) => /* @__PURE__ */ a.jsx("div", { className: n.category, children: /* @__PURE__ */ a.jsx("span", { className: n.categoryLabel, children: t }) });
@@ -22,7 +22,7 @@ function D(t, s = 300) {
22
22
  }, s);
23
23
  };
24
24
  }
25
- const H = (t) => {
25
+ const F = (t) => {
26
26
  const s = t.reduce((e, r) => {
27
27
  if ("category" in r && r.category) {
28
28
  const o = r.category;
@@ -31,8 +31,8 @@ const H = (t) => {
31
31
  return e;
32
32
  }, {});
33
33
  return Object.keys(s).length === 0 ? null : s;
34
- }, M = (t, s) => {
35
- j(() => {
34
+ }, H = (t, s) => {
35
+ C(() => {
36
36
  t && setTimeout(() => {
37
37
  var e;
38
38
  (e = s.current) == null || e.focus();
@@ -41,15 +41,15 @@ const H = (t) => {
41
41
  }, O = "_error_1xvr5_1", T = "_card_1xvr5_7", i = {
42
42
  error: O,
43
43
  card: T
44
- }, Q = ({
44
+ }, K = ({
45
45
  title: t,
46
46
  subtitle: s,
47
47
  children: e,
48
48
  errorMessage: r,
49
49
  ...o
50
50
  }) => {
51
- const l = C();
52
- y(l);
51
+ const l = b();
52
+ m(l);
53
53
  const d = () => r ? /* @__PURE__ */ a.jsx(
54
54
  h,
55
55
  {
@@ -65,12 +65,12 @@ const H = (t) => {
65
65
  ] });
66
66
  };
67
67
  export {
68
- Q as E,
68
+ K as E,
69
69
  $ as I,
70
70
  A as S,
71
71
  B as a,
72
72
  D as d,
73
- H as g,
74
- M as u
73
+ F as g,
74
+ H as u
75
75
  };
76
- //# sourceMappingURL=EditorCard-CJoUz4uM.js.map
76
+ //# sourceMappingURL=EditorCard-BhC7oToX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditorCard-CJoUz4uM.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.mjs","../src/remarkable-ui/editors/select/shared/SelectList/SelectListOptions/SelectListOptions.tsx","../src/remarkable-ui/editors/select/shared/SelectList/SelectListOptions/SelectListCategory/SelectListCategory.tsx","../src/remarkable-ui/utils/debounce.utils.ts","../src/remarkable-ui/editors/select/shared/SelectList/selectList.utils.ts","../src/remarkable-ui/editors/select/shared/useSelectSearchFocus.hook.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 { FC } from 'react';\nimport styles from './SelectListOptions.module.css';\nimport clsx from 'clsx';\n\nexport type SelectListOptionsProps = React.HTMLAttributes<HTMLDivElement> & {\n children: React.ReactNode;\n disabled?: boolean;\n};\n\nexport const SelectListOptions: FC<SelectListOptionsProps> = ({ children, disabled, ...props }) => {\n return (\n <div className={clsx(styles.listOptions, disabled && styles.disabled)} {...props}>\n {children}\n </div>\n );\n};\n","import { FC } from 'react';\nimport styles from './SelectListCategory.module.css';\n\ntype SelectListCategoryProps = {\n label: string;\n};\n\nexport const SelectListCategory: FC<SelectListCategoryProps> = ({ label }) => {\n return (\n <div className={styles.category}>\n <span className={styles.categoryLabel}>{label}</span>\n </div>\n );\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 {\n SelectListOptionProps,\n SelectListOptionPropsWithCategory,\n} from './SelectListOptions/SelectListOption/SelectListOption';\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 { 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, CardContentInfo, 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 <CardContentInfo\n className={styles.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","SelectListOptions","children","disabled","props","jsx","clsx","styles","SelectListCategory","label","debounce","fn","delay","timer","args","groupOptionsByCategory","options","result","acc","option","category","useSelectSearchFocus","isOpen","searchFieldRef","useEffect","_a","EditorCard","title","subtitle","errorMessage","theme","useTheme","i18nSetup","getDisplay","CardContentInfo","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,IAAgD,CAAC,EAAE,UAAAC,GAAU,UAAAC,GAAU,GAAGC,QAEnFC,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWC,EAAKC,EAAO,aAAaJ,KAAYI,EAAO,QAAQ,GAAI,GAAGH,GACxE,UAAAF,EAAA,CACH;;;GCNSM,IAAkD,CAAC,EAAE,OAAAC,QAE9DJ,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWE,EAAO,UACrB,UAAAF,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAWE,EAAO,eAAgB,UAAAE,EAAA,CAAM,GAChD;ACVG,SAASC,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;ACHO,MAAMG,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;;;GCEaG,IAAkC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAA1B;AAAA,EACA,cAAA2B;AAAA,EACA,GAAGzB;AACL,MAAM;AACJ,QAAM0B,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAMG,IAAa,MACbJ,IAEAxB,gBAAAA,EAAAA;AAAAA,IAAC6B;AAAA,IAAA;AAAA,MACC,WAAW3B,EAAO;AAAA,MAClB,MAAM4B;AAAA,MACN,OAAOC,EAAK,EAAE,oBAAoB;AAAA,MAClC,SAASP;AAAA,IAAA;AAAA,EAAA,IAKR3B;AAGT,gCACGmC,GAAA,EAAK,WAAW9B,EAAO,MAAO,GAAGH,GAChC,UAAA;AAAA,IAAAC,gBAAAA,EAAAA,IAACiC,GAAA,EAAW,OAAAX,GAAc,UAAAC,EAAA,CAAoB;AAAA,IAC9CvB,gBAAAA,EAAAA,IAACkC,GAAA,EAAa,UAAAN,EAAA,EAAW,CAAE;AAAA,EAAA,GAC7B;AAEJ;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"EditorCard-BhC7oToX.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.mjs","../src/remarkable-ui/editors/select/shared/SelectList/SelectListOptions/SelectListOptions.tsx","../src/remarkable-ui/editors/select/shared/SelectList/SelectListOptions/SelectListCategory/SelectListCategory.tsx","../src/remarkable-ui/utils/debounce.utils.ts","../src/remarkable-ui/editors/select/shared/SelectList/selectList.utils.ts","../src/remarkable-ui/editors/select/shared/useSelectSearchFocus.hook.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 { FC } from 'react';\nimport styles from './SelectListOptions.module.css';\nimport clsx from 'clsx';\n\nexport type SelectListOptionsProps = React.HTMLAttributes<HTMLDivElement> & {\n children: React.ReactNode;\n disabled?: boolean;\n};\n\nexport const SelectListOptions: FC<SelectListOptionsProps> = ({ children, disabled, ...props }) => {\n return (\n <div className={clsx(styles.listOptions, disabled && styles.disabled)} {...props}>\n {children}\n </div>\n );\n};\n","import { FC } from 'react';\nimport styles from './SelectListCategory.module.css';\n\ntype SelectListCategoryProps = {\n label: string;\n};\n\nexport const SelectListCategory: FC<SelectListCategoryProps> = ({ label }) => {\n return (\n <div className={styles.category}>\n <span className={styles.categoryLabel}>{label}</span>\n </div>\n );\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 {\n SelectListOptionProps,\n SelectListOptionPropsWithCategory,\n} from './SelectListOptions/SelectListOption/SelectListOption';\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 { 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, CardContentInfo, 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 <CardContentInfo\n className={styles.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","SelectListOptions","children","disabled","props","jsx","clsx","styles","SelectListCategory","label","debounce","fn","delay","timer","args","groupOptionsByCategory","options","result","acc","option","category","useSelectSearchFocus","isOpen","searchFieldRef","useEffect","_a","EditorCard","title","subtitle","errorMessage","theme","useTheme","i18nSetup","getDisplay","CardContentInfo","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,IAAgD,CAAC,EAAE,UAAAC,GAAU,UAAAC,GAAU,GAAGC,QAEnFC,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWC,EAAKC,EAAO,aAAaJ,KAAYI,EAAO,QAAQ,GAAI,GAAGH,GACxE,UAAAF,EAAA,CACH;;;GCNSM,IAAkD,CAAC,EAAE,OAAAC,QAE9DJ,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWE,EAAO,UACrB,UAAAF,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAWE,EAAO,eAAgB,UAAAE,EAAA,CAAM,GAChD;ACVG,SAASC,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;ACHO,MAAMG,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;;;GCEaG,IAAkC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAA1B;AAAA,EACA,cAAA2B;AAAA,EACA,GAAGzB;AACL,MAAM;AACJ,QAAM0B,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAMG,IAAa,MACbJ,IAEAxB,gBAAAA,EAAAA;AAAAA,IAAC6B;AAAA,IAAA;AAAA,MACC,WAAW3B,EAAO;AAAA,MAClB,MAAM4B;AAAA,MACN,OAAOC,EAAK,EAAE,oBAAoB;AAAA,MAClC,SAASP;AAAA,IAAA;AAAA,EAAA,IAKR3B;AAGT,gCACGmC,GAAA,EAAK,WAAW9B,EAAO,MAAO,GAAGH,GAChC,UAAA;AAAA,IAAAC,gBAAAA,EAAAA,IAACiC,GAAA,EAAW,OAAAX,GAAc,UAAAC,EAAA,CAAoB;AAAA,IAC9CvB,gBAAAA,EAAAA,IAACkC,GAAA,EAAa,UAAAN,EAAA,EAAW,CAAE;AAAA,EAAA,GAC7B;AAEJ;","x_google_ignoreList":[0]}
@@ -0,0 +1,223 @@
1
+ import { j as f, a3 as M } from "./component.constants-DCOqCFoY.js";
2
+ import { useMemo as F, useCallback as z } from "react";
3
+ import { g as $ } from "./tables.utils-D7KXdM2S.js";
4
+ const Q = "_heatMapContainer_o9smx_1", U = "_tableContainer_o9smx_6", q = "_fullWidth_o9smx_22", J = "_table_o9smx_6", Y = "_heatMapCell_o9smx_61", Z = "_header_o9smx_84", h = {
5
+ heatMapContainer: Q,
6
+ tableContainer: U,
7
+ fullWidth: q,
8
+ table: J,
9
+ heatMapCell: Y,
10
+ header: Z
11
+ }, N = (t) => t < 0 ? 0 : t > 1 ? 1 : t, P = (t) => 1 - (1 - t) * (1 - t), w = (t, e, r) => t + (e - t) * r, V = 0.35, D = "#000000", v = "#FFFFFF", S = (t) => String(t ?? ""), tt = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/i, R = /* @__PURE__ */ new Map(), G = (t) => {
12
+ if (!t || t[0] !== "#") return t;
13
+ const e = t.slice(1).toLowerCase();
14
+ return e.length === 3 ? `#${e[0]}${e[0]}${e[1]}${e[1]}${e[2]}${e[2]}` : e.length === 6 ? `#${e}` : t.toLowerCase();
15
+ }, et = (t) => {
16
+ if (!t) return t;
17
+ const e = R.get(t);
18
+ if (e) return e;
19
+ if (t.startsWith("#")) {
20
+ const p = G(t);
21
+ return R.set(t, p), p;
22
+ }
23
+ if (typeof document > "u")
24
+ return t;
25
+ const r = document.createElement("span");
26
+ r.style.color = t, document.body.appendChild(r);
27
+ const o = getComputedStyle(r).color || "";
28
+ r.remove();
29
+ const s = o.match(tt);
30
+ if (!s) return t;
31
+ const [, a = "0", l = "0", x = "0"] = s, b = (p) => Number(p).toString(16).padStart(2, "0"), _ = `#${b(a)}${b(l)}${b(x)}`.toLowerCase();
32
+ return R.set(t, _), _;
33
+ }, j = (t) => {
34
+ const e = G(et(t)).slice(1);
35
+ if (e.length !== 6) return { r: 0, g: 0, b: 0 };
36
+ const r = parseInt(e, 16);
37
+ return { r: r >> 16 & 255, g: r >> 8 & 255, b: r & 255 };
38
+ }, rt = (t, e, r) => {
39
+ const o = (s) => Math.round(s).toString(16).padStart(2, "0");
40
+ return `#${o(t)}${o(e)}${o(r)}`;
41
+ }, k = (t, e, r) => {
42
+ const o = j(t), s = j(e);
43
+ return rt(w(o.r, s.r, r), w(o.g, s.g, r), w(o.b, s.b, r));
44
+ }, nt = (t) => {
45
+ const { r: e, g: r, b: o } = j(t);
46
+ return (e * 299 + r * 587 + o * 114) / 1e3;
47
+ }, st = (t) => nt(t) < 150 ? "#FFFFFF" : "#212129", ot = (t, e, r, o = 0.5) => {
48
+ const s = N(o);
49
+ return (a) => {
50
+ const l = N(a);
51
+ return l <= s ? k(t, e, s === 0 ? 1 : l / s) : k(e, r, (l - s) / (1 - s));
52
+ };
53
+ }, ct = (t) => {
54
+ const e = t.trim();
55
+ if (!e.endsWith("%")) return null;
56
+ const r = Number.parseFloat(e.slice(0, -1));
57
+ return Number.isFinite(r) ? N(r / 100) : null;
58
+ }, I = (t, e, r, o) => {
59
+ if (t == null) return o;
60
+ if (typeof t == "number" && Number.isFinite(t)) return t;
61
+ const s = typeof t == "string" ? ct(t) : null;
62
+ if (s != null) return e + s * (r - e);
63
+ const a = Number(t);
64
+ return Number.isFinite(a) ? a : o;
65
+ }, at = (t) => {
66
+ if (t == null) return t;
67
+ const e = Number(t);
68
+ return Number.isFinite(e) ? e : t;
69
+ }, B = (t, e) => {
70
+ const r = e && Number.isFinite(Number(e)) ? Number(e) : e;
71
+ return at(t ?? r);
72
+ }, lt = (t, e) => typeof t != "number" || !Number.isFinite(t) ? "white" : e(t), it = (t, e, r) => e ? typeof t == "string" || t == null || Number.isNaN(t) ? t : r != null && r.format ? r.format(Number(t)) : t : null, ut = (t, e) => {
73
+ const r = e - t;
74
+ return r === 0 ? 0.5 : ((t + e) / 2 - t) / r;
75
+ }, ft = ({
76
+ domainMin: t,
77
+ domainMax: e,
78
+ rawMin: r,
79
+ rawMax: o,
80
+ minColor: s,
81
+ midColor: a,
82
+ maxColor: l
83
+ }) => {
84
+ const x = ut(t, e), b = ot(s, a, l, x), _ = Math.max(1e-6, t - r), p = Math.max(1e-6, o - e), C = e - t;
85
+ if (C === 0) {
86
+ const m = b(0.5);
87
+ return (y) => m;
88
+ }
89
+ return (m) => {
90
+ if (!Number.isFinite(m)) return b(0.5);
91
+ const y = (m - t) / C;
92
+ if (y <= 0) {
93
+ const g = Math.max(0, t - m) / _, i = P(N(g)) * V;
94
+ return i > 0 ? k(s, v, i) : s;
95
+ }
96
+ if (y >= 1) {
97
+ const g = Math.max(0, m - e) / p, i = P(N(g)) * V;
98
+ return i > 0 ? k(l, D, i) : l;
99
+ }
100
+ return b(y);
101
+ };
102
+ }, gt = ({
103
+ data: t,
104
+ showValues: e = !1,
105
+ className: r,
106
+ columnDimension: o,
107
+ rowDimension: s,
108
+ measure: a,
109
+ minThreshold: l,
110
+ maxThreshold: x,
111
+ minColor: b,
112
+ midColor: _,
113
+ maxColor: p,
114
+ columnWidth: C,
115
+ firstColumnWidth: m,
116
+ displayNullAs: y
117
+ }) => {
118
+ const { rawMin: g, rawMax: i } = F(() => {
119
+ let n = 1 / 0, c = -1 / 0;
120
+ for (const d of t) {
121
+ const u = B(d[a.key], y);
122
+ u != null && typeof u == "number" && Number.isFinite(u) && (u < n && (n = u), u > c && (c = u));
123
+ }
124
+ return !Number.isFinite(n) || !Number.isFinite(c) ? { rawMin: 0, rawMax: 0 } : { rawMin: n, rawMax: c };
125
+ }, [t, a.key, y]), { domainMin: E, domainMax: L } = F(() => {
126
+ const n = I(l, g, i, g), c = I(x, g, i, i);
127
+ return n <= c ? { domainMin: n, domainMax: c } : { domainMin: c, domainMax: n };
128
+ }, [l, x, g, i]), O = F(
129
+ () => Array.from(
130
+ new Set(
131
+ t.map((n) => n[o.key]).filter((n) => n != null).map(S)
132
+ )
133
+ ),
134
+ [t, o.key]
135
+ ), W = F(
136
+ () => Array.from(
137
+ new Set(
138
+ t.map((n) => n[s.key]).filter((n) => n != null).map(S)
139
+ )
140
+ ),
141
+ [t, s.key]
142
+ ), A = F(() => {
143
+ const n = /* @__PURE__ */ new Map();
144
+ for (const c of t) {
145
+ const d = S(c[s.key]), u = S(c[o.key]);
146
+ n.has(d) || n.set(d, /* @__PURE__ */ new Map()), n.get(d).set(u, c);
147
+ }
148
+ return n;
149
+ }, [t, s.key, o.key]), K = z(
150
+ (n) => ft({
151
+ domainMin: E,
152
+ domainMax: L,
153
+ rawMin: g,
154
+ rawMax: i,
155
+ minColor: b,
156
+ midColor: _,
157
+ maxColor: p
158
+ })(n),
159
+ [E, L, g, i, b, _, p]
160
+ );
161
+ return /* @__PURE__ */ f.jsx("div", { className: M(h.heatMapContainer, r), children: /* @__PURE__ */ f.jsx(
162
+ "div",
163
+ {
164
+ className: M(
165
+ h.tableContainer,
166
+ (!C || !m) && h.fullWidth
167
+ ),
168
+ children: /* @__PURE__ */ f.jsxs("table", { className: h.table, "aria-label": "Heat map", children: [
169
+ /* @__PURE__ */ f.jsx("thead", { children: /* @__PURE__ */ f.jsxs("tr", { children: [
170
+ /* @__PURE__ */ f.jsx(
171
+ "th",
172
+ {
173
+ className: M(h.heatMapCell, h.header),
174
+ style: $(m),
175
+ children: a.label
176
+ }
177
+ ),
178
+ O.map((n, c) => /* @__PURE__ */ f.jsx(
179
+ "th",
180
+ {
181
+ className: M(h.heatMapCell, h.header),
182
+ style: $(C),
183
+ children: o.format ? o.format(n) : n
184
+ },
185
+ `col-${n}-${c}`
186
+ ))
187
+ ] }) }),
188
+ /* @__PURE__ */ f.jsx("tbody", { children: W.map((n) => /* @__PURE__ */ f.jsxs("tr", { children: [
189
+ /* @__PURE__ */ f.jsx(
190
+ "th",
191
+ {
192
+ className: M(h.heatMapCell, h.header),
193
+ scope: "row",
194
+ style: $(m),
195
+ children: s.format ? s.format(n) : n
196
+ }
197
+ ),
198
+ O.map((c) => {
199
+ var T;
200
+ const d = (T = A.get(n)) == null ? void 0 : T.get(c), u = B(d == null ? void 0 : d[a.key], y), H = lt(u, K), X = st(H);
201
+ return /* @__PURE__ */ f.jsx(
202
+ "td",
203
+ {
204
+ className: M(h.heatMapCell),
205
+ style: {
206
+ background: H,
207
+ color: X,
208
+ ...$(C)
209
+ },
210
+ children: it(u, e, a)
211
+ },
212
+ `cell-${n}-${c}`
213
+ );
214
+ })
215
+ ] }, `row-${n}`)) })
216
+ ] })
217
+ }
218
+ ) });
219
+ };
220
+ export {
221
+ gt as H
222
+ };
223
+ //# sourceMappingURL=HeatMap-By9_uzV_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeatMap-By9_uzV_.js","sources":["../src/remarkable-ui/charts/tables/HeatMap/HeatMap.utils.ts","../src/remarkable-ui/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 styles from './HeatMap.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';\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,\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(styles.heatMapContainer, className)}>\n <div\n className={clsx(\n styles.tableContainer,\n (!columnWidth || !firstColumnWidth) && styles.fullWidth,\n )}\n >\n <table className={styles.table} aria-label=\"Heat map\">\n <thead>\n <tr>\n <th\n className={clsx(styles.heatMapCell, styles.header)}\n style={getTableCellWidthStyle(firstColumnWidth)}\n >\n {measure.label}\n </th>\n {columnValues.map((cv, index) => (\n <th\n key={`col-${cv}-${index}`}\n className={clsx(styles.heatMapCell, styles.header)}\n style={getTableCellWidthStyle(columnWidth)}\n >\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 className={clsx(styles.heatMapCell, styles.header)}\n scope=\"row\"\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 className={clsx(styles.heatMapCell)}\n style={{\n background,\n color,\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","columnWidth","firstColumnWidth","useMemo","min","max","domMin","domMax","columnValues","d","rowValues","cellMap","map","c","useCallback","clsx","styles","jsx","getTableCellWidthStyle","cv","index","rv","obj","_a","background"],"mappings":";;;;;;;;;;GAMMA,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,KAAgB,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,KAAuB,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,EAAa;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,GAAqBW,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,KAAW,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,GAAS1B,EAAK6B,EAAE,GAAGC,EAAE,GAAG3B,CAAC,GAAGH,EAAK6B,EAAE,GAAGC,EAAE,GAAG3B,CAAC,GAAGH,EAAK6B,EAAE,GAAGC,EAAE,GAAG3B,CAAC,CAAC;AACzE,GAGM4B,KAAgB,CAACP,MAAkB;AACvC,QAAM,EAAE,GAAAL,GAAG,GAAAC,GAAG,GAAAlB,EAAA,IAAMqB,EAASC,CAAK;AAClC,UAAQL,IAAI,MAAMC,IAAI,MAAMlB,IAAI,OAAO;AACzC,GAGa8B,KAAe,CAACC,MACpBF,GAAcE,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,GC7PasE,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;AAAA,EACA,UAAAC;AAAA,EACA,aAAAiB;AAAA,EACA,kBAAAC;AAAA,EACA,eAAA/B;AACF,MAAuB;AAErB,QAAM,EAAE,QAAAR,GAAQ,QAAAC,EAAA,IAAWuC,EAAQ,MAAM;AACvC,QAAIC,IAAM,OACNC,IAAM;AACV,eAAW,KAAKV,GAAM;AACpB,YAAMzB,IAAQD,EAAa,EAAEO,EAAQ,GAAG,GAAGL,CAAa;AAExD,MAAID,KAAS,QAAQ,OAAOA,KAAU,YAAY,OAAO,SAASA,CAAK,MACjEA,IAAQkC,MAAKA,IAAMlC,IACnBA,IAAQmC,MAAKA,IAAMnC;AAAA,IAE3B;AACA,WAAI,CAAC,OAAO,SAASkC,CAAG,KAAK,CAAC,OAAO,SAASC,CAAG,IAAU,EAAE,QAAQ,GAAG,QAAQ,EAAA,IACzE,EAAE,QAAQD,GAAK,QAAQC,EAAA;AAAA,EAChC,GAAG,CAACV,GAAMnB,EAAQ,KAAKL,CAAa,CAAC,GAG/B,EAAE,WAAAO,GAAW,WAAAC,EAAA,IAAcwB,EAAQ,MAAM;AAC7C,UAAMG,IAAS5C,EAAeqC,GAAcpC,GAAQC,GAAQD,CAAM,GAC5D4C,IAAS7C,EAAesC,GAAcrC,GAAQC,GAAQA,CAAM;AAClE,WAAO0C,KAAUC,IACb,EAAE,WAAWD,GAAQ,WAAWC,EAAA,IAChC,EAAE,WAAWA,GAAQ,WAAWD,EAAA;AAAA,EACtC,GAAG,CAACP,GAAcC,GAAcrC,GAAQC,CAAM,CAAC,GAEzC4C,IAAeL;AAAA,IACnB,MACE,MAAM;AAAA,MACJ,IAAI;AAAA,QACFR,EACG,IAAI,CAACc,MAAMA,EAAEZ,EAAgB,GAAG,CAAC,EACjC,OAAO,CAACpE,MAAMA,KAAK,IAAI,EACvB,IAAID,CAAI;AAAA,MAAA;AAAA,IACb;AAAA,IAEJ,CAACmE,GAAME,EAAgB,GAAG;AAAA,EAAA,GAGtBa,IAAYP;AAAA,IAChB,MACE,MAAM;AAAA,MACJ,IAAI;AAAA,QACFR,EACG,IAAI,CAACc,MAAMA,EAAEX,EAAa,GAAG,CAAC,EAC9B,OAAO,CAACrE,MAAMA,KAAK,IAAI,EACvB,IAAID,CAAI;AAAA,MAAA;AAAA,IACb;AAAA,IAEJ,CAACmE,GAAMG,EAAa,GAAG;AAAA,EAAA,GAInBa,IAAUR,EAAQ,MAAM;AAC5B,UAAMS,wBAAU,IAAA;AAChB,eAAWH,KAAKd,GAAM;AACpB,YAAMvD,IAAIZ,EAAKiF,EAAEX,EAAa,GAAG,CAAC,GAC5Be,IAAIrF,EAAKiF,EAAEZ,EAAgB,GAAG,CAAC;AACrC,MAAKe,EAAI,IAAIxE,CAAC,OAAO,IAAIA,GAAG,oBAAI,KAAK,GACrCwE,EAAI,IAAIxE,CAAC,EAAG,IAAIyE,GAAGJ,CAA4B;AAAA,IACjD;AACA,WAAOG;AAAA,EACT,GAAG,CAACjB,GAAMG,EAAa,KAAKD,EAAgB,GAAG,CAAC,GAG1CxB,IAAgByC;AAAA,IACpB,CAACrF,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,WAAW+B,EAAKC,EAAO,kBAAkBpB,CAAS,GACrD,UAAAqB,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWF;AAAA,QACTC,EAAO;AAAA,SACN,CAACf,KAAe,CAACC,MAAqBc,EAAO;AAAA,MAAA;AAAA,MAGhD,iCAAC,SAAA,EAAM,WAAWA,EAAO,OAAO,cAAW,YACzC,UAAA;AAAA,QAAAC,gBAAAA,EAAAA,IAAC,SAAA,EACC,iCAAC,MAAA,EACC,UAAA;AAAA,UAAAA,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWF,EAAKC,EAAO,aAAaA,EAAO,MAAM;AAAA,cACjD,OAAOE,EAAuBhB,CAAgB;AAAA,cAE7C,UAAA1B,EAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,UAEVgC,EAAa,IAAI,CAACW,GAAIC,MACrBH,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWF,EAAKC,EAAO,aAAaA,EAAO,MAAM;AAAA,cACjD,OAAOE,EAAuBjB,CAAW;AAAA,cAExC,UAAAJ,EAAgB,SAASA,EAAgB,OAAOsB,CAAE,IAAIA;AAAA,YAAA;AAAA,YAJlD,OAAOA,CAAE,IAAIC,CAAK;AAAA,UAAA,CAM1B;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,WAAWF,EAAKC,EAAO,aAAaA,EAAO,MAAM;AAAA,cACjD,OAAM;AAAA,cACN,OAAOE,EAAuBhB,CAAgB;AAAA,cAE7C,UAAAJ,EAAa,SAASA,EAAa,OAAOuB,CAAE,IAAIA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGlDb,EAAa,IAAI,CAACW,MAAO;;AACxB,kBAAMG,KAAMC,IAAAZ,EAAQ,IAAIU,CAAE,MAAd,gBAAAE,EAAiB,IAAIJ,IAC3BjD,IAAQD,EAAaqD,KAAA,gBAAAA,EAAM9C,EAAQ,MAAML,CAAa,GACtDqD,IAAapD,GAAkBF,GAAOG,CAAa,GACnD5B,IAAQQ,GAAauE,CAAU;AAErC,mBACEP,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,WAAWF,EAAKC,EAAO,WAAW;AAAA,gBAClC,OAAO;AAAA,kBACL,YAAAQ;AAAA,kBACA,OAAA/E;AAAA,kBACA,GAAGyE,EAAuBjB,CAAW;AAAA,gBAAA;AAAA,gBAGtC,UAAA3B,GAAoBJ,GAAOK,GAAYC,CAAO;AAAA,cAAA;AAAA,cAR1C,QAAQ6C,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;"}
@@ -0,0 +1,138 @@
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-DCOqCFoY.js";
2
+ import { useTheme as k, defineComponent as B } from "@embeddable.com/react";
3
+ import { C as G } from "./ChartCard-D-0O5ugW.js";
4
+ import "react";
5
+ import { H as I } from "./HeatMap-By9_uzV_.js";
6
+ import { g as C } from "./formatter.utils-B80iNq9Q.js";
7
+ import { u as h } from "./charts.fillGaps.hooks-5WclK2CD.js";
8
+ const O = (e, a) => {
9
+ const n = C(a);
10
+ return {
11
+ key: e.measure.name,
12
+ label: n.dimensionOrMeasureTitle(e.measure),
13
+ format: (o) => n.data(e.measure, o)
14
+ };
15
+ }, p = (e, a) => {
16
+ const n = C(a);
17
+ return {
18
+ key: e.dimension.name,
19
+ label: n.dimensionOrMeasureTitle(e.dimension),
20
+ format: (o) => n.data(e.dimension, o)
21
+ };
22
+ }, J = (e) => {
23
+ const a = k();
24
+ v(a);
25
+ const { description: n, title: o } = F(e), {
26
+ measure: m,
27
+ rowDimension: r,
28
+ columnDimension: s,
29
+ maxColor: b,
30
+ midColor: g,
31
+ minColor: f,
32
+ displayNullAs: D,
33
+ columnWidth: M,
34
+ firstColumnWidth: w,
35
+ showValues: x,
36
+ minThreshold: T,
37
+ maxThreshold: H
38
+ } = e, y = h({
39
+ results: e.results,
40
+ dimension: s
41
+ }), t = h({
42
+ results: y,
43
+ dimension: r
44
+ }), R = O({ measure: m }, a), V = p({ dimension: r }, a), W = p({ dimension: s }, a);
45
+ return /* @__PURE__ */ u.jsx(
46
+ G,
47
+ {
48
+ title: o,
49
+ subtitle: n,
50
+ data: e.results,
51
+ dimensionsAndMeasures: [r, s, m],
52
+ errorMessage: t == null ? void 0 : t.error,
53
+ children: /* @__PURE__ */ u.jsx(
54
+ I,
55
+ {
56
+ data: t.data ?? [],
57
+ measure: R,
58
+ rowDimension: V,
59
+ columnDimension: W,
60
+ maxColor: b,
61
+ midColor: g,
62
+ minColor: f,
63
+ showValues: x,
64
+ minThreshold: T,
65
+ maxThreshold: H,
66
+ columnWidth: M,
67
+ firstColumnWidth: w,
68
+ displayNullAs: D
69
+ }
70
+ )
71
+ }
72
+ );
73
+ }, _ = {
74
+ name: "HeatMapPro",
75
+ label: "Heat Map",
76
+ category: "Table Charts",
77
+ inputs: [
78
+ S,
79
+ A,
80
+ {
81
+ ...d,
82
+ label: "Row Dimension",
83
+ name: "rowDimension"
84
+ },
85
+ {
86
+ ...d,
87
+ label: "Column Dimension",
88
+ name: "columnDimension"
89
+ },
90
+ j,
91
+ N,
92
+ { ...i, name: "displayNullAs", label: "Display Null As" },
93
+ { ...l, name: "maxColor", label: "Max Color", defaultValue: "green", required: !0 },
94
+ { ...l, name: "midColor", label: "Mid Color", defaultValue: "yellow", required: !0 },
95
+ { ...l, name: "minColor", label: "Min Color", defaultValue: "red", required: !0 },
96
+ {
97
+ ...i,
98
+ name: "minThreshold",
99
+ label: "Max range lower limit",
100
+ description: "Enter a value as either a number (e.g. 20) or a percentage (e.g. 20%)"
101
+ },
102
+ {
103
+ ...i,
104
+ name: "maxThreshold",
105
+ label: "Min range upper limit",
106
+ description: "Enter a value as either a number (e.g. 20) or a percentage (e.g. 20%)"
107
+ },
108
+ { ...P, name: "showValues", label: "Show Values", defaultValue: !0 },
109
+ {
110
+ ...c,
111
+ name: "firstColumnWidth",
112
+ label: "First Column Width",
113
+ description: "Set the width in px (e.g. 200)"
114
+ },
115
+ {
116
+ ...c,
117
+ name: "columnWidth",
118
+ label: "Column Width",
119
+ description: "Set the width in px (e.g. 200)"
120
+ },
121
+ q
122
+ ]
123
+ }, Z = B(J, _, {
124
+ props: (e) => ({
125
+ ...e,
126
+ results: E({
127
+ from: e.dataset,
128
+ select: [e.rowDimension, e.columnDimension, e.measure],
129
+ limit: e.maxResults,
130
+ countRows: !0
131
+ })
132
+ })
133
+ });
134
+ export {
135
+ Z as default,
136
+ _ as meta
137
+ };
138
+ //# sourceMappingURL=HeatMapPro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeatMapPro.js","sources":["../src/remarkable-pro/components/charts/tables/HeatMapPro/index.tsx","../src/remarkable-pro/components/charts/tables/HeatMapPro/HeatMapPro.emb.ts"],"sourcesContent":["import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { HeatMap, HeatMapPropsDimension, HeatMapPropsMeasure } from '../../../../../remarkable-ui';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\n\ntype HeatMapProProps = {\n columnDimension: Dimension;\n columnWidth?: number;\n description: string;\n displayNullAs?: string;\n firstColumnWidth?: number;\n maxColor: string;\n maxThreshold?: string;\n measure: Measure;\n midColor: string;\n minColor: string;\n minThreshold?: string;\n results: DataResponse;\n rowDimension: Dimension;\n showValues?: boolean;\n title: string;\n};\n\nexport const getHeatMeasure = (\n props: { measure: Measure },\n theme: Theme,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): HeatMapPropsMeasure<any> => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n key: props.measure.name,\n label: themeFormatter.dimensionOrMeasureTitle(props.measure),\n format: (value) => {\n return themeFormatter.data(props.measure, value);\n },\n };\n};\n\nexport const getHeatDimension = (\n props: { dimension: Dimension },\n theme: Theme,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): HeatMapPropsDimension<any> => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n key: props.dimension.name,\n label: themeFormatter.dimensionOrMeasureTitle(props.dimension),\n format: (value: string) => themeFormatter.data(props.dimension, value),\n };\n};\n\nconst HeatMapPro = (props: HeatMapProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { description, title } = resolveI18nProps(props);\n const {\n measure,\n rowDimension,\n columnDimension,\n maxColor,\n midColor,\n minColor,\n displayNullAs,\n columnWidth,\n firstColumnWidth,\n showValues,\n minThreshold,\n maxThreshold,\n } = props;\n\n // Fill gaps for the column dimension\n const resultsColumnDimensionFillGaps = useFillGaps({\n results: props.results,\n dimension: columnDimension,\n });\n\n // Fill gaps for the row dimension\n const results = useFillGaps({\n results: resultsColumnDimensionFillGaps,\n dimension: rowDimension,\n });\n\n const pivotMeasures = getHeatMeasure({ measure }, theme);\n const pivotRowDimension = getHeatDimension({ dimension: rowDimension }, theme);\n const pivotColumnDimension = getHeatDimension({ dimension: columnDimension }, theme);\n\n return (\n <ChartCard\n title={title}\n subtitle={description}\n data={props.results}\n dimensionsAndMeasures={[rowDimension, columnDimension, measure]}\n errorMessage={results?.error}\n >\n <HeatMap\n data={results.data ?? []}\n measure={pivotMeasures}\n rowDimension={pivotRowDimension}\n columnDimension={pivotColumnDimension}\n maxColor={maxColor}\n midColor={midColor}\n minColor={minColor}\n showValues={showValues}\n minThreshold={minThreshold}\n maxThreshold={maxThreshold}\n columnWidth={columnWidth}\n firstColumnWidth={firstColumnWidth}\n displayNullAs={displayNullAs}\n />\n </ChartCard>\n );\n};\n\nexport default HeatMapPro;\n","import { loadData } from '@embeddable.com/core';\nimport { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport HeatMapPro from './index';\nimport {\n dataset,\n description,\n title,\n maxResults,\n genericString,\n dimensionWithDateBounds,\n genericNumber,\n measure,\n inputColor,\n genericBoolean,\n} from '../../../component.constants';\n\nexport const meta = {\n name: 'HeatMapPro',\n label: 'Heat Map',\n category: 'Table Charts',\n inputs: [\n dataset,\n measure,\n {\n ...dimensionWithDateBounds,\n label: 'Row Dimension',\n name: 'rowDimension',\n },\n {\n ...dimensionWithDateBounds,\n label: 'Column Dimension',\n name: 'columnDimension',\n },\n title,\n description,\n { ...genericString, name: 'displayNullAs', label: 'Display Null As' },\n { ...inputColor, name: 'maxColor', label: 'Max Color', defaultValue: 'green', required: true },\n { ...inputColor, name: 'midColor', label: 'Mid Color', defaultValue: 'yellow', required: true },\n { ...inputColor, name: 'minColor', label: 'Min Color', defaultValue: 'red', required: true },\n {\n ...genericString,\n name: 'minThreshold',\n label: 'Max range lower limit',\n description: 'Enter a value as either a number (e.g. 20) or a percentage (e.g. 20%)',\n },\n {\n ...genericString,\n name: 'maxThreshold',\n label: 'Min range upper limit',\n description: 'Enter a value as either a number (e.g. 20) or a percentage (e.g. 20%)',\n },\n { ...genericBoolean, name: 'showValues', label: 'Show Values', defaultValue: true },\n {\n ...genericNumber,\n name: 'firstColumnWidth',\n label: 'First Column Width',\n description: 'Set the width in px (e.g. 200)',\n },\n {\n ...genericNumber,\n name: 'columnWidth',\n label: 'Column Width',\n description: 'Set the width in px (e.g. 200)',\n },\n maxResults,\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(HeatMapPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n results: loadData({\n from: inputs.dataset,\n select: [inputs.rowDimension, inputs.columnDimension, inputs.measure],\n limit: inputs.maxResults,\n countRows: true,\n }),\n };\n },\n});\n"],"names":["getHeatMeasure","props","theme","themeFormatter","getThemeFormatter","value","getHeatDimension","HeatMapPro","useTheme","i18nSetup","description","title","resolveI18nProps","measure","rowDimension","columnDimension","maxColor","midColor","minColor","displayNullAs","columnWidth","firstColumnWidth","showValues","minThreshold","maxThreshold","resultsColumnDimensionFillGaps","useFillGaps","results","pivotMeasures","pivotRowDimension","pivotColumnDimension","jsx","ChartCard","HeatMap","meta","dataset","dimensionWithDateBounds","genericString","inputColor","genericBoolean","genericNumber","maxResults","HeatMapPro_emb","defineComponent","inputs","loadData"],"mappings":";;;;;;;AA4BO,MAAMA,IAAiB,CAC5BC,GACAC,MAE6B;AAC7B,QAAMC,IAAiBC,EAAkBF,CAAK;AAE9C,SAAO;AAAA,IACL,KAAKD,EAAM,QAAQ;AAAA,IACnB,OAAOE,EAAe,wBAAwBF,EAAM,OAAO;AAAA,IAC3D,QAAQ,CAACI,MACAF,EAAe,KAAKF,EAAM,SAASI,CAAK;AAAA,EACjD;AAEJ,GAEaC,IAAmB,CAC9BL,GACAC,MAE+B;AAC/B,QAAMC,IAAiBC,EAAkBF,CAAK;AAE9C,SAAO;AAAA,IACL,KAAKD,EAAM,UAAU;AAAA,IACrB,OAAOE,EAAe,wBAAwBF,EAAM,SAAS;AAAA,IAC7D,QAAQ,CAACI,MAAkBF,EAAe,KAAKF,EAAM,WAAWI,CAAK;AAAA,EAAA;AAEzE,GAEME,IAAa,CAACN,MAA2B;AAC7C,QAAMC,IAAQM,EAAA;AACd,EAAAC,EAAUP,CAAK;AAEf,QAAM,EAAE,aAAAQ,GAAa,OAAAC,MAAUC,EAAiBX,CAAK,GAC/C;AAAA,IACJ,SAAAY;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,EAAA,IACEvB,GAGEwB,IAAiCC,EAAY;AAAA,IACjD,SAASzB,EAAM;AAAA,IACf,WAAWc;AAAA,EAAA,CACZ,GAGKY,IAAUD,EAAY;AAAA,IAC1B,SAASD;AAAA,IACT,WAAWX;AAAA,EAAA,CACZ,GAEKc,IAAgB5B,EAAe,EAAE,SAAAa,EAAA,GAAWX,CAAK,GACjD2B,IAAoBvB,EAAiB,EAAE,WAAWQ,EAAA,GAAgBZ,CAAK,GACvE4B,IAAuBxB,EAAiB,EAAE,WAAWS,EAAA,GAAmBb,CAAK;AAEnF,SACE6B,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAArB;AAAA,MACA,UAAUD;AAAA,MACV,MAAMT,EAAM;AAAA,MACZ,uBAAuB,CAACa,GAAcC,GAAiBF,CAAO;AAAA,MAC9D,cAAcc,KAAA,gBAAAA,EAAS;AAAA,MAEvB,UAAAI,gBAAAA,EAAAA;AAAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAMN,EAAQ,QAAQ,CAAA;AAAA,UACtB,SAASC;AAAA,UACT,cAAcC;AAAA,UACd,iBAAiBC;AAAA,UACjB,UAAAd;AAAA,UACA,UAAAC;AAAA,UACA,UAAAC;AAAA,UACA,YAAAI;AAAA,UACA,cAAAC;AAAA,UACA,cAAAC;AAAA,UACA,aAAAJ;AAAA,UACA,kBAAAC;AAAA,UACA,eAAAF;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GCvGae,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,IACNC;AAAA,IACAtB;AAAA,IACA;AAAA,MACE,GAAGuB;AAAA,MACH,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,IAER;AAAA,MACE,GAAGA;AAAA,MACH,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,IAERzB;AAAA,IACAD;AAAA,IACA,EAAE,GAAG2B,GAAe,MAAM,iBAAiB,OAAO,kBAAA;AAAA,IAClD,EAAE,GAAGC,GAAY,MAAM,YAAY,OAAO,aAAa,cAAc,SAAS,UAAU,GAAA;AAAA,IACxF,EAAE,GAAGA,GAAY,MAAM,YAAY,OAAO,aAAa,cAAc,UAAU,UAAU,GAAA;AAAA,IACzF,EAAE,GAAGA,GAAY,MAAM,YAAY,OAAO,aAAa,cAAc,OAAO,UAAU,GAAA;AAAA,IACtF;AAAA,MACE,GAAGD;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,GAAGA;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAEf,EAAE,GAAGE,GAAgB,MAAM,cAAc,OAAO,eAAe,cAAc,GAAA;AAAA,IAC7E;AAAA,MACE,GAAGC;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,GAAGA;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAEfC;AAAA,EAAA;AAEJ,GAEAC,IAAeC,EAAgBpC,GAAY2B,GAAM;AAAA,EAC/C,OAAO,CAACU,OACC;AAAA,IACL,GAAGA;AAAA,IACH,SAASC,EAAS;AAAA,MAChB,MAAMD,EAAO;AAAA,MACb,QAAQ,CAACA,EAAO,cAAcA,EAAO,iBAAiBA,EAAO,OAAO;AAAA,MACpE,OAAOA,EAAO;AAAA,MACd,WAAW;AAAA,IAAA,CACZ;AAAA,EAAA;AAGP,CAAC;"}
@@ -1,4 +1,4 @@
1
- import { ad as j, j as n, ag as x, ah as p } from "./component.constants-CFaxyNCw.js";
1
+ import { a0 as j, j as n, a3 as x, a4 as d } from "./component.constants-DCOqCFoY.js";
2
2
  /**
3
3
  * @license @tabler/icons-react v3.35.0 - MIT
4
4
  *
@@ -27,20 +27,20 @@ const m = [["path", { d: "M3 17l6 -6l4 4l8 -8", key: "svg-0" }], ["path", { d: "
27
27
  showChangeAsPercentage: r,
28
28
  invertChangeColors: C = !1,
29
29
  comparisonLabel: c,
30
- valueFormatter: d,
30
+ valueFormatter: p,
31
31
  percentageDecimalPlaces: g = 1,
32
32
  className: h
33
33
  }) => {
34
34
  const s = e - i, t = s > 0;
35
35
  let a;
36
- r ? a = `${(i === 0 ? 0 : s / i * 100).toFixed(g)}%` : a = d ? d(s) : s.toString();
36
+ r ? a = `${(i === 0 ? 0 : s / i * 100).toFixed(g)}%` : a = p ? p(s) : s.toString();
37
37
  const l = `${t ? "+" : ""}${a}`, _ = t ? f : y;
38
38
  return /* @__PURE__ */ n.jsxs("div", { className: x(h, o.kpiChartChangeContainer), children: [
39
39
  /* @__PURE__ */ n.jsxs("div", { className: x(o.kpiChangeBadge, I(t, C)), children: [
40
40
  /* @__PURE__ */ n.jsx(_, {}),
41
- /* @__PURE__ */ n.jsx(p, { children: l })
41
+ /* @__PURE__ */ n.jsx(d, { children: l })
42
42
  ] }),
43
- c && /* @__PURE__ */ n.jsx(p, { children: c })
43
+ c && /* @__PURE__ */ n.jsx(d, { children: c })
44
44
  ] });
45
45
  }, S = ({
46
46
  value: e,
@@ -48,7 +48,7 @@ const m = [["path", { d: "M3 17l6 -6l4 4l8 -8", key: "svg-0" }], ["path", { d: "
48
48
  comparisonValue: r,
49
49
  comparisonLabel: C,
50
50
  invertChangeColors: c,
51
- showChangeAsPercentage: d,
51
+ showChangeAsPercentage: p,
52
52
  percentageDecimalPlaces: g = 1,
53
53
  equalComparisonLabel: h = "No change",
54
54
  valueFontSize: s,
@@ -56,8 +56,8 @@ const m = [["path", { d: "M3 17l6 -6l4 4l8 -8", key: "svg-0" }], ["path", { d: "
56
56
  }) => {
57
57
  const a = r !== void 0, l = a && r === e, _ = e === void 0 ? "" : t ? t(e) : e;
58
58
  return /* @__PURE__ */ n.jsxs("div", { className: k.kpiChartContainer, children: [
59
- /* @__PURE__ */ n.jsx(p, { style: { fontSize: s }, children: _ }),
60
- /* @__PURE__ */ n.jsx("div", { className: k.kpiComparisonContainer, style: { fontSize: i }, children: l ? /* @__PURE__ */ n.jsx(p, { children: h }) : /* @__PURE__ */ n.jsx(
59
+ /* @__PURE__ */ n.jsx(d, { style: { fontSize: s }, children: _ }),
60
+ /* @__PURE__ */ n.jsx("div", { className: k.kpiComparisonContainer, style: { fontSize: i }, children: l ? /* @__PURE__ */ n.jsx(d, { children: h }) : /* @__PURE__ */ n.jsx(
61
61
  K,
62
62
  {
63
63
  changeFontSize: i,
@@ -66,7 +66,7 @@ const m = [["path", { d: "M3 17l6 -6l4 4l8 -8", key: "svg-0" }], ["path", { d: "
66
66
  comparisonValue: r,
67
67
  invertChangeColors: c,
68
68
  percentageDecimalPlaces: g,
69
- showChangeAsPercentage: d,
69
+ showChangeAsPercentage: p,
70
70
  value: e,
71
71
  valueFormatter: t
72
72
  }
@@ -76,4 +76,4 @@ const m = [["path", { d: "M3 17l6 -6l4 4l8 -8", key: "svg-0" }], ["path", { d: "
76
76
  export {
77
77
  S as K
78
78
  };
79
- //# sourceMappingURL=KpiChart-C6zepuhF.js.map
79
+ //# sourceMappingURL=KpiChart-CS9s8nJ4.js.map