@milaboratories/miplots4 1.0.166 → 1.0.167

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 (35) hide show
  1. package/dist/_virtual/index10.js +5 -2
  2. package/dist/_virtual/index10.js.map +1 -1
  3. package/dist/_virtual/index5.js +2 -5
  4. package/dist/_virtual/index5.js.map +1 -1
  5. package/dist/_virtual/index6.js +4 -4
  6. package/dist/_virtual/index7.js +1 -1
  7. package/dist/_virtual/index8.js +4 -4
  8. package/dist/_virtual/index9.js +3 -3
  9. package/dist/bubble/components/ChartsGroup.js +21 -21
  10. package/dist/bubble/components/ChartsGroup.js.map +1 -1
  11. package/dist/common/Tooltip.js +2 -2
  12. package/dist/common/Tooltip.js.map +1 -1
  13. package/dist/discrete/index.d.ts +2 -0
  14. package/dist/discrete/index.js +127 -123
  15. package/dist/discrete/index.js.map +1 -1
  16. package/dist/discrete/layers/stats/pValueCalculation.js +5 -5
  17. package/dist/discrete/utils/getFacetLabels.d.ts +3 -0
  18. package/dist/discrete/utils/getFacetLabels.js +16 -0
  19. package/dist/discrete/utils/getFacetLabels.js.map +1 -0
  20. package/dist/heatmap/components/ChartsGroup.js +9 -9
  21. package/dist/heatmap/components/ChartsGroup.js.map +1 -1
  22. package/dist/heatmap/components/tooltipUtils.js +15 -15
  23. package/dist/heatmap/components/tooltipUtils.js.map +1 -1
  24. package/dist/heatmap/fillCellsData.js +88 -85
  25. package/dist/heatmap/fillCellsData.js.map +1 -1
  26. package/dist/histogram/getHistogramData.js +42 -41
  27. package/dist/histogram/getHistogramData.js.map +1 -1
  28. package/dist/histogram/index.d.ts +1 -0
  29. package/dist/histogram/index.js +59 -57
  30. package/dist/histogram/index.js.map +1 -1
  31. package/dist/node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/index.js +1 -1
  32. package/dist/scatterplot/index.d.ts +1 -0
  33. package/dist/scatterplot/index.js +61 -59
  34. package/dist/scatterplot/index.js.map +1 -1
  35. package/package.json +1 -1
