@embeddable.com/remarkable-pro 0.2.6 → 0.2.7

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 (87) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +1 -1
  2. package/dist/BarChartDefaultPro.js +1 -1
  3. package/dist/BarChartGroupedHorizontalPro.js +1 -1
  4. package/dist/BarChartGroupedPro.js +1 -1
  5. package/dist/BarChartStackedHorizontalPro.js +1 -1
  6. package/dist/BarChartStackedPro.js +1 -1
  7. package/dist/DonutChartPro.js +1 -1
  8. package/dist/DonutLabelChartPro.js +1 -1
  9. package/dist/LineChartComparisonDefaultPro.js +1 -1
  10. package/dist/LineChartDefaultPro.js +1 -1
  11. package/dist/LineChartGroupedPro.js +1 -1
  12. package/dist/LineChartWithKpiTabsPro.js +1 -1
  13. package/dist/PieChartPro.js +1 -1
  14. package/dist/bars.utils-DR-ga7ps.js +176 -0
  15. package/dist/bars.utils-DR-ga7ps.js.map +1 -0
  16. package/dist/charts.utils-BEwWG4s2.js +25 -0
  17. package/dist/charts.utils-BEwWG4s2.js.map +1 -0
  18. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/index.d.ts.map +1 -1
  19. package/dist/components/charts/bars/BarChartGroupedPro/index.d.ts.map +1 -1
  20. package/dist/components/charts/bars/BarChartStackedHorizontalPro/index.d.ts.map +1 -1
  21. package/dist/components/charts/bars/BarChartStackedPro/index.d.ts.map +1 -1
  22. package/dist/components/charts/bars/bars.utils.d.ts +11 -0
  23. package/dist/components/charts/bars/bars.utils.d.ts.map +1 -1
  24. package/dist/components/charts/charts.utils.d.ts +1 -0
  25. package/dist/components/charts/charts.utils.d.ts.map +1 -1
  26. package/dist/components/charts/lines/LineChartComparisonDefaultPro/LineChartComparisonDefaultPro.utils.d.ts.map +1 -1
  27. package/dist/components/charts/lines/LineChartDefaultPro/LineChartDefaultPro.utils.d.ts.map +1 -1
  28. package/dist/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.d.ts +1 -0
  29. package/dist/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.d.ts.map +1 -1
  30. package/dist/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.test.d.ts +2 -0
  31. package/dist/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.test.d.ts.map +1 -0
  32. package/dist/components/charts/lines/lines.utils.d.ts +4 -1
  33. package/dist/components/charts/lines/lines.utils.d.ts.map +1 -1
  34. package/dist/components/charts/pies/pies.utils.d.ts +4 -1
  35. package/dist/components/charts/pies/pies.utils.d.ts.map +1 -1
  36. package/dist/{definition-1rawu7CS.js → definition-5MQbWUXL.js} +10 -10
  37. package/dist/definition-5MQbWUXL.js.map +1 -0
  38. package/dist/{definition-6V_kjo0t.js → definition-BNffWCqm.js} +42 -35
  39. package/dist/definition-BNffWCqm.js.map +1 -0
  40. package/dist/{definition-BbZF9oV3.js → definition-CMvwdXRu.js} +51 -44
  41. package/dist/definition-CMvwdXRu.js.map +1 -0
  42. package/dist/{definition-CuY7y9zK.js → definition-Ce2VcCyv.js} +2 -2
  43. package/dist/{definition-CuY7y9zK.js.map → definition-Ce2VcCyv.js.map} +1 -1
  44. package/dist/{definition-Cv0Wy617.js → definition-D1YtBczb.js} +40 -33
  45. package/dist/definition-D1YtBczb.js.map +1 -0
  46. package/dist/{definition-BjBVobf-.js → definition-D2bJQDNh.js} +29 -22
  47. package/dist/definition-D2bJQDNh.js.map +1 -0
  48. package/dist/{definition-flvbz5lg.js → definition-DIH0gF4I.js} +2 -2
  49. package/dist/{definition-flvbz5lg.js.map → definition-DIH0gF4I.js.map} +1 -1
  50. package/dist/definition-DOaQylZq.js +281 -0
  51. package/dist/definition-DOaQylZq.js.map +1 -0
  52. package/dist/{definition-cOQtp0ke.js → definition-DQP0JMyo.js} +114 -100
  53. package/dist/definition-DQP0JMyo.js.map +1 -0
  54. package/dist/{definition-HZ3fanxl.js → definition-DwouHcfu.js} +10 -10
  55. package/dist/definition-DwouHcfu.js.map +1 -0
  56. package/dist/{definition-BSKYvKCi.js → definition-HByuRICY.js} +78 -77
  57. package/dist/definition-HByuRICY.js.map +1 -0
  58. package/dist/{definition-kavZZeUh.js → definition-_hl_uvEW.js} +10 -10
  59. package/dist/definition-_hl_uvEW.js.map +1 -0
  60. package/dist/{definition-cEG06qae.js → definition-mz09xu8Q.js} +2 -2
  61. package/dist/{definition-cEG06qae.js.map → definition-mz09xu8Q.js.map} +1 -1
  62. package/dist/embeddable-components.json +52 -52
  63. package/dist/embeddable-theme-0137e.js +1 -1
  64. package/dist/index.js +202 -199
  65. package/dist/index.js.map +1 -1
  66. package/dist/lines.utils-CEGfmIHB.js.map +1 -1
  67. package/dist/pies.utils-Bb2EFei6.js +99 -0
  68. package/dist/pies.utils-Bb2EFei6.js.map +1 -0
  69. package/dist/{charts.utils-B_axoMNF.js → theme.constants-Cl6fOHv-.js} +638 -654
  70. package/dist/theme.constants-Cl6fOHv-.js.map +1 -0
  71. package/package.json +1 -2
  72. package/dist/bars.utils-Dw_DLpHV.js +0 -158
  73. package/dist/bars.utils-Dw_DLpHV.js.map +0 -1
  74. package/dist/charts.utils-B_axoMNF.js.map +0 -1
  75. package/dist/definition-1rawu7CS.js.map +0 -1
  76. package/dist/definition-6V_kjo0t.js.map +0 -1
  77. package/dist/definition-BSKYvKCi.js.map +0 -1
  78. package/dist/definition-BbZF9oV3.js.map +0 -1
  79. package/dist/definition-BjBVobf-.js.map +0 -1
  80. package/dist/definition-Cv0Wy617.js.map +0 -1
  81. package/dist/definition-D-KGeUhT.js +0 -277
  82. package/dist/definition-D-KGeUhT.js.map +0 -1
  83. package/dist/definition-HZ3fanxl.js.map +0 -1
  84. package/dist/definition-cOQtp0ke.js.map +0 -1
  85. package/dist/definition-kavZZeUh.js.map +0 -1
  86. package/dist/pies.utils-COX5fEMR.js +0 -76
  87. package/dist/pies.utils-COX5fEMR.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@embeddable.com/remarkable-pro",
