@milaboratories/miplots4 1.0.136 → 1.0.138
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.
- package/dist/discrete/index.d.ts.map +1 -1
- package/dist/discrete/index.js +88 -87
- package/dist/discrete/index.js.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.d.ts +4 -3
- package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.js +152 -151
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/utils/arraysAreDifferent.d.ts +3 -1
- package/dist/utils/arraysAreDifferent.d.ts.map +1 -1
- package/dist/utils/arraysAreDifferent.js +11 -3
- package/dist/utils/arraysAreDifferent.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discrete/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAmC,qBAAqB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvH,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAIH,oBAAoB,EAUvB,MAAM,wBAAwB,CAAC;AAgBhC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discrete/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAmC,qBAAqB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvH,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAIH,oBAAoB,EAUvB,MAAM,wBAAwB,CAAC;AAgBhC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAqE3D,qBAAa,aAAc,SAAQ,aAAa;IAC5C,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,aAAa,gBAAuB;IAEpC,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAmB;IAC3D,cAAc,EAAE;QACZ,UAAU,EAAE,SAAS,EAAE,CAAC;QACxB,eAAe,EAAE,SAAS,EAAE,CAAC;QAC7B,eAAe,EAAE,YAAY,CAAC;QAC9B,iBAAiB,EAAE,YAAY,CAAC;QAChC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC5B,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,YAAY,EAAE,OAAO,CAAC;KACzB,GAAG,IAAI,CAAQ;gBAEJ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,qBAAqB;IAS9F,KAAK,CAAC,IAAI,EAAE,WAAW;IAevB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB;IAyBjE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB;IAmBtG,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IA0GX,gBAAgB;IA2BhB,YAAY;CAyBf"}
|
package/dist/discrete/index.js
CHANGED
|
@@ -1,43 +1,44 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
import { l as
|
|
5
|
-
import { renderToString as
|
|
1
|
+
var K = Object.defineProperty;
|
|
2
|
+
var x = (u, n, e) => n in u ? K(u, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : u[n] = e;
|
|
3
|
+
var G = (u, n, e) => x(u, typeof n != "symbol" ? n + "" : n, e);
|
|
4
|
+
import { l as N } from "../node_modules/lodash/lodash.js";
|
|
5
|
+
import { renderToString as O } from "../node_modules/react-dom/server.browser.js";
|
|
6
6
|
import { AbstractChart as T } from "../AbstractChart.js";
|
|
7
7
|
import { NO_GROUPED as C } from "../DataFrame.js";
|
|
8
8
|
import P from "./ChartRenderer.js";
|
|
9
|
-
import { MAX_GROUPS_COUNT as
|
|
10
|
-
import { DiscreteSettingsImpl as
|
|
11
|
-
import { getBoxesData as
|
|
12
|
-
import { getViolinsData as
|
|
13
|
-
import { getSinaData as
|
|
14
|
-
import { getDotsData as
|
|
15
|
-
import { getLinesData as
|
|
16
|
-
import { getErrorBarsData as
|
|
17
|
-
import { getBarsData as
|
|
18
|
-
import { getStackedBarsData as
|
|
19
|
-
import { getStackedAreaData as
|
|
20
|
-
import { getBinnedDotsData as
|
|
9
|
+
import { MAX_GROUPS_COUNT as S, MAX_FACETS_COUNT as U } from "./constants.js";
|
|
10
|
+
import { DiscreteSettingsImpl as _, StatLayer as B, BoxLayer as I, ViolinLayer as F, DotLayer as V, LineLayer as $, ErrorBarLayer as j, BarLayer as H, StackedBarLayer as M, StackedAreaLayer as X, BinnedDotsLayer as q, PairedPointsLayer as z, SinaLayer as J, LogoPlotLayer as Q } from "./DiscreteSettingsImpl.js";
|
|
11
|
+
import { getBoxesData as W } from "./layers/boxes.js";
|
|
12
|
+
import { getViolinsData as Y } from "./layers/violins.js";
|
|
13
|
+
import { getSinaData as Z } from "./layers/sina.js";
|
|
14
|
+
import { getDotsData as tt } from "./layers/dots.js";
|
|
15
|
+
import { getLinesData as at } from "./layers/lines.js";
|
|
16
|
+
import { getErrorBarsData as et } from "./layers/errorbars.js";
|
|
17
|
+
import { getBarsData as rt } from "./layers/bar.js";
|
|
18
|
+
import { getStackedBarsData as ot } from "./layers/stackedBar.js";
|
|
19
|
+
import { getStackedAreaData as nt } from "./layers/stackedArea.js";
|
|
20
|
+
import { getBinnedDotsData as it } from "./layers/binnedDots.js";
|
|
21
21
|
import { getPairedPointsData as st } from "./layers/pairedPoints.js";
|
|
22
|
-
import { getLogoData as
|
|
23
|
-
import { getStatsData as
|
|
24
|
-
import { getFacetStringKey as
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
import { getLogoData as lt } from "./layers/logo.js";
|
|
23
|
+
import { getStatsData as ut } from "./layers/stats/index.js";
|
|
24
|
+
import { getFacetStringKey as v } from "./utils/getFacetStringKey.js";
|
|
25
|
+
import { arraysAreDifferent as k } from "../utils/arraysAreDifferent.js";
|
|
26
|
+
function b(u, n, e = null) {
|
|
27
|
+
const t = n.value, o = u.getColumnCategories(t);
|
|
28
|
+
return N.intersection(e ?? o, o).map(String);
|
|
28
29
|
}
|
|
29
|
-
function
|
|
30
|
-
if (!
|
|
30
|
+
function A(u) {
|
|
31
|
+
if (!u.length)
|
|
31
32
|
return [];
|
|
32
33
|
let n = [[]];
|
|
33
|
-
return
|
|
34
|
+
return u.forEach((e) => {
|
|
34
35
|
const t = [];
|
|
35
36
|
e.forEach((o) => {
|
|
36
37
|
t.push(...n.map((s) => [...s, o]));
|
|
37
38
|
}), n = t;
|
|
38
39
|
}), n;
|
|
39
40
|
}
|
|
40
|
-
function
|
|
41
|
+
function E(u, n) {
|
|
41
42
|
if (!n)
|
|
42
43
|
return {
|
|
43
44
|
keys: ["null"],
|
|
@@ -46,29 +47,29 @@ function G(l, n) {
|
|
|
46
47
|
valueLabels: { null: "" },
|
|
47
48
|
inheritedAes: null
|
|
48
49
|
};
|
|
49
|
-
const e = n.columnName.value, t = n.columnName.valueLabels, o =
|
|
50
|
-
|
|
50
|
+
const e = n.columnName.value, t = n.columnName.valueLabels, o = u.getColumnCategories(e, !1), s = (r) => t ? String(
|
|
51
|
+
u.getColumnValue(
|
|
51
52
|
t,
|
|
52
|
-
|
|
53
|
+
u.getColumnCategoryRowIndex(e, r)
|
|
53
54
|
)
|
|
54
|
-
) : r,
|
|
55
|
+
) : r, l = u.getColumnCategories(e, !n.allowNullGroup);
|
|
55
56
|
return {
|
|
56
|
-
keys: n.order === void 0 ?
|
|
57
|
+
keys: n.order === void 0 ? l : N.intersection(n.order.map(String), l),
|
|
57
58
|
value: e,
|
|
58
59
|
label: n.columnName.label ?? e,
|
|
59
|
-
valueLabels: o.reduce((r,
|
|
60
|
+
valueLabels: o.reduce((r, c) => (r[c] = s(c), r), {}),
|
|
60
61
|
inheritedAes: n.inheritedAes ?? null
|
|
61
62
|
};
|
|
62
63
|
}
|
|
63
|
-
class
|
|
64
|
+
class Kt extends T {
|
|
64
65
|
constructor(e, t, o) {
|
|
65
66
|
super(e, t);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
G(this, "settings");
|
|
68
|
+
G(this, "chartRenderer", new P());
|
|
69
|
+
G(this, "onTooltipHintSwitch", () => {
|
|
69
70
|
});
|
|
70
|
-
|
|
71
|
-
this.settings = new
|
|
71
|
+
G(this, "calculatedData", null);
|
|
72
|
+
this.settings = new _(t), o && (this.onTooltipHintSwitch = o[0]);
|
|
72
73
|
}
|
|
73
74
|
mount(e) {
|
|
74
75
|
try {
|
|
@@ -83,7 +84,7 @@ class At extends T {
|
|
|
83
84
|
updateSettingsAndData(e, t) {
|
|
84
85
|
try {
|
|
85
86
|
const o = this.settings, s = this.data;
|
|
86
|
-
this.settings = new
|
|
87
|
+
this.settings = new _(t), this.data = e, this._needUpdateCalculatedDataBySettings(o, this.settings) || this._needUpdateCalculatedDataByData(s, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart(), this.hasError = !1;
|
|
87
88
|
} catch (o) {
|
|
88
89
|
this.hasError = !0, o instanceof Error && (this.chartRenderer.renderError(o.message), console.error(o));
|
|
89
90
|
}
|
|
@@ -92,103 +93,103 @@ class At extends T {
|
|
|
92
93
|
console.warn("no chart state for discrete");
|
|
93
94
|
}
|
|
94
95
|
export() {
|
|
95
|
-
return this._updateChart(),
|
|
96
|
+
return this._updateChart(), O(this.chartRenderer.component);
|
|
96
97
|
}
|
|
97
98
|
_needUpdateCalculatedDataBySettings(e, t) {
|
|
98
|
-
var o, s,
|
|
99
|
-
return e.chartSettings.yAxis.scale !== t.chartSettings.yAxis.scale || (((o = e.primaryGrouping) == null ? void 0 : o.columnName.value) ?? "") !== (((s = t.primaryGrouping) == null ? void 0 : s.columnName.value) ?? "") || (((
|
|
100
|
-
var
|
|
101
|
-
return
|
|
102
|
-
}) || e.layers.length !== t.layers.length || e.layers.some((
|
|
99
|
+
var o, s, l, h, r, c, d, m, L, f, p, i;
|
|
100
|
+
return e.chartSettings.yAxis.scale !== t.chartSettings.yAxis.scale || (((o = e.primaryGrouping) == null ? void 0 : o.columnName.value) ?? "") !== (((s = t.primaryGrouping) == null ? void 0 : s.columnName.value) ?? "") || (((l = e.secondaryGrouping) == null ? void 0 : l.columnName.value) ?? "") !== (((h = t.secondaryGrouping) == null ? void 0 : h.columnName.value) ?? "") || (((r = e.primaryGrouping) == null ? void 0 : r.allowNullGroup) ?? "") !== (((c = t.primaryGrouping) == null ? void 0 : c.allowNullGroup) ?? "") || (((d = e.secondaryGrouping) == null ? void 0 : d.allowNullGroup) ?? "") !== (((m = t.secondaryGrouping) == null ? void 0 : m.allowNullGroup) ?? "") || k((L = e.primaryGrouping) == null ? void 0 : L.order, (f = t.primaryGrouping) == null ? void 0 : f.order, { ignoreOrder: !0 }) || k((p = e.secondaryGrouping) == null ? void 0 : p.order, (i = t.secondaryGrouping) == null ? void 0 : i.order, { ignoreOrder: !0 }) || e.facetBy.some((y, g) => {
|
|
101
|
+
var w;
|
|
102
|
+
return y.value !== ((w = t.facetBy[g]) == null ? void 0 : w.value);
|
|
103
|
+
}) || e.layers.length !== t.layers.length || e.layers.some((y, g) => !y.isEqualForCalculation(t.layers[g]));
|
|
103
104
|
}
|
|
104
105
|
_needUpdateCalculatedDataByData(e, t) {
|
|
105
106
|
const o = Object.keys(e.data), s = Object.keys(t.data);
|
|
106
|
-
return e.id !== t.id || o.length !== s.length || o.some((
|
|
107
|
+
return e.id !== t.id || o.length !== s.length || o.some((l) => {
|
|
107
108
|
var h;
|
|
108
|
-
return e.data[
|
|
109
|
+
return e.data[l].length !== ((h = t.data[l]) == null ? void 0 : h.length);
|
|
109
110
|
});
|
|
110
111
|
}
|
|
111
112
|
_updateData() {
|
|
112
|
-
const { chartSettings: e, y: t, keyColumn: o, facetBy: s, layers:
|
|
113
|
-
if (!f && d.keys.length >
|
|
113
|
+
const { chartSettings: e, y: t, keyColumn: o, facetBy: s, layers: l, facetSettings: h } = this.settings, { yAxis: r } = e, c = this.data.getColumn(t.value).every((a) => a === null || !(Number(a) < 0)), d = E(this.data, this.settings.primaryGrouping), m = E(this.data, this.settings.secondaryGrouping), L = s.map((a) => a.value), f = l.some((a) => a.type === "logo" || a.type === "bar");
|
|
114
|
+
if (!f && d.keys.length > S)
|
|
114
115
|
throw Error(`Too many primary groups (${d.keys.length})`);
|
|
115
|
-
if (!f && m.keys.length >
|
|
116
|
+
if (!f && m.keys.length > S)
|
|
116
117
|
throw Error(`Too many secondary groups (${m.keys.length})`);
|
|
117
|
-
const p = s.length ?
|
|
118
|
+
const p = s.length ? A(
|
|
118
119
|
s.map((a) => {
|
|
119
|
-
var
|
|
120
|
-
return
|
|
120
|
+
var D;
|
|
121
|
+
return b(this.data, a, (D = h == null ? void 0 : h.order) == null ? void 0 : D[a.value]);
|
|
121
122
|
})
|
|
122
123
|
) : [[C]];
|
|
123
124
|
if (p.length > U)
|
|
124
125
|
throw Error(`Too many facets (${p.length})`);
|
|
125
|
-
this.data.setGrouping([...
|
|
126
|
-
const
|
|
126
|
+
this.data.setGrouping([...L, d.value, m.value]);
|
|
127
|
+
const i = {
|
|
127
128
|
facet: p,
|
|
128
129
|
primary: d.value !== null ? d.keys : [C],
|
|
129
130
|
secondary: m.value !== null ? m.keys : [C]
|
|
130
|
-
},
|
|
131
|
-
(
|
|
132
|
-
).map(String), a), {}),
|
|
133
|
-
if (a instanceof O)
|
|
134
|
-
return Q(a, c, this.data, t, o, r);
|
|
131
|
+
}, y = i.facet.reduce((a, D) => (a[v(D)] = i.primary.filter(
|
|
132
|
+
(R) => this.data.getRowsByGrouping([...D, R]).length > 0
|
|
133
|
+
).map(String), a), {}), g = l.filter((a) => !(a instanceof B)).map((a) => {
|
|
135
134
|
if (a instanceof I)
|
|
136
|
-
return W(a,
|
|
135
|
+
return W(a, i, this.data, t, o, r);
|
|
137
136
|
if (a instanceof F)
|
|
138
|
-
return
|
|
137
|
+
return Y(a, i, this.data, t, r);
|
|
139
138
|
if (a instanceof V)
|
|
140
|
-
return tt(a,
|
|
139
|
+
return tt(a, i, this.data, t, r, o);
|
|
141
140
|
if (a instanceof $)
|
|
142
|
-
return at(a,
|
|
141
|
+
return at(a, i, this.data, t, r);
|
|
143
142
|
if (a instanceof j)
|
|
144
|
-
return et(a,
|
|
143
|
+
return et(a, i, this.data, t, r);
|
|
145
144
|
if (a instanceof H)
|
|
146
|
-
return rt(a,
|
|
145
|
+
return rt(a, i, this.data, t, r);
|
|
147
146
|
if (a instanceof M)
|
|
148
|
-
return ot(a,
|
|
147
|
+
return ot(a, i, this.data, t);
|
|
149
148
|
if (a instanceof X)
|
|
150
|
-
return nt(a,
|
|
149
|
+
return nt(a, i, this.data, t);
|
|
151
150
|
if (a instanceof q)
|
|
152
|
-
return
|
|
151
|
+
return it(a, i, this.data, t, r);
|
|
153
152
|
if (a instanceof z)
|
|
154
|
-
return
|
|
153
|
+
return st(a, i, this.data, t, r);
|
|
155
154
|
if (a instanceof J)
|
|
156
|
-
return
|
|
155
|
+
return Z(a, i, this.data, t, r);
|
|
156
|
+
if (a instanceof Q)
|
|
157
|
+
return lt(a, i, this.data, t);
|
|
157
158
|
throw new Error("Unknown layer type");
|
|
158
|
-
}),
|
|
159
|
+
}), w = l.filter((a) => a instanceof B).map((a) => {
|
|
159
160
|
if (d.value === null)
|
|
160
161
|
throw new Error("Cannot calculate p-value without data grouping");
|
|
161
|
-
return
|
|
162
|
+
return ut(a, i.facet, i.primary, t, this.data);
|
|
162
163
|
});
|
|
163
164
|
this.calculatedData = {
|
|
164
|
-
layersData:
|
|
165
|
-
statsLayersData:
|
|
165
|
+
layersData: g,
|
|
166
|
+
statsLayersData: w,
|
|
166
167
|
primaryGrouping: d,
|
|
167
168
|
secondaryGrouping: m,
|
|
168
169
|
facetKeyLists: p,
|
|
169
|
-
nonEmptyGroupsByFacets:
|
|
170
|
-
onlyPositive:
|
|
170
|
+
nonEmptyGroupsByFacets: y,
|
|
171
|
+
onlyPositive: c
|
|
171
172
|
};
|
|
172
173
|
}
|
|
173
174
|
_updateAesInData() {
|
|
174
175
|
if (this.calculatedData === null)
|
|
175
176
|
return;
|
|
176
|
-
const { layers: e, facetBy: t, primaryGrouping: o, secondaryGrouping: s, facetSettings:
|
|
177
|
+
const { layers: e, facetBy: t, primaryGrouping: o, secondaryGrouping: s, facetSettings: l } = this.settings, h = e.filter((r) => !(r instanceof B));
|
|
177
178
|
for (let r = 0; r < h.length; r++) {
|
|
178
|
-
const
|
|
179
|
-
"aes" in
|
|
179
|
+
const c = h[r];
|
|
180
|
+
"aes" in c && (this.calculatedData.layersData[r].aes = c.aes);
|
|
180
181
|
}
|
|
181
|
-
this.calculatedData.primaryGrouping =
|
|
182
|
+
this.calculatedData.primaryGrouping = E(this.data, o), this.calculatedData.secondaryGrouping = E(this.data, s), this.calculatedData.facetKeyLists = t.length ? A(
|
|
182
183
|
t.map((r) => {
|
|
183
|
-
var
|
|
184
|
-
return
|
|
184
|
+
var c;
|
|
185
|
+
return b(this.data, r, (c = l == null ? void 0 : l.order) == null ? void 0 : c[r.value]);
|
|
185
186
|
})
|
|
186
187
|
) : [[C]];
|
|
187
188
|
}
|
|
188
189
|
_updateChart() {
|
|
189
190
|
if (!this.calculatedData)
|
|
190
191
|
return;
|
|
191
|
-
const { id: e, chartSettings: t, keyColumn: o, facetSettings: s } = this.settings,
|
|
192
|
+
const { id: e, chartSettings: t, keyColumn: o, facetSettings: s } = this.settings, l = this.calculatedData.facetKeyLists.map(v), h = this.calculatedData.facetKeyLists.map((r) => r.map((c) => c === C ? "null" : c));
|
|
192
193
|
this.chartRenderer.render(
|
|
193
194
|
this.data,
|
|
194
195
|
e,
|
|
@@ -196,7 +197,7 @@ class At extends T {
|
|
|
196
197
|
this.calculatedData.primaryGrouping,
|
|
197
198
|
this.calculatedData.secondaryGrouping,
|
|
198
199
|
s,
|
|
199
|
-
|
|
200
|
+
l,
|
|
200
201
|
h,
|
|
201
202
|
this.calculatedData.layersData,
|
|
202
203
|
this.calculatedData.statsLayersData,
|
|
@@ -208,6 +209,6 @@ class At extends T {
|
|
|
208
209
|
}
|
|
209
210
|
}
|
|
210
211
|
export {
|
|
211
|
-
|
|
212
|
+
Kt as ChartDiscrete
|
|
212
213
|
};
|
|
213
214
|
//# 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 type { Category, ColumnName, DataValue, DiscreteEventHandlers, DiscreteSettings, GroupingData } 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';\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 } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\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 } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\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 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 const hasLogoOrBarLayer = layers.some(l => l.type === 'logo' || l.type === 'bar');\n\n if (!hasLogoOrBarLayer && primaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n throw Error(`Too many primary groups (${primaryGrouping.keys.length})`);\n }\n if (!hasLogoOrBarLayer && secondaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n throw Error(`Too many secondary groups (${secondaryGrouping.keys.length})`);\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 throw Error(`Too many facets (${facetKeyLists.length})`);\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","previousSettings","previousData","_field","_value","renderToString","prevSettings","_a","_b","_c","_d","_e","_f","_g","_h","el","idx","l","prevData","prevKeys","chartSettings","y","keyColumn","facetBy","layers","facetSettings","yAxis","onlyPositive","v","primaryGrouping","secondaryGrouping","facetGroupingValues","hasLogoOrBarLayer","MAX_GROUPS_COUNT","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":"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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';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame, GroupKey } from '../DataFrame';\nimport { NO_GROUPED } from '../DataFrame';\nimport type { Category, ColumnName, DataValue, DiscreteEventHandlers, DiscreteSettings, GroupingData } 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 } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\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 } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\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 const hasLogoOrBarLayer = layers.some(l => l.type === 'logo' || l.type === 'bar');\n\n if (!hasLogoOrBarLayer && primaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n throw Error(`Too many primary groups (${primaryGrouping.keys.length})`);\n }\n if (!hasLogoOrBarLayer && secondaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n throw Error(`Too many secondary groups (${secondaryGrouping.keys.length})`);\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 throw Error(`Too many facets (${facetKeyLists.length})`);\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","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","hasLogoOrBarLayer","MAX_GROUPS_COUNT","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":";;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,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,EAAC,MAAM,GAAA;AAAA,MACpB,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,6BAA2C,MAAA;AAAA;AAC3C,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;AAAA,IACpB,SAASC,GAAK;AACV,WAAK,WAAW,IACZA,aAAe,UACf,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,YAAMO,IAAmB,KAAK,UACxBC,IAAe,KAAK;AAC1B,WAAK,WAAW,IAAIJ,EAAqBJ,CAAQ,GACjD,KAAK,OAAOvB,GAER,KAAK,oCAAoC8B,GAAkB,KAAK,QAAQ,KACxE,KAAK,gCAAgCC,GAAc,KAAK,IAAI,IAE5D,KAAK,YAAA,IAEL,KAAK,iBAAA,GAET,KAAK,aAAA,GACL,KAAK,WAAW;AAAA,IACpB,SAASF,GAAK;AACV,WAAK,WAAW,IACZA,aAAe,UACf,KAAK,cAAc,YAAYA,EAAI,OAAiB,GACpD,QAAQ,MAAMA,CAAG;AAAA,IAEzB;AAAA,EACJ;AAAA,EAEA,iBAAiBG,GAAgBC,GAAiB;AAC9C,YAAQ,KAAK,6BAA6B;AAAA,EAC9C;AAAA,EAEA,SAAiB;AACb,gBAAK,aAAA,GACEC,EAAe,KAAK,cAAc,SAAS;AAAA,EACtD;AAAA,EAEA,oCAAoCC,GAAoCZ,GAAgC;;AACpG,WACIY,EAAa,cAAc,MAAM,UAAUZ,EAAS,cAAc,MAAM,YACvEa,IAAAD,EAAa,oBAAb,gBAAAC,EAA8B,WAAW,UAAS,WAC9CC,IAAAd,EAAS,oBAAT,gBAAAc,EAA0B,WAAW,UAAS,UAClDC,IAAAH,EAAa,sBAAb,gBAAAG,EAAgC,WAAW,UAAS,WAChDC,IAAAhB,EAAS,sBAAT,gBAAAgB,EAA4B,WAAW,UAAS,UACpDC,IAAAL,EAAa,oBAAb,gBAAAK,EAA8B,mBAAkB,WAC5CC,IAAAlB,EAAS,oBAAT,gBAAAkB,EAA0B,mBAAkB,UAChDC,IAAAP,EAAa,sBAAb,gBAAAO,EAAgC,mBAAkB,WAC9CC,IAAApB,EAAS,sBAAT,gBAAAoB,EAA4B,mBAAkB,OACnDC,GAAmBC,IAAAV,EAAa,oBAAb,gBAAAU,EAA8B,QAAOC,IAAAvB,EAAS,oBAAT,gBAAAuB,EAA0B,OAAO,EAAC,aAAa,IAAK,KAC5GF,GAAmBG,IAAAZ,EAAa,sBAAb,gBAAAY,EAAgC,QAAOC,IAAAzB,EAAS,sBAAT,gBAAAyB,EAA4B,OAAO,EAAC,aAAa,GAAA,CAAK,KAChHb,EAAa,QAAQ,KAAK,CAACc,GAAIC,MAAA;;AAAQ,aAAAD,EAAG,YAAUb,IAAAb,EAAS,QAAQ2B,CAAG,MAApB,gBAAAd,EAAuB;AAAA,KAAK,KAChFD,EAAa,OAAO,WAAWZ,EAAS,OAAO,UAC/CY,EAAa,OAAO,KAAK,CAACgB,GAAGD,MAAQ,CAACC,EAAE,sBAAsB5B,EAAS,OAAO2B,CAAG,CAAa,CAAC;AAAA,EAEvG;AAAA,EAEA,gCAAgCE,GAAqBpD,GAAiB;AAClE,UAAMqD,IAAW,OAAO,KAAKD,EAAS,IAAI,GACpC3C,IAAO,OAAO,KAAKT,EAAK,IAAI;AAClC,WACIoD,EAAS,OAAOpD,EAAK,MACrBqD,EAAS,WAAW5C,EAAK,UACzB4C,EAAS,KAAK;;AAAO,aAAAD,EAAS,KAAKzC,CAAG,EAAE,aAAWyB,IAAApC,EAAK,KAAKW,CAAG,MAAb,gBAAAyB,EAAgB;AAAA,KAAM;AAAA,EAEjF;AAAA,EAEA,cAAc;AACV,UAAM,EAAC,eAAAkB,GAAe,GAAAC,GAAG,WAAAC,GAAW,SAAAC,GAAS,QAAAC,GAAQ,eAAAC,MAAiB,KAAK,UACrE,EAAC,OAAAC,MAASN,GAEVO,IAAe,KAAK,KAAK,UAAUN,EAAE,KAAK,EAAE,MAAM,CAAAO,MAC7CA,MAAM,QAAQ,EAAE,OAAOA,CAAC,IAAI,EACtC,GAGKC,IAAkBlD,EAAgB,KAAK,MAAM,KAAK,SAAS,eAAe,GAC1EmD,IAAoBnD,EAAgB,KAAK,MAAM,KAAK,SAAS,iBAAiB,GAC9EoD,IAAsBR,EAAQ,IAAI,CAAAxD,MAAUA,EAAO,KAAK,GACxDiE,IAAoBR,EAAO,KAAK,CAAAP,MAAKA,EAAE,SAAS,UAAUA,EAAE,SAAS,KAAK;AAEhF,QAAI,CAACe,KAAqBH,EAAgB,KAAK,SAASI;AACpD,YAAM,MAAM,4BAA4BJ,EAAgB,KAAK,MAAM,GAAG;AAE1E,QAAI,CAACG,KAAqBF,EAAkB,KAAK,SAASG;AACtD,YAAM,MAAM,8BAA8BH,EAAkB,KAAK,MAAM,GAAG;AAK9E,UAAMI,IAA+BX,EAAQ,SACvCnD;AAAA,MACImD,EAAQ,IAAI,CAAAxD,MAAA;;AAAU,eAAAF,EAAgB,KAAK,MAAME,IAAQmC,IAAAuB,KAAA,gBAAAA,EAAe,UAAf,gBAAAvB,EAAuBnC,EAAO,MAAM;AAAA,OAAC;AAAA,IAAA,IAElG,CAAC,CAACoE,CAAU,CAAC;AAEnB,QAAID,EAAc,SAASE;AACvB,YAAM,MAAM,oBAAoBF,EAAc,MAAM,GAAG;AAE3D,SAAK,KAAK,YAAY,CAAC,GAAGH,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,CAACnD,GAA+BqD,OACrFrD,EAAIsD,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,GACLvD,IACR,CAAA,CAAE,GAECwD,IAAalB,EACd,OAAO,CAAAmB,MAAS,EAAEA,aAAiBC,EAAU,EAC7C,IAAI,CAAAD,MAAS;AACV,UAAIA,aAAiBE;AACjB,eAAOC,EAAaH,GAAON,GAAc,KAAK,MAAMhB,GAAGC,GAAWI,CAAK;AAE3E,UAAIiB,aAAiBI;AACjB,eAAOC,EAAeL,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,EAAYvB,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,EAAC,QAAAH,GAAQ,SAAAD,GAAS,iBAAAM,GAAiB,mBAAAC,GAAmB,eAAAL,EAAA,IAAiB,KAAK,UAG5E8C,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,kBAAkBhE,EAAgB,KAAK,MAAMkD,CAAe,GAChF,KAAK,eAAe,oBAAoBlD,EAAgB,KAAK,MAAMmD,CAAiB,GAGpF,KAAK,eAAe,gBAAgBP,EAAQ,SACtCnD;AAAA,MACImD,EAAQ,IAAI,CAAAxD,MAAA;;AAAU,eAAAF,EAAgB,KAAK,MAAME,IAAQmC,IAAAuB,KAAA,gBAAAA,EAAe,UAAf,gBAAAvB,EAAuBnC,EAAO,MAAM;AAAA,OAAC;AAAA,IAAA,IAElG,CAAC,CAACoE,CAAU,CAAC;AAAA,EACvB;AAAA,EAEA,eAAe;AACX,QAAI,CAAC,KAAK;AACN;AAEJ,UAAM,EAAC,IAAAsC,GAAI,eAAArD,GAAe,WAAAE,GAAW,eAAAG,EAAA,IAAiB,KAAK,UAErDiD,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;"}
|
|
@@ -44,6 +44,7 @@ declare class ChartRenderer {
|
|
|
44
44
|
notCalculatedProps: Partial<SVGLayerProps>;
|
|
45
45
|
allDots: Dot[];
|
|
46
46
|
visibleLabels: Label[];
|
|
47
|
+
dataFrame: DataFrame;
|
|
47
48
|
clear(): void;
|
|
48
49
|
init(node: HTMLElement): void;
|
|
49
50
|
updateChartSizes(size: ScatterplotUmapSettingsImpl['chartSettings']['size']): void;
|
|
@@ -52,8 +53,8 @@ declare class ChartRenderer {
|
|
|
52
53
|
createMainTitle(title: ScatterplotUmapSettingsImpl['chartSettings']['title']): void;
|
|
53
54
|
updateMargins(): void;
|
|
54
55
|
updateLegendSize(legend: ScatterplotUmapSettingsImpl['chartSettings']['legend'], legendLabels: ScatterplotUmapLegendInfo, grouping: ColumnName[], layers: ScatterplotUmapLayer[]): void;
|
|
55
|
-
initSettings(
|
|
56
|
-
updateAes(
|
|
56
|
+
initSettings(dots: Dot[], chartSettings: ScatterplotUmapSettingsImpl['chartSettings'], dotExtents: DotsExtents, legendInfo: ScatterplotUmapLegendInfo, layers: ScatterplotUmapSettingsImpl['layers'], grouping: ColumnName[]): void;
|
|
57
|
+
updateAes(legendInfo: ScatterplotUmapLegendInfo, layers: ScatterplotUmapSettingsImpl['layers']): void;
|
|
57
58
|
updatePointSize(): void;
|
|
58
59
|
updateByLasso(): void;
|
|
59
60
|
createQuadtree(dots: Dot[]): KDBush;
|
|
@@ -62,7 +63,7 @@ declare class ChartRenderer {
|
|
|
62
63
|
render(dataFrame: DataFrame, settingsId: string, chartSettings: ScatterplotUmapSettingsImpl['chartSettings'], keyColumn: ColumnName | null, dots: Dot[], dotExtents: DotsExtents, dotsByGrouping: Record<string, Dot[]>, layers: ScatterplotUmapSettingsImpl['layers'], legendInfo: ScatterplotUmapLegendInfo, grouping: ColumnName[], onPolygonUpdateOutside: ScatterplotEventHandlers['onPolygonUpdate'], onTooltipHintSwitch: (v: boolean) => void, onLassoControlsStateUpdate: (v: LassoControlsState) => void): void;
|
|
63
64
|
renderWebglLayer(): void;
|
|
64
65
|
onPolygonUpdate: (p: Polygon[]) => void;
|
|
65
|
-
renderSvgLayer(
|
|
66
|
+
renderSvgLayer(): void;
|
|
66
67
|
renderError(message: string): void;
|
|
67
68
|
private computeLabels;
|
|
68
69
|
private updateLabelsPosition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartRenderer.d.ts","sourceRoot":"","sources":["../../src/scatterplot-umap/ChartRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,KAAK,EAAe,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,KAAK,EAAc,UAAU,EAAc,MAAM,iBAAiB,CAAC;AAY1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAEnE,OAAO,KAAK,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAErE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAM3E,OAAO,KAAK,EAAyB,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC/G,OAAO,KAAK,EACR,UAAU,EACV,aAAa,EACb,WAAW,EAAE,UAAU,EACvB,GAAG,EACH,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,OAAO,EACP,aAAa,EAChB,MAAM,SAAS,CAAC;AAQjB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,
|
|
1
|
+
{"version":3,"file":"ChartRenderer.d.ts","sourceRoot":"","sources":["../../src/scatterplot-umap/ChartRenderer.tsx"],"names":[],"mappings":"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"}
|