@milaboratories/miplots4 1.0.158 → 1.0.159

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.
@@ -1,6 +1,6 @@
1
1
  var J = Object.defineProperty;
2
- var Q = (y, i, a) => i in y ? J(y, i, { enumerable: !0, configurable: !0, writable: !0, value: a }) : y[i] = a;
3
- var f = (y, i, a) => Q(y, typeof i != "symbol" ? i + "" : i, a);
2
+ var Q = (D, d, a) => d in D ? J(D, d, { enumerable: !0, configurable: !0, writable: !0, value: a }) : D[d] = a;
3
+ var y = (D, d, a) => Q(D, typeof d != "symbol" ? d + "" : d, a);
4
4
  import { s as W } from "../_virtual/server.browser.js";
5
5
  import { AbstractChart as Z } from "../AbstractChart.js";
6
6
  import { getUnknownErrorInfo as P, isErrorInfo as K } from "../types/common.js";
@@ -10,24 +10,24 @@ import "../types/heatmap.js";
10
10
  import "../types/dendro.js";
11
11
  import "../types/histogram.js";
12
12
  import "../types/bubble.js";
13
- import { isColumnName as X } from "../utils/index.js";
13
+ import { isColumnName as B } from "../utils/index.js";
14
14
  import $ from "./ChartRenderer.js";
15
15
  import { getCells as aa } from "./getCells.js";
16
16
  import { getDendrograms as ta } from "./getDendrograms.js";
17
17
  import { HeatmapSettingsImpl as q } from "./HeatmapSettingsImpl.js";
18
18
  import { MAX_SVG_RENDERED_CELLS_COUNT as ea } from "./constants.js";
19
- import { l as w } from "../_virtual/lodash.js";
19
+ import { l as Y } from "../_virtual/lodash.js";
20
20
  import { MAX_FACETS_COUNT as z } from "../constants.js";
