@milaboratories/miplots4 1.0.174 → 1.0.175

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 (98) hide show
  1. package/dist/DataFrame.d.ts +1 -1
  2. package/dist/DataFrame.d.ts.map +1 -1
  3. package/dist/DataFrame.js +52 -51
  4. package/dist/DataFrame.js.map +1 -1
  5. package/dist/bubble/BubbleSettingsImpl.d.ts +3 -0
  6. package/dist/bubble/BubbleSettingsImpl.d.ts.map +1 -1
  7. package/dist/bubble/BubbleSettingsImpl.js +16 -16
  8. package/dist/bubble/BubbleSettingsImpl.js.map +1 -1
  9. package/dist/bubble/getGroupedCellsData.d.ts +1 -1
  10. package/dist/bubble/getGroupedCellsData.d.ts.map +1 -1
  11. package/dist/bubble/getGroupedCellsData.js +12 -11
  12. package/dist/bubble/getGroupedCellsData.js.map +1 -1
  13. package/dist/bubble/index.d.ts.map +1 -1
  14. package/dist/bubble/index.js +61 -69
  15. package/dist/bubble/index.js.map +1 -1
  16. package/dist/constants.js +9 -11
  17. package/dist/constants.js.map +1 -1
  18. package/dist/discrete/DiscreteSettingsImpl.d.ts +2 -1
  19. package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -1
  20. package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
  21. package/dist/discrete/index.d.ts.map +1 -1
  22. package/dist/discrete/index.js +137 -157
  23. package/dist/discrete/index.js.map +1 -1
  24. package/dist/heatmap/HeatmapSettingsImpl.d.ts +1 -0
  25. package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
  26. package/dist/heatmap/HeatmapSettingsImpl.js +29 -28
  27. package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
  28. package/dist/heatmap/fillCellsData.d.ts +1 -1
  29. package/dist/heatmap/fillCellsData.d.ts.map +1 -1
  30. package/dist/heatmap/fillCellsData.js +172 -160
  31. package/dist/heatmap/fillCellsData.js.map +1 -1
  32. package/dist/heatmap/getCells.d.ts +1 -1
  33. package/dist/heatmap/getCells.d.ts.map +1 -1
  34. package/dist/heatmap/getCells.js +10 -9
  35. package/dist/heatmap/getCells.js.map +1 -1
  36. package/dist/heatmap/index.d.ts.map +1 -1
  37. package/dist/heatmap/index.js +95 -102
  38. package/dist/heatmap/index.js.map +1 -1
  39. package/dist/histogram/HistogramSettingsImpl.d.ts +1 -0
  40. package/dist/histogram/HistogramSettingsImpl.d.ts.map +1 -1
  41. package/dist/histogram/HistogramSettingsImpl.js +43 -43
  42. package/dist/histogram/HistogramSettingsImpl.js.map +1 -1
  43. package/dist/histogram/getHistogramData.d.ts +2 -2
  44. package/dist/histogram/getHistogramData.d.ts.map +1 -1
  45. package/dist/histogram/getHistogramData.js +47 -46
  46. package/dist/histogram/getHistogramData.js.map +1 -1
  47. package/dist/histogram/index.d.ts +0 -1
  48. package/dist/histogram/index.d.ts.map +1 -1
  49. package/dist/histogram/index.js +88 -89
  50. package/dist/histogram/index.js.map +1 -1
  51. package/dist/index.d.ts +3 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +8 -4
  54. package/dist/index.js.map +1 -1
  55. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +2 -0
  56. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
  57. package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
  58. package/dist/scatterplot/dots.d.ts +2 -2
  59. package/dist/scatterplot/dots.d.ts.map +1 -1
  60. package/dist/scatterplot/dots.js +17 -16
  61. package/dist/scatterplot/dots.js.map +1 -1
  62. package/dist/scatterplot/index.d.ts +0 -1
  63. package/dist/scatterplot/index.d.ts.map +1 -1
  64. package/dist/scatterplot/index.js +92 -101
  65. package/dist/scatterplot/index.js.map +1 -1
  66. package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -1
  67. package/dist/scatterplot/utils/createLegendInfo.js +1 -1
  68. package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
  69. package/dist/types/bubble.d.ts +5 -0
  70. package/dist/types/bubble.d.ts.map +1 -1
  71. package/dist/types/bubble.js +19 -18
  72. package/dist/types/bubble.js.map +1 -1
  73. package/dist/types/dendro.d.ts +5 -0
  74. package/dist/types/dendro.d.ts.map +1 -1
  75. package/dist/types/dendro.js +10 -9
  76. package/dist/types/dendro.js.map +1 -1
  77. package/dist/types/discrete.d.ts +8 -5
  78. package/dist/types/discrete.d.ts.map +1 -1
  79. package/dist/types/discrete.js +12 -11
  80. package/dist/types/discrete.js.map +1 -1
  81. package/dist/types/heatmap.d.ts +5 -0
  82. package/dist/types/heatmap.d.ts.map +1 -1
  83. package/dist/types/heatmap.js +2 -1
  84. package/dist/types/heatmap.js.map +1 -1
  85. package/dist/types/histogram.d.ts +5 -0
  86. package/dist/types/histogram.d.ts.map +1 -1
  87. package/dist/types/histogram.js +43 -42
  88. package/dist/types/histogram.js.map +1 -1
  89. package/dist/types/scatterplot.d.ts +6 -0
  90. package/dist/types/scatterplot.d.ts.map +1 -1
  91. package/dist/types/scatterplot.js +21 -19
  92. package/dist/types/scatterplot.js.map +1 -1
  93. package/dist/utils/getFacetKeysFromValueLists.d.ts +6 -0
  94. package/dist/utils/getFacetKeysFromValueLists.d.ts.map +1 -0
  95. package/dist/utils/getFacetKeysFromValueLists.js +9 -0
  96. package/dist/utils/getFacetKeysFromValueLists.js.map +1 -0
  97. package/dist/utils/getPointShape.d.ts +1 -1
  98. package/package.json +1 -1
