@milaboratories/graph-maker 1.1.150 → 1.1.152

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 (98) hide show
  1. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.d.ts.map +1 -1
  2. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.js +2 -1
  3. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.js.map +1 -1
  4. package/dist/GraphMaker/components/Chart.vue.js +3 -3
  5. package/dist/GraphMaker/components/Chart.vue.js.map +1 -1
  6. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts +3 -12
  7. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts.map +1 -1
  8. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js +42 -85
  9. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js.map +1 -1
  10. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.d.ts +1 -9
  11. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.d.ts.map +1 -1
  12. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js +44 -89
  13. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js.map +1 -1
  14. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.d.ts +1 -3
  15. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.d.ts.map +1 -1
  16. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js +68 -86
  17. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js.map +1 -1
  18. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts +7 -11
  19. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts.map +1 -1
  20. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js +48 -91
  21. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js.map +1 -1
  22. package/dist/GraphMaker/components/DragAndDrop/types.d.ts +1 -21
  23. package/dist/GraphMaker/components/DragAndDrop/types.d.ts.map +1 -1
  24. package/dist/GraphMaker/components/PlColorSliderThumb.vue.js +18 -18
  25. package/dist/GraphMaker/components/PlColorSliderThumb.vue.js.map +1 -1
  26. package/dist/GraphMaker/constantsCommon.d.ts +0 -1
  27. package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
  28. package/dist/GraphMaker/constantsCommon.js +95 -95
  29. package/dist/GraphMaker/constantsCommon.js.map +1 -1
  30. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.d.ts.map +1 -1
  31. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js +128 -166
  32. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js.map +1 -1
  33. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.d.ts.map +1 -1
  34. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js +93 -131
  35. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js.map +1 -1
  36. package/dist/GraphMaker/forms/DataMappingForm/utils.d.ts +1 -1
  37. package/dist/GraphMaker/forms/DataMappingForm/utils.d.ts.map +1 -1
  38. package/dist/GraphMaker/forms/DataMappingForm/utils.js +79 -155
  39. package/dist/GraphMaker/forms/DataMappingForm/utils.js.map +1 -1
  40. package/dist/GraphMaker/forms/index.js +2 -2
  41. package/dist/GraphMaker/forms/index.js.map +1 -1
  42. package/dist/GraphMaker/icons/StackedAreaIcon.vue.d.ts +3 -0
  43. package/dist/GraphMaker/icons/StackedAreaIcon.vue.d.ts.map +1 -0
  44. package/dist/GraphMaker/icons/StackedAreaIcon.vue.js +19 -0
  45. package/dist/GraphMaker/icons/StackedAreaIcon.vue.js.map +1 -0
  46. package/dist/GraphMaker/index.vue.js +1 -1
  47. package/dist/GraphMaker/store.d.ts.map +1 -1
  48. package/dist/GraphMaker/store.js +43 -45
  49. package/dist/GraphMaker/store.js.map +1 -1
  50. package/dist/GraphMaker/types.d.ts +1 -1
  51. package/dist/GraphMaker/types.d.ts.map +1 -1
  52. package/dist/GraphMaker/utils/addFixedOptionsToState.js +2 -2
  53. package/dist/GraphMaker/utils/addFixedOptionsToState.js.map +1 -1
  54. package/dist/GraphMaker/utils/createChartSettingsForRender/composeChartSettings.js +25 -25
  55. package/dist/GraphMaker/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
  56. package/dist/GraphMaker/utils/loadDefaultSources.d.ts +2 -3
  57. package/dist/GraphMaker/utils/loadDefaultSources.d.ts.map +1 -1
  58. package/dist/GraphMaker/utils/loadDefaultSources.js +47 -51
  59. package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
  60. package/dist/GraphMaker/utils/loadUniqueValuesToSave.d.ts.map +1 -1
  61. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js +39 -41
  62. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js.map +1 -1
  63. package/dist/lib.js +1 -1
  64. package/dist/node_modules/@milaboratories/helpers/dist/objects.js +33 -0
  65. package/dist/node_modules/@milaboratories/helpers/dist/objects.js.map +1 -0
  66. package/dist/node_modules/@milaboratories/helpers/dist/utils.js +12 -0
  67. package/dist/node_modules/@milaboratories/helpers/dist/utils.js.map +1 -0
  68. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js +6 -5
  69. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js.map +1 -1
  70. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +146 -149
  71. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -1
  72. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +168 -221
  73. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -1
  74. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +95 -102
  75. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -1
  76. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +145 -156
  77. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js.map +1 -1
  78. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js +68 -75
  79. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js.map +1 -1
  80. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +154 -159
  81. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -1
  82. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js +48 -55
  83. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js.map +1 -1
  84. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +114 -122
  85. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -1
  86. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +111 -119
  87. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -1
  88. package/dist/node_modules/@milaboratories/pf-plots/dist/index.js +4 -4
  89. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +70 -69
  90. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -1
  91. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js +2 -2
  92. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js.map +1 -1
  93. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +184 -183
  94. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -1
  95. package/dist/node_modules/@vueuse/shared/index.js.map +1 -1
  96. package/package.json +4 -4
  97. package/dist/node_modules/@milaboratories/helpers/dist/index.js +0 -372
  98. package/dist/node_modules/@milaboratories/helpers/dist/index.js.map +0 -1
@@ -1,74 +1,22 @@
1
1
  import "./node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js";
2
- import { getNormalizedAxesList as F } from "./node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js";
2
+ import { getNormalizedAxesList as x } from "./node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js";
3
3
  import w from "./_virtual/canonicalize.js";
4
- import { LinkerMap as L } from "./node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/linker_columns.js";
4
+ import { LinkerMap as E } from "./node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/linker_columns.js";
5
5
  import "./node_modules/@milaboratories/pl-model-common/dist/plid.js";
6
6
  import "./node_modules/@milaboratories/pl-model-common/dist/ref.js";