3
3
  "author": "embeddable (https://embeddable.com)",
4
- "version": "0.2.6",
4
+ "version": "0.2.7",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/embeddable-hq/remarkable-pro"
@@ -80,7 +80,6 @@
80
80
  "@embeddable.com/sdk-core": "4.4.0",
81
81
  "@embeddable.com/sdk-react": "4.3.6",
82
82
  "@eslint/css": "^0.13.0",
83
- "@stencil/core": "^4.43.2",
84
83
  "@testing-library/react": "^16.3.2",
85
84
  "@types/chroma-js": "^3.1.1",
86
85
  "@types/react": "^19.1.9",
@@ -1,158 +0,0 @@
1
- import { r as v, g as x, a as D } from "./charts.utils-B_axoMNF.js";
2
- import { g as C, a as F } from "./formatter.utils-BZMmas2O.js";
3
- import { g as f } from "./styles.utils-C8CnV0SB.js";
4
- import { t as O } from "./index-B9eYAQkT.js";
5
- const A = (s, d) => {
6
- const m = C(d), { data: o = [], dimension: c, groupDimension: e, measure: i } = s, n = [...new Set(o.map((r) => r[c.name]).filter((r) => r != null))];
7
- n.sort();
8
- const a = s.axisOrder ? s.axisOrder.filter((r) => n.includes(r)) : n, t = F(e), l = [...new Set(o.map((r) => r[t]))].filter((r) => r != null), u = O(), g = l.map((r, b) => {
9
- const w = f({
10
- dimensionOrMeasure: e,
11
- theme: d,
12
- color: "background",
13
- value: `${e.name}.${r}`,
14
- index: b,
15
- chartColors: u
16
- }), P = f({
17
- dimensionOrMeasure: e,
18
- theme: d,
19
- color: "border",
20
- value: `${e.name}.${r}`,
21
- index: b,
22
- chartColors: u
23
- });
24
- return {
25
- label: m.data(e, r),
26
- rawLabel: r,
27
- backgroundColor: w,
28
- borderColor: P,
29
- data: a.map(($) => {
30
- const h = o.find(
31
- (k) => k[t] === r && k[c.name] === $
32
- );
33
- return h ? Number(h[i.name]) : 0;
34
- })
35
- };
36
- });
37
- return {
38
- labels: a,
39
- datasets: g
40
- };
41
- }, L = (s, d = v) => {
42
- if (!s.data)
43
- return {
44
- labels: [],
45
- datasets: [{ data: [] }]
46
- };
47
- const m = C(d), o = x(s.data, s.dimension, s.measures, s.maxItems), c = O();
48
- return {
49
- labels: o.map((e) => e[s.dimension.name]),
50
- datasets: s.measures.map((e, i) => {
51
- const n = f({
52
- dimensionOrMeasure: e,
53
- theme: d,
54
- color: "background",
55
- value: e.name,
56
- index: i,
57
- chartColors: c
58
- }), a = f({
59
- dimensionOrMeasure: e,
60
- theme: d,
61
- color: "border",
62
- value: e.name,
63
- index: i,
64
- chartColors: c
65
- });
66
- return {
67
- label: m.dimensionOrMeasureTitle(e),
68
- data: o.map((t) => t[e.name] ?? 0),
69
- backgroundColor: n,
70
- borderColor: a
71
- };
72
- })
73
- };
74
- }, M = (s, d) => {
75
- const { datasets: m } = s.chart.data, o = s.dataIndex, c = m.reduce((e, i) => {
76
- const n = i.data[o];
77
- return e + (n || 0);
78
- }, 0);
79
- return d(c);
80
- }, S = (s, d) => {
81
- const { onBarClicked: m, measures: o, dimension: c, horizontal: e, data: i } = s, n = C(d);
82
- return {
83
- plugins: {
84
- legend: { position: d.charts.legendPosition ?? "bottom" },
85
- datalabels: {
86
- labels: {
87
- total: {
88
- formatter: (a, t) => M(
89
- t,
90
- (l) => n.data(o[0], l)
91
- )
92
- },
93
- value: {
94
- formatter: (a, t) => {
95
- var u;
96
- const l = o[t.datasetIndex % o.length];
97
- return (u = l.inputs) != null && u.showValueAsPercentage ? D(Number(a), t.dataset.data) : n.data(l, a);
98
- }
99
- }
100
- }
101
- },
102
- tooltip: {
103
- callbacks: {
104
- title: (a) => {
105
- var l;
106
- const t = (l = a[0]) == null ? void 0 : l.label;
107
- return n.data(c, t);
108
- },
109
- label: (a) => {
110
- var b;
111
- const t = o[a.datasetIndex % o.length], l = a.raw, u = n.data(c, a.dataset.label) || "", g = n.data(t, l);
112
- let r = "";
113
- return (b = t.inputs) != null && b.showValueAsPercentage && (r = `(${D(l, a.dataset.data)})`), `${u}: ${g} ${r}`;
114
- }
115
- }
116
- }
117
- },
118
- scales: {
119
- x: {
120
- ticks: {
121
- callback: (a) => {
122
- if (e)
123
- return n.data(o[0], a);
124
- if (!i || !i.labels) return;
125
- const t = i.labels[Number(a)];
126
- return n.data(c, t);
127
- }
128
- }
129
- },
130
- y: {
131
- ticks: {
132
- callback: (a) => {
133
- if (!e)
134
- return n.data(o[0], a);
135
- if (!i || !i.labels) return;
136
- const t = i.labels[Number(a)];
137
- return n.data(c, t);
138
- }
139
- }
140
- }
141
- },
142
- onClick: (a, t, l) => {
143
- var b;
144
- if (!m) return;
145
- const u = t[0], g = u ? l.data.labels[u.index] : null, r = u ? (b = l.data.datasets[u.datasetIndex]) == null ? void 0 : b.rawLabel : null;
146
- m({
147
- axisDimensionValue: g,
148
- groupingDimensionValue: r
149
- });
150
- }
151
- };
152
- };
153
- export {
154
- S as a,
155
- A as b,
156
- L as g
157
- };
158
- //# sourceMappingURL=bars.utils-Dw_DLpHV.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bars.utils-Dw_DLpHV.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 { getDatalabelPercentage, groupTailAsOther } from '../charts.utils';\nimport { getDimensionFieldName } from '../../../utils/data.utils';\nimport { getDimensionMeasureColor } from '../../../theme/styles/styles.utils';\nimport { getChartColors } from '@embeddable.com/remarkable-ui';\nimport { Context } from 'chartjs-plugin-datalabels';\n\nexport const getBarStackedChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n axisOrder?: string[];\n },\n theme: Theme,\n): ChartData<'bar'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure } = props;\n\n const uniqueAxis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))];\n uniqueAxis.sort();\n\n const axis = props.axisOrder ? props.axisOrder.filter((v) => uniqueAxis.includes(v)) : uniqueAxis;\n const groupDimensionName = getDimensionFieldName(groupDimension);\n const groupBy = [...new Set(data.map((d) => d[groupDimensionName]))].filter((d) => d != null);\n\n const chartColors = getChartColors();\n const datasets = groupBy.map((groupByItem, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'background',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'border',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor,\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimensionName] === groupByItem && d[dimension.name] === axisItem,\n );\n return record ? Number(record[measure.name]) : 0;\n }),\n };\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getBarChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measures: Measure[];\n maxItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'bar'> => {\n if (!props.data) {\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n }\n\n const themeFormatter = getThemeFormatter(theme);\n const groupedData = groupTailAsOther(props.data, props.dimension, props.measures, props.maxItems);\n const chartColors = getChartColors();\n\n return {\n labels: groupedData.map((item) => {\n return item[props.dimension.name];\n }),\n datasets: props.measures.map((measure, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'background',\n value: measure.name,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'border',\n value: measure.name,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n data: groupedData.map((item) => item[measure.name] ?? 0),\n backgroundColor,\n borderColor,\n };\n }),\n };\n};\n\nconst getBarChartProDatalabelTotalFormatter = (\n context: Context,\n formatter: (value: number) => string,\n) => {\n const { datasets } = context.chart.data;\n const i = context.dataIndex;\n\n const total = datasets.reduce((sum, ds) => {\n const val = ds.data[i] as number;\n return sum + (val || 0);\n }, 0);\n\n return formatter(total);\n};\n\nexport const getBarChartProOptions = (\n options: {\n onBarClicked?: (args: {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n }) => void;\n measures: Measure[];\n dimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { onBarClicked, measures, dimension, horizontal, data } = options;\n\n const themeFormatter = getThemeFormatter(theme);\n return {\n plugins: {\n legend: { position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n labels: {\n total: {\n formatter: (_value: string | number, context: Context) =>\n getBarChartProDatalabelTotalFormatter(context, (value: number) =>\n themeFormatter.data(measures[0]!, value),\n ),\n },\n value: {\n formatter: (value: string | number, context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n\n if (measure.inputs?.showValueAsPercentage) {\n return getDatalabelPercentage(Number(value), context.dataset.data);\n }\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\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n\n const dimensionLabel = themeFormatter.data(dimension, context.dataset.label) || '';\n const measureValue = themeFormatter.data(measure, raw);\n\n let percentage = '';\n if (measure.inputs?.showValueAsPercentage) {\n percentage = `(${getDatalabelPercentage(raw, context.dataset.data)})`;\n }\n return `${dimensionLabel}: ${measureValue} ${percentage}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n if (!horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n if (!data || !data.labels) return undefined;\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n },\n onClick: (_event, elements, chart) => {\n if (!onBarClicked) return;\n\n const element = elements[0];\n const axisDimensionValue = (element ? chart.data.labels![element.index] : null) as\n | string\n | null;\n const groupingDimensionValue = (\n element\n ? (chart.data.datasets[element.datasetIndex] as { rawLabel?: string | null })?.rawLabel\n : null\n ) as string | null;\n\n onBarClicked({\n axisDimensionValue,\n groupingDimensionValue,\n });\n },\n };\n};\n"],"names":["getBarStackedChartProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","uniqueAxis","d","axis","v","groupDimensionName","getDimensionFieldName","groupBy","chartColors","getChartColors","datasets","groupByItem","index","backgroundColor","getDimensionMeasureColor","borderColor","axisItem","record","getBarChartProData","remarkableTheme","groupedData","groupTailAsOther","item","getBarChartProDatalabelTotalFormatter","context","formatter","i","total","sum","ds","val","getBarChartProOptions","options","onBarClicked","measures","horizontal","_value","value","_a","getDatalabelPercentage","label","raw","dimensionLabel","measureValue","percentage","_event","elements","chart","element","axisDimensionValue","groupingDimensionValue"],"mappings":"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"}