@embeddable.com/remarkable-ui 0.1.49 → 0.1.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +18 -17
  2. package/dist/BarChartDefaultHorizontalPro.js.map +1 -1
  3. package/dist/BarChartDefaultPro.js +18 -17
  4. package/dist/BarChartDefaultPro.js.map +1 -1
  5. package/dist/BarChartGroupedHorizontalPro.js +20 -19
  6. package/dist/BarChartGroupedHorizontalPro.js.map +1 -1
  7. package/dist/BarChartGroupedPro.js +20 -19
  8. package/dist/BarChartGroupedPro.js.map +1 -1
  9. package/dist/BarChartStackedHorizontalPro.js +24 -23
  10. package/dist/BarChartStackedHorizontalPro.js.map +1 -1
  11. package/dist/BarChartStackedPro.js +24 -23
  12. package/dist/BarChartStackedPro.js.map +1 -1
  13. package/dist/{ChartCard-CMgDz_bs.js → ChartCard-D-0O5ugW.js} +37 -37
  14. package/dist/{ChartCard-CMgDz_bs.js.map → ChartCard-D-0O5ugW.js.map} +1 -1
  15. package/dist/{ComparisonPeriod.type.emb-C1o3iM9L.js → ComparisonPeriod.type.emb-CYp3nw-9.js} +2 -2
  16. package/dist/{ComparisonPeriod.type.emb-C1o3iM9L.js.map → ComparisonPeriod.type.emb-CYp3nw-9.js.map} +1 -1
  17. package/dist/ComparisonPeriodSelectFieldPro.js +8 -8
  18. package/dist/DateRangeSelectFieldPro.js +2 -2
  19. package/dist/DonutChartPro.js +2 -2
  20. package/dist/DonutLabelChartPro.js +2 -2
  21. package/dist/{EditorCard-CJoUz4uM.js → EditorCard-BhC7oToX.js} +15 -15
  22. package/dist/{EditorCard-CJoUz4uM.js.map → EditorCard-BhC7oToX.js.map} +1 -1
  23. package/dist/HeatMap-By9_uzV_.js +223 -0
  24. package/dist/HeatMap-By9_uzV_.js.map +1 -0
  25. package/dist/HeatMapPro.js +138 -0
  26. package/dist/HeatMapPro.js.map +1 -0
  27. package/dist/{KpiChart-C6zepuhF.js → KpiChart-CS9s8nJ4.js} +10 -10
  28. package/dist/{KpiChart-C6zepuhF.js.map → KpiChart-CS9s8nJ4.js.map} +1 -1
  29. package/dist/KpiChartNumberComparisonPro.js +29 -29
  30. package/dist/KpiChartNumberPro.js +4 -4
  31. package/dist/LineChartComparisonDefaultPro.js +13 -13
  32. package/dist/LineChartDefaultPro.js +10 -10
  33. package/dist/LineChartGroupedPro.js +6 -6
  34. package/dist/MultiSelectFieldPro.js +2 -2
  35. package/dist/PieChartPro.js +2 -2
  36. package/dist/PivotTable-Cx4WG6MV.js +273 -0
  37. package/dist/PivotTable-Cx4WG6MV.js.map +1 -0
  38. package/dist/PivotTablePro.js +43 -43
  39. package/dist/PivotTablePro.js.map +1 -1
  40. package/dist/{SingleSelectField-CJNiLfee.js → SingleSelectField-DlVCi5Ej.js} +15 -15
  41. package/dist/{SingleSelectField-CJNiLfee.js.map → SingleSelectField-DlVCi5Ej.js.map} +1 -1
  42. package/dist/SingleSelectFieldPro.js +2 -2
  43. package/dist/TableChartPaginated.js +27 -27
  44. package/dist/bars.utils-DTdoPs5N.js +146 -0
  45. package/dist/bars.utils-DTdoPs5N.js.map +1 -0
  46. package/dist/{charts.utils-HfNL9dVl.js → charts.utils-D9TXwxGs.js} +4 -4
  47. package/dist/charts.utils-D9TXwxGs.js.map +1 -0
  48. package/dist/{component.constants-CFaxyNCw.js → component.constants-DCOqCFoY.js} +3286 -3124
  49. package/dist/component.constants-DCOqCFoY.js.map +1 -0
  50. package/dist/embeddable-components.json +12 -11
  51. package/dist/embeddable-theme-2b917.js +1 -1
  52. package/dist/{formatter.utils-Cu4uKJSZ.js → formatter.utils-B80iNq9Q.js} +2 -2
  53. package/dist/{formatter.utils-Cu4uKJSZ.js.map → formatter.utils-B80iNq9Q.js.map} +1 -1
  54. package/dist/{index-BAfVF5iP.js → index--tdFwk_H.js} +7 -7
  55. package/dist/{index-BAfVF5iP.js.map → index--tdFwk_H.js.map} +1 -1
  56. package/dist/{index-DvEWwlqq.js → index-BcPj51g3.js} +23 -23
  57. package/dist/{index-DvEWwlqq.js.map → index-BcPj51g3.js.map} +1 -1
  58. package/dist/{index-CxxeUDMD.js → index-C3o3AQpK.js} +11 -11
  59. package/dist/{index-CxxeUDMD.js.map → index-C3o3AQpK.js.map} +1 -1
  60. package/dist/{index-C4BiW71l.js → index-CmE__sUg.js} +8 -8
  61. package/dist/{index-C4BiW71l.js.map → index-CmE__sUg.js.map} +1 -1
  62. package/dist/{index-DW-LmiPi.js → index-D4oPbYPT.js} +8 -8
  63. package/dist/{index-DW-LmiPi.js.map → index-D4oPbYPT.js.map} +1 -1
  64. package/dist/{index-DvMr1tvf.js → index-DpIR-B0R.js} +18 -18
  65. package/dist/{index-DvMr1tvf.js.map → index-DpIR-B0R.js.map} +1 -1
  66. package/dist/index.js +148 -138
  67. package/dist/index.js.map +1 -1
  68. package/dist/{pies.utils-JpKM3rVw.js → pies.utils-DEkgZgVk.js} +6 -6
  69. package/dist/{pies.utils-JpKM3rVw.js.map → pies.utils-DEkgZgVk.js.map} +1 -1
  70. package/dist/remarkable-pro/components/charts/tables/HeatMapPro/index.d.ts +29 -0
  71. package/dist/remarkable-pro/components/charts/tables/HeatMapPro/index.d.ts.map +1 -0
  72. package/dist/remarkable-pro/components/component.constants.d.ts +7 -0
  73. package/dist/remarkable-pro/components/component.constants.d.ts.map +1 -1
  74. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.d.ts +3 -0
  75. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.d.ts.map +1 -0
  76. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.stories.d.ts +9 -0
  77. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.stories.d.ts.map +1 -0
  78. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.types.d.ts +30 -0
  79. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.types.d.ts.map +1 -0
  80. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.utils.d.ts +43 -0
  81. package/dist/remarkable-ui/charts/tables/HeatMap/HeatMap.utils.d.ts.map +1 -0
  82. package/dist/remarkable-ui/charts/tables/PivotTable/PivotTable.d.ts.map +1 -1
  83. package/dist/remarkable-ui/charts/tables/PivotTable/PivotTable.types.d.ts +1 -0
  84. package/dist/remarkable-ui/charts/tables/PivotTable/PivotTable.types.d.ts.map +1 -1
  85. package/dist/remarkable-ui/charts/tables/tables.utils.d.ts +6 -0
  86. package/dist/remarkable-ui/charts/tables/tables.utils.d.ts.map +1 -0
  87. package/dist/remarkable-ui/index.d.ts +6 -1
  88. package/dist/remarkable-ui/index.d.ts.map +1 -1
  89. package/dist/remarkable-ui.css +1 -1
  90. package/dist/tables.utils-D7KXdM2S.js +9 -0
  91. package/dist/tables.utils-D7KXdM2S.js.map +1 -0
  92. package/dist/{timeRange.utils-Z2lmKTCB.js → timeRange.utils-u1NZ0u7o.js} +2 -2
  93. package/dist/{timeRange.utils-Z2lmKTCB.js.map → timeRange.utils-u1NZ0u7o.js.map} +1 -1
  94. package/package.json +1 -1
  95. package/dist/PivotTable-SNPquHl0.js +0 -253
  96. package/dist/PivotTable-SNPquHl0.js.map +0 -1
  97. package/dist/bars.utils-vXPRJDGQ.js +0 -311
  98. package/dist/bars.utils-vXPRJDGQ.js.map +0 -1
  99. package/dist/charts.utils-HfNL9dVl.js.map +0 -1
  100. package/dist/component.constants-CFaxyNCw.js.map +0 -1
@@ -1,32 +1,32 @@
1
- import { ad as S, a2 as R, r as b, j as d, U as O } from "./component.constants-CFaxyNCw.js";
1
+ import { a0 as S, P as R, r as b, j as d, F as O } from "./component.constants-DCOqCFoY.js";
2
2
  import { useTheme as j } from "@embeddable.com/react";
3
3
  import { useState as C, useEffect as c } from "react";
4
- import { S as y } from "./SingleSelectField-CJNiLfee.js";
5
- import { g as x, u as F } from "./editors.timeRange.utils-D9m6B3r1.js";
6
- import { E as T } from "./EditorCard-CJoUz4uM.js";
4
+ import { S as y } from "./SingleSelectField-DlVCi5Ej.js";
5
+ import { g as F, u as x } from "./editors.timeRange.utils-D9m6B3r1.js";
6
+ import { E as T } from "./EditorCard-BhC7oToX.js";
7
7
  /**
8
8
  * @license @tabler/icons-react v3.35.0 - MIT
9
9
  *
10
10
  * This source code is licensed under the MIT license.
11
11
  * See the LICENSE file in the root directory of this source tree.
12
12
  */
