@embeddable.com/remarkable-pro 0.0.25 → 0.0.27

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 (182) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +35 -24
  2. package/dist/BarChartDefaultHorizontalPro.js.map +1 -1
  3. package/dist/BarChartDefaultPro.js +38 -22
  4. package/dist/BarChartDefaultPro.js.map +1 -1
  5. package/dist/BarChartGroupedHorizontalPro.js +36 -28
  6. package/dist/BarChartGroupedHorizontalPro.js.map +1 -1
  7. package/dist/BarChartGroupedPro.js +36 -28
  8. package/dist/BarChartGroupedPro.js.map +1 -1
  9. package/dist/BarChartStackedHorizontalPro.js +31 -23
  10. package/dist/BarChartStackedHorizontalPro.js.map +1 -1
  11. package/dist/BarChartStackedPro.js +31 -23
  12. package/dist/BarChartStackedPro.js.map +1 -1
  13. package/dist/{ChartCard-BHPN4_tz.js → ChartCard-CfVMn37p.js} +21 -21
  14. package/dist/{ChartCard-BHPN4_tz.js.map → ChartCard-CfVMn37p.js.map} +1 -1
  15. package/dist/ChartGranularitySelectField-C_6Mugcw.js +40 -0
  16. package/dist/ChartGranularitySelectField-C_6Mugcw.js.map +1 -0
  17. package/dist/{Color.type.emb-DWdIUAm5.js → Color.type.emb-De2K8PVb.js} +2067 -2042
  18. package/dist/{Color.type.emb-DWdIUAm5.js.map → Color.type.emb-De2K8PVb.js.map} +1 -1
  19. package/dist/ColorEditor.js +1 -1
  20. package/dist/ComparisonPeriodSelectFieldPro.js +3 -3
  21. package/dist/DateRangePickerCustomPro.js +4 -4
  22. package/dist/DateRangeSelectFieldPro.js +3 -3
  23. package/dist/DimensionAndMeasureSingleSelectField-CJ1yAcRd.js +45 -0
  24. package/dist/DimensionAndMeasureSingleSelectField-CJ1yAcRd.js.map +1 -0
  25. package/dist/DimensionSingleSelectFieldPro.js +86 -0
  26. package/dist/DimensionSingleSelectFieldPro.js.map +1 -0
  27. package/dist/DonutChartPro.js +4 -4
  28. package/dist/DonutLabelChartPro.js +4 -4
  29. package/dist/{EditorCard-ZXwl5-DV.js → EditorCard-B9UFM_uA.js} +3 -3
  30. package/dist/{EditorCard-ZXwl5-DV.js.map → EditorCard-B9UFM_uA.js.map} +1 -1
  31. package/dist/GranularitySelectField-DuRk6qY8.js +104 -0
  32. package/dist/GranularitySelectField-DuRk6qY8.js.map +1 -0
  33. package/dist/GranularitySelectFieldPro.js +43 -137
  34. package/dist/GranularitySelectFieldPro.js.map +1 -1
  35. package/dist/HeatMapPro.js +4 -4
  36. package/dist/{IconCalendarFilled-Bl7kPqxG.js → IconCalendarFilled-CYiLMPm9.js} +2 -2
  37. package/dist/{IconCalendarFilled-Bl7kPqxG.js.map → IconCalendarFilled-CYiLMPm9.js.map} +1 -1
  38. package/dist/KpiChartNumberComparisonPro.js +4 -4
  39. package/dist/KpiChartNumberPro.js +4 -4
  40. package/dist/LineChartComparisonDefaultPro.js +45 -40
  41. package/dist/LineChartComparisonDefaultPro.js.map +1 -1
  42. package/dist/LineChartDefaultPro.js +37 -29
  43. package/dist/LineChartDefaultPro.js.map +1 -1
  44. package/dist/LineChartGroupedPro.js +31 -23
  45. package/dist/LineChartGroupedPro.js.map +1 -1
  46. package/dist/MeasureSingleSelectFieldPro.js +86 -0
  47. package/dist/MeasureSingleSelectFieldPro.js.map +1 -0
  48. package/dist/MultiSelectFieldPro.js +4 -4
  49. package/dist/PieChartPro.js +4 -4
  50. package/dist/PivotTablePro.js +4 -4
  51. package/dist/SingleSelectFieldPro.js +5 -5
  52. package/dist/SingleSelectFieldPro.js.map +1 -1
  53. package/dist/TableChartPaginated.js +4 -4
  54. package/dist/TableScrollable.js +17 -17
  55. package/dist/{bars.utils-DLqiVSYV.js → bars.utils-B088DNG-.js} +4 -4
  56. package/dist/{bars.utils-DLqiVSYV.js.map → bars.utils-B088DNG-.js.map} +1 -1
  57. package/dist/{charts.utils-lvlkFPJk.js → charts.utils-D8oW5W5r.js} +4 -4
  58. package/dist/{charts.utils-lvlkFPJk.js.map → charts.utils-D8oW5W5r.js.map} +1 -1
  59. package/dist/{component.inputs.constants-DO_jX-yc.js → component.inputs.constants-DzpzJ9Na.js} +476 -381
  60. package/dist/component.inputs.constants-DzpzJ9Na.js.map +1 -0
  61. package/dist/components/charts/bars/BarChartDefaultHorizontalPro/index.d.ts +2 -1
  62. package/dist/components/charts/bars/BarChartDefaultHorizontalPro/index.d.ts.map +1 -1
  63. package/dist/components/charts/bars/BarChartDefaultPro/index.d.ts +2 -1
  64. package/dist/components/charts/bars/BarChartDefaultPro/index.d.ts.map +1 -1
  65. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/index.d.ts +2 -1
  66. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/index.d.ts.map +1 -1
  67. package/dist/components/charts/bars/BarChartGroupedPro/index.d.ts +2 -1
  68. package/dist/components/charts/bars/BarChartGroupedPro/index.d.ts.map +1 -1
  69. package/dist/components/charts/bars/BarChartStackedHorizontalPro/index.d.ts +2 -1
  70. package/dist/components/charts/bars/BarChartStackedHorizontalPro/index.d.ts.map +1 -1
  71. package/dist/components/charts/bars/BarChartStackedPro/index.d.ts +2 -1
  72. package/dist/components/charts/bars/BarChartStackedPro/index.d.ts.map +1 -1
  73. package/dist/components/charts/lines/LineChartComparisonDefaultPro/index.d.ts +2 -1
  74. package/dist/components/charts/lines/LineChartComparisonDefaultPro/index.d.ts.map +1 -1
  75. package/dist/components/charts/lines/LineChartDefaultPro/index.d.ts +2 -1
  76. package/dist/components/charts/lines/LineChartDefaultPro/index.d.ts.map +1 -1
  77. package/dist/components/charts/lines/LineChartGroupedPro/index.d.ts +2 -1
  78. package/dist/components/charts/lines/LineChartGroupedPro/index.d.ts.map +1 -1
  79. package/dist/components/charts/shared/ChartGranularitySelectField/ChartGranularitySelectField.d.ts +9 -0
  80. package/dist/components/charts/shared/ChartGranularitySelectField/ChartGranularitySelectField.d.ts.map +1 -0
  81. package/dist/components/charts/utils/granularity.utils.d.ts +13 -0
  82. package/dist/components/charts/utils/granularity.utils.d.ts.map +1 -0
  83. package/dist/components/component.inputs.constants.d.ts +45 -0
  84. package/dist/components/component.inputs.constants.d.ts.map +1 -1
  85. package/dist/components/component.subinputs.constants.d.ts +18 -0
  86. package/dist/components/component.subinputs.constants.d.ts.map +1 -1
  87. package/dist/components/editors/DimensionSingleSelectFieldPro/index.d.ts +12 -0
  88. package/dist/components/editors/DimensionSingleSelectFieldPro/index.d.ts.map +1 -0
  89. package/dist/components/editors/GranularitySelectFieldPro/index.d.ts.map +1 -1
  90. package/dist/components/editors/MeasureSingleSelectFieldPro/index.d.ts +12 -0
  91. package/dist/components/editors/MeasureSingleSelectFieldPro/index.d.ts.map +1 -0
  92. package/dist/components/editors/shared/DimensionAndMeasureSingleSelectField/DimensionAndMeasureSingleSelectField.d.ts +11 -0
  93. package/dist/components/editors/shared/DimensionAndMeasureSingleSelectField/DimensionAndMeasureSingleSelectField.d.ts.map +1 -0
  94. package/dist/components/editors/shared/GranularitySelectField/GranularitySelectField.d.ts +12 -0
  95. package/dist/components/editors/shared/GranularitySelectField/GranularitySelectField.d.ts.map +1 -0
  96. package/dist/components/editors/{GranularitySelectFieldPro/GranularitySelectFieldPro.utils.d.ts → shared/GranularitySelectField/GranularitySelectField.utils.d.ts} +3 -3
  97. package/dist/components/editors/shared/GranularitySelectField/GranularitySelectField.utils.d.ts.map +1 -0
  98. package/dist/components/editors/utils/dimensionsAndMeasures.utils.d.ts +9 -0
  99. package/dist/components/editors/utils/dimensionsAndMeasures.utils.d.ts.map +1 -0
  100. package/dist/components/preview.data.constants.d.ts +1 -0
  101. package/dist/components/preview.data.constants.d.ts.map +1 -1
  102. package/dist/embeddable-components.json +26 -22
  103. package/dist/{formatter.utils-CBCUxVH8.js → formatter.utils-CiN6axbW.js} +8 -8
  104. package/dist/{formatter.utils-CBCUxVH8.js.map → formatter.utils-CiN6axbW.js.map} +1 -1
  105. package/dist/granularity.utils-CA504xa0.js +15 -0
  106. package/dist/granularity.utils-CA504xa0.js.map +1 -0
  107. package/dist/{index-DLT2A69c.js → index-7JWw7tI5.js} +5 -5
  108. package/dist/{index-DLT2A69c.js.map → index-7JWw7tI5.js.map} +1 -1
  109. package/dist/index-9WoT-_pt.js +83 -0
  110. package/dist/index-9WoT-_pt.js.map +1 -0
  111. package/dist/{index-BRX2mrGM.js → index-BCVHDZZk.js} +18 -18
  112. package/dist/{index-BRX2mrGM.js.map → index-BCVHDZZk.js.map} +1 -1
  113. package/dist/index-BEckqi71.js +346 -0
  114. package/dist/index-BEckqi71.js.map +1 -0
  115. package/dist/{index-EOl5XOZN.js → index-BaTX0t-a.js} +6 -6
  116. package/dist/{index-EOl5XOZN.js.map → index-BaTX0t-a.js.map} +1 -1
  117. package/dist/{index-s4oA7Iyp.js → index-BnOZcps-.js} +8 -8
  118. package/dist/{index-s4oA7Iyp.js.map → index-BnOZcps-.js.map} +1 -1
  119. package/dist/{index-Cn_Rs8nk.js → index-Bv9-6Ht7.js} +5 -5
  120. package/dist/{index-Cn_Rs8nk.js.map → index-Bv9-6Ht7.js.map} +1 -1
  121. package/dist/{index-0eDJ_Ho5.js → index-CEDNCQK8.js} +5 -5
  122. package/dist/{index-0eDJ_Ho5.js.map → index-CEDNCQK8.js.map} +1 -1
  123. package/dist/{index-CpUKjpYd.js → index-ClEmYHgx.js} +4 -4
  124. package/dist/{index-CpUKjpYd.js.map → index-ClEmYHgx.js.map} +1 -1
  125. package/dist/{index-BRuc7lF2.js → index-Co-4RSTf.js} +5 -5
  126. package/dist/{index-BRuc7lF2.js.map → index-Co-4RSTf.js.map} +1 -1
  127. package/dist/{index-CzM9TqMe.js → index-Crpz4FA4.js} +6 -6
  128. package/dist/{index-CzM9TqMe.js.map → index-Crpz4FA4.js.map} +1 -1
  129. package/dist/index-D37a5H7U.js +182 -0
  130. package/dist/index-D37a5H7U.js.map +1 -0
  131. package/dist/index-DADSJYlJ.js +177 -0
  132. package/dist/index-DADSJYlJ.js.map +1 -0
  133. package/dist/index-DELS_iFy.js +92 -0
  134. package/dist/index-DELS_iFy.js.map +1 -0
  135. package/dist/index-DKYeygzz.js +91 -0
  136. package/dist/index-DKYeygzz.js.map +1 -0
  137. package/dist/{index-BSK_5Rq3.js → index-DeWASjPW.js} +5 -5
  138. package/dist/{index-BSK_5Rq3.js.map → index-DeWASjPW.js.map} +1 -1
  139. package/dist/index-DyN2Ja6Z.js +93 -0
  140. package/dist/index-DyN2Ja6Z.js.map +1 -0
  141. package/dist/index-Rm0SvvJH.js +82 -0
  142. package/dist/index-Rm0SvvJH.js.map +1 -0
  143. package/dist/index-eDr6IKsf.js +90 -0
  144. package/dist/index-eDr6IKsf.js.map +1 -0
  145. package/dist/{index-Rxsr4tZ-.js → index-mtJHlsB1.js} +5 -5
  146. package/dist/{index-Rxsr4tZ-.js.map → index-mtJHlsB1.js.map} +1 -1
  147. package/dist/{index-DZYPPNrI.js → index-n6RmR7mX.js} +5 -5
  148. package/dist/{index-DZYPPNrI.js.map → index-n6RmR7mX.js.map} +1 -1
  149. package/dist/index.js +70 -69
  150. package/dist/{pies.utils-BxCBtjpf.js → pies.utils-DLk70PA8.js} +5 -5
  151. package/dist/{pies.utils-BxCBtjpf.js.map → pies.utils-DLk70PA8.js.map} +1 -1
  152. package/dist/{preview.data.constants-CXMriS2F.js → preview.data.constants-BBIMPXYy.js} +22 -21
  153. package/dist/preview.data.constants-BBIMPXYy.js.map +1 -0
  154. package/dist/remarkable-pro.css +1 -1
  155. package/dist/{tables.utils-DMLGNJ4g.js → tables.utils-C7MWIQsp.js} +4 -4
  156. package/dist/{tables.utils-DMLGNJ4g.js.map → tables.utils-C7MWIQsp.js.map} +1 -1
  157. package/dist/theme/defaults/defaults.GranularityOptions.constants.d.ts +1 -0
  158. package/dist/theme/defaults/defaults.GranularityOptions.constants.d.ts.map +1 -1
  159. package/dist/{timeRange.utils-C_oRVExZ.js → timeRange.utils-LHM3sXwE.js} +5 -5
  160. package/dist/{timeRange.utils-C_oRVExZ.js.map → timeRange.utils-LHM3sXwE.js.map} +1 -1
  161. package/package.json +2 -2
  162. package/dist/component.inputs.constants-DO_jX-yc.js.map +0 -1
  163. package/dist/components/editors/GranularitySelectFieldPro/GranularitySelectFieldPro.utils.d.ts.map +0 -1
  164. package/dist/index-ByFoIwAq.js +0 -83
  165. package/dist/index-ByFoIwAq.js.map +0 -1
  166. package/dist/index-CRWWARnB.js +0 -75
  167. package/dist/index-CRWWARnB.js.map +0 -1
  168. package/dist/index-CVIirzal.js +0 -73
  169. package/dist/index-CVIirzal.js.map +0 -1
  170. package/dist/index-Cj1Zuh74.js +0 -165
  171. package/dist/index-Cj1Zuh74.js.map +0 -1
  172. package/dist/index-D9LxkwlG.js +0 -82
  173. package/dist/index-D9LxkwlG.js.map +0 -1
  174. package/dist/index-DDeRZxp1.js +0 -334
  175. package/dist/index-DDeRZxp1.js.map +0 -1
  176. package/dist/index-DMtpdR9I.js +0 -170
  177. package/dist/index-DMtpdR9I.js.map +0 -1
  178. package/dist/index-L5_Ts7FG.js +0 -83
  179. package/dist/index-L5_Ts7FG.js.map +0 -1
  180. package/dist/index-Uhz2U4Dp.js +0 -84
  181. package/dist/index-Uhz2U4Dp.js.map +0 -1
  182. package/dist/preview.data.constants-CXMriS2F.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, v as p, V as u } from "./Color.type.emb-DWdIUAm5.js";
