@milaboratories/graph-maker 1.1.140 → 1.1.142

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 (115) hide show
  1. package/dist/GraphMaker/components/LassoControls/index.vue.js +1 -1
  2. package/dist/GraphMaker/constantsCommon.d.ts +8 -0
  3. package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
  4. package/dist/GraphMaker/constantsCommon.js +94 -83
  5. package/dist/GraphMaker/constantsCommon.js.map +1 -1
  6. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.d.ts +3 -0
  7. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.d.ts.map +1 -0
  8. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js +90 -0
  9. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js.map +1 -0
  10. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue2.js +5 -0
  11. package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue2.js.map +1 -0
  12. package/dist/GraphMaker/forms/LayersForm/index.vue.d.ts.map +1 -1
  13. package/dist/GraphMaker/forms/LayersForm/index.vue.js +45 -43
  14. package/dist/GraphMaker/forms/LayersForm/index.vue.js.map +1 -1
  15. package/dist/GraphMaker/index.vue.d.ts.map +1 -1
  16. package/dist/GraphMaker/index.vue.js +24 -24
  17. package/dist/GraphMaker/index.vue.js.map +1 -1
  18. package/dist/GraphMaker/store.js +9 -9
  19. package/dist/GraphMaker/types.d.ts +1 -1
  20. package/dist/GraphMaker/types.d.ts.map +1 -1
  21. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +16 -0
  22. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
  23. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
  24. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js +54 -52
  25. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
  26. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.d.ts.map +1 -1
  27. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js +84 -70
  28. package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js.map +1 -1
  29. package/dist/GraphMaker/utils/loadDefaultSources.js +4 -3
  30. package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
  31. package/dist/_virtual/_commonjsHelpers.js +3 -5
  32. package/dist/_virtual/_commonjsHelpers.js.map +1 -1
  33. package/dist/node_modules/@milaboratories/miplots4/dist/MiPlots.js +1 -1
  34. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js +185 -164
  35. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
  36. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/Chart.js +120 -103
  37. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/Chart.js.map +1 -1
  38. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/ChartsGroup.js +4 -4
  39. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedAreaElement.js +105 -0
  40. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedAreaElement.js.map +1 -0
  41. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedBarElement.js +66 -59
  42. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedBarElement.js.map +1 -1
  43. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js +57 -54
  44. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js.map +1 -1
  45. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedArea.js +17 -0
  46. package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedArea.js.map +1 -0
  47. package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js +24 -9
  48. package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js.map +1 -1
  49. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/_commonjsHelpers.js +9 -0
  50. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/_commonjsHelpers.js.map +1 -0
  51. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/canonicalize.js +8 -0
  52. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/canonicalize.js.map +1 -0
  53. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/lodash.js +8 -0
  54. package/dist/{_virtual → node_modules/@milaboratories/pf-plots/dist/_virtual}/lodash.js.map +1 -1
  55. package/dist/{_virtual/lodash.js → node_modules/@milaboratories/pf-plots/dist/_virtual/lodash2.js} +1 -1
  56. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/lodash2.js.map +1 -0
  57. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/stringify.js +3 -0
  58. package/dist/{_virtual → node_modules/@milaboratories/pf-plots/dist/_virtual}/stringify.js.map +1 -1
  59. package/dist/{_virtual/stringify.js → node_modules/@milaboratories/pf-plots/dist/_virtual/stringify2.js} +1 -1
  60. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/stringify2.js.map +1 -0
  61. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js +15 -0
  62. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js.map +1 -0
  63. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +198 -0
  64. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -0
  65. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +342 -0
  66. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -0
  67. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +278 -0
  68. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -0
  69. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +453 -0
  70. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js.map +1 -0
  71. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js +203 -0
  72. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js.map +1 -0
  73. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +432 -0
  74. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -0
  75. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js +170 -0
  76. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js.map +1 -0
  77. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +315 -0
  78. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -0
  79. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +323 -0
  80. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -0
  81. package/dist/node_modules/@milaboratories/pf-plots/dist/demoStore.js +11 -0
  82. package/dist/node_modules/@milaboratories/pf-plots/dist/demoStore.js.map +1 -0
  83. package/dist/node_modules/@milaboratories/pf-plots/dist/index.js +36 -3426
  84. package/dist/node_modules/@milaboratories/pf-plots/dist/index.js.map +1 -1
  85. package/dist/node_modules/@milaboratories/{pl-error-like → pf-plots/dist/node_modules/@milaboratories/pl-error-like}/dist/index.js +1 -1
  86. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-error-like/dist/index.js.map +1 -0
  87. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js +979 -0
  88. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js.map +1 -0
  89. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js +1599 -0
  90. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js.map +1 -0
  91. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/canonicalize/lib/canonicalize.js +19 -0
  92. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/canonicalize/lib/canonicalize.js.map +1 -0
  93. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/json-stringify-safe/stringify.js +26 -0
  94. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/json-stringify-safe/stringify.js.map +1 -0
  95. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/lodash/lodash.js +3678 -0
  96. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/lodash/lodash.js.map +1 -0
  97. package/dist/node_modules/{zod → @milaboratories/pf-plots/dist/node_modules/zod}/lib/index.js +1141 -1141
  98. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/zod/lib/index.js.map +1 -0
  99. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +247 -0
  100. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -0
  101. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js +62 -0
  102. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js.map +1 -0
  103. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +286 -0
  104. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -0
  105. package/package.json +3 -3
  106. package/dist/node_modules/@milaboratories/pl-error-like/dist/index.js.map +0 -1
  107. package/dist/node_modules/@milaboratories/pl-model-common/dist/index.js +0 -584
  108. package/dist/node_modules/@milaboratories/pl-model-common/dist/index.js.map +0 -1
  109. package/dist/node_modules/@platforma-sdk/model/dist/index.js +0 -1559
  110. package/dist/node_modules/@platforma-sdk/model/dist/index.js.map +0 -1
  111. package/dist/node_modules/json-stringify-safe/stringify.js +0 -20
  112. package/dist/node_modules/json-stringify-safe/stringify.js.map +0 -1
  113. package/dist/node_modules/lodash/lodash.js +0 -3678
  114. package/dist/node_modules/lodash/lodash.js.map +0 -1
  115. package/dist/node_modules/zod/lib/index.js.map +0 -1
