@milaboratories/graph-maker 1.1.173 → 1.1.175

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/GraphMaker/components/LassoControls/index.vue.js +3 -2
  2. package/dist/GraphMaker/components/LassoControls/index.vue.js.map +1 -1
  3. package/dist/GraphMaker/index.vue.d.ts.map +1 -1
  4. package/dist/GraphMaker/index.vue.js +139 -133
  5. package/dist/GraphMaker/index.vue.js.map +1 -1
  6. package/dist/GraphMaker/store.d.ts +1 -0
  7. package/dist/GraphMaker/store.d.ts.map +1 -1
  8. package/dist/GraphMaker/store.js +30 -29
  9. package/dist/GraphMaker/store.js.map +1 -1
  10. package/dist/node_modules/@milaboratories/miplots4/dist/MiPlots.js +4 -4
  11. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js +214 -214
  12. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js.map +1 -1
  13. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getClusters.js +20 -163
  14. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getClusters.js.map +1 -1
  15. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getDendrograms.js +47 -35
  16. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getDendrograms.js.map +1 -1
  17. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js +82 -79
  18. package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js.map +1 -1
  19. package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/comlink/dist/esm/comlink.js +259 -0
  20. package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/comlink/dist/esm/comlink.js.map +1 -0
  21. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/ChartRenderer.js +52 -50
  22. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
  23. package/dist/node_modules/@milaboratories/miplots4/dist/types/common.js.map +1 -1
  24. package/dist/node_modules/@milaboratories/miplots4/dist/utils/WorkerFactory.js +14 -0
  25. package/dist/node_modules/@milaboratories/miplots4/dist/utils/WorkerFactory.js.map +1 -0
  26. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"getDendrograms.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/getDendrograms.ts"],"sourcesContent":["import type { Cluster } from './components/types';\nimport type { GroupedCellsHeatmap } from './getCells';\nimport type { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\nimport { getClustersApproximate } from './getClusters';\nimport type { HierarchyNode } from 'd3-hierarchy';\nimport { hierarchy } from 'd3-hierarchy';\n\nexport type DendrogramsData = Record<string, {\n hierarchyByGroupX: Record<string, HierarchyNode<Cluster>>;\n hierarchyByGroupY: Record<string, HierarchyNode<Cluster>>;\n}>\n\nconst DEBUG = false;\n\nexport function getDendrograms(\n groupedCellsData: GroupedCellsHeatmap,\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY'],\n facetSettings: HeatmapSettingsImpl['facetSettings']\n): DendrogramsData {\n const { facetKeys, xGroupKeys, yGroupKeys } = groupedCellsData.meta;\n const result: DendrogramsData = {};\n\n if (dendrogramX && facetSettings.sharedX) {\n throw Error('Dendrogram on X axis is not available with shared by facets X axis');\n }\n\n facetKeys.forEach(facetKey => {\n const facetResult: DendrogramsData[string] = {\n hierarchyByGroupX: {},\n hierarchyByGroupY: {},\n };\n const cellsGroup = groupedCellsData.facets[facetKey];\n if (DEBUG) {\n // eslint-disable-next-line no-console\n console.time('start x');\n }\n if (dendrogramX) {\n const updatedXKeys: string[] = [];\n xGroupKeys.forEach(xGroupKey => {\n const xKeys = cellsGroup.xKeysByGroups[xGroupKey];\n const yKeys = cellsGroup.yKeys;\n if(DEBUG) {\n // eslint-disable-next-line no-console\n console.log('xKeys source', xKeys.length);\n }\n const rootCluster = getClustersApproximate(\n xKeys.map(x => yKeys.map(y => (cellsGroup.cells[x][y]?.normalizedValue.dataSource ?? dendrogramX.fillNA) as number)),\n dendrogramX.distance,\n dendrogramX.linkage\n );\n if (DEBUG) {\n // eslint-disable-next-line no-console\n console.log('rootCluster', rootCluster);\n }\n //set sorted group keys\n const newXKeys = rootCluster.indexes.map(i => xKeys[i]);\n groupedCellsData.facets[facetKey].xKeysByGroups[xGroupKey] = newXKeys;\n updatedXKeys.push(...newXKeys);\n facetResult.hierarchyByGroupX[xGroupKey] = hierarchy(rootCluster);\n });\n // set sorted group keys of all groups\n groupedCellsData.facets[facetKey].xKeys = updatedXKeys;\n }\n if (DEBUG) {\n // eslint-disable-next-line no-console\n console.timeEnd('start x');\n }\n if (dendrogramY) {\n const updatedYKeys: string[] = [];\n yGroupKeys.forEach(yGroupKey => {\n const yKeys = cellsGroup.yKeysByGroups[yGroupKey];\n const xKeys = cellsGroup.xKeys;\n const rootCluster = getClustersApproximate(\n yKeys.map(y => xKeys.map(x => (cellsGroup.cells[x][y]?.normalizedValue.dataSource ?? dendrogramY.fillNA) as number)),\n dendrogramY.distance,\n dendrogramY.linkage\n );\n const newYKeys = rootCluster.indexes.map(i => yKeys[i]);\n //set sorted group keys\n groupedCellsData.facets[facetKey].yKeysByGroups[yGroupKey] = newYKeys;\n updatedYKeys.push(...newYKeys);\n facetResult.hierarchyByGroupY[yGroupKey] = hierarchy(rootCluster);\n });\n // set sorted group keys of all groups\n groupedCellsData.facets[facetKey].yKeys = updatedYKeys;\n }\n result[facetKey] = facetResult;\n });\n\n return result;\n}\n"],"names":["getDendrograms","groupedCellsData","dendrogramX","dendrogramY","facetSettings","facetKeys","xGroupKeys","yGroupKeys","result","facetKey","facetResult","cellsGroup","updatedXKeys","xGroupKey","xKeys","yKeys","rootCluster","getClustersApproximate","x","l","_a","y","newXKeys","i","hierarchy","updatedYKeys","yGroupKey","newYKeys"],"mappings":";;AAcO,SAASA,EACZC,GACAC,GACAC,GACAC,GACe;AACf,QAAM,EAAE,WAAAC,GAAW,YAAAC,GAAY,YAAAC,MAAeN,EAAiB,MACzDO,IAA0B,CAAA;AAEhC,MAAIN,KAAeE,EAAc;AAC7B,UAAM,MAAM,oEAAoE;AAGpF,SAAAC,EAAU,QAAQ,CAAAI,MAAY;AAC1B,UAAMC,IAAuC;AAAA,MACzC,mBAAmB,CAAA;AAAA,MACnB,mBAAmB,CAAA;AAAA,IAAA,GAEjBC,IAAaV,EAAiB,OAAOQ,CAAQ;AAKnD,QAAIP,GAAa;AACb,YAAMU,IAAyB,CAAA;AAC/BN,MAAAA,EAAW,QAAQ,CAAAO,MAAa;AAC5B,cAAMC,IAAQH,EAAW,cAAcE,CAAS,GAC1CE,IAAQJ,EAAW,OAKnBK,IAAcC;AAAAA,UAChBH,EAAM,IAAI,CAAAI,MAAKH,EAAM,IAAI,CAAAI,MAAA;;AAAM,qBAAAC,IAAAT,EAAW,MAAMO,CAAC,EAAEG,CAAC,MAArB,OAAA,SAAAD,EAAwB,gBAAgB,eAAclB,EAAY;AAAA,UAAA,CAAiB,CAAC;AAAA,UACnHA,EAAY;AAAA,UACZA,EAAY;AAAA,QAAA,GAOVoB,IAAWN,EAAY,QAAQ,IAAI,CAAAO,MAAKT,EAAMS,CAAC,CAAC;AACtDtB,QAAAA,EAAiB,OAAOQ,CAAQ,EAAE,cAAcI,CAAS,IAAIS,GAC7DV,EAAa,KAAK,GAAGU,CAAQ,GAC7BZ,EAAY,kBAAkBG,CAAS,IAAIW,EAAUR,CAAW;AAAA,MACpE,CAAC,GAEDf,EAAiB,OAAOQ,CAAQ,EAAE,QAAQG;AAAAA,IAC9C;AAKA,QAAIT,GAAa;AACb,YAAMsB,IAAyB,CAAA;AAC/BlB,MAAAA,EAAW,QAAQ,CAAAmB,MAAa;AAC5B,cAAMX,IAAQJ,EAAW,cAAce,CAAS,GAC1CZ,IAAQH,EAAW,OACnBK,IAAcC;AAAAA,UAChBF,EAAM,IAAI,CAAAM,MAAKP,EAAM,IAAI,CAAAK,MAAA;;AAAM,qBAAAC,IAAAT,EAAW,MAAMO,CAAC,EAAEG,CAAC,MAArB,OAAA,SAAAD,EAAwB,gBAAgB,eAAcjB,EAAY;AAAA,UAAA,CAAiB,CAAC;AAAA,UACnHA,EAAY;AAAA,UACZA,EAAY;AAAA,QAAA,GAEVwB,IAAWX,EAAY,QAAQ,IAAI,CAAAO,MAAKR,EAAMQ,CAAC,CAAC;AAEtDtB,QAAAA,EAAiB,OAAOQ,CAAQ,EAAE,cAAciB,CAAS,IAAIC,GAC7DF,EAAa,KAAK,GAAGE,CAAQ,GAC7BjB,EAAY,kBAAkBgB,CAAS,IAAIF,EAAUR,CAAW;AAAA,MACpE,CAAC,GAEDf,EAAiB,OAAOQ,CAAQ,EAAE,QAAQgB;AAAAA,IAC9C;AACAjB,IAAAA,EAAOC,CAAQ,IAAIC;AAAAA,EACvB,CAAC,GAEMF;AACX;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"getDendrograms.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/getDendrograms.ts"],"sourcesContent":["import type { Cluster } from './components/types';\nimport type { GroupedCellsHeatmap } from './getCells';\nimport type { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\nimport type { HierarchyNode } from 'd3-hierarchy';\nimport { hierarchy } from 'd3-hierarchy';\nimport type { getClustersApproximate } from './getClusters';\nimport { WorkerFactory } from '../utils/WorkerFactory';\nimport GetClustersWorker from './getClusters?worker&inline';\n\nexport type DendrogramsData = Record<string, {\n hierarchyByGroupX: Record<string, HierarchyNode<Cluster>>;\n hierarchyByGroupY: Record<string, HierarchyNode<Cluster>>;\n}>\n\nconst workerWrapper = new WorkerFactory<{ getClustersApproximate: typeof getClustersApproximate }>(() => new GetClustersWorker());\n\nexport async function getDendrograms(\n groupedCellsData: GroupedCellsHeatmap,\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY'],\n facetSettings: HeatmapSettingsImpl['facetSettings']\n): Promise<DendrogramsData> {\n const { facetKeys, xGroupKeys, yGroupKeys } = groupedCellsData.meta;\n const result: DendrogramsData = {};\n\n if (!dendrogramX && !dendrogramY) {\n return result;\n }\n if (dendrogramX && facetSettings.sharedX) {\n throw Error('Dendrogram on X axis is not available with shared by facets X axis');\n }\n if (dendrogramY && facetSettings.sharedY) {\n throw Error('Dendrogram on Y axis is not available with shared by facets Y axis');\n }\n workerWrapper.reset();\n await Promise.all(facetKeys.map(async facetKey => {\n const facetResult: DendrogramsData[string] = {\n hierarchyByGroupX: {},\n hierarchyByGroupY: {},\n };\n const cellsGroup = groupedCellsData.facets[facetKey];\n if (dendrogramX) {\n const updatedXKeys: string[] = [];\n const rootClusters = await Promise.all(xGroupKeys.map(async xGroupKey => {\n const xKeys = cellsGroup.xKeysByGroups[xGroupKey];\n const yKeys = cellsGroup.yKeys;\n return workerWrapper.wrapper.getClustersApproximate(\n xKeys.map(x => yKeys.map(y => (cellsGroup.cells[x][y]?.normalizedValue.dataSource ?? dendrogramX.fillNA) as number)),\n dendrogramX.distance,\n dendrogramX.linkage\n ); \n }));\n xGroupKeys.forEach((xGroupKey, idx) => {\n //set sorted group keys\n const rootCluster = rootClusters[idx];\n const newXKeys = rootCluster.indexes.map(i => cellsGroup.xKeysByGroups[xGroupKey][i]);\n groupedCellsData.facets[facetKey].xKeysByGroups[xGroupKey] = newXKeys;\n updatedXKeys.push(...newXKeys);\n facetResult.hierarchyByGroupX[xGroupKey] = hierarchy(rootCluster);\n });\n // set sorted group keys of all groups\n groupedCellsData.facets[facetKey].xKeys = updatedXKeys;\n }\n if (dendrogramY) {\n const updatedYKeys: string[] = [];\n const rootClusters = await Promise.all(yGroupKeys.map(async yGroupKey => {\n const yKeys = cellsGroup.yKeysByGroups[yGroupKey];\n const xKeys = cellsGroup.xKeys;\n return workerWrapper.wrapper.getClustersApproximate(\n yKeys.map(y => xKeys.map(x => (cellsGroup.cells[x][y]?.normalizedValue.dataSource ?? dendrogramY.fillNA) as number)),\n dendrogramY.distance,\n dendrogramY.linkage\n );\n }));\n yGroupKeys.forEach((yGroupKey, idx) => {\n const rootCluster = rootClusters[idx];\n const newYKeys = rootCluster.indexes.map(i => cellsGroup.yKeysByGroups[yGroupKey][i]);\n groupedCellsData.facets[facetKey].yKeysByGroups[yGroupKey] = newYKeys;\n updatedYKeys.push(...newYKeys);\n facetResult.hierarchyByGroupY[yGroupKey] = hierarchy(rootCluster);\n });\n // set sorted group keys of all groups\n groupedCellsData.facets[facetKey].yKeys = updatedYKeys;\n }\n result[facetKey] = facetResult;\n }));\n\n return result;\n}\n"],"names":["workerWrapper","WorkerFactory","GetClustersWorker","getDendrograms","groupedCellsData","dendrogramX","dendrogramY","facetSettings","facetKeys","xGroupKeys","yGroupKeys","result","facetKey","facetResult","cellsGroup","updatedXKeys","rootClusters","xGroupKey","xKeys","yKeys","x","a","_a","y","idx","rootCluster","newXKeys","i","hierarchy","updatedYKeys","yGroupKey","newYKeys"],"mappings":";;;AAcA,MAAMA,IAAgB,IAAIC,EAAyE,MAAM,IAAIC,EAAAA,CAAmB;AAEhI,eAAsBC,EAClBC,GACAC,GACAC,GACAC,GACwB;AACxB,QAAM,EAAE,WAAAC,GAAW,YAAAC,GAAY,YAAAC,MAAeN,EAAiB,MACzDO,IAA0B,CAAA;AAEhC,MAAI,CAACN,KAAe,CAACC;AACjB,WAAOK;AAEX,MAAIN,KAAeE,EAAc;AAC7B,UAAM,MAAM,oEAAoE;AAEpF,MAAID,KAAeC,EAAc;AAC7B,UAAM,MAAM,oEAAoE;AAEpF,SAAAP,EAAc,SACd,MAAM,QAAQ,IAAIQ,EAAU,IAAI,OAAMI,MAAY;AAC9C,UAAMC,IAAuC;AAAA,MACzC,mBAAmB,CAAA;AAAA,MACnB,mBAAmB,CAAA;AAAA,IAAA,GAEjBC,IAAaV,EAAiB,OAAOQ,CAAQ;AACnD,QAAIP,GAAa;AACb,YAAMU,IAAyB,IACzBC,IAAe,MAAM,QAAQ,IAAIP,EAAW,IAAI,OAAMQ,MAAa;AACrE,cAAMC,IAAQJ,EAAW,cAAcG,CAAS,GAC1CE,IAAQL,EAAW;AACzB,eAAOd,EAAc,QAAQ;AAAA,UACzBkB,EAAM,IAAI,CAAAE,MAAKD,EAAM,IAAI,CAAAE,MAAA;;AAAM,qBAAAC,IAAAR,EAAW,MAAMM,CAAC,EAAEG,CAAC,MAArB,OAAA,SAAAD,EAAwB,gBAAgB,eAAcjB,EAAY;AAAA,UAAA,CAAiB,CAAC;AAAA,UACnHA,EAAY;AAAA,UACZA,EAAY;AAAA,QAAA;AAAA,MAEpB,CAAC,CAAC;AACFI,MAAAA,EAAW,QAAQ,CAACQ,GAAWO,MAAQ;AAEnC,cAAMC,IAAcT,EAAaQ,CAAG,GAC9BE,IAAWD,EAAY,QAAQ,IAAI,CAAAE,MAAKb,EAAW,cAAcG,CAAS,EAAEU,CAAC,CAAC;AACpFvB,UAAiB,OAAOQ,CAAQ,EAAE,cAAcK,CAAS,IAAIS,GAC7DX,EAAa,KAAK,GAAGW,CAAQ,GAC7Bb,EAAY,kBAAkBI,CAAS,IAAIW,EAAUH,CAAW;AAAA,MACpE,CAAC,GAEDrB,EAAiB,OAAOQ,CAAQ,EAAE,QAAQG;AAAAA,IAC9C;AACA,QAAIT,GAAa;AACb,YAAMuB,IAAyB,IACzBb,IAAe,MAAM,QAAQ,IAAIN,EAAW,IAAI,OAAMoB,MAAa;AACrE,cAAMX,IAAQL,EAAW,cAAcgB,CAAS,GAC1CZ,IAAQJ,EAAW;AACzB,eAAOd,EAAc,QAAQ;AAAA,UACzBmB,EAAM,IAAI,CAAAI,MAAKL,EAAM,IAAI,CAAAG,MAAA;;AAAM,qBAAAC,IAAAR,EAAW,MAAMM,CAAC,EAAEG,CAAC,MAArB,OAAA,SAAAD,EAAwB,gBAAgB,eAAchB,EAAY;AAAA,UAAA,CAAiB,CAAC;AAAA,UACnHA,EAAY;AAAA,UACZA,EAAY;AAAA,QAAA;AAAA,MAEpB,CAAC,CAAC;AACFI,QAAW,QAAQ,CAACoB,GAAWN,MAAQ;AACnC,cAAMC,IAAcT,EAAaQ,CAAG,GAC9BO,IAAWN,EAAY,QAAQ,IAAI,CAAAE,MAAKb,EAAW,cAAcgB,CAAS,EAAEH,CAAC,CAAC;AACpFvB,UAAiB,OAAOQ,CAAQ,EAAE,cAAckB,CAAS,IAAIC,GAC7DF,EAAa,KAAK,GAAGE,CAAQ,GAC7BlB,EAAY,kBAAkBiB,CAAS,IAAIF,EAAUH,CAAW;AAAA,MACpE,CAAC,GAEDrB,EAAiB,OAAOQ,CAAQ,EAAE,QAAQiB;AAAAA,IAC9C;AACAlB,IAAAA,EAAOC,CAAQ,IAAIC;AAAAA,EACvB,CAAC,CAAC,GAEKF;AACX;","x_google_ignoreList":[0]}
@@ -1,20 +1,20 @@
1
1
  import { renderToString as q } from "../node_modules/react-dom/server.browser.js";
2
- import { AbstractChart as F } from "../AbstractChart.js";
3
- import { isColumnName as A } from "../utils/index.js";
4
- import L from "./ChartRenderer.js";
5
- import { getCells as J } from "./getCells.js";
6
- import { getDendrograms as K } from "./getDendrograms.js";
7
- import { HeatmapSettingsImpl as k } from "./HeatmapSettingsImpl.js";
8
- import { MAX_SVG_RENDERED_CELLS_COUNT as M } from "./constants.js";
9
- var P = Object.defineProperty, W = (g, t, e) => t in g ? P(g, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : g[t] = e, X = (g, t, e) => W(g, typeof t != "symbol" ? t + "" : t, e);
10
- class lt extends F {
2
+ import { AbstractChart as M } from "../AbstractChart.js";
3
+ import { isColumnName as X } from "../utils/index.js";
4
+ import $ from "./ChartRenderer.js";
5
+ import { getCells as F } from "./getCells.js";
6
+ import { getDendrograms as J } from "./getDendrograms.js";
7
+ import { HeatmapSettingsImpl as T } from "./HeatmapSettingsImpl.js";
8
+ import { MAX_SVG_RENDERED_CELLS_COUNT as K } from "./constants.js";
9
+ import { l as b } from "../node_modules/lodash/lodash.js";
10
+ var W = Object.defineProperty, Q = (h, t, e) => t in h ? W(h, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : h[t] = e, x = (h, t, e) => Q(h, typeof t != "symbol" ? t + "" : t, e);
11
+ class st extends M {
11
12
  constructor(t, e, a) {
12
- super(t, e), X(this, "settings"), X(this, "chartRenderer", new L()), X(this, "onTooltipHintSwitch", () => {
13
- }), X(this, "calculatedData", null), this.settings = new k(e), a && (this.onTooltipHintSwitch = a[0]);
13
+ super(t, e), x(this, "settings"), x(this, "chartRenderer", new $()), x(this, "onTooltipHintSwitch", b.noop), x(this, "onLoadingChange", b.noop), x(this, "calculatedData", null), x(this, "clusteringCalculationsInProgress", !1), this.settings = new T(e), a && (this.onTooltipHintSwitch = a.onTooltipHintSwitch ?? b.noop, this.onLoadingChange = a.onLoadingChange ?? b.noop);
14
14
  }
15
15
  mount(t) {
16
16
  try {
17
- this.chartRenderer.init(t), this._updateData(), this._updateChart(), this.hasError = !1;
17
+ this.chartRenderer.init(t), this._updateData(), this.hasError = !1;
18
18
  } catch (e) {
19
19
  this.hasError = !0, e instanceof Error && (this.chartRenderer.renderError(e.message), console.error(e));
20
20
  }
@@ -24,8 +24,8 @@ class lt extends F {
24
24
  }
25
25
  updateSettingsAndData(t, e) {
26
26
  try {
27
- const a = this.settings, r = this.data;
28
- this.settings = new k(e), this.data = t, this._needUpdateCalculatedDataBySettings(a, this.settings) || this._needUpdateCalculatedDataByData(r, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart();
27
+ const a = this.settings, n = this.data;
28
+ this.settings = new T(e), this.data = t, this._needUpdateCalculatedDataBySettings(a, this.settings) || this._needUpdateCalculatedDataByData(n, this.data) ? this._updateData() : this._updateAesInData();
29
29
  } catch (a) {
30
30
  a instanceof Error && (this.chartRenderer.renderError(a.message), console.error(a));
31
31
  }
@@ -37,139 +37,142 @@ class lt extends F {
37
37
  return this._updateChart(), q(this.chartRenderer.component);
38
38
  }
39
39
  _needUpdateCalculatedDataBySettings(t, e) {
40
- var a, r, n, o, i, m, c, d, s, v, l, p, y, u, C;
40
+ var a, n, r, o, i, c, m, s, d, v, l, p, y, u, C;
41
41
  const {
42
- xColumn: S,
43
- yColumn: b,
44
- valueColumn: G,
45
- xGroupBy: _,
46
- yGroupBy: h,
47
- facetBy: w,
42
+ xColumn: _,
43
+ yColumn: G,
44
+ valueColumn: Y,
45
+ xGroupBy: B,
46
+ yGroupBy: g,
47
+ facetBy: k,
48
48
  annotations: N,
49
- chartSettings: T,
50
- facetSettings: Y,
49
+ chartSettings: j,
50
+ facetSettings: w,
51
51
  dendrogramX: E,
52
52
  dendrogramY: O,
53
- normalization: B,
54
- aggregation: D,
55
- NAValueAs: j
56
- } = e, U = Object.values(((a = t.dendrogramX) == null ? void 0 : a.aes) || {}).filter(
57
- A
58
- ), V = Object.values((E == null ? void 0 : E.aes) || {}).filter(A), H = Object.values(((r = t.dendrogramY) == null ? void 0 : r.aes) || {}).filter(
59
- A
60
- ), z = Object.values((O == null ? void 0 : O.aes) || {}).filter(A);
61
- function f(x, R) {
62
- return x.length !== R.length || x.some((I, $) => I.value !== R[$].value);
53
+ normalization: A,
54
+ aggregation: f,
55
+ NAValueAs: I
56
+ } = e, L = Object.values(((a = t.dendrogramX) == null ? void 0 : a.aes) || {}).filter(
57
+ X
58
+ ), U = Object.values((E == null ? void 0 : E.aes) || {}).filter(X), H = Object.values(((n = t.dendrogramY) == null ? void 0 : n.aes) || {}).filter(
59
+ X
60
+ ), V = Object.values((O == null ? void 0 : O.aes) || {}).filter(X);
61
+ function D(S, R) {
62
+ return S.length !== R.length || S.some((z, P) => z.value !== R[P].value);
63
63
  }
64
- return t.xColumn.value !== S.value || t.yColumn.value !== b.value || t.valueColumn.value !== G.value || f(t.xGroupBy, _) || f(t.yGroupBy, h) || f(t.facetBy, w) || f(
65
- t.annotations.map((x) => x.valueColumn),
66
- N.map((x) => x.valueColumn)
67
- ) || f(U, V) || f(H, z) || (e.dendrogramX || t.dendrogramX) && (((n = t.dendrogramX) == null ? void 0 : n.distance) !== ((o = e.dendrogramX) == null ? void 0 : o.distance) || ((i = t.dendrogramX) == null ? void 0 : i.linkage) !== ((m = e.dendrogramX) == null ? void 0 : m.linkage)) || (e.dendrogramY || t.dendrogramY) && (((c = t.dendrogramY) == null ? void 0 : c.distance) !== ((d = e.dendrogramY) == null ? void 0 : d.distance) || ((s = t.dendrogramY) == null ? void 0 : s.linkage) !== ((v = e.dendrogramY) == null ? void 0 : v.linkage)) || t.chartSettings.valueType !== T.valueType || t.facetSettings.sharedX !== Y.sharedX || t.facetSettings.sharedY !== Y.sharedY || ((l = t.normalization) == null ? void 0 : l.method) !== (B == null ? void 0 : B.method) || ((p = t.normalization) == null ? void 0 : p.direction) !== (B == null ? void 0 : B.direction) || t.NAValueAs !== j || ((y = t.aggregation) == null ? void 0 : y.method) !== (D == null ? void 0 : D.method) || ((u = t.aggregation) == null ? void 0 : u.x) !== (D == null ? void 0 : D.x) || ((C = t.aggregation) == null ? void 0 : C.y) !== (D == null ? void 0 : D.y);
64
+ return t.xColumn.value !== _.value || t.yColumn.value !== G.value || t.valueColumn.value !== Y.value || D(t.xGroupBy, B) || D(t.yGroupBy, g) || D(t.facetBy, k) || D(
65
+ t.annotations.map((S) => S.valueColumn),
66
+ N.map((S) => S.valueColumn)
67
+ ) || D(L, U) || D(H, V) || (e.dendrogramX || t.dendrogramX) && (((r = t.dendrogramX) == null ? void 0 : r.distance) !== ((o = e.dendrogramX) == null ? void 0 : o.distance) || ((i = t.dendrogramX) == null ? void 0 : i.linkage) !== ((c = e.dendrogramX) == null ? void 0 : c.linkage)) || (e.dendrogramY || t.dendrogramY) && (((m = t.dendrogramY) == null ? void 0 : m.distance) !== ((s = e.dendrogramY) == null ? void 0 : s.distance) || ((d = t.dendrogramY) == null ? void 0 : d.linkage) !== ((v = e.dendrogramY) == null ? void 0 : v.linkage)) || t.chartSettings.valueType !== j.valueType || t.facetSettings.sharedX !== w.sharedX || t.facetSettings.sharedY !== w.sharedY || ((l = t.normalization) == null ? void 0 : l.method) !== (A == null ? void 0 : A.method) || ((p = t.normalization) == null ? void 0 : p.direction) !== (A == null ? void 0 : A.direction) || t.NAValueAs !== I || ((y = t.aggregation) == null ? void 0 : y.method) !== (f == null ? void 0 : f.method) || ((u = t.aggregation) == null ? void 0 : u.x) !== (f == null ? void 0 : f.x) || ((C = t.aggregation) == null ? void 0 : C.y) !== (f == null ? void 0 : f.y);
68
68
  }
69
69
  _needUpdateCalculatedDataByData(t, e) {
70
- const a = Object.keys(t.data), r = Object.keys(e.data);
71
- return t.id !== e.id || a.length !== r.length || a.some((n) => {
70
+ const a = Object.keys(t.data), n = Object.keys(e.data);
71
+ return t.id !== e.id || a.length !== n.length || a.some((r) => {
72
72
  var o;
73
- return t.data[n].length !== ((o = e.data[n]) == null ? void 0 : o.length);
73
+ return t.data[r].length !== ((o = e.data[r]) == null ? void 0 : o.length);
74
74
  });
75
75
  }
76
- _updateData() {
76
+ async _updateData() {
77
77
  const {
78
78
  xColumn: t,
79
79
  yColumn: e,
80
80
  valueColumn: a,
81
- xGroupBy: r,
82
- yGroupBy: n,
81
+ xGroupBy: n,
82
+ yGroupBy: r,
83
83
  facetBy: o,
84
84
  chartSettings: i,
85
- facetSettings: m,
86
- annotations: c,
87
- dendrogramX: d,
88
- dendrogramY: s,
85
+ facetSettings: c,
86
+ annotations: m,
87
+ dendrogramX: s,
88
+ dendrogramY: d,
89
89
  normalization: v,
90
90
  NAValueAs: l,
91
91
  keysOrder: p,
92
92
  aggregation: y
93
- } = this.settings, u = J(
93
+ } = this.settings, u = F(
94
94
  this.data,
95
95
  t,
96
96
  e,
97
97
  { dataSource: a },
98
98
  o,
99
- r,
100
99
  n,
101
- c,
102
- d,
100
+ r,
101
+ m,
103
102
  s,
103
+ d,
104
104
  v,
105
105
  l,
106
106
  p,
107
107
  i.xAxis,
108
108
  i.yAxis,
109
109
  y
110
- ), C = K(u, d, s, m), S = i.valueType === "discrete" ? this.data.getColumnCategories(a.value) : [];
111
- this.calculatedData = {
110
+ ), C = i.valueType === "discrete" ? this.data.getColumnCategories(a.value) : [];
111
+ this.clusteringCalculationsInProgress = !0, this.onLoadingChange(!0);
112
+ const _ = await J(u, s, d, c);
113
+ this.clusteringCalculationsInProgress = !1, this.onLoadingChange(!1), this.calculatedData = {
112
114
  groupedCellsData: u,
113
- dendrogramsData: C,
114
- cellUniqValues: S
115
- };
115
+ dendrogramsData: _,
116
+ cellUniqValues: C
117
+ }, this._updateChart();
116
118
  }
117
119
  _updateAesInData() {
120
+ this._updateChart();
118
121
  }
119
122
  _updateChart() {
120
123
  var t, e;
121
- if (!this.calculatedData)
124
+ if (!this.calculatedData || this.clusteringCalculationsInProgress)
122
125
  return;
123
126
  const {
124
127
  id: a,
125
- valueColumn: r,
126
- chartSettings: n,
128
+ valueColumn: n,
129
+ chartSettings: r,
127
130
  facetSettings: o,
128
131
  aes: i,
129
- annotations: m,
130
- dendrogramX: c,
131
- dendrogramY: d,
132
- inheritedDendrogramAes: s,
132
+ annotations: c,
133
+ dendrogramX: m,
134
+ dendrogramY: s,
135
+ inheritedDendrogramAes: d,
133
136
  normalization: v,
134
137
  keysOrder: l,
135
138
  xColumn: p,
136
139
  yColumn: y,
137
140
  xGroupBy: u,
138
141
  yGroupBy: C
139
- } = this.settings, S = {
142
+ } = this.settings, _ = {
140
143
  x: ((t = l[p.value]) == null ? void 0 : t.length) > 0,
141
144
  y: ((e = l[y.value]) == null ? void 0 : e.length) > 0,
142
- xGroup: u.some((_) => {
143
- var h;
144
- return ((h = l[_.value]) == null ? void 0 : h.length) > 0;
145
+ xGroup: u.some((B) => {
146
+ var g;
147
+ return ((g = l[B.value]) == null ? void 0 : g.length) > 0;
145
148
  }),
146
- yGroup: C.some((_) => {
147
- var h;
148
- return ((h = l[_.value]) == null ? void 0 : h.length) > 0;
149
+ yGroup: C.some((B) => {
150
+ var g;
151
+ return ((g = l[B.value]) == null ? void 0 : g.length) > 0;
149
152
  })
150
- }, b = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0, G = this.settings.cellsRenderingMode ?? (b > M ? "canvas" : "svg");
153
+ }, G = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0, Y = this.settings.cellsRenderingMode ?? (G > K ? "canvas" : "svg");
151
154
  this.chartRenderer.render(
152
155
  this.data,
153
156
  a,
154
- n,
157
+ r,
155
158
  o,
156
159
  i,
157
160
  this.calculatedData.groupedCellsData,
158
- m,
159
- r,
160
161
  c,
161
- d,
162
- this.calculatedData.dendrogramsData,
162
+ n,
163
+ m,
163
164
  s,
165
+ this.calculatedData.dendrogramsData,
166
+ d,
164
167
  this.calculatedData.cellUniqValues,
165
168
  v,
166
169
  this.onTooltipHintSwitch,
167
- S,
168
- G
170
+ _,
171
+ Y
169
172
  );
170
173
  }
171
174
  }
172
175
  export {
173
- lt as ChartHeatmap
176
+ st as ChartHeatmap
174
177
  };
175
178
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport type { ColumnName, DataValue, HeatmapEventHandlers, HeatmapSettings } 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';\n\nexport class ChartHeatmap extends AbstractChart {\n settings: HeatmapSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n groupedCellsData: GroupedCellsHeatmap;\n dendrogramsData: DendrogramsData;\n cellUniqValues: DataValue[];\n } | null = null;\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[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: 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._updateChart();\n } catch (err) {\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 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 _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 const dendrogramsData = getDendrograms(groupedCellsData, dendrogramX, dendrogramY, facetSettings);\n const cellUniqValues =\n chartSettings.valueType === 'discrete' ? this.data.getColumnCategories(valueColumn.value) : [];\n\n this.calculatedData = {\n groupedCellsData,\n dendrogramsData,\n cellUniqValues,\n };\n }\n\n _updateAesInData() {\n return;\n }\n\n _updateChart() {\n if (!this.calculatedData) {\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","HeatmapSettingsImpl","node","err","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","u","key","keysOrder","groupedCellsData","getCells","dendrogramsData","getDendrograms","cellUniqValues","id","aes","inheritedDendrogramAes","customOrder","v","dataSize","cellsRenderingMode","MAX_SVG_RENDERED_CELLS_COUNT"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport type { ColumnName, DataValue, HeatmapEventHandlers, HeatmapSettings } 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';\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 } 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: 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 } catch (err) {\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 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 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","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","i","key","keysOrder","groupedCellsData","getCells","cellUniqValues","dendrogramsData","getDendrograms","id","aes","inheritedDendrogramAes","customOrder","v","dataSize","cellsRenderingMode","MAX_SVG_RENDERED_CELLS_COUNT"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,259 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ const M = Symbol("Comlink.proxy"), O = Symbol("Comlink.endpoint"), z = Symbol("Comlink.releaseProxy"), v = Symbol("Comlink.finalizer"), h = Symbol("Comlink.thrown"), T = (e) => typeof e == "object" && e !== null || typeof e == "function", C = {
7
+ canHandle: (e) => T(e) && e[M],
8
+ serialize(e) {
9
+ const { port1: t, port2: n } = new MessageChannel();
10
+ return L(e, t), [n, [n]];
11
+ },
12
+ deserialize(e) {
13
+ return e.start(), D(e);
14
+ }
15
+ }, j = {
16
+ canHandle: (e) => T(e) && h in e,
17
+ serialize({ value: e }) {
18
+ let t;
19
+ return e instanceof Error ? t = {
20
+ isError: !0,
21
+ value: {
22
+ message: e.message,
23
+ name: e.name,
24
+ stack: e.stack
25
+ }
26
+ } : t = { isError: !1, value: e }, [t, []];
27
+ },
28
+ deserialize(e) {
29
+ throw e.isError ? Object.assign(new Error(e.value.message), e.value) : e.value;
30
+ }
31
+ }, A = /* @__PURE__ */ new Map([
32
+ ["proxy", C],
33
+ ["throw", j]
34
+ ]);
35
+ function N(e, t) {
36
+ for (const n of e)
37
+ if (t === n || n === "*" || n instanceof RegExp && n.test(t))
38
+ return !0;
39
+ return !1;
40
+ }
41
+ function L(e, t = globalThis, n = ["*"]) {
42
+ t.addEventListener("message", function f(r) {
43
+ if (!r || !r.data)
44
+ return;
45
+ if (!N(n, r.origin)) {
46
+ console.warn(`Invalid origin '${r.origin}' for comlink proxy`);
47
+ return;
48
+ }
49
+ const { id: i, type: g, path: c } = Object.assign({ path: [] }, r.data), u = (r.data.argumentList || []).map(p);
50
+ let a;
51
+ try {
52
+ const s = c.slice(0, -1).reduce((o, y) => o[y], e), l = c.reduce((o, y) => o[y], e);
53
+ switch (g) {
54
+ case "GET":
55
+ a = l;
56
+ break;
57
+ case "SET":
58
+ s[c.slice(-1)[0]] = p(r.data.value), a = !0;
59
+ break;
60
+ case "APPLY":
61
+ a = l.apply(s, u);
62
+ break;
63
+ case "CONSTRUCT":
64
+ {
65
+ const o = new l(...u);
66
+ a = U(o);
67
+ }
68
+ break;
69
+ case "ENDPOINT":
70
+ {
71
+ const { port1: o, port2: y } = new MessageChannel();
72
+ L(e, y), a = G(o, [o]);
73
+ }
74
+ break;
75
+ case "RELEASE":
76
+ a = void 0;
77
+ break;
78
+ default:
79
+ return;
80
+ }
81
+ } catch (s) {
82
+ a = { value: s, [h]: 0 };
83
+ }
84
+ Promise.resolve(a).catch((s) => ({ value: s, [h]: 0 })).then((s) => {
85
+ const [l, o] = w(s);
86
+ t.postMessage(Object.assign(Object.assign({}, l), { id: i }), o), g === "RELEASE" && (t.removeEventListener("message", f), P(t), v in e && typeof e[v] == "function" && e[v]());
87
+ }).catch((s) => {
88
+ const [l, o] = w({
89
+ value: new TypeError("Unserializable return value"),
90
+ [h]: 0
91
+ });
92
+ t.postMessage(Object.assign(Object.assign({}, l), { id: i }), o);
93
+ });
94
+ }), t.start && t.start();
95
+ }
96
+ function H(e) {
97
+ return e.constructor.name === "MessagePort";
98
+ }
99
+ function P(e) {
100
+ H(e) && e.close();
101
+ }
102
+ function D(e, t) {
103
+ const n = /* @__PURE__ */ new Map();
104
+ return e.addEventListener("message", function(f) {
105
+ const { data: r } = f;
106
+ if (!r || !r.id)
107
+ return;
108
+ const i = n.get(r.id);
109
+ if (i)
110
+ try {
111
+ i(r);
112
+ } finally {
113
+ n.delete(r.id);
114
+ }
115
+ }), S(e, n, [], t);
116
+ }
117
+ function d(e) {
118
+ if (e)
119
+ throw new Error("Proxy has been released and is not useable");
120
+ }
121
+ function R(e) {
122
+ return m(e, /* @__PURE__ */ new Map(), {
123
+ type: "RELEASE"
124
+ }).then(() => {
125
+ P(e);
126
+ });
127
+ }
128
+ const E = /* @__PURE__ */ new WeakMap(), b = "FinalizationRegistry" in globalThis && new FinalizationRegistry((e) => {
129
+ const t = (E.get(e) || 0) - 1;
130
+ E.set(e, t), t === 0 && R(e);
131
+ });
132
+ function I(e, t) {
133
+ const n = (E.get(t) || 0) + 1;
134
+ E.set(t, n), b && b.register(e, t, e);
135
+ }
136
+ function W(e) {
137
+ b && b.unregister(e);
138
+ }
139
+ function S(e, t, n = [], f = function() {
140
+ }) {
141
+ let r = !1;
142
+ const i = new Proxy(f, {
143
+ get(g, c) {
144
+ if (d(r), c === z)
145
+ return () => {
146
+ W(i), R(e), t.clear(), r = !0;
147
+ };
148
+ if (c === "then") {
149
+ if (n.length === 0)
150
+ return { then: () => i };
151
+ const u = m(e, t, {
152
+ type: "GET",
153
+ path: n.map((a) => a.toString())
154
+ }).then(p);
155
+ return u.then.bind(u);
156
+ }
157
+ return S(e, t, [...n, c]);
158
+ },
159
+ set(g, c, u) {
160
+ d(r);
161
+ const [a, s] = w(u);
162
+ return m(e, t, {
163
+ type: "SET",
164
+ path: [...n, c].map((l) => l.toString()),
165
+ value: a
166
+ }, s).then(p);
167
+ },
168
+ apply(g, c, u) {
169
+ d(r);
170
+ const a = n[n.length - 1];
171
+ if (a === O)
172
+ return m(e, t, {
173
+ type: "ENDPOINT"
174
+ }).then(p);
175
+ if (a === "bind")
176
+ return S(e, t, n.slice(0, -1));
177
+ const [s, l] = k(u);
178
+ return m(e, t, {
179
+ type: "APPLY",
180
+ path: n.map((o) => o.toString()),
181
+ argumentList: s
182
+ }, l).then(p);
183
+ },
184
+ construct(g, c) {
185
+ d(r);
186
+ const [u, a] = k(c);
187
+ return m(e, t, {
188
+ type: "CONSTRUCT",
189
+ path: n.map((s) => s.toString()),
190
+ argumentList: u
191
+ }, a).then(p);
192
+ }
193
+ });
194
+ return I(i, e), i;
195
+ }
196
+ function F(e) {
197
+ return Array.prototype.concat.apply([], e);
198
+ }
199
+ function k(e) {
200
+ const t = e.map(w);
201
+ return [t.map((n) => n[0]), F(t.map((n) => n[1]))];
202
+ }
203
+ const x = /* @__PURE__ */ new WeakMap();
204
+ function G(e, t) {
205
+ return x.set(e, t), e;
206
+ }
207
+ function U(e) {
208
+ return Object.assign(e, { [M]: !0 });
209
+ }
210
+ function w(e) {
211
+ for (const [t, n] of A)
212
+ if (n.canHandle(e)) {
213
+ const [f, r] = n.serialize(e);
214
+ return [
215
+ {
216
+ type: "HANDLER",
217
+ name: t,
218
+ value: f
219
+ },
220
+ r
221
+ ];
222
+ }
223
+ return [
224
+ {
225
+ type: "RAW",
226
+ value: e
227
+ },
228
+ x.get(e) || []
229
+ ];
230
+ }
231
+ function p(e) {
232
+ switch (e.type) {
233
+ case "HANDLER":
234
+ return A.get(e.name).deserialize(e.value);
235
+ case "RAW":
236
+ return e.value;
237
+ }
238
+ }
239
+ function m(e, t, n, f) {
240
+ return new Promise((r) => {
241
+ const i = _();
242
+ t.set(i, r), e.start && e.start(), e.postMessage(Object.assign({ id: i }, n), f);
243
+ });
244
+ }
245
+ function _() {
246
+ return new Array(4).fill(0).map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16)).join("-");
247
+ }
248
+ export {
249
+ O as createEndpoint,
250
+ L as expose,
251
+ v as finalizer,
252
+ U as proxy,
253
+ M as proxyMarker,
254
+ z as releaseProxy,
255
+ G as transfer,
256
+ A as transferHandlers,
257
+ D as wrap
258
+ };
259
+ //# sourceMappingURL=comlink.js.map