@milaboratories/graph-maker 1.1.140 → 1.1.141

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 (77) hide show
  1. package/dist/GraphMaker/index.vue.js +24 -23
  2. package/dist/GraphMaker/index.vue.js.map +1 -1
  3. package/dist/GraphMaker/store.js +9 -9
  4. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
  5. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js +54 -52
  6. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
  7. package/dist/GraphMaker/utils/loadDefaultSources.js +4 -3
  8. package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
  9. package/dist/_virtual/_commonjsHelpers.js +3 -5
  10. package/dist/_virtual/_commonjsHelpers.js.map +1 -1
  11. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/_commonjsHelpers.js +9 -0
  12. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/_commonjsHelpers.js.map +1 -0
  13. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/canonicalize.js +8 -0
  14. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/canonicalize.js.map +1 -0
  15. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/lodash.js +8 -0
  16. package/dist/{_virtual → node_modules/@milaboratories/pf-plots/dist/_virtual}/lodash.js.map +1 -1
  17. package/dist/{_virtual/lodash.js → node_modules/@milaboratories/pf-plots/dist/_virtual/lodash2.js} +1 -1
  18. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/lodash2.js.map +1 -0
  19. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/stringify.js +3 -0
  20. package/dist/{_virtual → node_modules/@milaboratories/pf-plots/dist/_virtual}/stringify.js.map +1 -1
  21. package/dist/{_virtual/stringify.js → node_modules/@milaboratories/pf-plots/dist/_virtual/stringify2.js} +1 -1
  22. package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/stringify2.js.map +1 -0
  23. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js +15 -0
  24. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js.map +1 -0
  25. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +198 -0
  26. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -0
  27. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +342 -0
  28. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -0
  29. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +278 -0
  30. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -0
  31. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +453 -0
  32. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js.map +1 -0
  33. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js +203 -0
  34. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js.map +1 -0
  35. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +432 -0
  36. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -0
  37. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js +170 -0
  38. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js.map +1 -0
  39. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +315 -0
  40. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -0
  41. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +323 -0
  42. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -0
  43. package/dist/node_modules/@milaboratories/pf-plots/dist/demoStore.js +11 -0
  44. package/dist/node_modules/@milaboratories/pf-plots/dist/demoStore.js.map +1 -0
  45. package/dist/node_modules/@milaboratories/pf-plots/dist/index.js +36 -3426
  46. package/dist/node_modules/@milaboratories/pf-plots/dist/index.js.map +1 -1
  47. package/dist/node_modules/@milaboratories/{pl-error-like → pf-plots/dist/node_modules/@milaboratories/pl-error-like}/dist/index.js +1 -1
  48. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-error-like/dist/index.js.map +1 -0
  49. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js +979 -0
  50. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js.map +1 -0
  51. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js +1599 -0
  52. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js.map +1 -0
  53. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/canonicalize/lib/canonicalize.js +19 -0
  54. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/canonicalize/lib/canonicalize.js.map +1 -0
  55. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/json-stringify-safe/stringify.js +26 -0
  56. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/json-stringify-safe/stringify.js.map +1 -0
  57. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/lodash/lodash.js +3678 -0
  58. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/lodash/lodash.js.map +1 -0
  59. package/dist/node_modules/{zod → @milaboratories/pf-plots/dist/node_modules/zod}/lib/index.js +1141 -1141
  60. package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/zod/lib/index.js.map +1 -0
  61. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +247 -0
  62. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -0
  63. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js +62 -0
  64. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js.map +1 -0
  65. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +286 -0
  66. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -0
  67. package/package.json +2 -2
  68. package/dist/node_modules/@milaboratories/pl-error-like/dist/index.js.map +0 -1
  69. package/dist/node_modules/@milaboratories/pl-model-common/dist/index.js +0 -584
  70. package/dist/node_modules/@milaboratories/pl-model-common/dist/index.js.map +0 -1
  71. package/dist/node_modules/@platforma-sdk/model/dist/index.js +0 -1559
  72. package/dist/node_modules/@platforma-sdk/model/dist/index.js.map +0 -1
  73. package/dist/node_modules/json-stringify-safe/stringify.js +0 -20
  74. package/dist/node_modules/json-stringify-safe/stringify.js.map +0 -1
  75. package/dist/node_modules/lodash/lodash.js +0 -3678
  76. package/dist/node_modules/lodash/lodash.js.map +0 -1
  77. package/dist/node_modules/zod/lib/index.js.map +0 -1