13
- const _ = [["path", { d: "M16 2a1 1 0 0 1 .993 .883l.007 .117v1h1a3 3 0 0 1 2.995 2.824l.005 .176v12a3 3 0 0 1 -2.824 2.995l-.176 .005h-12a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-12a3 3 0 0 1 2.824 -2.995l.176 -.005h1v-1a1 1 0 0 1 1.993 -.117l.007 .117v1h6v-1a1 1 0 0 1 1 -1zm3 7h-14v9.625c0 .705 .386 1.286 .883 1.366l.117 .009h12c.513 0 .936 -.53 .993 -1.215l.007 -.16v-9.625z", key: "svg-0" }], ["path", { d: "M12 12a1 1 0 0 1 .993 .883l.007 .117v3a1 1 0 0 1 -1.993 .117l-.007 -.117v-2a1 1 0 0 1 -.117 -1.993l.117 -.007h1z", key: "svg-1" }]], I = S("filled", "calendar-filled", "CalendarFilled", _), L = (l) => l.map((t) => ({
14
- rightLabel: x(t.getRange(), t.dateFormat),
15
- value: t.value,
16
- label: R(t.label)
17
- })), z = (l) => {
18
- const t = j(), { dayjsLocaleReady: v } = F(), { selectedValue: e, onChange: m } = l, [o, r] = C(
13
+ const _ = [["path", { d: "M16 2a1 1 0 0 1 .993 .883l.007 .117v1h1a3 3 0 0 1 2.995 2.824l.005 .176v12a3 3 0 0 1 -2.824 2.995l-.176 .005h-12a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-12a3 3 0 0 1 2.824 -2.995l.176 -.005h1v-1a1 1 0 0 1 1.993 -.117l.007 .117v1h6v-1a1 1 0 0 1 1 -1zm3 7h-14v9.625c0 .705 .386 1.286 .883 1.366l.117 .009h12c.513 0 .936 -.53 .993 -1.215l.007 -.16v-9.625z", key: "svg-0" }], ["path", { d: "M12 12a1 1 0 0 1 .993 .883l.007 .117v3a1 1 0 0 1 -1.993 .117l-.007 -.117v-2a1 1 0 0 1 -.117 -1.993l.117 -.007h1z", key: "svg-1" }]], I = S("filled", "calendar-filled", "CalendarFilled", _), L = (l) => l.map((a) => ({
14
+ rightLabel: F(a.getRange(), a.dateFormat),
15
+ value: a.value,
16
+ label: R(a.label)
17
+ })), P = (l) => {
18
+ const a = j(), { dayjsLocaleReady: v } = x(), { selectedValue: e, onChange: m } = l, [o, r] = C(
19
19
  e == null ? void 0 : e.relativeTimeString
20
- ), n = t.defaults.dateRangesOptions, i = e == null ? void 0 : e.relativeTimeString;
20
+ ), n = a.defaults.dateRangesOptions, i = e == null ? void 0 : e.relativeTimeString;
21
21
  if (c(() => {
22
22
  if (!i) return;
23
- const a = n.find(
23
+ const t = n.find(
24
24
  (s) => s.value === i
25
25
  );
26
- r(a ? a.value : void 0);
26
+ r(t ? t.value : void 0);
27
27
  }, [i, n]), c(() => {
28
28
  if (!e && !o) return;
29
- const a = n.find((h) => h.value === o), s = a ? a.getRange() : void 0;
29
+ const t = n.find((h) => h.value === o), s = t ? t.getRange() : void 0;
30
30
  m(s);
31
31
  }, [o, n]), c(() => {
32
32
  e || r(void 0);
@@ -40,17 +40,17 @@ const _ = [["path", { d: "M16 2a1 1 0 0 1 .993 .883l.007 .117v1h1a3 3 0 0 1 2.99
40
40
  isClearable: !0,
41
41
  placeholder: g,
42
42
  value: o,
43
- onChange: (a) => r(a || void 0),
43
+ onChange: (t) => r(t || void 0),
44
44
  options: p,
45
45
  noOptionsMessage: O.t("common.noOptionsAvailable")
46
46
  }
47
47
  ) });
48
48
  }, A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
49
49
  __proto__: null,
50
- default: z
50
+ default: P
51
51
  }, Symbol.toStringTag, { value: "Module" }));
52
52
  export {
53
- z as D,
53
+ P as D,
54
54
  A as i
55
55
  };
56
- //# sourceMappingURL=index-DvMr1tvf.js.map
56
+ //# sourceMappingURL=index-DpIR-B0R.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DvMr1tvf.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconCalendarFilled.mjs","../src/remarkable-pro/components/editors/DateRangeSelectFieldPro/DateRangeSelectFieldPro.utils.ts","../src/remarkable-pro/components/editors/DateRangeSelectFieldPro/index.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.35.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M16 2a1 1 0 0 1 .993 .883l.007 .117v1h1a3 3 0 0 1 2.995 2.824l.005 .176v12a3 3 0 0 1 -2.824 2.995l-.176 .005h-12a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-12a3 3 0 0 1 2.824 -2.995l.176 -.005h1v-1a1 1 0 0 1 1.993 -.117l.007 .117v1h6v-1a1 1 0 0 1 1 -1zm3 7h-14v9.625c0 .705 .386 1.286 .883 1.366l.117 .009h12c.513 0 .936 -.53 .993 -1.215l.007 -.16v-9.625z\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 12a1 1 0 0 1 .993 .883l.007 .117v3a1 1 0 0 1 -1.993 .117l-.007 -.117v-2a1 1 0 0 1 -.117 -1.993l.117 -.007h1z\", \"key\": \"svg-1\" }]];\nconst IconCalendarFilled = createReactComponent(\"filled\", \"calendar-filled\", \"CalendarFilled\", __iconNode);\n\nexport { __iconNode, IconCalendarFilled as default };\n//# sourceMappingURL=IconCalendarFilled.mjs.map\n","import { DateRangeSelectFieldProOption } from './DateRangeSelectFieldPro.types';\nimport { SelectListOptionProps } from '../../../../remarkable-ui';\nimport { getTimeRangeLabel } from '../editors.timeRange.utils';\nimport { resolveI18nString } from '../../component.utils';\n\nexport const getDateRangeSelectFieldProOptions = (\n dateRangeSelectFieldProOptions: DateRangeSelectFieldProOption[],\n): SelectListOptionProps[] => {\n return dateRangeSelectFieldProOptions.map((option) => {\n return {\n rightLabel: getTimeRangeLabel(option.getRange(), option.dateFormat),\n value: option.value,\n label: resolveI18nString(option.label),\n };\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { SingleSelectField } from '../../../../remarkable-ui';\nimport { Theme } from '../../../theme/theme.types';\nimport { useLoadDayjsLocale } from '../../../utils.ts/date.utils';\nimport { getDateRangeSelectFieldProOptions } from './DateRangeSelectFieldPro.utils';\nimport { TimeRange } from '@embeddable.com/core';\nimport { resolveI18nProps } from '../../component.utils';\nimport { EditorCard } from '../shared/EditorCard/EditorCard';\nimport { IconCalendarFilled } from '@tabler/icons-react';\nimport { i18n } from '../../../theme/i18n/i18n';\nimport { useEffect, useState } from 'react';\n\ntype DateRangeSelectFieldProProps = {\n description?: string;\n onChange: (newDateRange: TimeRange) => void;\n placeholder?: string;\n selectedValue: TimeRange;\n title?: string;\n};\n\nconst DateRangeSelectFieldPro = (props: DateRangeSelectFieldProProps) => {\n const theme: Theme = useTheme() as Theme;\n const { dayjsLocaleReady } = useLoadDayjsLocale();\n\n const { selectedValue, onChange } = props;\n const [internalValue, setInternalValue] = useState<string | undefined>(\n selectedValue?.relativeTimeString,\n );\n\n // When updation the selectedValue in the builder, the defined value value can:\n // 1. exist in the options: relativeTimeString converted into TimeRange and onChange is called with the TimeRange\n // 2. not exist in the options: onChange is called with undefined (resets)\n\n const dateRangeOptions = theme.defaults.dateRangesOptions;\n\n const selectedValueRelativeTimeString = selectedValue?.relativeTimeString;\n\n useEffect(() => {\n if (!selectedValueRelativeTimeString) return;\n\n const matchedOption = dateRangeOptions.find(\n (option) => option.value === selectedValueRelativeTimeString,\n );\n\n setInternalValue(matchedOption ? matchedOption.value : undefined);\n }, [selectedValueRelativeTimeString, dateRangeOptions]);\n\n useEffect(() => {\n if (!selectedValue && !internalValue) return;\n\n const matchedOption = dateRangeOptions.find((option) => option.value === internalValue);\n\n const newChangeValue = matchedOption ? matchedOption.getRange() : undefined;\n\n onChange(newChangeValue);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [internalValue, dateRangeOptions]);\n\n useEffect(() => {\n if (!selectedValue) {\n setInternalValue(undefined);\n }\n }, [selectedValue]);\n\n if (!dayjsLocaleReady) {\n return null;\n }\n\n const { description, placeholder, title } = resolveI18nProps(props);\n\n const options = getDateRangeSelectFieldProOptions(dateRangeOptions);\n\n return (\n <EditorCard title={title} subtitle={description}>\n <SingleSelectField\n startIcon={IconCalendarFilled}\n isClearable\n placeholder={placeholder}\n value={internalValue}\n onChange={(value) => setInternalValue(value || undefined)}\n options={options}\n noOptionsMessage={i18n.t('common.noOptionsAvailable')}\n />\n </EditorCard>\n );\n};\n\nexport default DateRangeSelectFieldPro;\n"],"names":["__iconNode","IconCalendarFilled","createReactComponent","getDateRangeSelectFieldProOptions","dateRangeSelectFieldProOptions","option","getTimeRangeLabel","resolveI18nString","DateRangeSelectFieldPro","props","theme","useTheme","dayjsLocaleReady","useLoadDayjsLocale","selectedValue","onChange","internalValue","setInternalValue","useState","dateRangeOptions","selectedValueRelativeTimeString","useEffect","matchedOption","newChangeValue","description","placeholder","title","resolveI18nProps","options","jsx","EditorCard","SingleSelectField","value","i18n"],"mappings":";;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa,CAAC,CAAC,QAAQ,EAAE,GAAK,iWAAiW,KAAO,QAAO,CAAE,GAAG,CAAC,QAAQ,EAAE,GAAK,oHAAoH,KAAO,QAAO,CAAE,CAAC,GACviBC,IAAqBC,EAAqB,UAAU,mBAAmB,kBAAkBF,CAAU,GCL5FG,IAAoC,CAC/CC,MAEOA,EAA+B,IAAI,CAACC,OAClC;AAAA,EACL,YAAYC,EAAkBD,EAAO,SAAA,GAAYA,EAAO,UAAU;AAAA,EAClE,OAAOA,EAAO;AAAA,EACd,OAAOE,EAAkBF,EAAO,KAAK;AAAA,EAExC,GCMGG,IAA0B,CAACC,MAAwC;AACvE,QAAMC,IAAeC,EAAA,GACf,EAAE,kBAAAC,EAAA,IAAqBC,EAAA,GAEvB,EAAE,eAAAC,GAAe,UAAAC,EAAA,IAAaN,GAC9B,CAACO,GAAeC,CAAgB,IAAIC;AAAA,IACxCJ,KAAA,gBAAAA,EAAe;AAAA,EAAA,GAOXK,IAAmBT,EAAM,SAAS,mBAElCU,IAAkCN,KAAA,gBAAAA,EAAe;AA6BvD,MA3BAO,EAAU,MAAM;AACd,QAAI,CAACD,EAAiC;AAEtC,UAAME,IAAgBH,EAAiB;AAAA,MACrC,CAACd,MAAWA,EAAO,UAAUe;AAAA,IAAA;AAG/B,IAAAH,EAAiBK,IAAgBA,EAAc,QAAQ,MAAS;AAAA,EAClE,GAAG,CAACF,GAAiCD,CAAgB,CAAC,GAEtDE,EAAU,MAAM;AACd,QAAI,CAACP,KAAiB,CAACE,EAAe;AAEtC,UAAMM,IAAgBH,EAAiB,KAAK,CAACd,MAAWA,EAAO,UAAUW,CAAa,GAEhFO,IAAiBD,IAAgBA,EAAc,SAAA,IAAa;AAElE,IAAAP,EAASQ,CAAc;AAAA,EAEzB,GAAG,CAACP,GAAeG,CAAgB,CAAC,GAEpCE,EAAU,MAAM;AACd,IAAKP,KACHG,EAAiB,MAAS;AAAA,EAE9B,GAAG,CAACH,CAAa,CAAC,GAEd,CAACF;AACH,WAAO;AAGT,QAAM,EAAE,aAAAY,GAAa,aAAAC,GAAa,OAAAC,EAAA,IAAUC,EAAiBlB,CAAK,GAE5DmB,IAAUzB,EAAkCgB,CAAgB;AAElE,SACEU,gBAAAA,EAAAA,IAACC,GAAA,EAAW,OAAAJ,GAAc,UAAUF,GAClC,UAAAK,gBAAAA,EAAAA;AAAAA,IAACE;AAAA,IAAA;AAAA,MACC,WAAW9B;AAAA,MACX,aAAW;AAAA,MACX,aAAAwB;AAAA,MACA,OAAOT;AAAA,MACP,UAAU,CAACgB,MAAUf,EAAiBe,KAAS,MAAS;AAAA,MACxD,SAAAJ;AAAA,MACA,kBAAkBK,EAAK,EAAE,2BAA2B;AAAA,IAAA;AAAA,EAAA,GAExD;AAEJ;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index-DpIR-B0R.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconCalendarFilled.mjs","../src/remarkable-pro/components/editors/DateRangeSelectFieldPro/DateRangeSelectFieldPro.utils.ts","../src/remarkable-pro/components/editors/DateRangeSelectFieldPro/index.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.35.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M16 2a1 1 0 0 1 .993 .883l.007 .117v1h1a3 3 0 0 1 2.995 2.824l.005 .176v12a3 3 0 0 1 -2.824 2.995l-.176 .005h-12a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-12a3 3 0 0 1 2.824 -2.995l.176 -.005h1v-1a1 1 0 0 1 1.993 -.117l.007 .117v1h6v-1a1 1 0 0 1 1 -1zm3 7h-14v9.625c0 .705 .386 1.286 .883 1.366l.117 .009h12c.513 0 .936 -.53 .993 -1.215l.007 -.16v-9.625z\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 12a1 1 0 0 1 .993 .883l.007 .117v3a1 1 0 0 1 -1.993 .117l-.007 -.117v-2a1 1 0 0 1 -.117 -1.993l.117 -.007h1z\", \"key\": \"svg-1\" }]];\nconst IconCalendarFilled = createReactComponent(\"filled\", \"calendar-filled\", \"CalendarFilled\", __iconNode);\n\nexport { __iconNode, IconCalendarFilled as default };\n//# sourceMappingURL=IconCalendarFilled.mjs.map\n","import { DateRangeSelectFieldProOption } from './DateRangeSelectFieldPro.types';\nimport { SelectListOptionProps } from '../../../../remarkable-ui';\nimport { getTimeRangeLabel } from '../editors.timeRange.utils';\nimport { resolveI18nString } from '../../component.utils';\n\nexport const getDateRangeSelectFieldProOptions = (\n dateRangeSelectFieldProOptions: DateRangeSelectFieldProOption[],\n): SelectListOptionProps[] => {\n return dateRangeSelectFieldProOptions.map((option) => {\n return {\n rightLabel: getTimeRangeLabel(option.getRange(), option.dateFormat),\n value: option.value,\n label: resolveI18nString(option.label),\n };\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { SingleSelectField } from '../../../../remarkable-ui';\nimport { Theme } from '../../../theme/theme.types';\nimport { useLoadDayjsLocale } from '../../../utils.ts/date.utils';\nimport { getDateRangeSelectFieldProOptions } from './DateRangeSelectFieldPro.utils';\nimport { TimeRange } from '@embeddable.com/core';\nimport { resolveI18nProps } from '../../component.utils';\nimport { EditorCard } from '../shared/EditorCard/EditorCard';\nimport { IconCalendarFilled } from '@tabler/icons-react';\nimport { i18n } from '../../../theme/i18n/i18n';\nimport { useEffect, useState } from 'react';\n\ntype DateRangeSelectFieldProProps = {\n description?: string;\n onChange: (newDateRange: TimeRange) => void;\n placeholder?: string;\n selectedValue: TimeRange;\n title?: string;\n};\n\nconst DateRangeSelectFieldPro = (props: DateRangeSelectFieldProProps) => {\n const theme: Theme = useTheme() as Theme;\n const { dayjsLocaleReady } = useLoadDayjsLocale();\n\n const { selectedValue, onChange } = props;\n const [internalValue, setInternalValue] = useState<string | undefined>(\n selectedValue?.relativeTimeString,\n );\n\n // When updation the selectedValue in the builder, the defined value value can:\n // 1. exist in the options: relativeTimeString converted into TimeRange and onChange is called with the TimeRange\n // 2. not exist in the options: onChange is called with undefined (resets)\n\n const dateRangeOptions = theme.defaults.dateRangesOptions;\n\n const selectedValueRelativeTimeString = selectedValue?.relativeTimeString;\n\n useEffect(() => {\n if (!selectedValueRelativeTimeString) return;\n\n const matchedOption = dateRangeOptions.find(\n (option) => option.value === selectedValueRelativeTimeString,\n );\n\n setInternalValue(matchedOption ? matchedOption.value : undefined);\n }, [selectedValueRelativeTimeString, dateRangeOptions]);\n\n useEffect(() => {\n if (!selectedValue && !internalValue) return;\n\n const matchedOption = dateRangeOptions.find((option) => option.value === internalValue);\n\n const newChangeValue = matchedOption ? matchedOption.getRange() : undefined;\n\n onChange(newChangeValue);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [internalValue, dateRangeOptions]);\n\n useEffect(() => {\n if (!selectedValue) {\n setInternalValue(undefined);\n }\n }, [selectedValue]);\n\n if (!dayjsLocaleReady) {\n return null;\n }\n\n const { description, placeholder, title } = resolveI18nProps(props);\n\n const options = getDateRangeSelectFieldProOptions(dateRangeOptions);\n\n return (\n <EditorCard title={title} subtitle={description}>\n <SingleSelectField\n startIcon={IconCalendarFilled}\n isClearable\n placeholder={placeholder}\n value={internalValue}\n onChange={(value) => setInternalValue(value || undefined)}\n options={options}\n noOptionsMessage={i18n.t('common.noOptionsAvailable')}\n />\n </EditorCard>\n );\n};\n\nexport default DateRangeSelectFieldPro;\n"],"names":["__iconNode","IconCalendarFilled","createReactComponent","getDateRangeSelectFieldProOptions","dateRangeSelectFieldProOptions","option","getTimeRangeLabel","resolveI18nString","DateRangeSelectFieldPro","props","theme","useTheme","dayjsLocaleReady","useLoadDayjsLocale","selectedValue","onChange","internalValue","setInternalValue","useState","dateRangeOptions","selectedValueRelativeTimeString","useEffect","matchedOption","newChangeValue","description","placeholder","title","resolveI18nProps","options","jsx","EditorCard","SingleSelectField","value","i18n"],"mappings":";;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa,CAAC,CAAC,QAAQ,EAAE,GAAK,iWAAiW,KAAO,QAAO,CAAE,GAAG,CAAC,QAAQ,EAAE,GAAK,oHAAoH,KAAO,QAAO,CAAE,CAAC,GACviBC,IAAqBC,EAAqB,UAAU,mBAAmB,kBAAkBF,CAAU,GCL5FG,IAAoC,CAC/CC,MAEOA,EAA+B,IAAI,CAACC,OAClC;AAAA,EACL,YAAYC,EAAkBD,EAAO,SAAA,GAAYA,EAAO,UAAU;AAAA,EAClE,OAAOA,EAAO;AAAA,EACd,OAAOE,EAAkBF,EAAO,KAAK;AAAA,EAExC,GCMGG,IAA0B,CAACC,MAAwC;AACvE,QAAMC,IAAeC,EAAA,GACf,EAAE,kBAAAC,EAAA,IAAqBC,EAAA,GAEvB,EAAE,eAAAC,GAAe,UAAAC,EAAA,IAAaN,GAC9B,CAACO,GAAeC,CAAgB,IAAIC;AAAA,IACxCJ,KAAA,gBAAAA,EAAe;AAAA,EAAA,GAOXK,IAAmBT,EAAM,SAAS,mBAElCU,IAAkCN,KAAA,gBAAAA,EAAe;AA6BvD,MA3BAO,EAAU,MAAM;AACd,QAAI,CAACD,EAAiC;AAEtC,UAAME,IAAgBH,EAAiB;AAAA,MACrC,CAACd,MAAWA,EAAO,UAAUe;AAAA,IAAA;AAG/B,IAAAH,EAAiBK,IAAgBA,EAAc,QAAQ,MAAS;AAAA,EAClE,GAAG,CAACF,GAAiCD,CAAgB,CAAC,GAEtDE,EAAU,MAAM;AACd,QAAI,CAACP,KAAiB,CAACE,EAAe;AAEtC,UAAMM,IAAgBH,EAAiB,KAAK,CAACd,MAAWA,EAAO,UAAUW,CAAa,GAEhFO,IAAiBD,IAAgBA,EAAc,SAAA,IAAa;AAElE,IAAAP,EAASQ,CAAc;AAAA,EAEzB,GAAG,CAACP,GAAeG,CAAgB,CAAC,GAEpCE,EAAU,MAAM;AACd,IAAKP,KACHG,EAAiB,MAAS;AAAA,EAE9B,GAAG,CAACH,CAAa,CAAC,GAEd,CAACF;AACH,WAAO;AAGT,QAAM,EAAE,aAAAY,GAAa,aAAAC,GAAa,OAAAC,EAAA,IAAUC,EAAiBlB,CAAK,GAE5DmB,IAAUzB,EAAkCgB,CAAgB;AAElE,SACEU,gBAAAA,EAAAA,IAACC,GAAA,EAAW,OAAAJ,GAAc,UAAUF,GAClC,UAAAK,gBAAAA,EAAAA;AAAAA,IAACE;AAAA,IAAA;AAAA,MACC,WAAW9B;AAAA,MACX,aAAW;AAAA,MACX,aAAAwB;AAAA,MACA,OAAOT;AAAA,MACP,UAAU,CAACgB,MAAUf,EAAiBe,KAAS,MAAS;AAAA,MACxD,SAAAJ;AAAA,MACA,kBAAkBK,EAAK,EAAE,2BAA2B;AAAA,IAAA;AAAA,EAAA,GAExD;AAEJ;;;;","x_google_ignoreList":[0]}
package/dist/index.js CHANGED
@@ -1,38 +1,39 @@
1
- import { C as xs, S as bs } from "./ChartCard-CMgDz_bs.js";
2
- import { j as s, af as w, ag as u, ah as _, ai as I, aj as S, ak as N, al as T, am as P } from "./component.constants-CFaxyNCw.js";
3
- import { an as _s, av as fs, ap as Cs, ao as gs, a0 as ys, au as js, aw as vs, ar as ws, as as Is, aq as Ss, a6 as Ns, a7 as Ts, ay as Ps, at as $s, T as ks, d as As, ax as Bs, c as Ls, z as Ms, aL as Ds, ac as Fs, W as Rs, b as zs, aK as Os, a9 as Ws, aM as Es, Y as Gs, Z as Ks, a5 as qs, X as Hs, F as Vs, C as Xs, a8 as Us, U as Ys, i as Js, a3 as Zs, A as Qs, w as sa, a as aa, ae as ea, r as ta, p as oa, h as na, s as ra, g as ia, e as ca, aN as la, B as ua, f as ma, aG as ha, ab as da, a1 as xa, aF as ba, aH as pa, aE as _a, aB as fa, a4 as Ca, aC as ga, aI as ya, aD as ja, az as va, aA as wa, aa as Ia, aJ as Sa, t as Na, x as Ta, v as Pa, l as $a, k as ka, y as Aa, n as Ba, u as La, q as Ma } from "./component.constants-CFaxyNCw.js";
4
- import { useRef as $, useState as k, useEffect as A } from "react";
5
- import { E as Fa, S as Ra } from "./EditorCard-CJoUz4uM.js";
6
- import { B as g } from "./index-DvEWwlqq.js";
7
- import { b as Oa, i as Wa } from "./index-DvEWwlqq.js";
8
- import { S as Ga } from "./SingleSelectField-CJNiLfee.js";
9
- import { K as qa } from "./KpiChart-C6zepuhF.js";
10
- import { P as Va } from "./PivotTable-SNPquHl0.js";
11
- import { r as Ua, s as Ya } from "./charts.utils-HfNL9dVl.js";
12
- import { g as Za } from "./object.utils-D_Zzon-H.js";
13
- import { g as se } from "./formatter.utils-Cu4uKJSZ.js";
14
- import { a as ee, g as te } from "./pies.utils-JpKM3rVw.js";
15
- import { i as ne } from "./index-DW-LmiPi.js";
16
- import { i as ie } from "./index-BAfVF5iP.js";
17
- import { i as le } from "./index-CxxeUDMD.js";
18
- import { i as me } from "./index-C4BiW71l.js";
19
- import { i as de } from "./index-DvMr1tvf.js";
20
- import { C as be } from "./ComparisonPeriod.type.emb-C1o3iM9L.js";
21
- import { i as _e, s as fe } from "./color.utils-CVyp-fGP.js";
22
- const B = "_container_436fl_1", L = "_column_436fl_10", M = "_box_436fl_20", D = "_short_436fl_26", F = "_tall_436fl_34", e = {
23
- container: B,
24
- column: L,
25
- box: M,
26
- short: D,
27
- tall: F
1
+ import { C as xs, S as bs } from "./ChartCard-D-0O5ugW.js";
2
+ import { j as s, a2 as w, a3 as u, a4 as _, a5 as I, a6 as S, a7 as N, a8 as T, a9 as $ } from "./component.constants-DCOqCFoY.js";
3
+ import { B as _s, aa as Cs, am as fs, ac as gs, ab as ys, N as js, ah as vs, an as ws, ae as Is, af as Ss, ad as Ns, U as Ts, W as $s, as as Ps, ag as ks, D as Bs, d as Ls, ap as As, aq as Ds, ao as Ms, c as Os, z as Fs, aF as Rs, $ as zs, G as Ws, b as Es, aE as Gs, Y as Hs, aG as Ks, I as qs, J as Vs, R as Xs, H as Us, ai as Ys, aj as Js, ak as Qs, al as Zs, ar as sa, K as aa, X as ea, F as ta, i as oa, S as na, Q as ra, A as ia, w as ca, a as la, a1 as ua, r as ma, p as ha, h as da, s as xa, g as ba, e as pa, aH as _a, C as Ca, f as fa, aA as ga, _ as ya, O as ja, az as va, aB as wa, ay as Ia, av as Sa, T as Na, aw as Ta, aC as $a, ax as Pa, at as ka, au as Ba, Z as La, aD as Aa, t as Da, x as Ma, v as Oa, l as Fa, k as Ra, y as za, n as Wa, u as Ea, q as Ga } from "./component.constants-DCOqCFoY.js";
4
+ import { useRef as P, useState as k, useEffect as B } from "react";
5
+ import { E as Ka, S as qa } from "./EditorCard-BhC7oToX.js";
6
+ import { B as g } from "./index-BcPj51g3.js";
7
+ import { b as Xa, i as Ua } from "./index-BcPj51g3.js";
8
+ import { S as Ja } from "./SingleSelectField-DlVCi5Ej.js";
9
+ import { K as Za } from "./KpiChart-CS9s8nJ4.js";
10
+ import { P as ae } from "./PivotTable-Cx4WG6MV.js";
11
+ import { H as te } from "./HeatMap-By9_uzV_.js";
12
+ import { r as ne, s as re } from "./charts.utils-D9TXwxGs.js";
13
+ import { g as ce } from "./object.utils-D_Zzon-H.js";
14
+ import { g as ue } from "./formatter.utils-B80iNq9Q.js";
15
+ import { a as he, g as de } from "./pies.utils-DEkgZgVk.js";
16
+ import { i as be } from "./index-D4oPbYPT.js";
17
+ import { i as _e } from "./index--tdFwk_H.js";
18
+ import { i as fe } from "./index-C3o3AQpK.js";
19
+ import { i as ye } from "./index-CmE__sUg.js";
20
+ import { i as ve } from "./index-DpIR-B0R.js";
21
+ import { C as Ie } from "./ComparisonPeriod.type.emb-CYp3nw-9.js";
22
+ import { i as Ne, s as Te } from "./color.utils-CVyp-fGP.js";
23
+ const L = "_container_436fl_1", A = "_column_436fl_10", D = "_box_436fl_20", M = "_short_436fl_26", O = "_tall_436fl_34", e = {
24
+ container: L,
25
+ column: A,
26
+ box: D,
27
+ short: M,
28
+ tall: O
28
29
  }, is = ({ className: t }) => {
29
- const a = $(null), [o, l] = k(2);
30
- A(() => {
30
+ const a = P(null), [o, l] = k(2);
31
+ B(() => {
31
32
  const n = () => {
32
33
  if (!a.current) return;
33
- const d = a.current.offsetWidth, y = 32, m = 16, j = 128, f = 256, x = d - y, b = Math.floor((x + m) / (j + m)), v = (x - (b - 1) * m) / b;
34
- let C = b;
35
- v > f && (C = Math.floor((x + m) / (f + m))), l(Math.max(2, C));
34
+ const d = a.current.offsetWidth, y = 32, m = 16, j = 128, C = 256, x = d - y, b = Math.floor((x + m) / (j + m)), v = (x - (b - 1) * m) / b;
35
+ let f = b;
36
+ v > C && (f = Math.floor((x + m) / (C + m))), l(Math.max(2, f));
36
37
  };
37
38
  n();
38
39
  const r = new ResizeObserver(n);
@@ -53,10 +54,10 @@ const B = "_container_436fl_1", L = "_column_436fl_10", M = "_box_436fl_20", D =
53
54
  ] }) }, n);
54
55
  };
55
56
  return /* @__PURE__ */ s.jsx("div", { ref: a, className: `${e.container} ${t || ""}`, children: Array.from({ length: o }, (n, r) => c(r)) });
56
- }, R = "_icon_bk4b5_1", z = "_iconPrimary_bk4b5_6", O = "_iconSecondary_bk4b5_9", W = "_buttonIcon_bk4b5_12", p = {
57
- icon: R,
58
- iconPrimary: z,
59
- iconSecondary: O,
57
+ }, F = "_icon_bk4b5_1", R = "_iconPrimary_bk4b5_6", z = "_iconSecondary_bk4b5_9", W = "_buttonIcon_bk4b5_12", p = {
58
+ icon: F,
59
+ iconPrimary: R,
60
+ iconSecondary: z,
60
61
  buttonIcon: W
61
62
  }, cs = ({
62
63
  icon: t,
@@ -70,10 +71,10 @@ const B = "_container_436fl_1", L = "_column_436fl_10", M = "_box_436fl_20", D =
70
71
  p[`icon${a.charAt(0).toUpperCase() + a.slice(1)}`]
71
72
  )
72
73
  }
