@embeddable.com/remarkable-pro 0.0.11 → 0.0.13

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 (129) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +3 -3
  2. package/dist/BarChartDefaultPro.js +3 -3
  3. package/dist/BarChartGroupedHorizontalPro.js +3 -3
  4. package/dist/BarChartGroupedPro.js +3 -3
  5. package/dist/BarChartStackedHorizontalPro.js +3 -3
  6. package/dist/BarChartStackedPro.js +3 -3
  7. package/dist/{ChartCard-uZBftDKk.js → ChartCard-DaUtlchs.js} +19 -19
  8. package/dist/{ChartCard-uZBftDKk.js.map → ChartCard-DaUtlchs.js.map} +1 -1
  9. package/dist/{Color.type.emb-BPT7WKyR.js → Color.type.emb-DFhAaPXz.js} +2 -2
  10. package/dist/{Color.type.emb-BPT7WKyR.js.map → Color.type.emb-DFhAaPXz.js.map} +1 -1
  11. package/dist/ColorEditor.js +2 -2
  12. package/dist/{ComparisonPeriod.type.emb-Bq4r1RbE.js → ComparisonPeriod.type.emb-C-YdNTEB.js} +2 -2
  13. package/dist/{ComparisonPeriod.type.emb-Bq4r1RbE.js.map → ComparisonPeriod.type.emb-C-YdNTEB.js.map} +1 -1
  14. package/dist/ComparisonPeriodSelectFieldPro.js +4 -4
  15. package/dist/DateRangePickerCustomPro.js +89 -0
  16. package/dist/DateRangePickerCustomPro.js.map +1 -0
  17. package/dist/DateRangeSelectFieldPro.js +26 -18
  18. package/dist/DateRangeSelectFieldPro.js.map +1 -1
  19. package/dist/DonutChartPro.js +3 -3
  20. package/dist/DonutLabelChartPro.js +3 -3
  21. package/dist/{EditorCard-B95YC3pz.js → EditorCard-DXQeyo3r.js} +6 -6
  22. package/dist/{EditorCard-B95YC3pz.js.map → EditorCard-DXQeyo3r.js.map} +1 -1
  23. package/dist/HeatMapPro.js +4 -4
  24. package/dist/KpiChartNumberComparisonPro.js +4 -4
  25. package/dist/KpiChartNumberPro.js +3 -3
  26. package/dist/LineChartComparisonDefaultPro.js +5 -5
  27. package/dist/LineChartDefaultPro.js +4 -4
  28. package/dist/LineChartGroupedPro.js +3 -3
  29. package/dist/MultiSelectFieldPro.js +3 -3
  30. package/dist/PieChartPro.js +3 -3
  31. package/dist/PivotTablePro.js +3 -3
  32. package/dist/SingleSelectFieldPro.js +3 -3
  33. package/dist/TableChartPaginated.js +3 -3
  34. package/dist/{bars.utils-BHrcAtuH.js → bars.utils-C45cnEfc.js} +4 -4
  35. package/dist/{bars.utils-BHrcAtuH.js.map → bars.utils-C45cnEfc.js.map} +1 -1
  36. package/dist/charts.fillGaps.hooks-zCMYcjxz.js +65 -0
  37. package/dist/charts.fillGaps.hooks-zCMYcjxz.js.map +1 -0
  38. package/dist/{charts.utils-DtFuEHDp.js → charts.utils-D_9y_kjG.js} +918 -880
  39. package/dist/charts.utils-D_9y_kjG.js.map +1 -0
  40. package/dist/{component.constants-DmK3uQGY.js → component.constants-DJqBv0qe.js} +2 -2
  41. package/dist/{component.constants-DmK3uQGY.js.map → component.constants-DJqBv0qe.js.map} +1 -1
  42. package/dist/components/charts/charts.fillGaps.hooks.d.ts.map +1 -1
  43. package/dist/components/editors/ComparisonPeriodSelectFieldPro/index.d.ts.map +1 -1
  44. package/dist/components/editors/dates/DateRangePickerCustomPro/index.d.ts +13 -0
  45. package/dist/components/editors/dates/DateRangePickerCustomPro/index.d.ts.map +1 -0
  46. package/dist/components/editors/{DateRangeSelectFieldPro/DateRangeSelectFieldPro.types.d.ts → dates/DateRangePickerPresetsPro/DateRangePickerPresetsPro.types.d.ts} +1 -1
  47. package/dist/components/editors/dates/DateRangePickerPresetsPro/DateRangePickerPresetsPro.types.d.ts.map +1 -0
  48. package/dist/components/editors/{DateRangeSelectFieldPro/DateRangeSelectFieldPro.utils.d.ts → dates/DateRangePickerPresetsPro/DateRangePickerPresetsPro.utils.d.ts} +2 -2
  49. package/dist/components/editors/dates/DateRangePickerPresetsPro/DateRangePickerPresetsPro.utils.d.ts.map +1 -0
  50. package/dist/components/editors/dates/DateRangePickerPresetsPro/index.d.ts +14 -0
  51. package/dist/components/editors/dates/DateRangePickerPresetsPro/index.d.ts.map +1 -0
  52. package/dist/components/editors/dates/dates.utils.d.ts +8 -0
  53. package/dist/components/editors/dates/dates.utils.d.ts.map +1 -0
  54. package/dist/{editors.timeRange.utils-DTtRGaCo.js → dates.utils-f-XJ_LBg.js} +49 -28
  55. package/dist/dates.utils-f-XJ_LBg.js.map +1 -0
  56. package/dist/embeddable-components.json +11 -10
  57. package/dist/embeddable-theme-0137e.js +756 -718
  58. package/dist/{formatter.utils-DCDukEZ9.js → formatter.utils-BRMB8qAc.js} +2 -2
  59. package/dist/{formatter.utils-DCDukEZ9.js.map → formatter.utils-BRMB8qAc.js.map} +1 -1
  60. package/dist/{index-C23J5jXR.js → index-BEwcJPua.js} +5 -5
  61. package/dist/{index-C23J5jXR.js.map → index-BEwcJPua.js.map} +1 -1
  62. package/dist/index-BIiign0L.js +62054 -0
  63. package/dist/index-BIiign0L.js.map +1 -0
  64. package/dist/{index-C7mz7pKQ.js → index-Ba6ziHiQ.js} +24 -21
  65. package/dist/index-Ba6ziHiQ.js.map +1 -0
  66. package/dist/{index-BuBPj3by.js → index-BbypzboN.js} +5 -5
  67. package/dist/{index-BuBPj3by.js.map → index-BbypzboN.js.map} +1 -1
  68. package/dist/{index-Dfh1KgI5.js → index-Bn5j2FLA.js} +6 -6
  69. package/dist/{index-Dfh1KgI5.js.map → index-Bn5j2FLA.js.map} +1 -1
  70. package/dist/{index-GhU7CFw0.js → index-BqgkyNm8.js} +6 -6
  71. package/dist/{index-GhU7CFw0.js.map → index-BqgkyNm8.js.map} +1 -1
  72. package/dist/{index-B92AHN8Y.js → index-C4oavwFu.js} +6 -6
  73. package/dist/{index-B92AHN8Y.js.map → index-C4oavwFu.js.map} +1 -1
  74. package/dist/{index-Dbg-T-ST.js → index-CNjwWCGc.js} +5 -5
  75. package/dist/{index-Dbg-T-ST.js.map → index-CNjwWCGc.js.map} +1 -1
  76. package/dist/{index-D_-Nl-64.js → index-CSdnJs7F.js} +7 -7
  77. package/dist/{index-D_-Nl-64.js.map → index-CSdnJs7F.js.map} +1 -1
  78. package/dist/{index-O8I3E36E.js → index-CVv-xIyp.js} +5 -5
  79. package/dist/{index-O8I3E36E.js.map → index-CVv-xIyp.js.map} +1 -1
  80. package/dist/index-CYfKRRhL.js +128 -0
  81. package/dist/index-CYfKRRhL.js.map +1 -0
  82. package/dist/{index-Cj6xdAWZ.js → index-CfpIN_sB.js} +6 -6
  83. package/dist/{index-Cj6xdAWZ.js.map → index-CfpIN_sB.js.map} +1 -1
  84. package/dist/{index-C6oyYlMu.js → index-DBFwmzJQ.js} +11 -11
  85. package/dist/{index-C6oyYlMu.js.map → index-DBFwmzJQ.js.map} +1 -1
  86. package/dist/{index-Bk1YIZZf.js → index-DD5t0omh.js} +5 -5
  87. package/dist/{index-Bk1YIZZf.js.map → index-DD5t0omh.js.map} +1 -1
  88. package/dist/{index-BEM0olHp.js → index-Df6HY9t3.js} +6 -6
  89. package/dist/{index-BEM0olHp.js.map → index-Df6HY9t3.js.map} +1 -1
  90. package/dist/{index-CFoVL8LS.js → index-Djoz2cf4.js} +6 -6
  91. package/dist/{index-CFoVL8LS.js.map → index-Djoz2cf4.js.map} +1 -1
  92. package/dist/{index-CmYz5k0C.js → index-DkbXF0dN.js} +6 -6
  93. package/dist/{index-CmYz5k0C.js.map → index-DkbXF0dN.js.map} +1 -1
  94. package/dist/{index-SIEfd0gp.js → index-Drxp0RBw.js} +6 -6
  95. package/dist/{index-SIEfd0gp.js.map → index-Drxp0RBw.js.map} +1 -1
  96. package/dist/{index-jqEl3LLC.js → index-GA9m2JpT.js} +6 -6
  97. package/dist/{index-jqEl3LLC.js.map → index-GA9m2JpT.js.map} +1 -1
  98. package/dist/{index-sJkPi8Q_.js → index-QLS7PLnH.js} +6 -6
  99. package/dist/{index-sJkPi8Q_.js.map → index-QLS7PLnH.js.map} +1 -1
  100. package/dist/{index-CbWn6WMr.js → index-S5z1sMxW.js} +6 -6
  101. package/dist/{index-CbWn6WMr.js.map → index-S5z1sMxW.js.map} +1 -1
  102. package/dist/{index-DSk9EA7t.js → index-ifHDbmyw.js} +6 -6
  103. package/dist/{index-DSk9EA7t.js.map → index-ifHDbmyw.js.map} +1 -1
  104. package/dist/index.d.ts +2 -2
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +29 -29
  107. package/dist/{pies.utils-Zw1lwwC4.js → pies.utils-B_jS454c.js} +5 -5
  108. package/dist/{pies.utils-Zw1lwwC4.js.map → pies.utils-B_jS454c.js.map} +1 -1
  109. package/dist/remarkable-pro.css +1 -1
  110. package/dist/theme/i18n/translations/de.d.ts.map +1 -1
  111. package/dist/theme/i18n/translations/en.d.ts.map +1 -1
  112. package/dist/{timeRange.utils-C96Hp2HD.js → timeRange.utils-CgLgHA94.js} +2 -2
  113. package/dist/{timeRange.utils-C96Hp2HD.js.map → timeRange.utils-CgLgHA94.js.map} +1 -1
  114. package/package.json +2 -2
  115. package/dist/charts.fillGaps.hooks-Dd-VYdOE.js +0 -66
  116. package/dist/charts.fillGaps.hooks-Dd-VYdOE.js.map +0 -1
  117. package/dist/charts.utils-DtFuEHDp.js.map +0 -1
  118. package/dist/components/editors/DateRangeSelectFieldPro/DateRangeSelectFieldPro.types.d.ts.map +0 -1
  119. package/dist/components/editors/DateRangeSelectFieldPro/DateRangeSelectFieldPro.utils.d.ts.map +0 -1
  120. package/dist/components/editors/DateRangeSelectFieldPro/index.d.ts +0 -12
  121. package/dist/components/editors/DateRangeSelectFieldPro/index.d.ts.map +0 -1
  122. package/dist/components/editors/editors.timeRange.utils.d.ts +0 -5
  123. package/dist/components/editors/editors.timeRange.utils.d.ts.map +0 -1
  124. package/dist/editors.timeRange.utils-DTtRGaCo.js.map +0 -1
  125. package/dist/index-C7mz7pKQ.js.map +0 -1
  126. package/dist/index-DjwSlZQY.js +0 -17237
  127. package/dist/index-DjwSlZQY.js.map +0 -1
  128. package/dist/index-mp4eyizO.js +0 -57
  129. package/dist/index-mp4eyizO.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { defineComponent as i } from "@embeddable.com/react";
