@embeddable.com/remarkable-pro 0.3.15 → 0.3.16

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 (146) hide show
  1. package/dist/AreaChartPro.js +1 -1
  2. package/dist/BarChartDefaultHorizontalPro.js +1 -1
  3. package/dist/BarChartDefaultPro.js +1 -1
  4. package/dist/BarChartGroupedHorizontalPro.js +1 -1
  5. package/dist/BarChartGroupedPro.js +1 -1
  6. package/dist/BarChartStackedHorizontalPro.js +1 -1
  7. package/dist/BarChartStackedPro.js +1 -1
  8. package/dist/BarLineChartPro.js +1 -1
  9. package/dist/BubbleChartPro.js +1 -1
  10. package/dist/{ChartCard-C4MndGoP.js → ChartCard-C72rw1Ya.js} +2 -2
  11. package/dist/{ChartCard-C4MndGoP.js.map → ChartCard-C72rw1Ya.js.map} +1 -1
  12. package/dist/ComparisonPeriodSelectFieldPro.js +1 -1
  13. package/dist/DateRangePickerCustomPro.js +1 -1
  14. package/dist/DateRangeSelectFieldPro.js +1 -1
  15. package/dist/{DimensionAndMeasureSingleSelectField-YgZIeOad.js → DimensionAndMeasureSingleSelectField-D2dx-AOV.js} +2 -2
  16. package/dist/{DimensionAndMeasureSingleSelectField-YgZIeOad.js.map → DimensionAndMeasureSingleSelectField-D2dx-AOV.js.map} +1 -1
  17. package/dist/DimensionMeasureMultiSelectFieldPro.js +1 -1
  18. package/dist/DimensionSingleSelectFieldPro.js +1 -1
  19. package/dist/DonutChartPro.js +1 -1
  20. package/dist/DonutLabelChartPro.js +1 -1
  21. package/dist/{EditorCard-BVtdJ04L.js → EditorCard-C5VwkYTO.js} +2 -2
  22. package/dist/{EditorCard-BVtdJ04L.js.map → EditorCard-C5VwkYTO.js.map} +1 -1
  23. package/dist/FilterBuilderPro.js +1 -1
  24. package/dist/{GranularitySelectField-DvrniLCq.js → GranularitySelectField-B7bPGvIp.js} +2 -2
  25. package/dist/{GranularitySelectField-DvrniLCq.js.map → GranularitySelectField-B7bPGvIp.js.map} +1 -1
  26. package/dist/GranularitySelectFieldPro.js +1 -1
  27. package/dist/HeatMapPro.js +1 -1
  28. package/dist/KpiChartNumberComparisonPro.js +1 -1
  29. package/dist/KpiChartNumberPro.js +1 -1
  30. package/dist/LineChartComparisonDefaultPro.js +1 -1
  31. package/dist/LineChartComparisonWithKpiTabsPro.js +1 -1
  32. package/dist/LineChartDefaultPro.js +1 -1
  33. package/dist/LineChartGroupedPro.js +1 -1
  34. package/dist/LineChartWithKpiTabsPro.js +1 -1
  35. package/dist/MarkdownPro.js +1 -1
  36. package/dist/MeasureMultiSelectFieldPro.js +1 -1
  37. package/dist/MeasureSingleSelectFieldPro.js +1 -1
  38. package/dist/MultiSelectFieldPro.js +1 -1
  39. package/dist/PieChartPro.js +1 -1
  40. package/dist/PivotTablePro.js +1 -1
  41. package/dist/ScatterChartPro.js +1 -1
  42. package/dist/SingleSelectFieldPro.js +1 -1
  43. package/dist/TableChartPaginated.js +1 -1
  44. package/dist/TableScrollable.js +1 -1
  45. package/dist/TextFieldPro.js +1 -1
  46. package/dist/{bars.loadData.utils-AVsNPNMZ.js → bars.loadData.utils-qHyrp6mu.js} +2 -2
  47. package/dist/{bars.loadData.utils-AVsNPNMZ.js.map → bars.loadData.utils-qHyrp6mu.js.map} +1 -1
  48. package/dist/{bars.utils-ZwBz0eSf.js → bars.utils-4Vu_6Vwr.js} +4 -4
  49. package/dist/{bars.utils-ZwBz0eSf.js.map → bars.utils-4Vu_6Vwr.js.map} +1 -1
  50. package/dist/{charts.utils-DL-pzVG-.js → charts.utils-Czfl880z.js} +2 -2
  51. package/dist/{charts.utils-DL-pzVG-.js.map → charts.utils-Czfl880z.js.map} +1 -1
  52. package/dist/{component.utils-oQMZT7TK.js → component.utils-B7tQ4cCT.js} +4 -4
  53. package/dist/{component.utils-oQMZT7TK.js.map → component.utils-B7tQ4cCT.js.map} +1 -1
  54. package/dist/components/component.utils.d.ts.map +1 -1
  55. package/dist/{definition-CRvMDjRB.js → definition-B6NctClA.js} +4 -4
  56. package/dist/{definition-CRvMDjRB.js.map → definition-B6NctClA.js.map} +1 -1
  57. package/dist/{definition-CaV4qPYQ.js → definition-B9eClP6I.js} +5 -5
  58. package/dist/{definition-CaV4qPYQ.js.map → definition-B9eClP6I.js.map} +1 -1
  59. package/dist/{definition-Deq5jKVy.js → definition-BQZkjNaI.js} +5 -5
  60. package/dist/{definition-Deq5jKVy.js.map → definition-BQZkjNaI.js.map} +1 -1
  61. package/dist/{definition-D_ryo6q7.js → definition-BSQcRRwQ.js} +3 -3
  62. package/dist/{definition-D_ryo6q7.js.map → definition-BSQcRRwQ.js.map} +1 -1
  63. package/dist/{definition-DyCXYPmd.js → definition-Bid9fwVS.js} +4 -4
  64. package/dist/{definition-DyCXYPmd.js.map → definition-Bid9fwVS.js.map} +1 -1
  65. package/dist/{definition-BtNKq3Zv.js → definition-BjdbEoCH.js} +7 -7
  66. package/dist/{definition-BtNKq3Zv.js.map → definition-BjdbEoCH.js.map} +1 -1
  67. package/dist/{definition-DlGVdRtS.js → definition-BnZSlj8x.js} +4 -4
  68. package/dist/{definition-DlGVdRtS.js.map → definition-BnZSlj8x.js.map} +1 -1
  69. package/dist/{definition-So9tZlMi.js → definition-BopXgBSc.js} +6 -6
  70. package/dist/{definition-So9tZlMi.js.map → definition-BopXgBSc.js.map} +1 -1
  71. package/dist/{definition-atfrMsXT.js → definition-Bsh6Toao.js} +7 -7
  72. package/dist/{definition-atfrMsXT.js.map → definition-Bsh6Toao.js.map} +1 -1
  73. package/dist/{definition-CBUbQZvZ.js → definition-C0VyzJWX.js} +7 -7
  74. package/dist/{definition-CBUbQZvZ.js.map → definition-C0VyzJWX.js.map} +1 -1
  75. package/dist/{definition-_zJ7wlgc.js → definition-C6YKs0rc.js} +3 -3
  76. package/dist/{definition-_zJ7wlgc.js.map → definition-C6YKs0rc.js.map} +1 -1
  77. package/dist/{definition-DoM-A1nT.js → definition-CF-FBr4a.js} +4 -4
  78. package/dist/{definition-DoM-A1nT.js.map → definition-CF-FBr4a.js.map} +1 -1
  79. package/dist/{definition-DQeqVfK6.js → definition-CS_f89ly.js} +4 -4
  80. package/dist/{definition-DQeqVfK6.js.map → definition-CS_f89ly.js.map} +1 -1
  81. package/dist/{definition-CSA_9QtD.js → definition-CfJRkeoi.js} +4 -4
  82. package/dist/{definition-CSA_9QtD.js.map → definition-CfJRkeoi.js.map} +1 -1
  83. package/dist/{definition-Dw72pLmB.js → definition-CifvR_ce.js} +4 -4
  84. package/dist/{definition-Dw72pLmB.js.map → definition-CifvR_ce.js.map} +1 -1
  85. package/dist/{definition-DOZHDhbP.js → definition-Cj20ajOq.js} +4 -4
  86. package/dist/{definition-DOZHDhbP.js.map → definition-Cj20ajOq.js.map} +1 -1
  87. package/dist/{definition-C3aFGWw-.js → definition-CjdvxkC_.js} +3 -3
  88. package/dist/{definition-C3aFGWw-.js.map → definition-CjdvxkC_.js.map} +1 -1
  89. package/dist/{definition-DCvpurgC.js → definition-CoEAmgPz.js} +7 -7
  90. package/dist/{definition-DCvpurgC.js.map → definition-CoEAmgPz.js.map} +1 -1
  91. package/dist/{definition-rgPq6VPL.js → definition-D-7fCnK5.js} +3 -3
  92. package/dist/{definition-rgPq6VPL.js.map → definition-D-7fCnK5.js.map} +1 -1
  93. package/dist/{definition-DaGw0pa5.js → definition-D46_JOLS.js} +2 -2
  94. package/dist/{definition-DaGw0pa5.js.map → definition-D46_JOLS.js.map} +1 -1
  95. package/dist/{definition-DVzvnrBf.js → definition-D5V_UP9I.js} +7 -7
  96. package/dist/{definition-DVzvnrBf.js.map → definition-D5V_UP9I.js.map} +1 -1
  97. package/dist/{definition-DZ4_Wg8R.js → definition-DJOxJUDL.js} +4 -4
  98. package/dist/{definition-DZ4_Wg8R.js.map → definition-DJOxJUDL.js.map} +1 -1
  99. package/dist/{definition-DKM3Mx4Z.js → definition-DV3XAemq.js} +6 -6
  100. package/dist/{definition-DKM3Mx4Z.js.map → definition-DV3XAemq.js.map} +1 -1
  101. package/dist/{definition-BcsHRDkv.js → definition-DZSXXY3i.js} +5 -5
  102. package/dist/{definition-BcsHRDkv.js.map → definition-DZSXXY3i.js.map} +1 -1
  103. package/dist/{definition-DuNVn_Zv.js → definition-Dj2fOcLJ.js} +4 -4
  104. package/dist/{definition-DuNVn_Zv.js.map → definition-Dj2fOcLJ.js.map} +1 -1
  105. package/dist/{definition-BqQJmkId.js → definition-DnLCl6jI.js} +4 -4
  106. package/dist/{definition-BqQJmkId.js.map → definition-DnLCl6jI.js.map} +1 -1
  107. package/dist/{definition-BPosaTH4.js → definition-DrRXfegd.js} +4 -4
  108. package/dist/{definition-BPosaTH4.js.map → definition-DrRXfegd.js.map} +1 -1
  109. package/dist/{definition-Du-gOi0o.js → definition-Dvm9tY5Y.js} +7 -7
  110. package/dist/{definition-Du-gOi0o.js.map → definition-Dvm9tY5Y.js.map} +1 -1
  111. package/dist/{definition-Bco3wav-.js → definition-Dw4388wt.js} +4 -4
  112. package/dist/{definition-Bco3wav-.js.map → definition-Dw4388wt.js.map} +1 -1
  113. package/dist/{definition-CnCQc4Ds.js → definition-GY2DJJ7u.js} +7 -7
  114. package/dist/{definition-CnCQc4Ds.js.map → definition-GY2DJJ7u.js.map} +1 -1
  115. package/dist/{definition-BshhnH_Q.js → definition-KHcLAKES.js} +6 -6
  116. package/dist/{definition-BshhnH_Q.js.map → definition-KHcLAKES.js.map} +1 -1
  117. package/dist/{definition-C2k5NhdG.js → definition-R6w8d-nt.js} +4 -4
  118. package/dist/{definition-C2k5NhdG.js.map → definition-R6w8d-nt.js.map} +1 -1
  119. package/dist/{definition-NVrrC9Aq.js → definition-jPJunkuw.js} +5 -5
  120. package/dist/{definition-NVrrC9Aq.js.map → definition-jPJunkuw.js.map} +1 -1
  121. package/dist/{definition-BXJSlAhg.js → definition-m71Whuy4.js} +4 -4
  122. package/dist/{definition-BXJSlAhg.js.map → definition-m71Whuy4.js.map} +1 -1
  123. package/dist/{definition-DoSFbUU_.js → definition-tN-Rlh_R.js} +7 -7
  124. package/dist/{definition-DoSFbUU_.js.map → definition-tN-Rlh_R.js.map} +1 -1
  125. package/dist/{definition-J-vD12mT.js → definition-wZGQYPSO.js} +4 -4
  126. package/dist/{definition-J-vD12mT.js.map → definition-wZGQYPSO.js.map} +1 -1
  127. package/dist/{definition-rnayY6ub.js → definition-zCln3iQl.js} +6 -6
  128. package/dist/{definition-rnayY6ub.js.map → definition-zCln3iQl.js.map} +1 -1
  129. package/dist/{dimensionsAndMeasures.utils-D6wqLAjd.js → dimensionsAndMeasures.utils-mGymNq3G.js} +2 -2
  130. package/dist/{dimensionsAndMeasures.utils-D6wqLAjd.js.map → dimensionsAndMeasures.utils-mGymNq3G.js.map} +1 -1
  131. package/dist/embeddable-components.json +56 -56
  132. package/dist/embeddable-theme-0137e.js +3 -3
  133. package/dist/{formatter.utils-CNK7r1DQ.js → formatter.utils-Wcc93V-N.js} +2 -2
  134. package/dist/{formatter.utils-CNK7r1DQ.js.map → formatter.utils-Wcc93V-N.js.map} +1 -1
  135. package/dist/{granularity.utils-BreNR3T1.js → granularity.utils-BidDuinr.js} +2 -2
  136. package/dist/{granularity.utils-BreNR3T1.js.map → granularity.utils-BidDuinr.js.map} +1 -1
  137. package/dist/index.js +51 -51
  138. package/dist/{pies.utils-DAWVYwtx.js → pies.utils-eVQYLyQD.js} +5 -5
  139. package/dist/{pies.utils-DAWVYwtx.js.map → pies.utils-eVQYLyQD.js.map} +1 -1
  140. package/dist/{tables.utils-BcfzBmXp.js → tables.utils-yPdd41i1.js} +2 -2
  141. package/dist/{tables.utils-BcfzBmXp.js.map → tables.utils-yPdd41i1.js.map} +1 -1
  142. package/dist/{theme.constants-CVAIAY_P.js → theme.constants-DrhAyRBp.js} +3 -3
  143. package/dist/{theme.constants-CVAIAY_P.js.map → theme.constants-DrhAyRBp.js.map} +1 -1
  144. package/dist/{timeRange.utils-kK6r26ZO.js → timeRange.utils-rEuTaidc.js} +2 -2
  145. package/dist/{timeRange.utils-kK6r26ZO.js.map → timeRange.utils-rEuTaidc.js.map} +1 -1
  146. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { a as e } from "./definition-BcsHRDkv.js";