@@ -1,237 +1,217 @@
1
- var O = Object.defineProperty;
2
- var F = (o, r, e) => r in o ? O(o, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[r] = e;
3
- var y = (o, r, e) => F(o, typeof r != "symbol" ? r + "" : r, e);
4
- import { l as x } from "../_virtual/lodash.js";
5
- import { s as T } from "../_virtual/server.browser.js";
6
- import { AbstractChart as M } from "../AbstractChart.js";
7
- import { NO_GROUPED as D } from "../DataFrame.js";
8
- import { getUnknownErrorInfo as v, isErrorInfo as w } from "../types/common.js";
1
+ var P = Object.defineProperty;
2
+ var O = (s, r, a) => r in s ? P(s, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : s[r] = a;
3
+ var y = (s, r, a) => O(s, typeof r != "symbol" ? r + "" : r, a);
4
+ import { l as G } from "../_virtual/lodash.js";
5
+ import { s as U } from "../_virtual/server.browser.js";
6
+ import { AbstractChart as F } from "../AbstractChart.js";
7
+ import { NO_GROUPED as _ } from "../DataFrame.js";
8
+ import { getUnknownErrorInfo as w, isErrorInfo as v } from "../types/common.js";
9
9
  import "../types/discrete.js";
10
10
  import "../types/scatterplot.js";
11
11
  import "../types/heatmap.js";
12
12
  import "../types/dendro.js";
13
13
  import "../types/histogram.js";
14
14
  import "../types/bubble.js";
15
- import j from "./ChartRenderer.js";
16
- import { MAX_GROUPS_COUNT as g, MAX_FACETS_COUNT as b } from "../constants.js";
17
- import { DiscreteSettingsImpl as B, StatLayer as G, BoxLayer as H, ViolinLayer as X, DotLayer as q, LineLayer as z, ErrorBarLayer as J, BarLayer as Q, StackedBarLayer as W, StackedAreaLayer as Y, BinnedDotsLayer as Z, PairedPointsLayer as $, SinaLayer as tt, LogoPlotLayer as at } from "./DiscreteSettingsImpl.js";
18
- import { getBoxesData as et } from "./layers/boxes.js";
19
- import { getViolinsData as rt } from "./layers/violins.js";
20
- import { getSinaData as nt } from "./layers/sina.js";
21
- import { getDotsData as ot } from "./layers/dots.js";
22
- import { getLinesData as st } from "./layers/lines.js";
23
- import { getErrorBarsData as it } from "./layers/errorbars.js";
24
- import { getBarsData as lt } from "./layers/bar.js";
25
- import { getStackedBarsData as ct } from "./layers/stackedBar.js";
26
- import { getStackedAreaData as ut } from "./layers/stackedArea.js";
27
- import { getBinnedDotsData as ht } from "./layers/binnedDots.js";
28
- import { getPairedPointsData as dt } from "./layers/pairedPoints.js";
29
- import { getLogoData as mt } from "./layers/logo.js";
30
- import { getStatsData as ft } from "./layers/stats/index.js";
31
- import { getFacetStringKey as _ } from "./utils/getFacetStringKey.js";
32
- import { arraysAreDifferent as pt } from "../utils/arraysAreDifferent.js";
33
- import { getFacetLabels as yt } from "./utils/getFacetLabels.js";
34
- function k(o, r, e = null) {
35
- const t = r.value, n = o.getColumnCategories(t);
36
- return x.intersection(e ?? n, n).map(String);
15
+ import T from "./ChartRenderer.js";
16
+ import { DiscreteSettingsImpl as B, StatLayer as C, BoxLayer as j, ViolinLayer as H, DotLayer as q, LineLayer as z, ErrorBarLayer as J, BarLayer as M, StackedBarLayer as Q, StackedAreaLayer as W, BinnedDotsLayer as X, PairedPointsLayer as Y, SinaLayer as Z, LogoPlotLayer as $ } from "./DiscreteSettingsImpl.js";
17
+ import { getBoxesData as tt } from "./layers/boxes.js";
18
+ import { getViolinsData as et } from "./layers/violins.js";
19
+ import { getSinaData as at } from "./layers/sina.js";
20
+ import { getDotsData as rt } from "./layers/dots.js";
21
+ import { getLinesData as nt } from "./layers/lines.js";
22
+ import { getErrorBarsData as st } from "./layers/errorbars.js";
23
+ import { getBarsData as ot } from "./layers/bar.js";
24
+ import { getStackedBarsData as it } from "./layers/stackedBar.js";
25
+ import { getStackedAreaData as lt } from "./layers/stackedArea.js";
26
+ import { getBinnedDotsData as ct } from "./layers/binnedDots.js";
27
+ import { getPairedPointsData as ut } from "./layers/pairedPoints.js";
28
+ import { getLogoData as ht } from "./layers/logo.js";
29
+ import { getStatsData as dt } from "./layers/stats/index.js";
30
+ import { getFacetStringKey as D } from "./utils/getFacetStringKey.js";
31
+ import { arraysAreDifferent as k } from "../utils/arraysAreDifferent.js";
32
+ import { getFacetLabels as mt } from "./utils/getFacetLabels.js";
33
+ function ft(s, r, a = null) {
34
+ const t = r.value, n = s.getColumnCategories(t);
35
+ return G.intersection(a ?? n, n).map(String);
37
36
  }
38
- function A(o) {
39
- if (!o.length)
37
+ function pt(s) {
38
+ if (!s.length)
40
39
  return [];
41
40
  let r = [[]];
42
- return o.forEach((e) => {
41
+ return s.forEach((a) => {
43
42
  const t = [];
44
- e.forEach((n) => {
45
- t.push(...r.map((i) => [...i, n]));
43
+ a.forEach((n) => {
44
+ t.push(...r.map((o) => [...o, n]));
46
45
  }), r = t;
47
46
  }), r;
48
47
  }
49
- function N(o, r) {
50
- return !o && r || o && !r ? !0 : !o || !r ? !1 : o.columnName.value !== r.columnName.value || o.columnName.nullValueLabel !== r.columnName.nullValueLabel || pt(o.order, r.order, { ignoreOrder: !0 }) || o.allowNullGroup !== r.allowNullGroup;
48
+ function K(s, r) {
49
+ return !s && r || s && !r ? !0 : !s || !r ? !1 : s.columnName.value !== r.columnName.value || s.columnName.nullValueLabel !== r.columnName.nullValueLabel || k(s.order, r.order, { ignoreOrder: !0 }) || s.allowNullGroup !== r.allowNullGroup;
51
50
  }
52
- function C(o, r) {
53
- const e = (r == null ? void 0 : r.columnName.nullValueLabel) ?? "NA";
51
+ function L(s, r) {
52
+ const a = (r == null ? void 0 : r.columnName.nullValueLabel) ?? "NA";
54
53
  if (!r)
55
54
  return {
55
+ groupingKeys: [_],
56
56
  keys: ["null"],
57
57
  value: null,
58
58
  label: "",
59
- valueLabels: { null: e },
59
+ valueLabels: { null: "" },
60
60
  inheritedAes: null
61
61
  };
62
- const t = r.columnName.value, n = r.columnName.valueLabels, i = o.getColumnCategories(t, !1), l = (h) => {
63
- const d = n ? String(
64
- o.getColumnValue(
62
+ const t = r.columnName.value, n = r.columnName.valueLabels, o = s.getColumnCategories(t, !1), i = (m) => {
63
+ const h = n ? String(
64
+ s.getColumnValue(
65
65
  n,
66
- o.getColumnCategoryRowIndex(t, h)
66
+ s.getColumnCategoryRowIndex(t, m)
67
67
  )
68
- ) : h;
69
- return d === "null" ? e : d;
70
- }, u = o.getColumnCategories(t, !r.allowNullGroup);
68
+ ) : m;
69
+ return h === "null" ? a : h;
70
+ }, l = s.getColumnCategories(t, !r.allowNullGroup), u = r.order === void 0 ? l : G.intersection(r.order.map(String), l);
71
71
  return {
72
- keys: r.order === void 0 ? u : x.intersection(r.order.map(String), u),
72
+ keys: u,
73
+ groupingKeys: u,
73
74
  value: t,
74
75
  label: r.columnName.label ?? t,
75
- valueLabels: i.reduce((h, d) => (h[d] = l(d), h), {}),
76
+ valueLabels: o.reduce((m, h) => (m[h] = i(h), m), {}),
76
77
  inheritedAes: r.inheritedAes ?? null
77
78
  };
78
79
  }
79
- class Jt extends M {
80
- constructor(e, t, n) {
81
- super(e, t);
80
+ class Jt extends F {
81
+ constructor(a, t, n) {
82
+ super(a, t);
82
83
  y(this, "settings");
83
- y(this, "chartRenderer", new j());
84
+ y(this, "chartRenderer", new T());
84
85
  y(this, "onTooltipHintSwitch", () => {
85
86
  });
86
87
  y(this, "calculatedData", null);
87
88
  this.settings = new B(t), n && (this.onTooltipHintSwitch = n[0]);
88
89
  }
89
- mount(e) {
90
+ mount(a) {
90
91
  try {
91
- this.chartRenderer.init(e), this._updateData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
92
+ this.chartRenderer.init(a), this._updateData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
92
93
  } catch (t) {
93
- this.hasError = !0, t instanceof Error && (this.errorInfo = w(t.cause) ? t.cause : v(t), this.chartRenderer.renderError(t.message), console.error(t));
94
+ this.hasError = !0, t instanceof Error && (this.errorInfo = v(t.cause) ? t.cause : w(t), this.chartRenderer.renderError(t.message), console.error(t));
94
95
  }
95
96
  }
96
97
  unmount() {
97
98
  this.chartRenderer.clear();
98
99
  }
99
- updateSettingsAndData(e, t) {
100
+ updateSettingsAndData(a, t) {
100
101
  try {
101
- const n = this.settings, i = this.data;
102
- this.settings = new B(t), this.data = e, this._needUpdateCalculatedDataBySettings(n, this.settings) || this._needUpdateCalculatedDataByData(i, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
102
+ const n = this.settings, o = this.data;
103
+ this.settings = new B(t), this.data = a, this._needUpdateCalculatedDataBySettings(n, this.settings) || this._needUpdateCalculatedDataByData(o, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
103
104
  } catch (n) {
104
- this.hasError = !0, n instanceof Error && (this.errorInfo = w(n.cause) ? n.cause : v(n), this.chartRenderer.renderError(n.message), console.error(n));
105
+ this.hasError = !0, n instanceof Error && (this.errorInfo = v(n.cause) ? n.cause : w(n), this.chartRenderer.renderError(n.message), console.error(n));
105
106
  }
106
107
  }
107
- updateChartState(e, t) {
108
+ updateChartState(a, t) {
108
109
  console.warn("no chart state for discrete");
109
110
  }
110
111
  export() {
111
- return this._updateChart(), T.renderToString(this.chartRenderer.component);
112
+ return this._updateChart(), U.renderToString(this.chartRenderer.component);
112
113
  }
113
- _needUpdateCalculatedDataBySettings(e, t) {
114
- return e.chartSettings.yAxis.scale !== t.chartSettings.yAxis.scale || N(e.primaryGrouping, t.primaryGrouping) || N(e.secondaryGrouping, t.secondaryGrouping) || e.facetBy.some((n, i) => {
115
- var l;
116
- return n.value !== ((l = t.facetBy[i]) == null ? void 0 : l.value);
117
- }) || e.layers.length !== t.layers.length || e.layers.some((n, i) => !n.isEqualForCalculation(t.layers[i]));
118
- }
119
- _needUpdateCalculatedDataByData(e, t) {
120
- const n = Object.keys(e.data), i = Object.keys(t.data);
121
- return e.id !== t.id || n.length !== i.length || n.some((l) => {
114
+ _needUpdateCalculatedDataBySettings(a, t) {
115
+ var n, o;
116
+ return a.chartSettings.yAxis.scale !== t.chartSettings.yAxis.scale || K(a.primaryGrouping, t.primaryGrouping) || K(a.secondaryGrouping, t.secondaryGrouping) || a.facetBy.some((i, l) => {
122
117
  var u;
123
- return e.data[l].length !== ((u = t.data[l]) == null ? void 0 : u.length);
118
+ return i.value !== ((u = t.facetBy[l]) == null ? void 0 : u.value);
119
+ }) || k(((n = a.facetSettings) == null ? void 0 : n.order) ?? [], ((o = t.facetSettings) == null ? void 0 : o.order) ?? []) || a.layers.length !== t.layers.length || a.layers.some((i, l) => !i.isEqualForCalculation(t.layers[l]));
120
+ }
121
+ _needUpdateCalculatedDataByData(a, t) {
122
+ const n = Object.keys(a.data), o = Object.keys(t.data);
123
+ return a.id !== t.id || n.length !== o.length || n.some((i) => {
124
+ var l;
125
+ return a.data[i].length !== ((l = t.data[i]) == null ? void 0 : l.length);
124
126
  });
125
127
  }
126
128
  _updateData() {
127
- var E, S;
128
- const { chartSettings: e, y: t, keyColumn: n, facetBy: i, layers: l, facetSettings: u } = this.settings, { yAxis: s } = e, h = this.data.getColumn(t.value).every((a) => a === null || !(Number(a) < 0)), d = C(this.data, this.settings.primaryGrouping), f = C(this.data, this.settings.secondaryGrouping), I = i.map((a) => a.value);
129
- if (!((E = this.settings.primaryGrouping) != null && E.unlimitedGroupsCount) && d.keys.length > g) {
130
- const a = {
131
- type: "tooManyPrimaryGroups",
132
- info: { count: d.keys.length, maxCount: g }
133
- };
134
- throw Error(a.type, { cause: a });
135
- }
136
- if (!((S = this.settings.secondaryGrouping) != null && S.unlimitedGroupsCount) && f.keys.length > g) {
137
- const a = {
138
- type: "tooManySecondaryGroups",
139
- info: { count: f.keys.length, maxCount: g }
140
- };
141
- throw Error(a.type, { cause: a });
142
- }
143
- let m = A(
144
- i.map((a) => {
145
- var p;
146
- return k(this.data, a, (p = u == null ? void 0 : u.order) == null ? void 0 : p[a.value]);
147
- })
129
+ var E;
130
+ const { chartSettings: a, y: t, keyColumn: n, facetBy: o, layers: i, facetSettings: l } = this.settings, { yAxis: u } = a, m = this.data.getColumn(t.value).every((e) => e === null || !(Number(e) < 0)), h = L(this.data, this.settings.primaryGrouping), g = L(this.data, this.settings.secondaryGrouping), S = o.length ? o.map((e) => e.value) : [null];
131
+ let d = pt(
132
+ o.map((e) => ft(this.data, e))
148
133
  );
149
- if (m.length === 0 && (m = [[D]]), m.length > b) {
150
- const a = {
151
- type: "tooManyFacets",
152
- info: { count: m.length, maxCount: b }
153
- };
154
- throw Error(a.type, { cause: a });
134
+ if (d.length === 0 && (d = [[_]]), (E = l == null ? void 0 : l.order) != null && E.length) {
135
+ const e = d.map(D);
136
+ d = G.intersection(l.order, e).map((f) => d.find((V) => D(V) === f)).filter((f) => f != null);
155
137
  }
156
- const L = m.map(_), R = yt(this.data, i, L, m);
157
- this.data.setGrouping([...I, d.value, f.value]);
138
+ const b = d.map(D), A = mt(this.data, o, b, d), N = o.length ? S.map((e, p) => [...new Set(d.map((f) => f[p]))]) : [void 0];
139
+ this.data.setGrouping(
140
+ [...S, h.value, g.value],
141
+ [...N, h.groupingKeys, g.groupingKeys]
142
+ );
158
143
  const c = {
159
- facet: m,
160
- primary: d.value !== null ? d.keys : [D],
161
- secondary: f.value !== null ? f.keys : [D]
162
- }, K = c.facet.reduce((a, p) => (a[_(p)] = c.primary.filter(
163
- (V) => this.data.getRowsByGrouping([...p, V]).length > 0
164
- ).map(String), a), {}), P = l.filter((a) => !(a instanceof G)).map((a) => {
165
- if (a instanceof H)
166
- return et(a, c, this.data, t, n, s);
167
- if (a instanceof X)
168
- return rt(a, c, this.data, t, s);
169
- if (a instanceof q)
170
- return ot(a, c, this.data, t, s, n);
171
- if (a instanceof z)
172
- return st(a, c, this.data, t, s);
173
- if (a instanceof J)
174
- return it(a, c, this.data, t, s);
175
- if (a instanceof Q)
176
- return lt(a, c, this.data, t, s);
177
- if (a instanceof W)
178
- return ct(a, c, this.data, t);
179
- if (a instanceof Y)
180
- return ut(a, c, this.data, t);
181
- if (a instanceof Z)
182
- return ht(a, c, this.data, t, s);
183
- if (a instanceof $)
184
- return dt(a, c, this.data, t, s);
185
- if (a instanceof tt)
186
- return nt(a, c, this.data, t, s);
187
- if (a instanceof at)
188
- return mt(a, c, this.data, t);
144
+ facet: d,
145
+ primary: h.groupingKeys,
146
+ secondary: g.groupingKeys
147
+ }, x = c.facet.reduce((e, p) => (e[D(p)] = c.primary.filter(
148
+ (f) => this.data.getRowsByGrouping([...p, f]).length > 0
149
+ ).map(String), e), {}), I = i.filter((e) => !(e instanceof C)).map((e) => {
150
+ if (e instanceof j)
151
+ return tt(e, c, this.data, t, n, u);
152
+ if (e instanceof H)
153
+ return et(e, c, this.data, t, u);
154
+ if (e instanceof q)
155
+ return rt(e, c, this.data, t, u, n);
156
+ if (e instanceof z)
157
+ return nt(e, c, this.data, t, u);
158
+ if (e instanceof J)
159
+ return st(e, c, this.data, t, u);
160
+ if (e instanceof M)
161
+ return ot(e, c, this.data, t, u);
162
+ if (e instanceof Q)
163
+ return it(e, c, this.data, t);
164
+ if (e instanceof W)
165
+ return lt(e, c, this.data, t);
166
+ if (e instanceof X)
167
+ return ct(e, c, this.data, t, u);
168
+ if (e instanceof Y)
169
+ return ut(e, c, this.data, t, u);
170
+ if (e instanceof Z)
171
+ return at(e, c, this.data, t, u);
172
+ if (e instanceof $)
173
+ return ht(e, c, this.data, t);
189
174
  throw new Error("Unknown layer type");
190
- }), U = l.filter((a) => a instanceof G).map((a) => {
191
- if (d.value === null)
175
+ }), R = i.filter((e) => e instanceof C).map((e) => {
176
+ if (h.value === null)
192
177
  throw new Error("Cannot calculate p-value without data grouping");
193
- return ft(a, c.facet, c.primary, t, this.data);
178
+ return dt(e, c.facet, c.primary, t, this.data);
194
179
  });
195
180
  this.calculatedData = {
196
- layersData: P,
197
- statsLayersData: U,
198
- primaryGrouping: d,
199
- secondaryGrouping: f,
200
- facetKeyLists: m,
201
- nonEmptyGroupsByFacets: K,
202
- onlyPositive: h,
203
- facetKeys: L,
204
- facetLabels: R
181
+ layersData: I,
182
+ statsLayersData: R,
183
+ primaryGrouping: h,
184
+ secondaryGrouping: g,
185
+ facetKeyLists: d,
186
+ nonEmptyGroupsByFacets: x,
187
+ onlyPositive: m,
188
+ facetKeys: b,
189
+ facetLabels: A
205
190
  };
206
191
  }
207
192
  _updateAesInData() {
208
193
  if (this.calculatedData === null)
209
194
  return;
210
- const { layers: e, facetBy: t, primaryGrouping: n, secondaryGrouping: i, facetSettings: l } = this.settings, u = e.filter((s) => !(s instanceof G));
211
- for (let s = 0; s < u.length; s++) {
212
- const h = u[s];
213
- "aes" in h && (this.calculatedData.layersData[s].aes = h.aes);
195
+ const { layers: a, primaryGrouping: t, secondaryGrouping: n } = this.settings, o = a.filter((i) => !(i instanceof C));
196
+ for (let i = 0; i < o.length; i++) {
197
+ const l = o[i];
198
+ "aes" in l && (this.calculatedData.layersData[i].aes = l.aes);
214
199
  }
215
- this.calculatedData.primaryGrouping = C(this.data, n), this.calculatedData.secondaryGrouping = C(this.data, i), this.calculatedData.facetKeyLists = t.length ? A(
216
- t.map((s) => {
217
- var h;
218
- return k(this.data, s, (h = l == null ? void 0 : l.order) == null ? void 0 : h[s.value]);
219
- })
220
- ) : [[D]];
200
+ this.calculatedData.primaryGrouping = L(this.data, t), this.calculatedData.secondaryGrouping = L(this.data, n);
221
201
  }
222
202
  _updateChart() {
223
203
  if (!this.calculatedData)
224
204
  return;
225
- const { id: e, chartSettings: t, keyColumn: n, facetSettings: i } = this.settings, { facetLabels: l } = this.calculatedData;
205
+ const { id: a, chartSettings: t, keyColumn: n, facetSettings: o } = this.settings, { facetLabels: i } = this.calculatedData;
226
206
  this.chartRenderer.render(
227
207
  this.data,
228
- e,
208
+ a,
229
209
  t,
230
210
  this.calculatedData.primaryGrouping,
231
211
  this.calculatedData.secondaryGrouping,
232
- i,
212
+ o,
233
213
  this.calculatedData.facetKeys,
234
- this.calculatedData.facetKeys.map((u) => l[u]),
214
+ this.calculatedData.facetKeys.map((l) => i[l]),
235
215
  this.calculatedData.layersData,
236
216
  this.calculatedData.statsLayersData,
237
217
  n,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/discrete/index.ts"],"sourcesContent":["import { intersection } from 'lodash';\nimport { renderToString } from 'react-dom/server.browser';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame, GroupKey } from '../DataFrame';\nimport { NO_GROUPED } from '../DataFrame';\nimport {\n type Category, type ColumnName, type DataValue, type DiscreteEventHandlers,\n type DiscreteSettings, type ErrorInfoFacets, type ErrorInfoPrimaryGroups,\n type ErrorInfoSecondaryGroups, getUnknownErrorInfo, type GroupingData, isErrorInfo\n} from '../types';\nimport ChartRenderer from './ChartRenderer';\nimport { MAX_FACETS_COUNT, MAX_GROUPS_COUNT } from '../constants';\nimport {\n BarLayer,\n BinnedDotsLayer,\n BoxLayer,\n DiscreteSettingsImpl,\n DotLayer,\n ErrorBarLayer,\n LineLayer,\n LogoPlotLayer,\n PairedPointsLayer,\n SinaLayer, StackedAreaLayer,\n StackedBarLayer,\n StatLayer,\n ViolinLayer,\n} from './DiscreteSettingsImpl';\nimport {\n getBarsData,\n getBinnedDotsData,\n getBoxesData,\n getDotsData,\n getErrorBarsData,\n getLinesData,\n getPairedPointsData,\n getSinaData,\n getStackedBarsData,\n getStatsData,\n getViolinsData,\n} from './layers';\nimport { getLogoData } from './layers/logo';\nimport { getStackedAreaData } from './layers/stackedArea';\nimport type { LayerData, StatsData } from './layers/types';\nimport { getFacetStringKey } from './utils/getFacetStringKey';\nimport { arraysAreDifferent } from '../utils/arraysAreDifferent';\nimport { getFacetLabels } from './utils/getFacetLabels';\n\nfunction getGroupingKeys(data: DataFrame, column: ColumnName, order: DataValue[] | null = null) {\n const groupingColumn = column.value;\n const availableKeys = data.getColumnCategories(groupingColumn);\n return intersection(order ?? availableKeys, availableKeys).map(String);\n}\n\n// all combinations with 1 key from each list\nfunction getKeysCombinations(keysLists: string[][]) {\n if (!keysLists.length) {\n return [];\n }\n let result: string[][] = [[]];\n keysLists.forEach(keys => {\n const nextResult: string[][] = [];\n keys.forEach(key => {\n nextResult.push(...result.map(resultItem => [...resultItem, key]));\n });\n result = nextResult;\n });\n return result;\n}\n\nfunction areGroupingsDifferent(\n grouping1: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping'],\n grouping2: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping'],\n) {\n if (!grouping1 && grouping2 || grouping1 && !grouping2) {\n return true;\n }\n if (!grouping1 || !grouping2) {\n return false;\n }\n return grouping1.columnName.value !== grouping2.columnName.value\n || grouping1.columnName.nullValueLabel !== grouping2.columnName.nullValueLabel\n || arraysAreDifferent(grouping1.order, grouping2.order, { ignoreOrder: true })\n || grouping1.allowNullGroup !== grouping2.allowNullGroup;\n}\n\nfunction getGroupingData(\n data: DataFrame,\n grouping: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping'],\n): GroupingData {\n const nullValueLabel = grouping?.columnName.nullValueLabel ?? 'NA';\n if (!grouping) {\n return {\n keys: ['null'],\n value: null,\n label: '',\n valueLabels: { null: nullValueLabel },\n inheritedAes: null,\n };\n }\n\n const groupingColumnId = grouping.columnName.value;\n const groupingColumnLabelId = grouping.columnName.valueLabels;\n const categories = data.getColumnCategories(groupingColumnId, false);\n const getValueLabel = (category: Category) => {\n const v = groupingColumnLabelId\n ? String(\n data.getColumnValue(\n groupingColumnLabelId,\n data.getColumnCategoryRowIndex(groupingColumnId, category)\n )\n )\n : category;\n return v === 'null' ? nullValueLabel : v;\n };\n\n const keys = data.getColumnCategories(groupingColumnId, !grouping.allowNullGroup);\n const orderedKeys = grouping.order === undefined ? keys : intersection(grouping.order.map(String), keys);\n\n return {\n keys: orderedKeys,\n value: groupingColumnId,\n label: grouping.columnName.label ?? groupingColumnId,\n valueLabels: categories.reduce((res: Record<string, string>, category: Category) => {\n res[category] = getValueLabel(category);\n return res;\n }, {}),\n inheritedAes: grouping.inheritedAes ?? null,\n };\n}\n\nexport class ChartDiscrete extends AbstractChart {\n settings: DiscreteSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v: boolean) => void = () => undefined;\n calculatedData: {\n layersData: LayerData[];\n statsLayersData: StatsData[];\n primaryGrouping: GroupingData;\n secondaryGrouping: GroupingData;\n facetKeyLists: GroupKey[][];\n nonEmptyGroupsByFacets: Record<string, string[]>;\n onlyPositive: boolean;\n facetKeys: string[];\n facetLabels: Record<string, string[]>;\n } | null = null;\n\n constructor(data: DataFrame, settings: DiscreteSettings, eventHandlers?: DiscreteEventHandlers) {\n super(data, settings);\n\n this.settings = new DiscreteSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: DiscreteSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new DiscreteSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for discrete');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: DiscreteSettingsImpl, settings: DiscreteSettingsImpl) {\n return (\n prevSettings.chartSettings.yAxis.scale !== settings.chartSettings.yAxis.scale ||\n areGroupingsDifferent(prevSettings.primaryGrouping, settings.primaryGrouping) ||\n areGroupingsDifferent(prevSettings.secondaryGrouping, settings.secondaryGrouping) ||\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => !l.isEqualForCalculation(settings.layers[idx] as typeof l))\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const { chartSettings, y, keyColumn, facetBy, layers, facetSettings } = this.settings;\n const { yAxis } = chartSettings;\n\n const onlyPositive = this.data.getColumn(y.value).every(v => {\n return v === null || !(Number(v) < 0);\n });\n // console.info('only positive Y:', onlyPositive);\n\n const primaryGrouping = getGroupingData(this.data, this.settings.primaryGrouping);\n const secondaryGrouping = getGroupingData(this.data, this.settings.secondaryGrouping);\n const facetGroupingValues = facetBy.map(column => column.value);\n\n if (!this.settings.primaryGrouping?.unlimitedGroupsCount && primaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n const errorInfo: ErrorInfoPrimaryGroups = {\n type: 'tooManyPrimaryGroups',\n info: { count: primaryGrouping.keys.length, maxCount: MAX_GROUPS_COUNT }\n };\n throw Error(errorInfo.type, { cause: errorInfo });\n }\n if (!this.settings.secondaryGrouping?.unlimitedGroupsCount && secondaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n const errorInfo: ErrorInfoSecondaryGroups = {\n type: 'tooManySecondaryGroups',\n info: { count: secondaryGrouping.keys.length, maxCount: MAX_GROUPS_COUNT }\n };\n throw Error(errorInfo.type, { cause: errorInfo });\n }\n\n // if facet created by more than 1 data column facet key contains all of them, and all keys are used in data grouping;\n // after data preparing we need only complex keys from concatenated strings\n let facetKeyLists: (GroupKey)[][] = getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n );\n if (facetKeyLists.length === 0) {\n facetKeyLists = [[NO_GROUPED]];\n }\n if (facetKeyLists.length > MAX_FACETS_COUNT) {\n const errorInfo: ErrorInfoFacets = {\n type: 'tooManyFacets',\n info: { count: facetKeyLists.length, maxCount: MAX_FACETS_COUNT }\n };\n throw Error(errorInfo.type, { cause: errorInfo });\n }\n const facetKeys = facetKeyLists.map(getFacetStringKey);\n const facetLabels = getFacetLabels(this.data, facetBy, facetKeys, facetKeyLists);\n\n this.data.setGrouping([...facetGroupingValues, primaryGrouping.value, secondaryGrouping.value]);\n const groupingKeys = {\n facet: facetKeyLists,\n primary: (primaryGrouping.value !== null ? primaryGrouping.keys : [NO_GROUPED]) as GroupKey[],\n secondary: (secondaryGrouping.value !== null ? secondaryGrouping.keys : [NO_GROUPED]) as GroupKey[],\n };\n\n const nonEmptyGroupsByFacets = groupingKeys.facet.reduce((res: Record<string, string[]>, facetKey) => {\n res[getFacetStringKey(facetKey)] = groupingKeys.primary.filter(\n primaryKey => this.data.getRowsByGrouping([...facetKey, primaryKey]).length > 0\n ).map(String);\n return res;\n }, {});\n\n const layersData = layers\n .filter(layer => !(layer instanceof StatLayer))\n .map(layer => {\n if (layer instanceof BoxLayer) {\n return getBoxesData(layer, groupingKeys, this.data, y, keyColumn, yAxis);\n }\n if (layer instanceof ViolinLayer) {\n return getViolinsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof DotLayer) {\n return getDotsData(layer, groupingKeys, this.data, y, yAxis, keyColumn);\n }\n if (layer instanceof LineLayer) {\n return getLinesData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof ErrorBarLayer) {\n return getErrorBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof BarLayer) {\n return getBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof StackedBarLayer) {\n return getStackedBarsData(layer, groupingKeys, this.data, y);\n }\n if (layer instanceof StackedAreaLayer) {\n return getStackedAreaData(layer, groupingKeys, this.data, y);\n }\n if (layer instanceof BinnedDotsLayer) {\n return getBinnedDotsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof PairedPointsLayer) {\n return getPairedPointsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof SinaLayer) {\n return getSinaData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof LogoPlotLayer) {\n return getLogoData(layer, groupingKeys, this.data, y);\n }\n throw new Error('Unknown layer type');\n });\n const statsLayersData = layers\n .filter(layer => layer instanceof StatLayer)\n .map(layer => {\n if (primaryGrouping.value === null) {\n throw new Error('Cannot calculate p-value without data grouping');\n }\n return getStatsData(layer as StatLayer, groupingKeys.facet, groupingKeys.primary, y, this.data);\n });\n this.calculatedData = {\n layersData,\n statsLayersData,\n primaryGrouping,\n secondaryGrouping,\n facetKeyLists,\n nonEmptyGroupsByFacets,\n onlyPositive,\n facetKeys,\n facetLabels\n };\n }\n\n _updateAesInData() {\n if (this.calculatedData === null) {\n return;\n }\n const { layers, facetBy, primaryGrouping, secondaryGrouping, facetSettings } = this.settings;\n\n // updating aes in layers (except for stat layers with p-value), layers data is not recalculating\n const noStatLayers = layers.filter(layer => !(layer instanceof StatLayer));\n for (let i = 0; i < noStatLayers.length; i++) {\n const layer = noStatLayers[i];\n if ('aes' in layer) {\n this.calculatedData.layersData[i].aes = layer.aes;\n }\n }\n\n // updating grouping to update linked aes\n this.calculatedData.primaryGrouping = getGroupingData(this.data, primaryGrouping);\n this.calculatedData.secondaryGrouping = getGroupingData(this.data, secondaryGrouping);\n\n // updating for possibly changed facetSettings.order\n this.calculatedData.facetKeyLists = facetBy.length\n ? getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n )\n : [[NO_GROUPED]];\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const { id, chartSettings, keyColumn, facetSettings } = this.settings;\n const { facetLabels } = this.calculatedData;\n\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n this.calculatedData.primaryGrouping,\n this.calculatedData.secondaryGrouping,\n facetSettings,\n this.calculatedData.facetKeys,\n this.calculatedData.facetKeys.map(key => facetLabels[key]),\n this.calculatedData.layersData,\n this.calculatedData.statsLayersData,\n keyColumn,\n this.calculatedData.nonEmptyGroupsByFacets,\n this.calculatedData.onlyPositive,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getGroupingKeys","data","column","order","groupingColumn","availableKeys","intersection","getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","areGroupingsDifferent","grouping1","grouping2","arraysAreDifferent","getGroupingData","grouping","nullValueLabel","groupingColumnId","groupingColumnLabelId","categories","getValueLabel","category","v","res","ChartDiscrete","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","DiscreteSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_a","l","prevData","prevKeys","chartSettings","y","keyColumn","facetBy","layers","facetSettings","yAxis","onlyPositive","primaryGrouping","secondaryGrouping","facetGroupingValues","MAX_GROUPS_COUNT","errorInfo","_b","facetKeyLists","NO_GROUPED","MAX_FACETS_COUNT","facetKeys","getFacetStringKey","facetLabels","getFacetLabels","groupingKeys","nonEmptyGroupsByFacets","facetKey","primaryKey","layersData","layer","StatLayer","BoxLayer","getBoxesData","ViolinLayer","getViolinsData","DotLayer","getDotsData","LineLayer","getLinesData","ErrorBarLayer","getErrorBarsData","BarLayer","getBarsData","StackedBarLayer","getStackedBarsData","StackedAreaLayer","getStackedAreaData","BinnedDotsLayer","getBinnedDotsData","PairedPointsLayer","getPairedPointsData","SinaLayer","getSinaData","LogoPlotLayer","getLogoData","statsLayersData","getStatsData","noStatLayers","i","id"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/discrete/index.ts"],"sourcesContent":["import { intersection } from 'lodash';\nimport { renderToString } from 'react-dom/server.browser';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame, GroupKey } from '../DataFrame';\nimport { NO_GROUPED } from '../DataFrame';\nimport {\n type Category, type ColumnName, type DataValue, type DiscreteEventHandlers,\n type DiscreteSettings, getUnknownErrorInfo, type GroupingData, isErrorInfo\n} from '../types';\nimport ChartRenderer from './ChartRenderer';\nimport {\n BarLayer,\n BinnedDotsLayer,\n BoxLayer,\n DiscreteSettingsImpl,\n DotLayer,\n ErrorBarLayer,\n LineLayer,\n LogoPlotLayer,\n PairedPointsLayer,\n SinaLayer, StackedAreaLayer,\n StackedBarLayer,\n StatLayer,\n ViolinLayer,\n} from './DiscreteSettingsImpl';\nimport {\n getBarsData,\n getBinnedDotsData,\n getBoxesData,\n getDotsData,\n getErrorBarsData,\n getLinesData,\n getPairedPointsData,\n getSinaData,\n getStackedBarsData,\n getStatsData,\n getViolinsData,\n} from './layers';\nimport { getLogoData } from './layers/logo';\nimport { getStackedAreaData } from './layers/stackedArea';\nimport type { LayerData, StatsData } from './layers/types';\nimport { getFacetStringKey } from './utils/getFacetStringKey';\nimport { arraysAreDifferent } from '../utils/arraysAreDifferent';\nimport { getFacetLabels } from './utils/getFacetLabels';\n\nfunction getGroupingKeys(data: DataFrame, column: ColumnName, order: DataValue[] | null = null) {\n const groupingColumn = column.value;\n const availableKeys = data.getColumnCategories(groupingColumn);\n return intersection(order ?? availableKeys, availableKeys).map(String);\n}\n\n// all combinations with 1 key from each list\nfunction getKeysCombinations(keysLists: string[][]) {\n if (!keysLists.length) {\n return [];\n }\n let result: string[][] = [[]];\n keysLists.forEach(keys => {\n const nextResult: string[][] = [];\n keys.forEach(key => {\n nextResult.push(...result.map(resultItem => [...resultItem, key]));\n });\n result = nextResult;\n });\n return result;\n}\n\nfunction areGroupingsDifferent(\n grouping1: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping'],\n grouping2: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping'],\n) {\n if (!grouping1 && grouping2 || grouping1 && !grouping2) {\n return true;\n }\n if (!grouping1 || !grouping2) {\n return false;\n }\n return grouping1.columnName.value !== grouping2.columnName.value\n || grouping1.columnName.nullValueLabel !== grouping2.columnName.nullValueLabel\n || arraysAreDifferent(grouping1.order, grouping2.order, { ignoreOrder: true })\n || grouping1.allowNullGroup !== grouping2.allowNullGroup;\n}\n\nfunction getGroupingData(\n data: DataFrame,\n grouping: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping'],\n): GroupingData {\n const nullValueLabel = grouping?.columnName.nullValueLabel ?? 'NA';\n if (!grouping) {\n return {\n groupingKeys: [NO_GROUPED],\n keys: ['null'],\n value: null,\n label: '',\n valueLabels: { null: '' },\n inheritedAes: null,\n };\n }\n\n const groupingColumnId = grouping.columnName.value;\n const groupingColumnLabelId = grouping.columnName.valueLabels;\n const categories = data.getColumnCategories(groupingColumnId, false);\n const getValueLabel = (category: Category) => {\n const v = groupingColumnLabelId\n ? String(\n data.getColumnValue(\n groupingColumnLabelId,\n data.getColumnCategoryRowIndex(groupingColumnId, category)\n )\n )\n : category;\n return v === 'null' ? nullValueLabel : v;\n };\n\n const keys = data.getColumnCategories(groupingColumnId, !grouping.allowNullGroup);\n const orderedKeys = grouping.order === undefined ? keys : intersection(grouping.order.map(String), keys);\n\n return {\n keys: orderedKeys,\n groupingKeys: orderedKeys,\n value: groupingColumnId,\n label: grouping.columnName.label ?? groupingColumnId,\n valueLabels: categories.reduce((res: Record<string, string>, category: Category) => {\n res[category] = getValueLabel(category);\n return res;\n }, {}),\n inheritedAes: grouping.inheritedAes ?? null,\n };\n}\n\nexport class ChartDiscrete extends AbstractChart {\n settings: DiscreteSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v: boolean) => void = () => undefined;\n calculatedData: {\n layersData: LayerData[];\n statsLayersData: StatsData[];\n primaryGrouping: GroupingData;\n secondaryGrouping: GroupingData;\n facetKeyLists: GroupKey[][];\n nonEmptyGroupsByFacets: Record<string, string[]>;\n onlyPositive: boolean;\n facetKeys: string[];\n facetLabels: Record<string, string[]>;\n } | null = null;\n\n constructor(data: DataFrame, settings: DiscreteSettings, eventHandlers?: DiscreteEventHandlers) {\n super(data, settings);\n\n this.settings = new DiscreteSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: DiscreteSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new DiscreteSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for discrete');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: DiscreteSettingsImpl, settings: DiscreteSettingsImpl) {\n return (\n prevSettings.chartSettings.yAxis.scale !== settings.chartSettings.yAxis.scale ||\n areGroupingsDifferent(prevSettings.primaryGrouping, settings.primaryGrouping) ||\n areGroupingsDifferent(prevSettings.secondaryGrouping, settings.secondaryGrouping) ||\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n arraysAreDifferent(prevSettings.facetSettings?.order ?? [], settings.facetSettings?.order ?? []) ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => !l.isEqualForCalculation(settings.layers[idx] as typeof l))\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const { chartSettings, y, keyColumn, facetBy, layers, facetSettings } = this.settings;\n const { yAxis } = chartSettings;\n\n const onlyPositive = this.data.getColumn(y.value).every(v => {\n return v === null || !(Number(v) < 0);\n });\n // console.info('only positive Y:', onlyPositive);\n\n const primaryGrouping = getGroupingData(this.data, this.settings.primaryGrouping);\n const secondaryGrouping = getGroupingData(this.data, this.settings.secondaryGrouping);\n const facetGroupingValues = facetBy.length ? facetBy.map(column => column.value) : [null];\n\n // if facet created by more than 1 data column facet key contains all of them, and all keys are used in data grouping;\n // after data preparing we need only complex keys from concatenated strings\n let facetKeyLists: (GroupKey)[][] = getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column))\n );\n if (facetKeyLists.length === 0) {\n facetKeyLists = [[NO_GROUPED]];\n }\n if (facetSettings?.order?.length) {\n const allFacetKeys = facetKeyLists.map(getFacetStringKey);\n const keyOrder = intersection(facetSettings.order, allFacetKeys);\n facetKeyLists = keyOrder\n .map((keyStr) => facetKeyLists.find((fkl) => getFacetStringKey(fkl) === keyStr))\n .filter((x): x is GroupKey[] => x != null);\n }\n const facetKeys = facetKeyLists.map(getFacetStringKey);\n const facetLabels = getFacetLabels(this.data, facetBy, facetKeys, facetKeyLists);\n\n const facetGroupingKeys = facetBy.length\n ? facetGroupingValues.map((_, idx) => [...new Set(facetKeyLists.map(fkl => fkl[idx]))])\n : [undefined];\n this.data.setGrouping(\n [...facetGroupingValues, primaryGrouping.value, secondaryGrouping.value],\n [...facetGroupingKeys, primaryGrouping.groupingKeys, secondaryGrouping.groupingKeys]\n );\n const groupingKeys = {\n facet: facetKeyLists,\n primary: primaryGrouping.groupingKeys,\n secondary: secondaryGrouping.groupingKeys,\n };\n\n const nonEmptyGroupsByFacets = groupingKeys.facet.reduce((res: Record<string, string[]>, facetKey) => {\n res[getFacetStringKey(facetKey)] = groupingKeys.primary.filter(\n primaryKey => this.data.getRowsByGrouping([...facetKey, primaryKey]).length > 0\n ).map(String);\n return res;\n }, {});\n\n const layersData = layers\n .filter(layer => !(layer instanceof StatLayer))\n .map(layer => {\n if (layer instanceof BoxLayer) {\n return getBoxesData(layer, groupingKeys, this.data, y, keyColumn, yAxis);\n }\n if (layer instanceof ViolinLayer) {\n return getViolinsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof DotLayer) {\n return getDotsData(layer, groupingKeys, this.data, y, yAxis, keyColumn);\n }\n if (layer instanceof LineLayer) {\n return getLinesData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof ErrorBarLayer) {\n return getErrorBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof BarLayer) {\n return getBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof StackedBarLayer) {\n return getStackedBarsData(layer, groupingKeys, this.data, y);\n }\n if (layer instanceof StackedAreaLayer) {\n return getStackedAreaData(layer, groupingKeys, this.data, y);\n }\n if (layer instanceof BinnedDotsLayer) {\n return getBinnedDotsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof PairedPointsLayer) {\n return getPairedPointsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof SinaLayer) {\n return getSinaData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof LogoPlotLayer) {\n return getLogoData(layer, groupingKeys, this.data, y);\n }\n throw new Error('Unknown layer type');\n });\n const statsLayersData = layers\n .filter(layer => layer instanceof StatLayer)\n .map(layer => {\n if (primaryGrouping.value === null) {\n throw new Error('Cannot calculate p-value without data grouping');\n }\n return getStatsData(layer as StatLayer, groupingKeys.facet, groupingKeys.primary, y, this.data);\n });\n this.calculatedData = {\n layersData,\n statsLayersData,\n primaryGrouping,\n secondaryGrouping,\n facetKeyLists,\n nonEmptyGroupsByFacets,\n onlyPositive,\n facetKeys,\n facetLabels\n };\n }\n\n _updateAesInData() {\n if (this.calculatedData === null) {\n return;\n }\n const { layers, primaryGrouping, secondaryGrouping } = this.settings;\n\n // updating aes in layers (except for stat layers with p-value), layers data is not recalculating\n const noStatLayers = layers.filter(layer => !(layer instanceof StatLayer));\n for (let i = 0; i < noStatLayers.length; i++) {\n const layer = noStatLayers[i];\n if ('aes' in layer) {\n this.calculatedData.layersData[i].aes = layer.aes;\n }\n }\n\n // updating grouping to update linked aes\n this.calculatedData.primaryGrouping = getGroupingData(this.data, primaryGrouping);\n this.calculatedData.secondaryGrouping = getGroupingData(this.data, secondaryGrouping);\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const { id, chartSettings, keyColumn, facetSettings } = this.settings;\n const { facetLabels } = this.calculatedData;\n\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n this.calculatedData.primaryGrouping,\n this.calculatedData.secondaryGrouping,\n facetSettings,\n this.calculatedData.facetKeys,\n this.calculatedData.facetKeys.map(key => facetLabels[key]),\n this.calculatedData.layersData,\n this.calculatedData.statsLayersData,\n keyColumn,\n this.calculatedData.nonEmptyGroupsByFacets,\n this.calculatedData.onlyPositive,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getGroupingKeys","data","column","order","groupingColumn","availableKeys","intersection","getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","areGroupingsDifferent","grouping1","grouping2","arraysAreDifferent","getGroupingData","grouping","nullValueLabel","NO_GROUPED","groupingColumnId","groupingColumnLabelId","categories","getValueLabel","category","v","orderedKeys","res","ChartDiscrete","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","DiscreteSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_a","_b","l","prevData","prevKeys","chartSettings","y","keyColumn","facetBy","layers","facetSettings","yAxis","onlyPositive","primaryGrouping","secondaryGrouping","facetGroupingValues","facetKeyLists","allFacetKeys","getFacetStringKey","keyStr","fkl","x","facetKeys","facetLabels","getFacetLabels","facetGroupingKeys","_","groupingKeys","nonEmptyGroupsByFacets","facetKey","primaryKey","layersData","layer","StatLayer","BoxLayer","getBoxesData","ViolinLayer","getViolinsData","DotLayer","getDotsData","LineLayer","getLinesData","ErrorBarLayer","getErrorBarsData","BarLayer","getBarsData","StackedBarLayer","getStackedBarsData","StackedAreaLayer","getStackedAreaData","BinnedDotsLayer","getBinnedDotsData","PairedPointsLayer","getPairedPointsData","SinaLayer","getSinaData","LogoPlotLayer","getLogoData","statsLayersData","getStatsData","noStatLayers","id"],"mappings":"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"}
@@ -43,6 +43,7 @@ export declare class HeatmapSettingsImpl implements SettingsInterface {
43
43
  readonly id: string;
44
44
  readonly type = "heatmap";
45
45
  readonly facetSettings: {
46
+ order: string[] | null;
46
47
  sharedX: boolean;
47
48
  sharedY: boolean;
48
49
  nRows?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"HeatmapSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/heatmap/HeatmapSettingsImpl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,SAAS,EACT,iBAAiB,EACjB,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAClE,cAAc,EAAE,SAAS,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,UAAU,EAClF,iBAAiB,EACjB,aAAa,EAChB,MAAM,UAAU,CAAC;AAuBlB,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,IAAI,GAAG,MAAM,CAAC;IAC/B,GAAG,EAAE;QACD,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC;QAC/B,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;QAC7B,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAC;QAClC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;QAC7B,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;QAClC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC;KAClC,CAAC;CACL;AAED,UAAU,0BAA2B,SAAQ,yBAAyB;IAClE,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC9B;AACD,UAAU,0BAA2B,SAAQ,yBAAyB;IAClE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9B;AAED,UAAU,iBAAiB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IAClD,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AACD,UAAU,kBAAmB,SAAQ,iBAAiB;IAClD,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,aAAa,EAAE,KAAK,GAAG,QAAQ,CAAC;CACnC;AAED,qBAAa,mBAAoB,YAAW,iBAAiB;IACzD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,aAAa,EAAE;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE;QAAE,SAAS,EAAE,sBAAsB,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACzH,QAAQ,CAAC,aAAa,EAAE;QACpB,QAAQ,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,QAAQ,EAAE,aAAa,CAAA;SAAE,CAAC;QACzE,QAAQ,CAAC,IAAI,EAAE;YACX,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;YACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;YACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;YAC1B,WAAW,EAAE,MAAM,CAAC;YACpB,WAAW,EAAE,MAAM,CAAC;SACvB,CAAC;QACF,QAAQ,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;SAAE,CAAC;QACrD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,YAAY,CAAC;QAC9C,QAAQ,CAAC,KAAK,EAAE;YACZ,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,EAAE,OAAO,CAAC;YACnB,SAAS,EAAE,OAAO,CAAC;YACnB,cAAc,EAAE,OAAO,CAAC;YACxB,eAAe,EAAE,OAAO,CAAC;YACzB,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;YAC3B,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;YACnC,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;YAC7B,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;YAC9B,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC;SAC3B,CAAC;QACF,QAAQ,CAAC,KAAK,EAAE;YACZ,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,EAAE,OAAO,CAAC;YACnB,SAAS,EAAE,OAAO,CAAC;YACnB,cAAc,EAAE,OAAO,CAAC;YACxB,eAAe,EAAE,OAAO,CAAC;YACzB,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;YAC3B,gBAAgB,EAAE,QAAQ,GAAG,KAAK,CAAC;YACnC,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;YAC7B,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;YAC9B,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC;SAC3B,CAAC;QACF,QAAQ,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,QAAQ,EAAE,cAAc,CAAA;SAAE,CAAC;QAC7D,QAAQ,CAAC,QAAQ,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;SAAE,CAAC;KAChE,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE;QACV,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;QACzC,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC7B,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;KAC1B,CAAC;IAEF,QAAQ,CAAC,WAAW,EAAE;QAClB,CAAC,EAAE,OAAO,CAAC;QACX,CAAC,EAAE,OAAO,CAAC;QACX,MAAM,EAAE,iBAAiB,CAAC;KAC7B,CAAC;IAEF,QAAQ,CAAC,WAAW,EAAE,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAElE,QAAQ,CAAC,WAAW,EAAE,0BAA0B,GAAG,IAAI,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,0BAA0B,GAAG,IAAI,CAAC;IACxD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;gBAEzC,QAAQ,EAAE,eAAe;CAoJxC"}
1
+ {"version":3,"file":"HeatmapSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/heatmap/HeatmapSettingsImpl.ts"],"names":[],"mappings":"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"}