2
- import { v as l, E as s, g as a, z as n, F as t, G as o, I as r, J as m, K as u, M as d, N as c, O as p, P as x, S as L, T as f, H as C } from "./component.constants-DmK3uQGY.js";
3
- import { L as h } from "./index-sJkPi8Q_.js";
4
- import { V as b, l as g } from "./index-DjwSlZQY.js";
5
- import { C as A } from "./Color.type.emb-BPT7WKyR.js";
2
+ import { v as l, E as s, g as a, z as n, F as t, G as o, I as r, J as m, K as u, M as d, N as c, O as p, P as x, S as L, T as f, H as C } from "./component.constants-DJqBv0qe.js";
3
+ import { L as h } from "./index-QLS7PLnH.js";
4
+ import { V as b, l as g } from "./index-BIiign0L.js";
5
+ import { C as A } from "./Color.type.emb-DFhAaPXz.js";
6
6
  const D = {
7
7
  name: "LineChartDefaultPro",
8
8
  label: "Line Chart - Default",
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as n } from "@embeddable.com/react";
2
- import { v as o, D as a, g as i, z as l, w as r, F as t, G as m, H as u, I as p, J as d, K as g, M as x, N as c, O as L, P as b, S as V, T as h } from "./component.constants-DmK3uQGY.js";
3
- import { L as C } from "./index-SIEfd0gp.js";
4
- import { V as s, l as D } from "./index-DjwSlZQY.js";
2
+ import { v as o, D as a, g as i, z as l, w as r, F as t, G as m, H as u, I as p, J as d, K as g, M as x, N as c, O as L, P as b, S as V, T as h } from "./component.constants-DJqBv0qe.js";
3
+ import { L as C } from "./index-Drxp0RBw.js";
4
+ import { V as s, l as D } from "./index-BIiign0L.js";
5
5
  const f = {
6
6
  name: "LineChartGroupedPro",
7
7
  label: "Line Chart - Grouped",
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as i } from "@embeddable.com/react";
2
- import { V as t, l as r } from "./index-DjwSlZQY.js";
3
- import { v as s, w as d, F as u, G as m, _ as c } from "./component.constants-DmK3uQGY.js";
4
- import { M as p, a as f } from "./index-BuBPj3by.js";
2
+ import { V as t, l as r } from "./index-BIiign0L.js";
3
+ import { v as s, w as d, F as u, G as m, _ as c } from "./component.constants-DJqBv0qe.js";
4
+ import { M as p, a as f } from "./index-BbypzboN.js";
5
5
  const g = {
6
6
  name: "MultiSelectFieldPro",
7
7
  label: "Multi Select Field",
@@ -1,7 +1,7 @@
1
- import { V as a, l as s } from "./index-DjwSlZQY.js";
1
+ import { V as a, l as s } from "./index-BIiign0L.js";
2
2
  import { defineComponent as t } from "@embeddable.com/react";
3
- import { P as o } from "./index-C23J5jXR.js";
4
- import { v as i, D as n, w as r, F as m, G as l, I as d, Z as p, J as c, K as u } from "./component.constants-DmK3uQGY.js";
3
+ import { P as o } from "./index-BEwcJPua.js";
4
+ import { v as i, D as n, w as r, F as m, G as l, I as d, Z as p, J as c, K as u } from "./component.constants-DJqBv0qe.js";
5
5
  const C = {
6
6
  name: "PieChartPro",
7
7
  label: "Pie Chart",
@@ -1,7 +1,7 @@
1
- import { l as t } from "./index-DjwSlZQY.js";
1
+ import { l as t } from "./index-BIiign0L.js";
2
2
  import { defineComponent as n } from "@embeddable.com/react";
3
- import { P as i } from "./index-CmYz5k0C.js";
4
- import { v as m, E as o, k as a, z as l, F as r, G as u, d, c as s, H as b } from "./component.constants-DmK3uQGY.js";
3
+ import { P as i } from "./index-DkbXF0dN.js";
4
+ import { v as m, E as o, k as a, z as l, F as r, G as u, d, c as s, H as b } from "./component.constants-DJqBv0qe.js";
5
5
  const c = {
6
6
  name: "PivotTablePro",
7
7
  label: "Pivot Table",
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as i } from "@embeddable.com/react";
2
- import { V as n, l as r } from "./index-DjwSlZQY.js";
3
- import { v as s, w as d, F as m, G as c, _ as p } from "./component.constants-DmK3uQGY.js";
4
- import { M as u, S as g } from "./index-O8I3E36E.js";
2
+ import { V as n, l as r } from "./index-BIiign0L.js";
3
+ import { v as s, w as d, F as m, G as c, _ as p } from "./component.constants-DJqBv0qe.js";
4
+ import { M as u, S as g } from "./index-CVv-xIyp.js";
5
5
  const f = {
6
6
  name: "SingleSelectFieldPro",
7
7
  label: "Single Select Field",
@@ -1,7 +1,7 @@
1
- import { V as u, l as i, m as t } from "./index-DjwSlZQY.js";
1
+ import { V as u, l as i, m as t } from "./index-BIiign0L.js";
2
2
  import { defineComponent as g } from "@embeddable.com/react";
3
- import { T as f } from "./index-C6oyYlMu.js";
4
- import { v as p, C as d, s as D, e as b, F as C, G as w, g as A, d as R, H as h, x as M } from "./component.constants-DmK3uQGY.js";
3
+ import { T as f } from "./index-DBFwmzJQ.js";
4
+ import { v as p, C as d, s as D, e as b, F as C, G as w, g as A, d as R, H as h, x as M } from "./component.constants-DJqBv0qe.js";
5
5
  const k = {
6
6
  name: "TableChartPaginated",
7
7
  label: "Table Chart - Paginated",
@@ -1,7 +1,7 @@
1
- import { r as F, g as P } from "./charts.utils-DtFuEHDp.js";
2
- import { g as h } from "./formatter.utils-DCDukEZ9.js";
1
+ import { r as F, g as P } from "./charts.utils-D_9y_kjG.js";
2
+ import { g as h } from "./formatter.utils-BRMB8qAc.js";
3
3
  import { g as p, a as g } from "./object.utils-D_Zzon-H.js";
4
- import { g as T, a as v } from "./index-DjwSlZQY.js";
4
+ import { g as T, a as v } from "./index-BIiign0L.js";
5
5
  const B = (l, c) => {
6
6
  var b;
7
7
  const m = h(c), { data: o = [], dimension: i, groupDimension: d, measure: t } = l, r = [...new Set(o.map((n) => n[i.name]).filter((n) => n != null))].sort(), a = `${d.name}${(b = d.inputs) != null && b.granularity ? `.${d.inputs.granularity}` : ""}`, e = [...new Set(o.map((n) => n[a]))].filter((n) => n != null), s = p(c), u = v(), C = e.map((n, k) => {
@@ -142,4 +142,4 @@ export {
142
142
  V as b,
143
143
  B as g
144
144
  };
145
- //# sourceMappingURL=bars.utils-BHrcAtuH.js.map
145
+ //# sourceMappingURL=bars.utils-C45cnEfc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bars.utils-BHrcAtuH.js","sources":["../src/components/charts/bars/bars.utils.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../theme/theme.types';\nimport { remarkableTheme } from '../../../theme/theme.constants';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { groupTailAsOther } from '../charts.utils';\nimport { getColor } from '../../../theme/styles/styles.utils';\nimport { getChartColors, getChartContrastColors } from '@embeddable.com/remarkable-ui';\nimport { getObjectStableKey } from '../../../utils.ts/object.utils';\nimport { Context } from 'chartjs-plugin-datalabels';\n\nexport const getBarStackedChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n },\n theme: Theme,\n): ChartData<'bar'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure } = props;\n\n const axis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))].sort();\n const groupDimensionName = `${groupDimension.name}${groupDimension.inputs?.granularity ? `.${groupDimension.inputs.granularity}` : ''}`;\n const groupBy = [...new Set(data.map((d) => d[groupDimensionName]))].filter((d) => d != null);\n\n const themeKey = getObjectStableKey(theme);\n const chartContrastColors = getChartContrastColors();\n const datasets = groupBy.map((groupByItem, index) => {\n const backgroundColor = getColor(\n `${themeKey}.charts.backgroundColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.backgroundColors ?? chartContrastColors,\n index,\n );\n\n const borderColor = getColor(\n `${themeKey}.charts.borderColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.borderColors ?? chartContrastColors,\n index,\n );\n\n return {\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor,\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimensionName] === groupByItem && d[dimension.name] === axisItem,\n );\n return record ? Number(record[measure.name]) : 0;\n }),\n };\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getBarChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measures: Measure[];\n maxItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'bar'> => {\n if (!props.data) {\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n }\n\n const themeFormatter = getThemeFormatter(theme);\n const themeKey = getObjectStableKey(theme);\n const groupedData = groupTailAsOther(props.data, props.dimension, props.measures, props.maxItems);\n const chartColors = getChartColors();\n\n return {\n labels: groupedData.map((item) => {\n return item[props.dimension.name];\n }),\n datasets: props.measures.map((measure, index) => {\n const backgroundColor = getColor(\n `${themeKey}.charts.backgroundColors`,\n measure.name,\n theme.charts.backgroundColors ?? chartColors,\n index,\n );\n\n const borderColor = getColor(\n `${themeKey}.charts.borderColors`,\n measure.name,\n theme.charts.borderColors ?? chartColors,\n index,\n );\n\n return {\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n data: groupedData.map((item) => item[measure.name] ?? 0),\n backgroundColor,\n borderColor,\n };\n }),\n };\n};\n\nconst getBarChartProDatalabelTotalFormatter = (\n context: Context,\n formatter: (value: number) => string,\n) => {\n const { datasets } = context.chart.data;\n const i = context.dataIndex;\n\n const total = datasets.reduce((sum, ds) => {\n const val = ds.data[i] as number;\n return sum + (val || 0);\n }, 0);\n\n return formatter(total);\n};\n\nexport const getBarChartProOptions = (\n options: {\n onBarClicked: (args: {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n }) => void;\n measures: Measure[];\n dimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { onBarClicked, measures, dimension, horizontal, data } = options;\n\n const themeFormatter = getThemeFormatter(theme);\n return {\n plugins: {\n legend: { position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n labels: {\n total: {\n formatter: (_value: string | number, context: Context) =>\n getBarChartProDatalabelTotalFormatter(context, (value: number) =>\n themeFormatter.data(measures[0]!, value),\n ),\n },\n value: {\n formatter: (value: string | number, context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n tooltip: {\n callbacks: {\n title: (context) => {\n const label = context[0]?.label;\n return themeFormatter.data(dimension, label);\n },\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n return `${themeFormatter.data(dimension, context.dataset.label) || ''}: ${themeFormatter.data(measure, raw)}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n if (!horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n if (!data || !data.labels) return undefined;\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n },\n onClick: (_event, elements, chart) => {\n const element = elements[0];\n const axisDimensionValue = (element ? chart.data.labels![element.index] : null) as\n | string\n | null;\n const groupingDimensionValue = (\n element\n ? (chart.data.datasets[element.datasetIndex] as { rawLabel?: string | null })?.rawLabel\n : null\n ) as string | null;\n\n onBarClicked({\n axisDimensionValue,\n groupingDimensionValue,\n });\n },\n };\n};\n"],"names":["getBarStackedChartProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","axis","d","groupDimensionName","_a","groupBy","themeKey","getObjectStableKey","chartContrastColors","getChartContrastColors","datasets","groupByItem","index","backgroundColor","getColor","borderColor","axisItem","record","getBarChartProData","remarkableTheme","groupedData","groupTailAsOther","chartColors","getChartColors","item","getBarChartProDatalabelTotalFormatter","context","formatter","i","total","sum","ds","val","getBarChartProOptions","options","onBarClicked","measures","horizontal","_value","value","label","raw","_event","elements","chart","element","axisDimensionValue","groupingDimensionValue"],"mappings":"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"}
1
+ {"version":3,"file":"bars.utils-C45cnEfc.js","sources":["../src/components/charts/bars/bars.utils.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../theme/theme.types';\nimport { remarkableTheme } from '../../../theme/theme.constants';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { groupTailAsOther } from '../charts.utils';\nimport { getColor } from '../../../theme/styles/styles.utils';\nimport { getChartColors, getChartContrastColors } from '@embeddable.com/remarkable-ui';\nimport { getObjectStableKey } from '../../../utils.ts/object.utils';\nimport { Context } from 'chartjs-plugin-datalabels';\n\nexport const getBarStackedChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n },\n theme: Theme,\n): ChartData<'bar'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure } = props;\n\n const axis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))].sort();\n const groupDimensionName = `${groupDimension.name}${groupDimension.inputs?.granularity ? `.${groupDimension.inputs.granularity}` : ''}`;\n const groupBy = [...new Set(data.map((d) => d[groupDimensionName]))].filter((d) => d != null);\n\n const themeKey = getObjectStableKey(theme);\n const chartContrastColors = getChartContrastColors();\n const datasets = groupBy.map((groupByItem, index) => {\n const backgroundColor = getColor(\n `${themeKey}.charts.backgroundColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.backgroundColors ?? chartContrastColors,\n index,\n );\n\n const borderColor = getColor(\n `${themeKey}.charts.borderColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.borderColors ?? chartContrastColors,\n index,\n );\n\n return {\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor,\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimensionName] === groupByItem && d[dimension.name] === axisItem,\n );\n return record ? Number(record[measure.name]) : 0;\n }),\n };\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getBarChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measures: Measure[];\n maxItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'bar'> => {\n if (!props.data) {\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n }\n\n const themeFormatter = getThemeFormatter(theme);\n const themeKey = getObjectStableKey(theme);\n const groupedData = groupTailAsOther(props.data, props.dimension, props.measures, props.maxItems);\n const chartColors = getChartColors();\n\n return {\n labels: groupedData.map((item) => {\n return item[props.dimension.name];\n }),\n datasets: props.measures.map((measure, index) => {\n const backgroundColor = getColor(\n `${themeKey}.charts.backgroundColors`,\n measure.name,\n theme.charts.backgroundColors ?? chartColors,\n index,\n );\n\n const borderColor = getColor(\n `${themeKey}.charts.borderColors`,\n measure.name,\n theme.charts.borderColors ?? chartColors,\n index,\n );\n\n return {\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n data: groupedData.map((item) => item[measure.name] ?? 0),\n backgroundColor,\n borderColor,\n };\n }),\n };\n};\n\nconst getBarChartProDatalabelTotalFormatter = (\n context: Context,\n formatter: (value: number) => string,\n) => {\n const { datasets } = context.chart.data;\n const i = context.dataIndex;\n\n const total = datasets.reduce((sum, ds) => {\n const val = ds.data[i] as number;\n return sum + (val || 0);\n }, 0);\n\n return formatter(total);\n};\n\nexport const getBarChartProOptions = (\n options: {\n onBarClicked: (args: {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n }) => void;\n measures: Measure[];\n dimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { onBarClicked, measures, dimension, horizontal, data } = options;\n\n const themeFormatter = getThemeFormatter(theme);\n return {\n plugins: {\n legend: { position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n labels: {\n total: {\n formatter: (_value: string | number, context: Context) =>\n getBarChartProDatalabelTotalFormatter(context, (value: number) =>\n themeFormatter.data(measures[0]!, value),\n ),\n },\n value: {\n formatter: (value: string | number, context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n tooltip: {\n callbacks: {\n title: (context) => {\n const label = context[0]?.label;\n return themeFormatter.data(dimension, label);\n },\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n return `${themeFormatter.data(dimension, context.dataset.label) || ''}: ${themeFormatter.data(measure, raw)}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n if (!horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n if (!data || !data.labels) return undefined;\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n },\n onClick: (_event, elements, chart) => {\n const element = elements[0];\n const axisDimensionValue = (element ? chart.data.labels![element.index] : null) as\n | string\n | null;\n const groupingDimensionValue = (\n element\n ? (chart.data.datasets[element.datasetIndex] as { rawLabel?: string | null })?.rawLabel\n : null\n ) as string | null;\n\n onBarClicked({\n axisDimensionValue,\n groupingDimensionValue,\n });\n },\n };\n};\n"],"names":["getBarStackedChartProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","axis","d","groupDimensionName","_a","groupBy","themeKey","getObjectStableKey","chartContrastColors","getChartContrastColors","datasets","groupByItem","index","backgroundColor","getColor","borderColor","axisItem","record","getBarChartProData","remarkableTheme","groupedData","groupTailAsOther","chartColors","getChartColors","item","getBarChartProDatalabelTotalFormatter","context","formatter","i","total","sum","ds","val","getBarChartProOptions","options","onBarClicked","measures","horizontal","_value","value","label","raw","_event","elements","chart","element","axisDimensionValue","groupingDimensionValue"],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { g as j, d as n, u as B } from "./utc-B2gCnkBk.js";
2
+ import { i as E, q as F } from "./quarterOfYear-wgcl4CRi.js";
3
+ import { useTheme as M } from "@embeddable.com/react";
4
+ import { useMemo as W } from "react";
5
+ var S = { exports: {} }, Z = S.exports, $;
6
+ function b() {
7
+ return $ || ($ = 1, (function(O, h) {
8
+ (function(r, t) {
9
+ O.exports = t();
10
+ })(Z, (function() {
11
+ return function(r, t) {
12
+ t.prototype.isSameOrBefore = function(f, s) {
13
+ return this.isSame(f, s) || this.isBefore(f, s);
14
+ };
15
+ };
16
+ }));
17
+ })(S)), S.exports;
18
+ }
19
+ var C = b();
20
+ const G = /* @__PURE__ */ j(C);
21
+ n.extend(B);
22
+ n.extend(E);
23
+ n.extend(G);
24
+ n.extend(F);
25
+ function A(O) {
26
+ const h = M(), { results: r, dimension: t, orderDirection: f = "asc", externalDateBounds: s } = O;
27
+ return W(() => {
28
+ var k, q, I, R, V, w;
29
+ const m = (k = t.inputs) == null ? void 0 : k.granularity, o = t.name, a = (q = t.inputs) == null ? void 0 : q.dateBounds;
30
+ if (!m || !o || !r || r.isLoading) return r;
31
+ const c = a != null && a.relativeTimeString ? (I = h.defaults.dateRangesOptions.find((e) => e.value === (a == null ? void 0 : a.relativeTimeString))) == null ? void 0 : I.getRange() : a;
32
+ if (t.nativeType !== "time") return r;
33
+ const u = [...(r == null ? void 0 : r.data) ?? []].sort((e, i) => {
34
+ const l = e[o], p = i[o];
35
+ return l == null ? 1 : p == null ? -1 : n.utc(l).diff(n.utc(p));
36
+ }), x = n.utc(
37
+ (s == null ? void 0 : s.from) ?? (c == null ? void 0 : c.from) ?? ((R = u[0]) == null ? void 0 : R[o])
38
+ ), y = n.utc(
39
+ (s == null ? void 0 : s.to) ?? (c == null ? void 0 : c.to) ?? ((V = u[u.length - 1]) == null ? void 0 : V[o]) ?? ((w = [...u].reverse().find((e) => (e == null ? void 0 : e[o]) != null)) == null ? void 0 : w[o])
40
+ );
41
+ if (!x.isValid() || !y.isValid())
42
+ return { ...r, data: [] };
43
+ const v = /* @__PURE__ */ new Map();
44
+ for (const e of u) {
45
+ const i = e[o];
46
+ if (i == null) continue;
47
+ const l = n.utc(i).toISOString().split("Z")[0], p = v.get(l) ?? [];
48
+ p.push(e), v.set(l, p);
49
+ }
50
+ const d = [];
51
+ let g = x.startOf(m === "week" ? "isoWeek" : m);
52
+ for (; g.isSameOrBefore(y); ) {
53
+ const e = g.toISOString().split("Z")[0], i = v.get(e);
54
+ i && i.length > 0 ? d.push(...i) : d.push({ [o]: e }), g = g.add(1, m);
55
+ }
56
+ return f === "desc" && d.reverse(), {
57
+ ...r,
58
+ data: d
59
+ };
60
+ }, [r, t, f, h]);
61
+ }
62
+ export {
63
+ A as u
64
+ };
65
+ //# sourceMappingURL=charts.fillGaps.hooks-zCMYcjxz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charts.fillGaps.hooks-zCMYcjxz.js","sources":["../node_modules/dayjs/plugin/isSameOrBefore.js","../src/components/charts/charts.fillGaps.hooks.ts"],"sourcesContent":["!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","import { DataResponse, Dimension, TimeRange } from '@embeddable.com/core';\nimport dayjs, { QUnitType } from 'dayjs';\nimport isoWeek from 'dayjs/plugin/isoWeek.js';\nimport utc from 'dayjs/plugin/utc.js';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js';\nimport { Theme } from '../../theme/theme.types';\nimport { useTheme } from '@embeddable.com/react';\nimport { useMemo } from 'react';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear.js';\n\ndayjs.extend(utc);\ndayjs.extend(isoWeek);\ndayjs.extend(isSameOrBefore);\ndayjs.extend(quarterOfYear);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DataRecord = { [key: string]: any };\n\ntype UseFillGapsProps = {\n results: DataResponse | undefined;\n dimension: Dimension;\n orderDirection?: 'asc' | 'desc';\n externalDateBounds?: TimeRange;\n};\n\nexport function useFillGaps(props: UseFillGapsProps): DataResponse {\n const theme = useTheme() as Theme;\n const { results, dimension, orderDirection = 'asc', externalDateBounds } = props;\n\n const processed = useMemo(() => {\n const granularity = dimension.inputs?.granularity;\n const dimensionName = dimension.name;\n const dateBoundsTmp: TimeRange = dimension.inputs?.dateBounds;\n\n if (!granularity || !dimensionName || !results || results.isLoading) return results;\n\n const dateBounds = dateBoundsTmp?.relativeTimeString\n ? theme.defaults.dateRangesOptions\n .find((option) => option.value === dateBoundsTmp?.relativeTimeString)\n ?.getRange()\n : dateBoundsTmp;\n\n if (dimension.nativeType !== 'time') return results;\n\n const sortedResults = [...(results?.data ?? [])].sort((a, b) => {\n const aVal = a[dimensionName];\n const bVal = b[dimensionName];\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n return dayjs.utc(aVal).diff(dayjs.utc(bVal));\n });\n\n // Determine the full date range even if data is empty\n const from = dayjs.utc(\n externalDateBounds?.from ?? dateBounds?.from ?? sortedResults[0]?.[dimensionName],\n );\n\n const to = dayjs.utc(\n externalDateBounds?.to ??\n dateBounds?.to ??\n sortedResults[sortedResults.length - 1]?.[dimensionName] ??\n [...sortedResults].reverse().find((item) => item?.[dimensionName] != null)?.[dimensionName],\n );\n\n // If we *still* don’t have valid date bounds, bail out safely\n if (!from.isValid() || !to.isValid()) {\n return { ...results, data: [] };\n }\n\n const recordsByDate = new Map<string, DataRecord[]>();\n for (const record of sortedResults) {\n const value = record[dimensionName];\n if (value == null) continue;\n const key = dayjs.utc(value).toISOString().split('Z')[0]!;\n const arr = recordsByDate.get(key) ?? [];\n arr.push(record);\n recordsByDate.set(key, arr);\n }\n\n const filled: DataRecord[] = [];\n let current = from.startOf((granularity === 'week' ? 'isoWeek' : granularity) as QUnitType);\n\n while (current.isSameOrBefore(to)) {\n const key = current.toISOString().split('Z')[0]!;\n const records = recordsByDate.get(key);\n\n if (records && records.length > 0) {\n filled.push(...records);\n } else {\n filled.push({ [dimensionName]: key });\n }\n\n current = current.add(1, granularity as QUnitType);\n }\n\n if (orderDirection === 'desc') {\n filled.reverse();\n }\n\n return {\n ...results,\n data: filled,\n };\n }, [results, dimension, orderDirection, theme]);\n\n return processed as DataResponse;\n}\n"],"names":["e","i","module","this","dayjs","utc","isoWeek","isSameOrBefore","quarterOfYear","useFillGaps","props","theme","useTheme","results","dimension","orderDirection","externalDateBounds","useMemo","granularity","_a","dimensionName","dateBoundsTmp","_b","dateBounds","_c","option","sortedResults","a","b","aVal","bVal","from","_d","to","_e","_f","item","recordsByDate","record","value","key","arr","filled","current","records"],"mappings":"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","x_google_ignoreList":[0]}