@@ -0,0 +1,278 @@
1
+ import H from "../../_virtual/canonicalize.js";
2
+ import { FORMAT as J } from "../../constants.js";
3
+ import { ControllerBase as K } from "../ControllerBase.js";
4
+ import { ComponentController as w } from "../ComponentController.js";
5
+ import { columnOrAxisIdFromString as C, AxisId as G, isColumnId as c } from "../../spec.js";
6
+ import { checkSourceBySpecForFilters as Q, createLinkerMap as W, getFiltersFromStates as X, getAxesSpecsFromSources as Y, getLinkerColumnsForSource as N, getColumnOrAxisValueLabelsId as A, getColumnOrAxisLabel as D, getColumnOrAxisSpec as Z } from "../../utils.js";
7
+ var _ = Object.defineProperty, $ = (m, e, t) => e in m ? _(m, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : m[e] = t, E = (m, e, t) => $(m, typeof e != "symbol" ? e + "" : e, t);
8
+ const se = {
9
+ type: "bubble",
10
+ components: {
11
+ valueSize: { type: "simple", selectorStates: [] },
12
+ valueColor: { type: "simple", selectorStates: [] },
13
+ x: { type: "simple", selectorStates: [] },
14
+ y: { type: "simple", selectorStates: [] },
15
+ filters: { type: "filter", selectorStates: [] },
16
+ tabBy: { type: "filter", selectorStates: [] },
17
+ facetBy: { type: "simple", selectorStates: [] },
18
+ tooltipContent: { type: "simple", selectorStates: [] }
19
+ },
20
+ dividedAxes: {}
21
+ };
22
+ function z(m, e) {
23
+ if (!e.length)
24
+ return [];
25
+ const t = e.map((l) => C(l)), v = Object.values(m.columnsData)[0].length, i = [];
26
+ for (let l = 0; l < v; l++) {
27
+ const u = t.map((p) => {
28
+ const d = p.toCanonicalString();
29
+ return c(p) ? m.columnsData[d][l] : m.axesData[d][l];
30
+ }).join(", ");
31
+ i.push(u);
32
+ }
33
+ return i;
34
+ }
35
+ class re extends K {
36
+ constructor() {
37
+ super({
38
+ valueSize: new w({
39
+ componentName: "valueSize",
40
+ allowedTypes: ["Int", "Long", "Double", "Float"],
41
+ strictlyDependsOnParents: !0,
42
+ parentComponents: ["valueColor"],
43
+ settings: {
44
+ isDataComponent: !0,
45
+ columnsAllowed: !0,
46
+ axesAllowed: !1,
47
+ required: !0
48
+ }
49
+ }),
50
+ valueColor: new w({
51
+ componentName: "valueColor",
52
+ allowedTypes: ["Int", "Long", "Double", "Float"],
53
+ strictlyDependsOnParents: !0,
54
+ parentComponents: ["valueSize"],
55
+ settings: {
56
+ isDataComponent: !0,
57
+ columnsAllowed: !0,
58
+ axesAllowed: !1,
59
+ required: !0
60
+ }
61
+ }),
62
+ x: new w({
63
+ componentName: "x",
64
+ allowedTypes: ["Int", "String", "Long"],
65
+ strictlyDependsOnParents: !0,
66
+ parentComponents: ["valueSize", "valueColor"],
67
+ settings: {
68
+ required: !0,
69
+ dimensionConsumer: !0,
70
+ multipleSelectors: !0,
71
+ axesAllowed: !0,
72
+ columnsAllowed: !1
73
+ }
74
+ }),
75
+ y: new w({
76
+ componentName: "y",
77
+ allowedTypes: ["Int", "String", "Long"],
78
+ strictlyDependsOnParents: !0,
79
+ parentComponents: ["valueSize", "valueColor"],
80
+ settings: {
81
+ required: !0,
82
+ dimensionConsumer: !0,
83
+ multipleSelectors: !0,
84
+ axesAllowed: !0,
85
+ columnsAllowed: !1
86
+ }
87
+ }),
88
+ tooltipContent: new w({
89
+ componentName: "tooltipContent",
90
+ allowedTypes: ["String", "Int", "Long", "Float", "Double"],
91
+ strictlyDependsOnParents: !0,
92
+ parentComponents: ["valueSize", "valueColor"],
93
+ settings: {
94
+ columnsAllowed: !0,
95
+ axesAllowed: !0,
96
+ multipleSelectors: !0
97
+ }
98
+ }),
99
+ facetBy: new w({
100
+ componentName: "facetBy",
101
+ allowedTypes: ["String", "Int", "Long"],
102
+ strictlyDependsOnParents: !0,
103
+ parentComponents: ["valueSize", "valueColor"],
104
+ settings: {
105
+ axesAllowed: !0,
106
+ dimensionConsumer: !0,
107
+ multipleSelectors: !0
108
+ }
109
+ })
110
+ }, {
111
+ filters: new w({
112
+ componentName: "filters",
113
+ allowedTypes: ["String", "Int", "Long", "Double", "Long"],
114
+ strictlyDependsOnParents: !0,
115
+ parentComponents: ["valueSize", "valueColor"],
116
+ settings: {
117
+ columnsAllowed: !0,
118
+ axesAllowed: !0,
119
+ dimensionConsumer: !0,
120
+ multipleSelectors: !0
121
+ },
122
+ checkSourceBySpec: Q
123
+ }),
124
+ tabBy: new w({
125
+ componentName: "tabBy",
126
+ allowedTypes: ["String", "Int"],
127
+ strictlyDependsOnParents: !0,
128
+ parentComponents: ["valueSize", "valueColor"],
129
+ settings: {
130
+ columnsAllowed: !0,
131
+ axesAllowed: !0,
132
+ dimensionConsumer: !0
133
+ }
134
+ })
135
+ }), E(this, "dataInputs", ["valueSize", "valueColor"]), E(this, "dontAllowUnfilteredHighCardinality", !0);
136
+ }
137
+ async getMustBeConsumedAxes(e, t) {
138
+ if (!t.components.valueColor.selectorStates.length)
139
+ return /* @__PURE__ */ new Set();
140
+ const v = t.components.valueColor.selectorStates[0].selectedSource, i = await e.pFrameProvider.getColumnSpecById(C(v));
141
+ return i ? new Set(i.axesSpec.map((l) => G.fromAxisSpec(l).toCanonicalString())) : /* @__PURE__ */ new Set();
142
+ }
143
+ async createDataByColumns(e, t) {
144
+ var v, i;
145
+ const l = (v = t.components.valueColor.selectorStates[0]) == null ? void 0 : v.selectedSource, u = (i = t.components.valueSize.selectorStates[0]) == null ? void 0 : i.selectedSource;
146
+ if (!l || !u)
147
+ throw Error("Value column is not valid");
148
+ const p = C(l), d = C(u);
149
+ if (!p || !d || !c(p) && !c(d))
150
+ throw Error("Value column is not valid");
151
+ const s = {
152
+ type: "columns",
153
+ id: H(t.components) ?? "",
154
+ values: {}
155
+ }, h = await W(e), g = [
156
+ ...t.components.filters.selectorStates,
157
+ ...t.components.tabBy.selectorStates
158
+ ], I = X(g), O = g.map((o) => C(o.selectedSource)).filter(c), x = [p, d].filter(c), f = x.map((o) => o.toCanonicalString()), B = await Y(e, f), F = [
159
+ t.components.facetBy,
160
+ t.components.x,
161
+ t.components.y,
162
+ t.components.tooltipContent
163
+ ], a = [], y = x.map(() => []), b = [], S = [];
164
+ for (const { selectedSource: o, fixedAxes: n } of g)
165
+ S.push(...await N(
166
+ e,
167
+ h,
168
+ B,
169
+ o,
170
+ n
171
+ )), y.push(
172
+ (n ?? []).map(({ axisIdx: L, axisValue: P }) => ({ idx: L, value: P }))
173
+ );
174
+ for (const o of F)
175
+ for (const { selectedSource: n, fixedAxes: L } of o.selectorStates) {
176
+ a.push(C(n)), b.push(
177
+ (L ?? []).map(({ axisIdx: U, axisValue: R }) => ({ idx: U, value: R }))
178
+ ), S.push(...await N(
179
+ e,
180
+ h,
181
+ B,
182
+ n,
183
+ L
184
+ ));
185
+ const P = await A(e, n, f);
186
+ P && a.push(P);
187
+ }
188
+ const r = await e.pFrameProvider.getTableOuterJoin(
189
+ [...x, ...S, ...O],
190
+ a,
191
+ I,
192
+ !0,
193
+ y,
194
+ b
195
+ );
196
+ a.forEach((o) => {
197
+ const n = o.toCanonicalString();
198
+ s.values[n] = c(o) ? r.columnsData[n] : r.axesData[n];
199
+ }), s.values[l] = c(p) ? r.columnsData[l] : r.axesData[l], s.values[u] = c(d) ? r.columnsData[u] : r.axesData[u];
200
+ const j = t.components.x.selectorStates.map((o) => o.selectedSource), V = j.join(", "), k = await Promise.all(j.map(
201
+ async (o) => {
202
+ var n;
203
+ return ((n = await A(e, o, f)) == null ? void 0 : n.toCanonicalString()) ?? o;
204
+ }
205
+ ));
206
+ s.values[V] = z(r, j), s.values.xLabels = z(r, k);
207
+ const T = t.components.y.selectorStates.map((o) => o.selectedSource), q = T.join(", "), M = await Promise.all(T.map(
208
+ async (o) => {
209
+ var n;
210
+ return ((n = await A(e, o, f)) == null ? void 0 : n.toCanonicalString()) ?? o;
211
+ }
212
+ ));
213
+ return s.values[q] = z(r, T), s.values.yLabels = z(r, M), { byColumns: s };
214
+ }
215
+ async createChartSettings(e, t) {
216
+ var v, i;
217
+ const l = (v = t.components.valueColor.selectorStates[0]) == null ? void 0 : v.selectedSource, u = (i = t.components.valueSize.selectorStates[0]) == null ? void 0 : i.selectedSource;
218
+ if (!l || !u)
219
+ throw Error("Value column is not valid");
220
+ const p = C(l), d = C(u);
221
+ if (!c(p) && !c(d))
222
+ throw Error("Value column is not valid");
223
+ const s = [p, d].filter(c).map((a) => a.toCanonicalString()), h = {
224
+ type: "column",
225
+ value: l,
226
+ label: await D(e, l, [])
227
+ }, g = {
228
+ type: "column",
229
+ value: u,
230
+ label: await D(e, u, [])
231
+ }, I = t.components.x.selectorStates.map(({ selectedSource: a }) => a).join(", "), O = t.components.y.selectorStates.map(({ selectedSource: a }) => a).join(", "), x = await Promise.all(t.components.facetBy.selectorStates.map(async (a) => {
232
+ var y;
233
+ return {
234
+ type: "column",
235
+ value: ((y = await A(e, a.selectedSource, s)) == null ? void 0 : y.toCanonicalString()) ?? a.selectedSource
236
+ };
237
+ })), f = (await Promise.all(t.components.x.selectorStates.map((a) => D(e, a.selectedSource, s)))).join(", "), B = (await Promise.all(t.components.y.selectorStates.map((a) => D(e, a.selectedSource, s)))).join(", "), F = await Promise.all(
238
+ t.components.tooltipContent.selectorStates.map(async (a) => {
239
+ var y, b;
240
+ const S = a.selectedSource, r = await Z(e, S, s);
241
+ return {
242
+ type: "column",
243
+ label: await D(e, S, s) || S,
244
+ value: S,
245
+ valueLabels: ((y = await A(e, S, s)) == null ? void 0 : y.toCanonicalString()) ?? S,
246
+ format: ((b = r == null ? void 0 : r.annotations) == null ? void 0 : b[J]) ?? ".0%"
247
+ };
248
+ })
249
+ );
250
+ return {
251
+ type: "bubble",
252
+ valueColor: h,
253
+ valueSize: g,
254
+ xColumn: {
255
+ type: "column",
256
+ value: I,
257
+ label: f,
258
+ valueLabels: "xLabels"
259
+ },
260
+ yColumn: {
261
+ type: "column",
262
+ value: O,
263
+ label: B,
264
+ valueLabels: "yLabels"
265
+ },
266
+ facetBy: x,
267
+ tooltips: {
268
+ show: !0,
269
+ content: F
270
+ }
271
+ };
272
+ }
273
+ }
274
+ export {
275
+ re as BubbleStateController,
276
+ se as InitialBubbleState
277
+ };
278
+ //# sourceMappingURL=bubble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bubble.js","sources":["../../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/controllersByChartType/bubble.ts"],"sourcesContent":["import canonicalize from 'canonicalize';\nimport type {\n ComponentStateFilter,\n ComponentStateSimple,\n DataByColumns,\n InputStateParent,\n} from '../../common';\nimport {FORMAT} from '../../constants';\nimport {PValue} from '../../store';\nimport {ControllerBase, PlotDataAndSettings} from '../ControllerBase';\nimport {ComponentController} from '../ComponentController';\nimport {columnOrAxisIdFromString, isColumnId} from '../../spec';\nimport type {DataStore} from '../../store';\nimport {\n checkSourceBySpecForFilters, createLinkerMap, getAxesSpecsFromSources,\n getColumnOrAxisLabel, getColumnOrAxisSpec,\n getColumnOrAxisValueLabelsId,\n getFiltersFromStates, getLinkerColumnsForSource,\n} from '../../utils';\nimport {AxisId, ColumnId} from '../../spec';\nimport type {ColumnsProvider} from '../../pframe/ColumnsProvider';\n\nexport interface BubbleUIState extends InputStateParent<'bubble'> {\n type: 'bubble';\n components: {\n valueSize: ComponentStateSimple;\n valueColor: ComponentStateSimple;\n x: ComponentStateSimple;\n y: ComponentStateSimple;\n filters: ComponentStateFilter;\n tabBy: ComponentStateFilter;\n facetBy: ComponentStateSimple;\n tooltipContent: ComponentStateSimple;\n };\n}\n\nexport const InitialBubbleState: BubbleUIState = {\n type: 'bubble',\n components: {\n valueSize: {type: 'simple', selectorStates: []},\n valueColor: {type: 'simple', selectorStates: []},\n x: {type: 'simple', selectorStates: []},\n y: {type: 'simple', selectorStates: []},\n filters: {type: 'filter', selectorStates: []},\n tabBy: {type: 'filter', selectorStates: []},\n facetBy: {type: 'simple', selectorStates: []},\n tooltipContent: {type: 'simple', selectorStates: []},\n },\n dividedAxes: {},\n};\n\nfunction getMultiSourceColumn(data: Awaited<ReturnType<ColumnsProvider['getTableOuterJoin']>>, selectedSources: string[]) {\n if (!selectedSources.length) {\n return [];\n }\n const selectedIds = selectedSources.map(str => columnOrAxisIdFromString(str));\n const n = Object.values(data.columnsData)[0].length;\n const result: string[] = [];\n for (let i = 0; i < n; i++) {\n const value = selectedIds\n .map((id) => {\n const key = id.toCanonicalString();\n return isColumnId(id)\n ? data.columnsData[key][i]\n : data.axesData[key][i];\n })\n .join(', ');\n result.push(value);\n }\n return result;\n}\n\nexport class BubbleStateController extends ControllerBase<BubbleUIState> {\n dataInputs = ['valueSize', 'valueColor'];\n dontAllowUnfilteredHighCardinality = true;\n constructor() {\n super({\n valueSize: new ComponentController<BubbleUIState, 'valueSize'>({\n componentName: 'valueSize',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueColor'],\n settings: {\n isDataComponent: true,\n columnsAllowed: true,\n axesAllowed: false,\n required: true,\n }\n }),\n valueColor: new ComponentController<BubbleUIState, 'valueColor'>({\n componentName: 'valueColor',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize'],\n settings: {\n isDataComponent: true,\n columnsAllowed: true,\n axesAllowed: false,\n required: true,\n },\n }),\n x: new ComponentController<BubbleUIState, 'x'>({\n componentName: 'x',\n allowedTypes: ['Int', 'String', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n required: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: false,\n },\n }),\n y: new ComponentController<BubbleUIState, 'y'>({\n componentName: 'y',\n allowedTypes: ['Int', 'String', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n required: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: false,\n },\n }),\n tooltipContent: new ComponentController<BubbleUIState, 'tooltipContent'>({\n componentName: 'tooltipContent',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n facetBy: new ComponentController<BubbleUIState, 'facetBy'>({\n componentName: 'facetBy',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n })\n }, {\n filters: new ComponentController<BubbleUIState, 'filters'>({\n componentName: 'filters',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n checkSourceBySpec: checkSourceBySpecForFilters\n }),\n tabBy: new ComponentController<BubbleUIState, 'tabBy'>({\n componentName: 'tabBy',\n allowedTypes: ['String', 'Int'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n dimensionConsumer: true,\n },\n }),\n });\n }\n\n async getMustBeConsumedAxes(store: DataStore, state: BubbleUIState):Promise<Set<string>> {\n if (!state.components.valueColor.selectorStates.length) {\n return new Set<string>();\n }\n const sourceId = state.components.valueColor.selectorStates[0].selectedSource;\n const spec = await store.pFrameProvider.getColumnSpecById(columnOrAxisIdFromString(sourceId));\n if (!spec) {\n return new Set<string>();\n }\n return new Set(spec.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString()))\n }\n\n async createDataByColumns(store: DataStore, state: BubbleUIState): Promise<PlotDataAndSettings['data']> {\n const valueColorColumnIdString = state.components.valueColor.selectorStates[0]?.selectedSource;\n const valueSizeColumnIdString = state.components.valueSize.selectorStates[0]?.selectedSource;\n if (!valueColorColumnIdString || !valueSizeColumnIdString) {\n throw Error('Value column is not valid');\n }\n const valueColorColumnId = columnOrAxisIdFromString(valueColorColumnIdString);\n const valueSizeColumnId = columnOrAxisIdFromString(valueSizeColumnIdString);\n if ((!valueColorColumnId || !valueSizeColumnId) || !isColumnId(valueColorColumnId) && !isColumnId(valueSizeColumnId)) {\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 linkerMap = await createLinkerMap(store);\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 const primaryColumns = ([valueColorColumnId, valueSizeColumnId]).filter(isColumnId);\n const parentSources = primaryColumns.map((v) => v.toCanonicalString());\n const parentAxesList = await getAxesSpecsFromSources(store, parentSources);\n const inputs = [\n state.components.facetBy,\n state.components.x,\n state.components.y,\n state.components.tooltipContent\n ];\n const secondarySources: (ColumnId | AxisId)[] = []; // primary sources are the only value column\n const primarySourcesFixedAxes:{idx: number, value: PValue}[][] = primaryColumns.map(() => []);\n const secondarySourcesFixedAxes:{idx: number, value: PValue}[][] = [];\n const linkerColumns:ColumnId[] = [];\n\n for (const {selectedSource, fixedAxes} of filterSelectedStates) {\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n parentAxesList,\n selectedSource,\n fixedAxes\n ));\n primarySourcesFixedAxes.push(\n (fixedAxes ?? []).map(({axisIdx, axisValue}) => ({idx: axisIdx, value: axisValue as PValue}))\n );\n }\n\n for (const input of inputs) {\n for (const {selectedSource, fixedAxes} of input.selectorStates) {\n secondarySources.push(columnOrAxisIdFromString(selectedSource)!);\n secondarySourcesFixedAxes.push(\n (fixedAxes ?? []).map(({axisIdx, axisValue}) => ({idx: axisIdx, value: axisValue as PValue}))\n );\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 if (labelsColumnId) {\n secondarySources.push(labelsColumnId);\n }\n }\n }\n\n const data = await store.pFrameProvider.getTableOuterJoin(\n [...primaryColumns, ...linkerColumns, ...filterColumns],\n secondarySources,\n filters,\n true,\n primarySourcesFixedAxes,\n secondarySourcesFixedAxes\n );\n\n secondarySources.forEach(item => {\n const key = item.toCanonicalString();\n dataByColumns.values[key] = isColumnId(item)\n ? data.columnsData[key]\n : data.axesData[key];\n });\n dataByColumns.values[valueColorColumnIdString] = isColumnId(valueColorColumnId)\n ? data.columnsData[valueColorColumnIdString]\n : data.axesData[valueColorColumnIdString]\n dataByColumns.values[valueSizeColumnIdString] = isColumnId(valueSizeColumnId)\n ? data.columnsData[valueSizeColumnIdString]\n : data.axesData[valueSizeColumnIdString]\n\n const xAxes = state.components.x.selectorStates.map(state => state.selectedSource);\n const xKey = xAxes.join(', ');\n const xAxesLabeled = await Promise.all(xAxes.map(\n async id => (await getColumnOrAxisValueLabelsId(store, id, parentSources))?.toCanonicalString() ?? id,\n ));\n dataByColumns.values[xKey] = getMultiSourceColumn(data, xAxes);\n dataByColumns.values.xLabels = getMultiSourceColumn(data, xAxesLabeled);\n\n // y column should contain yGroup axes\n const yAxes = state.components.y.selectorStates.map(state => state.selectedSource);\n const yKey = yAxes.join(', ');\n const yAxesLabeled = await Promise.all(yAxes.map(\n async id => (await getColumnOrAxisValueLabelsId(store, id, parentSources))?.toCanonicalString() ?? id,\n ));\n dataByColumns.values[yKey] = getMultiSourceColumn(data, yAxes);\n dataByColumns.values.yLabels = getMultiSourceColumn(data, yAxesLabeled);\n\n return {byColumns: dataByColumns};\n }\n\n async createChartSettings(store: DataStore, state: BubbleUIState): Promise<Record<string, unknown>> {\n const valueColorColumnIdString = state.components.valueColor.selectorStates[0]?.selectedSource;\n const valueSizeColumnIdString = state.components.valueSize.selectorStates[0]?.selectedSource;\n if (!valueColorColumnIdString || !valueSizeColumnIdString) {\n throw Error('Value column is not valid');\n }\n const valueColorColumnId = columnOrAxisIdFromString(valueColorColumnIdString);\n const valueSizeColumnId = columnOrAxisIdFromString(valueSizeColumnIdString);\n if (!isColumnId(valueColorColumnId) && !isColumnId(valueSizeColumnId)) {\n throw Error('Value column is not valid');\n }\n\n const parentSources = ([valueColorColumnId, valueSizeColumnId]).filter(isColumnId).map((v) => v.toCanonicalString());\n const valueColor = {\n type: 'column',\n value: valueColorColumnIdString,\n label: await getColumnOrAxisLabel(store, valueColorColumnIdString, []),\n };\n const valueSize = {\n type: 'column',\n value: valueSizeColumnIdString,\n label: await getColumnOrAxisLabel(store, valueSizeColumnIdString, []),\n };\n const xAxes = state.components.x.selectorStates.map(({selectedSource}) => selectedSource)\n const xKey = xAxes.join(', ');\n\n const yAxes = state.components.y.selectorStates.map(({selectedSource}) => selectedSource)\n const yKey = yAxes.join(', ');\n\n const facetBy = await Promise.all(state.components.facetBy.selectorStates.map(async selectorState => ({\n type: 'column',\n value:\n (await getColumnOrAxisValueLabelsId(store, selectorState.selectedSource, parentSources))?.toCanonicalString() ??\n selectorState.selectedSource,\n })));\n\n const xAxisTitle = (await Promise.all(state.components.x.selectorStates\n .map(state => getColumnOrAxisLabel(store, state.selectedSource, parentSources))))\n .join(', ');\n const yAxisTitle = (await Promise.all(state.components.y.selectorStates\n .map(state => getColumnOrAxisLabel(store, state.selectedSource, parentSources))))\n .join(', ');\n\n const tooltipContent = await Promise.all(\n state.components.tooltipContent.selectorStates.map(async selectorState => {\n const source = selectorState.selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n return {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, source, parentSources)) || source,\n value: source,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: spec?.annotations?.[FORMAT] ?? '.0%'\n };\n })\n );\n\n return {\n type: 'bubble',\n valueColor: valueColor,\n valueSize: valueSize,\n xColumn: {\n type: 'column',\n value: xKey,\n label: xAxisTitle,\n valueLabels: 'xLabels'\n },\n yColumn: {\n type: 'column',\n value: yKey,\n label: yAxisTitle,\n valueLabels: 'yLabels'\n },\n facetBy,\n tooltips: {\n show: true,\n content: tooltipContent\n }\n };\n }\n}\n"],"names":["InitialBubbleState","getMultiSourceColumn","data","selectedSources","selectedIds","str","columnOrAxisIdFromString","n","result","i","value","id","key","isColumnId","BubbleStateController","ControllerBase","ComponentController","checkSourceBySpecForFilters","__publicField","store","state","sourceId","spec","s","AxisId","valueColorColumnIdString","_a","valueSizeColumnIdString","_b","valueColorColumnId","valueSizeColumnId","dataByColumns","canonicalize","linkerMap","createLinkerMap","filterSelectedStates","filters","getFiltersFromStates","filterColumns","primaryColumns","parentSources","v","parentAxesList","getAxesSpecsFromSources","inputs","secondarySources","primarySourcesFixedAxes","secondarySourcesFixedAxes","linkerColumns","selectedSource","fixedAxes","getLinkerColumnsForSource","axisIdx","axisValue","input","labelsColumnId","getColumnOrAxisValueLabelsId","item","xAxes","xKey","xAxesLabeled","yAxes","yKey","yAxesLabeled","valueColor","getColumnOrAxisLabel","valueSize","facetBy","selectorState","xAxisTitle","yAxisTitle","tooltipContent","source","getColumnOrAxisSpec","FORMAT"],"mappings":"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","x_google_ignoreList":[0]}