73
- ) }), E = "_ghostButton_1cvh9_1", G = "_icon_1cvh9_38", K = "_label_1cvh9_42", h = {
74
+ ) }), E = "_ghostButton_1cvh9_1", G = "_icon_1cvh9_38", H = "_label_1cvh9_42", h = {
74
75
  ghostButton: E,
75
76
  icon: G,
76
- label: K
77
+ label: H
77
78
  }, ls = ({
78
79
  startIcon: t,
79
80
  endIcon: a,
@@ -84,9 +85,9 @@ const B = "_container_436fl_1", L = "_column_436fl_10", M = "_box_436fl_20", D =
84
85
  t && /* @__PURE__ */ s.jsx(t, { className: h.icon }),
85
86
  /* @__PURE__ */ s.jsx(_, { className: h.label, children: o }),
86
87
  a && /* @__PURE__ */ s.jsx(a, { className: h.icon })
87
- ] }), q = "_overlay_1wzuc_1", H = {
88
- overlay: q
89
- }, V = ({ className: t, children: a }) => /* @__PURE__ */ s.jsx("div", { className: u(H.overlay, t), children: a }), X = "_actions_pvzr9_1", U = {
88
+ ] }), K = "_overlay_1wzuc_1", q = {
89
+ overlay: K
90
+ }, V = ({ className: t, children: a }) => /* @__PURE__ */ s.jsx("div", { className: u(q.overlay, t), children: a }), X = "_actions_pvzr9_1", U = {
90
91
  actions: X
91
92
  }, us = ({
92
93
  title: t,
@@ -98,18 +99,18 @@ const B = "_container_436fl_1", L = "_column_436fl_10", M = "_box_436fl_20", D =
98
99
  className: r
99
100
  }) => /* @__PURE__ */ s.jsx(V, { children: /* @__PURE__ */ s.jsxs(I, { className: r, children: [
100
101
  /* @__PURE__ */ s.jsx(S, { title: t, rightContent: /* @__PURE__ */ s.jsx(N, { icon: T, onClick: n }) }),
101
- /* @__PURE__ */ s.jsxs(P, { children: [
102
+ /* @__PURE__ */ s.jsxs($, { children: [
102
103
  /* @__PURE__ */ s.jsx(_, { as: "span", children: a }),
103
104
  /* @__PURE__ */ s.jsxs("div", { className: U.actions, children: [
104
105
  /* @__PURE__ */ s.jsx(g, { variant: "secondary", size: "medium", onClick: n, children: l }),
105
106
  /* @__PURE__ */ s.jsx(g, { variant: "primary", size: "medium", onClick: c, children: o })
106
107
  ] })
107
108
  ] })
108
- ] }) }), Y = "_switchContainer_5ud0u_1", J = "_switchLabel_5ud0u_8", Z = "_switchInput_5ud0u_14", Q = "_switchTrack_5ud0u_21", ss = "_switchThumb_5ud0u_51", as = "_checked_5ud0u_66", es = "_disabled_5ud0u_78", ts = "_labelText_5ud0u_91", i = {
109
+ ] }) }), Y = "_switchContainer_5ud0u_1", J = "_switchLabel_5ud0u_8", Q = "_switchInput_5ud0u_14", Z = "_switchTrack_5ud0u_21", ss = "_switchThumb_5ud0u_51", as = "_checked_5ud0u_66", es = "_disabled_5ud0u_78", ts = "_labelText_5ud0u_91", i = {
109
110
  switchContainer: Y,
110
111
  switchLabel: J,
111
- switchInput: Z,
112
- switchTrack: Q,
112
+ switchInput: Q,
113
+ switchTrack: Z,
113
114
  switchThumb: ss,
114
115
  checked: as,
115
116
  disabled: es,
@@ -153,113 +154,122 @@ const B = "_container_436fl_1", L = "_column_436fl_10", M = "_box_436fl_20", D =
153
154
  ) });
