@embeddable.com/remarkable-pro 0.1.3 → 0.1.4

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 (104) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +4 -4
  2. package/dist/BarChartDefaultPro.js +4 -4
  3. package/dist/BarChartGroupedHorizontalPro.js +4 -4
  4. package/dist/BarChartGroupedPro.js +4 -4
  5. package/dist/BarChartStackedHorizontalPro.js +4 -4
  6. package/dist/BarChartStackedPro.js +4 -4
  7. package/dist/{ChartCard-OT66j3V3.js → ChartCard-Be7mHyBp.js} +3 -3
  8. package/dist/{ChartCard-OT66j3V3.js.map → ChartCard-Be7mHyBp.js.map} +1 -1
  9. package/dist/{ChartGranularitySelectField-awLCjaEw.js → ChartGranularitySelectField-D-H0yKZH.js} +3 -3
  10. package/dist/{ChartGranularitySelectField-awLCjaEw.js.map → ChartGranularitySelectField-D-H0yKZH.js.map} +1 -1
  11. package/dist/{Color.type.emb-Chs0ckWV.js → Color.type.emb-CGyFSpIN.js} +9399 -9374
  12. package/dist/Color.type.emb-CGyFSpIN.js.map +1 -0
  13. package/dist/ColorEditor.js +1 -1
  14. package/dist/ComparisonPeriodSelectFieldPro.js +3 -3
  15. package/dist/DateRangePickerCustomPro.js +4 -4
  16. package/dist/DateRangeSelectFieldPro.js +3 -3
  17. package/dist/{DimensionAndMeasureSingleSelectField-BDdFGAJw.js → DimensionAndMeasureSingleSelectField-BOWAqIok.js} +3 -3
  18. package/dist/{DimensionAndMeasureSingleSelectField-BDdFGAJw.js.map → DimensionAndMeasureSingleSelectField-BOWAqIok.js.map} +1 -1
  19. package/dist/DimensionSingleSelectFieldPro.js +5 -5
  20. package/dist/DonutChartPro.js +4 -4
  21. package/dist/DonutLabelChartPro.js +4 -4
  22. package/dist/{EditorCard-C79wijeo.js → EditorCard-C8PKNLWT.js} +3 -3
  23. package/dist/{EditorCard-C79wijeo.js.map → EditorCard-C8PKNLWT.js.map} +1 -1
  24. package/dist/{GranularitySelectField-BVQgGkjc.js → GranularitySelectField-DUbr0dRq.js} +3 -3
  25. package/dist/{GranularitySelectField-BVQgGkjc.js.map → GranularitySelectField-DUbr0dRq.js.map} +1 -1
  26. package/dist/GranularitySelectFieldPro.js +4 -4
  27. package/dist/HeatMapPro.js +4 -4
  28. package/dist/{IconCalendarFilled-CPoPNAfd.js → IconCalendarFilled-BOHNn82C.js} +2 -2
  29. package/dist/{IconCalendarFilled-CPoPNAfd.js.map → IconCalendarFilled-BOHNn82C.js.map} +1 -1
  30. package/dist/KpiChartNumberComparisonPro.js +4 -4
  31. package/dist/KpiChartNumberPro.js +4 -4
  32. package/dist/LineChartComparisonDefaultPro.js +4 -4
  33. package/dist/LineChartDefaultPro.js +4 -4
  34. package/dist/LineChartGroupedPro.js +4 -4
  35. package/dist/MeasureSingleSelectFieldPro.js +5 -5
  36. package/dist/MultiSelectFieldPro.js +4 -4
  37. package/dist/PieChartPro.js +4 -4
  38. package/dist/PivotTablePro.js +4 -4
  39. package/dist/SingleSelectFieldPro.js +4 -4
  40. package/dist/TableChartPaginated.js +4 -4
  41. package/dist/TableScrollable.js +5 -5
  42. package/dist/{bars.utils-DzcvCtRj.js → bars.utils-Ccwx-tAf.js} +4 -4
  43. package/dist/{bars.utils-DzcvCtRj.js.map → bars.utils-Ccwx-tAf.js.map} +1 -1
  44. package/dist/{charts.utils-B9hA-AJt.js → charts.utils-ypZsf-22.js} +4 -4
  45. package/dist/{charts.utils-B9hA-AJt.js.map → charts.utils-ypZsf-22.js.map} +1 -1
  46. package/dist/{component.inputs.constants-DMsQ1KIy.js → component.inputs.constants-MAjey7Me.js} +2 -2
  47. package/dist/{component.inputs.constants-DMsQ1KIy.js.map → component.inputs.constants-MAjey7Me.js.map} +1 -1
  48. package/dist/embeddable-components.json +26 -26
  49. package/dist/{formatter.utils-wIg0a9Bk.js → formatter.utils-BeLScsYW.js} +2 -2
  50. package/dist/{formatter.utils-wIg0a9Bk.js.map → formatter.utils-BeLScsYW.js.map} +1 -1
  51. package/dist/{index-CoDJGGqe.js → index-B4AV2TSq.js} +7 -7
  52. package/dist/{index-CoDJGGqe.js.map → index-B4AV2TSq.js.map} +1 -1
  53. package/dist/{index-B8Ssaj05.js → index-BWJHhuBQ.js} +6 -6
  54. package/dist/{index-B8Ssaj05.js.map → index-BWJHhuBQ.js.map} +1 -1
  55. package/dist/{index-CdwBu2mT.js → index-BZ2MzjOb.js} +6 -6
  56. package/dist/{index-CdwBu2mT.js.map → index-BZ2MzjOb.js.map} +1 -1
  57. package/dist/{index-BNh5_nFd.js → index-Bg7ZniJ2.js} +5 -5
  58. package/dist/{index-BNh5_nFd.js.map → index-Bg7ZniJ2.js.map} +1 -1
  59. package/dist/{index-CzcB2c9U.js → index-BlaQtlpt.js} +5 -5
  60. package/dist/{index-CzcB2c9U.js.map → index-BlaQtlpt.js.map} +1 -1
  61. package/dist/{index-BPkVCSJK.js → index-CRxhm_xI.js} +5 -5
  62. package/dist/{index-BPkVCSJK.js.map → index-CRxhm_xI.js.map} +1 -1
  63. package/dist/{index-BJ0atkgQ.js → index-CzJiHUjz.js} +6 -6
  64. package/dist/{index-BJ0atkgQ.js.map → index-CzJiHUjz.js.map} +1 -1
  65. package/dist/{index-5XDqQ63V.js → index-D4RtNAm0.js} +4 -4
  66. package/dist/{index-5XDqQ63V.js.map → index-D4RtNAm0.js.map} +1 -1
  67. package/dist/{index-DlmQkA1e.js → index-DH1xtNOE.js} +5 -5
  68. package/dist/{index-DlmQkA1e.js.map → index-DH1xtNOE.js.map} +1 -1
  69. package/dist/{index-DDMj32YH.js → index-DHVSgVH0.js} +5 -5
  70. package/dist/{index-DDMj32YH.js.map → index-DHVSgVH0.js.map} +1 -1
  71. package/dist/{index-x7_4cBXP.js → index-DHWLaRmn.js} +5 -5
  72. package/dist/{index-x7_4cBXP.js.map → index-DHWLaRmn.js.map} +1 -1
  73. package/dist/{index-BBNdJ1lY.js → index-DPF51yD5.js} +5 -5
  74. package/dist/{index-BBNdJ1lY.js.map → index-DPF51yD5.js.map} +1 -1
  75. package/dist/{index-DViBsw3u.js → index-DiU1B7O9.js} +6 -6
  76. package/dist/{index-DViBsw3u.js.map → index-DiU1B7O9.js.map} +1 -1
  77. package/dist/{index-CjU578lr.js → index-DjdyOpZx.js} +5 -5
  78. package/dist/{index-CjU578lr.js.map → index-DjdyOpZx.js.map} +1 -1
  79. package/dist/{index-BqknHuCo.js → index-KyBmwDIm.js} +6 -6
  80. package/dist/{index-BqknHuCo.js.map → index-KyBmwDIm.js.map} +1 -1
  81. package/dist/{index-D00O-VX5.js → index-SaoYT_gT.js} +6 -6
  82. package/dist/{index-D00O-VX5.js.map → index-SaoYT_gT.js.map} +1 -1
  83. package/dist/{index-Bhm26I4T.js → index-bJoBwWW3.js} +6 -6
  84. package/dist/{index-Bhm26I4T.js.map → index-bJoBwWW3.js.map} +1 -1
  85. package/dist/{index-DI4o8g2o.js → index-eVkC4ywY.js} +6 -6
  86. package/dist/{index-DI4o8g2o.js.map → index-eVkC4ywY.js.map} +1 -1
  87. package/dist/{index-uoo8E0Rh.js → index-g8MvTSdJ.js} +6 -6
  88. package/dist/{index-uoo8E0Rh.js.map → index-g8MvTSdJ.js.map} +1 -1
  89. package/dist/{index-D01rdEuG.js → index-rMR9Yklq.js} +6 -6
  90. package/dist/{index-D01rdEuG.js.map → index-rMR9Yklq.js.map} +1 -1
  91. package/dist/{index-oVUlHLZC.js → index-y6eDhxWa.js} +5 -5
  92. package/dist/{index-oVUlHLZC.js.map → index-y6eDhxWa.js.map} +1 -1
  93. package/dist/index.js +29 -29
  94. package/dist/{pies.utils-Cwg8P8bS.js → pies.utils-5-O3kg-9.js} +5 -5
  95. package/dist/{pies.utils-Cwg8P8bS.js.map → pies.utils-5-O3kg-9.js.map} +1 -1
  96. package/dist/{preview.data.constants-DHMnpP3S.js → preview.data.constants-Cdk-GUa5.js} +2 -2
  97. package/dist/{preview.data.constants-DHMnpP3S.js.map → preview.data.constants-Cdk-GUa5.js.map} +1 -1
  98. package/dist/remarkable-pro.css +1 -1
  99. package/dist/{tables.utils-C7oD63FD.js → tables.utils-CG1MXpGj.js} +4 -4
  100. package/dist/{tables.utils-C7oD63FD.js.map → tables.utils-CG1MXpGj.js.map} +1 -1
  101. package/dist/{timeRange.utils-CzFonlg0.js → timeRange.utils-Rkw2u-vc.js} +2 -2
  102. package/dist/{timeRange.utils-CzFonlg0.js.map → timeRange.utils-Rkw2u-vc.js.map} +1 -1
  103. package/package.json +2 -2
  104. package/dist/Color.type.emb-Chs0ckWV.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { defineEditor as l } from "@embeddable.com/react";