7
- import { columnOrAxisIdFromString as f, isColumnId as S, AxisId as d, ColumnId as T, isAxisId as C } from "./spec.js";
8
- import { SUBSET_FILTER_KEY as I, DISCRETE_FILTER_KEY as A, IS_LINKER_COLUMN as M, COLUMN_LABEL_KEY as O, IS_VIRTUAL_COLUMN as $, AXIS_NATURE_KEY as R, COLUMN_NAME_KEY as V, COLUMN_DOMAIN_KEY as U } from "./constants.js";
9
- async function te(e, n, a, o, i, t, r = !0, c) {
10
- var l, p, y, g;
11
- const u = f(n);
12
- if (S(u)) {
13
- const s = await e.pFrameProvider.getColumnSpecById(u);
14
- if (!s)
15
- return;
16
- const v = G(
17
- s,
18
- i,
19
- t,
20
- c
21
- ).map((m) => d.fromAxisSpec(m).toCanonicalString()), B = new Set(v), P = s.axesSpec.map((m) => d.fromAxisSpec(m).toCanonicalString()), b = {};
22
- r && P.forEach((m, x) => {
23
- B.has(m) && (b[m] = x);
24
- });
25
- const k = {
26
- kind: "column",
27
- name: s.name,
28
- label: a ?? await h(e, n, []),
29
- type: s.valueType,
30
- spec: s,
31
- annotations: s.annotations,
32
- isSubsetFilter: ((l = s.annotations) == null ? void 0 : l[I]) === "true",
33
- isDiscreteFilter: s.valueType === "String" || ((p = s.annotations) == null ? void 0 : p[A]) === "true",
34
- axesToBeFixed: v,
35
- axesToBeFixedIndexes: b
36
- };
37
- o.set(u.toCanonicalString(), k);
38
- for (const m of s.axesSpec) {
39
- const x = d.fromAxisSpec(m).toCanonicalString();
40
- if (o.has(x))
41
- continue;
42
- const N = z(m), D = {
43
- kind: "axis",
44
- name: m.name,
45
- label: await h(e, x, [n]),
46
- type: m.type,
47
- mustBeConsumed: N,
48
- dividable: !1,
49
- spec: m,
50
- annotations: m.annotations,
51
- isSubsetFilter: ((y = m.annotations) == null ? void 0 : y[I]) === "true",
52
- isDiscreteFilter: m.type === "String" || ((g = m.annotations) == null ? void 0 : g[A]) === "true",
53
- parentSources: [n]
54
- };
55
- o.set(x, D);
56
- }
57
- }
58
- }
59
- function oe(e) {
60
- const n = f(e), { name: a, type: o } = n;
61
- return S(n) ? {
7
+ import { ColumnId as A, AxisId as g, columnOrAxisIdFromString as S, isColumnId as y, isAxisId as C } from "./spec.js";
8
+ import { IS_LINKER_COLUMN as $, MULTIPLIES_BY as F, COLUMN_LABEL_KEY as P, IS_VIRTUAL_COLUMN as k, SUBSET_FILTER_KEY as O, AXIS_NATURE_KEY as _, COLUMN_NAME_KEY as R, COLUMN_DOMAIN_KEY as V } from "./constants.js";
9
+ function X(n) {
10
+ const t = S(n), { name: a, type: o } = t;
11
+ return y(t) ? {
62
12
  kind: "column",
63
13
  name: "",
64
14
  label: " ",
65
- type: n.type,
66
- spec: { axesSpec: [], kind: "PColumn", valueType: n.type, name: a },
15
+ type: t.type,
16
+ spec: { axesSpec: [], kind: "PColumn", valueType: t.type, name: a },
67
17
  annotations: void 0,
68
18
  isSubsetFilter: !1,
69
- isDiscreteFilter: n.type === "String",
70
- axesToBeFixed: [],
71
- axesToBeFixedIndexes: {}
19
+ isDiscreteFilter: t.type === "String"
72
20
  } : {
73
21
  kind: "axis",
74
22
  name: "",
@@ -80,83 +28,91 @@ function oe(e) {
80
28
  annotations: void 0,
81
29
  isSubsetFilter: !1,
82
30
  isDiscreteFilter: o === "String",
31
+ isNonHomogenous: !1,
83
32
  parentSources: []
84
33
  };
85
34
  }
86
- function ae(e) {
35
+ function Z(n) {
87
36
  return {
88
- type: e.type,
89
- components: { ...e.components },
90
- dividedAxes: { ...e.dividedAxes }
37
+ type: n.type,
38
+ components: { ...n.components },
39
+ dividedAxes: { ...n.dividedAxes }
91
40
  };
92
41
  }
93
- function K(e) {
94
- const { selectedSource: n, type: a, selectedFilterRange: o, selectedFilterValue: i } = e, t = f(n);
95
- if (!t)
42
+ function L(n, t) {
43
+ if (t === "Int" || t === "Long")
44
+ return Math.floor(n);
45
+ }
46
+ function B(n) {
47
+ const { selectedSource: t, type: a, selectedFilterRange: o, selectedFilterValues: i } = n, e = S(t);
48
+ if (!e)
96
49
  throw Error("Empty source selected");
97
50
  if (a === "range") {
98
51
  const r = [];
99
52
  return (o == null ? void 0 : o.max) !== void 0 && r.push({
100
53
  type: "bySingleColumnV2",
101
- column: C(t) ? { type: "axis", id: t.toPFrameId() } : { type: "column", id: t.name },
54
+ column: C(e) ? { type: "axis", id: e.toPFrameId() } : { type: "column", id: e.name },
102
55
  predicate: {
103
56
  operator: "LessOrEqual",
104
- reference: o.max
57
+ reference: L(o.max, e.type)
105
58
  }
106
59
  }), (o == null ? void 0 : o.min) !== void 0 && r.push({
107
60
  type: "bySingleColumnV2",
108
- column: C(t) ? { type: "axis", id: t.toPFrameId() } : { type: "column", id: t.name },
61
+ column: C(e) ? { type: "axis", id: e.toPFrameId() } : { type: "column", id: e.name },
109
62
  predicate: {
110
63
  operator: "GreaterOrEqual",
111
- reference: o == null ? void 0 : o.min
64
+ reference: L(o.min, e.type)
112
65
  }
113
66
  }), r;
114
67
  } else if (a === "subset")
115
68
  return [
116
69
  {
117
70
  type: "bySingleColumnV2",
118
- column: C(t) ? { type: "axis", id: t.toPFrameId() } : { type: "column", id: t.name },
71
+ column: C(e) ? { type: "axis", id: e.toPFrameId() } : { type: "column", id: e.name },
119
72
  predicate: {
120
73
  operator: "Not",
121
74
  operand: { operator: "IsNA" }
122
75
  }
123
76
  }
124
77
  ];
125
- return typeof i > "u" ? [] : [
78
+ return typeof i > "u" || !i.length ? [] : [
126
79
  {
127
80
  type: "bySingleColumnV2",
128
- column: C(t) ? { type: "axis", id: t.toPFrameId() } : {
81
+ column: C(e) ? { type: "axis", id: e.toPFrameId() } : {
129
82
  type: "column",
130
- id: t.name
83
+ id: e.name
131
84
  },
132
85
  predicate: {
133
- operator: "Equal",
134
- reference: t.type === "String" ? String(i) : Number(i)
86
+ operator: "Or",
87
+ operands: i.map((r) => ({
88
+ operator: "Equal",
89
+ reference: e.type === "String" ? String(r) : Number(r)
90
+ }))
135
91
  }
136
92
  }
137
93
  ];
138
94
  }
139
- function ie(e) {
140
- const n = [];
141
- for (const a of e)
142
- n.push(...K(a));
143
- return n;
95
+ function ee(n) {
96
+ const t = [];
97
+ for (const a of n)
98
+ t.push(...B(a));
99
+ return t;
144
100
  }
145
- function E(e) {
146
- var n, a;
147
- if ("kind" in e && e.kind === "PColumn") {
148
- const t = e.name ?? ((n = e.annotations) == null ? void 0 : n[V]), r = e.domain ?? ((a = e.annotations) == null ? void 0 : a[U]);
149
- return w({ name: t, domain: r });
101
+ function b(n) {
102
+ var t, a;
103
+ if ("kind" in n && n.kind === "PColumn") {
104
+ const e = n.name ?? ((t = n.annotations) == null ? void 0 : t[R]), r = n.domain ?? ((a = n.annotations) == null ? void 0 : a[V]);
105
+ return w({ name: e, domain: r });
150
106
  }
151
- const o = e.name, i = e.domain;
107
+ const o = n.name, i = n.domain;
152
108
  return w({ name: o, domain: i });
153
109
  }
154
- async function _(e, n, a) {
110
+ async function N(n, t, a) {
155
111
  for (const o of a) {
156
- const i = f(o);
157
- if (S(i)) {
158
- const t = await e.pFrameProvider.getColumnSpecById(i), r = ((t == null ? void 0 : t.axesSpec) ?? []).find(
159
- (c) => d.fromAxisSpec(c).toCanonicalString() === n.toCanonicalString()
112
+ const i = S(o);
113
+ if (y(i)) {
114
+ const e = await n.pFrameProvider.getColumnSpecById(i), r = ((e == null ? void 0 : e.axesSpec) ?? []).find(
115
+ (s) => g.fromAxisSpec(s).toCanonicalString() === t.toCanonicalString()
160
116
  );
161
117
  if (r)
162
118
  return r;
@@ -164,127 +120,172 @@ async function _(e, n, a) {
164
120
  }
165
121
  return null;
166
122
  }
167
- const Y = "pl7.app/label";
168
- async function q(e, n, a) {
169
- const o = f(n);
170
- if (S(o))
123
+ const T = "pl7.app/label";
124
+ async function D(n, t, a) {
125
+ const o = S(t);
126
+ if (y(o))
171
127
  return;
172
- async function i(l) {
173
- const p = await _(e, l, a);
174
- return p ? E(p) : null;
128
+ async function i(c) {
129
+ const u = await N(n, c, a);
130
+ return u ? b(u) : null;
175
131
  }
176
- const t = await e.pFrameProvider.getColumnsFull([], !1, void 0, [Y]), r = await i(o), c = t.find(({ spec: l }) => l && l.axesSpec.length === 1 && E(l.axesSpec[0]) === r);
177
- return c ? new T({ name: c.columnId, type: c.spec.valueType }) : void 0;
132
+ const e = await n.pFrameProvider.getColumnsFull([], !1, void 0, [T]), r = await i(o), s = e.find(({ spec: c }) => c && c.axesSpec.length === 1 && b(c.axesSpec[0]) === r);
133
+ return s ? new A({ name: s.columnId, type: s.spec.valueType }) : void 0;
178
134
  }
179
- async function j(e, n, a) {
180
- const o = f(n), i = await q(e, n, a);
181
- let t;
182
- return S(o) ? t = await e.pFrameProvider.getColumnSpecById(i ?? o) : t = i ? await e.pFrameProvider.getColumnSpecById(i) : await _(e, o, a), t;
135
+ async function U(n, t, a) {
136
+ const o = S(t), i = await D(n, t, a);
137
+ let e;
138
+ return y(o) ? e = await n.pFrameProvider.getColumnSpecById(i ?? o) : e = i ? await n.pFrameProvider.getColumnSpecById(i) : await N(n, o, a), e;
183
139
  }
184
- async function h(e, n, a) {
140
+ async function ne(n, t, a) {
185
141
  var o;
186
- const i = await j(e, n, a);
142
+ const i = await U(n, t, a);
187
143
  if (!i)
188
144
  return "";
189
- const t = ((o = i.annotations) == null ? void 0 : o[O]) ?? i.name;
190
- return e.labelsModifier(i.name, t);
145
+ const e = ((o = i.annotations) == null ? void 0 : o[P]) ?? i.name;
146
+ return n.labelsModifier(i.name, e);
191
147
  }
192
- function z(e) {
193
- var n, a;
194
- const o = (a = (n = e.annotations) == null ? void 0 : n[R]) == null ? void 0 : a.toLowerCase();
148
+ function te(n) {
149
+ var t, a;
150
+ const o = (a = (t = n.annotations) == null ? void 0 : t[_]) == null ? void 0 : a.toLowerCase();
195
151
  return !!o && o !== "homogenous" && o !== "homogeneous";
196
152
  }
197
- function re(e) {
198
- var n, a;
199
- return ((n = e.annotations) == null ? void 0 : n[I]) === "true" || ((a = e.annotations) == null || a[A]), !0;
200
- }
201
- function se(e) {
202
- var n, a;
203
- return !e.name.includes("metadata") && ((n = e.annotations) == null ? void 0 : n[$]) !== "true" && ((a = e.annotations) == null ? void 0 : a[I]) !== "true";
153
+ function oe(n) {
154
+ var t, a;
155
+ return !n.name.includes("metadata") && ((t = n.annotations) == null ? void 0 : t[k]) !== "true" && ((a = n.annotations) == null ? void 0 : a[O]) !== "true";
204
156
  }
205
- async function le(e, n) {
157
+ async function ae(n, t) {
206
158
  const a = /* @__PURE__ */ new Set(), o = [];
207
- for (const i of n) {
208
- const t = f(i);
209
- if (S(t)) {
210
- const r = await e.pFrameProvider.getColumnSpecById(t);
159
+ for (const i of t) {
160
+ const e = S(i);
161
+ if (y(e)) {
162
+ const r = await n.pFrameProvider.getColumnSpecById(e);
211
163
  if (!r)
212
164
  continue;
213
- r.axesSpec.forEach((c) => {
214
- const l = d.fromAxisSpec(c).toCanonicalString();
215
- a.has(l) || (a.add(l), o.push(c));
165
+ r.axesSpec.forEach((s) => {
166
+ const c = g.fromAxisSpec(s).toCanonicalString();
167
+ a.has(c) || (a.add(c), o.push(s));
216
168
  });
217
169
  }
218
170
  }
219
171
  return o;
220
172
  }
221
- async function ce(e) {
222
- const n = await e.pFrameProvider.getColumnsFull(
173
+ async function re(n) {
174
+ const t = await n.pFrameProvider.getColumnsFull(
223
175
  [],
224
176
  !1,
225
177
  void 0,
226
178
  void 0,
227
- { [M]: "true" }
179
+ { [$]: "true" }
228
180
  );
229
- return L.fromColumns(n);
181
+ return E.fromColumns(t);
230
182
  }
231
- async function ue(e, n, a, o, i) {
232
- const t = f(o);
233
- if (!S(t))
234
- return [];
235
- const r = await e.pFrameProvider.getColumnSpecById(t);
236
- if (!r)
237
- return [];
238
- const c = r.axesSpec.filter(
239
- (u) => {
240
- const s = d.fromAxisSpec(u).toCanonicalString();
241
- return !(i != null && i.some((v) => v.axisSource === s));
183
+ async function ie(n) {
184
+ var t, a, o, i;
185
+ const e = await n.pFrameProvider.getColumnsFull(
186
+ [],
187
+ !1,
188
+ void 0,
189
+ void 0,
190
+ void 0,
191
+ [F]
192
+ ), r = /* @__PURE__ */ new Map();
193
+ for (const s of e) {
194
+ const c = s.spec.axesSpec, u = (a = (t = s.spec) == null ? void 0 : t.annotations) == null ? void 0 : a[F];
195
+ if (c.length !== 2 || !u)
196
+ continue;
197
+ const l = new A({ name: s.columnId, type: s.spec.valueType }).toCanonicalString();
198
+ try {
199
+ const [f] = JSON.parse(u), [m, d] = c, p = g.fromAxisSpec(m).toCanonicalString(), v = g.fromAxisSpec(d).toCanonicalString();
200
+ m.name === f ? (r.get(v) || r.set(v, /* @__PURE__ */ new Map()), r.get(v).set(p, { parentSource: l, spec: m })) : d.name === f && (r.get(p) || r.set(p, /* @__PURE__ */ new Map()), r.get(p).set(v, { parentSource: l, spec: d }));
201
+ } catch {
202
+ console.error(`Wrong format for annotation ${F}: ${(i = (o = s.spec) == null ? void 0 : o.annotations) == null ? void 0 : i[F]}`);
242
203
  }
243
- ), l = new Set(a.map((u) => d.fromAxisSpec(u).toCanonicalString())), p = c.filter((u) => {
244
- const s = d.fromAxisSpec(u).toCanonicalString();
245
- return !l.has(s);
246
- }), y = F(a), g = F(p);
247
- return n.getLinkerColumnsForAxes({ from: y, to: g }).map((u) => new T({ name: u.columnId, type: u.spec.valueType }));
204
+ }
205
+ return r;
248
206
  }
249
- function G(e, n, a, o) {
250
- const i = new Set(n.map((l) => d.fromAxisSpec(l).toCanonicalString())), t = F(e.axesSpec).filter(
251
- (l) => !i.has(d.fromAxisSpec(l).toCanonicalString())
252
- ), r = F(n), c = L.getAxesRoots(t);
253
- return o.getNonLinkableAxes(r, c);
207
+ function K(n, t, a, o) {
208
+ var i;
209
+ const e = n.toCanonicalString(), r = [...new Set(o.map((l) => g.fromAxisSpec(l).toCanonicalString()))].find((l) => {
210
+ var f;
211
+ return (f = a.get(l)) == null ? void 0 : f.get(e);
212
+ }), s = r ? (i = a.get(r)) == null ? void 0 : i.get(e) : null;
213
+ if (s)
214
+ return [S(s.parentSource)];
215
+ const c = x(o), u = x(
216
+ t.getReachableByLinkersAxesFromAxes(c)
217
+ ).find((l) => g.fromAxisSpec(l).toCanonicalString() === e);
218
+ return u ? t.getLinkerColumnsForAxes({ from: c, to: [u], throwWhenNoLinkExists: !1 }).map((l) => new A({ name: l.columnId, type: l.spec.valueType })) : [];
254
219
  }
255
- function me(e, n) {
256
- const a = n.columnsData[Object.keys(n.columnsData)[0]].length, o = new Int32Array(a).fill(0);
257
- for (let i = 0; i < a; i++) {
258
- let t = !1;
259
- for (let r = 0; r < e.length; r++) {
260
- const { selectedSource: c, selectedFilterValue: l, selectedFilterRange: p, type: y } = e[r], g = f(c), u = (S(g) ? n.columnsData[c] : n.axesData[c])[i];
261
- if (l !== void 0 && (t = t || u === l), p !== void 0 && (p.min !== void 0 || p.max !== void 0) && typeof u == "number") {
262
- let s = !0;
263
- p.min !== void 0 && (s = s && u >= p.min), p.max !== void 0 && (s = s && u <= p.max), t = t || s;
220
+ async function Y(n, t, a, o, i) {
221
+ const e = await t.pFrameProvider.getColumnSpecById(n);
222
+ if (!e)
223
+ return [];
224
+ let r = [];
225
+ const s = new Set(i.map((m) => g.fromAxisSpec(m).toCanonicalString())), c = [...s], u = e.axesSpec.filter((m) => {
226
+ var d;
227
+ const p = g.fromAxisSpec(m).toCanonicalString();
228
+ if (s.has(p))
229
+ return !1;
230
+ const v = c.find((M) => {
231
+ var h;
232
+ return (h = o.get(M)) == null ? void 0 : h.get(p);
233
+ }), I = v ? (d = o.get(v)) == null ? void 0 : d.get(p) : null;
234
+ return I ? (r.push(S(I.parentSource)), !1) : !0;
235
+ }), l = x(i), f = x(u);
236
+ return r = r.concat(a.getLinkerColumnsForAxes({ from: l, to: f, throwWhenNoLinkExists: !1 }).map((m) => new A({ name: m.columnId, type: m.spec.valueType }))), r;
237
+ }
238
+ async function se(n, t, a, o, i) {
239
+ const e = S(i);
240
+ return y(e) ? Y(e, n, t, a, o) : K(e, t, a, o);
241
+ }
242
+ function le(n, t, a, o) {
243
+ const i = new Set(t.map((u) => g.fromAxisSpec(u).toCanonicalString())), e = [...i], r = x(n.axesSpec).filter(
244
+ // axes in data axes list are allowed, check the rest
245
+ (u) => !i.has(g.fromAxisSpec(u).toCanonicalString())
246
+ ), s = x(t), c = E.getAxesRoots(r);
247
+ return a.getNonLinkableAxes(s, c).filter((u) => {
248
+ const l = g.fromAxisSpec(u).toCanonicalString();
249
+ return !e.some((f) => {
250
+ var m;
251
+ return ((m = o.get(f)) == null ? void 0 : m.get(l)) !== void 0;
252
+ });
253
+ });
254
+ }
255
+ function ce(n, t) {
256
+ const a = t.columnsData[Object.keys(t.columnsData)[0]].length, o = new Int32Array(a).fill(0), i = n.filter(
257
+ (e) => e.selectedFilterRange && (e.selectedFilterRange.min !== void 0 || e.selectedFilterRange.max !== void 0) || e.selectedFilterValues && e.selectedFilterValues.length
258
+ );
259
+ for (let e = 0; e < a; e++) {
260
+ let r = i.length === 0;
261
+ for (let s = 0; s < i.length; s++) {
262
+ const { selectedSource: c, selectedFilterValues: u, selectedFilterRange: l, type: f } = n[s], m = S(c), d = (y(m) ? t.columnsData[c] : t.axesData[c])[e];
263
+ if (u !== void 0 && u.length && (r = r || u.includes(String(d))), l !== void 0 && (l.min !== void 0 || l.max !== void 0) && typeof d == "number") {
264
+ let p = !0;
265
+ l.min !== void 0 && (p = p && d >= l.min), l.max !== void 0 && (p = p && d <= l.max), r = r || p;
264
266
  }
265
- y === "subset" && (t = t || u != null);
267
+ f === "subset" && (r = r || d != null);
266
268
  }
267
- t && (o[i] = 1);
269
+ r && (o[e] = 1);
268
270
  }
269
271
  return o;
270
272
  }
271
273
  export {
272
- te as addSourceInfoToMap,
273
- z as axisMustBeConsumed,
274
- re as checkSourceBySpecForFilters,
275
- me as createHighlightColumn,
276
- ce as createLinkerMap,
277
- se as dataColumnPredicateDefault,
278
- le as getAxesSpecsFromSources,
279
- h as getColumnOrAxisLabel,
280
- j as getColumnOrAxisSpec,
281
- q as getColumnOrAxisValueLabelsId,
282
- oe as getDefaultInfo,
283
- K as getFilterFromState,
284
- ie as getFiltersFromStates,
285
- E as getGlobalId,
286
- ue as getLinkerColumnsForSource,
287
- G as getNotAllowedAxes,
288
- ae as getStateCopy
274
+ te as axisIsNonHomogenous,
275
+ ce as createHighlightColumn,
276
+ re as createLinkerMap,
277
+ ie as createMultipliesByMap,
278
+ oe as dataColumnPredicateDefault,
279
+ ae as getAxesSpecsFromSources,
280
+ ne as getColumnOrAxisLabel,
281
+ U as getColumnOrAxisSpec,
282
+ D as getColumnOrAxisValueLabelsId,
283
+ X as getDefaultInfo,
284
+ B as getFilterFromState,
285
+ ee as getFiltersFromStates,
286
+ b as getGlobalId,
287
+ se as getLinkerColumnsForSource,
288
+ le as getNotAllowedAxes,
289
+ Z as getStateCopy
289
290
  };
290
291
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../node_modules/@milaboratories/pf-plots/src/utils.ts"],"sourcesContent":["import {getNormalizedAxesList, LinkerMap, SingleValuePredicateV2} from '@milaboratories/pl-model-common';\nimport {SelectorState} from './common';\nimport {TableOuterJoinResult} from './pframe/ColumnsProvider';\nimport type {DataStore, PValue} from './store';\nimport type {ColumnOrAxisIdString} from './spec';\nimport {isAxisId} from './spec';\nimport {AxisId, ColumnId, columnOrAxisIdFromString, isColumnId} from './spec';\nimport type {AxisData, ColumnData, InputState, SelectorStateFilter} from './common';\nimport {\n AXIS_NATURE_KEY,\n COLUMN_DOMAIN_KEY,\n COLUMN_LABEL_KEY,\n COLUMN_NAME_KEY, DISCRETE_FILTER_KEY, IS_LINKER_COLUMN,\n IS_VIRTUAL_COLUMN,\n SUBSET_FILTER_KEY,\n} from './constants';\nimport {\n AxisSpec,\n type PColumnSpec,\n type PObjectId,\n type PTableRecordSingleValueFilterV2,\n} from '@milaboratories/pl-model-common';\nimport canonicalize from 'canonicalize';\nimport { DemoDataStore } from './demoStore';\n\nexport async function addSourceInfoToMap( // by column id / axis id, without qualifications\n store: DataStore,\n selectedIdStr: ColumnOrAxisIdString,\n label: string | undefined,\n dataMap: Map<string, ColumnData | AxisData>,\n dataAxesList: AxisSpec[],\n dataAxes: Set<ColumnOrAxisIdString>,\n fixedAxesAllowed = true,\n linkerMap: LinkerMap\n) {\n const sourceId = columnOrAxisIdFromString(selectedIdStr);\n if (isColumnId(sourceId)) {\n const columnSpec = await store.pFrameProvider.getColumnSpecById(sourceId);\n if (!columnSpec) {\n return;\n }\n const extraAxesIds = getNotAllowedAxes(\n columnSpec,\n dataAxesList,\n dataAxes,\n linkerMap\n ).map((axisSpec) => AxisId.fromAxisSpec(axisSpec).toCanonicalString());\n\n const extraAxesSet = new Set(extraAxesIds);\n const axesIds = columnSpec.axesSpec.map(axisSpec => AxisId.fromAxisSpec(axisSpec).toCanonicalString());\n const extraAxesIndexes: Record<string, number> = {};\n if (fixedAxesAllowed) {\n axesIds.forEach((id, idx) => {\n if (extraAxesSet.has(id)) {\n extraAxesIndexes[id] = idx;\n }\n });\n }\n const columnInfo: ColumnData = {\n kind: 'column',\n name: columnSpec.name,\n label: label ?? (await getColumnOrAxisLabel(store, selectedIdStr, [])),\n type: columnSpec.valueType,\n spec: columnSpec,\n annotations: columnSpec.annotations,\n isSubsetFilter: columnSpec.annotations?.[SUBSET_FILTER_KEY] === 'true',\n isDiscreteFilter: columnSpec.valueType === 'String' || columnSpec.annotations?.[DISCRETE_FILTER_KEY] === 'true',\n axesToBeFixed: extraAxesIds,\n axesToBeFixedIndexes: extraAxesIndexes,\n };\n dataMap.set(sourceId.toCanonicalString(), columnInfo);\n for (const axisSpec of columnSpec.axesSpec) {\n const axisId = AxisId.fromAxisSpec(axisSpec);\n const axisIdStr = axisId.toCanonicalString();\n if (dataMap.has(axisIdStr)) {\n continue;\n }\n const mustBeConsumed = axisMustBeConsumed(axisSpec);\n const axisInfo: AxisData = {\n kind: 'axis',\n name: axisSpec.name,\n label: await getColumnOrAxisLabel(store, axisIdStr, [selectedIdStr]),\n type: axisSpec.type,\n mustBeConsumed,\n dividable: false,\n spec: axisSpec,\n annotations: axisSpec.annotations,\n isSubsetFilter: axisSpec.annotations?.[SUBSET_FILTER_KEY] === 'true',\n isDiscreteFilter: axisSpec.type === 'String' || axisSpec.annotations?.[DISCRETE_FILTER_KEY] === 'true',\n parentSources: [selectedIdStr],\n };\n dataMap.set(axisIdStr, axisInfo);\n }\n }\n}\n\nexport function getDefaultInfo(sourceIdStr: ColumnOrAxisIdString): ColumnData | AxisData {\n const item = columnOrAxisIdFromString(sourceIdStr);\n const {name, type} = item;\n if (isColumnId(item)) {\n return {\n kind: 'column',\n name: '',\n label: ' ',\n type: item.type,\n spec: {axesSpec: [], kind: 'PColumn', valueType: item.type, name},\n annotations: undefined,\n isSubsetFilter: false,\n isDiscreteFilter: item.type === 'String',\n axesToBeFixed: [],\n axesToBeFixedIndexes: {}\n };\n }\n return {\n kind: 'axis',\n name: '',\n label: ' ',\n type: type,\n spec: {type, name},\n mustBeConsumed: false,\n dividable: false,\n annotations: undefined,\n isSubsetFilter: false,\n isDiscreteFilter: type === 'String',\n parentSources: [],\n };\n}\n\nexport function getStateCopy<State extends InputState>(state: State): State {\n return {\n type: state.type,\n components: {...state.components},\n dividedAxes: {...state.dividedAxes},\n } as State;\n}\n\nexport function getFilterFromState(state: SelectorStateFilter): PTableRecordSingleValueFilterV2[] {\n const {selectedSource, type, selectedFilterRange, selectedFilterValue} = state;\n const id = columnOrAxisIdFromString(selectedSource);\n if (!id) {\n throw Error('Empty source selected');\n }\n if (type === 'range') {\n const rangeFilters = [];\n if (selectedFilterRange?.max !== undefined) {\n rangeFilters.push({\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {type: 'column' as const, id: id.name as PObjectId},\n predicate: {\n operator: 'LessOrEqual',\n reference: selectedFilterRange.max\n } as SingleValuePredicateV2,\n })\n }\n if (selectedFilterRange?.min !== undefined) {\n rangeFilters.push({\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {type: 'column' as const, id: id.name as PObjectId},\n predicate: {\n operator: 'GreaterOrEqual',\n reference: selectedFilterRange?.min as number,\n } as SingleValuePredicateV2,\n })\n }\n return rangeFilters;\n } else if (type === 'subset') {\n return [\n {\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {type: 'column' as const, id: id.name as PObjectId},\n predicate: {\n operator: 'Not',\n operand: { operator: 'IsNA' }\n } as SingleValuePredicateV2,\n },\n ]\n }\n if (typeof selectedFilterValue === 'undefined') {\n return [];\n }\n return [\n {\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? {type: 'axis' as const, id: id.toPFrameId()} : {\n type: 'column' as const,\n id: id.name as PObjectId,\n },\n predicate: {\n operator: 'Equal',\n reference:\n id.type === 'String'\n ? String(selectedFilterValue)\n : (Number(selectedFilterValue) as string | number),\n } as SingleValuePredicateV2,\n },\n ];\n}\n\nexport function getFiltersFromStates(states: SelectorStateFilter[]): PTableRecordSingleValueFilterV2[] {\n const result: PTableRecordSingleValueFilterV2[] = [];\n for (const state of states) {\n result.push(...getFilterFromState(state));\n }\n return result;\n}\n\nexport function getGlobalId(spec: PColumnSpec): string;\nexport function getGlobalId(spec: AxisSpec): string;\nexport function getGlobalId(spec: AxisSpec | PColumnSpec): string {\n if ('kind' in spec && spec.kind === 'PColumn') {\n const name = spec.name ?? spec.annotations?.[COLUMN_NAME_KEY];\n const domain = spec.domain ?? spec.annotations?.[COLUMN_DOMAIN_KEY];\n return canonicalize({name, domain})!;\n }\n const name = spec.name;\n const domain = spec.domain;\n return canonicalize({name, domain})!;\n}\n\nasync function getAxisSpecFromParents(store: DataStore, axisId: AxisId, parentSources: ColumnOrAxisIdString[]) {\n for (const parentSource of parentSources) {\n const parentId = columnOrAxisIdFromString(parentSource);\n if (isColumnId(parentId)) {\n const columnSpec = await store.pFrameProvider.getColumnSpecById(parentId);\n const spec = (columnSpec?.axesSpec ?? []).find(\n s => AxisId.fromAxisSpec(s).toCanonicalString() === axisId.toCanonicalString(),\n );\n if (spec) {\n return spec;\n }\n }\n }\n return null;\n}\n\nconst LABEL_COLUMN_NAME = 'pl7.app/label';\n\nexport async function getColumnOrAxisValueLabelsId(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n): Promise<ColumnId | undefined> {\n const id = columnOrAxisIdFromString(selectedSource);\n if (isColumnId(id)) {\n return undefined;\n }\n async function getAxisGlobalId(axisId: AxisId) {\n const spec = await getAxisSpecFromParents(store, axisId, parentSources);\n return spec ? getGlobalId(spec) : null;\n }\n const labelColumns = await store.pFrameProvider.getColumnsFull([], false, undefined, [LABEL_COLUMN_NAME]);\n const sourceGlobalId = await getAxisGlobalId(id);\n const labelColumn = labelColumns.find(({spec}) => {\n return spec && spec.axesSpec.length === 1 && getGlobalId(spec.axesSpec[0]) === sourceGlobalId;\n });\n return labelColumn ? new ColumnId({name: labelColumn.columnId, type: labelColumn.spec.valueType}) : undefined;\n}\n\nexport async function getColumnOrAxisSpec(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n) {\n const selectedId = columnOrAxisIdFromString(selectedSource);\n const labelsColumn = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n\n let spec: AxisSpec | PColumnSpec | null;\n if (isColumnId(selectedId)) {\n spec = await store.pFrameProvider.getColumnSpecById(labelsColumn ?? selectedId);\n } else {\n spec = labelsColumn\n ? await store.pFrameProvider.getColumnSpecById(labelsColumn)\n : await getAxisSpecFromParents(store, selectedId, parentSources);\n }\n return spec;\n}\n\nexport async function getColumnOrAxisLabel(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n) {\n const spec = await getColumnOrAxisSpec(store, selectedSource, parentSources);\n if (!spec) {\n return '';\n }\n const label = spec.annotations?.[COLUMN_LABEL_KEY] ?? spec.name;\n return store.labelsModifier(spec.name, label);\n}\n\nexport function axisMustBeConsumed(spec: AxisSpec) {\n const axisNature = spec.annotations?.[AXIS_NATURE_KEY]?.toLowerCase();\n return Boolean(axisNature) && axisNature !== 'homogenous' && axisNature !== 'homogeneous';\n}\n\nexport function checkSourceBySpecForFilters(spec: PColumnSpec | AxisSpec) {\n //const type = 'kind' in spec && spec.kind === 'PColumn' ? spec.valueType : spec.type;\n if (spec.annotations?.[SUBSET_FILTER_KEY] === 'true') {\n return true;\n }\n if (spec.annotations?.[DISCRETE_FILTER_KEY] === 'true') {\n return true;\n }\n //return type === 'Double' || type === 'Float' || type === 'Int' || type === 'Long'\n return true;\n}\n\nexport function dataColumnPredicateDefault(spec: PColumnSpec) {\n return !spec.name.includes('metadata') && !(spec.annotations?.[IS_VIRTUAL_COLUMN] === 'true') && !(spec.annotations?.[SUBSET_FILTER_KEY] === 'true');\n}\n\nexport async function getAxesSpecsFromSources(store:DataStore, idStrs: ColumnOrAxisIdString[]):Promise<AxisSpec[]>{\n const set = new Set<ColumnOrAxisIdString>();\n const result:AxisSpec[] = [];\n for(const idStr of idStrs) {\n const id = columnOrAxisIdFromString(idStr);\n if (isColumnId(id)) {\n const spec = await store.pFrameProvider.getColumnSpecById(id);\n if (!spec) {\n continue;\n }\n spec.axesSpec.forEach(axisSpec => {\n const id = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n if (!set.has(id)) {\n set.add(id);\n result.push(axisSpec);\n }\n })\n }\n }\n return result;\n}\n\nexport async function createLinkerMap(store: DemoDataStore) {\n const allLinkerColumns = await store.pFrameProvider.getColumnsFull(\n [], false, undefined, undefined,\n {[IS_LINKER_COLUMN]: 'true'},\n );\n return LinkerMap.fromColumns(allLinkerColumns);\n}\n\nexport async function getLinkerColumnsForSource(\n store: DataStore,\n linkerMap: LinkerMap,\n dataInputAxes: AxisSpec[],\n secondarySource: ColumnOrAxisIdString,\n fixedAxesOfSecondaryColumn: SelectorState['fixedAxes']\n):Promise<ColumnId[]> {\n const columnOrAxisId = columnOrAxisIdFromString(secondarySource);\n if (!isColumnId(columnOrAxisId)) {\n return [];\n }\n const secondaryColumnSpec = await store.pFrameProvider.getColumnSpecById(columnOrAxisId);\n if (!secondaryColumnSpec) {\n return [];\n }\n const allColumnAxesWithoutFixed = secondaryColumnSpec.axesSpec.filter(\n (axisSpec) => {\n const axisId = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n return !fixedAxesOfSecondaryColumn?.some(el => el.axisSource === axisId);\n });\n\n const dataInputAxesSet = new Set(dataInputAxes.map(axisSpec => AxisId.fromAxisSpec(axisSpec).toCanonicalString()));\n const rightPartAxes = allColumnAxesWithoutFixed.filter((axisSpec) => { // right part from column minus 'fixedAxes'\n const axisId = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n return !dataInputAxesSet.has(axisId);\n });\n\n const from = getNormalizedAxesList(dataInputAxes);\n const to = getNormalizedAxesList(rightPartAxes);\n\n return linkerMap.getLinkerColumnsForAxes({from,to}).map(v => new ColumnId({name: v.columnId, type: v.spec.valueType}));\n}\n\nexport function getNotAllowedAxes(\n columnSpec: PColumnSpec,\n dataInputAxesList: AxisSpec[], // axes from data-input\n someset: Set<unknown>, \n linkerMap: LinkerMap, // composite linkers, without chains\n): AxisSpec[] {\n const dataInputAxesSet = new Set(dataInputAxesList.map((v) => AxisId.fromAxisSpec(v).toCanonicalString()))\n const allColumnAxes = getNormalizedAxesList(columnSpec.axesSpec);\n // remove from the column axes - axes from data inputs\n const rightPartAxes = allColumnAxes.filter(\n (axisSpec:AxisSpec) => !dataInputAxesSet.has(AxisId.fromAxisSpec(axisSpec).toCanonicalString())\n );\n\n const sourceAxes = getNormalizedAxesList(dataInputAxesList);\n const targetAxes = LinkerMap.getAxesRoots(rightPartAxes);\n\n return linkerMap.getNonLinkableAxes(sourceAxes, targetAxes);\n}\n\nexport function createHighlightColumn(highlightSelectedStates:SelectorStateFilter[], data: TableOuterJoinResult) {\n const dataLength = data.columnsData[Object.keys(data.columnsData)[0]].length;\n const highlightColumn = new Int32Array(dataLength).fill(0);\n for (let rowIdx = 0; rowIdx < dataLength; rowIdx++) {\n let res = false;\n for (let i = 0; i < highlightSelectedStates.length; i++) {\n const {selectedSource, selectedFilterValue, selectedFilterRange, type} = highlightSelectedStates[i];\n const sourceId = columnOrAxisIdFromString(selectedSource);\n const value = (isColumnId(sourceId) ? data.columnsData[selectedSource] : data.axesData[selectedSource])[rowIdx];\n if (selectedFilterValue !== undefined) {\n res = res || value === selectedFilterValue;\n }\n if (selectedFilterRange !== undefined && (selectedFilterRange.min !== undefined || selectedFilterRange.max !== undefined) && typeof value === 'number') {\n let rangeResult = true;\n if (selectedFilterRange.min !== undefined) {\n rangeResult = rangeResult && value >= selectedFilterRange.min;\n }\n if (selectedFilterRange.max !== undefined) {\n rangeResult = rangeResult && value <= selectedFilterRange.max;\n }\n res = res || rangeResult;\n }\n if (type === 'subset') {\n res = res || (value !== null && value !== undefined);\n }\n }\n if (res) {\n highlightColumn[rowIdx] = 1;\n }\n }\n return highlightColumn as unknown as PValue[];\n}\n"],"names":["addSourceInfoToMap","store","selectedIdStr","label","dataMap","dataAxesList","dataAxes","fixedAxesAllowed","linkerMap","sourceId","columnOrAxisIdFromString","isColumnId","columnSpec","extraAxesIds","getNotAllowedAxes","axisSpec","AxisId","extraAxesSet","axesIds","extraAxesIndexes","id","idx","columnInfo","getColumnOrAxisLabel","_a","SUBSET_FILTER_KEY","_b","DISCRETE_FILTER_KEY","axisIdStr","mustBeConsumed","axisMustBeConsumed","axisInfo","_c","_d","getDefaultInfo","sourceIdStr","item","name","type","getStateCopy","state","getFilterFromState","selectedSource","selectedFilterRange","selectedFilterValue","rangeFilters","isAxisId","getFiltersFromStates","states","result","getGlobalId","spec","COLUMN_NAME_KEY","domain","COLUMN_DOMAIN_KEY","canonicalize","getAxisSpecFromParents","axisId","parentSources","parentSource","parentId","s","LABEL_COLUMN_NAME","getColumnOrAxisValueLabelsId","getAxisGlobalId","labelColumns","sourceGlobalId","labelColumn","ColumnId","getColumnOrAxisSpec","selectedId","labelsColumn","COLUMN_LABEL_KEY","axisNature","AXIS_NATURE_KEY","checkSourceBySpecForFilters","dataColumnPredicateDefault","IS_VIRTUAL_COLUMN","getAxesSpecsFromSources","idStrs","set","idStr","createLinkerMap","allLinkerColumns","IS_LINKER_COLUMN","LinkerMap","getLinkerColumnsForSource","dataInputAxes","secondarySource","fixedAxesOfSecondaryColumn","columnOrAxisId","secondaryColumnSpec","allColumnAxesWithoutFixed","el","dataInputAxesSet","rightPartAxes","from","getNormalizedAxesList","to","v","dataInputAxesList","someset","sourceAxes","targetAxes","createHighlightColumn","highlightSelectedStates","data","dataLength","highlightColumn","rowIdx","res","i","value","rangeResult"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../node_modules/@milaboratories/pf-plots/src/utils.ts"],"sourcesContent":["import { getNormalizedAxesList, LinkerMap, SingleValuePredicateV2, ValueType } from '@milaboratories/pl-model-common';\nimport { TableOuterJoinResult } from './pframe/ColumnsProvider';\nimport type { DataStore, PValue } from './store';\nimport type { ColumnOrAxisIdString } from './spec';\nimport { isAxisId } from './spec';\nimport { AxisId, ColumnId, columnOrAxisIdFromString, isColumnId } from './spec';\nimport type { AxisData, ColumnData, InputState, SelectorStateFilter } from './common';\nimport {\n AXIS_NATURE_KEY,\n COLUMN_DOMAIN_KEY,\n COLUMN_LABEL_KEY,\n COLUMN_NAME_KEY, IS_LINKER_COLUMN,\n IS_VIRTUAL_COLUMN,\n MULTIPLIES_BY,\n SUBSET_FILTER_KEY,\n} from './constants';\nimport {\n AxisSpec,\n type PColumnSpec,\n type PObjectId,\n type PTableRecordSingleValueFilterV2,\n} from '@milaboratories/pl-model-common';\nimport canonicalize from 'canonicalize';\nimport { DemoDataStore } from './demoStore';\n\nexport type OptionsInfo = Map<ColumnOrAxisIdString, ColumnData | AxisData>;\nexport function getDefaultInfo(sourceIdStr: ColumnOrAxisIdString): ColumnData | AxisData {\n const item = columnOrAxisIdFromString(sourceIdStr);\n const { name, type } = item;\n if (isColumnId(item)) {\n return {\n kind: 'column',\n name: '',\n label: ' ',\n type: item.type,\n spec: { axesSpec: [], kind: 'PColumn', valueType: item.type, name },\n annotations: undefined,\n isSubsetFilter: false,\n isDiscreteFilter: item.type === 'String'\n };\n }\n return {\n kind: 'axis',\n name: '',\n label: ' ',\n type: type,\n spec: { type, name },\n mustBeConsumed: false,\n dividable: false,\n annotations: undefined,\n isSubsetFilter: false,\n isDiscreteFilter: type === 'String',\n isNonHomogenous: false,\n parentSources: [],\n };\n}\n\nexport function getStateCopy<State extends InputState>(state: State): State {\n return {\n type: state.type,\n components: { ...state.components },\n dividedAxes: { ...state.dividedAxes },\n } as State;\n}\n\nfunction normalizeFilterReference(v: number, valueType: ValueType) {\n if (valueType === 'Int' || valueType === 'Long') {\n return Math.floor(v);\n }\n return\n}\nexport function getFilterFromState(state: SelectorStateFilter): PTableRecordSingleValueFilterV2[] {\n const { selectedSource, type, selectedFilterRange, selectedFilterValues } = state;\n const id = columnOrAxisIdFromString(selectedSource);\n if (!id) {\n throw Error('Empty source selected');\n }\n if (type === 'range') {\n const rangeFilters = [];\n if (selectedFilterRange?.max !== undefined) {\n rangeFilters.push({\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? { type: 'axis' as const, id: id.toPFrameId() } : { type: 'column' as const, id: id.name as PObjectId },\n predicate: {\n operator: 'LessOrEqual',\n reference: normalizeFilterReference(selectedFilterRange.max, id.type)\n } as SingleValuePredicateV2,\n })\n }\n if (selectedFilterRange?.min !== undefined) {\n rangeFilters.push({\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? { type: 'axis' as const, id: id.toPFrameId() } : { type: 'column' as const, id: id.name as PObjectId },\n predicate: {\n operator: 'GreaterOrEqual',\n reference: normalizeFilterReference(selectedFilterRange.min, id.type)\n } as SingleValuePredicateV2,\n })\n }\n return rangeFilters;\n } else if (type === 'subset') {\n return [\n {\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? { type: 'axis' as const, id: id.toPFrameId() } : { type: 'column' as const, id: id.name as PObjectId },\n predicate: {\n operator: 'Not',\n operand: { operator: 'IsNA' }\n } as SingleValuePredicateV2,\n },\n ]\n }\n if (typeof selectedFilterValues === 'undefined' || !selectedFilterValues.length) {\n return [];\n }\n return [\n {\n type: 'bySingleColumnV2' as const,\n column: isAxisId(id) ? { type: 'axis' as const, id: id.toPFrameId() } : {\n type: 'column' as const,\n id: id.name as PObjectId,\n },\n predicate: {\n operator: 'Or',\n operands: selectedFilterValues.map((v) => {\n const reference = id.type === 'String'\n ? String(v)\n : (Number(v) as string | number);\n return {\n operator: 'Equal',\n reference\n } as SingleValuePredicateV2\n })\n }\n },\n ];\n}\n\nexport function getFiltersFromStates(states: SelectorStateFilter[]): PTableRecordSingleValueFilterV2[] {\n const result: PTableRecordSingleValueFilterV2[] = [];\n for (const state of states) {\n result.push(...getFilterFromState(state));\n }\n return result;\n}\n\nexport function getGlobalId(spec: PColumnSpec): string;\nexport function getGlobalId(spec: AxisSpec): string;\nexport function getGlobalId(spec: AxisSpec | PColumnSpec): string {\n if ('kind' in spec && spec.kind === 'PColumn') {\n const name = spec.name ?? spec.annotations?.[COLUMN_NAME_KEY];\n const domain = spec.domain ?? spec.annotations?.[COLUMN_DOMAIN_KEY];\n return canonicalize({ name, domain })!;\n }\n const name = spec.name;\n const domain = spec.domain;\n return canonicalize({ name, domain })!;\n}\n\nasync function getAxisSpecFromParents(store: DataStore, axisId: AxisId, parentSources: ColumnOrAxisIdString[]) {\n for (const parentSource of parentSources) {\n const parentId = columnOrAxisIdFromString(parentSource);\n if (isColumnId(parentId)) {\n const columnSpec = await store.pFrameProvider.getColumnSpecById(parentId);\n const spec = (columnSpec?.axesSpec ?? []).find(\n s => AxisId.fromAxisSpec(s).toCanonicalString() === axisId.toCanonicalString(),\n );\n if (spec) {\n return spec;\n }\n }\n }\n return null;\n}\n\nconst LABEL_COLUMN_NAME = 'pl7.app/label';\n\nexport async function getColumnOrAxisValueLabelsId(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n): Promise<ColumnId | undefined> {\n const id = columnOrAxisIdFromString(selectedSource);\n if (isColumnId(id)) {\n return undefined;\n }\n async function getAxisGlobalId(axisId: AxisId) {\n const spec = await getAxisSpecFromParents(store, axisId, parentSources);\n return spec ? getGlobalId(spec) : null;\n }\n const labelColumns = await store.pFrameProvider.getColumnsFull([], false, undefined, [LABEL_COLUMN_NAME]);\n const sourceGlobalId = await getAxisGlobalId(id);\n const labelColumn = labelColumns.find(({ spec }) => {\n return spec && spec.axesSpec.length === 1 && getGlobalId(spec.axesSpec[0]) === sourceGlobalId;\n });\n return labelColumn ? new ColumnId({ name: labelColumn.columnId, type: labelColumn.spec.valueType }) : undefined;\n}\n\nexport async function getColumnOrAxisSpec(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n) {\n const selectedId = columnOrAxisIdFromString(selectedSource);\n const labelsColumn = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n\n let spec: AxisSpec | PColumnSpec | null;\n if (isColumnId(selectedId)) {\n spec = await store.pFrameProvider.getColumnSpecById(labelsColumn ?? selectedId);\n } else {\n spec = labelsColumn\n ? await store.pFrameProvider.getColumnSpecById(labelsColumn)\n : await getAxisSpecFromParents(store, selectedId, parentSources);\n }\n return spec;\n}\n\nexport async function getColumnOrAxisLabel(\n store: DataStore,\n selectedSource: ColumnOrAxisIdString,\n parentSources: ColumnOrAxisIdString[],\n) {\n const spec = await getColumnOrAxisSpec(store, selectedSource, parentSources);\n if (!spec) {\n return '';\n }\n const label = spec.annotations?.[COLUMN_LABEL_KEY] ?? spec.name;\n return store.labelsModifier(spec.name, label);\n}\n\nexport function axisIsNonHomogenous(spec: AxisSpec) {\n const axisNature = spec.annotations?.[AXIS_NATURE_KEY]?.toLowerCase();\n return Boolean(axisNature) && axisNature !== 'homogenous' && axisNature !== 'homogeneous';\n}\n\nexport function dataColumnPredicateDefault(spec: PColumnSpec) {\n return !spec.name.includes('metadata') && !(spec.annotations?.[IS_VIRTUAL_COLUMN] === 'true') && !(spec.annotations?.[SUBSET_FILTER_KEY] === 'true');\n}\n\nexport async function getAxesSpecsFromSources(store: DataStore, idStrs: ColumnOrAxisIdString[]): Promise<AxisSpec[]> {\n const set = new Set<ColumnOrAxisIdString>();\n const result: AxisSpec[] = [];\n for (const idStr of idStrs) {\n const id = columnOrAxisIdFromString(idStr);\n if (isColumnId(id)) {\n const spec = await store.pFrameProvider.getColumnSpecById(id);\n if (!spec) {\n continue;\n }\n spec.axesSpec.forEach(axisSpec => {\n const id = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n if (!set.has(id)) {\n set.add(id);\n result.push(axisSpec);\n }\n })\n }\n }\n return result;\n}\n\nexport async function createLinkerMap(store: DemoDataStore) {\n const allLinkerColumns = await store.pFrameProvider.getColumnsFull(\n [], false, undefined, undefined,\n { [IS_LINKER_COLUMN]: 'true' },\n );\n\n return LinkerMap.fromColumns(allLinkerColumns);\n}\n\nexport type MultipliesByMap = Map<ColumnOrAxisIdString, Map<ColumnOrAxisIdString, { parentSource: ColumnOrAxisIdString, spec: AxisSpec }>>;\nexport async function createMultipliesByMap(store: DemoDataStore): Promise<MultipliesByMap> {\n const allMultiplyingColumns = await store.pFrameProvider.getColumnsFull(\n [], false, undefined, undefined, undefined, [MULTIPLIES_BY]\n );\n\n const result: MultipliesByMap = new Map();\n\n for (const multiplyingColumn of allMultiplyingColumns) {\n const axes = multiplyingColumn.spec.axesSpec;\n const annotationData = multiplyingColumn.spec?.annotations?.[MULTIPLIES_BY];\n if (axes.length !== 2 || !annotationData) {\n continue;\n }\n const columnIdStr = new ColumnId({ name: multiplyingColumn.columnId, type: multiplyingColumn.spec.valueType }).toCanonicalString();\n try {\n const [multipliesBy] = JSON.parse(annotationData);\n const [axis1, axis2] = axes;\n const id1 = AxisId.fromAxisSpec(axis1).toCanonicalString();\n const id2 = AxisId.fromAxisSpec(axis2).toCanonicalString();\n if (axis1.name === multipliesBy) {\n if (!result.get(id2)) {\n result.set(id2, new Map());\n }\n result.get(id2)!.set(id1, { parentSource: columnIdStr, spec: axis1 })\n } else if (axis2.name === multipliesBy) {\n if (!result.get(id1)) {\n result.set(id1, new Map());\n }\n result.get(id1)!.set(id2, { parentSource: columnIdStr, spec: axis2 });\n }\n } catch (e) {\n console.error(`Wrong format for annotation ${MULTIPLIES_BY}: ${multiplyingColumn.spec?.annotations?.[MULTIPLIES_BY]}`);\n }\n }\n return result;\n}\n\nfunction getLinkerColumnsForAxis(\n secondaryAxisId: AxisId,\n linkerMap: LinkerMap,\n multipliesByMap: MultipliesByMap,\n dataInputAxes: AxisSpec[],\n) {\n const axisIdStr = secondaryAxisId.toCanonicalString();\n const dataInputAxesSet = new Set(dataInputAxes.map(axisSpec => AxisId.fromAxisSpec(axisSpec).toCanonicalString()));\n const dataInputAxesIds = [...dataInputAxesSet];\n\n // check multipliesBy columns\n const dataAxesIdWithLink = dataInputAxesIds.find((dataInputId) => multipliesByMap.get(dataInputId)?.get(axisIdStr));\n const linkerEl = dataAxesIdWithLink ? multipliesByMap.get(dataAxesIdWithLink)?.get(axisIdStr) : null;\n if (linkerEl) {\n // we need only 1 multipliesBy column to link single axis\n return [columnOrAxisIdFromString(linkerEl.parentSource)];\n }\n\n const normalizedDataAxes = getNormalizedAxesList(dataInputAxes);\n // else check regular linkers\n const axesAvailableWithLinkers = getNormalizedAxesList(\n linkerMap.getReachableByLinkersAxesFromAxes(normalizedDataAxes)\n );\n const axisSpec = axesAvailableWithLinkers.find((spec) => AxisId.fromAxisSpec(spec).toCanonicalString() === axisIdStr);\n\n if (!axisSpec) {\n return [];\n }\n return linkerMap.getLinkerColumnsForAxes({ from: normalizedDataAxes, to: [axisSpec], throwWhenNoLinkExists: false }).map(v => new ColumnId({ name: v.columnId, type: v.spec.valueType }));\n}\nasync function getLinkerColumnsForColumn(\n secondaryColumnId: ColumnId,\n store: DataStore,\n linkerMap: LinkerMap,\n multipliesByMap: MultipliesByMap,\n dataInputAxes: AxisSpec[],\n) {\n const secondaryColumnSpec = await store.pFrameProvider.getColumnSpecById(secondaryColumnId);\n if (!secondaryColumnSpec) {\n return [];\n }\n let linkers: ColumnId[] = [];\n const dataInputAxesSet = new Set(dataInputAxes.map(axisSpec => AxisId.fromAxisSpec(axisSpec).toCanonicalString()));\n const dataInputAxesIds = [...dataInputAxesSet];\n const rightPartAxes = secondaryColumnSpec.axesSpec.filter((axisSpec) => { // right part from column minus 'fixedAxes'\n const axisId = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n if (dataInputAxesSet.has(axisId)) {\n return false;\n }\n const dataAxesIdWithLink = dataInputAxesIds.find((dataInputId) => multipliesByMap.get(dataInputId)?.get(axisId));\n const linkerEl = dataAxesIdWithLink ? multipliesByMap.get(dataAxesIdWithLink)?.get(axisId) : null;\n if (linkerEl) {\n linkers.push(columnOrAxisIdFromString(linkerEl.parentSource));\n return false;\n }\n return true;\n });\n\n const from = getNormalizedAxesList(dataInputAxes);\n const to = getNormalizedAxesList(rightPartAxes);\n\n linkers = linkers.concat(linkerMap.getLinkerColumnsForAxes({ from, to, throwWhenNoLinkExists: false }).map(v => new ColumnId({ name: v.columnId, type: v.spec.valueType })));\n return linkers;\n}\nexport async function getLinkerColumnsForSource(\n store: DataStore,\n linkerMap: LinkerMap,\n multipliesByMap: MultipliesByMap,\n dataInputAxes: AxisSpec[],\n secondarySource: ColumnOrAxisIdString,\n): Promise<ColumnId[]> {\n const columnOrAxisId = columnOrAxisIdFromString(secondarySource);\n return isColumnId(columnOrAxisId)\n ? getLinkerColumnsForColumn(columnOrAxisId, store, linkerMap, multipliesByMap, dataInputAxes)\n : getLinkerColumnsForAxis(columnOrAxisId, linkerMap, multipliesByMap, dataInputAxes);\n}\n\nexport function getNotAllowedAxes(\n columnSpec: PColumnSpec,\n dataInputAxesList: AxisSpec[], // axes from data-input\n linkerMap: LinkerMap, // composite linkers, without chains\n multipliesByMap: MultipliesByMap,\n): AxisSpec[] {\n const dataInputAxesSet = new Set(dataInputAxesList.map((v) => AxisId.fromAxisSpec(v).toCanonicalString()))\n const dataInputAxesIds = [...dataInputAxesSet];\n\n // check non-linkable axes only from this column\n const allColumnAxes = getNormalizedAxesList(columnSpec.axesSpec);\n // remove from the column axes - axes from data inputs\n const rightPartAxes = allColumnAxes.filter( // axes in data axes list are allowed, check the rest\n (axisSpec: AxisSpec) => !dataInputAxesSet.has(AxisId.fromAxisSpec(axisSpec).toCanonicalString())\n );\n\n const sourceAxes = getNormalizedAxesList(dataInputAxesList);\n const targetAxes = LinkerMap.getAxesRoots(rightPartAxes);\n\n const nonLinkableByLinkerMap = linkerMap.getNonLinkableAxes(sourceAxes, targetAxes); // rest probably reduced\n const filtered = nonLinkableByLinkerMap.filter((axisSpec) => {\n const freeId = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n return !dataInputAxesIds.some((id) => multipliesByMap.get(id)?.get(freeId) !== undefined);\n });\n return filtered;\n}\n\nexport function createHighlightColumn(highlightSelectedStates: SelectorStateFilter[], data: TableOuterJoinResult) {\n const dataLength = data.columnsData[Object.keys(data.columnsData)[0]].length;\n const highlightColumn = new Int32Array(dataLength).fill(0);\n const notEmptyHighlightStates = highlightSelectedStates.filter(s =>\n s.selectedFilterRange && (s.selectedFilterRange.min !== undefined || s.selectedFilterRange.max !== undefined) ||\n s.selectedFilterValues && s.selectedFilterValues.length\n )\n for (let rowIdx = 0; rowIdx < dataLength; rowIdx++) {\n let res = notEmptyHighlightStates.length === 0; // fill with 1 if nothing selected in highlighting filters\n for (let i = 0; i < notEmptyHighlightStates.length; i++) {\n const { selectedSource, selectedFilterValues, selectedFilterRange, type } = highlightSelectedStates[i];\n const sourceId = columnOrAxisIdFromString(selectedSource);\n const value = (isColumnId(sourceId) ? data.columnsData[selectedSource] : data.axesData[selectedSource])[rowIdx];\n if (selectedFilterValues !== undefined && selectedFilterValues.length) {\n res = res || selectedFilterValues.includes(String(value));\n }\n if (selectedFilterRange !== undefined && (selectedFilterRange.min !== undefined || selectedFilterRange.max !== undefined) && typeof value === 'number') {\n let rangeResult = true;\n if (selectedFilterRange.min !== undefined) {\n rangeResult = rangeResult && value >= selectedFilterRange.min;\n }\n if (selectedFilterRange.max !== undefined) {\n rangeResult = rangeResult && value <= selectedFilterRange.max;\n }\n res = res || rangeResult;\n }\n if (type === 'subset') {\n res = res || (value !== null && value !== undefined);\n }\n }\n if (res) {\n highlightColumn[rowIdx] = 1;\n }\n }\n return highlightColumn as unknown as PValue[];\n}\n"],"names":["getDefaultInfo","sourceIdStr","item","columnOrAxisIdFromString","name","type","isColumnId","getStateCopy","state","normalizeFilterReference","v","valueType","getFilterFromState","selectedSource","selectedFilterRange","selectedFilterValues","id","rangeFilters","isAxisId","getFiltersFromStates","states","result","getGlobalId","spec","_a","COLUMN_NAME_KEY","domain","_b","COLUMN_DOMAIN_KEY","canonicalize","getAxisSpecFromParents","store","axisId","parentSources","parentSource","parentId","columnSpec","AxisId","LABEL_COLUMN_NAME","getColumnOrAxisValueLabelsId","getAxisGlobalId","labelColumns","sourceGlobalId","labelColumn","ColumnId","getColumnOrAxisSpec","selectedId","labelsColumn","getColumnOrAxisLabel","label","COLUMN_LABEL_KEY","axisIsNonHomogenous","axisNature","AXIS_NATURE_KEY","dataColumnPredicateDefault","IS_VIRTUAL_COLUMN","SUBSET_FILTER_KEY","getAxesSpecsFromSources","idStrs","set","idStr","axisSpec","createLinkerMap","allLinkerColumns","IS_LINKER_COLUMN","LinkerMap","createMultipliesByMap","allMultiplyingColumns","MULTIPLIES_BY","multiplyingColumn","axes","annotationData","columnIdStr","multipliesBy","axis1","axis2","id1","id2","_d","_c","getLinkerColumnsForAxis","secondaryAxisId","linkerMap","multipliesByMap","dataInputAxes","axisIdStr","dataAxesIdWithLink","dataInputId","linkerEl","normalizedDataAxes","getNormalizedAxesList","getLinkerColumnsForColumn","secondaryColumnId","secondaryColumnSpec","linkers","dataInputAxesSet","dataInputAxesIds","rightPartAxes","from","to","u","getLinkerColumnsForSource","secondarySource","columnOrAxisId","getNotAllowedAxes","dataInputAxesList","sourceAxes","targetAxes","freeId","createHighlightColumn","highlightSelectedStates","data","dataLength","highlightColumn","notEmptyHighlightStates","s","rowIdx","res","i","sourceId","value","rangeResult"],"mappings":"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","x_google_ignoreList":[0]}