@@ -0,0 +1,453 @@
1
+ import q from "../../_virtual/canonicalize.js";
2
+ import { ControllerBase as G } from "../ControllerBase.js";
3
+ import { ComponentController as r } from "../ComponentController.js";
4
+ import { columnOrAxisIdFromString as c, isColumnId as h } from "../../spec.js";
5
+ import { createLinkerMap as V, getFiltersFromStates as B, getAxesSpecsFromSources as $, getLinkerColumnsForSource as z, getColumnOrAxisValueLabelsId as N, getColumnOrAxisLabel as x } from "../../utils.js";
6
+ var k = Object.defineProperty, M = (O, t, e) => t in O ? k(O, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : O[t] = e, j = (O, t, e) => M(O, t + "", e);
7
+ const F = "pl7.app/dendrogram/nodeId", W = "id", K = {
8
+ type: "dendro",
9
+ components: {
10
+ value: { type: "simple", selectorStates: [] },
11
+ height: { type: "simple", selectorStates: [] },
12
+ labels: { type: "simple", selectorStates: [] },
13
+ tableContent: { type: "simple", selectorStates: [] },
14
+ nodeColor: { type: "simple", selectorStates: [] },
15
+ nodeShape: { type: "simple", selectorStates: [] },
16
+ nodeSize: { type: "simple", selectorStates: [] },
17
+ lineColor: { type: "simple", selectorStates: [] },
18
+ heatmapAnnotation: { type: "simple", selectorStates: [] },
19
+ heatmapForSequence: { type: "simple", selectorStates: [] },
20
+ filters: { type: "filter", selectorStates: [] },
21
+ tabBy: { type: "filter", selectorStates: [] },
22
+ facetBy: { type: "simple", selectorStates: [] },
23
+ heatmapAxis: { type: "simple", selectorStates: [] },
24
+ heatmapGroup: { type: "simple", selectorStates: [] }
25
+ },
26
+ dividedAxes: {}
27
+ };
28
+ class Q extends G {
29
+ constructor() {
30
+ super(
31
+ {
32
+ value: new r({
33
+ componentName: "value",
34
+ allowedTypes: ["Int", "Long"],
35
+ annotations: { "pl7.app/dendrogram/isTopology": "true" },
36
+ settings: {
37
+ isDataComponent: !0,
38
+ columnsAllowed: !0,
39
+ required: !0,
40
+ dimensionConsumer: !0,
41
+ columnsWithExtraAxesAllowed: !1
42
+ }
43
+ }),
44
+ height: new r({
45
+ componentName: "height",
46
+ allowedTypes: ["Int", "Long", "Double", "Float"],
47
+ annotations: { "pl7.app/dendrogram/isDistance": "true" },
48
+ parentComponents: ["value"],
49
+ strictlyDependsOnParents: !0,
50
+ settings: {
51
+ columnsAllowed: !0,
52
+ axesAllowed: !1,
53
+ dimensionConsumer: !0,
54
+ columnsWithExtraAxesAllowed: !1
55
+ }
56
+ }),
57
+ labels: new r({
58
+ componentName: "labels",
59
+ allowedTypes: ["Int", "String", "Long"],
60
+ parentComponents: ["value"],
61
+ strictlyDependsOnParents: !1,
62
+ settings: {
63
+ columnsAllowed: !0,
64
+ axesAllowed: !1,
65
+ columnsWithExtraAxesAllowed: !1
66
+ }
67
+ }),
68
+ tableContent: new r({
69
+ componentName: "tableContent",
70
+ allowedTypes: ["Int", "String", "Long", "Double", "Float"],
71
+ parentComponents: ["value"],
72
+ strictlyDependsOnParents: !1,
73
+ settings: {
74
+ columnsAllowed: !0,
75
+ axesAllowed: !0,
76
+ multipleSelectors: !0,
77
+ columnsWithExtraAxesAllowed: !1
78
+ }
79
+ }),
80
+ nodeShape: new r({
81
+ componentName: "nodeShape",
82
+ allowedTypes: ["Int", "String", "Long"],
83
+ parentComponents: ["value"],
84
+ strictlyDependsOnParents: !1,
85
+ settings: {
86
+ columnsAllowed: !0,
87
+ axesAllowed: !0,
88
+ columnsWithExtraAxesAllowed: !1
89
+ }
90
+ }),
91
+ nodeSize: new r({
92
+ componentName: "nodeSize",
93
+ allowedTypes: ["Double", "Int", "String", "Long"],
94
+ parentComponents: ["value"],
95
+ strictlyDependsOnParents: !1,
96
+ settings: {
97
+ columnsAllowed: !0,
98
+ axesAllowed: !0,
99
+ columnsWithExtraAxesAllowed: !1
100
+ }
101
+ }),
102
+ nodeColor: new r({
103
+ componentName: "nodeColor",
104
+ allowedTypes: ["Double", "Int", "String", "Long"],
105
+ parentComponents: ["value"],
106
+ strictlyDependsOnParents: !1,
107
+ settings: {
108
+ columnsAllowed: !0,
109
+ axesAllowed: !0,
110
+ columnsWithExtraAxesAllowed: !1
111
+ }
112
+ }),
113
+ lineColor: new r({
114
+ componentName: "lineColor",
115
+ allowedTypes: ["Double", "Int", "String", "Long"],
116
+ parentComponents: ["value"],
117
+ strictlyDependsOnParents: !1,
118
+ settings: {
119
+ columnsAllowed: !0,
120
+ axesAllowed: !1,
121
+ columnsWithExtraAxesAllowed: !1
122
+ }
123
+ }),
124
+ heatmapForSequence: new r({
125
+ componentName: "heatmapForSequence",
126
+ allowedTypes: ["String"],
127
+ annotations: { "pl7.app/type": "sequence" },
128
+ parentComponents: ["value"],
129
+ strictlyDependsOnParents: !1,
130
+ settings: {
131
+ columnsAllowed: !0,
132
+ axesAllowed: !0,
133
+ columnsWithExtraAxesAllowed: !1
134
+ }
135
+ }),
136
+ heatmapAnnotation: new r({
137
+ componentName: "heatmapAnnotation",
138
+ allowedTypes: ["Double", "Int", "Long", "Float", "String"],
139
+ parentComponents: ["value"],
140
+ strictlyDependsOnParents: !1,
141
+ settings: {
142
+ isDataComponent: !0,
143
+ columnsAllowed: !0,
144
+ axesAllowed: !1,
145
+ columnsWithExtraAxesAllowed: !1
146
+ }
147
+ }),
148
+ facetBy: new r({
149
+ componentName: "facetBy",
150
+ allowedTypes: ["String", "Int", "Long"],
151
+ parentComponents: ["value"],
152
+ strictlyDependsOnParents: !0,
153
+ settings: {
154
+ dimensionConsumer: !0,
155
+ multipleSelectors: !0,
156
+ axesAllowed: !0,
157
+ columnsAllowed: !1,
158
+ columnsWithExtraAxesAllowed: !1
159
+ }
160
+ }),
161
+ heatmapAxis: new r({
162
+ componentName: "heatmapAxis",
163
+ allowedTypes: ["String", "Int", "Long"],
164
+ parentComponents: ["heatmapAnnotation"],
165
+ settings: {
166
+ dimensionConsumer: !0,
167
+ axesAllowed: !0,
168
+ columnsAllowed: !1,
169
+ columnsWithExtraAxesAllowed: !1
170
+ }
171
+ }),
172
+ heatmapGroup: new r({
173
+ componentName: "heatmapGroup",
174
+ allowedTypes: ["String", "Int", "Long"],
175
+ parentComponents: ["heatmapAnnotation"],
176
+ settings: {
177
+ dimensionConsumer: !0,
178
+ multipleSelectors: !0,
179
+ axesAllowed: !0,
180
+ columnsAllowed: !1,
181
+ columnsWithExtraAxesAllowed: !1
182
+ }
183
+ })
184
+ },
185
+ {
186
+ filters: new r({
187
+ componentName: "filters",
188
+ allowedTypes: ["String", "Int", "Long"],
189
+ parentComponents: ["value", "heatmapAnnotation"],
190
+ strictlyDependsOnParents: !1,
191
+ settings: {
192
+ dimensionConsumer: !0,
193
+ multipleSelectors: !0,
194
+ axesAllowed: !0,
195
+ columnsAllowed: !1,
196
+ columnsWithExtraAxesAllowed: !1
197
+ }
198
+ }),
199
+ tabBy: new r({
200
+ componentName: "tabBy",
201
+ allowedTypes: ["String", "Int", "Long"],
202
+ parentComponents: ["value", "heatmapAnnotation"],
203
+ strictlyDependsOnParents: !1,
204
+ settings: {
205
+ dimensionConsumer: !0,
206
+ axesAllowed: !0,
207
+ columnsAllowed: !1,
208
+ columnsWithExtraAxesAllowed: !1
209
+ }
210
+ })
211
+ }
212
+ ), j(this, "ignoredOptionIdNames", [F]);
213
+ }
214
+ readyDataInputs(t) {
215
+ return t.components.value.selectorStates.length > 0;
216
+ }
217
+ async createTableData(t, e) {
218
+ var A;
219
+ const d = {}, S = (A = e.components.value.selectorStates[0]) == null ? void 0 : A.selectedSource, w = c(S);
220
+ if (!S || !h(w))
221
+ throw Error("Value column is not valid");
222
+ const b = await V(t), g = B([
223
+ ...e.components.filters.selectorStates,
224
+ ...e.components.tabBy.selectorStates
225
+ ]), y = [
226
+ ...e.components.filters.selectorStates.map((n) => c(n.selectedSource)),
227
+ ...e.components.tabBy.selectorStates.map((n) => c(n.selectedSource))
228
+ ].filter(h), u = [S], T = await $(t, u), D = [], i = [], p = [], f = [e.components.value], v = [
229
+ e.components.tableContent,
230
+ // next components can content data mapped on tree
231
+ e.components.labels,
232
+ e.components.nodeColor,
233
+ e.components.nodeSize,
234
+ e.components.nodeShape,
235
+ e.components.lineColor
236
+ ], o = {};
237
+ for (const n of f)
238
+ for (const { selectedSource: l, fixedAxes: s } of n.selectorStates) {
239
+ p.push(...await z(
240
+ t,
241
+ b,
242
+ T,
243
+ l,
244
+ s
245
+ ));
246
+ const a = await N(t, l, u) ?? c(l);
247
+ o[a.toCanonicalString()] = l, D.push(a);
248
+ }
249
+ for (const n of v)
250
+ for (const { selectedSource: l, fixedAxes: s } of n.selectorStates) {
251
+ p.push(...await z(
252
+ t,
253
+ b,
254
+ T,
255
+ l,
256
+ s
257
+ ));
258
+ const a = await N(t, l, u) ?? c(l);
259
+ o[l] = a.toCanonicalString(), i.push(a);
260
+ }
261
+ const m = await t.pFrameProvider.getTableOuterJoin(
262
+ [...D, ...y, ...p],
263
+ i,
264
+ g,
265
+ !1
266
+ );
267
+ for (const n of [...D, ...i]) {
268
+ const l = n.toCanonicalString(), s = o[n.toCanonicalString()];
269
+ d[s] = {
270
+ data: h(n) ? m.columnsData[l] : m.axesData[l],
271
+ spec: h(n) ? m.columnSpecs[l] : m.axesSpecs[l],
272
+ label: await x(t, s, u)
273
+ };
274
+ }
275
+ const C = Object.keys(m.axesData).find(
276
+ (n) => {
277
+ var l;
278
+ return ((l = c(n)) == null ? void 0 : l.name) === F;
279
+ }
280
+ );
281
+ return C ? d[W] = {
282
+ data: m.axesData[C],
283
+ spec: { kind: "PColumn", valueType: "Int", name: "Node id" },
284
+ label: "Node id"
285
+ } : console.warn("Missed node id axis in data column"), d;
286
+ }
287
+ async createDataByColumns(t, e) {
288
+ var A, d;
289
+ const S = (A = e.components.value.selectorStates[0]) == null ? void 0 : A.selectedSource, w = (d = e.components.heatmapAnnotation.selectorStates[0]) == null ? void 0 : d.selectedSource, b = c(S), g = w ? c(w) : null;
290
+ if (!S || !h(b))
291
+ throw Error("Value column is not valid");
292
+ const y = {
293
+ type: "columns",
294
+ id: q(e.components) ?? "",
295
+ values: {}
296
+ }, u = [
297
+ ...e.components.filters.selectorStates,
298
+ ...e.components.tabBy.selectorStates
299
+ ], T = B(u), D = u.map((s) => c(s.selectedSource)).filter(h), i = [b, g].filter(h).map((s) => s.toCanonicalString()), p = [], f = [], v = [], o = [], m = [
300
+ e.components.value,
301
+ e.components.height,
302
+ e.components.labels,
303
+ e.components.nodeColor,
304
+ e.components.nodeSize,
305
+ e.components.nodeShape,
306
+ e.components.lineColor,
307
+ e.components.heatmapAnnotation,
308
+ e.components.heatmapForSequence
309
+ ], C = [
310
+ e.components.facetBy,
311
+ e.components.heatmapAxis,
312
+ e.components.heatmapGroup,
313
+ e.components.tableContent
314
+ ];
315
+ for (const s of m)
316
+ for (const { selectedSource: a, fixedAxes: I } of s.selectorStates) {
317
+ p.push(c(a)), v.push(
318
+ (I ?? []).map(({ axisIdx: L, axisValue: P }) => ({ idx: L, value: P }))
319
+ );
320
+ const E = await N(t, a, i);
321
+ E && p.push(E);
322
+ }
323
+ u.forEach(({ fixedAxes: s }) => {
324
+ v.push(
325
+ (s ?? []).map(({ axisIdx: a, axisValue: I }) => ({ idx: a, value: I }))
326
+ );
327
+ });
328
+ for (const s of C)
329
+ for (const { selectedSource: a, fixedAxes: I } of s.selectorStates) {
330
+ f.push(c(a)), o.push(
331
+ (I ?? []).map(({ axisIdx: L, axisValue: P }) => ({ idx: L, value: P }))
332
+ );
333
+ const E = await N(t, a, i);
334
+ E && f.push(E);
335
+ }
336
+ const n = await t.pFrameProvider.getTableOuterJoin(
337
+ [...p, ...D],
338
+ f,
339
+ T,
340
+ !1,
341
+ v,
342
+ o
343
+ );
344
+ [...p, ...f].forEach((s) => {
345
+ const a = s.toCanonicalString(), I = h(s) ? n.columnsData[a] : n.axesData[a];
346
+ y.values[a] = [], y.values[a] = I;
347
+ });
348
+ const l = Object.keys(n.axesData).find(
349
+ (s) => {
350
+ var a;
351
+ return ((a = c(s)) == null ? void 0 : a.name) === F;
352
+ }
353
+ );
354
+ return l ? y.values[W] = n.axesData[l] : console.warn("Missed node id axis in data column"), { byColumns: y };
355
+ }
356
+ async createChartSettings(t, e) {
357
+ var A, d, S;
358
+ const w = (A = e.components.value.selectorStates[0]) == null ? void 0 : A.selectedSource, b = c(w);
359
+ if (!w || !h(b))
360
+ throw Error("Data column is not valid");
361
+ const g = [w], y = { type: "column", value: W }, u = { type: "column", value: w }, T = e.components.height.selectorStates.length ? { type: "column", value: e.components.height.selectorStates[0].selectedSource } : void 0, D = e.components.labels.selectorStates.length ? { type: "column", value: e.components.labels.selectorStates[0].selectedSource } : void 0, i = {};
362
+ if (e.components.nodeColor.selectorStates.length) {
363
+ const o = e.components.nodeColor.selectorStates[0].selectedSource;
364
+ i.nodeColor = {
365
+ columnName: {
366
+ type: "column",
367
+ value: o,
368
+ label: await x(t, o, g)
369
+ }
370
+ };
371
+ }
372
+ if (e.components.nodeShape.selectorStates.length) {
373
+ const o = e.components.nodeShape.selectorStates[0].selectedSource;
374
+ i.nodeShape = {
375
+ columnName: {
376
+ type: "column",
377
+ value: o,
378
+ label: await x(t, o, g)
379
+ }
380
+ };
381
+ }
382
+ if (e.components.nodeSize.selectorStates.length) {
383
+ const o = e.components.nodeSize.selectorStates[0].selectedSource;
384
+ i.nodeSize = {
385
+ columnName: {
386
+ type: "column",
387
+ value: o,
388
+ label: await x(t, o, g)
389
+ }
390
+ };
391
+ }
392
+ if (e.components.lineColor.selectorStates.length) {
393
+ const o = e.components.lineColor.selectorStates[0].selectedSource;
394
+ i.lineColor = {
395
+ columnName: {
396
+ type: "column",
397
+ value: o,
398
+ label: await x(t, o, g)
399
+ }
400
+ };
401
+ }
402
+ let p, f, v;
403
+ if (e.components.heatmapAnnotation.selectorStates.length && e.components.heatmapAxis.selectorStates.length) {
404
+ const o = e.components.heatmapAnnotation.selectorStates[0].selectedSource;
405
+ p = {
406
+ type: "column",
407
+ value: o,
408
+ label: await x(t, o, []),
409
+ valueLabels: (d = await N(t, o, [])) == null ? void 0 : d.toCanonicalString()
410
+ };
411
+ const m = e.components.heatmapAxis.selectorStates[0].selectedSource;
412
+ f = {
413
+ type: "column",
414
+ value: m,
415
+ label: await x(t, m, [o]),
416
+ valueLabels: (S = await N(t, m, [o])) == null ? void 0 : S.toCanonicalString()
417
+ }, v = await Promise.all(
418
+ e.components.heatmapGroup.selectorStates.map(async (C) => {
419
+ var n;
420
+ return {
421
+ type: "column",
422
+ value: C.selectedSource,
423
+ label: await x(t, C.selectedSource, [o]),
424
+ valueLabels: (n = await N(t, C.selectedSource, [o])) == null ? void 0 : n.toCanonicalString()
425
+ };
426
+ })
427
+ );
428
+ } else if (e.components.heatmapForSequence.selectorStates.length) {
429
+ const o = e.components.heatmapForSequence.selectorStates[0].selectedSource;
430
+ p = {
431
+ type: "column",
432
+ value: o,
433
+ label: await x(t, o, [])
434
+ };
435
+ }
436
+ return {
437
+ type: "dendro",
438
+ id: y,
439
+ parentId: u,
440
+ height: T,
441
+ labels: D,
442
+ aes: i,
443
+ heatmapAnnotation: p,
444
+ heatmapAxis: f,
445
+ heatmapGroup: v
446
+ };
447
+ }
448
+ }
449
+ export {
450
+ Q as DendroStateController,
451
+ K as InitialDendroState
452
+ };
453
+ //# sourceMappingURL=dendro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dendro.js","sources":["../../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/controllersByChartType/dendro.ts"],"sourcesContent":["import {AxisSpec, PColumnSpec} from '@milaboratories/pl-model-common';\nimport canonicalize from 'canonicalize';\nimport type {\n ComponentStateFilter,\n ComponentStateSimple,\n DataByColumns,\n InputState,\n InputStateParent,\n} from '../../common';\nimport {ControllerBase, PlotDataAndSettings} from '../ControllerBase';\nimport {ComponentController} from '../ComponentController';\nimport type {AxisId, ColumnId} from '../../spec';\nimport {columnOrAxisIdFromString, isColumnId} from '../../spec';\nimport type {DataStore, PValue} from '../../store';\nimport {\n createLinkerMap,\n getAxesSpecsFromSources,\n getColumnOrAxisLabel,\n getColumnOrAxisValueLabelsId,\n getFiltersFromStates, getLinkerColumnsForSource,\n} from '../../utils';\n\nconst TREE_ID_AXIS_NAME = 'pl7.app/dendrogram/treeId';\nconst NODE_ID_AXIS_NAME = 'pl7.app/dendrogram/nodeId';\nconst PATIENT_ID_AXIS_NAME = 'pl7.app/dendrogram/donorId';\n\nconst COLUMN_NODE_ID = 'id';\n\nexport interface DendroUIState extends InputStateParent<'dendro'> {\n components: {\n value: ComponentStateSimple;\n\n height: ComponentStateSimple;\n labels: ComponentStateSimple;\n\n tableContent: ComponentStateSimple;\n\n nodeColor: ComponentStateSimple;\n nodeShape: ComponentStateSimple;\n nodeSize: ComponentStateSimple;\n lineColor: ComponentStateSimple;\n\n heatmapForSequence: ComponentStateSimple;\n\n heatmapAnnotation: ComponentStateSimple;\n heatmapAxis: ComponentStateSimple;\n heatmapGroup: ComponentStateSimple;\n\n filters: ComponentStateFilter;\n tabBy: ComponentStateFilter;\n facetBy: ComponentStateSimple;\n };\n}\n\nexport const InitialDendroState: DendroUIState = {\n type: 'dendro',\n components: {\n value: {type: 'simple', selectorStates: []},\n\n height: {type: 'simple', selectorStates: []},\n labels: {type: 'simple', selectorStates: []},\n\n tableContent: {type: 'simple', selectorStates: []},\n\n nodeColor: {type: 'simple', selectorStates: []},\n nodeShape: {type: 'simple', selectorStates: []},\n nodeSize: {type: 'simple', selectorStates: []},\n lineColor: {type: 'simple', selectorStates: []},\n\n heatmapAnnotation: {type: 'simple', selectorStates: []},\n\n heatmapForSequence: {type: 'simple', selectorStates: []},\n filters: {type: 'filter', selectorStates: []},\n tabBy: {type: 'filter', selectorStates: []},\n facetBy: {type: 'simple', selectorStates: []},\n\n heatmapAxis: {type: 'simple', selectorStates: []},\n heatmapGroup: {type: 'simple', selectorStates: []},\n },\n dividedAxes: {},\n};\n\nexport function isDendroState(state: InputState): state is DendroUIState {\n return state.type == 'dendro';\n}\n\nexport class DendroStateController extends ControllerBase<DendroUIState> {\n readonly ignoredOptionIdNames = [NODE_ID_AXIS_NAME];\n\n constructor() {\n super(\n {\n value: new ComponentController<DendroUIState, 'value'>({\n componentName: 'value',\n allowedTypes: ['Int', 'Long'],\n annotations: {'pl7.app/dendrogram/isTopology': 'true'},\n settings: {\n isDataComponent: true,\n columnsAllowed: true,\n required: true,\n dimensionConsumer: true,\n columnsWithExtraAxesAllowed: false\n },\n }),\n height: new ComponentController<DendroUIState, 'height'>({\n componentName: 'height',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n annotations: {'pl7.app/dendrogram/isDistance': 'true'},\n parentComponents: ['value'],\n strictlyDependsOnParents: true,\n settings: {\n columnsAllowed: true,\n axesAllowed: false,\n dimensionConsumer: true,\n columnsWithExtraAxesAllowed: false\n },\n }),\n labels: new ComponentController<DendroUIState, 'labels'>({\n componentName: 'labels',\n allowedTypes: ['Int', 'String', 'Long'],\n parentComponents: ['value'],\n strictlyDependsOnParents: false,\n settings: {\n columnsAllowed: true,\n axesAllowed: false,\n columnsWithExtraAxesAllowed: false\n },\n }),\n tableContent: new ComponentController<DendroUIState, 'tableContent'>({\n componentName: 'tableContent',\n allowedTypes: ['Int', 'String', 'Long', 'Double', 'Float'],\n parentComponents: ['value'],\n strictlyDependsOnParents: false,\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n multipleSelectors: true,\n columnsWithExtraAxesAllowed: false\n },\n }),\n nodeShape: new ComponentController<DendroUIState, 'nodeShape'>({\n componentName: 'nodeShape',\n allowedTypes: ['Int', 'String', 'Long'],\n parentComponents: ['value'],\n strictlyDependsOnParents: false,\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n columnsWithExtraAxesAllowed: false\n },\n }),\n nodeSize: new ComponentController<DendroUIState, 'nodeSize'>({\n componentName: 'nodeSize',\n allowedTypes: ['Double', 'Int', 'String', 'Long'],\n parentComponents: ['value'],\n strictlyDependsOnParents: false,\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n columnsWithExtraAxesAllowed: false\n },\n }),\n nodeColor: new ComponentController<DendroUIState, 'nodeColor'>({\n componentName: 'nodeColor',\n allowedTypes: ['Double', 'Int', 'String', 'Long'],\n parentComponents: ['value'],\n strictlyDependsOnParents: false,\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n columnsWithExtraAxesAllowed: false\n },\n }),\n lineColor: new ComponentController<DendroUIState, 'lineColor'>({\n componentName: 'lineColor',\n allowedTypes: ['Double', 'Int', 'String', 'Long'],\n parentComponents: ['value'],\n strictlyDependsOnParents: false,\n settings: {\n columnsAllowed: true,\n axesAllowed: false,\n columnsWithExtraAxesAllowed: false\n },\n }),\n heatmapForSequence: new ComponentController<DendroUIState, 'heatmapForSequence'>({\n componentName: 'heatmapForSequence',\n allowedTypes: ['String'],\n annotations: {'pl7.app/type': 'sequence'},\n parentComponents: ['value'],\n strictlyDependsOnParents: false,\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n columnsWithExtraAxesAllowed: false\n },\n }),\n heatmapAnnotation: new ComponentController<DendroUIState, 'heatmapAnnotation'>({\n componentName: 'heatmapAnnotation',\n allowedTypes: ['Double', 'Int', 'Long', 'Float', 'String'],\n parentComponents: ['value'],\n strictlyDependsOnParents: false,\n settings: {\n isDataComponent: true,\n columnsAllowed: true,\n axesAllowed: false,\n columnsWithExtraAxesAllowed: false\n },\n }),\n facetBy: new ComponentController<DendroUIState, 'facetBy'>({\n componentName: 'facetBy',\n allowedTypes: ['String', 'Int', 'Long'],\n parentComponents: ['value'],\n strictlyDependsOnParents: true,\n settings: {\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: false,\n columnsWithExtraAxesAllowed: false\n },\n }),\n heatmapAxis: new ComponentController<DendroUIState, 'heatmapAxis'>({\n componentName: 'heatmapAxis',\n allowedTypes: ['String', 'Int', 'Long'],\n parentComponents: ['heatmapAnnotation'],\n settings: {\n dimensionConsumer: true,\n axesAllowed: true,\n columnsAllowed: false,\n columnsWithExtraAxesAllowed: false\n },\n }),\n heatmapGroup: new ComponentController<DendroUIState, 'heatmapGroup'>({\n componentName: 'heatmapGroup',\n allowedTypes: ['String', 'Int', 'Long'],\n parentComponents: ['heatmapAnnotation'],\n settings: {\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: false,\n columnsWithExtraAxesAllowed: false\n },\n }),\n },\n {\n filters: new ComponentController<DendroUIState, 'filters'>({\n componentName: 'filters',\n allowedTypes: ['String', 'Int', 'Long'],\n parentComponents: ['value', 'heatmapAnnotation'],\n strictlyDependsOnParents: false,\n settings: {\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: false,\n columnsWithExtraAxesAllowed: false\n },\n }),\n tabBy: new ComponentController<DendroUIState, 'tabBy'>({\n componentName: 'tabBy',\n allowedTypes: ['String', 'Int', 'Long'],\n parentComponents: ['value', 'heatmapAnnotation'],\n strictlyDependsOnParents: false,\n settings: {\n dimensionConsumer: true,\n axesAllowed: true,\n columnsAllowed: false,\n columnsWithExtraAxesAllowed: false\n },\n }),\n }\n );\n }\n\n readyDataInputs(state: DendroUIState): boolean {\n return state.components.value.selectorStates.length > 0;\n }\n\n async createTableData(\n store: DataStore,\n state: DendroUIState\n ): Promise<\n Record<\n string,\n {\n label: string;\n spec: PColumnSpec | AxisSpec;\n data: PValue[];\n }\n >\n > {\n const result: Record<string, {label: string; spec: PColumnSpec | AxisSpec; data: PValue[]}> = {};\n\n const valueColumnIdString = state.components.value.selectorStates[0]?.selectedSource;\n const valueColumnId = columnOrAxisIdFromString(valueColumnIdString);\n if (!valueColumnIdString || !isColumnId(valueColumnId)) {\n throw Error('Value column is not valid');\n }\n\n const linkerMap = await createLinkerMap(store);\n\n // filters for column/axes data requests\n const filters = getFiltersFromStates([\n ...state.components.filters.selectorStates,\n ...state.components.tabBy.selectorStates\n ]);\n const filterColumns = [\n ...state.components.filters.selectorStates.map(s => columnOrAxisIdFromString(s.selectedSource)),\n ...state.components.tabBy.selectorStates.map(s => columnOrAxisIdFromString(s.selectedSource)),\n ].filter(isColumnId);\n\n const parentSources = [valueColumnIdString];\n const parentAxesList = await getAxesSpecsFromSources(store, parentSources);\n\n const primarySources: (ColumnId | AxisId)[] = [];\n const secondarySources: (ColumnId | AxisId)[] = [];\n const linkerColumns:ColumnId[] = [];\n\n const primaryInputs = [state.components.value];\n const secondaryInputs = [\n state.components.tableContent,\n // next components can content data mapped on tree\n state.components.labels,\n state.components.nodeColor,\n state.components.nodeSize,\n state.components.nodeShape,\n state.components.lineColor,\n ];\n\n const idMap: Record<string, string> = {};\n\n for (const primaryInput of primaryInputs) {\n for (const {selectedSource, fixedAxes} of primaryInput.selectorStates) {\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n parentAxesList,\n selectedSource,\n fixedAxes\n ));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n const id = labelsColumnId ?? columnOrAxisIdFromString(selectedSource);\n idMap[id.toCanonicalString()] = selectedSource;\n primarySources.push(id);\n }\n }\n for (const secondaryInput of secondaryInputs) {\n for (const {selectedSource, fixedAxes} of secondaryInput.selectorStates) {\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n parentAxesList,\n selectedSource,\n fixedAxes\n ));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n const id = labelsColumnId ?? columnOrAxisIdFromString(selectedSource);\n idMap[selectedSource] = id.toCanonicalString();\n secondarySources.push(id);\n }\n }\n\n // use outer join between primary columns - inner join can remove useful points in tree and annotations\n const data = await store.pFrameProvider.getTableOuterJoin(\n [...primarySources, ...filterColumns, ...linkerColumns],\n secondarySources,\n filters,\n false\n );\n\n for (const source of [...primarySources, ...secondarySources]) {\n const responseKey = source.toCanonicalString();\n const resultKey = idMap[source.toCanonicalString()];\n result[resultKey] = {\n data: isColumnId(source) ? data.columnsData[responseKey] : data.axesData[responseKey],\n spec: isColumnId(source) ? data.columnSpecs[responseKey] : data.axesSpecs[responseKey],\n label: await getColumnOrAxisLabel(store, resultKey, parentSources),\n };\n }\n\n const nodeIdAxis = Object.keys(data.axesData).find(\n axisIdStr => columnOrAxisIdFromString(axisIdStr)?.name === NODE_ID_AXIS_NAME\n );\n if (!nodeIdAxis) {\n console.warn('Missed node id axis in data column');\n } else {\n result[COLUMN_NODE_ID] = {\n data: data.axesData[nodeIdAxis],\n spec: {kind: 'PColumn', valueType: 'Int', name: 'Node id'} as PColumnSpec,\n label: 'Node id',\n };\n }\n return result;\n }\n\n async createDataByColumns(store: DataStore, state: DendroUIState): Promise<PlotDataAndSettings['data']> {\n const valueColumnIdString = state.components.value.selectorStates[0]?.selectedSource;\n const annotationColumnIdString = state.components.heatmapAnnotation.selectorStates[0]?.selectedSource;\n const valueColumnId = columnOrAxisIdFromString(valueColumnIdString);\n const annotationColumnId = annotationColumnIdString ? columnOrAxisIdFromString(annotationColumnIdString) : null;\n\n if (!valueColumnIdString || !isColumnId(valueColumnId)) {\n throw Error('Value column is not valid');\n }\n const dataByColumns: DataByColumns = {\n type: 'columns',\n id: canonicalize(state.components) ?? '',\n values: {},\n };\n\n const filterSelectedStates = [\n ...state.components.filters.selectorStates,\n ...state.components.tabBy.selectorStates\n ]\n // filters for column/axes data requests\n const filters = getFiltersFromStates(filterSelectedStates);\n const filterColumns = filterSelectedStates.map(s => columnOrAxisIdFromString(s.selectedSource)).filter(isColumnId);\n\n\n const parentSources = [valueColumnId, annotationColumnId]\n .filter(isColumnId)\n .map(item => item.toCanonicalString());\n\n const primarySources: (ColumnId | AxisId)[] = [];\n const secondarySources: (ColumnId | AxisId)[] = [];\n const primarySourcesFixedAxes:{idx: number, value: PValue}[][] = [];\n const secondarySourcesFixedAxes:{idx: number, value: PValue}[][] = [];\n\n const primaryInputs = [\n state.components.value,\n state.components.height,\n state.components.labels,\n state.components.nodeColor,\n state.components.nodeSize,\n state.components.nodeShape,\n state.components.lineColor,\n state.components.heatmapAnnotation,\n state.components.heatmapForSequence,\n ];\n const secondaryInputs = [\n state.components.facetBy,\n state.components.heatmapAxis,\n state.components.heatmapGroup,\n state.components.tableContent,\n ];\n for (const primaryInput of primaryInputs) {\n for (const {selectedSource, fixedAxes} of primaryInput.selectorStates) {\n primarySources.push(columnOrAxisIdFromString(selectedSource));\n primarySourcesFixedAxes.push(\n (fixedAxes ?? []).map(({axisIdx, axisValue}) => ({idx: axisIdx, value: axisValue as PValue}))\n );\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n if (labelsColumnId) {\n primarySources.push(labelsColumnId);\n }\n }\n }\n filterSelectedStates.forEach(({fixedAxes}) => {\n primarySourcesFixedAxes.push(\n (fixedAxes ?? []).map(({axisIdx, axisValue}) => ({idx: axisIdx, value: axisValue as PValue}))\n );\n });\n for (const secondaryInput of secondaryInputs) {\n for (const {selectedSource, fixedAxes} of secondaryInput.selectorStates) {\n secondarySources.push(columnOrAxisIdFromString(selectedSource));\n secondarySourcesFixedAxes.push(\n (fixedAxes ?? []).map(({axisIdx, axisValue}) => ({idx: axisIdx, value: axisValue as PValue}))\n );\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n if (labelsColumnId) {\n secondarySources.push(labelsColumnId);\n }\n }\n }\n\n // use outer join between primary columns - inner join can remove useful points in tree and annotations\n const data = await store.pFrameProvider.getTableOuterJoin(\n [...primarySources, ...filterColumns],\n secondarySources,\n filters,\n false,\n primarySourcesFixedAxes,\n secondarySourcesFixedAxes\n );\n\n [...primarySources, ...secondarySources].forEach(item => {\n const key = item.toCanonicalString();\n const columnData = isColumnId(item) ? data.columnsData[key] : data.axesData[key];\n dataByColumns.values[key] = [];\n dataByColumns.values[key] = columnData;\n });\n\n const nodeIdAxis = Object.keys(data.axesData).find(\n axisIdStr => columnOrAxisIdFromString(axisIdStr)?.name === NODE_ID_AXIS_NAME\n );\n\n if (!nodeIdAxis) {\n console.warn('Missed node id axis in data column');\n } else {\n dataByColumns.values[COLUMN_NODE_ID] = data.axesData[nodeIdAxis];\n }\n\n return {byColumns: dataByColumns};\n }\n\n async createChartSettings(store: DataStore, state: DendroUIState): Promise<Record<string, unknown>> {\n const dataColumnIdString = state.components.value.selectorStates[0]?.selectedSource;\n const dataColumnId = columnOrAxisIdFromString(dataColumnIdString);\n if (!dataColumnIdString || !isColumnId(dataColumnId)) {\n throw Error('Data column is not valid');\n }\n\n const parentSourcesTree = [dataColumnIdString];\n\n const id = {type: 'column', value: COLUMN_NODE_ID};\n const parentId = {type: 'column', value: dataColumnIdString};\n const height = state.components.height.selectorStates.length\n ? {type: 'column', value: state.components.height.selectorStates[0].selectedSource}\n : undefined;\n const labels = state.components.labels.selectorStates.length\n ? {type: 'column', value: state.components.labels.selectorStates[0].selectedSource}\n : undefined;\n const aes: {\n nodeColor?: {columnName: {type: 'column'; value: string; label: string}};\n nodeShape?: {columnName: {type: 'column'; value: string; label: string}};\n nodeSize?: {columnName: {type: 'column'; value: string; label: string}};\n lineColor?: {columnName: {type: 'column'; value: string; label: string}};\n } = {};\n if (state.components.nodeColor.selectorStates.length) {\n const idString = state.components.nodeColor.selectorStates[0].selectedSource;\n aes.nodeColor = {\n columnName: {\n type: 'column',\n value: idString,\n label: await getColumnOrAxisLabel(store, idString, parentSourcesTree),\n },\n };\n }\n if (state.components.nodeShape.selectorStates.length) {\n const idString = state.components.nodeShape.selectorStates[0].selectedSource;\n aes.nodeShape = {\n columnName: {\n type: 'column',\n value: idString,\n label: await getColumnOrAxisLabel(store, idString, parentSourcesTree),\n },\n };\n }\n if (state.components.nodeSize.selectorStates.length) {\n const idString = state.components.nodeSize.selectorStates[0].selectedSource;\n aes.nodeSize = {\n columnName: {\n type: 'column',\n value: idString,\n label: await getColumnOrAxisLabel(store, idString, parentSourcesTree),\n },\n };\n }\n if (state.components.lineColor.selectorStates.length) {\n const idString = state.components.lineColor.selectorStates[0].selectedSource;\n aes.lineColor = {\n columnName: {\n type: 'column',\n value: idString,\n label: await getColumnOrAxisLabel(store, idString, parentSourcesTree),\n },\n };\n }\n\n let heatmapAnnotation;\n let heatmapAxis;\n let heatmapGroup;\n\n // heatmap with user axis, with not sequence as value\n if (\n state.components.heatmapAnnotation.selectorStates.length &&\n state.components.heatmapAxis.selectorStates.length\n ) {\n const annotationSource = state.components.heatmapAnnotation.selectorStates[0].selectedSource;\n heatmapAnnotation = {\n type: 'column',\n value: annotationSource,\n label: await getColumnOrAxisLabel(store, annotationSource, []),\n valueLabels: (await getColumnOrAxisValueLabelsId(store, annotationSource, []))?.toCanonicalString(),\n };\n const axisSource = state.components.heatmapAxis.selectorStates[0].selectedSource;\n heatmapAxis = {\n type: 'column',\n value: axisSource,\n label: await getColumnOrAxisLabel(store, axisSource, [annotationSource]),\n valueLabels: (\n await getColumnOrAxisValueLabelsId(store, axisSource, [annotationSource])\n )?.toCanonicalString(),\n };\n heatmapGroup = await Promise.all(\n state.components.heatmapGroup.selectorStates.map(async selectorState => {\n return {\n type: 'column',\n value: selectorState.selectedSource,\n label: await getColumnOrAxisLabel(store, selectorState.selectedSource, [annotationSource]),\n valueLabels: (\n await getColumnOrAxisValueLabelsId(store, selectorState.selectedSource, [annotationSource])\n )?.toCanonicalString(),\n };\n })\n );\n\n // heatmap containing sequence, as axis using order of sequence element\n } else if (state.components.heatmapForSequence.selectorStates.length) {\n const annotationSource = state.components.heatmapForSequence.selectorStates[0].selectedSource;\n heatmapAnnotation = {\n type: 'column',\n value: annotationSource,\n label: await getColumnOrAxisLabel(store, annotationSource, []),\n };\n }\n\n return {\n type: 'dendro',\n id,\n parentId,\n height,\n labels,\n aes,\n heatmapAnnotation,\n heatmapAxis,\n heatmapGroup,\n };\n }\n}\n"],"names":["NODE_ID_AXIS_NAME","COLUMN_NODE_ID","InitialDendroState","DendroStateController","ControllerBase","ComponentController","__publicField","state","store","result","valueColumnIdString","_a","valueColumnId","columnOrAxisIdFromString","isColumnId","linkerMap","createLinkerMap","filters","getFiltersFromStates","filterColumns","s","parentSources","parentAxesList","getAxesSpecsFromSources","primarySources","secondarySources","linkerColumns","primaryInputs","secondaryInputs","idMap","primaryInput","selectedSource","fixedAxes","getLinkerColumnsForSource","id","getColumnOrAxisValueLabelsId","secondaryInput","data","source","responseKey","resultKey","getColumnOrAxisLabel","nodeIdAxis","axisIdStr","annotationColumnIdString","_b","annotationColumnId","dataByColumns","canonicalize","filterSelectedStates","item","primarySourcesFixedAxes","secondarySourcesFixedAxes","axisIdx","axisValue","labelsColumnId","key","columnData","dataColumnIdString","dataColumnId","parentSourcesTree","parentId","height","labels","aes","idString","heatmapAnnotation","heatmapAxis","heatmapGroup","annotationSource","axisSource","_c","selectorState"],"mappings":"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","x_google_ignoreList":[0]}