2
- import { j as r, A as a, I as i, w as p, V as u } from "./Color.type.emb-Chs0ckWV.js";
2
+ import { j as r, A as a, I as i, w as p, V as u } from "./Color.type.emb-CGyFSpIN.js";
3
3
  import { useState as m, useEffect as C } from "react";
4
4
  const I = "_colorInputContainer_1o1qe_1", d = "_colorInput_1o1qe_1", s = {
5
5
  colorInputContainer: I,
@@ -1,7 +1,7 @@
1
1
  import { definePreview as t, defineComponent as n } from "@embeddable.com/react";
2
- import { V as r } from "./Color.type.emb-Chs0ckWV.js";
3
- import { D as i } from "./index-5XDqQ63V.js";
4
- import { C as a, b as e } from "./component.inputs.constants-DMsQ1KIy.js";
2
+ import { V as r } from "./Color.type.emb-CGyFSpIN.js";
3
+ import { D as i } from "./index-D4RtNAm0.js";
4
+ import { C as a, b as e } from "./component.inputs.constants-MAjey7Me.js";
5
5
  const l = {
6
6
  name: "ComparisonPeriodSelectFieldPro",
7
7
  label: "Comparison Period Select Field",
@@ -1,9 +1,9 @@
1
1
  import { useTheme as P, definePreview as y, defineComponent as D } from "@embeddable.com/react";
2
- import { j as l, k as w, V as s } from "./Color.type.emb-Chs0ckWV.js";
2
+ import { j as l, k as w, V as s } from "./Color.type.emb-CGyFSpIN.js";
3
3
  import { u as V, g as k, a as S, b as j } from "./dates.utils-BF32dTLi.js";
4
- import { a as F, r as M, i as T, b as e } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { E as x } from "./EditorCard-C79wijeo.js";
6
- import { I as L } from "./IconCalendarFilled-CPoPNAfd.js";
4
+ import { a as F, r as M, i as T, b as e } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { E as x } from "./EditorCard-C8PKNLWT.js";
6
+ import { I as L } from "./IconCalendarFilled-BOHNn82C.js";
7
7
  const r = (a) => {
8
8
  const t = P();
9
9
  F(t);
@@ -1,7 +1,7 @@
1
1
  import { definePreview as o, defineComponent as l } from "@embeddable.com/react";
2
- import { V as t } from "./Color.type.emb-Chs0ckWV.js";
3
- import { D as n } from "./index-x7_4cBXP.js";
4
- import { b as e } from "./component.inputs.constants-DMsQ1KIy.js";
2
+ import { V as t } from "./Color.type.emb-CGyFSpIN.js";
3
+ import { D as n } from "./index-DHWLaRmn.js";
4
+ import { b as e } from "./component.inputs.constants-MAjey7Me.js";
5
5
  const r = {
6
6
  name: "DateRangeSelectFieldPro",
7
7
  label: "Date-Range Picker - Presets",
@@ -1,7 +1,7 @@
1
- import { j as f, S as d } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { j as f, S as d } from "./Color.type.emb-CGyFSpIN.js";
2
2
  import { useTheme as S } from "@embeddable.com/react";
3
3
  import { useState as p, useEffect as g } from "react";
4
- import { g as C } from "./formatter.utils-wIg0a9Bk.js";
4
+ import { g as C } from "./formatter.utils-BeLScsYW.js";
5
5
  const v = ({
6
6
  dimensionsAndMeasures: s,
7
7
  searchValue: r,
@@ -42,4 +42,4 @@ const v = ({
42
42
  export {
43
43
  M as D
44
44
  };
45
- //# sourceMappingURL=DimensionAndMeasureSingleSelectField-BDdFGAJw.js.map
45
+ //# sourceMappingURL=DimensionAndMeasureSingleSelectField-BOWAqIok.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DimensionAndMeasureSingleSelectField-BDdFGAJw.js","sources":["../src/components/editors/utils/dimensionsAndMeasures.utils.ts","../src/components/editors/shared/DimensionAndMeasureSingleSelectField/DimensionAndMeasureSingleSelectField.tsx"],"sourcesContent":["import { DimensionOrMeasure } from '@embeddable.com/core';\nimport { Theme } from '../../../theme/theme.types';\nimport { SelectListOptionProps } from '@embeddable.com/remarkable-ui';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\n\nexport const getDimensionAndMeasureOptions = ({\n dimensionsAndMeasures,\n searchValue,\n theme,\n}: {\n dimensionsAndMeasures: DimensionOrMeasure[];\n searchValue: string;\n theme: Theme;\n}): SelectListOptionProps[] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return dimensionsAndMeasures\n .filter((dimensionOrMeasure) => {\n return themeFormatter\n .dimensionOrMeasureTitle(dimensionOrMeasure)\n .toLowerCase()\n .includes(searchValue.toLowerCase());\n })\n .map((dimensionOrMeasure) => {\n return {\n value: dimensionOrMeasure.name,\n label: themeFormatter.dimensionOrMeasureTitle(dimensionOrMeasure),\n };\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { useEffect, useState } from 'react';\nimport { SingleSelectField } from '@embeddable.com/remarkable-ui';\nimport { getDimensionAndMeasureOptions } from '../../utils/dimensionsAndMeasures.utils';\nimport { Dimension, Measure } from '@embeddable.com/core';\n\ntype DimensionAndMeasureSingleSelectFieldProps<T> = {\n selectedValue?: T;\n options: T[];\n placeholder?: string;\n clearable?: boolean;\n onChange: (value: T | undefined) => void;\n};\n\nexport const DimensionAndMeasureSingleSelectField = <T extends Dimension | Measure>(\n props: DimensionAndMeasureSingleSelectFieldProps<T>,\n) => {\n const theme = useTheme() as Theme;\n\n const [searchValue, setSearchValue] = useState<string>('');\n\n const { selectedValue, options, clearable, placeholder, onChange } = props;\n\n const handleChange = (newValue: string) => {\n const newSelection = options.find((option) => option.name === newValue);\n onChange(newSelection);\n };\n\n // Auto-select first dimensionOrMeasure when is not clearable and there is no selection\n useEffect(() => {\n const autoSelectActive = !clearable && !selectedValue;\n\n if (!autoSelectActive) return;\n\n const firstDimension = options?.[0];\n\n if (firstDimension) {\n onChange(firstDimension);\n }\n }, [clearable, selectedValue, options, onChange]);\n\n return (\n <SingleSelectField\n searchable\n clearable={clearable}\n placeholder={placeholder}\n value={selectedValue?.name}\n onChange={handleChange}\n onSearch={setSearchValue}\n options={getDimensionAndMeasureOptions({\n dimensionsAndMeasures: options,\n searchValue,\n theme,\n })}\n avoidCollisions={false}\n />\n );\n};\n"],"names":["getDimensionAndMeasureOptions","dimensionsAndMeasures","searchValue","theme","themeFormatter","getThemeFormatter","dimensionOrMeasure","DimensionAndMeasureSingleSelectField","props","useTheme","setSearchValue","useState","selectedValue","options","clearable","placeholder","onChange","handleChange","newValue","newSelection","option","useEffect","firstDimension","jsx","SingleSelectField"],"mappings":";;;;AAKO,MAAMA,IAAgC,CAAC;AAAA,EAC5C,uBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AACF,MAI+B;AAC7B,QAAMC,IAAiBC,EAAkBF,CAAK;AAE9C,SAAOF,EACJ,OAAO,CAACK,MACAF,EACJ,wBAAwBE,CAAkB,EAC1C,cACA,SAASJ,EAAY,aAAa,CACtC,EACA,IAAI,CAACI,OACG;AAAA,IACL,OAAOA,EAAmB;AAAA,IAC1B,OAAOF,EAAe,wBAAwBE,CAAkB;AAAA,EAAA,EAEnE;AACL,GCdaC,IAAuC,CAClDC,MACG;AACH,QAAML,IAAQM,EAAA,GAER,CAACP,GAAaQ,CAAc,IAAIC,EAAiB,EAAE,GAEnD,EAAE,eAAAC,GAAe,SAAAC,GAAS,WAAAC,GAAW,aAAAC,GAAa,UAAAC,MAAaR,GAE/DS,IAAe,CAACC,MAAqB;AACzC,UAAMC,IAAeN,EAAQ,KAAK,CAACO,MAAWA,EAAO,SAASF,CAAQ;AACtE,IAAAF,EAASG,CAAY;AAAA,EACvB;AAGA,SAAAE,EAAU,MAAM;AAGd,QAAI,EAFqB,CAACP,KAAa,CAACF,GAEjB;AAEvB,UAAMU,IAAiBT,KAAA,gBAAAA,EAAU;AAEjC,IAAIS,KACFN,EAASM,CAAc;AAAA,EAE3B,GAAG,CAACR,GAAWF,GAAeC,GAASG,CAAQ,CAAC,GAG9CO,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,YAAU;AAAA,MACV,WAAAV;AAAA,MACA,aAAAC;AAAA,MACA,OAAOH,KAAA,gBAAAA,EAAe;AAAA,MACtB,UAAUK;AAAA,MACV,UAAUP;AAAA,MACV,SAASV,EAA8B;AAAA,QACrC,uBAAuBa;AAAA,QACvB,aAAAX;AAAA,QACA,OAAAC;AAAA,MAAA,CACD;AAAA,MACD,iBAAiB;AAAA,IAAA;AAAA,EAAA;AAGvB;"}
1
+ {"version":3,"file":"DimensionAndMeasureSingleSelectField-BOWAqIok.js","sources":["../src/components/editors/utils/dimensionsAndMeasures.utils.ts","../src/components/editors/shared/DimensionAndMeasureSingleSelectField/DimensionAndMeasureSingleSelectField.tsx"],"sourcesContent":["import { DimensionOrMeasure } from '@embeddable.com/core';\nimport { Theme } from '../../../theme/theme.types';\nimport { SelectListOptionProps } from '@embeddable.com/remarkable-ui';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\n\nexport const getDimensionAndMeasureOptions = ({\n dimensionsAndMeasures,\n searchValue,\n theme,\n}: {\n dimensionsAndMeasures: DimensionOrMeasure[];\n searchValue: string;\n theme: Theme;\n}): SelectListOptionProps[] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return dimensionsAndMeasures\n .filter((dimensionOrMeasure) => {\n return themeFormatter\n .dimensionOrMeasureTitle(dimensionOrMeasure)\n .toLowerCase()\n .includes(searchValue.toLowerCase());\n })\n .map((dimensionOrMeasure) => {\n return {\n value: dimensionOrMeasure.name,\n label: themeFormatter.dimensionOrMeasureTitle(dimensionOrMeasure),\n };\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { useEffect, useState } from 'react';\nimport { SingleSelectField } from '@embeddable.com/remarkable-ui';\nimport { getDimensionAndMeasureOptions } from '../../utils/dimensionsAndMeasures.utils';\nimport { Dimension, Measure } from '@embeddable.com/core';\n\ntype DimensionAndMeasureSingleSelectFieldProps<T> = {\n selectedValue?: T;\n options: T[];\n placeholder?: string;\n clearable?: boolean;\n onChange: (value: T | undefined) => void;\n};\n\nexport const DimensionAndMeasureSingleSelectField = <T extends Dimension | Measure>(\n props: DimensionAndMeasureSingleSelectFieldProps<T>,\n) => {\n const theme = useTheme() as Theme;\n\n const [searchValue, setSearchValue] = useState<string>('');\n\n const { selectedValue, options, clearable, placeholder, onChange } = props;\n\n const handleChange = (newValue: string) => {\n const newSelection = options.find((option) => option.name === newValue);\n onChange(newSelection);\n };\n\n // Auto-select first dimensionOrMeasure when is not clearable and there is no selection\n useEffect(() => {\n const autoSelectActive = !clearable && !selectedValue;\n\n if (!autoSelectActive) return;\n\n const firstDimension = options?.[0];\n\n if (firstDimension) {\n onChange(firstDimension);\n }\n }, [clearable, selectedValue, options, onChange]);\n\n return (\n <SingleSelectField\n searchable\n clearable={clearable}\n placeholder={placeholder}\n value={selectedValue?.name}\n onChange={handleChange}\n onSearch={setSearchValue}\n options={getDimensionAndMeasureOptions({\n dimensionsAndMeasures: options,\n searchValue,\n theme,\n })}\n avoidCollisions={false}\n />\n );\n};\n"],"names":["getDimensionAndMeasureOptions","dimensionsAndMeasures","searchValue","theme","themeFormatter","getThemeFormatter","dimensionOrMeasure","DimensionAndMeasureSingleSelectField","props","useTheme","setSearchValue","useState","selectedValue","options","clearable","placeholder","onChange","handleChange","newValue","newSelection","option","useEffect","firstDimension","jsx","SingleSelectField"],"mappings":";;;;AAKO,MAAMA,IAAgC,CAAC;AAAA,EAC5C,uBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AACF,MAI+B;AAC7B,QAAMC,IAAiBC,EAAkBF,CAAK;AAE9C,SAAOF,EACJ,OAAO,CAACK,MACAF,EACJ,wBAAwBE,CAAkB,EAC1C,cACA,SAASJ,EAAY,aAAa,CACtC,EACA,IAAI,CAACI,OACG;AAAA,IACL,OAAOA,EAAmB;AAAA,IAC1B,OAAOF,EAAe,wBAAwBE,CAAkB;AAAA,EAAA,EAEnE;AACL,GCdaC,IAAuC,CAClDC,MACG;AACH,QAAML,IAAQM,EAAA,GAER,CAACP,GAAaQ,CAAc,IAAIC,EAAiB,EAAE,GAEnD,EAAE,eAAAC,GAAe,SAAAC,GAAS,WAAAC,GAAW,aAAAC,GAAa,UAAAC,MAAaR,GAE/DS,IAAe,CAACC,MAAqB;AACzC,UAAMC,IAAeN,EAAQ,KAAK,CAACO,MAAWA,EAAO,SAASF,CAAQ;AACtE,IAAAF,EAASG,CAAY;AAAA,EACvB;AAGA,SAAAE,EAAU,MAAM;AAGd,QAAI,EAFqB,CAACP,KAAa,CAACF,GAEjB;AAEvB,UAAMU,IAAiBT,KAAA,gBAAAA,EAAU;AAEjC,IAAIS,KACFN,EAASM,CAAc;AAAA,EAE3B,GAAG,CAACR,GAAWF,GAAeC,GAASG,CAAQ,CAAC,GAG9CO,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,YAAU;AAAA,MACV,WAAAV;AAAA,MACA,aAAAC;AAAA,MACA,OAAOH,KAAA,gBAAAA,EAAe;AAAA,MACtB,UAAUK;AAAA,MACV,UAAUP;AAAA,MACV,SAASV,EAA8B;AAAA,QACrC,uBAAuBa;AAAA,QACvB,aAAAX;AAAA,QACA,OAAAC;AAAA,MAAA,CACD;AAAA,MACD,iBAAiB;AAAA,IAAA;AAAA,EAAA;AAGvB;"}
@@ -1,9 +1,9 @@
1
- import { j as i, V as o } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { j as i, V as o } from "./Color.type.emb-CGyFSpIN.js";
2
2
  import { useTheme as g, definePreview as S, defineComponent as v } from "@embeddable.com/react";
3
- import { E as h } from "./EditorCard-C79wijeo.js";
4
- import { a as D, r as b, b as e } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { D as C } from "./DimensionAndMeasureSingleSelectField-BDdFGAJw.js";
6
- import { p as t } from "./preview.data.constants-DHMnpP3S.js";
3
+ import { E as h } from "./EditorCard-C8PKNLWT.js";
4
+ import { a as D, r as b, b as e } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { D as C } from "./DimensionAndMeasureSingleSelectField-BOWAqIok.js";
6
+ import { p as t } from "./preview.data.constants-Cdk-GUa5.js";
7
7
  const s = (n) => {
8
8
  const l = g();
9
9
  D(l);
@@ -1,8 +1,8 @@
1
- import { V as n, l as a } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { V as n, l as a } from "./Color.type.emb-CGyFSpIN.js";
2
2
  import { definePreview as r, defineComponent as i } from "@embeddable.com/react";
3
- import { D as s } from "./index-BBNdJ1lY.js";
4
- import { b as e } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as o } from "./preview.data.constants-DHMnpP3S.js";
3
+ import { D as s } from "./index-DPF51yD5.js";
4
+ import { b as e } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as o } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  const m = {
7
7
  name: "DonutChartPro",
8
8
  label: "Donut Chart",
@@ -1,8 +1,8 @@
1
- import { D as r } from "./index-B8Ssaj05.js";
2
- import { V as s, l as t } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { D as r } from "./index-BWJHhuBQ.js";
2
+ import { V as s, l as t } from "./Color.type.emb-CGyFSpIN.js";
3
3
  import { definePreview as o, defineComponent as i } from "@embeddable.com/react";
4
- import { b as e } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as n } from "./preview.data.constants-DHMnpP3S.js";
4
+ import { b as e } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as n } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  const l = {
7
7
  name: "DonutLabelChartPro",
8
8
  label: "Donut Label Chart",
@@ -1,6 +1,6 @@
1
- import { j as r, r as c, s as m, t as C, v as l } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { j as r, r as c, s as m, t as C, v as l } from "./Color.type.emb-CGyFSpIN.js";
2
2
  import { useTheme as p } from "@embeddable.com/react";
3
- import { a as u, I as x, i as j } from "./component.inputs.constants-DMsQ1KIy.js";
3
+ import { a as u, I as x, i as j } from "./component.inputs.constants-MAjey7Me.js";
4
4
  const f = "_editorCard_1q85m_1", h = {
5
5
  editorCard: f
6
6
  }, v = ({
@@ -30,4 +30,4 @@ const f = "_editorCard_1q85m_1", h = {
30
30
  export {
31
31
  v as E
32
32
  };
33
- //# sourceMappingURL=EditorCard-C79wijeo.js.map
33
+ //# sourceMappingURL=EditorCard-C8PKNLWT.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditorCard-C79wijeo.js","sources":["../src/components/editors/shared/EditorCard/EditorCard.tsx"],"sourcesContent":["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 '@embeddable.com/remarkable-ui';\nimport { IconAlertCircle } from '@tabler/icons-react';\n\nexport type EditorCardHeaderProps = {\n title?: string;\n description?: string;\n tooltip?: string;\n};\n\ntype EditorCardProps = {\n children: React.ReactNode;\n errorMessage?: string;\n} & EditorCardHeaderProps;\n\nexport const EditorCard: FC<EditorCardProps> = ({\n title,\n description,\n tooltip,\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.editorCard} {...props}>\n <CardHeader title={title} subtitle={description} tooltip={tooltip} />\n <CardContent>{getDisplay()}</CardContent>\n </Card>\n );\n};\n"],"names":["EditorCard","title","description","tooltip","children","errorMessage","props","theme","useTheme","i18nSetup","getDisplay","jsx","CardFeedback","IconAlertCircle","i18n","Card","styles","CardHeader","CardContent"],"mappings":";;;;;GAmBaA,IAAkC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAMG,IAAa,MACbL,IAEAM,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAMC;AAAA,MACN,OAAOC,EAAK,EAAE,oBAAoB;AAAA,MAClC,SAAST;AAAA,IAAA;AAAA,EAAA,IAKRD;AAGT,gCACGW,GAAA,EAAK,WAAWC,EAAO,YAAa,GAAGV,GACtC,UAAA;AAAA,IAAAK,gBAAAA,EAAAA,IAACM,GAAA,EAAW,OAAAhB,GAAc,UAAUC,GAAa,SAAAC,GAAkB;AAAA,IACnEQ,gBAAAA,EAAAA,IAACO,GAAA,EAAa,UAAAR,EAAA,EAAW,CAAE;AAAA,EAAA,GAC7B;AAEJ;"}
1
+ {"version":3,"file":"EditorCard-C8PKNLWT.js","sources":["../src/components/editors/shared/EditorCard/EditorCard.tsx"],"sourcesContent":["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 '@embeddable.com/remarkable-ui';\nimport { IconAlertCircle } from '@tabler/icons-react';\n\nexport type EditorCardHeaderProps = {\n title?: string;\n description?: string;\n tooltip?: string;\n};\n\ntype EditorCardProps = {\n children: React.ReactNode;\n errorMessage?: string;\n} & EditorCardHeaderProps;\n\nexport const EditorCard: FC<EditorCardProps> = ({\n title,\n description,\n tooltip,\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.editorCard} {...props}>\n <CardHeader title={title} subtitle={description} tooltip={tooltip} />\n <CardContent>{getDisplay()}</CardContent>\n </Card>\n );\n};\n"],"names":["EditorCard","title","description","tooltip","children","errorMessage","props","theme","useTheme","i18nSetup","getDisplay","jsx","CardFeedback","IconAlertCircle","i18n","Card","styles","CardHeader","CardContent"],"mappings":";;;;;GAmBaA,IAAkC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAMG,IAAa,MACbL,IAEAM,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAMC;AAAA,MACN,OAAOC,EAAK,EAAE,oBAAoB;AAAA,MAClC,SAAST;AAAA,IAAA;AAAA,EAAA,IAKRD;AAGT,gCACGW,GAAA,EAAK,WAAWC,EAAO,YAAa,GAAGV,GACtC,UAAA;AAAA,IAAAK,gBAAAA,EAAAA,IAACM,GAAA,EAAW,OAAAhB,GAAc,UAAUC,GAAa,SAAAC,GAAkB;AAAA,IACnEQ,gBAAAA,EAAAA,IAACO,GAAA,EAAa,UAAAR,EAAA,EAAW,CAAE;AAAA,EAAA,GAC7B;AAEJ;"}
@@ -1,7 +1,7 @@
1
- import { j as E, S as F } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { j as E, S as F } from "./Color.type.emb-CGyFSpIN.js";
2
2
  import { useMemo as g, useEffect as C } from "react";
3
3
  import { useTheme as G } from "@embeddable.com/react";
4
- import { f as N, e as d, a as w } from "./component.inputs.constants-DMsQ1KIy.js";
4
+ import { f as N, e as d, a as w } from "./component.inputs.constants-MAjey7Me.js";
5
5
  const D = 1, v = 100, x = () => N.map((e) => ({
6
6
  ...e,
7
7
  label: d(e.label)
@@ -101,4 +101,4 @@ const k = (e, t, r) => {
101
101
  export {
102
102
  K as G
103
103
  };
104
- //# sourceMappingURL=GranularitySelectField-BVQgGkjc.js.map
104
+ //# sourceMappingURL=GranularitySelectField-DUbr0dRq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GranularitySelectField-BVQgGkjc.js","sources":["../src/components/editors/shared/GranularitySelectField/GranularitySelectField.utils.ts","../src/components/editors/shared/GranularitySelectField/GranularitySelectField.tsx"],"sourcesContent":["import { SelectListOptionProps } from '@embeddable.com/remarkable-ui';\nimport { Granularity, TimeRange } from '@embeddable.com/core';\nimport {\n defaultGranularitySelectFieldOptions,\n TGranularityValue,\n} from '../../../../theme/defaults/defaults.GranularityOptions.constants';\nimport { resolveI18nString } from '../../../component.utils';\n\nconst DEFAULT_MIN_BUCKETS = 1;\nconst DEFAULT_MAX_BUCKETS = 100;\n\nexport const getGranularitySelectFieldOptions = (): SelectListOptionProps[] => {\n return defaultGranularitySelectFieldOptions.map((opt) => ({\n ...opt,\n label: resolveI18nString(opt.label),\n }));\n};\n\n// Convert possibly-string timestamps to Date safely.\nconst toDate = (d: unknown): Date | null => {\n if (d instanceof Date) return Number.isNaN(d.getTime()) ? null : d;\n if (typeof d === 'string' || typeof d === 'number') {\n const parsed = new Date(d);\n return Number.isNaN(parsed.getTime()) ? null : parsed;\n }\n return null;\n};\n\n// Inclusive end -> Exclusive end helper (only used for sub-day diffs)\nconst toExclusiveEnd = (endInclusive: Date): Date => new Date(endInclusive.getTime() + 1);\n\nconst bucketCountByUnit = (start: Date, endExclusive: Date, unitMs: number): number => {\n return (endExclusive.getTime() - start.getTime()) / unitMs;\n};\n\n// Bucket counting (treat end as INCLUSIVE)\nfunction bucketCount(start: Date, endInclusive: Date, granularity: Granularity): number {\n if (start > endInclusive) return 0;\n\n switch (granularity) {\n case 'second':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 1000);\n\n case 'minute':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 60 * 1000);\n\n case 'hour':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 60 * 60 * 1000);\n\n case 'day':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 24 * 60 * 60 * 1000);\n\n case 'week':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 7 * 24 * 60 * 60 * 1000);\n\n case 'month':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 28 * 24 * 60 * 60 * 1000); // shortest month\n\n case 'quarter':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 90 * 24 * 60 * 60 * 1000); // shortest quarter\n\n case 'year':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 365 * 24 * 60 * 60 * 1000); // shortest year\n }\n}\n\nconst isGranularityValid = (\n start: Date,\n endInclusive: Date,\n granularity: TGranularityValue,\n): boolean => {\n const buckets = bucketCount(start, endInclusive, granularity);\n return buckets >= DEFAULT_MIN_BUCKETS && buckets <= DEFAULT_MAX_BUCKETS;\n};\n\nexport const getAvailableGranularityOptionsFromTimeRange = (\n timeRange: TimeRange,\n allOptions: SelectListOptionProps[],\n): SelectListOptionProps[] => {\n if (!timeRange) return allOptions;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const from = toDate((timeRange as any)?.from);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const to = toDate((timeRange as any)?.to);\n\n // If we can’t parse range, don’t hide anything (fail open)\n if (!from || !to) return allOptions;\n\n const validSet = new Set<TGranularityValue>();\n\n for (const opt of allOptions) {\n const g = opt.value as TGranularityValue;\n if (isGranularityValid(from, to, g)) {\n validSet.add(g);\n }\n }\n\n // preserve original UI ordering\n return allOptions.filter((opt) => validSet.has(opt.value as TGranularityValue));\n};\n\nexport const getSafeSelection = (\n availableOptions: SelectListOptionProps[],\n granularity?: Granularity,\n): Granularity | undefined => {\n if (!granularity) {\n return undefined;\n }\n\n if (availableOptions.some((opt) => opt.value === granularity)) {\n return granularity;\n }\n\n const optionToSelect = availableOptions.length > 2 ? 1 : 0;\n\n return availableOptions[optionToSelect]?.value as Granularity;\n};\n","import { useEffect, useMemo } from 'react';\nimport { useTheme } from '@embeddable.com/react';\nimport { SingleSelectField, SingleSelectFieldProps } from '@embeddable.com/remarkable-ui';\nimport { Granularity, TimeRange } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport {\n getAvailableGranularityOptionsFromTimeRange,\n getGranularitySelectFieldOptions,\n getSafeSelection,\n} from './GranularitySelectField.utils';\nimport { TGranularityValue } from '../../../../theme/defaults/defaults.GranularityOptions.constants';\nimport { ChartCardHeaderProps } from '../../../charts/shared/ChartCard/ChartCard';\n\nexport type GranularitySelectFieldProps = {\n onChange: (newGranularity: Granularity) => void;\n primaryTimeRange?: TimeRange;\n granularity?: TGranularityValue;\n granularities?: TGranularityValue[];\n} & ChartCardHeaderProps &\n Pick<SingleSelectFieldProps, 'variant' | 'side' | 'align' | 'clearable' | 'placeholder'>;\n\nexport const GranularitySelectField = (props: GranularitySelectFieldProps) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const {\n granularity,\n granularities,\n clearable,\n placeholder,\n primaryTimeRange,\n variant,\n side,\n align,\n onChange,\n } = props;\n\n const granularitySelectFieldOptions = getGranularitySelectFieldOptions();\n\n const availableOptions = useMemo(() => {\n return getAvailableGranularityOptionsFromTimeRange(\n primaryTimeRange,\n granularitySelectFieldOptions.filter((opt) =>\n granularities?.includes(opt.value as TGranularityValue),\n ),\n );\n }, [primaryTimeRange, granularities]);\n\n useEffect(() => {\n if (granularity) {\n // Selected granularity is not available\n // Select 1st available option when number of options is =< 2\n // Select 2nd option to avoid when number of options > 2\n if (!availableOptions.some((opt) => opt.value === granularity)) {\n const newGranularity = getSafeSelection(availableOptions, granularity);\n if (newGranularity) {\n onChange(newGranularity as Granularity);\n }\n }\n }\n }, [availableOptions, granularity, onChange]);\n\n const safeValue = getSafeSelection(availableOptions, granularity);\n\n return (\n <SingleSelectField\n variant={variant}\n clearable={clearable}\n placeholder={placeholder}\n value={safeValue}\n options={availableOptions}\n onChange={(newValue) => onChange(newValue as Granularity)}\n avoidCollisions={false}\n side={side}\n align={align}\n />\n );\n};\n"],"names":["DEFAULT_MIN_BUCKETS","DEFAULT_MAX_BUCKETS","getGranularitySelectFieldOptions","defaultGranularitySelectFieldOptions","opt","resolveI18nString","toDate","d","parsed","toExclusiveEnd","endInclusive","bucketCountByUnit","start","endExclusive","unitMs","bucketCount","granularity","isGranularityValid","buckets","getAvailableGranularityOptionsFromTimeRange","timeRange","allOptions","from","to","validSet","g","getSafeSelection","availableOptions","optionToSelect","_a","GranularitySelectField","props","theme","useTheme","i18nSetup","granularities","clearable","placeholder","primaryTimeRange","variant","side","align","onChange","granularitySelectFieldOptions","useMemo","useEffect","newGranularity","safeValue","jsx","SingleSelectField","newValue"],"mappings":"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"}
1
+ {"version":3,"file":"GranularitySelectField-DUbr0dRq.js","sources":["../src/components/editors/shared/GranularitySelectField/GranularitySelectField.utils.ts","../src/components/editors/shared/GranularitySelectField/GranularitySelectField.tsx"],"sourcesContent":["import { SelectListOptionProps } from '@embeddable.com/remarkable-ui';\nimport { Granularity, TimeRange } from '@embeddable.com/core';\nimport {\n defaultGranularitySelectFieldOptions,\n TGranularityValue,\n} from '../../../../theme/defaults/defaults.GranularityOptions.constants';\nimport { resolveI18nString } from '../../../component.utils';\n\nconst DEFAULT_MIN_BUCKETS = 1;\nconst DEFAULT_MAX_BUCKETS = 100;\n\nexport const getGranularitySelectFieldOptions = (): SelectListOptionProps[] => {\n return defaultGranularitySelectFieldOptions.map((opt) => ({\n ...opt,\n label: resolveI18nString(opt.label),\n }));\n};\n\n// Convert possibly-string timestamps to Date safely.\nconst toDate = (d: unknown): Date | null => {\n if (d instanceof Date) return Number.isNaN(d.getTime()) ? null : d;\n if (typeof d === 'string' || typeof d === 'number') {\n const parsed = new Date(d);\n return Number.isNaN(parsed.getTime()) ? null : parsed;\n }\n return null;\n};\n\n// Inclusive end -> Exclusive end helper (only used for sub-day diffs)\nconst toExclusiveEnd = (endInclusive: Date): Date => new Date(endInclusive.getTime() + 1);\n\nconst bucketCountByUnit = (start: Date, endExclusive: Date, unitMs: number): number => {\n return (endExclusive.getTime() - start.getTime()) / unitMs;\n};\n\n// Bucket counting (treat end as INCLUSIVE)\nfunction bucketCount(start: Date, endInclusive: Date, granularity: Granularity): number {\n if (start > endInclusive) return 0;\n\n switch (granularity) {\n case 'second':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 1000);\n\n case 'minute':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 60 * 1000);\n\n case 'hour':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 60 * 60 * 1000);\n\n case 'day':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 24 * 60 * 60 * 1000);\n\n case 'week':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 7 * 24 * 60 * 60 * 1000);\n\n case 'month':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 28 * 24 * 60 * 60 * 1000); // shortest month\n\n case 'quarter':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 90 * 24 * 60 * 60 * 1000); // shortest quarter\n\n case 'year':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 365 * 24 * 60 * 60 * 1000); // shortest year\n }\n}\n\nconst isGranularityValid = (\n start: Date,\n endInclusive: Date,\n granularity: TGranularityValue,\n): boolean => {\n const buckets = bucketCount(start, endInclusive, granularity);\n return buckets >= DEFAULT_MIN_BUCKETS && buckets <= DEFAULT_MAX_BUCKETS;\n};\n\nexport const getAvailableGranularityOptionsFromTimeRange = (\n timeRange: TimeRange,\n allOptions: SelectListOptionProps[],\n): SelectListOptionProps[] => {\n if (!timeRange) return allOptions;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const from = toDate((timeRange as any)?.from);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const to = toDate((timeRange as any)?.to);\n\n // If we can’t parse range, don’t hide anything (fail open)\n if (!from || !to) return allOptions;\n\n const validSet = new Set<TGranularityValue>();\n\n for (const opt of allOptions) {\n const g = opt.value as TGranularityValue;\n if (isGranularityValid(from, to, g)) {\n validSet.add(g);\n }\n }\n\n // preserve original UI ordering\n return allOptions.filter((opt) => validSet.has(opt.value as TGranularityValue));\n};\n\nexport const getSafeSelection = (\n availableOptions: SelectListOptionProps[],\n granularity?: Granularity,\n): Granularity | undefined => {\n if (!granularity) {\n return undefined;\n }\n\n if (availableOptions.some((opt) => opt.value === granularity)) {\n return granularity;\n }\n\n const optionToSelect = availableOptions.length > 2 ? 1 : 0;\n\n return availableOptions[optionToSelect]?.value as Granularity;\n};\n","import { useEffect, useMemo } from 'react';\nimport { useTheme } from '@embeddable.com/react';\nimport { SingleSelectField, SingleSelectFieldProps } from '@embeddable.com/remarkable-ui';\nimport { Granularity, TimeRange } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport {\n getAvailableGranularityOptionsFromTimeRange,\n getGranularitySelectFieldOptions,\n getSafeSelection,\n} from './GranularitySelectField.utils';\nimport { TGranularityValue } from '../../../../theme/defaults/defaults.GranularityOptions.constants';\nimport { ChartCardHeaderProps } from '../../../charts/shared/ChartCard/ChartCard';\n\nexport type GranularitySelectFieldProps = {\n onChange: (newGranularity: Granularity) => void;\n primaryTimeRange?: TimeRange;\n granularity?: TGranularityValue;\n granularities?: TGranularityValue[];\n} & ChartCardHeaderProps &\n Pick<SingleSelectFieldProps, 'variant' | 'side' | 'align' | 'clearable' | 'placeholder'>;\n\nexport const GranularitySelectField = (props: GranularitySelectFieldProps) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const {\n granularity,\n granularities,\n clearable,\n placeholder,\n primaryTimeRange,\n variant,\n side,\n align,\n onChange,\n } = props;\n\n const granularitySelectFieldOptions = getGranularitySelectFieldOptions();\n\n const availableOptions = useMemo(() => {\n return getAvailableGranularityOptionsFromTimeRange(\n primaryTimeRange,\n granularitySelectFieldOptions.filter((opt) =>\n granularities?.includes(opt.value as TGranularityValue),\n ),\n );\n }, [primaryTimeRange, granularities]);\n\n useEffect(() => {\n if (granularity) {\n // Selected granularity is not available\n // Select 1st available option when number of options is =< 2\n // Select 2nd option to avoid when number of options > 2\n if (!availableOptions.some((opt) => opt.value === granularity)) {\n const newGranularity = getSafeSelection(availableOptions, granularity);\n if (newGranularity) {\n onChange(newGranularity as Granularity);\n }\n }\n }\n }, [availableOptions, granularity, onChange]);\n\n const safeValue = getSafeSelection(availableOptions, granularity);\n\n return (\n <SingleSelectField\n variant={variant}\n clearable={clearable}\n placeholder={placeholder}\n value={safeValue}\n options={availableOptions}\n onChange={(newValue) => onChange(newValue as Granularity)}\n avoidCollisions={false}\n side={side}\n align={align}\n />\n );\n};\n"],"names":["DEFAULT_MIN_BUCKETS","DEFAULT_MAX_BUCKETS","getGranularitySelectFieldOptions","defaultGranularitySelectFieldOptions","opt","resolveI18nString","toDate","d","parsed","toExclusiveEnd","endInclusive","bucketCountByUnit","start","endExclusive","unitMs","bucketCount","granularity","isGranularityValid","buckets","getAvailableGranularityOptionsFromTimeRange","timeRange","allOptions","from","to","validSet","g","getSafeSelection","availableOptions","optionToSelect","_a","GranularitySelectField","props","theme","useTheme","i18nSetup","granularities","clearable","placeholder","primaryTimeRange","variant","side","align","onChange","granularitySelectFieldOptions","useMemo","useEffect","newGranularity","safeValue","jsx","SingleSelectField","newValue"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { useTheme as y, definePreview as f, defineComponent as b } from "@embeddable.com/react";
2
- import { j as t, V as v } from "./Color.type.emb-Chs0ckWV.js";
3
- import { a as h, r as S, G as e, b as a } from "./component.inputs.constants-DMsQ1KIy.js";
4
- import { E as P } from "./EditorCard-C79wijeo.js";
5
- import { G as C } from "./GranularitySelectField-BVQgGkjc.js";
2
+ import { j as t, V as v } from "./Color.type.emb-CGyFSpIN.js";
3
+ import { a as h, r as S, G as e, b as a } from "./component.inputs.constants-MAjey7Me.js";
4
+ import { E as P } from "./EditorCard-C8PKNLWT.js";
5
+ import { G as C } from "./GranularitySelectField-DUbr0dRq.js";
6
6
  const l = (r) => {
7
7
  const n = y();
8
8
  h(n);
@@ -1,8 +1,8 @@
1
- import { g as a, l as i } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { g as a, l as i } from "./Color.type.emb-CGyFSpIN.js";
2
2
  import { definePreview as r, defineComponent as l } from "@embeddable.com/react";
3
- import { H as n } from "./index-CjU578lr.js";
4
- import { b as e } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as t } from "./preview.data.constants-DHMnpP3S.js";
3
+ import { H as n } from "./index-DjdyOpZx.js";
4
+ import { b as e } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as t } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  const m = {
7
7
  name: "HeatMapPro",
8
8
  label: "Heat Map",
@@ -1,4 +1,4 @@
1
- import { i as a } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { i as a } from "./Color.type.emb-CGyFSpIN.js";
2
2
  /**
3
3
  * @license @tabler/icons-react v3.36.1 - MIT
4
4
  *
@@ -9,4 +9,4 @@ const l = [["path", { d: "M16 2a1 1 0 0 1 .993 .883l.007 .117v1h1a3 3 0 0 1 2.99
9
9
  export {
10
10
  v as I
11
11
  };
12
- //# sourceMappingURL=IconCalendarFilled-CPoPNAfd.js.map
12
+ //# sourceMappingURL=IconCalendarFilled-BOHNn82C.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconCalendarFilled-CPoPNAfd.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconCalendarFilled.mjs"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.36.1 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M16 2a1 1 0 0 1 .993 .883l.007 .117v1h1a3 3 0 0 1 2.995 2.824l.005 .176v12a3 3 0 0 1 -2.824 2.995l-.176 .005h-12a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-12a3 3 0 0 1 2.824 -2.995l.176 -.005h1v-1a1 1 0 0 1 1.993 -.117l.007 .117v1h6v-1a1 1 0 0 1 1 -1zm3 7h-14v9.625c0 .705 .386 1.286 .883 1.366l.117 .009h12c.513 0 .936 -.53 .993 -1.215l.007 -.16v-9.625z\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 12a1 1 0 0 1 .993 .883l.007 .117v3a1 1 0 0 1 -1.993 .117l-.007 -.117v-2a1 1 0 0 1 -.117 -1.993l.117 -.007h1z\", \"key\": \"svg-1\" }]];\nconst IconCalendarFilled = createReactComponent(\"filled\", \"calendar-filled\", \"CalendarFilled\", __iconNode);\n\nexport { __iconNode, IconCalendarFilled as default };\n//# sourceMappingURL=IconCalendarFilled.mjs.map\n"],"names":["__iconNode","IconCalendarFilled","createReactComponent"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa,CAAC,CAAC,QAAQ,EAAE,GAAK,iWAAiW,KAAO,QAAO,CAAE,GAAG,CAAC,QAAQ,EAAE,GAAK,oHAAoH,KAAO,QAAO,CAAE,CAAC,GACviBC,IAAqBC,EAAqB,UAAU,mBAAmB,kBAAkBF,CAAU;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"IconCalendarFilled-BOHNn82C.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconCalendarFilled.mjs"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.36.1 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M16 2a1 1 0 0 1 .993 .883l.007 .117v1h1a3 3 0 0 1 2.995 2.824l.005 .176v12a3 3 0 0 1 -2.824 2.995l-.176 .005h-12a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-12a3 3 0 0 1 2.824 -2.995l.176 -.005h1v-1a1 1 0 0 1 1.993 -.117l.007 .117v1h6v-1a1 1 0 0 1 1 -1zm3 7h-14v9.625c0 .705 .386 1.286 .883 1.366l.117 .009h12c.513 0 .936 -.53 .993 -1.215l.007 -.16v-9.625z\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 12a1 1 0 0 1 .993 .883l.007 .117v3a1 1 0 0 1 -1.993 .117l-.007 -.117v-2a1 1 0 0 1 -.117 -1.993l.117 -.007h1z\", \"key\": \"svg-1\" }]];\nconst IconCalendarFilled = createReactComponent(\"filled\", \"calendar-filled\", \"CalendarFilled\", __iconNode);\n\nexport { __iconNode, IconCalendarFilled as default };\n//# sourceMappingURL=IconCalendarFilled.mjs.map\n"],"names":["__iconNode","IconCalendarFilled","createReactComponent"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa,CAAC,CAAC,QAAQ,EAAE,GAAK,iWAAiW,KAAO,QAAO,CAAE,GAAG,CAAC,QAAQ,EAAE,GAAK,oHAAoH,KAAO,QAAO,CAAE,CAAC,GACviBC,IAAqBC,EAAqB,UAAU,mBAAmB,kBAAkBF,CAAU;","x_google_ignoreList":[0]}
@@ -1,8 +1,8 @@
1
1
  import { definePreview as s, defineComponent as l } from "@embeddable.com/react";
2
- import { K as t } from "./index-BqknHuCo.js";
3
- import { l as i } from "./Color.type.emb-Chs0ckWV.js";
4
- import { b as a } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as o } from "./preview.data.constants-DHMnpP3S.js";
2
+ import { K as t } from "./index-KyBmwDIm.js";
3
+ import { l as i } from "./Color.type.emb-CGyFSpIN.js";
4
+ import { b as a } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as o } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  const p = {
7
7
  name: "KpiChartNumberComparisonPro",
8
8
  label: "Kpi Chart - Number Comparison",
@@ -1,8 +1,8 @@
1
1
  import { definePreview as o, defineComponent as s } from "@embeddable.com/react";
2
- import { K as a } from "./index-DDMj32YH.js";
3
- import { l as m } from "./Color.type.emb-Chs0ckWV.js";
4
- import { b as e } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as t } from "./preview.data.constants-DHMnpP3S.js";
2
+ import { K as a } from "./index-DHVSgVH0.js";
3
+ import { l as m } from "./Color.type.emb-CGyFSpIN.js";
4
+ import { b as e } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as t } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  const i = {
7
7
  name: "KpiChartNumberPro",
8
8
  label: "Kpi Chart - Number",
@@ -1,8 +1,8 @@
1
1
  import { definePreview as d, defineComponent as c } from "@embeddable.com/react";
2
- import { L as u } from "./index-CoDJGGqe.js";
3
- import { V as g, l as p } from "./Color.type.emb-Chs0ckWV.js";
4
- import { b as e, s as r } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as s } from "./preview.data.constants-DHMnpP3S.js";
2
+ import { L as u } from "./index-B4AV2TSq.js";
3
+ import { V as g, l as p } from "./Color.type.emb-CGyFSpIN.js";
4
+ import { b as e, s as r } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as s } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  import { g as y } from "./granularity.utils-CA504xa0.js";
7
7
  const D = {
8
8
  name: "LineChartComparisonDefaultPro",
@@ -1,8 +1,8 @@
1
1
  import { definePreview as m, defineComponent as u } from "@embeddable.com/react";
2
- import { L as r } from "./index-D01rdEuG.js";
3
- import { V as d, l as x } from "./Color.type.emb-Chs0ckWV.js";
4
- import { b as e, s as i } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as n } from "./preview.data.constants-DHMnpP3S.js";
2
+ import { L as r } from "./index-rMR9Yklq.js";
3
+ import { V as d, l as x } from "./Color.type.emb-CGyFSpIN.js";
4
+ import { b as e, s as i } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as n } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  import { g as p } from "./granularity.utils-CA504xa0.js";
7
7
  const c = {
8
8
  name: "LineChartDefaultPro",
@@ -1,8 +1,8 @@
1
1
  import { definePreview as m, defineComponent as u } from "@embeddable.com/react";
2
- import { L as s } from "./index-D00O-VX5.js";
3
- import { V as o, l as p } from "./Color.type.emb-Chs0ckWV.js";
4
- import { b as e } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as n } from "./preview.data.constants-DHMnpP3S.js";
2
+ import { L as s } from "./index-SaoYT_gT.js";
3
+ import { V as o, l as p } from "./Color.type.emb-CGyFSpIN.js";
4
+ import { b as e } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as n } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  import { g as d } from "./granularity.utils-CA504xa0.js";
7
7
  const g = {
8
8
  name: "LineChartGroupedPro",
@@ -1,9 +1,9 @@
1
- import { j as t, V as s } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { j as t, V as s } from "./Color.type.emb-CGyFSpIN.js";
2
2
  import { useTheme as g, definePreview as S, defineComponent as v } from "@embeddable.com/react";
3
- import { E as h } from "./EditorCard-C79wijeo.js";
4
- import { a as b, r as M, b as e } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { D as C } from "./DimensionAndMeasureSingleSelectField-BDdFGAJw.js";
6
- import { p as r } from "./preview.data.constants-DHMnpP3S.js";
3
+ import { E as h } from "./EditorCard-C8PKNLWT.js";
4
+ import { a as b, r as M, b as e } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { D as C } from "./DimensionAndMeasureSingleSelectField-BOWAqIok.js";
6
+ import { p as r } from "./preview.data.constants-Cdk-GUa5.js";
7
7
  const l = (a) => {
8
8
  const n = g();
9
9
  b(n);
@@ -1,8 +1,8 @@
1
1
  import { definePreview as d, defineComponent as u } from "@embeddable.com/react";
2
- import { V as l, l as m } from "./Color.type.emb-Chs0ckWV.js";
3
- import { M as p, a as o } from "./index-DlmQkA1e.js";
4
- import { b as a } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as t } from "./preview.data.constants-DHMnpP3S.js";
2
+ import { V as l, l as m } from "./Color.type.emb-CGyFSpIN.js";
3
+ import { M as p, a as o } from "./index-DH1xtNOE.js";
4
+ import { b as a } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as t } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  const c = {
7
7
  name: "MultiSelectFieldPro",
8
8
  label: "Multi Select Field",
@@ -1,8 +1,8 @@
1
- import { V as o, l as a } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { V as o, l as a } from "./Color.type.emb-CGyFSpIN.js";
2
2
  import { definePreview as r, defineComponent as n } from "@embeddable.com/react";
3
- import { P as t } from "./index-oVUlHLZC.js";
4
- import { b as e } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as i } from "./preview.data.constants-DHMnpP3S.js";
3
+ import { P as t } from "./index-y6eDhxWa.js";
4
+ import { b as e } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as i } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  const m = {
7
7
  name: "PieChartPro",
8
8
  label: "Pie Chart",
@@ -1,8 +1,8 @@
1
- import { l as a } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { l as a } from "./Color.type.emb-CGyFSpIN.js";
2
2
  import { definePreview as i, defineComponent as l } from "@embeddable.com/react";
3
- import { P as s } from "./index-BPkVCSJK.js";
4
- import { b as e, s as n } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as t } from "./preview.data.constants-DHMnpP3S.js";
3
+ import { P as s } from "./index-CRxhm_xI.js";
4
+ import { b as e, s as n } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as t } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  const m = {
7
7
  name: "PivotTablePro",
8
8
  label: "Pivot Table",
@@ -1,8 +1,8 @@
1
1
  import { definePreview as d, defineComponent as m } from "@embeddable.com/react";
2
- import { V as o, l as u } from "./Color.type.emb-Chs0ckWV.js";
3
- import { M as p, S as i } from "./index-BNh5_nFd.js";
4
- import { b as n } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as l } from "./preview.data.constants-DHMnpP3S.js";
2
+ import { V as o, l as u } from "./Color.type.emb-CGyFSpIN.js";
3
+ import { M as p, S as i } from "./index-Bg7ZniJ2.js";
4
+ import { b as n } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as l } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  const c = {
7
7
  name: "SingleSelectFieldPro",
8
8
  label: "Single Select Field",
@@ -1,8 +1,8 @@
1
- import { V as D, l, m as b } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { V as D, l, m as b } from "./Color.type.emb-CGyFSpIN.js";
2
2
  import { definePreview as w, defineComponent as M } from "@embeddable.com/react";
3
- import { T as p } from "./index-CzcB2c9U.js";
4
- import { b as i, s as r } from "./component.inputs.constants-DMsQ1KIy.js";
5
- import { p as s } from "./preview.data.constants-DHMnpP3S.js";
3
+ import { T as p } from "./index-BlaQtlpt.js";
4
+ import { b as i, s as r } from "./component.inputs.constants-MAjey7Me.js";
5
+ import { p as s } from "./preview.data.constants-Cdk-GUa5.js";
6
6
  const h = {
7
7
  name: "TableChartPaginated",
8
8
  label: "Table Chart - Paginated",
@@ -1,10 +1,10 @@
1
- import { j as N, U as se, V as ue, l as F, m as le } from "./Color.type.emb-Chs0ckWV.js";
1
+ import { j as N, U as se, V as ue, l as F, m as le } from "./Color.type.emb-CGyFSpIN.js";
2
2
  import { useTheme as ce, definePreview as fe, defineComponent as de } from "@embeddable.com/react";
3
- import { a as me, r as pe, i as ge, b as w, s as M } from "./component.inputs.constants-DMsQ1KIy.js";
4
- import { C as he } from "./ChartCard-OT66j3V3.js";
3
+ import { a as me, r as pe, i as ge, b as w, s as M } from "./component.inputs.constants-MAjey7Me.js";
4
+ import { C as he } from "./ChartCard-Be7mHyBp.js";
5
5
  import { useState as z, useRef as R, useEffect as k, useCallback as be } from "react";
6
- import { b as Ee, c as we } from "./tables.utils-C7oD63FD.js";
7
- import { p as O } from "./preview.data.constants-DHMnpP3S.js";
6
+ import { b as Ee, c as we } from "./tables.utils-CG1MXpGj.js";
7
+ import { p as O } from "./preview.data.constants-Cdk-GUa5.js";
8
8
  const P = 50, { getOwnPropertyNames: ye, getOwnPropertySymbols: je } = Object, { hasOwnProperty: Ce } = Object.prototype;
9
9
  function U(n, e) {
10
10
  return function(r, a, u) {
@@ -1,6 +1,6 @@
1
- import { d as D, C as M } from "./Color.type.emb-Chs0ckWV.js";
2
- import { r as O, g as T } from "./charts.utils-B9hA-AJt.js";
3
- import { g as f } from "./formatter.utils-wIg0a9Bk.js";
1
+ import { d as D, C as M } from "./Color.type.emb-CGyFSpIN.js";
2
+ import { r as O, g as T } from "./charts.utils-ypZsf-22.js";
3
+ import { g as f } from "./formatter.utils-BeLScsYW.js";
4
4
  import { a as C } from "./styles.utils-u6uj51UE.js";
5
5
  const _ = (s, d) => {
6
6
  var g;
@@ -151,4 +151,4 @@ export {
151
151
  _ as b,
152
152
  E as g
153
153
  };
154
- //# sourceMappingURL=bars.utils-DzcvCtRj.js.map
154
+ //# sourceMappingURL=bars.utils-Ccwx-tAf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bars.utils-DzcvCtRj.js","sources":["../src/components/charts/bars/bars.utils.ts"],"sourcesContent":["import { CUBE_DIMENSION_TYPE_TIME, DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../theme/theme.types';\nimport { remarkableTheme } from '../../../theme/theme.constants';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { groupTailAsOther } from '../charts.utils';\nimport { getDimensionMeasureColor } from '../../../theme/styles/styles.utils';\nimport { getChartColors } from '@embeddable.com/remarkable-ui';\nimport { Context } from 'chartjs-plugin-datalabels';\n\nexport const getBarStackedChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n },\n theme: Theme,\n): ChartData<'bar'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure } = props;\n\n const axis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))].sort();\n const groupDimensionName = `${groupDimension.name}${groupDimension.nativeType === CUBE_DIMENSION_TYPE_TIME && groupDimension.inputs?.granularity ? `.${groupDimension.inputs.granularity}` : ''}`;\n const groupBy = [...new Set(data.map((d) => d[groupDimensionName]))].filter((d) => d != null);\n\n const chartColors = getChartColors();\n const datasets = groupBy.map((groupByItem, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'background',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'border',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor,\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimensionName] === groupByItem && d[dimension.name] === axisItem,\n );\n return record ? Number(record[measure.name]) : 0;\n }),\n };\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getBarChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measures: Measure[];\n maxItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'bar'> => {\n if (!props.data) {\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n }\n\n const themeFormatter = getThemeFormatter(theme);\n const groupedData = groupTailAsOther(props.data, props.dimension, props.measures, props.maxItems);\n const chartColors = getChartColors();\n\n return {\n labels: groupedData.map((item) => {\n return item[props.dimension.name];\n }),\n datasets: props.measures.map((measure, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'background',\n value: measure.name,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'border',\n value: measure.name,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n data: groupedData.map((item) => item[measure.name] ?? 0),\n backgroundColor,\n borderColor,\n };\n }),\n };\n};\n\nconst getBarChartProDatalabelTotalFormatter = (\n context: Context,\n formatter: (value: number) => string,\n) => {\n const { datasets } = context.chart.data;\n const i = context.dataIndex;\n\n const total = datasets.reduce((sum, ds) => {\n const val = ds.data[i] as number;\n return sum + (val || 0);\n }, 0);\n\n return formatter(total);\n};\n\nexport const getBarChartProOptions = (\n options: {\n onBarClicked?: (args: {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n }) => void;\n measures: Measure[];\n dimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { onBarClicked, measures, dimension, horizontal, data } = options;\n\n const themeFormatter = getThemeFormatter(theme);\n return {\n plugins: {\n legend: { position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n labels: {\n total: {\n formatter: (_value: string | number, context: Context) =>\n getBarChartProDatalabelTotalFormatter(context, (value: number) =>\n themeFormatter.data(measures[0]!, value),\n ),\n },\n value: {\n formatter: (value: string | number, context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n tooltip: {\n callbacks: {\n title: (context) => {\n const label = context[0]?.label;\n return themeFormatter.data(dimension, label);\n },\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n return `${themeFormatter.data(dimension, context.dataset.label) || ''}: ${themeFormatter.data(measure, raw)}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n if (!horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n if (!data || !data.labels) return undefined;\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n },\n onClick: (_event, elements, chart) => {\n if (!onBarClicked) return;\n\n const element = elements[0];\n const axisDimensionValue = (element ? chart.data.labels![element.index] : null) as\n | string\n | null;\n const groupingDimensionValue = (\n element\n ? (chart.data.datasets[element.datasetIndex] as { rawLabel?: string | null })?.rawLabel\n : null\n ) as string | null;\n\n onBarClicked({\n axisDimensionValue,\n groupingDimensionValue,\n });\n },\n };\n};\n"],"names":["getBarStackedChartProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","axis","d","groupDimensionName","CUBE_DIMENSION_TYPE_TIME","_a","groupBy","chartColors","getChartColors","datasets","groupByItem","index","backgroundColor","getDimensionMeasureColor","borderColor","axisItem","record","getBarChartProData","remarkableTheme","groupedData","groupTailAsOther","item","getBarChartProDatalabelTotalFormatter","context","formatter","i","total","sum","ds","val","getBarChartProOptions","options","onBarClicked","measures","horizontal","_value","value","label","raw","_event","elements","chart","element","axisDimensionValue","groupingDimensionValue"],"mappings":"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"}
1
+ {"version":3,"file":"bars.utils-Ccwx-tAf.js","sources":["../src/components/charts/bars/bars.utils.ts"],"sourcesContent":["import { CUBE_DIMENSION_TYPE_TIME, DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../theme/theme.types';\nimport { remarkableTheme } from '../../../theme/theme.constants';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { groupTailAsOther } from '../charts.utils';\nimport { getDimensionMeasureColor } from '../../../theme/styles/styles.utils';\nimport { getChartColors } from '@embeddable.com/remarkable-ui';\nimport { Context } from 'chartjs-plugin-datalabels';\n\nexport const getBarStackedChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n },\n theme: Theme,\n): ChartData<'bar'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure } = props;\n\n const axis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))].sort();\n const groupDimensionName = `${groupDimension.name}${groupDimension.nativeType === CUBE_DIMENSION_TYPE_TIME && groupDimension.inputs?.granularity ? `.${groupDimension.inputs.granularity}` : ''}`;\n const groupBy = [...new Set(data.map((d) => d[groupDimensionName]))].filter((d) => d != null);\n\n const chartColors = getChartColors();\n const datasets = groupBy.map((groupByItem, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'background',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'border',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor,\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimensionName] === groupByItem && d[dimension.name] === axisItem,\n );\n return record ? Number(record[measure.name]) : 0;\n }),\n };\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getBarChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measures: Measure[];\n maxItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'bar'> => {\n if (!props.data) {\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n }\n\n const themeFormatter = getThemeFormatter(theme);\n const groupedData = groupTailAsOther(props.data, props.dimension, props.measures, props.maxItems);\n const chartColors = getChartColors();\n\n return {\n labels: groupedData.map((item) => {\n return item[props.dimension.name];\n }),\n datasets: props.measures.map((measure, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'background',\n value: measure.name,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'border',\n value: measure.name,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n data: groupedData.map((item) => item[measure.name] ?? 0),\n backgroundColor,\n borderColor,\n };\n }),\n };\n};\n\nconst getBarChartProDatalabelTotalFormatter = (\n context: Context,\n formatter: (value: number) => string,\n) => {\n const { datasets } = context.chart.data;\n const i = context.dataIndex;\n\n const total = datasets.reduce((sum, ds) => {\n const val = ds.data[i] as number;\n return sum + (val || 0);\n }, 0);\n\n return formatter(total);\n};\n\nexport const getBarChartProOptions = (\n options: {\n onBarClicked?: (args: {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n }) => void;\n measures: Measure[];\n dimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { onBarClicked, measures, dimension, horizontal, data } = options;\n\n const themeFormatter = getThemeFormatter(theme);\n return {\n plugins: {\n legend: { position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n labels: {\n total: {\n formatter: (_value: string | number, context: Context) =>\n getBarChartProDatalabelTotalFormatter(context, (value: number) =>\n themeFormatter.data(measures[0]!, value),\n ),\n },\n value: {\n formatter: (value: string | number, context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n tooltip: {\n callbacks: {\n title: (context) => {\n const label = context[0]?.label;\n return themeFormatter.data(dimension, label);\n },\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n return `${themeFormatter.data(dimension, context.dataset.label) || ''}: ${themeFormatter.data(measure, raw)}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n if (!horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n if (!data || !data.labels) return undefined;\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n },\n onClick: (_event, elements, chart) => {\n if (!onBarClicked) return;\n\n const element = elements[0];\n const axisDimensionValue = (element ? chart.data.labels![element.index] : null) as\n | string\n | null;\n const groupingDimensionValue = (\n element\n ? (chart.data.datasets[element.datasetIndex] as { rawLabel?: string | null })?.rawLabel\n : null\n ) as string | null;\n\n onBarClicked({\n axisDimensionValue,\n groupingDimensionValue,\n });\n },\n };\n};\n"],"names":["getBarStackedChartProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","axis","d","groupDimensionName","CUBE_DIMENSION_TYPE_TIME","_a","groupBy","chartColors","getChartColors","datasets","groupByItem","index","backgroundColor","getDimensionMeasureColor","borderColor","axisItem","record","getBarChartProData","remarkableTheme","groupedData","groupTailAsOther","item","getBarChartProDatalabelTotalFormatter","context","formatter","i","total","sum","ds","val","getBarChartProOptions","options","onBarClicked","measures","horizontal","_value","value","label","raw","_event","elements","chart","element","axisDimensionValue","groupingDimensionValue"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { _ as Us } from "./Color.type.emb-Chs0ckWV.js";
2
- import { a as Ki, i as za } from "./component.inputs.constants-DMsQ1KIy.js";
1
+ import { _ as Us } from "./Color.type.emb-CGyFSpIN.js";
2
+ import { a as Ki, i as za } from "./component.inputs.constants-MAjey7Me.js";
3
3
  import { d as Re, u as ji } from "./utc-ZJfc90oL.js";
4
4
  import { i as qi, q as Ji } from "./quarterOfYear-Dy3NbBBT.js";
5
5
  import { g as Ws } from "./_commonjsHelpers-C6fGbg64.js";
6
- import { g as zs } from "./formatter.utils-wIg0a9Bk.js";
6
+ import { g as zs } from "./formatter.utils-BeLScsYW.js";
7
7
  var Hs = {
8
8
  "--em-core-border-radius--000": "0px",
9
9
  "--em-core-border-radius--050": "2px",
@@ -17723,4 +17723,4 @@ export {
17723
17723
  tx as g,
17724
17724
  ex as r
17725
17725
  };
17726
- //# sourceMappingURL=charts.utils-B9hA-AJt.js.map
17726
+ //# sourceMappingURL=charts.utils-ypZsf-22.js.map