154
155
  };
155
156
  export {
157
+ _s as BarChart,
156
158
  g as Button,
157
159
  cs as ButtonIcon,
158
160
  I as Card,
159
- P as CardContent,
160
- _s as CardContentInfo,
161
+ $ as CardContent,
162
+ Cs as CardContentInfo,
161
163
  S as CardHeader,
162
164
  xs as ChartCard,
163
- be as ComparisonPeriodType,
165
+ Ie as ComparisonPeriodType,
164
166
  us as ConfirmCancelModal,
165
- de as DateRangeSelectFieldPro,
167
+ ve as DateRangeSelectFieldPro,
166
168
  fs as DonutChart,
167
- ie as DonutChartPro,
168
- le as DonutLabelChartPro,
169
- Cs as Dropdown,
170
- Fa as EditorCard,
169
+ _e as DonutChartPro,
170
+ fe as DonutLabelChartPro,
171
+ gs as Dropdown,
172
+ Ka as EditorCard,
171
173
  is as EmptyStateSkeleton,
172
- gs as FieldErrorMessage,
174
+ ys as FieldErrorMessage,
173
175
  ls as GhostButton,
176
+ te as HeatMap,
174
177
  N as IconButton,
175
- qa as KpiChart,
176
- ys as LineChart,
177
- Oa as MultiSelectField,
178
- Wa as MultiSelectFieldPro,
179
- js as NumberField,
178
+ Za as KpiChart,
179
+ js as LineChart,
180
+ Xa as MultiSelectField,
181
+ Ua as MultiSelectFieldPro,
182
+ vs as NumberField,
180
183
  V as PageOverlay,
181
- vs as PieChart,
182
- ne as PieChartPro,
183
- Va as PivotTable,
184
- ws as SelectButton,
185
- Is as SelectList,
186
- Ss as SelectListOption,
187
- Ra as SelectListOptions,
188
- Ga as SingleSelectField,
189
- me as SingleSelectFieldPro,
184
+ ws as PieChart,
185
+ be as PieChartPro,
186
+ ae as PivotTable,
187
+ Is as SelectButton,
188
+ Ss as SelectList,
189
+ Ns as SelectListOption,
190
+ qa as SelectListOptions,
191
+ Ja as SingleSelectField,
192
+ ye as SingleSelectFieldPro,
190
193
  bs as Skeleton,
191
194
  ms as Switch,
192
- Ns as TableHeaderAlign,
193
- Ts as TablePaginated,
195
+ Ts as TableHeaderAlign,
196
+ $s as TablePaginated,
194
197
  Ps as TableSortDirection,
195
- $s as TextField,
198
+ ks as TextField,
196
199
  _ as Typography,
197
- ks as chartColors,
198
- As as dataset,
199
- Bs as defaultPieChartOptions,
200
- Ls as description,
201
- Ms as dimension,
202
- Ds as dimensionOrMeasure,
203
- Fs as dimensionSimple,
204
- Rs as dimensionTime,
205
- zs as dimensionWithDateBounds,
206
- Os as dimensions,
207
- Ws as dimensionsAndMeasures,
208
- Es as displayPercentages,
209
- Gs as genericBoolean,
210
- Ks as genericNumber,
211
- qs as genericString,
212
- Hs as genericTimeRange,
213
- ee as getDefaultPieChartOptions,
214
- Za as getObjectStableKey,
215
- te as getPieChartData,
216
- Vs as getStyle,
217
- Xs as getStyleNumber,
218
- Us as getTableTotalPages,
219
- se as getThemeFormatter,
220
- Ys as i18n,
221
- Js as i18nSetup,
222
- _e as isColorValid,
223
- Zs as maxLegendItems,
224
- Qs as maxResults,
225
- sa as measure,
226
- aa as measures,
227
- ea as placeholder,
228
- Ua as remarkableTheme,
229
- ta as resolveI18nProps,
230
- oa as reverseXAxis,
231
- na as reverseYAxis,
232
- fe as setColorAlpha,
233
- ra as showLegend,
234
- ia as showLogarithmicScale,
235
- ca as showTooltips,
236
- la as showTopItems,
237
- ua as showTotalLabels,
238
- ma as showValueLabels,
239
- Ya as styles,
240
- ha as subInputAbbreviateLargeNumber,
241
- da as subInputAlign,
242
- xa as subInputColor,
243
- ba as subInputCurrency,
244
- pa as subInputDateBounds,
245
- _a as subInputDecimalPlaces,
246
- fa as subInputDisplayName,
247
- Ca as subInputGenericBoolean,
248
- ga as subInputGenericNumber,
249
- ya as subInputGranularity,
250
- ja as subInputMaxCharacters,
251
- va as subInputPrefix,
252
- wa as subInputSuffix,
253
- Ia as subInputWidth,
254
- Sa as timeDimensionSubInputs,
255
- Na as title,
256
- Ta as xAxisLabel,
257
- Pa as xAxisMaxItems,
258
- $a as xAxisRangeMax,
259
- ka as xAxisRangeMin,
260
- Aa as yAxisLabel,
261
- Ba as yAxisMaxItems,
262
- La as yAxisRangeMax,
263
- Ma as yAxisRangeMin
200
+ Bs as chartColors,
201
+ Ls as dataset,
202
+ As as defaultDonutChartOptions,
203
+ Ds as defaultDonutLabelChartOptions,
204
+ Ms as defaultPieChartOptions,
205
+ Os as description,
206
+ Fs as dimension,
207
+ Rs as dimensionOrMeasure,
208
+ zs as dimensionSimple,
209
+ Ws as dimensionTime,
210
+ Es as dimensionWithDateBounds,
211
+ Gs as dimensions,
212
+ Hs as dimensionsAndMeasures,
213
+ Ks as displayPercentages,
214
+ qs as genericBoolean,
215
+ Vs as genericNumber,
216
+ Xs as genericString,
217
+ Us as genericTimeRange,
218
+ Ys as getBarChartData,
219
+ Js as getBarChartOptions,
220
+ he as getDefaultPieChartOptions,
221
+ Qs as getLineChartData,
222
+ Zs as getLineChartOptions,
223
+ ce as getObjectStableKey,
224
+ de as getPieChartData,
225
+ sa as getStyle,
226
+ aa as getStyleNumber,
227
+ ea as getTableTotalPages,
228
+ ue as getThemeFormatter,
229
+ ta as i18n,
230
+ oa as i18nSetup,
231
+ na as inputColor,
232
+ Ne as isColorValid,
233
+ ra as maxLegendItems,
234
+ ia as maxResults,
235
+ ca as measure,
236
+ la as measures,
237
+ ua as placeholder,
238
+ ne as remarkableTheme,
239
+ ma as resolveI18nProps,
240
+ ha as reverseXAxis,
241
+ da as reverseYAxis,
242
+ Te as setColorAlpha,
243
+ xa as showLegend,
244
+ ba as showLogarithmicScale,
245
+ pa as showTooltips,
246
+ _a as showTopItems,
247
+ Ca as showTotalLabels,
248
+ fa as showValueLabels,
249
+ re as styles,
250
+ ga as subInputAbbreviateLargeNumber,
251
+ ya as subInputAlign,
252
+ ja as subInputColor,
253
+ va as subInputCurrency,
254
+ wa as subInputDateBounds,
255
+ Ia as subInputDecimalPlaces,
256
+ Sa as subInputDisplayName,
257
+ Na as subInputGenericBoolean,
258
+ Ta as subInputGenericNumber,
259
+ $a as subInputGranularity,
260
+ Pa as subInputMaxCharacters,
261
+ ka as subInputPrefix,
262
+ Ba as subInputSuffix,
263
+ La as subInputWidth,
264
+ Aa as timeDimensionSubInputs,
265
+ Da as title,
266
+ Ma as xAxisLabel,
267
+ Oa as xAxisMaxItems,
268
+ Fa as xAxisRangeMax,
269
+ Ra as xAxisRangeMin,
270
+ za as yAxisLabel,
271
+ Wa as yAxisMaxItems,
272
+ Ea as yAxisRangeMax,
273
+ Ga as yAxisRangeMin
264
274
  };