2
+ import { a as e } from "./definition-DZSXXY3i.js";
3
3
  const m = e.preview, r = e.meta, n = o(e.Component, r, e.config);
4
4
  export {
5
5
  n as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as t } from "@embeddable.com/react";
2
- import { b as o } from "./definition-So9tZlMi.js";
2
+ import { b as o } from "./definition-BopXgBSc.js";
3
3
  const n = o.preview, e = o.meta, m = t(
4
4
  o.Component,
5
5
  e,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { b as e } from "./definition-rnayY6ub.js";
2
+ import { b as e } from "./definition-zCln3iQl.js";
3
3
  const m = e.preview, t = e.meta, n = o(e.Component, t, e.config);
4
4
  export {
5
5
  n as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as r } from "@embeddable.com/react";
2
- import { b as o } from "./definition-CnCQc4Ds.js";
2
+ import { b as o } from "./definition-GY2DJJ7u.js";
3
3
  const n = o.preview, e = o.meta, m = r(
4
4
  o.Component,
5
5
  e,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as e } from "@embeddable.com/react";
2
- import { b as o } from "./definition-DCvpurgC.js";
2
+ import { b as o } from "./definition-CoEAmgPz.js";
3
3
  const m = o.preview, r = o.meta, n = e(o.Component, r, o.config);
4
4
  export {
5
5
  n as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as t } from "@embeddable.com/react";
2
- import { b as o } from "./definition-DoSFbUU_.js";
2
+ import { b as o } from "./definition-tN-Rlh_R.js";
3
3
  const n = o.preview, e = o.meta, m = t(
4
4
  o.Component,
5
5
  e,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { b as e } from "./definition-BtNKq3Zv.js";
2
+ import { b as e } from "./definition-BjdbEoCH.js";
3
3
  const m = e.preview, t = e.meta, n = o(e.Component, t, e.config);
4
4
  export {
5
5
  n as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { b as e } from "./definition-Du-gOi0o.js";
2
+ import { b as e } from "./definition-Dvm9tY5Y.js";
3
3
  const a = e.preview, r = e.meta, m = o(e.Component, r, e.config);
4
4
  export {
5
5
  m as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { b as e } from "./definition-DuNVn_Zv.js";
2
+ import { b as e } from "./definition-Dj2fOcLJ.js";
3
3
  const n = e.preview, t = e.meta, a = o(e.Component, t, e.config);
4
4
  export {
5
5
  a as default,
@@ -1,7 +1,7 @@
1
1
  import { g as S, j as t, I as b, D as N, S as k, h as L, A as H, C as w, i as O, f as _, k as A, n as F, o as j } from "./index-BCG-LNTx.js";
2
2
  import v, { useRef as T } from "react";
3
3
  import { useTheme as y } from "@embeddable.com/react";
4
- import { i as I, a as C, r as z } from "./component.utils-oQMZT7TK.js";
4
+ import { i as I, a as C, r as z } from "./component.utils-B7tQ4cCT.js";
5
5
  import { I as P } from "./IconAlertCircle-KhBScmyp.js";
6
6
  /**
7
7
  * @license @tabler/icons-react v3.44.0 - MIT
@@ -116,4 +116,4 @@ export {
116
116
  Y as C,
117
117
  nt as a
118
118
  };
119
- //# sourceMappingURL=ChartCard-C4MndGoP.js.map
119
+ //# sourceMappingURL=ChartCard-C72rw1Ya.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartCard-C4MndGoP.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconDotsVertical.mjs","../src/components/charts/shared/ChartCard/ChartCardLoading/ChartCardLoading.tsx","../src/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.tsx","../src/components/charts/shared/ChartCard/ChartCard.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.44.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\": \"M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M11 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M11 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-2\" }]];\nconst IconDotsVertical = createReactComponent(\"outline\", \"dots-vertical\", \"DotsVertical\", __iconNode);\n\nexport { __iconNode, IconDotsVertical as default };\n//# sourceMappingURL=IconDotsVertical.mjs.map\n","import { IconLoader2 } from '@tabler/icons-react';\nimport styles from './ChartCardLoading.module.css';\n\nexport const ChartCardLoading = () => <IconLoader2 className={styles.loading} />;\n","import { IconDotsVertical } from '@tabler/icons-react';\nimport React from 'react';\nimport { useTheme } from '@embeddable.com/react';\nimport { ChartCardLoading } from '../ChartCardLoading/ChartCardLoading';\nimport { i18n, i18nSetup } from '../../../../../theme/i18n/i18n';\nimport { Theme } from '../../../../../theme/theme.types';\nimport {\n Dropdown,\n ActionIcon,\n SelectFieldContent,\n SelectListOption,\n} from '@embeddable.com/remarkable-ui';\nimport styles from './ChartCardMenuPro.module.css';\nimport { ChartCardMenuOptionOnClickProps } from '../../../../../theme/defaults/defaults.ChartCardMenu.constants';\n\ntype InlineSvgFromDataProps = React.HTMLAttributes<HTMLSpanElement> & {\n src: string;\n};\n\nexport function InlineSvgFromData({ src, className, ...rest }: InlineSvgFromDataProps) {\n // Remove prefix and URL-decode the SVG markup\n const svgMarkup = decodeURIComponent(src.replace(/^data:image\\/svg\\+xml,/, ''));\n\n return <div className={className} {...rest} dangerouslySetInnerHTML={{ __html: svgMarkup }} />;\n}\n\ntype ChartCardMenuProProps = Omit<ChartCardMenuOptionOnClickProps, 'theme'> & {\n menuOptions?: string[];\n};\n\nexport const ChartCardMenuPro: React.FC<ChartCardMenuProProps> = (props) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const [isLoading, setIsLoading] = React.useState(false);\n\n const allOptions = theme.defaults.chartMenuOptions ?? [];\n const { menuOptions } = props;\n const options = menuOptions\n ? allOptions.filter((option) => menuOptions.includes(option.value))\n : allOptions;\n\n if (options.length === 0) {\n return null;\n }\n\n const startAction = (onClick: () => void | Promise<void>) => {\n setTimeout(() => {\n Promise.resolve(onClick()).finally(() => setIsLoading(false));\n }, 100);\n };\n\n const handleExport = (onClick: (props: ChartCardMenuOptionOnClickProps) => void) => {\n setIsLoading(true);\n if (props.onCustomDownload) {\n props.onCustomDownload((args) => startAction(() => onClick(args)));\n return;\n }\n startAction(() => onClick({ ...props, theme }));\n };\n\n return (\n <Dropdown\n side=\"bottom\"\n align=\"end\"\n triggerComponent={isLoading ? <ChartCardLoading /> : <ActionIcon icon={IconDotsVertical} />}\n >\n <SelectFieldContent className={styles.list} autoFocus>\n {options.map((option, index) => {\n const label = i18n.t(option.labelKey);\n\n return (\n <SelectListOption\n key={index}\n label={label}\n onClick={() => handleExport(option.onClick)}\n startIcon={option.iconSrc ? <InlineSvgFromData src={option.iconSrc} /> : undefined}\n />\n );\n })}\n </SelectFieldContent>\n </Dropdown>\n );\n};\n","import React, { CSSProperties, useRef } from 'react';\nimport { IconAlertCircle } from '@tabler/icons-react';\nimport {\n Card,\n CardContent,\n CardFeedback,\n CardHeader,\n Skeleton,\n} from '@embeddable.com/remarkable-ui';\nimport styles from './ChartCard.module.css';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { useTheme } from '@embeddable.com/react';\nimport { ChartCardLoading } from './ChartCardLoading/ChartCardLoading';\nimport { ChartCardMenuPro } from './ChartCardMenuPro/ChartCardMenuPro';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport clsx from 'clsx';\nimport { ChartCardMenuOptionOnClickProps } from '../../../../theme/defaults/defaults.ChartCardMenu.constants';\n\nexport type ChartCardHeaderProps = {\n title?: string;\n description?: string;\n tooltip?: string;\n hideMenu?: boolean;\n menuOptions?: (string | unknown)[];\n};\n\nexport const asChartCardHeaderProps = <T extends ChartCardHeaderProps>(\n props: T,\n): Omit<ChartCardHeaderProps, 'menuOptions'> & { menuOptions?: string[] } => {\n const { title, description, tooltip, hideMenu, menuOptions } = props;\n return {\n title,\n description,\n tooltip,\n hideMenu,\n menuOptions: menuOptions as string[] | undefined,\n };\n};\n\ntype ChartCardProps = {\n children: React.ReactNode;\n data: DataResponse;\n errorMessage?: string;\n style?: CSSProperties;\n dimensionsAndMeasures?: (Dimension | Measure)[];\n onCustomDownload?: (props: (props: ChartCardMenuOptionOnClickProps) => void) => void;\n} & Omit<ChartCardHeaderProps, 'menuOptions'> & { menuOptions?: string[] };\n\nexport const ChartCard = React.forwardRef<HTMLDivElement, ChartCardProps>((props, ref) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, tooltip } = resolveI18nProps(props);\n const {\n children,\n data,\n errorMessage,\n dimensionsAndMeasures = [],\n hideMenu = false,\n onCustomDownload,\n menuOptions,\n } = props;\n\n const chartRef = useRef<HTMLDivElement>(null);\n\n const hasData = Boolean(data?.data && data.data?.length > 0);\n\n const isLoading = !data || data?.isLoading;\n\n const getDisplay = () => {\n if (isLoading && !hasData) {\n return <Skeleton />;\n }\n\n if (errorMessage) {\n return (\n <CardFeedback\n variant=\"error\"\n icon={IconAlertCircle}\n title={i18n.t('charts.errorTitle')}\n message={errorMessage}\n />\n );\n }\n\n if (!hasData) {\n return (\n <CardFeedback title={i18n.t('charts.emptyTitle')} message={i18n.t('charts.emptyMessage')} />\n );\n }\n\n return children;\n };\n\n return (\n <Card className={styles.chartCard}>\n {hideMenu ? null : (\n <>\n <div className={styles.chartCardHeader}>\n <CardHeader title={title} subtitle={description} tooltip={tooltip} />\n </div>\n <div className={styles.chartCardRightContent}>\n <div className={clsx(!isLoading && styles.hidden)}>\n <ChartCardLoading />\n </div>\n <div className={clsx(isLoading && styles.hidden)}>\n <ChartCardMenuPro\n title={title}\n containerRef={chartRef}\n data={data?.data}\n dimensionsAndMeasures={dimensionsAndMeasures}\n onCustomDownload={onCustomDownload}\n menuOptions={menuOptions}\n />\n </div>\n </div>\n </>\n )}\n\n <CardContent ref={onCustomDownload ? ref : chartRef}>{getDisplay()}</CardContent>\n </Card>\n );\n});\n\nChartCard.displayName = 'ChartCard';\n"],"names":["__iconNode","IconDotsVertical","createReactComponent","ChartCardLoading","jsx","IconLoader2","styles","InlineSvgFromData","src","className","rest","svgMarkup","ChartCardMenuPro","props","theme","useTheme","i18nSetup","isLoading","setIsLoading","React","allOptions","menuOptions","options","option","startAction","onClick","handleExport","args","Dropdown","ActionIcon","SelectFieldContent","index","label","i18n","SelectListOption","asChartCardHeaderProps","title","description","tooltip","hideMenu","ChartCard","ref","resolveI18nProps","children","data","errorMessage","dimensionsAndMeasures","onCustomDownload","chartRef","useRef","hasData","_a","getDisplay","Skeleton","CardFeedback","IconAlertCircle","jsxs","Card","Fragment","CardHeader","clsx","CardContent"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"ChartCard-C72rw1Ya.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconDotsVertical.mjs","../src/components/charts/shared/ChartCard/ChartCardLoading/ChartCardLoading.tsx","../src/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.tsx","../src/components/charts/shared/ChartCard/ChartCard.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.44.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\": \"M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M11 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M11 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-2\" }]];\nconst IconDotsVertical = createReactComponent(\"outline\", \"dots-vertical\", \"DotsVertical\", __iconNode);\n\nexport { __iconNode, IconDotsVertical as default };\n//# sourceMappingURL=IconDotsVertical.mjs.map\n","import { IconLoader2 } from '@tabler/icons-react';\nimport styles from './ChartCardLoading.module.css';\n\nexport const ChartCardLoading = () => <IconLoader2 className={styles.loading} />;\n","import { IconDotsVertical } from '@tabler/icons-react';\nimport React from 'react';\nimport { useTheme } from '@embeddable.com/react';\nimport { ChartCardLoading } from '../ChartCardLoading/ChartCardLoading';\nimport { i18n, i18nSetup } from '../../../../../theme/i18n/i18n';\nimport { Theme } from '../../../../../theme/theme.types';\nimport {\n Dropdown,\n ActionIcon,\n SelectFieldContent,\n SelectListOption,\n} from '@embeddable.com/remarkable-ui';\nimport styles from './ChartCardMenuPro.module.css';\nimport { ChartCardMenuOptionOnClickProps } from '../../../../../theme/defaults/defaults.ChartCardMenu.constants';\n\ntype InlineSvgFromDataProps = React.HTMLAttributes<HTMLSpanElement> & {\n src: string;\n};\n\nexport function InlineSvgFromData({ src, className, ...rest }: InlineSvgFromDataProps) {\n // Remove prefix and URL-decode the SVG markup\n const svgMarkup = decodeURIComponent(src.replace(/^data:image\\/svg\\+xml,/, ''));\n\n return <div className={className} {...rest} dangerouslySetInnerHTML={{ __html: svgMarkup }} />;\n}\n\ntype ChartCardMenuProProps = Omit<ChartCardMenuOptionOnClickProps, 'theme'> & {\n menuOptions?: string[];\n};\n\nexport const ChartCardMenuPro: React.FC<ChartCardMenuProProps> = (props) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const [isLoading, setIsLoading] = React.useState(false);\n\n const allOptions = theme.defaults.chartMenuOptions ?? [];\n const { menuOptions } = props;\n const options = menuOptions\n ? allOptions.filter((option) => menuOptions.includes(option.value))\n : allOptions;\n\n if (options.length === 0) {\n return null;\n }\n\n const startAction = (onClick: () => void | Promise<void>) => {\n setTimeout(() => {\n Promise.resolve(onClick()).finally(() => setIsLoading(false));\n }, 100);\n };\n\n const handleExport = (onClick: (props: ChartCardMenuOptionOnClickProps) => void) => {\n setIsLoading(true);\n if (props.onCustomDownload) {\n props.onCustomDownload((args) => startAction(() => onClick(args)));\n return;\n }\n startAction(() => onClick({ ...props, theme }));\n };\n\n return (\n <Dropdown\n side=\"bottom\"\n align=\"end\"\n triggerComponent={isLoading ? <ChartCardLoading /> : <ActionIcon icon={IconDotsVertical} />}\n >\n <SelectFieldContent className={styles.list} autoFocus>\n {options.map((option, index) => {\n const label = i18n.t(option.labelKey);\n\n return (\n <SelectListOption\n key={index}\n label={label}\n onClick={() => handleExport(option.onClick)}\n startIcon={option.iconSrc ? <InlineSvgFromData src={option.iconSrc} /> : undefined}\n />\n );\n })}\n </SelectFieldContent>\n </Dropdown>\n );\n};\n","import React, { CSSProperties, useRef } from 'react';\nimport { IconAlertCircle } from '@tabler/icons-react';\nimport {\n Card,\n CardContent,\n CardFeedback,\n CardHeader,\n Skeleton,\n} from '@embeddable.com/remarkable-ui';\nimport styles from './ChartCard.module.css';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { useTheme } from '@embeddable.com/react';\nimport { ChartCardLoading } from './ChartCardLoading/ChartCardLoading';\nimport { ChartCardMenuPro } from './ChartCardMenuPro/ChartCardMenuPro';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport clsx from 'clsx';\nimport { ChartCardMenuOptionOnClickProps } from '../../../../theme/defaults/defaults.ChartCardMenu.constants';\n\nexport type ChartCardHeaderProps = {\n title?: string;\n description?: string;\n tooltip?: string;\n hideMenu?: boolean;\n menuOptions?: (string | unknown)[];\n};\n\nexport const asChartCardHeaderProps = <T extends ChartCardHeaderProps>(\n props: T,\n): Omit<ChartCardHeaderProps, 'menuOptions'> & { menuOptions?: string[] } => {\n const { title, description, tooltip, hideMenu, menuOptions } = props;\n return {\n title,\n description,\n tooltip,\n hideMenu,\n menuOptions: menuOptions as string[] | undefined,\n };\n};\n\ntype ChartCardProps = {\n children: React.ReactNode;\n data: DataResponse;\n errorMessage?: string;\n style?: CSSProperties;\n dimensionsAndMeasures?: (Dimension | Measure)[];\n onCustomDownload?: (props: (props: ChartCardMenuOptionOnClickProps) => void) => void;\n} & Omit<ChartCardHeaderProps, 'menuOptions'> & { menuOptions?: string[] };\n\nexport const ChartCard = React.forwardRef<HTMLDivElement, ChartCardProps>((props, ref) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, tooltip } = resolveI18nProps(props);\n const {\n children,\n data,\n errorMessage,\n dimensionsAndMeasures = [],\n hideMenu = false,\n onCustomDownload,\n menuOptions,\n } = props;\n\n const chartRef = useRef<HTMLDivElement>(null);\n\n const hasData = Boolean(data?.data && data.data?.length > 0);\n\n const isLoading = !data || data?.isLoading;\n\n const getDisplay = () => {\n if (isLoading && !hasData) {\n return <Skeleton />;\n }\n\n if (errorMessage) {\n return (\n <CardFeedback\n variant=\"error\"\n icon={IconAlertCircle}\n title={i18n.t('charts.errorTitle')}\n message={errorMessage}\n />\n );\n }\n\n if (!hasData) {\n return (\n <CardFeedback title={i18n.t('charts.emptyTitle')} message={i18n.t('charts.emptyMessage')} />\n );\n }\n\n return children;\n };\n\n return (\n <Card className={styles.chartCard}>\n {hideMenu ? null : (\n <>\n <div className={styles.chartCardHeader}>\n <CardHeader title={title} subtitle={description} tooltip={tooltip} />\n </div>\n <div className={styles.chartCardRightContent}>\n <div className={clsx(!isLoading && styles.hidden)}>\n <ChartCardLoading />\n </div>\n <div className={clsx(isLoading && styles.hidden)}>\n <ChartCardMenuPro\n title={title}\n containerRef={chartRef}\n data={data?.data}\n dimensionsAndMeasures={dimensionsAndMeasures}\n onCustomDownload={onCustomDownload}\n menuOptions={menuOptions}\n />\n </div>\n </div>\n </>\n )}\n\n <CardContent ref={onCustomDownload ? ref : chartRef}>{getDisplay()}</CardContent>\n </Card>\n );\n});\n\nChartCard.displayName = 'ChartCard';\n"],"names":["__iconNode","IconDotsVertical","createReactComponent","ChartCardLoading","jsx","IconLoader2","styles","InlineSvgFromData","src","className","rest","svgMarkup","ChartCardMenuPro","props","theme","useTheme","i18nSetup","isLoading","setIsLoading","React","allOptions","menuOptions","options","option","startAction","onClick","handleExport","args","Dropdown","ActionIcon","SelectFieldContent","index","label","i18n","SelectListOption","asChartCardHeaderProps","title","description","tooltip","hideMenu","ChartCard","ref","resolveI18nProps","children","data","errorMessage","dimensionsAndMeasures","onCustomDownload","chartRef","useRef","hasData","_a","getDisplay","Skeleton","CardFeedback","IconAlertCircle","jsxs","Card","Fragment","CardHeader","clsx","CardContent"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { c as e } from "./definition-C3aFGWw-.js";
2
+ import { c as e } from "./definition-CjdvxkC_.js";
3
3
  const m = e.preview, r = e.meta, n = o(
4
4
  e.Component,
5
5
  r,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { d as e } from "./definition-_zJ7wlgc.js";
2
+ import { d as e } from "./definition-C6YKs0rc.js";
3
3
  const r = e.preview, t = e.meta, a = o(
4
4
  e.Component,
5
5
  t,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { d as e } from "./definition-rgPq6VPL.js";
2
+ import { d as e } from "./definition-D-7fCnK5.js";
3
3
  const m = e.preview, t = e.meta, r = o(
4
4
  e.Component,
5
5
  t,
@@ -1,7 +1,7 @@
1
1
  import { j as h, t as S } from "./index-BCG-LNTx.js";
2
2
  import { useTheme as d } from "@embeddable.com/react";
3
3
  import { useState as p, useEffect as g } from "react";
4
- import { g as A } from "./dimensionsAndMeasures.utils-D6wqLAjd.js";
4
+ import { g as A } from "./dimensionsAndMeasures.utils-mGymNq3G.js";
5
5
  const j = (i) => {
6
6
  const r = d(), [c, l] = p(""), { selectedValue: n, options: e, clearable: s, placeholder: m, onChange: o } = i, u = (a) => {
7
7
  const t = e.find((f) => f.name === a);
@@ -32,4 +32,4 @@ const j = (i) => {
32
32
  export {
33
33
  j as D
34
34
  };
35
- //# sourceMappingURL=DimensionAndMeasureSingleSelectField-YgZIeOad.js.map
35
+ //# sourceMappingURL=DimensionAndMeasureSingleSelectField-D2dx-AOV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DimensionAndMeasureSingleSelectField-YgZIeOad.js","sources":["../src/components/editors/shared/DimensionAndMeasureSingleSelectField/DimensionAndMeasureSingleSelectField.tsx"],"sourcesContent":["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\nexport type 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 | null) => {\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":["DimensionAndMeasureSingleSelectField","props","theme","useTheme","searchValue","setSearchValue","useState","selectedValue","options","clearable","placeholder","onChange","handleChange","newValue","newSelection","option","useEffect","firstDimension","jsx","SingleSelectField","getDimensionAndMeasureOptions"],"mappings":";;;;AAeO,MAAMA,IAAuC,CAClDC,MACG;AACH,QAAMC,IAAQC,EAAA,GAER,CAACC,GAAaC,CAAc,IAAIC,EAAiB,EAAE,GAEnD,EAAE,eAAAC,GAAe,SAAAC,GAAS,WAAAC,GAAW,aAAAC,GAAa,UAAAC,MAAaV,GAE/DW,IAAe,CAACC,MAA4B;AAChD,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,SAASe,EAA8B;AAAA,QACrC,uBAAuBZ;AAAA,QACvB,aAAAJ;AAAA,QACA,OAAAF;AAAA,MAAA,CACD;AAAA,MACD,iBAAiB;AAAA,IAAA;AAAA,EAAA;AAGvB;"}
1
+ {"version":3,"file":"DimensionAndMeasureSingleSelectField-D2dx-AOV.js","sources":["../src/components/editors/shared/DimensionAndMeasureSingleSelectField/DimensionAndMeasureSingleSelectField.tsx"],"sourcesContent":["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\nexport type 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 | null) => {\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":["DimensionAndMeasureSingleSelectField","props","theme","useTheme","searchValue","setSearchValue","useState","selectedValue","options","clearable","placeholder","onChange","handleChange","newValue","newSelection","option","useEffect","firstDimension","jsx","SingleSelectField","getDimensionAndMeasureOptions"],"mappings":";;;;AAeO,MAAMA,IAAuC,CAClDC,MACG;AACH,QAAMC,IAAQC,EAAA,GAER,CAACC,GAAaC,CAAc,IAAIC,EAAiB,EAAE,GAEnD,EAAE,eAAAC,GAAe,SAAAC,GAAS,WAAAC,GAAW,aAAAC,GAAa,UAAAC,MAAaV,GAE/DW,IAAe,CAACC,MAA4B;AAChD,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,SAASe,EAA8B;AAAA,QACrC,uBAAuBZ;AAAA,QACvB,aAAAJ;AAAA,QACA,OAAAF;AAAA,MAAA,CACD;AAAA,MACD,iBAAiB;AAAA,IAAA;AAAA,EAAA;AAGvB;"}
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { d as e } from "./definition-J-vD12mT.js";
2
+ import { d as e } from "./definition-wZGQYPSO.js";
3
3
  const m = e.preview, t = e.meta, r = o(
4
4
  e.Component,
5
5
  t,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { d as e } from "./definition-CRvMDjRB.js";
2
+ import { d as e } from "./definition-B6NctClA.js";
3
3
  const m = e.preview, n = e.meta, r = o(
4
4
  e.Component,
5
5
  n,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as t } from "@embeddable.com/react";
2
- import { d as o } from "./definition-DoM-A1nT.js";
2
+ import { d as o } from "./definition-CF-FBr4a.js";
3
3
  const m = o.preview, e = o.meta, a = t(o.Component, e, o.config);
4
4
  export {
5
5
  a as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as e } from "@embeddable.com/react";
2
- import { d as o } from "./definition-Deq5jKVy.js";
2
+ import { d as o } from "./definition-BQZkjNaI.js";
3
3
  const a = o.preview, t = o.meta, m = e(o.Component, t, o.config);
4
4
  export {
5
5
  m as default,
@@ -1,6 +1,6 @@
1
1
  import { j as r, C as c, i as m, k as C, o as l } from "./index-BCG-LNTx.js";
2
2
  import { useTheme as p } from "@embeddable.com/react";
3
- import { i as u, a as x } from "./component.utils-oQMZT7TK.js";
3
+ import { i as u, a as x } from "./component.utils-B7tQ4cCT.js";
4
4
  import { I as j } from "./IconAlertCircle-KhBScmyp.js";
5
5
  const f = "_editorCard_1ymsc_1", h = {
6
6
  editorCard: f
@@ -31,4 +31,4 @@ const f = "_editorCard_1ymsc_1", h = {
31
31
  export {
32
32
  k as E
33
33
  };
34
- //# sourceMappingURL=EditorCard-BVtdJ04L.js.map
34
+ //# sourceMappingURL=EditorCard-C5VwkYTO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditorCard-BVtdJ04L.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\nexport type 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-C5VwkYTO.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\nexport type 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,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { f as e } from "./definition-NVrrC9Aq.js";
2
+ import { f as e } from "./definition-jPJunkuw.js";
3
3
  const m = e.preview, r = e.meta, n = o(e.Component, r, e.config);
4
4
  export {
5
5
  n as default,
@@ -1,7 +1,7 @@
1
1
  import { j as g, t as E } from "./index-BCG-LNTx.js";
2
2
  import { useMemo as F, useEffect as d } from "react";
3
3
  import { useTheme as C } from "@embeddable.com/react";
4
- import { b as G, i as N } from "./component.utils-oQMZT7TK.js";
4
+ import { b as G, i as N } from "./component.utils-B7tQ4cCT.js";
5
5
  import { d as w } from "./component.inputs.constants-BsSC9xd5.js";
6
6
  const D = 1, v = 100, x = () => w.map((e) => ({
7
7
  ...e,
@@ -105,4 +105,4 @@ export {
105
105
  p as b,
106
106
  A as g
107
107
  };
108
- //# sourceMappingURL=GranularitySelectField-DvrniLCq.js.map
108
+ //# sourceMappingURL=GranularitySelectField-B7bPGvIp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GranularitySelectField-DvrniLCq.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<string>, '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":";;;;;AAQA,MAAMA,IAAsB,GACtBC,IAAsB,KAEfC,IAAmC,MACvCC,EAAqC,IAAI,CAACC,OAAS;AAAA,EACxD,GAAGA;AAAA,EACH,OAAOC,EAAkBD,EAAI,KAAK;AAAA,EAClC,GAIEE,IAAS,CAACC,MAA4B;AAC1C,MAAIA,aAAa,KAAM,QAAO,OAAO,MAAMA,EAAE,QAAA,CAAS,IAAI,OAAOA;AACjE,MAAI,OAAOA,KAAM,YAAY,OAAOA,KAAM,UAAU;AAClD,UAAMC,IAAS,IAAI,KAAKD,CAAC;AACzB,WAAO,OAAO,MAAMC,EAAO,QAAA,CAAS,IAAI,OAAOA;AAAA,EACjD;AACA,SAAO;AACT,GAGMC,IAAiB,CAACC,MAA6B,IAAI,KAAKA,EAAa,QAAA,IAAY,CAAC,GAElFC,IAAoB,CAACC,GAAaC,GAAoBC,OAClDD,EAAa,QAAA,IAAYD,EAAM,aAAaE;AAItD,SAASC,EAAYH,GAAaF,GAAoBM,GAAkC;AACtF,MAAIJ,IAAQF,EAAc,QAAO;AAEjC,UAAQM,GAAA;AAAA,IACN,KAAK;AACH,aAAOL,EAAkBC,GAAOH,EAAeC,CAAY,GAAG,GAAI;AAAA,IAEpE,KAAK;AACH,aAAOC,EAAkBC,GAAOH,EAAeC,CAAY,GAAG,KAAK,GAAI;AAAA,IAEzE,KAAK;AACH,aAAOC,EAAkBC,GAAOH,EAAeC,CAAY,GAAG,OAAU,GAAI;AAAA,IAE9E,KAAK;AACH,aAAOC,EAAkBC,GAAOH,EAAeC,CAAY,GAAG,OAAU,KAAK,GAAI;AAAA,IAEnF,KAAK;AACH,aAAOC,EAAkBC,GAAOH,EAAeC,CAAY,GAAG,QAAc,KAAK,GAAI;AAAA,IAEvF,KAAK;AACH,aAAOC,EAAkBC,GAAOH,EAAeC,CAAY,GAAG,MAAU,KAAK,KAAK,GAAI;AAAA;AAAA,IAExF,KAAK;AACH,aAAOC,EAAkBC,GAAOH,EAAeC,CAAY,GAAG,OAAU,KAAK,KAAK,GAAI;AAAA;AAAA,IAExF,KAAK;AACH,aAAOC,EAAkBC,GAAOH,EAAeC,CAAY,GAAG,MAAM,KAAK,KAAK,KAAK,GAAI;AAAA,EAAA;AAE7F;AAEA,MAAMO,IAAqB,CACzBL,GACAF,GACAM,MACY;AACZ,QAAME,IAAUH,EAAYH,GAAOF,GAAcM,CAAW;AAC5D,SAAOE,KAAWlB,KAAuBkB,KAAWjB;AACtD,GAEakB,IAA8C,CACzDC,GACAC,MAC4B;AAC5B,MAAI,CAACD,EAAW,QAAOC;AAGvB,QAAMC,IAAOhB,EAAQc,KAAA,gBAAAA,EAAmB,IAAI,GAEtCG,IAAKjB,EAAQc,KAAA,gBAAAA,EAAmB,EAAE;AAGxC,MAAI,CAACE,KAAQ,CAACC,EAAI,QAAOF;AAEzB,QAAMG,wBAAe,IAAA;AAErB,aAAWpB,KAAOiB,GAAY;AAC5B,UAAMI,IAAIrB,EAAI;AACd,IAAIa,EAAmBK,GAAMC,GAAIE,CAAC,KAChCD,EAAS,IAAIC,CAAC;AAAA,EAElB;AAGA,SAAOJ,EAAW,OAAO,CAACjB,MAAQoB,EAAS,IAAIpB,EAAI,KAA0B,CAAC;AAChF,GAEasB,IAAmB,CAC9BC,GACAX,MAC4B;;AAC5B,MAAI,CAACA;AACH;AAGF,MAAIW,EAAiB,KAAK,CAACvB,MAAQA,EAAI,UAAUY,CAAW;AAC1D,WAAOA;AAGT,QAAMY,IAAiBD,EAAiB,SAAS,IAAI,IAAI;AAEzD,UAAOE,IAAAF,EAAiBC,CAAc,MAA/B,gBAAAC,EAAkC;AAC3C,GC/FaC,IAAyB,CAACC,MAAuC;AAC5E,QAAMC,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAM;AAAA,IACJ,aAAAhB;AAAA,IACA,eAAAmB;AAAA,IACA,WAAAC;AAAA,IACA,aAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,EAAA,IACEX,GAEEY,IAAgCzC,EAAA,GAEhCyB,IAAmBiB,EAAQ,MACxBzB;AAAA,IACLmB;AAAA,IACAK,EAA8B;AAAA,MAAO,CAACvC,MACpC+B,KAAA,gBAAAA,EAAe,SAAS/B,EAAI;AAAA,IAA0B;AAAA,EACxD,GAED,CAACkC,GAAkBH,CAAa,CAAC;AAEpC,EAAAU,EAAU,MAAM;AACd,QAAI7B,KAIE,CAACW,EAAiB,KAAK,CAACvB,MAAQA,EAAI,UAAUY,CAAW,GAAG;AAC9D,YAAM8B,IAAiBpB,EAAiBC,GAAkBX,CAAW;AACrE,MAAI8B,KACFJ,EAASI,CAA6B;AAAA,IAE1C;AAAA,EAEJ,GAAG,CAACnB,GAAkBX,GAAa0B,CAAQ,CAAC;AAE5C,QAAMK,IAAYrB,EAAiBC,GAAkBX,CAAW;AAEhE,SACEgC,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAAV;AAAA,MACA,WAAAH;AAAA,MACA,aAAAC;AAAA,MACA,OAAOU;AAAA,MACP,SAASpB;AAAA,MACT,UAAU,CAACuB,MAAaR,EAASQ,CAAuB;AAAA,MACxD,iBAAiB;AAAA,MACjB,MAAAV;AAAA,MACA,OAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"GranularitySelectField-B7bPGvIp.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<string>, '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,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { g as e } from "./definition-DOZHDhbP.js";
2
+ import { g as e } from "./definition-Cj20ajOq.js";
3
3
  const i = e.preview, t = e.meta, a = o(
4
4
  e.Component,
5
5
  t,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { h as e } from "./definition-BPosaTH4.js";
2
+ import { h as e } from "./definition-DrRXfegd.js";
3
3
  const n = e.preview, t = e.meta, p = o(e.Component, t, e.config);
4
4
  export {
5
5
  p as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as e } from "@embeddable.com/react";
2
- import { k as o } from "./definition-CaV4qPYQ.js";
2
+ import { k as o } from "./definition-B9eClP6I.js";
3
3
  const n = o.preview, r = o.meta, p = e(
4
4
  o.Component,
5
5
  r,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { k as e } from "./definition-BXJSlAhg.js";
2
+ import { k as e } from "./definition-m71Whuy4.js";
3
3
  const n = e.preview, r = e.meta, p = o(e.Component, r, e.config);
4
4
  export {
5
5
  p as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as e } from "@embeddable.com/react";
2
- import { l as o } from "./definition-CBUbQZvZ.js";
2
+ import { l as o } from "./definition-C0VyzJWX.js";
3
3
  const a = o.preview, t = o.meta, m = e(
4
4
  o.Component,
5
5
  t,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as e } from "@embeddable.com/react";
2
- import { l as o } from "./definition-atfrMsXT.js";
2
+ import { l as o } from "./definition-Bsh6Toao.js";
3
3
  const r = o.preview, t = o.meta, a = e(
4
4
  o.Component,
5
5
  t,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { l as e } from "./definition-DKM3Mx4Z.js";
2
+ import { l as e } from "./definition-DV3XAemq.js";
3
3
  const a = e.preview, t = e.meta, m = o(e.Component, t, e.config);
4
4
  export {
5
5
  m as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { l as e } from "./definition-BshhnH_Q.js";
2
+ import { l as e } from "./definition-KHcLAKES.js";
3
3
  const m = e.preview, r = e.meta, p = o(e.Component, r, e.config);
4
4
  export {
5
5
  p as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { l as e } from "./definition-DVzvnrBf.js";
2
+ import { l as e } from "./definition-D5V_UP9I.js";
3
3
  const r = e.preview, t = e.meta, a = o(
4
4
  e.Component,
5
5
  t,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as e } from "@embeddable.com/react";
2
- import { m as o } from "./definition-DaGw0pa5.js";
2
+ import { m as o } from "./definition-D46_JOLS.js";
3
3
  const t = o.preview, m = o.meta, a = e(o.Component, m, o.config);
4
4
  export {
5
5
  a as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { m as e } from "./definition-C2k5NhdG.js";
2
+ import { m as e } from "./definition-R6w8d-nt.js";
3
3
  const i = e.preview, t = e.meta, n = o(
4
4
  e.Component,
5
5
  t,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { m as e } from "./definition-DQeqVfK6.js";
2
+ import { m as e } from "./definition-CS_f89ly.js";
3
3
  const r = e.preview, t = e.meta, i = o(
4
4
  e.Component,
5
5
  t,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { m as e } from "./definition-Dw72pLmB.js";
2
+ import { m as e } from "./definition-CifvR_ce.js";
3
3
  const n = e.preview, t = e.meta, r = o(e.Component, t, e.config);
4
4
  export {
5
5
  r as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { p as e } from "./definition-BqQJmkId.js";
2
+ import { p as e } from "./definition-DnLCl6jI.js";
3
3
  const n = e.preview, t = e.meta, p = o(e.Component, t, e.config);
4
4
  export {
5
5
  p as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as e } from "@embeddable.com/react";
2
- import { p as o } from "./definition-CSA_9QtD.js";
2
+ import { p as o } from "./definition-CfJRkeoi.js";
3
3
  const p = o.preview, t = o.meta, r = e(o.Component, t, o.config);
4
4
  export {
5
5
  r as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as e } from "@embeddable.com/react";
2
- import { s as t } from "./definition-Bco3wav-.js";
2
+ import { s as t } from "./definition-Dw4388wt.js";
3
3
  const m = t.preview, o = t.meta, n = e(t.Component, o, t.config);
4
4
  export {
5
5
  n as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { s as e } from "./definition-DyCXYPmd.js";
2
+ import { s as e } from "./definition-Bid9fwVS.js";
3
3
  const m = e.preview, t = e.meta, r = o(e.Component, t, e.config);
4
4
  export {
5
5
  r as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as t } from "@embeddable.com/react";
2
- import { t as e } from "./definition-DZ4_Wg8R.js";
2
+ import { t as e } from "./definition-DJOxJUDL.js";
3
3
  const m = e.preview, a = e.meta, r = t(e.Component, a, e.config);
4
4
  export {
5
5
  r as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { t as e } from "./definition-DlGVdRtS.js";
2
+ import { t as e } from "./definition-BnZSlj8x.js";
3
3
  const m = e.preview, t = e.meta, n = o(e.Component, t, e.config);
4
4
  export {
5
5
  n as default,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as o } from "@embeddable.com/react";
2
- import { t as e } from "./definition-D_ryo6q7.js";
2
+ import { t as e } from "./definition-BSQcRRwQ.js";
3
3
  const r = e.preview, t = e.meta, i = o(e.Component, t, e.config);
4
4
  export {
5
5
  i as default,
@@ -1,6 +1,6 @@
1
1
  import { useEffect as A } from "react";
2
2
  import { l as u } from "./index-BCG-LNTx.js";
3
- import { g as v } from "./granularity.utils-BreNR3T1.js";
3
+ import { g as v } from "./granularity.utils-BidDuinr.js";
4
4
  import { g, S as D } from "./component.inputs.constants-BsSC9xd5.js";
5
5
  function L(t) {
6
6
  const { resultsAxisOrder: e, axisDimension: s, setAxisOrderAndCacheKey: n, axisOrderCacheKey: o } = t;
@@ -123,4 +123,4 @@ export {
123
123
  G as l,
124
124
  L as u
125
125
  };
126
- //# sourceMappingURL=bars.loadData.utils-AVsNPNMZ.js.map
126
+ //# sourceMappingURL=bars.loadData.utils-qHyrp6mu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bars.loadData.utils-AVsNPNMZ.js","sources":["../src/components/charts/bars/bars.hooks.ts","../src/components/charts/bars/bars.loadData.utils.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { DataResponse, Dimension } from '@embeddable.com/core';\n\nexport function useUpdateAxisOrderAndCacheKey(opts: {\n resultsAxisOrder?: DataResponse;\n axisDimension: Dimension;\n setAxisOrderAndCacheKey?: (values: string[], cacheKey: string) => void;\n axisOrderCacheKey?: string;\n}): void {\n const { resultsAxisOrder, axisDimension, setAxisOrderAndCacheKey, axisOrderCacheKey } = opts;\n\n useEffect(() => {\n if (\n !setAxisOrderAndCacheKey ||\n !resultsAxisOrder?.data ||\n resultsAxisOrder.isLoading ||\n !axisOrderCacheKey\n )\n return;\n\n const values = resultsAxisOrder.data\n .map((d) => d[axisDimension.name])\n .filter((v): v is string => v != null);\n\n setAxisOrderAndCacheKey(values, axisOrderCacheKey);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- setAxisOrderAndCacheKey is recreated each render; other deps always change together with resultsAxisOrder\n }, [resultsAxisOrder]);\n}\n","import {\n DataResponse,\n Dataset,\n Dimension,\n Granularity,\n loadData,\n LoadDataRequest,\n Measure,\n OrderDirection,\n} from '@embeddable.com/core';\nimport { getDimensionWithGranularity } from '../utils/granularity.utils';\nimport {\n getSortDirectionValue,\n SortDirectionTypeOptions,\n} from '../../types/SortDirection.type.emb';\n\nexport const getLimit = (limit?: number): number | undefined =>\n typeof limit === 'number' && Number.isInteger(limit) && limit > 0 ? limit : undefined;\n\nexport const shouldGetTopItems = (sortDirection?: OrderDirection, limit?: number): boolean =>\n Boolean(getSortDirectionValue(sortDirection) || getLimit(limit));\n\nconst EMPTY_RESULTS = { data: [], isLoading: false } as DataResponse;\n\n// ---- Axis Order ----\n\ntype LoadDataResultsAxisOrderArgs = {\n dataset: Dataset;\n axis: Dimension;\n measure: Measure;\n sortDirection?: OrderDirection;\n limit?: number;\n timezone?: string;\n};\n\nexport const loadDataResultsAxisOrderArgs = ({\n dataset,\n axis,\n measure,\n sortDirection,\n limit,\n timezone,\n}: LoadDataResultsAxisOrderArgs): LoadDataRequest => {\n return {\n from: dataset,\n select: [axis, measure],\n orderBy: [\n {\n property: measure,\n direction: getSortDirectionValue(sortDirection) ?? SortDirectionTypeOptions.desc,\n },\n ],\n limit: getLimit(limit),\n timezone,\n };\n};\n\ntype LoadDataResultsAxisOrder = {\n dataset: Dataset;\n axis: Dimension;\n measure: Measure;\n limitTopAxis?: number;\n sortDirection?: OrderDirection;\n timezone?: string;\n};\n\nexport const loadDataResultsAxisOrder = ({\n dataset,\n axis,\n measure,\n limitTopAxis,\n sortDirection,\n timezone,\n}: LoadDataResultsAxisOrder): DataResponse | undefined => {\n const needsTopItems = shouldGetTopItems(sortDirection, limitTopAxis);\n\n if (!needsTopItems) return undefined;\n\n return loadData(\n loadDataResultsAxisOrderArgs({\n dataset,\n axis,\n measure,\n sortDirection,\n limit: limitTopAxis,\n timezone,\n }),\n );\n};\n\nexport const getAxisOrderCacheKey = ({\n dataset,\n axis,\n measure,\n sortDirection,\n limit,\n timezone,\n}: LoadDataResultsAxisOrderArgs): string | undefined => {\n if (!shouldGetTopItems(sortDirection, limit)) return undefined;\n return JSON.stringify(\n loadDataResultsAxisOrderArgs({ dataset, axis, measure, sortDirection, limit, timezone }),\n );\n};\n\nexport const getCachedAxisOrder = (\n axisOrderCacheKey: string | undefined,\n state: { axisOrderCacheKey?: string; axisOrder?: string[] } | undefined,\n): string[] | undefined => {\n if (axisOrderCacheKey == null || axisOrderCacheKey !== state?.axisOrderCacheKey) return undefined;\n return state?.axisOrder;\n};\n\n// ---- Results ----\n\ntype LoadDataResultsArgs = {\n dataset: Dataset;\n axis: Dimension;\n groupBy: Dimension;\n measure: Measure;\n limit?: number;\n axisOrder?: string[];\n timezone?: string;\n};\n\nexport const loadDataResultsArgs = ({\n dataset,\n axis,\n groupBy,\n measure,\n limit,\n axisOrder,\n timezone,\n}: LoadDataResultsArgs): LoadDataRequest => {\n const request: LoadDataRequest = {\n from: dataset,\n select: [axis, groupBy, measure],\n limit: getLimit(limit),\n timezone,\n };\n if (axisOrder?.length) {\n request['filters'] = [{ property: axis, operator: 'equals', value: axisOrder }];\n }\n return request;\n};\n\ntype LoadDataResults = {\n dataset: Dataset;\n axis: Dimension;\n groupBy: Dimension;\n measure: Measure;\n granularity?: Granularity;\n sortDirection?: OrderDirection;\n limitTopAxis?: number;\n maxResults?: number;\n axisOrder?: string[];\n timezone?: string;\n};\n\nexport const loadDataResults = ({\n dataset,\n axis,\n groupBy,\n measure,\n granularity,\n sortDirection,\n limitTopAxis,\n maxResults,\n axisOrder,\n timezone,\n}: LoadDataResults): DataResponse | undefined => {\n const needsTopItems = shouldGetTopItems(sortDirection, limitTopAxis);\n const axisWithGranularity = getDimensionWithGranularity(axis, granularity);\n if (!needsTopItems) {\n return loadData(\n loadDataResultsArgs({\n dataset,\n axis: axisWithGranularity,\n groupBy,\n measure,\n limit: maxResults,\n timezone,\n }),\n );\n }\n if (axisOrder == null) return undefined;\n if (!axisOrder?.length) return EMPTY_RESULTS;\n return loadData(\n loadDataResultsArgs({\n dataset,\n axis: axisWithGranularity,\n groupBy,\n measure,\n limit: maxResults,\n axisOrder,\n timezone,\n }),\n );\n};\n"],"names":["useUpdateAxisOrderAndCacheKey","opts","resultsAxisOrder","axisDimension","setAxisOrderAndCacheKey","axisOrderCacheKey","useEffect","values","d","v","getLimit","limit","shouldGetTopItems","sortDirection","getSortDirectionValue","EMPTY_RESULTS","loadDataResultsAxisOrderArgs","dataset","axis","measure","timezone","SortDirectionTypeOptions","loadDataResultsAxisOrder","limitTopAxis","loadData","getAxisOrderCacheKey","getCachedAxisOrder","state","loadDataResultsArgs","groupBy","axisOrder","request","loadDataResults","granularity","maxResults","needsTopItems","axisWithGranularity","getDimensionWithGranularity"],"mappings":"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"}
1
+ {"version":3,"file":"bars.loadData.utils-qHyrp6mu.js","sources":["../src/components/charts/bars/bars.hooks.ts","../src/components/charts/bars/bars.loadData.utils.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { DataResponse, Dimension } from '@embeddable.com/core';\n\nexport function useUpdateAxisOrderAndCacheKey(opts: {\n resultsAxisOrder?: DataResponse;\n axisDimension: Dimension;\n setAxisOrderAndCacheKey?: (values: string[], cacheKey: string) => void;\n axisOrderCacheKey?: string;\n}): void {\n const { resultsAxisOrder, axisDimension, setAxisOrderAndCacheKey, axisOrderCacheKey } = opts;\n\n useEffect(() => {\n if (\n !setAxisOrderAndCacheKey ||\n !resultsAxisOrder?.data ||\n resultsAxisOrder.isLoading ||\n !axisOrderCacheKey\n )\n return;\n\n const values = resultsAxisOrder.data\n .map((d) => d[axisDimension.name])\n .filter((v): v is string => v != null);\n\n setAxisOrderAndCacheKey(values, axisOrderCacheKey);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- setAxisOrderAndCacheKey is recreated each render; other deps always change together with resultsAxisOrder\n }, [resultsAxisOrder]);\n}\n","import {\n DataResponse,\n Dataset,\n Dimension,\n Granularity,\n loadData,\n LoadDataRequest,\n Measure,\n OrderDirection,\n} from '@embeddable.com/core';\nimport { getDimensionWithGranularity } from '../utils/granularity.utils';\nimport {\n getSortDirectionValue,\n SortDirectionTypeOptions,\n} from '../../types/SortDirection.type.emb';\n\nexport const getLimit = (limit?: number): number | undefined =>\n typeof limit === 'number' && Number.isInteger(limit) && limit > 0 ? limit : undefined;\n\nexport const shouldGetTopItems = (sortDirection?: OrderDirection, limit?: number): boolean =>\n Boolean(getSortDirectionValue(sortDirection) || getLimit(limit));\n\nconst EMPTY_RESULTS = { data: [], isLoading: false } as DataResponse;\n\n// ---- Axis Order ----\n\ntype LoadDataResultsAxisOrderArgs = {\n dataset: Dataset;\n axis: Dimension;\n measure: Measure;\n sortDirection?: OrderDirection;\n limit?: number;\n timezone?: string;\n};\n\nexport const loadDataResultsAxisOrderArgs = ({\n dataset,\n axis,\n measure,\n sortDirection,\n limit,\n timezone,\n}: LoadDataResultsAxisOrderArgs): LoadDataRequest => {\n return {\n from: dataset,\n select: [axis, measure],\n orderBy: [\n {\n property: measure,\n direction: getSortDirectionValue(sortDirection) ?? SortDirectionTypeOptions.desc,\n },\n ],\n limit: getLimit(limit),\n timezone,\n };\n};\n\ntype LoadDataResultsAxisOrder = {\n dataset: Dataset;\n axis: Dimension;\n measure: Measure;\n limitTopAxis?: number;\n sortDirection?: OrderDirection;\n timezone?: string;\n};\n\nexport const loadDataResultsAxisOrder = ({\n dataset,\n axis,\n measure,\n limitTopAxis,\n sortDirection,\n timezone,\n}: LoadDataResultsAxisOrder): DataResponse | undefined => {\n const needsTopItems = shouldGetTopItems(sortDirection, limitTopAxis);\n\n if (!needsTopItems) return undefined;\n\n return loadData(\n loadDataResultsAxisOrderArgs({\n dataset,\n axis,\n measure,\n sortDirection,\n limit: limitTopAxis,\n timezone,\n }),\n );\n};\n\nexport const getAxisOrderCacheKey = ({\n dataset,\n axis,\n measure,\n sortDirection,\n limit,\n timezone,\n}: LoadDataResultsAxisOrderArgs): string | undefined => {\n if (!shouldGetTopItems(sortDirection, limit)) return undefined;\n return JSON.stringify(\n loadDataResultsAxisOrderArgs({ dataset, axis, measure, sortDirection, limit, timezone }),\n );\n};\n\nexport const getCachedAxisOrder = (\n axisOrderCacheKey: string | undefined,\n state: { axisOrderCacheKey?: string; axisOrder?: string[] } | undefined,\n): string[] | undefined => {\n if (axisOrderCacheKey == null || axisOrderCacheKey !== state?.axisOrderCacheKey) return undefined;\n return state?.axisOrder;\n};\n\n// ---- Results ----\n\ntype LoadDataResultsArgs = {\n dataset: Dataset;\n axis: Dimension;\n groupBy: Dimension;\n measure: Measure;\n limit?: number;\n axisOrder?: string[];\n timezone?: string;\n};\n\nexport const loadDataResultsArgs = ({\n dataset,\n axis,\n groupBy,\n measure,\n limit,\n axisOrder,\n timezone,\n}: LoadDataResultsArgs): LoadDataRequest => {\n const request: LoadDataRequest = {\n from: dataset,\n select: [axis, groupBy, measure],\n limit: getLimit(limit),\n timezone,\n };\n if (axisOrder?.length) {\n request['filters'] = [{ property: axis, operator: 'equals', value: axisOrder }];\n }\n return request;\n};\n\ntype LoadDataResults = {\n dataset: Dataset;\n axis: Dimension;\n groupBy: Dimension;\n measure: Measure;\n granularity?: Granularity;\n sortDirection?: OrderDirection;\n limitTopAxis?: number;\n maxResults?: number;\n axisOrder?: string[];\n timezone?: string;\n};\n\nexport const loadDataResults = ({\n dataset,\n axis,\n groupBy,\n measure,\n granularity,\n sortDirection,\n limitTopAxis,\n maxResults,\n axisOrder,\n timezone,\n}: LoadDataResults): DataResponse | undefined => {\n const needsTopItems = shouldGetTopItems(sortDirection, limitTopAxis);\n const axisWithGranularity = getDimensionWithGranularity(axis, granularity);\n if (!needsTopItems) {\n return loadData(\n loadDataResultsArgs({\n dataset,\n axis: axisWithGranularity,\n groupBy,\n measure,\n limit: maxResults,\n timezone,\n }),\n );\n }\n if (axisOrder == null) return undefined;\n if (!axisOrder?.length) return EMPTY_RESULTS;\n return loadData(\n loadDataResultsArgs({\n dataset,\n axis: axisWithGranularity,\n groupBy,\n measure,\n limit: maxResults,\n axisOrder,\n timezone,\n }),\n );\n};\n"],"names":["useUpdateAxisOrderAndCacheKey","opts","resultsAxisOrder","axisDimension","setAxisOrderAndCacheKey","axisOrderCacheKey","useEffect","values","d","v","getLimit","limit","shouldGetTopItems","sortDirection","getSortDirectionValue","EMPTY_RESULTS","loadDataResultsAxisOrderArgs","dataset","axis","measure","timezone","SortDirectionTypeOptions","loadDataResultsAxisOrder","limitTopAxis","loadData","getAxisOrderCacheKey","getCachedAxisOrder","state","loadDataResultsArgs","groupBy","axisOrder","request","loadDataResults","granularity","maxResults","needsTopItems","axisWithGranularity","getDimensionWithGranularity"],"mappings":"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"}