@@ -1,51 +1,52 @@
1
- var U = Object.defineProperty;
2
- var O = (l, n, r) => n in l ? U(l, n, { enumerable: !0, configurable: !0, writable: !0, value: r }) : l[n] = r;
3
- var G = (l, n, r) => O(l, typeof n != "symbol" ? n + "" : n, r);
4
- import { l as K } from "../_virtual/lodash.js";
5
- import { s as T } from "../_virtual/server.browser.js";
6
- import { AbstractChart as F } from "../AbstractChart.js";
7
- import { NO_GROUPED as C } from "../DataFrame.js";
8
- import { getUnknownErrorInfo as v, isErrorInfo as k } from "../types/common.js";
1
+ var F = Object.defineProperty;
2
+ var T = (l, n, e) => n in l ? F(l, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[n] = e;
3
+ var D = (l, n, e) => T(l, typeof n != "symbol" ? n + "" : n, e);
4
+ import { l as P } from "../_virtual/lodash.js";
5
+ import { s as M } from "../_virtual/server.browser.js";
6
+ import { AbstractChart as V } from "../AbstractChart.js";
7
+ import { NO_GROUPED as E } from "../DataFrame.js";
8
+ import { getUnknownErrorInfo as b, isErrorInfo as k } 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 M from "./ChartRenderer.js";
16
- import { MAX_GROUPS_COUNT as w, MAX_FACETS_COUNT as b } from "../constants.js";
17
- import { DiscreteSettingsImpl as A, StatLayer as S, BoxLayer as V, ViolinLayer as j, DotLayer as H, LineLayer as X, ErrorBarLayer as q, BarLayer as z, StackedBarLayer as J, StackedAreaLayer as Q, BinnedDotsLayer as W, PairedPointsLayer as Y, SinaLayer as Z, LogoPlotLayer as $ } from "./DiscreteSettingsImpl.js";
18
- import { getBoxesData as tt } from "./layers/boxes.js";
19
- import { getViolinsData as at } from "./layers/violins.js";
20
- import { getSinaData as rt } from "./layers/sina.js";
21
- import { getDotsData as et } from "./layers/dots.js";
22
- import { getLinesData as ot } from "./layers/lines.js";
23
- import { getErrorBarsData as nt } from "./layers/errorbars.js";
24
- import { getBarsData as it } from "./layers/bar.js";
25
- import { getStackedBarsData as st } from "./layers/stackedBar.js";
26
- import { getStackedAreaData as ut } from "./layers/stackedArea.js";
27
- import { getBinnedDotsData as lt } from "./layers/binnedDots.js";
28
- import { getPairedPointsData as ct } from "./layers/pairedPoints.js";
29
- import { getLogoData as ht } from "./layers/logo.js";
30
- import { getStatsData as dt } from "./layers/stats/index.js";
31
- import { getFacetStringKey as N } from "./utils/getFacetStringKey.js";
32
- import { arraysAreDifferent as x } from "../utils/arraysAreDifferent.js";
33
- function I(l, n, r = null) {
34
- const t = n.value, e = l.getColumnCategories(t);
35
- return K.intersection(r ?? e, e).map(String);
15
+ import j from "./ChartRenderer.js";
16
+ import { MAX_GROUPS_COUNT as w, MAX_FACETS_COUNT as A } from "../constants.js";
17
+ import { DiscreteSettingsImpl as N, StatLayer as B, 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 ot } from "./layers/sina.js";
21
+ import { getDotsData as nt } from "./layers/dots.js";
22
+ import { getLinesData as it } from "./layers/lines.js";
23
+ import { getErrorBarsData as st } from "./layers/errorbars.js";
24
+ import { getBarsData as ut } from "./layers/bar.js";
25
+ import { getStackedBarsData as lt } from "./layers/stackedBar.js";
26
+ import { getStackedAreaData as ct } 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 pt } from "./layers/stats/index.js";
31
+ import { getFacetStringKey as x } from "./utils/getFacetStringKey.js";
32
+ import { arraysAreDifferent as I } from "../utils/arraysAreDifferent.js";
33
+ import { getFacetLabels as ft } from "./utils/getFacetLabels.js";
34
+ function R(l, n, e = null) {
35
+ const t = n.value, r = l.getColumnCategories(t);
36
+ return P.intersection(e ?? r, r).map(String);
36
37
  }
37
- function R(l) {
38
+ function K(l) {
38
39
  if (!l.length)
39
40
  return [];
40
41
  let n = [[]];
41
- return l.forEach((r) => {
42
+ return l.forEach((e) => {
42
43
  const t = [];
43
- r.forEach((e) => {
44
- t.push(...n.map((s) => [...s, e]));
44
+ e.forEach((r) => {
45
+ t.push(...n.map((s) => [...s, r]));
45
46
  }), n = t;
46
47
  }), n;
47
48
  }
48
- function B(l, n) {
49
+ function v(l, n) {
49
50
  if (!n)
50
51
  return {
51
52
  keys: ["null"],
@@ -54,177 +55,180 @@ function B(l, n) {
54
55
  valueLabels: { null: "" },
55
56
  inheritedAes: null
56
57
  };
57
- const r = n.columnName.value, t = n.columnName.valueLabels, e = l.getColumnCategories(r, !1), s = (o) => t ? String(
58
+ const e = n.columnName.value, t = n.columnName.valueLabels, r = l.getColumnCategories(e, !1), s = (o) => t ? String(
58
59
  l.getColumnValue(
59
60
  t,
60
- l.getColumnCategoryRowIndex(r, o)
61
+ l.getColumnCategoryRowIndex(e, o)
61
62
  )
62
- ) : o, u = l.getColumnCategories(r, !n.allowNullGroup);
63
+ ) : o, u = l.getColumnCategories(e, !n.allowNullGroup);
63
64
  return {
64
- keys: n.order === void 0 ? u : K.intersection(n.order.map(String), u),
65
- value: r,
66
- label: n.columnName.label ?? r,
67
- valueLabels: e.reduce((o, c) => (o[c] = s(c), o), {}),
65
+ keys: n.order === void 0 ? u : P.intersection(n.order.map(String), u),
66
+ value: e,
67
+ label: n.columnName.label ?? e,
68
+ valueLabels: r.reduce((o, h) => (o[h] = s(h), o), {}),
68
69
  inheritedAes: n.inheritedAes ?? null
69
70
  };
70
71
  }
71
- class jt extends F {
72
- constructor(r, t, e) {
73
- super(r, t);
74
- G(this, "settings");
75
- G(this, "chartRenderer", new M());
76
- G(this, "onTooltipHintSwitch", () => {
72
+ class zt extends V {
73
+ constructor(e, t, r) {
74
+ super(e, t);
75
+ D(this, "settings");
76
+ D(this, "chartRenderer", new j());
77
+ D(this, "onTooltipHintSwitch", () => {
77
78
  });
78
- G(this, "calculatedData", null);
79
- this.settings = new A(t), e && (this.onTooltipHintSwitch = e[0]);
79
+ D(this, "calculatedData", null);
80
+ this.settings = new N(t), r && (this.onTooltipHintSwitch = r[0]);
80
81
  }
81
- mount(r) {
82
+ mount(e) {
82
83
  try {
83
- this.chartRenderer.init(r), this._updateData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
84
+ this.chartRenderer.init(e), this._updateData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
84
85
  } catch (t) {
85
- this.hasError = !0, t instanceof Error && (this.errorInfo = k(t.cause) ? t.cause : v(t), this.chartRenderer.renderError(t.message), console.error(t));
86
+ this.hasError = !0, t instanceof Error && (this.errorInfo = k(t.cause) ? t.cause : b(t), this.chartRenderer.renderError(t.message), console.error(t));
86
87
  }
87
88
  }
88
89
  unmount() {
89
90
  this.chartRenderer.clear();
90
91
  }
91
- updateSettingsAndData(r, t) {
92
+ updateSettingsAndData(e, t) {
92
93
  try {
93
- const e = this.settings, s = this.data;
94
- this.settings = new A(t), this.data = r, this._needUpdateCalculatedDataBySettings(e, this.settings) || this._needUpdateCalculatedDataByData(s, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
95
- } catch (e) {
96
- this.hasError = !0, e instanceof Error && (this.errorInfo = k(e.cause) ? e.cause : v(e), this.chartRenderer.renderError(e.message), console.error(e));
94
+ const r = this.settings, s = this.data;
95
+ this.settings = new N(t), this.data = e, this._needUpdateCalculatedDataBySettings(r, this.settings) || this._needUpdateCalculatedDataByData(s, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
96
+ } catch (r) {
97
+ this.hasError = !0, r instanceof Error && (this.errorInfo = k(r.cause) ? r.cause : b(r), this.chartRenderer.renderError(r.message), console.error(r));
97
98
  }
98
99
  }
99
- updateChartState(r, t) {
100
+ updateChartState(e, t) {
100
101
  console.warn("no chart state for discrete");
101
102
  }
102
103
  export() {
103
- return this._updateChart(), T.renderToString(this.chartRenderer.component);
104
+ return this._updateChart(), M.renderToString(this.chartRenderer.component);
104
105
  }
105
- _needUpdateCalculatedDataBySettings(r, t) {
106
- var e, s, u, h, o, c, d, p, L, m, i, E;
107
- return r.chartSettings.yAxis.scale !== t.chartSettings.yAxis.scale || (((e = r.primaryGrouping) == null ? void 0 : e.columnName.value) ?? "") !== (((s = t.primaryGrouping) == null ? void 0 : s.columnName.value) ?? "") || (((u = r.secondaryGrouping) == null ? void 0 : u.columnName.value) ?? "") !== (((h = t.secondaryGrouping) == null ? void 0 : h.columnName.value) ?? "") || (((o = r.primaryGrouping) == null ? void 0 : o.allowNullGroup) ?? "") !== (((c = t.primaryGrouping) == null ? void 0 : c.allowNullGroup) ?? "") || (((d = r.secondaryGrouping) == null ? void 0 : d.allowNullGroup) ?? "") !== (((p = t.secondaryGrouping) == null ? void 0 : p.allowNullGroup) ?? "") || x((L = r.primaryGrouping) == null ? void 0 : L.order, (m = t.primaryGrouping) == null ? void 0 : m.order, { ignoreOrder: !0 }) || x((i = r.secondaryGrouping) == null ? void 0 : i.order, (E = t.secondaryGrouping) == null ? void 0 : E.order, { ignoreOrder: !0 }) || r.facetBy.some((f, y) => {
108
- var g;
109
- return f.value !== ((g = t.facetBy[y]) == null ? void 0 : g.value);
110
- }) || r.layers.length !== t.layers.length || r.layers.some((f, y) => !f.isEqualForCalculation(t.layers[y]));
106
+ _needUpdateCalculatedDataBySettings(e, t) {
107
+ var r, s, u, c, o, h, d, m, G, p, f, C;
108
+ return e.chartSettings.yAxis.scale !== t.chartSettings.yAxis.scale || (((r = e.primaryGrouping) == null ? void 0 : r.columnName.value) ?? "") !== (((s = t.primaryGrouping) == null ? void 0 : s.columnName.value) ?? "") || (((u = e.secondaryGrouping) == null ? void 0 : u.columnName.value) ?? "") !== (((c = t.secondaryGrouping) == null ? void 0 : c.columnName.value) ?? "") || (((o = e.primaryGrouping) == null ? void 0 : o.allowNullGroup) ?? "") !== (((h = t.primaryGrouping) == null ? void 0 : h.allowNullGroup) ?? "") || (((d = e.secondaryGrouping) == null ? void 0 : d.allowNullGroup) ?? "") !== (((m = t.secondaryGrouping) == null ? void 0 : m.allowNullGroup) ?? "") || I((G = e.primaryGrouping) == null ? void 0 : G.order, (p = t.primaryGrouping) == null ? void 0 : p.order, { ignoreOrder: !0 }) || I((f = e.secondaryGrouping) == null ? void 0 : f.order, (C = t.secondaryGrouping) == null ? void 0 : C.order, { ignoreOrder: !0 }) || e.facetBy.some((i, y) => {
109
+ var L;
110
+ return i.value !== ((L = t.facetBy[y]) == null ? void 0 : L.value);
111
+ }) || e.layers.length !== t.layers.length || e.layers.some((i, y) => !i.isEqualForCalculation(t.layers[y]));
111
112
  }
112
- _needUpdateCalculatedDataByData(r, t) {
113
- const e = Object.keys(r.data), s = Object.keys(t.data);
114
- return r.id !== t.id || e.length !== s.length || e.some((u) => {
115
- var h;
116
- return r.data[u].length !== ((h = t.data[u]) == null ? void 0 : h.length);
113
+ _needUpdateCalculatedDataByData(e, t) {
114
+ const r = Object.keys(e.data), s = Object.keys(t.data);
115
+ return e.id !== t.id || r.length !== s.length || r.some((u) => {
116
+ var c;
117
+ return e.data[u].length !== ((c = t.data[u]) == null ? void 0 : c.length);
117
118
  });
118
119
  }
119
120
  _updateData() {
120
- var g, _;
121
- const { chartSettings: r, y: t, keyColumn: e, facetBy: s, layers: u, facetSettings: h } = this.settings, { yAxis: o } = r, c = this.data.getColumn(t.value).every((a) => a === null || !(Number(a) < 0)), d = B(this.data, this.settings.primaryGrouping), p = B(this.data, this.settings.secondaryGrouping), L = s.map((a) => a.value);
122
- if (!((g = this.settings.primaryGrouping) != null && g.unlimitedGroupsCount) && d.keys.length > w) {
121
+ var S, _;
122
+ const { chartSettings: e, y: t, keyColumn: r, facetBy: s, layers: u, facetSettings: c } = this.settings, { yAxis: o } = e, h = this.data.getColumn(t.value).every((a) => a === null || !(Number(a) < 0)), d = v(this.data, this.settings.primaryGrouping), m = v(this.data, this.settings.secondaryGrouping), G = s.map((a) => a.value);
123
+ if (!((S = this.settings.primaryGrouping) != null && S.unlimitedGroupsCount) && d.keys.length > w) {
123
124
  const a = {
124
125
  type: "tooManyPrimaryGroups",
125
126
  info: { count: d.keys.length, maxCount: w }
126
127
  };
127
128
  throw Error(a.type, { cause: a });
128
129
  }
129
- if (!((_ = this.settings.secondaryGrouping) != null && _.unlimitedGroupsCount) && p.keys.length > w) {
130
+ if (!((_ = this.settings.secondaryGrouping) != null && _.unlimitedGroupsCount) && m.keys.length > w) {
130
131
  const a = {
131
132
  type: "tooManySecondaryGroups",
132
- info: { count: p.keys.length, maxCount: w }
133
+ info: { count: m.keys.length, maxCount: w }
133
134
  };
134
135
  throw Error(a.type, { cause: a });
135
136
  }
136
- const m = s.length ? R(
137
+ const p = s.length ? K(
137
138
  s.map((a) => {
138
- var D;
139
- return I(this.data, a, (D = h == null ? void 0 : h.order) == null ? void 0 : D[a.value]);
139
+ var g;
140
+ return R(this.data, a, (g = c == null ? void 0 : c.order) == null ? void 0 : g[a.value]);
140
141
  })
141
- ) : [[C]];
142
- if (m.length > b) {
142
+ ) : [[E]];
143
+ if (p.length > A) {
143
144
  const a = {
144
145
  type: "tooManyFacets",
145
- info: { count: m.length, maxCount: b }
146
+ info: { count: p.length, maxCount: A }
146
147
  };
147
148
  throw Error(a.type, { cause: a });
148
149
  }
149
- this.data.setGrouping([...L, d.value, p.value]);
150
+ const f = p.map(x), C = ft(this.data, s, f, p);
151
+ this.data.setGrouping([...G, d.value, m.value]);
150
152
  const i = {
151
- facet: m,
152
- primary: d.value !== null ? d.keys : [C],
153
- secondary: p.value !== null ? p.keys : [C]
154
- }, E = i.facet.reduce((a, D) => (a[N(D)] = i.primary.filter(
155
- (P) => this.data.getRowsByGrouping([...D, P]).length > 0
156
- ).map(String), a), {}), f = u.filter((a) => !(a instanceof S)).map((a) => {
157
- if (a instanceof V)
158
- return tt(a, i, this.data, t, e, o);
159
- if (a instanceof j)
160
- return at(a, i, this.data, t, o);
153
+ facet: p,
154
+ primary: d.value !== null ? d.keys : [E],
155
+ secondary: m.value !== null ? m.keys : [E]
156
+ }, y = i.facet.reduce((a, g) => (a[x(g)] = i.primary.filter(
157
+ (O) => this.data.getRowsByGrouping([...g, O]).length > 0
158
+ ).map(String), a), {}), L = u.filter((a) => !(a instanceof B)).map((a) => {
161
159
  if (a instanceof H)
162
- return et(a, i, this.data, t, o, e);
160
+ return et(a, i, this.data, t, r, o);
163
161
  if (a instanceof X)
164
- return ot(a, i, this.data, t, o);
162
+ return rt(a, i, this.data, t, o);
165
163
  if (a instanceof q)
166
- return nt(a, i, this.data, t, o);
164
+ return nt(a, i, this.data, t, o, r);
167
165
  if (a instanceof z)
168
166
  return it(a, i, this.data, t, o);
169
167
  if (a instanceof J)
170
- return st(a, i, this.data, t);
168
+ return st(a, i, this.data, t, o);
171
169
  if (a instanceof Q)
172
- return ut(a, i, this.data, t);
170
+ return ut(a, i, this.data, t, o);
173
171
  if (a instanceof W)
174
- return lt(a, i, this.data, t, o);
172
+ return lt(a, i, this.data, t);
175
173
  if (a instanceof Y)
176
- return ct(a, i, this.data, t, o);
174
+ return ct(a, i, this.data, t);
177
175
  if (a instanceof Z)
178
- return rt(a, i, this.data, t, o);
176
+ return ht(a, i, this.data, t, o);
179
177
  if (a instanceof $)
180
- return ht(a, i, this.data, t);
178
+ return dt(a, i, this.data, t, o);
179
+ if (a instanceof tt)
180
+ return ot(a, i, this.data, t, o);
181
+ if (a instanceof at)
182
+ return mt(a, i, this.data, t);
181
183
  throw new Error("Unknown layer type");
182
- }), y = u.filter((a) => a instanceof S).map((a) => {
184
+ }), U = u.filter((a) => a instanceof B).map((a) => {
183
185
  if (d.value === null)
184
186
  throw new Error("Cannot calculate p-value without data grouping");
185
- return dt(a, i.facet, i.primary, t, this.data);
187
+ return pt(a, i.facet, i.primary, t, this.data);
186
188
  });
187
189
  this.calculatedData = {
188
- layersData: f,
189
- statsLayersData: y,
190
+ layersData: L,
191
+ statsLayersData: U,
190
192
  primaryGrouping: d,
191
- secondaryGrouping: p,
192
- facetKeyLists: m,
193
- nonEmptyGroupsByFacets: E,
194
- onlyPositive: c
193
+ secondaryGrouping: m,
194
+ facetKeyLists: p,
195
+ nonEmptyGroupsByFacets: y,
196
+ onlyPositive: h,
197
+ facetKeys: f,
198
+ facetLabels: C
195
199
  };
196
200
  }
197
201
  _updateAesInData() {
198
202
  if (this.calculatedData === null)
199
203
  return;
200
- const { layers: r, facetBy: t, primaryGrouping: e, secondaryGrouping: s, facetSettings: u } = this.settings, h = r.filter((o) => !(o instanceof S));
201
- for (let o = 0; o < h.length; o++) {
202
- const c = h[o];
203
- "aes" in c && (this.calculatedData.layersData[o].aes = c.aes);
204
+ const { layers: e, facetBy: t, primaryGrouping: r, secondaryGrouping: s, facetSettings: u } = this.settings, c = e.filter((o) => !(o instanceof B));
205
+ for (let o = 0; o < c.length; o++) {
206
+ const h = c[o];
207
+ "aes" in h && (this.calculatedData.layersData[o].aes = h.aes);
204
208
  }
205
- this.calculatedData.primaryGrouping = B(this.data, e), this.calculatedData.secondaryGrouping = B(this.data, s), this.calculatedData.facetKeyLists = t.length ? R(
209
+ this.calculatedData.primaryGrouping = v(this.data, r), this.calculatedData.secondaryGrouping = v(this.data, s), this.calculatedData.facetKeyLists = t.length ? K(
206
210
  t.map((o) => {
207
- var c;
208
- return I(this.data, o, (c = u == null ? void 0 : u.order) == null ? void 0 : c[o.value]);
211
+ var h;
212
+ return R(this.data, o, (h = u == null ? void 0 : u.order) == null ? void 0 : h[o.value]);
209
213
  })
210
- ) : [[C]];
214
+ ) : [[E]];
211
215
  }
212
216
  _updateChart() {
213
217
  if (!this.calculatedData)
214
218
  return;
215
- const { id: r, chartSettings: t, keyColumn: e, facetSettings: s } = this.settings, u = this.calculatedData.facetKeyLists.map(N), h = this.calculatedData.facetKeyLists.map((o) => o.map((c) => c === C ? "null" : c));
219
+ const { id: e, chartSettings: t, keyColumn: r, facetSettings: s } = this.settings, { facetLabels: u } = this.calculatedData;
216
220
  this.chartRenderer.render(
217
221
  this.data,
218
- r,
222
+ e,
219
223
  t,
220
224
  this.calculatedData.primaryGrouping,
221
225
  this.calculatedData.secondaryGrouping,
222
226
  s,
223
- u,
224
- h,
227
+ this.calculatedData.facetKeys,
228
+ this.calculatedData.facetKeys.map((c) => u[c]),
225
229
  this.calculatedData.layersData,
226
230
  this.calculatedData.statsLayersData,
227
- e,
231
+ r,
228
232
  this.calculatedData.nonEmptyGroupsByFacets,
229
233
  this.calculatedData.onlyPositive,
230
234
  this.onTooltipHintSwitch
@@ -232,6 +236,6 @@ class jt extends F {
232
236
  }
233
237
  }
234
238
  export {
235
- jt as ChartDiscrete
239
+ zt as ChartDiscrete
236
240
  };
237
241
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/discrete/index.ts"],"sourcesContent":["import { intersection } from 'lodash';\nimport { renderToString } from 'react-dom/server';\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';\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 getGroupingData(\n data: DataFrame,\n grouping: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping']\n): GroupingData {\n if (!grouping) {\n return {\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 return groupingColumnLabelId\n ? String(\n data.getColumnValue(\n groupingColumnLabelId,\n data.getColumnCategoryRowIndex(groupingColumnId, category)\n )\n )\n : category;\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 } | 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 (prevSettings.primaryGrouping?.columnName.value ?? '') !==\n (settings.primaryGrouping?.columnName.value ?? '') ||\n (prevSettings.secondaryGrouping?.columnName.value ?? '') !==\n (settings.secondaryGrouping?.columnName.value ?? '') ||\n (prevSettings.primaryGrouping?.allowNullGroup ?? '') !==\n (settings.primaryGrouping?.allowNullGroup ?? '') ||\n (prevSettings.secondaryGrouping?.allowNullGroup ?? '') !==\n (settings.secondaryGrouping?.allowNullGroup ?? '') ||\n arraysAreDifferent(prevSettings.primaryGrouping?.order, settings.primaryGrouping?.order, { ignoreOrder: true }) ||\n arraysAreDifferent(prevSettings.secondaryGrouping?.order, settings.secondaryGrouping?.order, { ignoreOrder: true }) ||\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 const facetKeyLists: (GroupKey)[][] = facetBy.length\n ? getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n )\n : [[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 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 };\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\n const facetKeys = this.calculatedData.facetKeyLists.map(getFacetStringKey);\n const facetLabels = this.calculatedData.facetKeyLists.map(v => v.map(v => v === NO_GROUPED ? 'null' : v)) as string[][];\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n this.calculatedData.primaryGrouping,\n this.calculatedData.secondaryGrouping,\n facetSettings,\n facetKeys,\n facetLabels,\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","getGroupingData","grouping","groupingColumnId","groupingColumnLabelId","categories","getValueLabel","category","res","ChartDiscrete","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","DiscreteSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","_a","_b","_c","_d","_e","_f","_g","_h","arraysAreDifferent","_i","_j","_k","_l","el","idx","l","prevData","prevKeys","chartSettings","y","keyColumn","facetBy","layers","facetSettings","yAxis","onlyPositive","v","primaryGrouping","secondaryGrouping","facetGroupingValues","MAX_GROUPS_COUNT","errorInfo","facetKeyLists","NO_GROUPED","MAX_FACETS_COUNT","groupingKeys","nonEmptyGroupsByFacets","facetKey","getFacetStringKey","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","facetKeys","facetLabels"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,SAASA,EAAgBC,GAAiBC,GAAoBC,IAA4B,MAAM;AAC5F,QAAMC,IAAiBF,EAAO,OACxBG,IAAgBJ,EAAK,oBAAoBG,CAAc;AAC7D,SAAOE,EAAAA,aAAaH,KAASE,GAAeA,CAAa,EAAE,IAAI,MAAM;AACzE;AAGA,SAASE,EAAoBC,GAAuB;AAChD,MAAI,CAACA,EAAU;AACX,WAAO,CAAA;AAEX,MAAIC,IAAqB,CAAC,EAAE;AAC5B,SAAAD,EAAU,QAAQ,CAAAE,MAAQ;AACtB,UAAMC,IAAyB,CAAA;AAC/B,IAAAD,EAAK,QAAQ,CAAAE,MAAO;AAChB,MAAAD,EAAW,KAAK,GAAGF,EAAO,IAAI,CAAAI,MAAc,CAAC,GAAGA,GAAYD,CAAG,CAAC,CAAC;AAAA,IACrE,CAAC,GACDH,IAASE;AAAA,EACb,CAAC,GACMF;AACX;AAEA,SAASK,EACLb,GACAc,GACY;AACZ,MAAI,CAACA;AACD,WAAO;AAAA,MACH,MAAM,CAAC,MAAM;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,MACP,aAAa,EAAE,MAAM,GAAA;AAAA,MACrB,cAAc;AAAA,IAAA;AAItB,QAAMC,IAAmBD,EAAS,WAAW,OACvCE,IAAwBF,EAAS,WAAW,aAC5CG,IAAajB,EAAK,oBAAoBe,GAAkB,EAAK,GAC7DG,IAAgB,CAACC,MACZH,IACD;AAAA,IACEhB,EAAK;AAAA,MACDgB;AAAA,MACAhB,EAAK,0BAA0Be,GAAkBI,CAAQ;AAAA,IAAA;AAAA,EAC7D,IAEFA,GAGJV,IAAOT,EAAK,oBAAoBe,GAAkB,CAACD,EAAS,cAAc;AAGhF,SAAO;AAAA,IACH,MAHgBA,EAAS,UAAU,SAAYL,IAAOJ,eAAaS,EAAS,MAAM,IAAI,MAAM,GAAGL,CAAI;AAAA,IAInG,OAAOM;AAAA,IACP,OAAOD,EAAS,WAAW,SAASC;AAAA,IACpC,aAAaE,EAAW,OAAO,CAACG,GAA6BD,OACzDC,EAAID,CAAQ,IAAID,EAAcC,CAAQ,GAC/BC,IACR,CAAA,CAAE;AAAA,IACL,cAAcN,EAAS,gBAAgB;AAAA,EAAA;AAE/C;AAEO,MAAMO,WAAsBC,EAAc;AAAA,EAe7C,YAAYtB,GAAiBuB,GAA4BC,GAAuC;AAC5F,UAAMxB,GAAMuB,CAAQ;AAfxB,IAAAE,EAAA;AACA,IAAAA,EAAA,uBAAgB,IAAIC,EAAA;AAEpB,IAAAD,EAAA,6BAA4C,MAAA;AAAA;AAC5C,IAAAA,EAAA,wBAQW;AAKP,SAAK,WAAW,IAAIE,EAAqBJ,CAAQ,GAC7CC,MACA,KAAK,sBAAsBA,EAAc,CAAC;AAAA,EAElD;AAAA,EAEA,MAAMI,GAAmB;AACrB,QAAI;AACA,WAAK,cAAc,KAAKA,CAAI,GAC5B,KAAK,YAAA,GACL,KAAK,aAAA,GACL,KAAK,WAAW,IAChB,KAAK,YAAY;AAAA,IACrB,SAASC,GAAK;AACV,WAAK,WAAW,IACZA,aAAe,UACf,KAAK,YAAYC,EAAYD,EAAI,KAAK,IAAIA,EAAI,QAAQE,EAAoBF,CAAG,GAC7E,KAAK,cAAc,YAAYA,EAAI,OAAiB,GACpD,QAAQ,MAAMA,CAAG;AAAA,IAEzB;AAAA,EACJ;AAAA,EAEA,UAAU;AACN,SAAK,cAAc,MAAA;AAAA,EACvB;AAAA,EAEA,sBAAsB7B,GAAiBuB,GAA4B;AAC/D,QAAI;AACA,YAAMS,IAAmB,KAAK,UACxBC,IAAe,KAAK;AAC1B,WAAK,WAAW,IAAIN,EAAqBJ,CAAQ,GACjD,KAAK,OAAOvB,GAER,KAAK,oCAAoCgC,GAAkB,KAAK,QAAQ,KACxE,KAAK,gCAAgCC,GAAc,KAAK,IAAI,IAE5D,KAAK,YAAA,IAEL,KAAK,iBAAA,GAET,KAAK,aAAA,GACL,KAAK,WAAW,IAChB,KAAK,YAAY;AAAA,IACrB,SAASJ,GAAK;AACV,WAAK,WAAW,IACZA,aAAe,UACf,KAAK,YAAYC,EAAYD,EAAI,KAAK,IAAIA,EAAI,QAAQE,EAAoBF,CAAG,GAC7E,KAAK,cAAc,YAAYA,EAAI,OAAiB,GACpD,QAAQ,MAAMA,CAAG;AAAA,IAEzB;AAAA,EACJ;AAAA,EAEA,iBAAiBK,GAAgBC,GAAiB;AAC9C,YAAQ,KAAK,6BAA6B;AAAA,EAC9C;AAAA,EAEA,SAAiB;AACb,gBAAK,aAAA,GACEC,iBAAe,KAAK,cAAc,SAAS;AAAA,EACtD;AAAA,EAEA,oCAAoCC,GAAoCd,GAAgC;;AACpG,WACIc,EAAa,cAAc,MAAM,UAAUd,EAAS,cAAc,MAAM,YACvEe,IAAAD,EAAa,oBAAb,gBAAAC,EAA8B,WAAW,UAAS,WAClDC,IAAAhB,EAAS,oBAAT,gBAAAgB,EAA0B,WAAW,UAAS,UAC9CC,IAAAH,EAAa,sBAAb,gBAAAG,EAAgC,WAAW,UAAS,WACpDC,IAAAlB,EAAS,sBAAT,gBAAAkB,EAA4B,WAAW,UAAS,UAChDC,IAAAL,EAAa,oBAAb,gBAAAK,EAA8B,mBAAkB,WAChDC,IAAApB,EAAS,oBAAT,gBAAAoB,EAA0B,mBAAkB,UAC5CC,IAAAP,EAAa,sBAAb,gBAAAO,EAAgC,mBAAkB,WAClDC,IAAAtB,EAAS,sBAAT,gBAAAsB,EAA4B,mBAAkB,OAC/CC,GAAmBC,IAAAV,EAAa,oBAAb,gBAAAU,EAA8B,QAAOC,IAAAzB,EAAS,oBAAT,gBAAAyB,EAA0B,OAAO,EAAE,aAAa,IAAM,KAC9GF,GAAmBG,IAAAZ,EAAa,sBAAb,gBAAAY,EAAgC,QAAOC,IAAA3B,EAAS,sBAAT,gBAAA2B,EAA4B,OAAO,EAAE,aAAa,GAAA,CAAM,KAClHb,EAAa,QAAQ,KAAK,CAACc,GAAIC,MAAA;;AAAQ,aAAAD,EAAG,YAAUb,IAAAf,EAAS,QAAQ6B,CAAG,MAApB,gBAAAd,EAAuB;AAAA,KAAK,KAChFD,EAAa,OAAO,WAAWd,EAAS,OAAO,UAC/Cc,EAAa,OAAO,KAAK,CAACgB,GAAGD,MAAQ,CAACC,EAAE,sBAAsB9B,EAAS,OAAO6B,CAAG,CAAa,CAAC;AAAA,EAEvG;AAAA,EAEA,gCAAgCE,GAAqBtD,GAAiB;AAClE,UAAMuD,IAAW,OAAO,KAAKD,EAAS,IAAI,GACpC7C,IAAO,OAAO,KAAKT,EAAK,IAAI;AAClC,WACIsD,EAAS,OAAOtD,EAAK,MACrBuD,EAAS,WAAW9C,EAAK,UACzB8C,EAAS,KAAK;;AAAO,aAAAD,EAAS,KAAK3C,CAAG,EAAE,aAAW2B,IAAAtC,EAAK,KAAKW,CAAG,MAAb,gBAAA2B,EAAgB;AAAA,KAAM;AAAA,EAEjF;AAAA,EAEA,cAAc;;AACV,UAAM,EAAE,eAAAkB,GAAe,GAAAC,GAAG,WAAAC,GAAW,SAAAC,GAAS,QAAAC,GAAQ,eAAAC,MAAkB,KAAK,UACvE,EAAE,OAAAC,MAAUN,GAEZO,IAAe,KAAK,KAAK,UAAUN,EAAE,KAAK,EAAE,MAAM,CAAAO,MAC7CA,MAAM,QAAQ,EAAE,OAAOA,CAAC,IAAI,EACtC,GAGKC,IAAkBpD,EAAgB,KAAK,MAAM,KAAK,SAAS,eAAe,GAC1EqD,IAAoBrD,EAAgB,KAAK,MAAM,KAAK,SAAS,iBAAiB,GAC9EsD,IAAsBR,EAAQ,IAAI,CAAA1D,MAAUA,EAAO,KAAK;AAE9D,QAAI,GAACqC,IAAA,KAAK,SAAS,oBAAd,QAAAA,EAA+B,yBAAwB2B,EAAgB,KAAK,SAASG,GAAkB;AACxG,YAAMC,IAAoC;AAAA,QACtC,MAAM;AAAA,QACN,MAAM,EAAE,OAAOJ,EAAgB,KAAK,QAAQ,UAAUG,EAAA;AAAA,MAAiB;AAE3E,YAAM,MAAMC,EAAU,MAAM,EAAE,OAAOA,GAAW;AAAA,IACpD;AACA,QAAI,GAAC9B,IAAA,KAAK,SAAS,sBAAd,QAAAA,EAAiC,yBAAwB2B,EAAkB,KAAK,SAASE,GAAkB;AAC5G,YAAMC,IAAsC;AAAA,QACxC,MAAM;AAAA,QACN,MAAM,EAAE,OAAOH,EAAkB,KAAK,QAAQ,UAAUE,EAAA;AAAA,MAAiB;AAE7E,YAAM,MAAMC,EAAU,MAAM,EAAE,OAAOA,GAAW;AAAA,IACpD;AAIA,UAAMC,IAAgCX,EAAQ,SACxCrD;AAAA,MACEqD,EAAQ,IAAI,CAAA1D,MAAA;;AAAU,eAAAF,EAAgB,KAAK,MAAME,IAAQqC,IAAAuB,KAAA,gBAAAA,EAAe,UAAf,gBAAAvB,EAAuBrC,EAAO,MAAM;AAAA,OAAC;AAAA,IAAA,IAEhG,CAAC,CAACsE,CAAU,CAAC;AAEnB,QAAID,EAAc,SAASE,GAAkB;AACzC,YAAMH,IAA6B;AAAA,QAC/B,MAAM;AAAA,QACN,MAAM,EAAE,OAAOC,EAAc,QAAQ,UAAUE,EAAA;AAAA,MAAiB;AAEpE,YAAM,MAAMH,EAAU,MAAM,EAAE,OAAOA,GAAW;AAAA,IACpD;AACA,SAAK,KAAK,YAAY,CAAC,GAAGF,GAAqBF,EAAgB,OAAOC,EAAkB,KAAK,CAAC;AAC9F,UAAMO,IAAe;AAAA,MACjB,OAAOH;AAAA,MACP,SAAUL,EAAgB,UAAU,OAAOA,EAAgB,OAAO,CAACM,CAAU;AAAA,MAC7E,WAAYL,EAAkB,UAAU,OAAOA,EAAkB,OAAO,CAACK,CAAU;AAAA,IAAA,GAGjFG,IAAyBD,EAAa,MAAM,OAAO,CAACrD,GAA+BuD,OACrFvD,EAAIwD,EAAkBD,CAAQ,CAAC,IAAIF,EAAa,QAAQ;AAAA,MACpD,CAAAI,MAAc,KAAK,KAAK,kBAAkB,CAAC,GAAGF,GAAUE,CAAU,CAAC,EAAE,SAAS;AAAA,IAAA,EAChF,IAAI,MAAM,GACLzD,IACR,CAAA,CAAE,GAEC0D,IAAalB,EACd,OAAO,CAAAmB,MAAS,EAAEA,aAAiBC,EAAU,EAC7C,IAAI,CAAAD,MAAS;AACV,UAAIA,aAAiBE;AACjB,eAAOC,GAAaH,GAAON,GAAc,KAAK,MAAMhB,GAAGC,GAAWI,CAAK;AAE3E,UAAIiB,aAAiBI;AACjB,eAAOC,GAAeL,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAElE,UAAIiB,aAAiBM;AACjB,eAAOC,GAAYP,GAAON,GAAc,KAAK,MAAMhB,GAAGK,GAAOJ,CAAS;AAE1E,UAAIqB,aAAiBQ;AACjB,eAAOC,GAAaT,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAEhE,UAAIiB,aAAiBU;AACjB,eAAOC,GAAiBX,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAEpE,UAAIiB,aAAiBY;AACjB,eAAOC,GAAYb,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAE/D,UAAIiB,aAAiBc;AACjB,eAAOC,GAAmBf,GAAON,GAAc,KAAK,MAAMhB,CAAC;AAE/D,UAAIsB,aAAiBgB;AACjB,eAAOC,GAAmBjB,GAAON,GAAc,KAAK,MAAMhB,CAAC;AAE/D,UAAIsB,aAAiBkB;AACjB,eAAOC,GAAkBnB,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAErE,UAAIiB,aAAiBoB;AACjB,eAAOC,GAAoBrB,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAEvE,UAAIiB,aAAiBsB;AACjB,eAAOC,GAAYvB,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAE/D,UAAIiB,aAAiBwB;AACjB,eAAOC,GAAYzB,GAAON,GAAc,KAAK,MAAMhB,CAAC;AAExD,YAAM,IAAI,MAAM,oBAAoB;AAAA,IACxC,CAAC,GACCgD,IAAkB7C,EACnB,OAAO,CAAAmB,MAASA,aAAiBC,CAAS,EAC1C,IAAI,CAAAD,MAAS;AACV,UAAId,EAAgB,UAAU;AAC1B,cAAM,IAAI,MAAM,gDAAgD;AAEpE,aAAOyC,GAAa3B,GAAoBN,EAAa,OAAOA,EAAa,SAAShB,GAAG,KAAK,IAAI;AAAA,IAClG,CAAC;AACL,SAAK,iBAAiB;AAAA,MAClB,YAAAqB;AAAA,MACA,iBAAA2B;AAAA,MACA,iBAAAxC;AAAA,MACA,mBAAAC;AAAA,MACA,eAAAI;AAAA,MACA,wBAAAI;AAAA,MACA,cAAAX;AAAA,IAAA;AAAA,EAER;AAAA,EAEA,mBAAmB;AACf,QAAI,KAAK,mBAAmB;AACxB;AAEJ,UAAM,EAAE,QAAAH,GAAQ,SAAAD,GAAS,iBAAAM,GAAiB,mBAAAC,GAAmB,eAAAL,EAAA,IAAkB,KAAK,UAG9E8C,IAAe/C,EAAO,OAAO,CAAAmB,MAAS,EAAEA,aAAiBC,EAAU;AACzE,aAAS4B,IAAI,GAAGA,IAAID,EAAa,QAAQC,KAAK;AAC1C,YAAM7B,IAAQ4B,EAAaC,CAAC;AAC5B,MAAI,SAAS7B,MACT,KAAK,eAAe,WAAW6B,CAAC,EAAE,MAAM7B,EAAM;AAAA,IAEtD;AAGA,SAAK,eAAe,kBAAkBlE,EAAgB,KAAK,MAAMoD,CAAe,GAChF,KAAK,eAAe,oBAAoBpD,EAAgB,KAAK,MAAMqD,CAAiB,GAGpF,KAAK,eAAe,gBAAgBP,EAAQ,SACtCrD;AAAA,MACEqD,EAAQ,IAAI,CAAA1D,MAAA;;AAAU,eAAAF,EAAgB,KAAK,MAAME,IAAQqC,IAAAuB,KAAA,gBAAAA,EAAe,UAAf,gBAAAvB,EAAuBrC,EAAO,MAAM;AAAA,OAAC;AAAA,IAAA,IAEhG,CAAC,CAACsE,CAAU,CAAC;AAAA,EACvB;AAAA,EAEA,eAAe;AACX,QAAI,CAAC,KAAK;AACN;AAEJ,UAAM,EAAE,IAAAsC,GAAI,eAAArD,GAAe,WAAAE,GAAW,eAAAG,EAAA,IAAkB,KAAK,UAEvDiD,IAAY,KAAK,eAAe,cAAc,IAAIlC,CAAiB,GACnEmC,IAAc,KAAK,eAAe,cAAc,IAAI,CAAA/C,MAAKA,EAAE,IAAI,CAAAA,MAAKA,MAAMO,IAAa,SAASP,CAAC,CAAC;AACxG,SAAK,cAAc;AAAA,MACf,KAAK;AAAA,MACL6C;AAAA,MACArD;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAAA,MACpBK;AAAA,MACAiD;AAAA,MACAC;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAAA,MACpBrD;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAAA,MACpB,KAAK;AAAA,IAAA;AAAA,EAEb;AACJ;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/discrete/index.ts"],"sourcesContent":["import { intersection } from 'lodash';\nimport { renderToString } from 'react-dom/server';\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 getGroupingData(\n data: DataFrame,\n grouping: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping']\n): GroupingData {\n if (!grouping) {\n return {\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 return groupingColumnLabelId\n ? String(\n data.getColumnValue(\n groupingColumnLabelId,\n data.getColumnCategoryRowIndex(groupingColumnId, category)\n )\n )\n : category;\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 (prevSettings.primaryGrouping?.columnName.value ?? '') !==\n (settings.primaryGrouping?.columnName.value ?? '') ||\n (prevSettings.secondaryGrouping?.columnName.value ?? '') !==\n (settings.secondaryGrouping?.columnName.value ?? '') ||\n (prevSettings.primaryGrouping?.allowNullGroup ?? '') !==\n (settings.primaryGrouping?.allowNullGroup ?? '') ||\n (prevSettings.secondaryGrouping?.allowNullGroup ?? '') !==\n (settings.secondaryGrouping?.allowNullGroup ?? '') ||\n arraysAreDifferent(prevSettings.primaryGrouping?.order, settings.primaryGrouping?.order, { ignoreOrder: true }) ||\n arraysAreDifferent(prevSettings.secondaryGrouping?.order, settings.secondaryGrouping?.order, { ignoreOrder: true }) ||\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 const facetKeyLists: (GroupKey)[][] = facetBy.length\n ? getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n )\n : [[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","getGroupingData","grouping","groupingColumnId","groupingColumnLabelId","categories","getValueLabel","category","res","ChartDiscrete","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","DiscreteSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","_a","_b","_c","_d","_e","_f","_g","_h","arraysAreDifferent","_i","_j","_k","_l","el","idx","l","prevData","prevKeys","chartSettings","y","keyColumn","facetBy","layers","facetSettings","yAxis","onlyPositive","v","primaryGrouping","secondaryGrouping","facetGroupingValues","MAX_GROUPS_COUNT","errorInfo","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,SAASA,EAAgBC,GAAiBC,GAAoBC,IAA4B,MAAM;AAC5F,QAAMC,IAAiBF,EAAO,OACxBG,IAAgBJ,EAAK,oBAAoBG,CAAc;AAC7D,SAAOE,EAAAA,aAAaH,KAASE,GAAeA,CAAa,EAAE,IAAI,MAAM;AACzE;AAGA,SAASE,EAAoBC,GAAuB;AAChD,MAAI,CAACA,EAAU;AACX,WAAO,CAAA;AAEX,MAAIC,IAAqB,CAAC,EAAE;AAC5B,SAAAD,EAAU,QAAQ,CAAAE,MAAQ;AACtB,UAAMC,IAAyB,CAAA;AAC/B,IAAAD,EAAK,QAAQ,CAAAE,MAAO;AAChB,MAAAD,EAAW,KAAK,GAAGF,EAAO,IAAI,CAAAI,MAAc,CAAC,GAAGA,GAAYD,CAAG,CAAC,CAAC;AAAA,IACrE,CAAC,GACDH,IAASE;AAAA,EACb,CAAC,GACMF;AACX;AAEA,SAASK,EACLb,GACAc,GACY;AACZ,MAAI,CAACA;AACD,WAAO;AAAA,MACH,MAAM,CAAC,MAAM;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,MACP,aAAa,EAAE,MAAM,GAAA;AAAA,MACrB,cAAc;AAAA,IAAA;AAItB,QAAMC,IAAmBD,EAAS,WAAW,OACvCE,IAAwBF,EAAS,WAAW,aAC5CG,IAAajB,EAAK,oBAAoBe,GAAkB,EAAK,GAC7DG,IAAgB,CAACC,MACZH,IACD;AAAA,IACEhB,EAAK;AAAA,MACDgB;AAAA,MACAhB,EAAK,0BAA0Be,GAAkBI,CAAQ;AAAA,IAAA;AAAA,EAC7D,IAEFA,GAGJV,IAAOT,EAAK,oBAAoBe,GAAkB,CAACD,EAAS,cAAc;AAGhF,SAAO;AAAA,IACH,MAHgBA,EAAS,UAAU,SAAYL,IAAOJ,eAAaS,EAAS,MAAM,IAAI,MAAM,GAAGL,CAAI;AAAA,IAInG,OAAOM;AAAA,IACP,OAAOD,EAAS,WAAW,SAASC;AAAA,IACpC,aAAaE,EAAW,OAAO,CAACG,GAA6BD,OACzDC,EAAID,CAAQ,IAAID,EAAcC,CAAQ,GAC/BC,IACR,CAAA,CAAE;AAAA,IACL,cAAcN,EAAS,gBAAgB;AAAA,EAAA;AAE/C;AAEO,MAAMO,WAAsBC,EAAc;AAAA,EAiB7C,YAAYtB,GAAiBuB,GAA4BC,GAAuC;AAC5F,UAAMxB,GAAMuB,CAAQ;AAjBxB,IAAAE,EAAA;AACA,IAAAA,EAAA,uBAAgB,IAAIC,EAAA;AAEpB,IAAAD,EAAA,6BAA4C,MAAA;AAAA;AAC5C,IAAAA,EAAA,wBAUW;AAKP,SAAK,WAAW,IAAIE,EAAqBJ,CAAQ,GAC7CC,MACA,KAAK,sBAAsBA,EAAc,CAAC;AAAA,EAElD;AAAA,EAEA,MAAMI,GAAmB;AACrB,QAAI;AACA,WAAK,cAAc,KAAKA,CAAI,GAC5B,KAAK,YAAA,GACL,KAAK,aAAA,GACL,KAAK,WAAW,IAChB,KAAK,YAAY;AAAA,IACrB,SAASC,GAAK;AACV,WAAK,WAAW,IACZA,aAAe,UACf,KAAK,YAAYC,EAAYD,EAAI,KAAK,IAAIA,EAAI,QAAQE,EAAoBF,CAAG,GAC7E,KAAK,cAAc,YAAYA,EAAI,OAAiB,GACpD,QAAQ,MAAMA,CAAG;AAAA,IAEzB;AAAA,EACJ;AAAA,EAEA,UAAU;AACN,SAAK,cAAc,MAAA;AAAA,EACvB;AAAA,EAEA,sBAAsB7B,GAAiBuB,GAA4B;AAC/D,QAAI;AACA,YAAMS,IAAmB,KAAK,UACxBC,IAAe,KAAK;AAC1B,WAAK,WAAW,IAAIN,EAAqBJ,CAAQ,GACjD,KAAK,OAAOvB,GAER,KAAK,oCAAoCgC,GAAkB,KAAK,QAAQ,KACxE,KAAK,gCAAgCC,GAAc,KAAK,IAAI,IAE5D,KAAK,YAAA,IAEL,KAAK,iBAAA,GAET,KAAK,aAAA,GACL,KAAK,WAAW,IAChB,KAAK,YAAY;AAAA,IACrB,SAASJ,GAAK;AACV,WAAK,WAAW,IACZA,aAAe,UACf,KAAK,YAAYC,EAAYD,EAAI,KAAK,IAAIA,EAAI,QAAQE,EAAoBF,CAAG,GAC7E,KAAK,cAAc,YAAYA,EAAI,OAAiB,GACpD,QAAQ,MAAMA,CAAG;AAAA,IAEzB;AAAA,EACJ;AAAA,EAEA,iBAAiBK,GAAgBC,GAAiB;AAC9C,YAAQ,KAAK,6BAA6B;AAAA,EAC9C;AAAA,EAEA,SAAiB;AACb,gBAAK,aAAA,GACEC,iBAAe,KAAK,cAAc,SAAS;AAAA,EACtD;AAAA,EAEA,oCAAoCC,GAAoCd,GAAgC;;AACpG,WACIc,EAAa,cAAc,MAAM,UAAUd,EAAS,cAAc,MAAM,YACvEe,IAAAD,EAAa,oBAAb,gBAAAC,EAA8B,WAAW,UAAS,WAClDC,IAAAhB,EAAS,oBAAT,gBAAAgB,EAA0B,WAAW,UAAS,UAC9CC,IAAAH,EAAa,sBAAb,gBAAAG,EAAgC,WAAW,UAAS,WACpDC,IAAAlB,EAAS,sBAAT,gBAAAkB,EAA4B,WAAW,UAAS,UAChDC,IAAAL,EAAa,oBAAb,gBAAAK,EAA8B,mBAAkB,WAChDC,IAAApB,EAAS,oBAAT,gBAAAoB,EAA0B,mBAAkB,UAC5CC,IAAAP,EAAa,sBAAb,gBAAAO,EAAgC,mBAAkB,WAClDC,IAAAtB,EAAS,sBAAT,gBAAAsB,EAA4B,mBAAkB,OAC/CC,GAAmBC,IAAAV,EAAa,oBAAb,gBAAAU,EAA8B,QAAOC,IAAAzB,EAAS,oBAAT,gBAAAyB,EAA0B,OAAO,EAAE,aAAa,IAAM,KAC9GF,GAAmBG,IAAAZ,EAAa,sBAAb,gBAAAY,EAAgC,QAAOC,IAAA3B,EAAS,sBAAT,gBAAA2B,EAA4B,OAAO,EAAE,aAAa,GAAA,CAAM,KAClHb,EAAa,QAAQ,KAAK,CAACc,GAAIC,MAAA;;AAAQ,aAAAD,EAAG,YAAUb,IAAAf,EAAS,QAAQ6B,CAAG,MAApB,gBAAAd,EAAuB;AAAA,KAAK,KAChFD,EAAa,OAAO,WAAWd,EAAS,OAAO,UAC/Cc,EAAa,OAAO,KAAK,CAACgB,GAAGD,MAAQ,CAACC,EAAE,sBAAsB9B,EAAS,OAAO6B,CAAG,CAAa,CAAC;AAAA,EAEvG;AAAA,EAEA,gCAAgCE,GAAqBtD,GAAiB;AAClE,UAAMuD,IAAW,OAAO,KAAKD,EAAS,IAAI,GACpC7C,IAAO,OAAO,KAAKT,EAAK,IAAI;AAClC,WACIsD,EAAS,OAAOtD,EAAK,MACrBuD,EAAS,WAAW9C,EAAK,UACzB8C,EAAS,KAAK;;AAAO,aAAAD,EAAS,KAAK3C,CAAG,EAAE,aAAW2B,IAAAtC,EAAK,KAAKW,CAAG,MAAb,gBAAA2B,EAAgB;AAAA,KAAM;AAAA,EAEjF;AAAA,EAEA,cAAc;;AACV,UAAM,EAAE,eAAAkB,GAAe,GAAAC,GAAG,WAAAC,GAAW,SAAAC,GAAS,QAAAC,GAAQ,eAAAC,MAAkB,KAAK,UACvE,EAAE,OAAAC,MAAUN,GAEZO,IAAe,KAAK,KAAK,UAAUN,EAAE,KAAK,EAAE,MAAM,CAAAO,MAC7CA,MAAM,QAAQ,EAAE,OAAOA,CAAC,IAAI,EACtC,GAGKC,IAAkBpD,EAAgB,KAAK,MAAM,KAAK,SAAS,eAAe,GAC1EqD,IAAoBrD,EAAgB,KAAK,MAAM,KAAK,SAAS,iBAAiB,GAC9EsD,IAAsBR,EAAQ,IAAI,CAAA1D,MAAUA,EAAO,KAAK;AAE9D,QAAI,GAACqC,IAAA,KAAK,SAAS,oBAAd,QAAAA,EAA+B,yBAAwB2B,EAAgB,KAAK,SAASG,GAAkB;AACxG,YAAMC,IAAoC;AAAA,QACtC,MAAM;AAAA,QACN,MAAM,EAAE,OAAOJ,EAAgB,KAAK,QAAQ,UAAUG,EAAA;AAAA,MAAiB;AAE3E,YAAM,MAAMC,EAAU,MAAM,EAAE,OAAOA,GAAW;AAAA,IACpD;AACA,QAAI,GAAC9B,IAAA,KAAK,SAAS,sBAAd,QAAAA,EAAiC,yBAAwB2B,EAAkB,KAAK,SAASE,GAAkB;AAC5G,YAAMC,IAAsC;AAAA,QACxC,MAAM;AAAA,QACN,MAAM,EAAE,OAAOH,EAAkB,KAAK,QAAQ,UAAUE,EAAA;AAAA,MAAiB;AAE7E,YAAM,MAAMC,EAAU,MAAM,EAAE,OAAOA,GAAW;AAAA,IACpD;AAIA,UAAMC,IAAgCX,EAAQ,SACxCrD;AAAA,MACEqD,EAAQ,IAAI,CAAA1D,MAAA;;AAAU,eAAAF,EAAgB,KAAK,MAAME,IAAQqC,IAAAuB,KAAA,gBAAAA,EAAe,UAAf,gBAAAvB,EAAuBrC,EAAO,MAAM;AAAA,OAAC;AAAA,IAAA,IAEhG,CAAC,CAACsE,CAAU,CAAC;AAEnB,QAAID,EAAc,SAASE,GAAkB;AACzC,YAAMH,IAA6B;AAAA,QAC/B,MAAM;AAAA,QACN,MAAM,EAAE,OAAOC,EAAc,QAAQ,UAAUE,EAAA;AAAA,MAAiB;AAEpE,YAAM,MAAMH,EAAU,MAAM,EAAE,OAAOA,GAAW;AAAA,IACpD;AACA,UAAMI,IAAYH,EAAc,IAAII,CAAiB,GAC/CC,IAAcC,GAAe,KAAK,MAAMjB,GAASc,GAAWH,CAAa;AAE/E,SAAK,KAAK,YAAY,CAAC,GAAGH,GAAqBF,EAAgB,OAAOC,EAAkB,KAAK,CAAC;AAC9F,UAAMW,IAAe;AAAA,MACjB,OAAOP;AAAA,MACP,SAAUL,EAAgB,UAAU,OAAOA,EAAgB,OAAO,CAACM,CAAU;AAAA,MAC7E,WAAYL,EAAkB,UAAU,OAAOA,EAAkB,OAAO,CAACK,CAAU;AAAA,IAAA,GAGjFO,IAAyBD,EAAa,MAAM,OAAO,CAACzD,GAA+B2D,OACrF3D,EAAIsD,EAAkBK,CAAQ,CAAC,IAAIF,EAAa,QAAQ;AAAA,MACpD,CAAAG,MAAc,KAAK,KAAK,kBAAkB,CAAC,GAAGD,GAAUC,CAAU,CAAC,EAAE,SAAS;AAAA,IAAA,EAChF,IAAI,MAAM,GACL5D,IACR,CAAA,CAAE,GAEC6D,IAAarB,EACd,OAAO,CAAAsB,MAAS,EAAEA,aAAiBC,EAAU,EAC7C,IAAI,CAAAD,MAAS;AACV,UAAIA,aAAiBE;AACjB,eAAOC,GAAaH,GAAOL,GAAc,KAAK,MAAMpB,GAAGC,GAAWI,CAAK;AAE3E,UAAIoB,aAAiBI;AACjB,eAAOC,GAAeL,GAAOL,GAAc,KAAK,MAAMpB,GAAGK,CAAK;AAElE,UAAIoB,aAAiBM;AACjB,eAAOC,GAAYP,GAAOL,GAAc,KAAK,MAAMpB,GAAGK,GAAOJ,CAAS;AAE1E,UAAIwB,aAAiBQ;AACjB,eAAOC,GAAaT,GAAOL,GAAc,KAAK,MAAMpB,GAAGK,CAAK;AAEhE,UAAIoB,aAAiBU;AACjB,eAAOC,GAAiBX,GAAOL,GAAc,KAAK,MAAMpB,GAAGK,CAAK;AAEpE,UAAIoB,aAAiBY;AACjB,eAAOC,GAAYb,GAAOL,GAAc,KAAK,MAAMpB,GAAGK,CAAK;AAE/D,UAAIoB,aAAiBc;AACjB,eAAOC,GAAmBf,GAAOL,GAAc,KAAK,MAAMpB,CAAC;AAE/D,UAAIyB,aAAiBgB;AACjB,eAAOC,GAAmBjB,GAAOL,GAAc,KAAK,MAAMpB,CAAC;AAE/D,UAAIyB,aAAiBkB;AACjB,eAAOC,GAAkBnB,GAAOL,GAAc,KAAK,MAAMpB,GAAGK,CAAK;AAErE,UAAIoB,aAAiBoB;AACjB,eAAOC,GAAoBrB,GAAOL,GAAc,KAAK,MAAMpB,GAAGK,CAAK;AAEvE,UAAIoB,aAAiBsB;AACjB,eAAOC,GAAYvB,GAAOL,GAAc,KAAK,MAAMpB,GAAGK,CAAK;AAE/D,UAAIoB,aAAiBwB;AACjB,eAAOC,GAAYzB,GAAOL,GAAc,KAAK,MAAMpB,CAAC;AAExD,YAAM,IAAI,MAAM,oBAAoB;AAAA,IACxC,CAAC,GACCmD,IAAkBhD,EACnB,OAAO,CAAAsB,MAASA,aAAiBC,CAAS,EAC1C,IAAI,CAAAD,MAAS;AACV,UAAIjB,EAAgB,UAAU;AAC1B,cAAM,IAAI,MAAM,gDAAgD;AAEpE,aAAO4C,GAAa3B,GAAoBL,EAAa,OAAOA,EAAa,SAASpB,GAAG,KAAK,IAAI;AAAA,IAClG,CAAC;AACL,SAAK,iBAAiB;AAAA,MAClB,YAAAwB;AAAA,MACA,iBAAA2B;AAAA,MACA,iBAAA3C;AAAA,MACA,mBAAAC;AAAA,MACA,eAAAI;AAAA,MACA,wBAAAQ;AAAA,MACA,cAAAf;AAAA,MACA,WAAAU;AAAA,MACA,aAAAE;AAAA,IAAA;AAAA,EAER;AAAA,EAEA,mBAAmB;AACf,QAAI,KAAK,mBAAmB;AACxB;AAEJ,UAAM,EAAE,QAAAf,GAAQ,SAAAD,GAAS,iBAAAM,GAAiB,mBAAAC,GAAmB,eAAAL,EAAA,IAAkB,KAAK,UAG9EiD,IAAelD,EAAO,OAAO,CAAAsB,MAAS,EAAEA,aAAiBC,EAAU;AACzE,aAAS4B,IAAI,GAAGA,IAAID,EAAa,QAAQC,KAAK;AAC1C,YAAM7B,IAAQ4B,EAAaC,CAAC;AAC5B,MAAI,SAAS7B,MACT,KAAK,eAAe,WAAW6B,CAAC,EAAE,MAAM7B,EAAM;AAAA,IAEtD;AAGA,SAAK,eAAe,kBAAkBrE,EAAgB,KAAK,MAAMoD,CAAe,GAChF,KAAK,eAAe,oBAAoBpD,EAAgB,KAAK,MAAMqD,CAAiB,GAGpF,KAAK,eAAe,gBAAgBP,EAAQ,SACtCrD;AAAA,MACEqD,EAAQ,IAAI,CAAA1D,MAAA;;AAAU,eAAAF,EAAgB,KAAK,MAAME,IAAQqC,IAAAuB,KAAA,gBAAAA,EAAe,UAAf,gBAAAvB,EAAuBrC,EAAO,MAAM;AAAA,OAAC;AAAA,IAAA,IAEhG,CAAC,CAACsE,CAAU,CAAC;AAAA,EACvB;AAAA,EAEA,eAAe;AACX,QAAI,CAAC,KAAK;AACN;AAEJ,UAAM,EAAE,IAAAyC,GAAI,eAAAxD,GAAe,WAAAE,GAAW,eAAAG,EAAA,IAAkB,KAAK,UACvD,EAAE,aAAAc,MAAgB,KAAK;AAE7B,SAAK,cAAc;AAAA,MACf,KAAK;AAAA,MACLqC;AAAA,MACAxD;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAAA,MACpBK;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe,UAAU,IAAI,CAAAlD,MAAOgE,EAAYhE,CAAG,CAAC;AAAA,MACzD,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAAA,MACpB+C;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAAA,MACpB,KAAK;AAAA,IAAA;AAAA,EAEb;AACJ;"}
@@ -1,8 +1,8 @@
1
- import l from "../../../_virtual/index5.js";
2
- import s from "../../../_virtual/index6.js";
3
- import f from "../../../_virtual/index7.js";
4
- import m from "../../../_virtual/index8.js";
5
- import h from "../../../_virtual/index9.js";
1
+ import l from "../../../_virtual/index6.js";
2
+ import s from "../../../_virtual/index7.js";
3
+ import f from "../../../_virtual/index8.js";
4
+ import m from "../../../_virtual/index9.js";
5
+ import h from "../../../_virtual/index10.js";
6
6
  import { MannWhitneyU as c } from "./MannWhitneyU.js";
7
7
  import n from "../../../_virtual/lodash.js";
8
8
  function u(t, a, r) {
@@ -0,0 +1,3 @@
1
+ import { DataFrame, GroupKey } from '../../DataFrame';
2
+ import { ColumnName } from '../../types';
3
+ export declare function getFacetLabels(data: DataFrame, facetBy: ColumnName[], facetKeys: string[], facetKeyLists: GroupKey[][]): Record<string, string[]>;
@@ -0,0 +1,16 @@
1
+ import { NO_GROUPED as s } from "../../DataFrame.js";
2
+ function p(l, e, r, m) {
3
+ return m.reduce((t, a, c) => {
4
+ const g = r[c];
5
+ return t[g] = a.map((n, u) => {
6
+ if (n === s || e.length === 0)
7
+ return "null";
8
+ const o = e[u].valueLabels, C = e[u].value;
9
+ return o ? l.getColumn(o)[l.getColumnCategoryRowIndex(C, n)] : n;
10
+ }), t;
11
+ }, {});
12
+ }
13
+ export {
14
+ p as getFacetLabels
15
+ };
16
+ //# sourceMappingURL=getFacetLabels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFacetLabels.js","sources":["../../../src/discrete/utils/getFacetLabels.ts"],"sourcesContent":["import type { DataFrame, GroupKey} from '../../DataFrame';\nimport { NO_GROUPED } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\n\nexport function getFacetLabels(data: DataFrame, facetBy:ColumnName[], facetKeys: string[], facetKeyLists:GroupKey[][]) {\n return facetKeyLists.reduce((res, v, idx) => {\n const facetKey = facetKeys[idx];\n res[facetKey] = v.map((v, idx) => {\n if (v === NO_GROUPED || facetBy.length === 0) {\n return 'null';\n }\n const labelColumn = facetBy[idx].valueLabels;\n const valueColumn = facetBy[idx].value;\n return labelColumn ? data.getColumn(labelColumn)[data.getColumnCategoryRowIndex(valueColumn, v)] : v;\n }) as string[];\n return res;\n }, {} as Record<string, string[]>);\n}"],"names":["getFacetLabels","data","facetBy","facetKeys","facetKeyLists","res","v","idx","facetKey","NO_GROUPED","labelColumn","valueColumn"],"mappings":";AAIO,SAASA,EAAeC,GAAiBC,GAAsBC,GAAqBC,GAA4B;AACnH,SAAOA,EAAc,OAAO,CAACC,GAAKC,GAAGC,MAAQ;AACzC,UAAMC,IAAWL,EAAUI,CAAG;AAC9B,WAAAF,EAAIG,CAAQ,IAAIF,EAAE,IAAI,CAACA,GAAGC,MAAQ;AAC9B,UAAID,MAAMG,KAAcP,EAAQ,WAAW;AACvC,eAAO;AAEX,YAAMQ,IAAcR,EAAQK,CAAG,EAAE,aAC3BI,IAAcT,EAAQK,CAAG,EAAE;AACjC,aAAOG,IAAcT,EAAK,UAAUS,CAAW,EAAET,EAAK,0BAA0BU,GAAaL,CAAC,CAAC,IAAIA;AAAAA,IACvG,CAAC,GACMD;AAAA,EACX,GAAG,CAAA,CAA8B;AACrC;"}
@@ -13,9 +13,9 @@ function to({
13
13
  settingsId: f,
14
14
  chartSettings: d,
15
15
  chartSizes: r,
16
- chartsDimensions: n,
16
+ chartsDimensions: p,
17
17
  facetKeys: i,
18
- facetSettings: p,
18
+ facetSettings: n,
19
19
  xGroupKeys: g,
20
20
  yGroupKeys: j,
21
21
  scales: m,
@@ -34,11 +34,11 @@ function to({
34
34
  onTooltipHintSwitch: X,
35
35
  cellsRenderingMode: Y
36
36
  }) {
37
- const [v, F] = h.useState(), L = A(X, d.tooltips), e = h.useRef(null);
37
+ const [v, F] = h.useState(), L = A(X), e = h.useRef(null);
38
38
  h.useEffect(() => {
39
39
  e.current && F(e.current);
40
40
  }, []);
41
- const u = n[i[0]].padding, R = n[i[W - 1]].padding, H = s.left + r.chartsWidth + J, D = s.top + u.top;
41
+ const u = p[i[0]].padding, R = p[i[W - 1]].padding, H = s.left + r.chartsWidth + J, D = s.top + u.top;
42
42
  return /* @__PURE__ */ t.jsx(b, { dataId: f, children: /* @__PURE__ */ t.jsxs(
43
43
  "svg",
44
44
  {
@@ -69,13 +69,13 @@ function to({
69
69
  dendrograms: T[o],
70
70
  captionsSizes: a,
71
71
  facetKey: o,
72
- dimensions: n[o],
72
+ dimensions: p[o],
73
73
  xGroupKeys: g,
74
74
  yGroupKeys: j,
75
- xKeysByGroups: p.sharedX ? l.xKeysByGroups : N,
76
- yKeysByGroups: p.sharedY ? l.yKeysByGroups : O,
77
- sharedX: p.sharedX,
78
- sharedY: p.sharedY,
75
+ xKeysByGroups: n.sharedX ? l.xKeysByGroups : N,
76
+ yKeysByGroups: n.sharedY ? l.yKeysByGroups : O,
77
+ sharedX: n.sharedX,
78
+ sharedY: n.sharedY,
79
79
  scales: { x: m.x[o], y: m.y[o] },
80
80
  cells: I,
81
81
  cellsMeta: l,