265
275
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/remarkable-ui/shared/EmptyStateSkeleton/EmptyStateSkeleton.tsx","../src/remarkable-ui/shared/ButtonIcon/ButtonIcon.tsx","../src/remarkable-ui/shared/GhostButton/GhostButton.tsx","../src/remarkable-ui/shared/PageOverlay/PageOverlay.tsx","../src/remarkable-ui/shared/ConfirmCancelModal/ConfirmCancelModal.tsx","../src/remarkable-ui/shared/Switch/Switch.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport styles from './EmptyStateSkeleton.module.css';\n\ninterface EmptyStateSkeletonProps {\n className?: string;\n}\n\nexport const EmptyStateSkeleton: React.FC<EmptyStateSkeletonProps> = ({ className }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [visibleColumns, setVisibleColumns] = useState(2);\n\n useEffect(() => {\n const calculateColumns = () => {\n if (!containerRef.current) return;\n\n const containerWidth = containerRef.current.offsetWidth;\n const padding = 32; // 2rem total padding (1rem each side)\n const gap = 16; // 1rem gap between columns\n const minColumnWidth = 128; // 8rem\n const maxColumnWidth = 256; // 16rem\n\n const availableWidth = containerWidth - padding;\n\n // Calculate how many columns can fit at minimum width\n const maxPossibleColumns = Math.floor((availableWidth + gap) / (minColumnWidth + gap));\n\n // Calculate actual column width if we use maxPossibleColumns\n const actualColumnWidth =\n (availableWidth - (maxPossibleColumns - 1) * gap) / maxPossibleColumns;\n\n // If columns would be wider than max width, reduce column count\n let finalColumns = maxPossibleColumns;\n if (actualColumnWidth > maxColumnWidth) {\n finalColumns = Math.floor((availableWidth + gap) / (maxColumnWidth + gap));\n }\n\n setVisibleColumns(Math.max(2, finalColumns)); // Minimum 2 columns\n };\n\n calculateColumns();\n\n const resizeObserver = new ResizeObserver(calculateColumns);\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n return () => resizeObserver.disconnect();\n }, []);\n\n const renderColumn = (index: number) => {\n const isEvenColumn = index % 2 === 0;\n return (\n <div key={index} className={styles.column}>\n {isEvenColumn ? (\n <>\n <div className={`${styles.box} ${styles.short}`}></div>\n <div className={`${styles.box} ${styles.tall}`}></div>\n <div className={`${styles.box} ${styles.short}`}></div>\n <div className={`${styles.box} ${styles.tall}`}></div>\n </>\n ) : (\n <>\n <div className={`${styles.box} ${styles.tall}`}></div>\n <div className={`${styles.box} ${styles.short}`}></div>\n <div className={`${styles.box} ${styles.tall}`}></div>\n <div className={`${styles.box} ${styles.short}`}></div>\n </>\n )}\n </div>\n );\n };\n\n return (\n <div ref={containerRef} className={`${styles.container} ${className || ''}`}>\n {Array.from({ length: visibleColumns }, (_, index) => renderColumn(index))}\n </div>\n );\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from './ButtonIcon.module.css';\nimport { BaseButton, type BaseButtonProps } from '../BaseButton';\nimport { TablerIcon } from '@tabler/icons-react';\n\ntype ButtonIconProps = Omit<BaseButtonProps, 'size'> & {\n icon: TablerIcon;\n};\n\nexport const ButtonIcon: React.FC<ButtonIconProps> = ({\n icon: Icon,\n variant = 'primary',\n ...props\n}) => {\n return (\n <BaseButton variant={variant} size=\"medium\" className={styles.buttonIcon} {...props}>\n <Icon\n className={clsx(\n styles.icon,\n styles[`icon${variant.charAt(0).toUpperCase() + variant.slice(1)}`],\n )}\n />\n </BaseButton>\n );\n};\n","import React from 'react';\nimport { Icon } from '@tabler/icons-react';\nimport clsx from 'clsx';\nimport styles from './GhostButton.module.css';\nimport { Typography } from '../Typography/Typography';\n\ntype GhostButtonProps = {\n startIcon?: Icon;\n endIcon?: Icon;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const GhostButton: React.FC<GhostButtonProps> = ({\n startIcon: StartIcon,\n endIcon: EndIcon,\n children,\n className,\n ...props\n}) => {\n return (\n <button className={clsx(styles.ghostButton, className)} {...props}>\n {StartIcon && <StartIcon className={styles.icon} />}\n <Typography className={styles.label}>{children}</Typography>\n {EndIcon && <EndIcon className={styles.icon} />}\n </button>\n );\n};\n","import clsx from 'clsx';\nimport styles from './PageOverlay.module.css';\nimport type { PageOverlayProps } from './PageOverlay.types';\n\nexport const PageOverlay: React.FC<PageOverlayProps> = ({ className, children }) => {\n return <div className={clsx(styles.overlay, className)}>{children}</div>;\n};\n","import React from 'react';\nimport { Card, CardHeader, CardContent } from '../Card/Card';\nimport { Button } from '../Button/Button';\nimport { Typography } from '../Typography/Typography';\nimport styles from './ConfirmCancelModal.module.css';\nimport type { ConfirmCancelModalProps } from './ConfirmCancelModal.types';\nimport { PageOverlay } from '../PageOverlay';\nimport { IconX } from '@tabler/icons-react';\nimport { IconButton } from '../IconButton/IconButton';\n\nexport const ConfirmCancelModal: React.FC<ConfirmCancelModalProps> = ({\n title,\n message,\n confirmLabel = 'Confirm',\n cancelLabel = 'Cancel',\n onConfirm,\n onCancel,\n className,\n}) => {\n return (\n <PageOverlay>\n <Card className={className}>\n <CardHeader title={title} rightContent={<IconButton icon={IconX} onClick={onCancel} />} />\n <CardContent>\n <Typography as=\"span\">{message}</Typography>\n <div className={styles.actions}>\n <Button variant=\"secondary\" size=\"medium\" onClick={onCancel}>\n {cancelLabel}\n </Button>\n <Button variant=\"primary\" size=\"medium\" onClick={onConfirm}>\n {confirmLabel}\n </Button>\n </div>\n </CardContent>\n </Card>\n </PageOverlay>\n );\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from './Switch.module.css';\nimport { Typography } from '../Typography/Typography';\n\ntype SwitchProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> & {\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n className?: string;\n label?: string;\n};\n\nexport const Switch: React.FC<SwitchProps> = ({\n checked,\n onChange,\n disabled = false,\n className,\n label,\n ...props\n}) => {\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!disabled && onChange) {\n onChange(event.target.checked);\n }\n };\n\n // Ensure accessibility: either aria-label must be provided\n if (!props['aria-label']) {\n console.warn(\n 'Switch component requires either a label prop or aria-label prop for accessibility',\n );\n }\n\n return (\n <div className={clsx(styles.switchContainer, className)}>\n <label\n className={clsx(styles.switchLabel, checked && styles.checked, disabled && styles.disabled)}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n className={styles.switchInput}\n role=\"switch\"\n aria-checked={checked}\n aria-disabled={disabled}\n {...props}\n />\n <span className={styles.switchTrack} aria-hidden=\"true\">\n <span className={styles.switchThumb} aria-hidden=\"true\" />\n </span>\n {label && (\n <Typography as=\"span\" className={clsx(styles.labelText, disabled && styles.disabled)}>\n {label}\n </Typography>\n )}\n </label>\n </div>\n );\n};\n"],"names":["EmptyStateSkeleton","className","containerRef","useRef","visibleColumns","setVisibleColumns","useState","useEffect","calculateColumns","containerWidth","padding","gap","minColumnWidth","maxColumnWidth","availableWidth","maxPossibleColumns","actualColumnWidth","finalColumns","resizeObserver","renderColumn","index","isEvenColumn","styles","jsxs","Fragment","jsx","_","ButtonIcon","Icon","variant","props","BaseButton","clsx","GhostButton","StartIcon","EndIcon","children","Typography","PageOverlay","ConfirmCancelModal","title","message","confirmLabel","cancelLabel","onConfirm","onCancel","Card","CardHeader","IconButton","IconX","CardContent","Button","Switch","checked","onChange","disabled","label","handleChange","event"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/remarkable-ui/shared/EmptyStateSkeleton/EmptyStateSkeleton.tsx","../src/remarkable-ui/shared/ButtonIcon/ButtonIcon.tsx","../src/remarkable-ui/shared/GhostButton/GhostButton.tsx","../src/remarkable-ui/shared/PageOverlay/PageOverlay.tsx","../src/remarkable-ui/shared/ConfirmCancelModal/ConfirmCancelModal.tsx","../src/remarkable-ui/shared/Switch/Switch.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport styles from './EmptyStateSkeleton.module.css';\n\ninterface EmptyStateSkeletonProps {\n className?: string;\n}\n\nexport const EmptyStateSkeleton: React.FC<EmptyStateSkeletonProps> = ({ className }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [visibleColumns, setVisibleColumns] = useState(2);\n\n useEffect(() => {\n const calculateColumns = () => {\n if (!containerRef.current) return;\n\n const containerWidth = containerRef.current.offsetWidth;\n const padding = 32; // 2rem total padding (1rem each side)\n const gap = 16; // 1rem gap between columns\n const minColumnWidth = 128; // 8rem\n const maxColumnWidth = 256; // 16rem\n\n const availableWidth = containerWidth - padding;\n\n // Calculate how many columns can fit at minimum width\n const maxPossibleColumns = Math.floor((availableWidth + gap) / (minColumnWidth + gap));\n\n // Calculate actual column width if we use maxPossibleColumns\n const actualColumnWidth =\n (availableWidth - (maxPossibleColumns - 1) * gap) / maxPossibleColumns;\n\n // If columns would be wider than max width, reduce column count\n let finalColumns = maxPossibleColumns;\n if (actualColumnWidth > maxColumnWidth) {\n finalColumns = Math.floor((availableWidth + gap) / (maxColumnWidth + gap));\n }\n\n setVisibleColumns(Math.max(2, finalColumns)); // Minimum 2 columns\n };\n\n calculateColumns();\n\n const resizeObserver = new ResizeObserver(calculateColumns);\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n return () => resizeObserver.disconnect();\n }, []);\n\n const renderColumn = (index: number) => {\n const isEvenColumn = index % 2 === 0;\n return (\n <div key={index} className={styles.column}>\n {isEvenColumn ? (\n <>\n <div className={`${styles.box} ${styles.short}`}></div>\n <div className={`${styles.box} ${styles.tall}`}></div>\n <div className={`${styles.box} ${styles.short}`}></div>\n <div className={`${styles.box} ${styles.tall}`}></div>\n </>\n ) : (\n <>\n <div className={`${styles.box} ${styles.tall}`}></div>\n <div className={`${styles.box} ${styles.short}`}></div>\n <div className={`${styles.box} ${styles.tall}`}></div>\n <div className={`${styles.box} ${styles.short}`}></div>\n </>\n )}\n </div>\n );\n };\n\n return (\n <div ref={containerRef} className={`${styles.container} ${className || ''}`}>\n {Array.from({ length: visibleColumns }, (_, index) => renderColumn(index))}\n </div>\n );\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from './ButtonIcon.module.css';\nimport { BaseButton, type BaseButtonProps } from '../BaseButton';\nimport { TablerIcon } from '@tabler/icons-react';\n\ntype ButtonIconProps = Omit<BaseButtonProps, 'size'> & {\n icon: TablerIcon;\n};\n\nexport const ButtonIcon: React.FC<ButtonIconProps> = ({\n icon: Icon,\n variant = 'primary',\n ...props\n}) => {\n return (\n <BaseButton variant={variant} size=\"medium\" className={styles.buttonIcon} {...props}>\n <Icon\n className={clsx(\n styles.icon,\n styles[`icon${variant.charAt(0).toUpperCase() + variant.slice(1)}`],\n )}\n />\n </BaseButton>\n );\n};\n","import React from 'react';\nimport { Icon } from '@tabler/icons-react';\nimport clsx from 'clsx';\nimport styles from './GhostButton.module.css';\nimport { Typography } from '../Typography/Typography';\n\ntype GhostButtonProps = {\n startIcon?: Icon;\n endIcon?: Icon;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const GhostButton: React.FC<GhostButtonProps> = ({\n startIcon: StartIcon,\n endIcon: EndIcon,\n children,\n className,\n ...props\n}) => {\n return (\n <button className={clsx(styles.ghostButton, className)} {...props}>\n {StartIcon && <StartIcon className={styles.icon} />}\n <Typography className={styles.label}>{children}</Typography>\n {EndIcon && <EndIcon className={styles.icon} />}\n </button>\n );\n};\n","import clsx from 'clsx';\nimport styles from './PageOverlay.module.css';\nimport type { PageOverlayProps } from './PageOverlay.types';\n\nexport const PageOverlay: React.FC<PageOverlayProps> = ({ className, children }) => {\n return <div className={clsx(styles.overlay, className)}>{children}</div>;\n};\n","import React from 'react';\nimport { Card, CardHeader, CardContent } from '../Card/Card';\nimport { Button } from '../Button/Button';\nimport { Typography } from '../Typography/Typography';\nimport styles from './ConfirmCancelModal.module.css';\nimport type { ConfirmCancelModalProps } from './ConfirmCancelModal.types';\nimport { PageOverlay } from '../PageOverlay';\nimport { IconX } from '@tabler/icons-react';\nimport { IconButton } from '../IconButton/IconButton';\n\nexport const ConfirmCancelModal: React.FC<ConfirmCancelModalProps> = ({\n title,\n message,\n confirmLabel = 'Confirm',\n cancelLabel = 'Cancel',\n onConfirm,\n onCancel,\n className,\n}) => {\n return (\n <PageOverlay>\n <Card className={className}>\n <CardHeader title={title} rightContent={<IconButton icon={IconX} onClick={onCancel} />} />\n <CardContent>\n <Typography as=\"span\">{message}</Typography>\n <div className={styles.actions}>\n <Button variant=\"secondary\" size=\"medium\" onClick={onCancel}>\n {cancelLabel}\n </Button>\n <Button variant=\"primary\" size=\"medium\" onClick={onConfirm}>\n {confirmLabel}\n </Button>\n </div>\n </CardContent>\n </Card>\n </PageOverlay>\n );\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from './Switch.module.css';\nimport { Typography } from '../Typography/Typography';\n\ntype SwitchProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> & {\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n className?: string;\n label?: string;\n};\n\nexport const Switch: React.FC<SwitchProps> = ({\n checked,\n onChange,\n disabled = false,\n className,\n label,\n ...props\n}) => {\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!disabled && onChange) {\n onChange(event.target.checked);\n }\n };\n\n // Ensure accessibility: either aria-label must be provided\n if (!props['aria-label']) {\n console.warn(\n 'Switch component requires either a label prop or aria-label prop for accessibility',\n );\n }\n\n return (\n <div className={clsx(styles.switchContainer, className)}>\n <label\n className={clsx(styles.switchLabel, checked && styles.checked, disabled && styles.disabled)}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n className={styles.switchInput}\n role=\"switch\"\n aria-checked={checked}\n aria-disabled={disabled}\n {...props}\n />\n <span className={styles.switchTrack} aria-hidden=\"true\">\n <span className={styles.switchThumb} aria-hidden=\"true\" />\n </span>\n {label && (\n <Typography as=\"span\" className={clsx(styles.labelText, disabled && styles.disabled)}>\n {label}\n </Typography>\n )}\n </label>\n </div>\n );\n};\n"],"names":["EmptyStateSkeleton","className","containerRef","useRef","visibleColumns","setVisibleColumns","useState","useEffect","calculateColumns","containerWidth","padding","gap","minColumnWidth","maxColumnWidth","availableWidth","maxPossibleColumns","actualColumnWidth","finalColumns","resizeObserver","renderColumn","index","isEvenColumn","styles","jsxs","Fragment","jsx","_","ButtonIcon","Icon","variant","props","BaseButton","clsx","GhostButton","StartIcon","EndIcon","children","Typography","PageOverlay","ConfirmCancelModal","title","message","confirmLabel","cancelLabel","onConfirm","onCancel","Card","CardHeader","IconButton","IconX","CardContent","Button","Switch","checked","onChange","disabled","label","handleChange","event"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { r as u, g as b } from "./charts.utils-HfNL9dVl.js";
2
- import { g } from "./formatter.utils-Cu4uKJSZ.js";
1
+ import { r as u, g as b } from "./charts.utils-D9TXwxGs.js";
2
+ import { g } from "./formatter.utils-B80iNq9Q.js";
3
3
  import { g as h, a as i } from "./object.utils-D_Zzon-H.js";
4
- import { T as c, U as f } from "./component.constants-CFaxyNCw.js";
4
+ import { D as c, F as f } from "./component.constants-DCOqCFoY.js";
5
5
  import "react";
6
6
  const y = (a, o = u) => {
7
7
  const n = g(o);
@@ -43,7 +43,7 @@ const y = (a, o = u) => {
43
43
  }
44
44
  ]
45
45
  };
46
- }, F = (a, o = u) => {
46
+ }, D = (a, o = u) => {
47
47
  const n = g(o);
48
48
  return {
49
49
  plugins: {
@@ -69,7 +69,7 @@ const y = (a, o = u) => {
69
69
  };
70
70
  };
71
71
  export {
72
- F as a,
72
+ D as a,
73
73
  y as g
74
74
  };
75
- //# sourceMappingURL=pies.utils-JpKM3rVw.js.map
75
+ //# sourceMappingURL=pies.utils-DEkgZgVk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pies.utils-JpKM3rVw.js","sources":["../src/remarkable-pro/components/charts/pies/pies.utils.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { groupTailAsOther } from '../charts.utils';\nimport { Theme } from '../../../theme/theme.types';\nimport { remarkableTheme } from '../../../theme/theme.constants';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { getColor } from '../../../theme/styles/styles.utils';\nimport { chartColors } from '../../../../remarkable-ui';\nimport { i18n } from '../../../theme/i18n/i18n';\nimport { getObjectStableKey } from '../../../utils.ts/object.utils';\n\nexport const getPieChartData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measure: Measure;\n maxLegendItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'pie'> => {\n const themeFormatter = getThemeFormatter(theme);\n\n if (!props.data)\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n\n const groupedData = groupTailAsOther(\n props.data,\n props.dimension,\n [props.measure],\n props.maxLegendItems,\n );\n\n const themeKey = getObjectStableKey(theme);\n\n const backgroundColor = groupedData.map((item, i) =>\n getColor(\n `${themeKey}.charts.backgroundColors`,\n `${props.dimension.name}.${item[props.dimension.name]}`,\n theme.charts.backgroundColors ?? chartColors,\n i,\n ),\n );\n\n const borderColor = groupedData.map((item, i) =>\n getColor(\n `${themeKey}.charts.borderColors`,\n `${props.dimension.name}.${item[props.dimension.name]}`,\n theme.charts.borderColors ?? chartColors,\n i,\n ),\n );\n\n return {\n labels: groupedData.map((item) => {\n const value = item[props.dimension.name];\n const formattedValue = themeFormatter.data(props.dimension, value);\n\n // If formatter did not work, try i18n translation\n if (value === formattedValue) {\n return i18n.t(value);\n }\n return formattedValue;\n }),\n datasets: [\n {\n data: groupedData.map((item) => item[props.measure.name]),\n backgroundColor,\n borderColor,\n },\n ],\n };\n};\n\nexport type DefaultPieChartOptions = {\n measure: Measure;\n showTooltips: boolean;\n showLegend: boolean;\n showValueLabels: boolean;\n};\n\nexport const getDefaultPieChartOptions = (\n options: DefaultPieChartOptions,\n theme: Theme = remarkableTheme,\n): Partial<ChartOptions<'pie'>> => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n plugins: {\n legend: { display: options.showLegend, position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n display: options.showValueLabels ? 'auto' : false,\n formatter: (value: string | number) => themeFormatter.data(options.measure, value),\n },\n tooltip: {\n enabled: options.showTooltips,\n callbacks: {\n label(context) {\n const raw = context.raw as number;\n const total = context.dataset.data.reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (sum: number, v: any) => sum + parseFloat(v),\n 0,\n );\n const pct = Math.round((raw / total) * 100);\n return `${themeFormatter.data(options.measure, raw)} (${pct}%)`;\n },\n },\n },\n },\n };\n};\n"],"names":["getPieChartData","props","theme","remarkableTheme","themeFormatter","getThemeFormatter","groupedData","groupTailAsOther","themeKey","getObjectStableKey","backgroundColor","item","i","getColor","chartColors","borderColor","value","formattedValue","i18n","getDefaultPieChartOptions","options","context","raw","total","sum","v","pct"],"mappings":";;;;;AAWO,MAAMA,IAAkB,CAC7BC,GAMAC,IAAeC,MACM;AACrB,QAAMC,IAAiBC,EAAkBH,CAAK;AAE9C,MAAI,CAACD,EAAM;AACT,WAAO;AAAA,MACL,QAAQ,CAAA;AAAA,MACR,UAAU,CAAC,EAAE,MAAM,IAAI;AAAA,IAAA;AAG3B,QAAMK,IAAcC;AAAA,IAClBN,EAAM;AAAA,IACNA,EAAM;AAAA,IACN,CAACA,EAAM,OAAO;AAAA,IACdA,EAAM;AAAA,EAAA,GAGFO,IAAWC,EAAmBP,CAAK,GAEnCQ,IAAkBJ,EAAY;AAAA,IAAI,CAACK,GAAMC,MAC7CC;AAAA,MACE,GAAGL,CAAQ;AAAA,MACX,GAAGP,EAAM,UAAU,IAAI,IAAIU,EAAKV,EAAM,UAAU,IAAI,CAAC;AAAA,MACrDC,EAAM,OAAO,oBAAoBY;AAAA,MACjCF;AAAA,IAAA;AAAA,EACF,GAGIG,IAAcT,EAAY;AAAA,IAAI,CAACK,GAAMC,MACzCC;AAAA,MACE,GAAGL,CAAQ;AAAA,MACX,GAAGP,EAAM,UAAU,IAAI,IAAIU,EAAKV,EAAM,UAAU,IAAI,CAAC;AAAA,MACrDC,EAAM,OAAO,gBAAgBY;AAAA,MAC7BF;AAAA,IAAA;AAAA,EACF;AAGF,SAAO;AAAA,IACL,QAAQN,EAAY,IAAI,CAACK,MAAS;AAChC,YAAMK,IAAQL,EAAKV,EAAM,UAAU,IAAI,GACjCgB,IAAiBb,EAAe,KAAKH,EAAM,WAAWe,CAAK;AAGjE,aAAIA,MAAUC,IACLC,EAAK,EAAEF,CAAK,IAEdC;AAAA,IACT,CAAC;AAAA,IACD,UAAU;AAAA,MACR;AAAA,QACE,MAAMX,EAAY,IAAI,CAACK,MAASA,EAAKV,EAAM,QAAQ,IAAI,CAAC;AAAA,QACxD,iBAAAS;AAAA,QACA,aAAAK;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ,GASaI,IAA4B,CACvCC,GACAlB,IAAeC,MACkB;AACjC,QAAMC,IAAiBC,EAAkBH,CAAK;AAE9C,SAAO;AAAA,IACL,SAAS;AAAA,MACP,QAAQ,EAAE,SAASkB,EAAQ,YAAY,UAAUlB,EAAM,OAAO,kBAAkB,SAAA;AAAA,MAChF,YAAY;AAAA,QACV,SAASkB,EAAQ,kBAAkB,SAAS;AAAA,QAC5C,WAAW,CAACJ,MAA2BZ,EAAe,KAAKgB,EAAQ,SAASJ,CAAK;AAAA,MAAA;AAAA,MAEnF,SAAS;AAAA,QACP,SAASI,EAAQ;AAAA,QACjB,WAAW;AAAA,UACT,MAAMC,GAAS;AACb,kBAAMC,IAAMD,EAAQ,KACdE,IAAQF,EAAQ,QAAQ,KAAK;AAAA;AAAA,cAEjC,CAACG,GAAaC,MAAWD,IAAM,WAAWC,CAAC;AAAA,cAC3C;AAAA,YAAA,GAEIC,IAAM,KAAK,MAAOJ,IAAMC,IAAS,GAAG;AAC1C,mBAAO,GAAGnB,EAAe,KAAKgB,EAAQ,SAASE,CAAG,CAAC,KAAKI,CAAG;AAAA,UAC7D;AAAA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"pies.utils-DEkgZgVk.js","sources":["../src/remarkable-pro/components/charts/pies/pies.utils.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { groupTailAsOther } from '../charts.utils';\nimport { Theme } from '../../../theme/theme.types';\nimport { remarkableTheme } from '../../../theme/theme.constants';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { getColor } from '../../../theme/styles/styles.utils';\nimport { chartColors } from '../../../../remarkable-ui';\nimport { i18n } from '../../../theme/i18n/i18n';\nimport { getObjectStableKey } from '../../../utils.ts/object.utils';\n\nexport const getPieChartData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measure: Measure;\n maxLegendItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'pie'> => {\n const themeFormatter = getThemeFormatter(theme);\n\n if (!props.data)\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n\n const groupedData = groupTailAsOther(\n props.data,\n props.dimension,\n [props.measure],\n props.maxLegendItems,\n );\n\n const themeKey = getObjectStableKey(theme);\n\n const backgroundColor = groupedData.map((item, i) =>\n getColor(\n `${themeKey}.charts.backgroundColors`,\n `${props.dimension.name}.${item[props.dimension.name]}`,\n theme.charts.backgroundColors ?? chartColors,\n i,\n ),\n );\n\n const borderColor = groupedData.map((item, i) =>\n getColor(\n `${themeKey}.charts.borderColors`,\n `${props.dimension.name}.${item[props.dimension.name]}`,\n theme.charts.borderColors ?? chartColors,\n i,\n ),\n );\n\n return {\n labels: groupedData.map((item) => {\n const value = item[props.dimension.name];\n const formattedValue = themeFormatter.data(props.dimension, value);\n\n // If formatter did not work, try i18n translation\n if (value === formattedValue) {\n return i18n.t(value);\n }\n return formattedValue;\n }),\n datasets: [\n {\n data: groupedData.map((item) => item[props.measure.name]),\n backgroundColor,\n borderColor,\n },\n ],\n };\n};\n\nexport type DefaultPieChartOptions = {\n measure: Measure;\n showTooltips: boolean;\n showLegend: boolean;\n showValueLabels: boolean;\n};\n\nexport const getDefaultPieChartOptions = (\n options: DefaultPieChartOptions,\n theme: Theme = remarkableTheme,\n): Partial<ChartOptions<'pie'>> => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n plugins: {\n legend: { display: options.showLegend, position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n display: options.showValueLabels ? 'auto' : false,\n formatter: (value: string | number) => themeFormatter.data(options.measure, value),\n },\n tooltip: {\n enabled: options.showTooltips,\n callbacks: {\n label(context) {\n const raw = context.raw as number;\n const total = context.dataset.data.reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (sum: number, v: any) => sum + parseFloat(v),\n 0,\n );\n const pct = Math.round((raw / total) * 100);\n return `${themeFormatter.data(options.measure, raw)} (${pct}%)`;\n },\n },\n },\n },\n };\n};\n"],"names":["getPieChartData","props","theme","remarkableTheme","themeFormatter","getThemeFormatter","groupedData","groupTailAsOther","themeKey","getObjectStableKey","backgroundColor","item","i","getColor","chartColors","borderColor","value","formattedValue","i18n","getDefaultPieChartOptions","options","context","raw","total","sum","v","pct"],"mappings":";;;;;AAWO,MAAMA,IAAkB,CAC7BC,GAMAC,IAAeC,MACM;AACrB,QAAMC,IAAiBC,EAAkBH,CAAK;AAE9C,MAAI,CAACD,EAAM;AACT,WAAO;AAAA,MACL,QAAQ,CAAA;AAAA,MACR,UAAU,CAAC,EAAE,MAAM,IAAI;AAAA,IAAA;AAG3B,QAAMK,IAAcC;AAAA,IAClBN,EAAM;AAAA,IACNA,EAAM;AAAA,IACN,CAACA,EAAM,OAAO;AAAA,IACdA,EAAM;AAAA,EAAA,GAGFO,IAAWC,EAAmBP,CAAK,GAEnCQ,IAAkBJ,EAAY;AAAA,IAAI,CAACK,GAAMC,MAC7CC;AAAA,MACE,GAAGL,CAAQ;AAAA,MACX,GAAGP,EAAM,UAAU,IAAI,IAAIU,EAAKV,EAAM,UAAU,IAAI,CAAC;AAAA,MACrDC,EAAM,OAAO,oBAAoBY;AAAA,MACjCF;AAAA,IAAA;AAAA,EACF,GAGIG,IAAcT,EAAY;AAAA,IAAI,CAACK,GAAMC,MACzCC;AAAA,MACE,GAAGL,CAAQ;AAAA,MACX,GAAGP,EAAM,UAAU,IAAI,IAAIU,EAAKV,EAAM,UAAU,IAAI,CAAC;AAAA,MACrDC,EAAM,OAAO,gBAAgBY;AAAA,MAC7BF;AAAA,IAAA;AAAA,EACF;AAGF,SAAO;AAAA,IACL,QAAQN,EAAY,IAAI,CAACK,MAAS;AAChC,YAAMK,IAAQL,EAAKV,EAAM,UAAU,IAAI,GACjCgB,IAAiBb,EAAe,KAAKH,EAAM,WAAWe,CAAK;AAGjE,aAAIA,MAAUC,IACLC,EAAK,EAAEF,CAAK,IAEdC;AAAA,IACT,CAAC;AAAA,IACD,UAAU;AAAA,MACR;AAAA,QACE,MAAMX,EAAY,IAAI,CAACK,MAASA,EAAKV,EAAM,QAAQ,IAAI,CAAC;AAAA,QACxD,iBAAAS;AAAA,QACA,aAAAK;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ,GASaI,IAA4B,CACvCC,GACAlB,IAAeC,MACkB;AACjC,QAAMC,IAAiBC,EAAkBH,CAAK;AAE9C,SAAO;AAAA,IACL,SAAS;AAAA,MACP,QAAQ,EAAE,SAASkB,EAAQ,YAAY,UAAUlB,EAAM,OAAO,kBAAkB,SAAA;AAAA,MAChF,YAAY;AAAA,QACV,SAASkB,EAAQ,kBAAkB,SAAS;AAAA,QAC5C,WAAW,CAACJ,MAA2BZ,EAAe,KAAKgB,EAAQ,SAASJ,CAAK;AAAA,MAAA;AAAA,MAEnF,SAAS;AAAA,QACP,SAASI,EAAQ;AAAA,QACjB,WAAW;AAAA,UACT,MAAMC,GAAS;AACb,kBAAMC,IAAMD,EAAQ,KACdE,IAAQF,EAAQ,QAAQ,KAAK;AAAA;AAAA,cAEjC,CAACG,GAAaC,MAAWD,IAAM,WAAWC,CAAC;AAAA,cAC3C;AAAA,YAAA,GAEIC,IAAM,KAAK,MAAOJ,IAAMC,IAAS,GAAG;AAC1C,mBAAO,GAAGnB,EAAe,KAAKgB,EAAQ,SAASE,CAAG,CAAC,KAAKI,CAAG;AAAA,UAC7D;AAAA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEJ;"}