2
+ import { j as r, A as a, I as i, w as p, V as u } from "./Color.type.emb-De2K8PVb.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 n, defineComponent as t } from "@embeddable.com/react";
2
- import { V as r } from "./Color.type.emb-DWdIUAm5.js";
3
- import { D as i } from "./index-CpUKjpYd.js";
4
- import { b as e, C as a } from "./component.inputs.constants-DO_jX-yc.js";
2
+ import { V as r } from "./Color.type.emb-De2K8PVb.js";
3
+ import { D as i } from "./index-ClEmYHgx.js";
4
+ import { b as e, C as a } from "./component.inputs.constants-DzpzJ9Na.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 C, definePreview as P, defineComponent as y } from "@embeddable.com/react";
2
- import { j as l, k as D, V as s } from "./Color.type.emb-DWdIUAm5.js";
2
+ import { j as l, k as D, V as s } from "./Color.type.emb-De2K8PVb.js";
3
3
  import { u as w, g as V, a as k, b as S } from "./dates.utils-BF32dTLi.js";
4
- import { a as j, r as F, i as M, b as a } from "./component.inputs.constants-DO_jX-yc.js";
5
- import { E as T } from "./EditorCard-ZXwl5-DV.js";
6
- import { I as x } from "./IconCalendarFilled-Bl7kPqxG.js";
4
+ import { a as j, r as F, i as M, b as a } from "./component.inputs.constants-DzpzJ9Na.js";
5
+ import { E as T } from "./EditorCard-B9UFM_uA.js";
6
+ import { I as x } from "./IconCalendarFilled-CYiLMPm9.js";
7
7
  const r = (e) => {
8
8
  const t = C();
9
9
  j(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-DWdIUAm5.js";
3
- import { D as n } from "./index-BRX2mrGM.js";
4
- import { b as e } from "./component.inputs.constants-DO_jX-yc.js";
2
+ import { V as t } from "./Color.type.emb-De2K8PVb.js";
3
+ import { D as n } from "./index-BCVHDZZk.js";
4
+ import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
5
5
  const r = {
6
6
  name: "DateRangeSelectFieldPro",
7
7
  label: "Date-Range Picker - Presets",
@@ -0,0 +1,45 @@
1
+ import { j as f, S as d } from "./Color.type.emb-De2K8PVb.js";
2
+ import { useTheme as S } from "@embeddable.com/react";
3
+ import { useState as p, useEffect as g } from "react";
4
+ import { g as C } from "./formatter.utils-CiN6axbW.js";
5
+ const v = ({
6
+ dimensionsAndMeasures: s,
7
+ searchValue: r,
8
+ theme: a
9
+ }) => {
10
+ const n = C(a);
11
+ return s.filter((e) => n.dimensionOrMeasureTitle(e).toLowerCase().includes(r.toLowerCase())).map((e) => ({
12
+ value: e.name,
13
+ label: n.dimensionOrMeasureTitle(e)
14
+ }));
15
+ }, M = (s) => {
16
+ const r = S(), [a, n] = p(""), { selectedValue: e, options: t, clearable: i, placeholder: m, onChange: l } = s, u = (c) => {
17
+ const o = t.find((h) => h.name === c);
18
+ l(o);
19
+ };
20
+ return g(() => {
21
+ if (!(!i && !e)) return;
22
+ const o = t == null ? void 0 : t[0];
23
+ o && l(o);
24
+ }, [i, e, t, l]), /* @__PURE__ */ f.jsx(
25
+ d,
26
+ {
27
+ searchable: !0,
28
+ clearable: i,
29
+ placeholder: m,
30
+ value: e == null ? void 0 : e.name,
31
+ onChange: u,
32
+ onSearch: n,
33
+ options: v({
34
+ dimensionsAndMeasures: t,
35
+ searchValue: a,
36
+ theme: r
37
+ }),
38
+ avoidCollisions: !1
39
+ }
40
+ );
41
+ };
42
+ export {
43
+ M as D
44
+ };
45
+ //# sourceMappingURL=DimensionAndMeasureSingleSelectField-CJ1yAcRd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DimensionAndMeasureSingleSelectField-CJ1yAcRd.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;"}
@@ -0,0 +1,86 @@
1
+ import { j as i, V as o } from "./Color.type.emb-De2K8PVb.js";
2
+ import { useTheme as f, definePreview as g, defineComponent as S } from "@embeddable.com/react";
3
+ import { E as v } from "./EditorCard-B9UFM_uA.js";
4
+ import { a as h, r as b, b as n } from "./component.inputs.constants-DzpzJ9Na.js";
5
+ import { D } from "./DimensionAndMeasureSingleSelectField-CJ1yAcRd.js";
6
+ import { p as t } from "./preview.data.constants-BBIMPXYy.js";
7
+ const s = (e) => {
8
+ const l = f();
9
+ h(l);
10
+ const { selectedDimension: a, dimensionOptions: r, clearable: d, onChange: m } = e, { title: p, description: c, placeholder: u } = b(e);
11
+ return /* @__PURE__ */ i.jsx(v, { title: p, subtitle: c, children: /* @__PURE__ */ i.jsx(
12
+ D,
13
+ {
14
+ selectedValue: a,
15
+ options: r,
16
+ placeholder: u,
17
+ clearable: d,
18
+ onChange: m
19
+ }
20
+ ) });
21
+ }, C = {
22
+ name: "DimensionSingleSelectFieldPro",
23
+ label: "Dimension Single Select Field",
24
+ category: "Dropdowns",
25
+ defaultWidth: 300,
26
+ defaultHeight: 120,
27
+ inputs: [
28
+ n.dataset,
29
+ n.title,
30
+ n.description,
31
+ { ...n.placeholder, defaultValue: "Select value..." },
32
+ n.dimensionOptions,
33
+ {
34
+ ...n.dimension,
35
+ name: "selectedDimension",
36
+ label: "Selected dimension",
37
+ category: "Pre-configured variables",
38
+ required: !1,
39
+ config: {
40
+ dataset: "dataset"
41
+ }
42
+ },
43
+ { ...n.clearable, defaultValue: !1 }
44
+ ],
45
+ events: [
46
+ {
47
+ name: "onChange",
48
+ label: "Selected dimension updated",
49
+ properties: [
50
+ {
51
+ name: "value",
52
+ label: "Selected dimension",
53
+ type: "dimension"
54
+ }
55
+ ]
56
+ }
57
+ ],
58
+ variables: [
59
+ {
60
+ name: "dimension single-select value",
61
+ type: "dimension",
62
+ defaultValue: o.noFilter(),
63
+ inputs: ["selectedDimension"],
64
+ events: [{ name: "onChange", property: "value" }]
65
+ }
66
+ ]
67
+ }, j = g(s, {
68
+ dimensionOptions: [t.dimension, t.dimensionGroup],
69
+ onChange: () => null
70
+ }), w = S(s, C, {
71
+ props: (e) => ({
72
+ ...e,
73
+ dimensionOptions: e.dimensionOptions ?? []
74
+ }),
75
+ events: {
76
+ onChange: (e) => ({
77
+ value: e ?? o.noFilter()
78
+ })
79
+ }
80
+ });
81
+ export {
82
+ w as default,
83
+ C as meta,
84
+ j as preview
85
+ };
86
+ //# sourceMappingURL=DimensionSingleSelectFieldPro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DimensionSingleSelectFieldPro.js","sources":["../src/components/editors/DimensionSingleSelectFieldPro/index.tsx","../src/components/editors/DimensionSingleSelectFieldPro/DimensionSingleSelectFieldPro.emb.ts"],"sourcesContent":["import { Dimension } from '@embeddable.com/core';\nimport { EditorCard } from '../shared/EditorCard/EditorCard';\nimport { resolveI18nProps } from '../../component.utils';\nimport { ChartCardHeaderProps } from '../../charts/shared/ChartCard/ChartCard';\nimport { Theme } from '../../../theme/theme.types';\nimport { useTheme } from '@embeddable.com/react';\nimport { i18nSetup } from '../../../theme/i18n/i18n';\nimport { DimensionAndMeasureSingleSelectField } from '../shared/DimensionAndMeasureSingleSelectField/DimensionAndMeasureSingleSelectField';\n\ntype DimensionSingleSelectFieldProProps = {\n selectedDimension?: Dimension;\n dimensionOptions: Dimension[];\n placeholder?: string;\n clearable?: boolean;\n onChange: (value: Dimension | undefined) => void;\n} & ChartCardHeaderProps;\n\nconst DimensionSingleSelectFieldPro = (props: DimensionSingleSelectFieldProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { selectedDimension, dimensionOptions, clearable, onChange } = props;\n const { title, description, placeholder } = resolveI18nProps(props);\n\n return (\n <EditorCard title={title} subtitle={description}>\n <DimensionAndMeasureSingleSelectField<Dimension>\n selectedValue={selectedDimension}\n options={dimensionOptions}\n placeholder={placeholder}\n clearable={clearable}\n onChange={onChange}\n />\n </EditorCard>\n );\n};\n\nexport default DimensionSingleSelectFieldPro;\n","import { Value } from '@embeddable.com/core';\nimport {\n EmbeddedComponentMeta,\n Inputs,\n defineComponent,\n definePreview,\n} from '@embeddable.com/react';\nimport DimensionSingleSelectFieldPro from './index';\nimport { inputs } from '../../component.inputs.constants';\nimport { previewData } from '../../preview.data.constants';\n\nexport const meta = {\n name: 'DimensionSingleSelectFieldPro',\n label: 'Dimension Single Select Field',\n category: 'Dropdowns',\n defaultWidth: 300,\n defaultHeight: 120,\n inputs: [\n inputs.dataset,\n inputs.title,\n inputs.description,\n { ...inputs.placeholder, defaultValue: 'Select value...' },\n inputs.dimensionOptions,\n {\n ...inputs.dimension,\n name: 'selectedDimension',\n label: 'Selected dimension',\n category: 'Pre-configured variables',\n required: false,\n config: {\n dataset: 'dataset',\n },\n },\n { ...inputs.clearable, defaultValue: false },\n ],\n events: [\n {\n name: 'onChange',\n label: 'Selected dimension updated',\n properties: [\n {\n name: 'value',\n label: 'Selected dimension',\n type: 'dimension',\n },\n ],\n },\n ],\n variables: [\n {\n name: 'dimension single-select value',\n type: 'dimension',\n defaultValue: Value.noFilter(),\n inputs: ['selectedDimension'],\n events: [{ name: 'onChange', property: 'value' }],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport const preview = definePreview(DimensionSingleSelectFieldPro, {\n dimensionOptions: [previewData.dimension, previewData.dimensionGroup],\n onChange: () => null,\n});\n\nexport default defineComponent(DimensionSingleSelectFieldPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n dimensionOptions: inputs.dimensionOptions ?? [],\n };\n },\n events: {\n onChange: (value) => {\n return {\n value: value ?? Value.noFilter(),\n };\n },\n },\n});\n"],"names":["DimensionSingleSelectFieldPro","props","theme","useTheme","i18nSetup","selectedDimension","dimensionOptions","clearable","onChange","title","description","placeholder","resolveI18nProps","jsx","EditorCard","DimensionAndMeasureSingleSelectField","meta","inputs","Value","preview","definePreview","previewData","DimensionSingleSelectFieldPro_emb","defineComponent","value"],"mappings":";;;;;;AAiBA,MAAMA,IAAgC,CAACC,MAA8C;AACnF,QAAMC,IAAQC,EAAA;AACd,EAAAC,EAAUF,CAAK;AAEf,QAAM,EAAE,mBAAAG,GAAmB,kBAAAC,GAAkB,WAAAC,GAAW,UAAAC,MAAaP,GAC/D,EAAE,OAAAQ,GAAO,aAAAC,GAAa,aAAAC,EAAA,IAAgBC,EAAiBX,CAAK;AAElE,SACEY,gBAAAA,EAAAA,IAACC,GAAA,EAAW,OAAAL,GAAc,UAAUC,GAClC,UAAAG,gBAAAA,EAAAA;AAAAA,IAACE;AAAA,IAAA;AAAA,MACC,eAAeV;AAAA,MACf,SAASC;AAAA,MACT,aAAAK;AAAA,MACA,WAAAJ;AAAA,MACA,UAAAC;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ,GCxBaQ,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd,eAAe;AAAA,EACf,QAAQ;AAAA,IACNC,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACP,EAAE,GAAGA,EAAO,aAAa,cAAc,kBAAA;AAAA,IACvCA,EAAO;AAAA,IACP;AAAA,MACE,GAAGA,EAAO;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,EAAE,GAAGA,EAAO,WAAW,cAAc,GAAA;AAAA,EAAM;AAAA,EAE7C,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EAEF,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,cAAcC,EAAM,SAAA;AAAA,MACpB,QAAQ,CAAC,mBAAmB;AAAA,MAC5B,QAAQ,CAAC,EAAE,MAAM,YAAY,UAAU,SAAS;AAAA,IAAA;AAAA,EAClD;AAEJ,GAEaC,IAAUC,EAAcpB,GAA+B;AAAA,EAClE,kBAAkB,CAACqB,EAAY,WAAWA,EAAY,cAAc;AAAA,EACpE,UAAU,MAAM;AAClB,CAAC,GAEDC,IAAeC,EAAgBvB,GAA+BgB,GAAM;AAAA,EAClE,OAAO,CAACC,OACC;AAAA,IACL,GAAGA;AAAAA,IACH,kBAAkBA,EAAO,oBAAoB,CAAA;AAAA,EAAC;AAAA,EAGlD,QAAQ;AAAA,IACN,UAAU,CAACO,OACF;AAAA,MACL,OAAOA,KAASN,EAAM,SAAA;AAAA,IAAS;AAAA,EAEnC;AAEJ,CAAC;"}
@@ -1,8 +1,8 @@
1
- import { V as n, l as a } from "./Color.type.emb-DWdIUAm5.js";
1
+ import { V as n, l as a } from "./Color.type.emb-De2K8PVb.js";
2
2
  import { definePreview as r, defineComponent as i } from "@embeddable.com/react";
3
- import { D as o } from "./index-DZYPPNrI.js";
4
- import { b as e } from "./component.inputs.constants-DO_jX-yc.js";
5
- import { p as t } from "./preview.data.constants-CXMriS2F.js";
3
+ import { D as o } from "./index-n6RmR7mX.js";
4
+ import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
5
+ import { p as t } from "./preview.data.constants-BBIMPXYy.js";
6
6
  const m = {
7
7
  name: "DonutChartPro",
8
8
  label: "Donut Chart",
@@ -1,8 +1,8 @@
1
- import { D as s } from "./index-EOl5XOZN.js";
2
- import { V as t, l as r } from "./Color.type.emb-DWdIUAm5.js";
1
+ import { D as s } from "./index-BaTX0t-a.js";
2
+ import { V as t, l as r } from "./Color.type.emb-De2K8PVb.js";
3
3
  import { definePreview as o, defineComponent as i } from "@embeddable.com/react";
4
- import { b as e } from "./component.inputs.constants-DO_jX-yc.js";
5
- import { p as n } from "./preview.data.constants-CXMriS2F.js";
4
+ import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
5
+ import { p as n } from "./preview.data.constants-BBIMPXYy.js";
6
6
  const l = {
7
7
  name: "DonutLabelChartPro",
8
8
  label: "Donut Label Chart",
@@ -1,6 +1,6 @@
1
- import { j as r, q as c, r as d, s as m, t as l } from "./Color.type.emb-DWdIUAm5.js";
1
+ import { j as r, r as c, s as d, t as m, v as l } from "./Color.type.emb-De2K8PVb.js";
2
2
  import { useTheme as p } from "@embeddable.com/react";
3
- import { a as x, i as C, I as j } from "./component.inputs.constants-DO_jX-yc.js";
3
+ import { a as x, i as C, I as j } from "./component.inputs.constants-DzpzJ9Na.js";
4
4
  const u = "_card_15bw3_1", f = {
5
5
  card: u
6
6
  }, b = ({
@@ -29,4 +29,4 @@ const u = "_card_15bw3_1", f = {
29
29
  export {
30
30
  b as E
31
31
  };
32
- //# sourceMappingURL=EditorCard-ZXwl5-DV.js.map
32
+ //# sourceMappingURL=EditorCard-B9UFM_uA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditorCard-ZXwl5-DV.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\ntype EditorCardProps = {\n title?: string;\n subtitle?: string;\n children: React.ReactNode;\n errorMessage?: string;\n};\n\nexport const EditorCard: FC<EditorCardProps> = ({\n title,\n subtitle,\n children,\n errorMessage,\n ...props\n}) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const getDisplay = () => {\n if (errorMessage) {\n return (\n <CardFeedback\n variant=\"error\"\n icon={IconAlertCircle}\n title={i18n.t('editors.errorTitle')}\n message={errorMessage}\n />\n );\n }\n\n return children;\n };\n\n return (\n <Card className={styles.card} {...props}>\n <CardHeader title={title} subtitle={subtitle} />\n <CardContent>{getDisplay()}</CardContent>\n </Card>\n );\n};\n"],"names":["EditorCard","title","subtitle","children","errorMessage","props","theme","useTheme","i18nSetup","getDisplay","jsx","CardFeedback","IconAlertCircle","i18n","Card","styles","CardHeader","CardContent"],"mappings":";;;;;GAeaA,IAAkC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAMG,IAAa,MACbL,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,MAAO,GAAGV,GAChC,UAAA;AAAA,IAAAK,gBAAAA,EAAAA,IAACM,GAAA,EAAW,OAAAf,GAAc,UAAAC,EAAA,CAAoB;AAAA,IAC9CQ,gBAAAA,EAAAA,IAACO,GAAA,EAAa,UAAAR,EAAA,EAAW,CAAE;AAAA,EAAA,GAC7B;AAEJ;"}
1
+ {"version":3,"file":"EditorCard-B9UFM_uA.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\ntype EditorCardProps = {\n title?: string;\n subtitle?: string;\n children: React.ReactNode;\n errorMessage?: string;\n};\n\nexport const EditorCard: FC<EditorCardProps> = ({\n title,\n subtitle,\n children,\n errorMessage,\n ...props\n}) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const getDisplay = () => {\n if (errorMessage) {\n return (\n <CardFeedback\n variant=\"error\"\n icon={IconAlertCircle}\n title={i18n.t('editors.errorTitle')}\n message={errorMessage}\n />\n );\n }\n\n return children;\n };\n\n return (\n <Card className={styles.card} {...props}>\n <CardHeader title={title} subtitle={subtitle} />\n <CardContent>{getDisplay()}</CardContent>\n </Card>\n );\n};\n"],"names":["EditorCard","title","subtitle","children","errorMessage","props","theme","useTheme","i18nSetup","getDisplay","jsx","CardFeedback","IconAlertCircle","i18n","Card","styles","CardHeader","CardContent"],"mappings":";;;;;GAeaA,IAAkC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAMG,IAAa,MACbL,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,MAAO,GAAGV,GAChC,UAAA;AAAA,IAAAK,gBAAAA,EAAAA,IAACM,GAAA,EAAW,OAAAf,GAAc,UAAAC,EAAA,CAAoB;AAAA,IAC9CQ,gBAAAA,EAAAA,IAACO,GAAA,EAAa,UAAAR,EAAA,EAAW,CAAE;AAAA,EAAA,GAC7B;AAEJ;"}
@@ -0,0 +1,104 @@
1
+ import { j as E, S as F } from "./Color.type.emb-De2K8PVb.js";
2
+ import { useMemo as g, useEffect as C } from "react";
3
+ import { useTheme as G } from "@embeddable.com/react";
4
+ import { f as N, e as d, a as w } from "./component.inputs.constants-DzpzJ9Na.js";
5
+ const D = 1, v = 100, x = () => N.map((e) => ({
6
+ ...e,
7
+ label: d(e.label)
8
+ })), m = (e) => {
9
+ if (e instanceof Date) return Number.isNaN(e.getTime()) ? null : e;
10
+ if (typeof e == "string" || typeof e == "number") {
11
+ const t = new Date(e);
12
+ return Number.isNaN(t.getTime()) ? null : t;
13
+ }
14
+ return null;
15
+ }, u = (e) => new Date(e.getTime() + 1), s = (e, t, r) => (t.getTime() - e.getTime()) / r;
16
+ function U(e, t, r) {
17
+ if (e > t) return 0;
18
+ switch (r) {
19
+ case "second":
20
+ return s(e, u(t), 1e3);
21
+ case "minute":
22
+ return s(e, u(t), 60 * 1e3);
23
+ case "hour":
24
+ return s(e, u(t), 3600 * 1e3);
25
+ case "day":
26
+ return s(e, u(t), 1440 * 60 * 1e3);
27
+ case "week":
28
+ return s(e, u(t), 10080 * 60 * 1e3);
29
+ case "month":
30
+ return s(e, u(t), 672 * 60 * 60 * 1e3);
31
+ // shortest month
32
+ case "quarter":
33
+ return s(e, u(t), 2160 * 60 * 60 * 1e3);
34
+ // shortest quarter
35
+ case "year":
36
+ return s(e, u(t), 365 * 24 * 60 * 60 * 1e3);
37
+ }
38
+ }
39
+ const k = (e, t, r) => {
40
+ const o = U(e, t, r);
41
+ return o >= D && o <= v;
42
+ }, A = (e, t) => {
43
+ if (!e) return t;
44
+ const r = m(e == null ? void 0 : e.from), o = m(e == null ? void 0 : e.to);
45
+ if (!r || !o) return t;
46
+ const a = /* @__PURE__ */ new Set();
47
+ for (const c of t) {
48
+ const i = c.value;
49
+ k(r, o, i) && a.add(i);
50
+ }
51
+ return t.filter((c) => a.has(c.value));
52
+ }, S = (e, t) => {
53
+ var o;
54
+ if (!t)
55
+ return;
56
+ if (e.some((a) => a.value === t))
57
+ return t;
58
+ const r = e.length > 2 ? 1 : 0;
59
+ return (o = e[r]) == null ? void 0 : o.value;
60
+ }, K = (e) => {
61
+ const t = G();
62
+ w(t);
63
+ const {
64
+ granularity: r,
65
+ granularities: o,
66
+ clearable: a,
67
+ placeholder: c,
68
+ primaryTimeRange: i,
69
+ variant: p,
70
+ side: T,
71
+ align: y,
72
+ onChange: f
73
+ } = e, h = x(), l = g(() => A(
74
+ i,
75
+ h.filter(
76
+ (n) => o == null ? void 0 : o.includes(n.value)
77
+ )
78
+ ), [i, o]);
79
+ C(() => {
80
+ if (r && !l.some((n) => n.value === r)) {
81
+ const n = S(l, r);
82
+ n && f(n);
83
+ }
84
+ }, [l, r, f]);
85
+ const b = S(l, r);
86
+ return /* @__PURE__ */ E.jsx(
87
+ F,
88
+ {
89
+ variant: p,
90
+ clearable: a,
91
+ placeholder: c,
92
+ value: b,
93
+ options: l,
94
+ onChange: (n) => f(n),
95
+ avoidCollisions: !1,
96
+ side: T,
97
+ align: y
98
+ }
99
+ );
100
+ };
101
+ export {
102
+ K as G
103
+ };
104
+ //# sourceMappingURL=GranularitySelectField-DuRk6qY8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GranularitySelectField-DuRk6qY8.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,145 +1,51 @@
1
- import { useTheme as T, definePreview as C, defineComponent as F } from "@embeddable.com/react";
2
- import { j as m, S as k, V as E } from "./Color.type.emb-DWdIUAm5.js";
3
- import { c as G, a as P, r as D, b as i } from "./component.inputs.constants-DO_jX-yc.js";
4
- import { useMemo as O, useEffect as V } from "react";
5
- import { E as q } from "./EditorCard-ZXwl5-DV.js";
6
- const a = {
7
- second: "second",
8
- minute: "minute",
9
- hour: "hour",
10
- day: "day",
11
- week: "week",
12
- month: "month",
13
- quarter: "quarter",
14
- year: "year"
15
- }, x = [
16
- { value: a.second, label: "defaults.granularityOptions.second|Second" },
17
- { value: a.minute, label: "defaults.granularityOptions.minute|Minute" },
18
- { value: a.hour, label: "defaults.granularityOptions.hour|Hour" },
19
- { value: a.day, label: "defaults.granularityOptions.day|Day" },
20
- { value: a.week, label: "defaults.granularityOptions.week|Week" },
21
- { value: a.month, label: "defaults.granularityOptions.month|Month" },
22
- { value: a.quarter, label: "defaults.granularityOptions.quarter|Quarter" },
23
- { value: a.year, label: "defaults.granularityOptions.year|Year" }
24
- ], A = 1, M = 100, N = () => x.map((e) => ({
25
- ...e,
26
- label: G(e.label)
27
- })), p = (e) => {
28
- if (e instanceof Date) return isNaN(e.getTime()) ? null : e;
29
- if (typeof e == "string" || typeof e == "number") {
30
- const r = new Date(e);
31
- return isNaN(r.getTime()) ? null : r;
32
- }
33
- return null;
34
- }, l = (e) => new Date(e.getTime() + 1), o = (e, r, t) => (r.getTime() - e.getTime()) / t;
35
- function U(e, r, t) {
36
- if (e > r) return 0;
37
- switch (t) {
38
- case a.second:
39
- return o(e, l(r), 1e3);
40
- case a.minute:
41
- return o(e, l(r), 60 * 1e3);
42
- case a.hour:
43
- return o(e, l(r), 3600 * 1e3);
44
- case a.day:
45
- return o(e, l(r), 1440 * 60 * 1e3);
46
- case a.week:
47
- return o(e, l(r), 10080 * 60 * 1e3);
48
- case a.month:
49
- return o(e, l(r), 672 * 60 * 60 * 1e3);
50
- // shortest month
51
- case a.quarter:
52
- return o(e, l(r), 2160 * 60 * 60 * 1e3);
53
- // shortest quarter
54
- case a.year:
55
- return o(e, l(r), 365 * 24 * 60 * 60 * 1e3);
56
- }
57
- }
58
- const _ = (e, r, t) => {
59
- const n = U(e, r, t);
60
- return n >= A && n <= M;
61
- }, j = (e, r) => {
62
- if (!e) return r;
63
- const t = p(e == null ? void 0 : e.from), n = p(e == null ? void 0 : e.to);
64
- if (!t || !n) return r;
65
- const s = /* @__PURE__ */ new Set();
66
- for (const u of r) {
67
- const d = u.value;
68
- _(t, n, d) && s.add(d);
69
- }
70
- return r.filter((u) => s.has(u.value));
71
- }, g = (e, r) => {
72
- var n;
73
- if (!r)
74
- return;
75
- if (e.some((s) => s.value === r))
76
- return r;
77
- const t = e.length > 2 ? 1 : 0;
78
- return (n = e[t]) == null ? void 0 : n.value;
79
- }, b = (e) => {
80
- const r = T();
81
- P(r);
82
- const { granularity: t, granularities: n, clearable: s, onChange: u } = e, { description: d, placeholder: h, title: v, primaryTimeRange: f } = D(e), S = N(), y = O(() => j(
83
- f,
84
- S.filter(
85
- (c) => n == null ? void 0 : n.includes(c.value)
86
- )
87
- ), [f, n]);
88
- V(() => {
89
- if (t && !y.some((c) => c.value === t)) {
90
- const c = g(y, t);
91
- c && u(c);
92
- }
93
- }, [y, t, u]);
94
- const w = g(y, t);
95
- return /* @__PURE__ */ m.jsx(q, { title: v, subtitle: d, children: /* @__PURE__ */ m.jsx(
96
- k,
1
+ import { useTheme as p, definePreview as y, defineComponent as b } from "@embeddable.com/react";
2
+ import { j as t, V as f } from "./Color.type.emb-De2K8PVb.js";
3
+ import { a as v, r as h, G as e, b as a } from "./component.inputs.constants-DzpzJ9Na.js";
4
+ import { E as S } from "./EditorCard-B9UFM_uA.js";
5
+ import { G as P } from "./GranularitySelectField-DuRk6qY8.js";
6
+ const l = (r) => {
7
+ const n = p();
8
+ v(n);
9
+ const { granularity: i, granularities: o, clearable: u, primaryTimeRange: s, onChange: d } = r, { description: c, placeholder: g, title: m } = h(r);
10
+ return /* @__PURE__ */ t.jsx(S, { title: m, subtitle: c, children: /* @__PURE__ */ t.jsx(
11
+ P,
97
12
  {
98
- clearable: s,
99
- placeholder: h,
100
- value: w,
101
- options: y,
102
- onChange: u,
103
- avoidCollisions: !1
13
+ clearable: u,
14
+ placeholder: g,
15
+ granularity: i,
16
+ granularities: o,
17
+ primaryTimeRange: s,
18
+ onChange: d
104
19
  }
105
20
  ) });
106
- }, B = {
21
+ }, C = {
107
22
  name: "GranularitySelectFieldPro",
108
23
  label: "Granularity Select Field",
109
24
  category: "Dropdowns",
110
25
  defaultWidth: 300,
111
26
  defaultHeight: 120,
112
27
  inputs: [
113
- i.title,
114
- i.description,
115
- { ...i.placeholder, defaultValue: "Select a granularity" },
28
+ a.title,
29
+ a.description,
30
+ { ...a.placeholder, defaultValue: "Select a granularity" },
116
31
  {
117
- ...i.granularities,
32
+ ...a.granularities,
118
33
  label: "Available granularities",
119
- category: "Pre-configured variables",
120
- // Ignore seconds and minutes
121
- defaultValue: [
122
- a.hour,
123
- a.day,
124
- a.week,
125
- a.month,
126
- a.quarter,
127
- a.year
128
- ]
34
+ category: "Pre-configured variables"
129
35
  },
130
36
  {
131
- ...i.granularity,
37
+ ...a.granularity,
132
38
  label: "Selected granularity",
133
39
  category: "Pre-configured variables"
134
40
  },
135
41
  {
136
- ...i.timeRange,
42
+ ...a.timeRange,
137
43
  name: "primaryTimeRange",
138
44
  label: "Primary date-range",
139
45
  description: "Connect your primary date-range variable to enable automatic selection of the most appropriate granularity",
140
46
  category: "Pre-configured variables"
141
47
  },
142
- { ...i.clearable, defaultValue: !1 }
48
+ { ...a.clearable, defaultValue: !1 }
143
49
  ],
144
50
  events: [
145
51
  {
@@ -163,31 +69,31 @@ const _ = (e, r, t) => {
163
69
  events: [{ name: "onChange", property: "value" }]
164
70
  }
165
71
  ]
166
- }, X = C(b, {
72
+ }, w = y(l, {
167
73
  granularities: [
168
- a.second,
169
- a.minute,
170
- a.hour,
171
- a.day,
172
- a.week,
173
- a.month,
174
- a.quarter,
175
- a.year
74
+ e.second,
75
+ e.minute,
76
+ e.hour,
77
+ e.day,
78
+ e.week,
79
+ e.month,
80
+ e.quarter,
81
+ e.year
176
82
  ],
177
83
  onChange: () => null
178
- }), Y = F(b, B, {
179
- props: (e) => ({
180
- ...e
84
+ }), R = b(l, C, {
85
+ props: (r) => ({
86
+ ...r
181
87
  }),
182
88
  events: {
183
- onChange: (e) => ({
184
- value: e ?? E.noFilter()
89
+ onChange: (r) => ({
90
+ value: r ?? f.noFilter()
185
91
  })
186
92
  }
187
93
  });
188
94
  export {
189
- Y as default,
190
- B as meta,
191
- X as preview
95
+ R as default,
96
+ C as meta,
97
+ w as preview
192
98
  };
193
99
  //# sourceMappingURL=GranularitySelectFieldPro.js.map