21
- class xa extends Z {
21
+ class _a extends Z {
22
22
  constructor(a, t, e) {
23
23
  super(a, t);
24
- f(this, "settings");
25
- f(this, "chartRenderer", new $());
26
- f(this, "onTooltipHintSwitch", w.noop);
27
- f(this, "onLoadingChange", w.noop);
28
- f(this, "calculatedData", null);
29
- f(this, "clusteringCalculationsInProgress", !1);
30
- this.settings = new q(t), e && (this.onTooltipHintSwitch = e.onTooltipHintSwitch ?? w.noop, this.onLoadingChange = e.onLoadingChange ?? w.noop);
24
+ y(this, "settings");
25
+ y(this, "chartRenderer", new $());
26
+ y(this, "onTooltipHintSwitch", Y.noop);
27
+ y(this, "onLoadingChange", Y.noop);
28
+ y(this, "calculatedData", null);
29
+ y(this, "clusteringCalculationsInProgress", !1);
30
+ this.settings = new q(t), e && (this.onTooltipHintSwitch = e.onTooltipHintSwitch ?? Y.noop, this.onLoadingChange = e.onLoadingChange ?? Y.noop);
31
31
  }
32
32
  mount(a) {
33
33
  try {
@@ -41,8 +41,8 @@ class xa extends Z {
41
41
  }
42
42
  updateSettingsAndData(a, t) {
43
43
  try {
44
- const e = this.settings, l = this.data;
45
- this.settings = new q(t), this.data = a, this._needUpdateCalculatedDataBySettings(e, this.settings) || this._needUpdateCalculatedDataByData(l, this.data) ? this._updateData() : this._updateAesInData(), this.hasError = !1, this.errorInfo = null;
44
+ const e = this.settings, i = this.data;
45
+ this.settings = new q(t), this.data = a, this._needUpdateCalculatedDataBySettings(e, this.settings) || this._needUpdateCalculatedDataByData(i, this.data) ? this._updateData() : this._updateAesInData(), this.hasError = !1, this.errorInfo = null;
46
46
  } catch (e) {
47
47
  this.hasError = !0, e instanceof Error && (this.errorInfo = K(e.cause) ? e.cause : P(e), this.chartRenderer.renderError(e.message), console.error(e));
48
48
  }
@@ -54,40 +54,40 @@ class xa extends Z {
54
54
  return this._updateChart(), W.renderToString(this.chartRenderer.component);
55
55
  }
56
56
  _needUpdateCalculatedDataBySettings(a, t) {
57
- var h, G, R, Y, O, T, k, N, U, b, v, L, j, V, M;
57
+ var c, I, b, G, R, O, T, v, k, N, U, L, j, V, M;
58
58
  const {
59
59
  xColumn: e,
60
- yColumn: l,
61
- valueColumn: d,
62
- xGroupBy: u,
60
+ yColumn: i,
61
+ valueColumn: u,
62
+ xGroupBy: n,
63
63
  yGroupBy: m,
64
64
  facetBy: x,
65
65
  annotations: E,
66
- chartSettings: D,
66
+ chartSettings: g,
67
67
  facetSettings: o,
68
- dendrogramX: g,
68
+ dendrogramX: f,
69
69
  dendrogramY: C,
70
- normalization: n,
70
+ normalization: s,
71
71
  aggregation: r,
72
- NAValueAs: c
73
- } = t, A = Object.values(((h = a.dendrogramX) == null ? void 0 : h.aes) || {}).filter(
74
- X
75
- ), B = Object.values((g == null ? void 0 : g.aes) || {}).filter(X), p = Object.values(((G = a.dendrogramY) == null ? void 0 : G.aes) || {}).filter(
76
- X
77
- ), I = Object.values((C == null ? void 0 : C.aes) || {}).filter(X);
78
- function s(_, H) {
72
+ NAValueAs: h
73
+ } = t, X = Object.values(((c = a.dendrogramX) == null ? void 0 : c.aes) || {}).filter(
74
+ B
75
+ ), w = Object.values((f == null ? void 0 : f.aes) || {}).filter(B), p = Object.values(((I = a.dendrogramY) == null ? void 0 : I.aes) || {}).filter(
76
+ B
77
+ ), A = Object.values((C == null ? void 0 : C.aes) || {}).filter(B);
78
+ function l(_, H) {
79
79
  return _.length !== H.length || _.some((F, S) => F.value !== H[S].value);
80
80
  }
81
- return a.xColumn.value !== e.value || a.yColumn.value !== l.value || a.valueColumn.value !== d.value || s(a.xGroupBy, u) || s(a.yGroupBy, m) || s(a.facetBy, x) || s(
81
+ return a.xColumn.value !== e.value || a.yColumn.value !== i.value || a.valueColumn.value !== u.value || l(a.xGroupBy, n) || l(a.yGroupBy, m) || l(a.facetBy, x) || l(
82
82
  a.annotations.map((_) => _.valueColumn),
83
83
  E.map((_) => _.valueColumn)
84
- ) || s(A, B) || s(p, I) || (t.dendrogramX || a.dendrogramX) && (((R = a.dendrogramX) == null ? void 0 : R.distance) !== ((Y = t.dendrogramX) == null ? void 0 : Y.distance) || ((O = a.dendrogramX) == null ? void 0 : O.linkage) !== ((T = t.dendrogramX) == null ? void 0 : T.linkage)) || (t.dendrogramY || a.dendrogramY) && (((k = a.dendrogramY) == null ? void 0 : k.distance) !== ((N = t.dendrogramY) == null ? void 0 : N.distance) || ((U = a.dendrogramY) == null ? void 0 : U.linkage) !== ((b = t.dendrogramY) == null ? void 0 : b.linkage)) || a.chartSettings.valueType !== D.valueType || a.facetSettings.sharedX !== o.sharedX || a.facetSettings.sharedY !== o.sharedY || ((v = a.normalization) == null ? void 0 : v.method) !== (n == null ? void 0 : n.method) || ((L = a.normalization) == null ? void 0 : L.direction) !== (n == null ? void 0 : n.direction) || a.NAValueAs !== c || ((j = a.aggregation) == null ? void 0 : j.method) !== (r == null ? void 0 : r.method) || ((V = a.aggregation) == null ? void 0 : V.x) !== (r == null ? void 0 : r.x) || ((M = a.aggregation) == null ? void 0 : M.y) !== (r == null ? void 0 : r.y);
84
+ ) || l(X, w) || l(p, A) || (t.dendrogramX || a.dendrogramX) && (((b = a.dendrogramX) == null ? void 0 : b.distance) !== ((G = t.dendrogramX) == null ? void 0 : G.distance) || ((R = a.dendrogramX) == null ? void 0 : R.linkage) !== ((O = t.dendrogramX) == null ? void 0 : O.linkage)) || (t.dendrogramY || a.dendrogramY) && (((T = a.dendrogramY) == null ? void 0 : T.distance) !== ((v = t.dendrogramY) == null ? void 0 : v.distance) || ((k = a.dendrogramY) == null ? void 0 : k.linkage) !== ((N = t.dendrogramY) == null ? void 0 : N.linkage)) || a.chartSettings.valueType !== g.valueType || a.facetSettings.sharedX !== o.sharedX || a.facetSettings.sharedY !== o.sharedY || ((U = a.normalization) == null ? void 0 : U.method) !== (s == null ? void 0 : s.method) || ((L = a.normalization) == null ? void 0 : L.direction) !== (s == null ? void 0 : s.direction) || a.NAValueAs !== h || ((j = a.aggregation) == null ? void 0 : j.method) !== (r == null ? void 0 : r.method) || ((V = a.aggregation) == null ? void 0 : V.x) !== (r == null ? void 0 : r.x) || ((M = a.aggregation) == null ? void 0 : M.y) !== (r == null ? void 0 : r.y);
85
85
  }
86
86
  _needUpdateCalculatedDataByData(a, t) {
87
- const e = Object.keys(a.data), l = Object.keys(t.data);
88
- return a.id !== t.id || e.length !== l.length || e.some((d) => {
89
- var u;
90
- return a.data[d].length !== ((u = t.data[d]) == null ? void 0 : u.length);
87
+ const e = Object.keys(a.data), i = Object.keys(t.data);
88
+ return a.id !== t.id || e.length !== i.length || e.some((u) => {
89
+ var n;
90
+ return a.data[u].length !== ((n = t.data[u]) == null ? void 0 : n.length);
91
91
  });
92
92
  }
93
93
  async _updateData() {
@@ -95,109 +95,113 @@ class xa extends Z {
95
95
  xColumn: a,
96
96
  yColumn: t,
97
97
  valueColumn: e,
98
- xGroupBy: l,
99
- yGroupBy: d,
100
- facetBy: u,
98
+ xGroupBy: i,
99
+ yGroupBy: u,
100
+ facetBy: n,
101
101
  chartSettings: m,
102
102
  facetSettings: x,
103
103
  annotations: E,
104
- dendrogramX: D,
104
+ dendrogramX: g,
105
105
  dendrogramY: o,
106
- normalization: g,
106
+ normalization: f,
107
107
  NAValueAs: C,
108
- keysOrder: n,
108
+ keysOrder: s,
109
109
  aggregation: r
110
- } = this.settings, c = aa(
110
+ } = this.settings, h = aa(
111
111
  this.data,
112
112
  a,
113
113
  t,
114
114
  { dataSource: e },
115
+ n,
116
+ i,
115
117
  u,
116
- l,
117
- d,
118
118
  E,
119
- D,
120
- o,
121
119
  g,
120
+ o,
121
+ f,
122
122
  C,
123
- n,
123
+ s,
124
124
  m.xAxis,
125
125
  m.yAxis,
126
126
  r
127
127
  );
128
- if (c.meta.facetKeys.length > z) {
128
+ if (h.meta.facetKeys.length > z) {
129
129
  const p = {
130
130
  type: "tooManyFacets",
131
- info: { count: c.meta.facetKeys.length, maxCount: z }
131
+ info: { count: h.meta.facetKeys.length, maxCount: z }
132
132
  };
133
133
  throw Error(p.type, { cause: p });
134
134
  }
135
- const A = m.valueType === "discrete" ? this.data.getColumnCategories(e.value) : [];
135
+ const X = m.valueType === "discrete" ? this.data.getColumnCategories(e.value) : [];
136
+ if (g && x.sharedX && n.length > 0)
137
+ throw Error("Dendrogram on X axis is not available with shared by facets X axis");
138
+ if (o && x.sharedY && n.length > 0)
139
+ throw Error("Dendrogram on Y axis is not available with shared by facets Y axis");
136
140
  this.clusteringCalculationsInProgress = !0, this.onLoadingChange(!0);
137
- const B = await ta(c, D, o, x);
141
+ const w = await ta(h, g, o);
138
142
  this.clusteringCalculationsInProgress = !1, this.onLoadingChange(!1), this.calculatedData = {
139
- groupedCellsData: c,
140
- dendrogramsData: B,
141
- cellUniqValues: A
143
+ groupedCellsData: h,
144
+ dendrogramsData: w,
145
+ cellUniqValues: X
142
146
  }, this._updateChart();
143
147
  }
144
148
  _updateAesInData() {
145
149
  this._updateChart();
146
150
  }
147
151
  _updateChart() {
148
- var p, I;
152
+ var p, A;
149
153
  if (!this.calculatedData || this.clusteringCalculationsInProgress)
150
154
  return;
151
155
  const {
152
156
  id: a,
153
157
  valueColumn: t,
154
158
  chartSettings: e,
155
- facetSettings: l,
156
- aes: d,
157
- annotations: u,
159
+ facetSettings: i,
160
+ aes: u,
161
+ annotations: n,
158
162
  dendrogramX: m,
159
163
  dendrogramY: x,
160
164
  inheritedDendrogramAes: E,
161
- normalization: D,
165
+ normalization: g,
162
166
  keysOrder: o,
163
- xColumn: g,
167
+ xColumn: f,
164
168
  yColumn: C,
165
- xGroupBy: n,
169
+ xGroupBy: s,
166
170
  yGroupBy: r
167
- } = this.settings, c = {
168
- x: ((p = o[g.value]) == null ? void 0 : p.length) > 0,
169
- y: ((I = o[C.value]) == null ? void 0 : I.length) > 0,
170
- xGroup: n.some((s) => {
171
- var h;
172
- return ((h = o[s.value]) == null ? void 0 : h.length) > 0;
171
+ } = this.settings, h = {
172
+ x: ((p = o[f.value]) == null ? void 0 : p.length) > 0,
173
+ y: ((A = o[C.value]) == null ? void 0 : A.length) > 0,
174
+ xGroup: s.some((l) => {
175
+ var c;
176
+ return ((c = o[l.value]) == null ? void 0 : c.length) > 0;
173
177
  }),
174
- yGroup: r.some((s) => {
175
- var h;
176
- return ((h = o[s.value]) == null ? void 0 : h.length) > 0;
178
+ yGroup: r.some((l) => {
179
+ var c;
180
+ return ((c = o[l.value]) == null ? void 0 : c.length) > 0;
177
181
  })
178
- }, A = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0, B = this.settings.cellsRenderingMode ?? (A > ea ? "canvas" : "svg");
182
+ }, X = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0, w = this.settings.cellsRenderingMode ?? (X > ea ? "canvas" : "svg");
179
183
  this.chartRenderer.render(
180
184
  this.data,
181
185
  a,
182
186
  e,
183
- l,
184
- d,
185
- this.calculatedData.groupedCellsData,
187
+ i,
186
188
  u,
189
+ this.calculatedData.groupedCellsData,
190
+ n,
187
191
  t,
188
192
  m,
189
193
  x,
190
194
  this.calculatedData.dendrogramsData,
191
195
  E,
192
196
  this.calculatedData.cellUniqValues,
193
- D,
197
+ g,
194
198
  this.onTooltipHintSwitch,
195
- c,
196
- B
199
+ h,
200
+ w
197
201
  );
198
202
  }
199
203
  }
200
204
  export {
201
- xa as ChartHeatmap
205
+ _a as ChartHeatmap
202
206
  };
203
207
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/heatmap/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport { type ColumnName, type DataValue, type ErrorInfoFacets, getUnknownErrorInfo, type HeatmapEventHandlers, type HeatmapSettings, isErrorInfo } from '../types';\nimport { isColumnName } from '../utils';\nimport ChartRenderer from './ChartRenderer';\nimport type { GroupedCellsHeatmap } from './getCells';\nimport { getCells } from './getCells';\nimport type { DendrogramsData } from './getDendrograms';\nimport { getDendrograms } from './getDendrograms';\nimport { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\nimport { MAX_SVG_RENDERED_CELLS_COUNT } from './constants';\nimport { noop } from 'lodash';\nimport { MAX_FACETS_COUNT } from '../constants';\n\nexport class ChartHeatmap extends AbstractChart {\n settings: HeatmapSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = noop;\n onLoadingChange: (v:boolean) => void = noop;\n\n calculatedData: {\n groupedCellsData: GroupedCellsHeatmap;\n dendrogramsData: DendrogramsData;\n cellUniqValues: DataValue[];\n } | null = null;\n\n clusteringCalculationsInProgress = false;\n\n constructor(data: DataFrame, settings: HeatmapSettings, eventHandlers?:HeatmapEventHandlers) {\n super(data, settings);\n\n this.settings = new HeatmapSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers.onTooltipHintSwitch ?? noop;\n this.onLoadingChange = eventHandlers.onLoadingChange ?? noop;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\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: HeatmapSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HeatmapSettingsImpl(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.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 heatmap');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HeatmapSettingsImpl, settings: HeatmapSettingsImpl) {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n annotations,\n chartSettings,\n facetSettings,\n dendrogramX,\n dendrogramY,\n normalization,\n aggregation,\n NAValueAs,\n } = settings;\n\n const prevDendrogramXColumns: ColumnName[] = Object.values(prevSettings.dendrogramX?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramXColumns: ColumnName[] = Object.values(dendrogramX?.aes || {}).filter(isColumnName);\n const prevDendrogramYColumns: ColumnName[] = Object.values(prevSettings.dendrogramY?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramYColumns: ColumnName[] = Object.values(dendrogramY?.aes || {}).filter(isColumnName);\n\n function compareColumnGroups(columns1: ColumnName[], columns2: ColumnName[]) {\n return (\n columns1.length !== columns2.length ||\n columns1.some((column, idx) => column.value !== columns2[idx].value)\n );\n }\n\n return (\n prevSettings.xColumn.value !== xColumn.value ||\n prevSettings.yColumn.value !== yColumn.value ||\n prevSettings.valueColumn.value !== valueColumn.value ||\n compareColumnGroups(prevSettings.xGroupBy, xGroupBy) ||\n compareColumnGroups(prevSettings.yGroupBy, yGroupBy) ||\n compareColumnGroups(prevSettings.facetBy, facetBy) ||\n compareColumnGroups(\n prevSettings.annotations.map(a => a.valueColumn),\n annotations.map(a => a.valueColumn)\n ) ||\n compareColumnGroups(prevDendrogramXColumns, currentDendrogramXColumns) ||\n compareColumnGroups(prevDendrogramYColumns, currentDendrogramYColumns) ||\n ((settings.dendrogramX || prevSettings.dendrogramX) &&\n (prevSettings.dendrogramX?.distance !== settings.dendrogramX?.distance ||\n prevSettings.dendrogramX?.linkage !== settings.dendrogramX?.linkage)) ||\n ((settings.dendrogramY || prevSettings.dendrogramY) &&\n (prevSettings.dendrogramY?.distance !== settings.dendrogramY?.distance ||\n prevSettings.dendrogramY?.linkage !== settings.dendrogramY?.linkage)) ||\n prevSettings.chartSettings.valueType !== chartSettings.valueType ||\n prevSettings.facetSettings.sharedX !== facetSettings.sharedX ||\n prevSettings.facetSettings.sharedY !== facetSettings.sharedY ||\n prevSettings.normalization?.method !== normalization?.method ||\n prevSettings.normalization?.direction !== normalization?.direction ||\n prevSettings.NAValueAs !== NAValueAs ||\n prevSettings.aggregation?.method !== aggregation?.method ||\n prevSettings.aggregation?.x !== aggregation?.x ||\n prevSettings.aggregation?.y !== aggregation?.y\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 async _updateData() {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n chartSettings,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n aggregation\n } = this.settings;\n\n const groupedCellsData = getCells(\n this.data,\n xColumn,\n yColumn,\n {dataSource: valueColumn},\n facetBy,\n xGroupBy,\n yGroupBy,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n chartSettings.xAxis,\n chartSettings.yAxis,\n aggregation\n );\n\n if (groupedCellsData.meta.facetKeys.length > MAX_FACETS_COUNT) {\n const errorInfo: ErrorInfoFacets = {\n type: 'tooManyFacets',\n info: {count: groupedCellsData.meta.facetKeys.length, maxCount: MAX_FACETS_COUNT}\n };\n throw Error(errorInfo.type, {cause: errorInfo});\n }\n\n const cellUniqValues = chartSettings.valueType === 'discrete' ? this.data.getColumnCategories(valueColumn.value) : [];\n \n this.clusteringCalculationsInProgress = true;\n this.onLoadingChange(true);\n const dendrogramsData = await getDendrograms(groupedCellsData, dendrogramX, dendrogramY, facetSettings);\n this.clusteringCalculationsInProgress = false;\n this.onLoadingChange(false);\n\n this.calculatedData = {\n groupedCellsData,\n dendrogramsData,\n cellUniqValues,\n };\n \n this._updateChart();\n }\n\n _updateAesInData() {\n this._updateChart();\n }\n\n _updateChart() {\n if (!this.calculatedData || this.clusteringCalculationsInProgress) {\n return;\n }\n const {\n id,\n valueColumn,\n chartSettings,\n facetSettings,\n aes,\n annotations,\n dendrogramX,\n dendrogramY,\n inheritedDendrogramAes,\n normalization,\n keysOrder,\n xColumn,\n yColumn,\n xGroupBy,\n yGroupBy,\n } = this.settings;\n const customOrder = {\n x: keysOrder[xColumn.value]?.length > 0,\n y: keysOrder[yColumn.value]?.length > 0,\n xGroup: xGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n yGroup: yGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n };\n const dataSize = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0;\n const cellsRenderingMode = this.settings.cellsRenderingMode ?? (dataSize > MAX_SVG_RENDERED_CELLS_COUNT ? 'canvas' : 'svg');\n \n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n aes,\n this.calculatedData.groupedCellsData,\n annotations,\n valueColumn,\n dendrogramX,\n dendrogramY,\n this.calculatedData.dendrogramsData,\n inheritedDendrogramAes,\n this.calculatedData.cellUniqValues,\n normalization,\n this.onTooltipHintSwitch,\n customOrder,\n cellsRenderingMode\n );\n }\n}\n"],"names":["ChartHeatmap","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","noop","HeatmapSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","xColumn","yColumn","valueColumn","xGroupBy","yGroupBy","facetBy","annotations","chartSettings","facetSettings","dendrogramX","dendrogramY","normalization","aggregation","NAValueAs","prevDendrogramXColumns","_a","isColumnName","currentDendrogramXColumns","prevDendrogramYColumns","_b","currentDendrogramYColumns","compareColumnGroups","columns1","columns2","column","idx","a","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","prevData","prevKeys","keys","key","keysOrder","groupedCellsData","getCells","MAX_FACETS_COUNT","errorInfo","cellUniqValues","dendrogramsData","getDendrograms","id","aes","inheritedDendrogramAes","customOrder","v","dataSize","cellsRenderingMode","MAX_SVG_RENDERED_CELLS_COUNT"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/heatmap/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport { type ColumnName, type DataValue, type ErrorInfoFacets, getUnknownErrorInfo, type HeatmapEventHandlers, type HeatmapSettings, isErrorInfo } from '../types';\nimport { isColumnName } from '../utils';\nimport ChartRenderer from './ChartRenderer';\nimport type { GroupedCellsHeatmap } from './getCells';\nimport { getCells } from './getCells';\nimport type { DendrogramsData } from './getDendrograms';\nimport { getDendrograms } from './getDendrograms';\nimport { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\nimport { MAX_SVG_RENDERED_CELLS_COUNT } from './constants';\nimport { noop } from 'lodash';\nimport { MAX_FACETS_COUNT } from '../constants';\n\nexport class ChartHeatmap extends AbstractChart {\n settings: HeatmapSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = noop;\n onLoadingChange: (v:boolean) => void = noop;\n\n calculatedData: {\n groupedCellsData: GroupedCellsHeatmap;\n dendrogramsData: DendrogramsData;\n cellUniqValues: DataValue[];\n } | null = null;\n\n clusteringCalculationsInProgress = false;\n\n constructor(data: DataFrame, settings: HeatmapSettings, eventHandlers?:HeatmapEventHandlers) {\n super(data, settings);\n\n this.settings = new HeatmapSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers.onTooltipHintSwitch ?? noop;\n this.onLoadingChange = eventHandlers.onLoadingChange ?? noop;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\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: HeatmapSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HeatmapSettingsImpl(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.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 heatmap');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HeatmapSettingsImpl, settings: HeatmapSettingsImpl) {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n annotations,\n chartSettings,\n facetSettings,\n dendrogramX,\n dendrogramY,\n normalization,\n aggregation,\n NAValueAs,\n } = settings;\n\n const prevDendrogramXColumns: ColumnName[] = Object.values(prevSettings.dendrogramX?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramXColumns: ColumnName[] = Object.values(dendrogramX?.aes || {}).filter(isColumnName);\n const prevDendrogramYColumns: ColumnName[] = Object.values(prevSettings.dendrogramY?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramYColumns: ColumnName[] = Object.values(dendrogramY?.aes || {}).filter(isColumnName);\n\n function compareColumnGroups(columns1: ColumnName[], columns2: ColumnName[]) {\n return (\n columns1.length !== columns2.length ||\n columns1.some((column, idx) => column.value !== columns2[idx].value)\n );\n }\n\n return (\n prevSettings.xColumn.value !== xColumn.value ||\n prevSettings.yColumn.value !== yColumn.value ||\n prevSettings.valueColumn.value !== valueColumn.value ||\n compareColumnGroups(prevSettings.xGroupBy, xGroupBy) ||\n compareColumnGroups(prevSettings.yGroupBy, yGroupBy) ||\n compareColumnGroups(prevSettings.facetBy, facetBy) ||\n compareColumnGroups(\n prevSettings.annotations.map(a => a.valueColumn),\n annotations.map(a => a.valueColumn)\n ) ||\n compareColumnGroups(prevDendrogramXColumns, currentDendrogramXColumns) ||\n compareColumnGroups(prevDendrogramYColumns, currentDendrogramYColumns) ||\n ((settings.dendrogramX || prevSettings.dendrogramX) &&\n (prevSettings.dendrogramX?.distance !== settings.dendrogramX?.distance ||\n prevSettings.dendrogramX?.linkage !== settings.dendrogramX?.linkage)) ||\n ((settings.dendrogramY || prevSettings.dendrogramY) &&\n (prevSettings.dendrogramY?.distance !== settings.dendrogramY?.distance ||\n prevSettings.dendrogramY?.linkage !== settings.dendrogramY?.linkage)) ||\n prevSettings.chartSettings.valueType !== chartSettings.valueType ||\n prevSettings.facetSettings.sharedX !== facetSettings.sharedX ||\n prevSettings.facetSettings.sharedY !== facetSettings.sharedY ||\n prevSettings.normalization?.method !== normalization?.method ||\n prevSettings.normalization?.direction !== normalization?.direction ||\n prevSettings.NAValueAs !== NAValueAs ||\n prevSettings.aggregation?.method !== aggregation?.method ||\n prevSettings.aggregation?.x !== aggregation?.x ||\n prevSettings.aggregation?.y !== aggregation?.y\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 async _updateData() {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n chartSettings,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n aggregation\n } = this.settings;\n\n const groupedCellsData = getCells(\n this.data,\n xColumn,\n yColumn,\n {dataSource: valueColumn},\n facetBy,\n xGroupBy,\n yGroupBy,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n chartSettings.xAxis,\n chartSettings.yAxis,\n aggregation\n );\n\n if (groupedCellsData.meta.facetKeys.length > MAX_FACETS_COUNT) {\n const errorInfo: ErrorInfoFacets = {\n type: 'tooManyFacets',\n info: {count: groupedCellsData.meta.facetKeys.length, maxCount: MAX_FACETS_COUNT}\n };\n throw Error(errorInfo.type, {cause: errorInfo});\n }\n\n const cellUniqValues = chartSettings.valueType === 'discrete' ? this.data.getColumnCategories(valueColumn.value) : [];\n \n if (dendrogramX && facetSettings.sharedX && facetBy.length > 0) {\n throw Error('Dendrogram on X axis is not available with shared by facets X axis');\n }\n if (dendrogramY && facetSettings.sharedY && facetBy.length > 0) {\n throw Error('Dendrogram on Y axis is not available with shared by facets Y axis');\n }\n this.clusteringCalculationsInProgress = true;\n this.onLoadingChange(true);\n const dendrogramsData = await getDendrograms(groupedCellsData, dendrogramX, dendrogramY);\n this.clusteringCalculationsInProgress = false;\n this.onLoadingChange(false);\n\n this.calculatedData = {\n groupedCellsData,\n dendrogramsData,\n cellUniqValues,\n };\n \n this._updateChart();\n }\n\n _updateAesInData() {\n this._updateChart();\n }\n\n _updateChart() {\n if (!this.calculatedData || this.clusteringCalculationsInProgress) {\n return;\n }\n const {\n id,\n valueColumn,\n chartSettings,\n facetSettings,\n aes,\n annotations,\n dendrogramX,\n dendrogramY,\n inheritedDendrogramAes,\n normalization,\n keysOrder,\n xColumn,\n yColumn,\n xGroupBy,\n yGroupBy,\n } = this.settings;\n const customOrder = {\n x: keysOrder[xColumn.value]?.length > 0,\n y: keysOrder[yColumn.value]?.length > 0,\n xGroup: xGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n yGroup: yGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n };\n const dataSize = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0;\n const cellsRenderingMode = this.settings.cellsRenderingMode ?? (dataSize > MAX_SVG_RENDERED_CELLS_COUNT ? 'canvas' : 'svg');\n \n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n aes,\n this.calculatedData.groupedCellsData,\n annotations,\n valueColumn,\n dendrogramX,\n dendrogramY,\n this.calculatedData.dendrogramsData,\n inheritedDendrogramAes,\n this.calculatedData.cellUniqValues,\n normalization,\n this.onTooltipHintSwitch,\n customOrder,\n cellsRenderingMode\n );\n }\n}\n"],"names":["ChartHeatmap","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","noop","HeatmapSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","xColumn","yColumn","valueColumn","xGroupBy","yGroupBy","facetBy","annotations","chartSettings","facetSettings","dendrogramX","dendrogramY","normalization","aggregation","NAValueAs","prevDendrogramXColumns","_a","isColumnName","currentDendrogramXColumns","prevDendrogramYColumns","_b","currentDendrogramYColumns","compareColumnGroups","columns1","columns2","column","idx","a","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","prevData","prevKeys","keys","key","keysOrder","groupedCellsData","getCells","MAX_FACETS_COUNT","errorInfo","cellUniqValues","dendrogramsData","getDendrograms","id","aes","inheritedDendrogramAes","customOrder","v","dataSize","cellsRenderingMode","MAX_SVG_RENDERED_CELLS_COUNT"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/miplots4",
3
- "version": "1.0.158",
3
+ "version": "1.0.159",
4
4
  "description": "Data visualization library",
5
5
  "author": "erohinaelena",
6
6
  "license": "ISC",