@milaboratories/graph-maker 1.1.200 → 1.1.201
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.
- package/dist/components/Chart.vue.d.ts +3 -1
- package/dist/components/Chart.vue.d.ts.map +1 -1
- package/dist/components/Chart.vue.js +137 -120
- package/dist/components/Chart.vue.js.map +1 -1
- package/dist/components/DragAndDrop/DndBasket.vue.d.ts.map +1 -1
- package/dist/components/DragAndDrop/DndBasket.vue.js +39 -39
- package/dist/components/DragAndDrop/DndBasket.vue.js.map +1 -1
- package/dist/components/Loading.vue.d.ts +3 -0
- package/dist/components/Loading.vue.d.ts.map +1 -1
- package/dist/components/Loading.vue.js +19 -27
- package/dist/components/Loading.vue.js.map +1 -1
- package/dist/components/SettingsTabs/index.vue.d.ts.map +1 -1
- package/dist/components/SettingsTabs/index.vue.js +13 -13
- package/dist/components/SettingsTabs/index.vue.js.map +1 -1
- package/dist/constantsCommon.d.ts +2 -1
- package/dist/constantsCommon.d.ts.map +1 -1
- package/dist/constantsCommon.js +138 -126
- package/dist/constantsCommon.js.map +1 -1
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +3 -2
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/DataMappingForm/DiscreteForm.vue.js +9 -8
- package/dist/forms/DataMappingForm/DiscreteForm.vue.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.vue.d.ts.map +1 -1
- package/dist/index.vue.js +114 -106
- package/dist/index.vue.js.map +1 -1
- package/dist/types.d.ts +33 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +6 -5
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +25 -24
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChartInterface, ErrorInfo } from '@milaboratories/miplots4';
|
|
2
|
-
import { GraphStatus } from '../types.ts';
|
|
2
|
+
import { GraphStatus, StatusTextData } from '../types.ts';
|
|
3
3
|
type __VLS_Props = {
|
|
4
4
|
graphStatus: GraphStatus;
|
|
5
5
|
graphTitle: string;
|
|
@@ -7,6 +7,8 @@ type __VLS_Props = {
|
|
|
7
7
|
chartData: Record<string, unknown> | null;
|
|
8
8
|
chartRef: ChartInterface | null;
|
|
9
9
|
errorInfo: ErrorInfo | null;
|
|
10
|
+
customStatusText?: Partial<StatusTextData>;
|
|
11
|
+
allowTitleEditing?: boolean;
|
|
10
12
|
};
|
|
11
13
|
declare function __VLS_template(): {
|
|
12
14
|
attrs: Partial<{}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.vue.d.ts","sourceRoot":"","sources":["../../src/components/Chart.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Chart.vue.d.ts","sourceRoot":"","sources":["../../src/components/Chart.vue"],"names":[],"mappings":"AA0SA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAa1E,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM/D,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAiMF,iBAAS,cAAc;WAkST,OAAO,IAA6B;;yBAXrB,GAAG;;;;;;EAgB/B;AAsCD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;kBASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1,23 +1,28 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { PlNotificationAlert as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { MAX_SEARCH_OPTIONS_LIST_LENGTH as
|
|
9
|
-
import
|
|
10
|
-
import { useStore as
|
|
11
|
-
const
|
|
1
|
+
import { defineComponent as Z, ref as g, watch as T, computed as d, createElementBlock as S, openBlock as s, createElementVNode as h, createVNode as x, createCommentVNode as m, createBlock as v, withKeys as ee, resolveDynamicComponent as te, renderSlot as oe, unref as l, withCtx as C, createTextVNode as B, normalizeClass as H, withModifiers as N } from "vue";
|
|
2
|
+
import { PlNotificationAlert as ae, PlDropdown as re, PlAutocomplete as ne, PlAgOverlayLoading as le, PlAgOverlayNoRows as ie, PlBtnGhost as O } from "@platforma-sdk/ui-vue";
|
|
3
|
+
import se from "./DendroTable.vue.js";
|
|
4
|
+
import ue from "./DendroTooltip.vue.js";
|
|
5
|
+
import ce from "./LassoControls/index.vue.js";
|
|
6
|
+
import de from "./Loading.vue.js";
|
|
7
|
+
import me from "./Zoom/index.vue.js";
|
|
8
|
+
import { MAX_SEARCH_OPTIONS_LIST_LENGTH as _, DEFAULT_STATUS_TEXT as ve } from "../constantsCommon.js";
|
|
9
|
+
import fe from "../icons/EditIcon.vue.js";
|
|
10
|
+
import { useStore as pe } from "../store.js";
|
|
11
|
+
const ye = { class: "chart_container" }, Se = { class: "chart_header" }, he = ["value", "disabled"], ge = { class: "chart_titleLineSlot" }, Te = {
|
|
12
12
|
key: 0,
|
|
13
13
|
class: "chart_tabBy"
|
|
14
|
-
},
|
|
14
|
+
}, xe = {
|
|
15
15
|
key: 1,
|
|
16
|
-
class: "
|
|
17
|
-
|
|
16
|
+
class: "graph-maker__loading",
|
|
17
|
+
style: { top: "23px", bottom: "32px", border: "1px solid #E1E3EB", "border-radius": "8px", overflow: "hidden" }
|
|
18
|
+
}, be = {
|
|
19
|
+
key: 2,
|
|
20
|
+
class: "graph-maker__loading",
|
|
21
|
+
style: { top: "23px", bottom: "32px", border: "1px solid #E1E3EB", "border-radius": "8px", overflow: "hidden" }
|
|
22
|
+
}, we = {
|
|
18
23
|
key: 1,
|
|
19
24
|
class: "chart_controls"
|
|
20
|
-
},
|
|
25
|
+
}, Me = /* @__PURE__ */ Z({
|
|
21
26
|
__name: "Chart",
|
|
22
27
|
props: {
|
|
23
28
|
graphStatus: {},
|
|
@@ -25,60 +30,62 @@ const de = { class: "chart_container" }, fe = { class: "chart_header" }, me = ["
|
|
|
25
30
|
dendroTooltipButton: {},
|
|
26
31
|
chartData: {},
|
|
27
32
|
chartRef: {},
|
|
28
|
-
errorInfo: {}
|
|
33
|
+
errorInfo: {},
|
|
34
|
+
customStatusText: {},
|
|
35
|
+
allowTitleEditing: { type: Boolean }
|
|
29
36
|
},
|
|
30
37
|
emits: ["graph-title-update", "dendro-node-select", "dendro-tooltip-btn-click"],
|
|
31
|
-
setup(
|
|
32
|
-
const I =
|
|
33
|
-
|
|
38
|
+
setup(c, { emit: A }) {
|
|
39
|
+
const I = A, a = pe(), r = c, b = g(r.graphTitle);
|
|
40
|
+
T(() => r.graphTitle, (t) => {
|
|
34
41
|
b.value = t;
|
|
35
42
|
});
|
|
36
|
-
const $ =
|
|
43
|
+
const $ = d(() => {
|
|
37
44
|
var t;
|
|
38
45
|
return (t = a.value.reactive.optionsState.components.tabBy) == null ? void 0 : t.selectorStates[0];
|
|
39
|
-
}), p =
|
|
46
|
+
}), p = d(() => {
|
|
40
47
|
var t;
|
|
41
48
|
return (t = $.value) == null ? void 0 : t.selectedSource;
|
|
42
|
-
}),
|
|
49
|
+
}), E = d(() => {
|
|
43
50
|
var t, e;
|
|
44
51
|
return (e = (t = $.value) == null ? void 0 : t.selectedFilterValues) == null ? void 0 : e[0];
|
|
45
|
-
}), D =
|
|
52
|
+
}), D = d(() => {
|
|
46
53
|
var t;
|
|
47
54
|
return (t = a.value.reactive.optionsState.components.filters) == null ? void 0 : t.selectorStates;
|
|
48
|
-
}),
|
|
49
|
-
|
|
50
|
-
t !== e && (
|
|
55
|
+
}), f = g(E.value);
|
|
56
|
+
T(() => p.value, (t, e) => {
|
|
57
|
+
t !== e && (f.value = E.value);
|
|
51
58
|
}, { immediate: !0 });
|
|
52
|
-
async function
|
|
59
|
+
async function U(t) {
|
|
53
60
|
var o;
|
|
54
61
|
if (!a.value.columnsDataStore)
|
|
55
62
|
return Promise.resolve([]);
|
|
56
|
-
const e = D.value.find((
|
|
63
|
+
const e = D.value.find((i) => i.selectedSource === t);
|
|
57
64
|
if (e && (((o = e.selectedFilterValues) == null ? void 0 : o.length) ?? 0) > 0) {
|
|
58
|
-
const
|
|
59
|
-
return Promise.all(
|
|
65
|
+
const i = e.selectedFilterValues ?? [];
|
|
66
|
+
return Promise.all(i.map((u) => G(t, u)));
|
|
60
67
|
}
|
|
61
68
|
const n = await a.value.controller.getUniqueSourceValuesWithLabels(
|
|
62
69
|
a.value.columnsDataStore,
|
|
63
70
|
a.value.inputGuide.value,
|
|
64
71
|
t,
|
|
65
|
-
|
|
72
|
+
_
|
|
66
73
|
);
|
|
67
74
|
return n.overflow ? null : n.values;
|
|
68
75
|
}
|
|
69
|
-
const y =
|
|
70
|
-
|
|
76
|
+
const y = g();
|
|
77
|
+
T([
|
|
71
78
|
() => p.value,
|
|
72
79
|
() => a.value.loading.inputGuide
|
|
73
80
|
], async ([t, e]) => {
|
|
74
|
-
t === void 0 || e || !a.value.columnsDataStore || (y.value = await
|
|
75
|
-
}, { immediate: !0 }),
|
|
76
|
-
if (p.value === void 0 ||
|
|
81
|
+
t === void 0 || e || !a.value.columnsDataStore || (y.value = await U(t));
|
|
82
|
+
}, { immediate: !0 }), T(() => y.value, async (t) => {
|
|
83
|
+
if (p.value === void 0 || f.value !== void 0 || t === void 0)
|
|
77
84
|
return;
|
|
78
85
|
let e = t;
|
|
79
|
-
if (t === null && (e = await
|
|
86
|
+
if (t === null && (e = await P(p.value, "")), e != null && e.length) {
|
|
80
87
|
const n = e[0].value;
|
|
81
|
-
|
|
88
|
+
f.value = n, w(n);
|
|
82
89
|
}
|
|
83
90
|
}, { immediate: !0 });
|
|
84
91
|
function w(t) {
|
|
@@ -96,17 +103,17 @@ const de = { class: "chart_container" }, fe = { class: "chart_header" }, me = ["
|
|
|
96
103
|
function q(t) {
|
|
97
104
|
I("dendro-node-select", t);
|
|
98
105
|
}
|
|
99
|
-
async function
|
|
100
|
-
var
|
|
106
|
+
async function P(t, e, n = "label") {
|
|
107
|
+
var L;
|
|
101
108
|
if (!a.value.columnsDataStore)
|
|
102
109
|
return Promise.resolve([]);
|
|
103
|
-
const o = D.value.find((
|
|
104
|
-
if (o && (((
|
|
105
|
-
const
|
|
106
|
-
return e ?
|
|
110
|
+
const o = D.value.find((k) => k.selectedSource === t);
|
|
111
|
+
if (o && (((L = o.selectedFilterValues) == null ? void 0 : L.length) ?? 0) > 0) {
|
|
112
|
+
const k = o.selectedFilterValues ?? [], R = await Promise.all(k.map((V) => G(t, V)));
|
|
113
|
+
return e ? R.filter((V) => V.label.toLowerCase().includes(e.toLowerCase())) : R;
|
|
107
114
|
}
|
|
108
|
-
const
|
|
109
|
-
return (await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t,
|
|
115
|
+
const i = n === "label" ? e : void 0, u = n === "value" ? e : void 0;
|
|
116
|
+
return (await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, _, i, u)).values;
|
|
110
117
|
}
|
|
111
118
|
async function G(t, e) {
|
|
112
119
|
return a.value.columnsDataStore ? await a.value.controller.getUniqueSourceValuesWithLabels(
|
|
@@ -118,7 +125,7 @@ const de = { class: "chart_container" }, fe = { class: "chart_header" }, me = ["
|
|
|
118
125
|
e
|
|
119
126
|
).then((o) => o.values[0]) : Promise.resolve({ value: e, label: " " });
|
|
120
127
|
}
|
|
121
|
-
const
|
|
128
|
+
const M = g(), X = d(() => {
|
|
122
129
|
var e;
|
|
123
130
|
if (a.value.reactive.chartType !== "discrete")
|
|
124
131
|
return !1;
|
|
@@ -126,13 +133,13 @@ const de = { class: "chart_container" }, fe = { class: "chart_header" }, me = ["
|
|
|
126
133
|
if ((e = t.primaryGrouping) != null && e.selectorStates.length) {
|
|
127
134
|
const n = t.primaryGrouping.selectorStates[0].selectedSource, o = a.value.reactive.dataBindAes[n];
|
|
128
135
|
if ((o == null ? void 0 : o.type) === "categorical" && o.hidden)
|
|
129
|
-
return Object.values(o.hidden).length > 0 && o.order.some((
|
|
130
|
-
var
|
|
131
|
-
return (
|
|
136
|
+
return Object.values(o.hidden).length > 0 && o.order.some((i) => {
|
|
137
|
+
var u;
|
|
138
|
+
return (u = o.hidden) == null ? void 0 : u[i];
|
|
132
139
|
});
|
|
133
140
|
}
|
|
134
141
|
return !1;
|
|
135
|
-
}),
|
|
142
|
+
}), j = d(() => {
|
|
136
143
|
var e;
|
|
137
144
|
if (a.value.reactive.chartType !== "discrete")
|
|
138
145
|
return !1;
|
|
@@ -140,21 +147,21 @@ const de = { class: "chart_container" }, fe = { class: "chart_header" }, me = ["
|
|
|
140
147
|
if ((e = t.secondaryGrouping) != null && e.selectorStates.length) {
|
|
141
148
|
const n = t.secondaryGrouping.selectorStates[0].selectedSource, o = a.value.reactive.dataBindAes[n];
|
|
142
149
|
if ((o == null ? void 0 : o.type) === "categorical" && o.hidden)
|
|
143
|
-
return Object.values(o.hidden).length > 0 && o.order.some((
|
|
144
|
-
var
|
|
145
|
-
return (
|
|
150
|
+
return Object.values(o.hidden).length > 0 && o.order.some((i) => {
|
|
151
|
+
var u;
|
|
152
|
+
return (u = o.hidden) == null ? void 0 : u[i];
|
|
146
153
|
});
|
|
147
154
|
}
|
|
148
155
|
return !1;
|
|
149
156
|
});
|
|
150
|
-
function
|
|
157
|
+
function K() {
|
|
151
158
|
a.value.reactive.tabDefaultState.axes.reorderPrimaryOpen = !0, a.value.reactive.currentTab = "axes";
|
|
152
159
|
}
|
|
153
|
-
function
|
|
160
|
+
function Y() {
|
|
154
161
|
a.value.reactive.tabDefaultState.axes.reorderSecondaryOpen = !0, a.value.reactive.currentTab = "axes";
|
|
155
162
|
}
|
|
156
|
-
const
|
|
157
|
-
var t, e, n, o,
|
|
163
|
+
const z = d(() => {
|
|
164
|
+
var t, e, n, o, i, u;
|
|
158
165
|
return ((t = r.errorInfo) == null ? void 0 : t.type) === "tooManyFacets" ? `Too many facets (${r.errorInfo.info.count}).
|
|
159
166
|
Maximum count is ${r.errorInfo.info.maxCount}.
|
|
160
167
|
Try to filter the data.` : ((e = r.errorInfo) == null ? void 0 : e.type) === "tooManyPrimaryGroups" ? `Too many primary groups (${r.errorInfo.info.count}).
|
|
@@ -163,135 +170,145 @@ Try to filter the data.` : ((n = r.errorInfo) == null ? void 0 : n.type) === "
|
|
|
163
170
|
Maximum count is ${r.errorInfo.info.maxCount}.
|
|
164
171
|
Try to filter the data.` : ((o = r.errorInfo) == null ? void 0 : o.type) === "tooManyScatterplotGroupsX" ? `Too many categories on X axis (${r.errorInfo.info.count}).
|
|
165
172
|
Maximum count is ${r.errorInfo.info.maxCount}.
|
|
166
|
-
Try to filter the data.` : ((
|
|
173
|
+
Try to filter the data.` : ((i = r.errorInfo) == null ? void 0 : i.type) === "tooManyScatterplotGroupsY" ? `Too many categories on Y axis (${r.errorInfo.info.count}).
|
|
167
174
|
Maximum count is ${r.errorInfo.info.maxCount}.
|
|
168
|
-
Try to filter the data.` : ((
|
|
175
|
+
Try to filter the data.` : ((u = r.errorInfo) == null ? void 0 : u.type) === "tooManyHistogramGroups" ? `Too many groups (${r.errorInfo.info.count}).
|
|
169
176
|
Maximum count is ${r.errorInfo.info.maxCount}.
|
|
170
177
|
Try to filter the data.` : "";
|
|
178
|
+
}), J = d(() => r.graphStatus === "noPframe" || r.graphStatus === "empty"), Q = d(() => r.graphStatus === "notReady" || r.graphStatus === "inconsistent" || r.graphStatus === "knownError" || r.graphStatus === "unknownError"), F = d(() => {
|
|
179
|
+
var t, e;
|
|
180
|
+
return r.graphStatus === "knownError" ? z.value : ((e = (t = r.customStatusText) == null ? void 0 : t[r.graphStatus]) == null ? void 0 : e.title) ?? ve[r.graphStatus].title;
|
|
171
181
|
});
|
|
172
182
|
return (t, e) => {
|
|
173
183
|
var n;
|
|
174
|
-
return s(),
|
|
175
|
-
h("div",
|
|
184
|
+
return s(), S("div", ye, [
|
|
185
|
+
h("div", Se, [
|
|
176
186
|
h("input", {
|
|
177
187
|
class: "chart_title",
|
|
178
188
|
value: b.value,
|
|
189
|
+
disabled: !c.allowTitleEditing,
|
|
179
190
|
onChange: W,
|
|
180
|
-
onKeyup: e[0] || (e[0] =
|
|
181
|
-
var
|
|
182
|
-
(
|
|
191
|
+
onKeyup: e[0] || (e[0] = ee((o) => {
|
|
192
|
+
var i;
|
|
193
|
+
(i = o.target) == null || i.blur();
|
|
183
194
|
}, ["enter"]))
|
|
184
|
-
}, null, 40,
|
|
185
|
-
(s(),
|
|
186
|
-
|
|
187
|
-
|
|
195
|
+
}, null, 40, he),
|
|
196
|
+
c.allowTitleEditing ? (s(), v(te(fe), {
|
|
197
|
+
key: 0,
|
|
198
|
+
class: "chart_titleEdit"
|
|
199
|
+
})) : m("", !0),
|
|
200
|
+
h("div", ge, [
|
|
201
|
+
oe(t.$slots, "default")
|
|
188
202
|
])
|
|
189
203
|
]),
|
|
190
|
-
|
|
191
|
-
modelValue:
|
|
192
|
-
"onUpdate:modelValue": e[1] || (e[1] = (o) =>
|
|
204
|
+
x(l(ae), {
|
|
205
|
+
modelValue: l(a).reactive.showTooltipHint,
|
|
206
|
+
"onUpdate:modelValue": e[1] || (e[1] = (o) => l(a).reactive.showTooltipHint = o),
|
|
193
207
|
type: "success",
|
|
194
208
|
class: "chart_tooltipHint",
|
|
195
209
|
width: "170px"
|
|
196
210
|
}, {
|
|
197
211
|
default: C(() => [...e[10] || (e[10] = [
|
|
198
|
-
|
|
212
|
+
B(" Hit enter to pin tooltip ", -1)
|
|
199
213
|
])]),
|
|
200
214
|
_: 1
|
|
201
215
|
}, 8, ["modelValue"]),
|
|
202
|
-
p.value ? (s(),
|
|
203
|
-
y.value || y.value === void 0 &&
|
|
216
|
+
p.value ? (s(), S("div", Te, [
|
|
217
|
+
y.value || y.value === void 0 && l(a).loading.inputGuide ? (s(), v(l(re), {
|
|
204
218
|
key: 0,
|
|
205
|
-
modelValue:
|
|
219
|
+
modelValue: f.value,
|
|
206
220
|
"onUpdate:modelValue": [
|
|
207
|
-
e[2] || (e[2] = (o) =>
|
|
221
|
+
e[2] || (e[2] = (o) => f.value = o),
|
|
208
222
|
e[3] || (e[3] = (o) => w(o))
|
|
209
223
|
],
|
|
210
224
|
label: "Show for",
|
|
211
225
|
options: y.value
|
|
212
|
-
}, null, 8, ["modelValue", "options"])) : (s(),
|
|
226
|
+
}, null, 8, ["modelValue", "options"])) : (s(), v(l(ne), {
|
|
213
227
|
key: 1,
|
|
214
|
-
modelValue:
|
|
228
|
+
modelValue: f.value,
|
|
215
229
|
"onUpdate:modelValue": [
|
|
216
|
-
e[4] || (e[4] = (o) =>
|
|
230
|
+
e[4] || (e[4] = (o) => f.value = o),
|
|
217
231
|
e[5] || (e[5] = (o) => w(o))
|
|
218
232
|
],
|
|
219
233
|
label: "Show for",
|
|
220
|
-
"options-search": (o,
|
|
234
|
+
"options-search": (o, i) => P(p.value, o, i)
|
|
221
235
|
}, null, 8, ["modelValue", "options-search"]))
|
|
222
|
-
])) :
|
|
236
|
+
])) : m("", !0),
|
|
223
237
|
h("div", {
|
|
224
238
|
ref_key: "chartContainerRef",
|
|
225
|
-
ref:
|
|
226
|
-
class:
|
|
239
|
+
ref: M,
|
|
240
|
+
class: H(["chart_main-content", [{ "chart_main-content__dendro": l(a).reactive.chartType === "dendro" }, "pl-scrollable"]])
|
|
227
241
|
}, [
|
|
228
242
|
h("div", {
|
|
229
243
|
id: "chartSvgContainer",
|
|
230
|
-
class:
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
chart_emptyData: u.graphStatus === "empty",
|
|
234
|
-
chart_inconsistent: u.graphStatus === "inconsistent",
|
|
235
|
-
chart_knownError: u.graphStatus === "knownError",
|
|
236
|
-
chart_unknownError: u.graphStatus === "unknownError",
|
|
237
|
-
chart_activeLassoSelection: ((n = i(a).reactive.lassoControlsState) == null ? void 0 : n.mode) === "selection"
|
|
244
|
+
class: H({
|
|
245
|
+
chart_ready: c.graphStatus === "ready",
|
|
246
|
+
chart_activeLassoSelection: ((n = l(a).reactive.lassoControlsState) == null ? void 0 : n.mode) === "selection"
|
|
238
247
|
})
|
|
239
248
|
}, [
|
|
240
|
-
|
|
249
|
+
c.graphStatus === "loading" ? (s(), v(de, {
|
|
241
250
|
key: 0,
|
|
242
251
|
top: 23,
|
|
243
|
-
bottom: 32
|
|
244
|
-
|
|
245
|
-
|
|
252
|
+
bottom: 32,
|
|
253
|
+
"custom-status-text": c.customStatusText
|
|
254
|
+
}, null, 8, ["custom-status-text"])) : J.value ? (s(), S("div", xe, [
|
|
255
|
+
x(l(le), {
|
|
256
|
+
params: { variant: "not-ready", notReadyText: F.value }
|
|
257
|
+
}, null, 8, ["params"])
|
|
258
|
+
])) : Q.value ? (s(), S("div", be, [
|
|
259
|
+
x(l(ie), {
|
|
260
|
+
params: { text: F.value }
|
|
261
|
+
}, null, 8, ["params"])
|
|
262
|
+
])) : m("", !0)
|
|
246
263
|
], 2),
|
|
247
|
-
|
|
264
|
+
l(a).reactive.chartType === "dendro" && c.chartData && l(a).reactive.layersSettings.dendro.showTable ? (s(), v(se, {
|
|
248
265
|
key: 0,
|
|
249
|
-
chartData:
|
|
266
|
+
chartData: c.chartData,
|
|
250
267
|
onRowSelect: q
|
|
251
|
-
}, null, 8, ["chartData"])) :
|
|
252
|
-
|
|
268
|
+
}, null, 8, ["chartData"])) : m("", !0),
|
|
269
|
+
l(a).reactive.dendroInfoByClick ? (s(), v(ue, {
|
|
253
270
|
key: 1,
|
|
254
|
-
info:
|
|
255
|
-
containerRef:
|
|
256
|
-
tooltipBtn:
|
|
271
|
+
info: l(a).reactive.dendroInfoByClick,
|
|
272
|
+
containerRef: M.value,
|
|
273
|
+
tooltipBtn: c.dendroTooltipButton,
|
|
257
274
|
onTooltipBtnClick: e[6] || (e[6] = (o) => t.$emit("dendro-tooltip-btn-click", o)),
|
|
258
275
|
onClose: e[7] || (e[7] = (o) => {
|
|
259
|
-
|
|
276
|
+
l(a).reactive.dendroInfoByClick = null, t.$emit("dendro-node-select", null);
|
|
260
277
|
})
|
|
261
|
-
}, null, 8, ["info", "containerRef", "tooltipBtn"])) :
|
|
278
|
+
}, null, 8, ["info", "containerRef", "tooltipBtn"])) : m("", !0)
|
|
262
279
|
], 2),
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
280
|
+
c.graphStatus === "ready" ? (s(), S("div", we, [
|
|
281
|
+
x(me),
|
|
282
|
+
l(a).reactive.chartType === "scatterplot-umap" ? (s(), v(ce, {
|
|
266
283
|
key: 0,
|
|
267
|
-
"chart-ref":
|
|
268
|
-
}, null, 8, ["chart-ref"])) :
|
|
269
|
-
X.value ? (s(),
|
|
284
|
+
"chart-ref": c.chartRef
|
|
285
|
+
}, null, 8, ["chart-ref"])) : m("", !0),
|
|
286
|
+
X.value ? (s(), v(l(O), {
|
|
270
287
|
key: 1,
|
|
271
288
|
icon: "view-hide",
|
|
272
|
-
onClick: e[8] || (e[8] =
|
|
289
|
+
onClick: e[8] || (e[8] = N(() => K(), ["stop"]))
|
|
273
290
|
}, {
|
|
274
291
|
default: C(() => [...e[11] || (e[11] = [
|
|
275
|
-
|
|
292
|
+
B(" Hidden (primary) ", -1)
|
|
276
293
|
])]),
|
|
277
294
|
_: 1
|
|
278
|
-
})) :
|
|
279
|
-
|
|
295
|
+
})) : m("", !0),
|
|
296
|
+
j.value ? (s(), v(l(O), {
|
|
280
297
|
key: 2,
|
|
281
298
|
icon: "view-hide",
|
|
282
|
-
onClick: e[9] || (e[9] =
|
|
299
|
+
onClick: e[9] || (e[9] = N(() => Y(), ["stop"]))
|
|
283
300
|
}, {
|
|
284
301
|
default: C(() => [...e[12] || (e[12] = [
|
|
285
|
-
|
|
302
|
+
B(" Hidden (secondary) ", -1)
|
|
286
303
|
])]),
|
|
287
304
|
_: 1
|
|
288
|
-
})) :
|
|
289
|
-
])) :
|
|
305
|
+
})) : m("", !0)
|
|
306
|
+
])) : m("", !0)
|
|
290
307
|
]);
|
|
291
308
|
};
|
|
292
309
|
}
|
|
293
310
|
});
|
|
294
311
|
export {
|
|
295
|
-
|
|
312
|
+
Me as default
|
|
296
313
|
};
|
|
297
314
|
//# sourceMappingURL=Chart.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.vue.js","sources":["../../src/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartInterface, ErrorInfo } from '@milaboratories/miplots4';\nimport type { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport type { ListOption } from '@platforma-sdk/ui-vue';\nimport { PlAutocomplete, PlBtnGhost, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../components/DendroTable.vue';\nimport DendroTooltip from '../components/DendroTooltip.vue';\nimport LassoControls from '../components/LassoControls/index.vue';\nimport Loading from '../components/Loading.vue';\nimport Zoom from '../components/Zoom/index.vue';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../constantsCommon.ts';\nimport EditIcon from '../icons/EditIcon.vue';\nimport { useStore } from '../store.ts';\nimport type { GraphStatus } from '../types.ts';\n\nconst emit = defineEmits(['graph-title-update', 'dendro-node-select', 'dendro-tooltip-btn-click']);\n\nconst store = useStore();\n\nconst props = defineProps<{\n graphStatus: GraphStatus;\n graphTitle: string;\n dendroTooltipButton?: string;\n chartData: Record<string, unknown> | null;\n chartRef: ChartInterface | null;\n errorInfo: ErrorInfo | null;\n}>();\n\nconst title = ref(props.graphTitle);\n// title can be updated from graph-maker settings\nwatch(() => props.graphTitle, (graphTitle) => {\n title.value = graphTitle;\n});\n\nconst tabByState = computed(() => store.value.reactive.optionsState.components.tabBy?.selectorStates[0] as SelectorStateFilter | undefined);\nconst tabBySource = computed(() => tabByState.value?.selectedSource);\nconst tabByFilterValue = computed(() => tabByState.value?.selectedFilterValues?.[0]);\nconst filtersStates = computed(() => store.value.reactive.optionsState.components.filters?.selectorStates as SelectorStateFilter[]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch(() => tabBySource.value, (value, prevValue) => { // tabBy column changed, needs to update selected value\n if (value !== prevValue) {\n tabByLocalValue.value = tabByFilterValue.value;\n }\n}, { immediate: true });\n\n// try to load full options list, without search query; if result is not overflow, use values from it in regular dropdown, no autocomplete;\nasync function loadOptions(sourceId: string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n return Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore,\n store.value.inputGuide.value,\n sourceId,\n MAX_SEARCH_OPTIONS_LIST_LENGTH,\n );\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[] | null | undefined>();\nwatch([\n () => tabBySource.value,\n () => store.value.loading.inputGuide,\n], async ([v, loading]) => {\n if (v === undefined || loading || !store.value.columnsDataStore) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n}, { immediate: true });\n\nwatch(() => preloadedOptions.value, async (opts) => {\n if (\n tabBySource.value === undefined // no tabBy selected\n || tabByLocalValue.value !== undefined // tabBy selected and has selected value\n || opts === undefined // options not loaded yet\n ) {\n return;\n }\n let availableOptions = opts;\n if (opts === null) { // options loaded but too many unique values\n availableOptions = await searchFilterOptions(tabBySource.value, '');\n }\n if (availableOptions?.length) {\n const nextFilterValue = availableOptions[0].value as string;\n tabByLocalValue.value = nextFilterValue;\n onFilterValueUpdate(nextFilterValue);\n }\n}, { immediate: true });\n\nfunction onFilterValueUpdate(value: string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value],\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\n// search options for autocomplete component; use label-mode search for options and value-mode for search of label of selected by default value;\nasync function searchFilterOptions(sourceId: string, searchStr: string, type: 'value' | 'label' = 'label') {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n const results = await Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n return searchStr ? results.filter((v) => v.label.toLowerCase().includes(searchStr.toLowerCase())) : results;\n }\n const searchLabelStr = type === 'label' ? searchStr : undefined;\n const searchValueStr = type === 'value' ? searchStr : undefined;\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchLabelStr, searchValueStr)).values;\n}\n\n// search by value, not by label;\nasync function searchSelectedFilterValueOptions(sourceId: string, selectedValue: string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve({ value: selectedValue, label: ' ' }); // don't show non-human-readable value\n }\n const value = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore, store.value.inputGuide.value,\n sourceId, 1, undefined, selectedValue).then((v) => v.values[0]);\n return value;\n}\n\nconst chartContainerRef = ref();\n\nconst hasPrimaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.primaryGrouping?.selectorStates.length) {\n const columnName = optionsState.primaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nconst hasSecondaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.secondaryGrouping?.selectorStates.length) {\n const columnName = optionsState.secondaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nfunction openAxesSettingsPrimary() {\n store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\nfunction openAxesSettingsSecondary() {\n store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\n\nconst errorMessage = computed(() => {\n if (props.errorInfo?.type === 'tooManyFacets') {\n return `Too many facets (${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyPrimaryGroups') {\n return `Too many primary groups\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManySecondaryGroups') {\n return `Too many secondary groups\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyScatterplotGroupsX') {\n return `Too many categories on X axis\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyScatterplotGroupsY') {\n return `Too many categories on Y axis\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyHistogramGroups') {\n return `Too many groups\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n return '';\n});\n\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input\n class=\"chart_title\" :value=\"title\" @change=\"onTitleChange\"\n @keyup.enter=\"(e) => { (e.target as HTMLInputElement)?.blur() }\"\n />\n <component :is=\"EditIcon\" class=\"chart_titleEdit\" />\n <div class=\"chart_titleLineSlot\">\n <slot />\n </div>\n </div>\n <PlNotificationAlert\n v-model=\"store.reactive.showTooltipHint\" type=\"success\" class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div v-if=\"tabBySource\" class=\"chart_tabBy\">\n <PlDropdown\n v-if=\"preloadedOptions || (preloadedOptions === undefined && store.loading.inputGuide)\"\n v-model=\"tabByLocalValue\" label=\"Show for\" :options=\"preloadedOptions\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n <PlAutocomplete\n v-else v-model=\"tabByLocalValue\" label=\"Show for\"\n :options-search=\"(str, type) => searchFilterOptions(tabBySource as string, str, type)\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n </div>\n <div\n ref=\"chartContainerRef\" class=\"chart_main-content\"\n :class=\"[{ 'chart_main-content__dendro': store.reactive.chartType === 'dendro' }, 'pl-scrollable']\"\n >\n <div\n id=\"chartSvgContainer\" :class=\"{\n 'chart_loading': graphStatus === 'loading',\n 'chart_noDataMapping': graphStatus === 'notReady',\n 'chart_emptyData': graphStatus === 'empty',\n 'chart_inconsistent': graphStatus === 'inconsistent',\n 'chart_knownError': graphStatus === 'knownError',\n 'chart_unknownError': graphStatus === 'unknownError',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n >\n <Loading v-if=\"graphStatus === 'loading'\" :top=\"23\" :bottom=\"32\" />\n <div v-if=\"graphStatus === 'knownError'\" class=\"chart_errorMessage\">\n {{ errorMessage }}\n </div>\n </div>\n <DendroTable\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\" @row-select=\"onTableRowSelect\"\n />\n <DendroTooltip\n v-if=\"store.reactive.dendroInfoByClick\" :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\" :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id: string) => $emit('dendro-tooltip-btn-click', id)\" @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div v-if=\"graphStatus !== 'empty'\" class=\"chart_controls\">\n <Zoom />\n <LassoControls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\" />\n <PlBtnGhost v-if=\"hasPrimaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsPrimary()\">\n Hidden (primary)\n </PlBtnGhost>\n <PlBtnGhost v-if=\"hasSecondaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsSecondary()\">\n Hidden (secondary)\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","store","useStore","props","__props","title","ref","watch","graphTitle","tabByState","computed","_a","tabBySource","tabByFilterValue","_b","filtersStates","tabByLocalValue","value","prevValue","loadOptions","sourceId","filtersStateWithTheSameSource","state","selectedValues","selectedValue","searchSelectedFilterValueOptions","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","type","results","searchLabelStr","searchValueStr","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","errorMessage","_c","_d","_e","_f","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createBlock","_resolveDynamicComponent","EditIcon","_hoisted_4","_renderSlot","_ctx","_createVNode","_unref","PlNotificationAlert","$event","_cache","_hoisted_5","PlDropdown","PlAutocomplete","str","_normalizeClass","Loading","_hoisted_6","_toDisplayString","DendroTable","DendroTooltip","$emit","_hoisted_7","Zoom","LassoControls","PlBtnGhost"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.vue.js","sources":["../../src/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartInterface, ErrorInfo } from '@milaboratories/miplots4';\nimport type { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport type { ListOption } from '@platforma-sdk/ui-vue';\nimport { PlAgOverlayLoading, PlAgOverlayNoRows, PlAutocomplete, PlBtnGhost, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../components/DendroTable.vue';\nimport DendroTooltip from '../components/DendroTooltip.vue';\nimport LassoControls from '../components/LassoControls/index.vue';\nimport Loading from '../components/Loading.vue';\nimport Zoom from '../components/Zoom/index.vue';\nimport { DEFAULT_STATUS_TEXT, MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../constantsCommon.ts';\nimport EditIcon from '../icons/EditIcon.vue';\nimport { useStore } from '../store.ts';\nimport type { GraphStatus, StatusTextData } from '../types.ts';\n\nconst emit = defineEmits(['graph-title-update', 'dendro-node-select', 'dendro-tooltip-btn-click']);\n\nconst store = useStore();\n\nconst props = defineProps<{\n graphStatus: GraphStatus;\n graphTitle: string;\n dendroTooltipButton?: string;\n chartData: Record<string, unknown> | null;\n chartRef: ChartInterface | null;\n errorInfo: ErrorInfo | null;\n customStatusText?: Partial<StatusTextData>;\n allowTitleEditing?: boolean;\n}>();\n\nconst title = ref(props.graphTitle);\n// title can be updated from graph-maker settings\nwatch(() => props.graphTitle, (graphTitle) => {\n title.value = graphTitle;\n});\n\nconst tabByState = computed(() => store.value.reactive.optionsState.components.tabBy?.selectorStates[0] as SelectorStateFilter | undefined);\nconst tabBySource = computed(() => tabByState.value?.selectedSource);\nconst tabByFilterValue = computed(() => tabByState.value?.selectedFilterValues?.[0]);\nconst filtersStates = computed(() => store.value.reactive.optionsState.components.filters?.selectorStates as SelectorStateFilter[]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch(() => tabBySource.value, (value, prevValue) => { // tabBy column changed, needs to update selected value\n if (value !== prevValue) {\n tabByLocalValue.value = tabByFilterValue.value;\n }\n}, { immediate: true });\n\n// try to load full options list, without search query; if result is not overflow, use values from it in regular dropdown, no autocomplete;\nasync function loadOptions(sourceId: string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n return Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore,\n store.value.inputGuide.value,\n sourceId,\n MAX_SEARCH_OPTIONS_LIST_LENGTH,\n );\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[] | null | undefined>();\nwatch([\n () => tabBySource.value,\n () => store.value.loading.inputGuide,\n], async ([v, loading]) => {\n if (v === undefined || loading || !store.value.columnsDataStore) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n}, { immediate: true });\n\nwatch(() => preloadedOptions.value, async (opts) => {\n if (\n tabBySource.value === undefined // no tabBy selected\n || tabByLocalValue.value !== undefined // tabBy selected and has selected value\n || opts === undefined // options not loaded yet\n ) {\n return;\n }\n let availableOptions = opts;\n if (opts === null) { // options loaded but too many unique values\n availableOptions = await searchFilterOptions(tabBySource.value, '');\n }\n if (availableOptions?.length) {\n const nextFilterValue = availableOptions[0].value as string;\n tabByLocalValue.value = nextFilterValue;\n onFilterValueUpdate(nextFilterValue);\n }\n}, { immediate: true });\n\nfunction onFilterValueUpdate(value: string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value],\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\n// search options for autocomplete component; use label-mode search for options and value-mode for search of label of selected by default value;\nasync function searchFilterOptions(sourceId: string, searchStr: string, type: 'value' | 'label' = 'label') {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n const results = await Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n return searchStr ? results.filter((v) => v.label.toLowerCase().includes(searchStr.toLowerCase())) : results;\n }\n const searchLabelStr = type === 'label' ? searchStr : undefined;\n const searchValueStr = type === 'value' ? searchStr : undefined;\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchLabelStr, searchValueStr)).values;\n}\n\n// search by value, not by label;\nasync function searchSelectedFilterValueOptions(sourceId: string, selectedValue: string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve({ value: selectedValue, label: ' ' }); // don't show non-human-readable value\n }\n const value = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore, store.value.inputGuide.value,\n sourceId, 1, undefined, selectedValue).then((v) => v.values[0]);\n return value;\n}\n\nconst chartContainerRef = ref();\n\nconst hasPrimaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.primaryGrouping?.selectorStates.length) {\n const columnName = optionsState.primaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nconst hasSecondaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.secondaryGrouping?.selectorStates.length) {\n const columnName = optionsState.secondaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nfunction openAxesSettingsPrimary() {\n store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\nfunction openAxesSettingsSecondary() {\n store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\n\nconst errorMessage = computed(() => {\n if (props.errorInfo?.type === 'tooManyFacets') {\n return `Too many facets (${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyPrimaryGroups') {\n return `Too many primary groups\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManySecondaryGroups') {\n return `Too many secondary groups\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyScatterplotGroupsX') {\n return `Too many categories on X axis\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyScatterplotGroupsY') {\n return `Too many categories on Y axis\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyHistogramGroups') {\n return `Too many groups\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n return '';\n});\n\nconst catInBagStatus = computed(() => props.graphStatus === 'noPframe' || props.graphStatus === 'empty');\nconst catNoDataStatus = computed(() => props.graphStatus === 'notReady' || props.graphStatus === 'inconsistent' || props.graphStatus === 'knownError' || props.graphStatus === 'unknownError');\n\nconst statusText = computed(() => {\n if (props.graphStatus === 'knownError') {\n return errorMessage.value;\n }\n return props.customStatusText?.[props.graphStatus]?.title ?? DEFAULT_STATUS_TEXT[props.graphStatus].title;\n});\n\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input\n class=\"chart_title\"\n :value=\"title\"\n :disabled=\"!allowTitleEditing\"\n @change=\"onTitleChange\"\n @keyup.enter=\"(e) => { (e.target as HTMLInputElement)?.blur() }\"\n />\n <component :is=\"EditIcon\" v-if=\"allowTitleEditing\" class=\"chart_titleEdit\" />\n <div class=\"chart_titleLineSlot\">\n <slot />\n </div>\n </div>\n <PlNotificationAlert\n v-model=\"store.reactive.showTooltipHint\" type=\"success\" class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div v-if=\"tabBySource\" class=\"chart_tabBy\">\n <PlDropdown\n v-if=\"preloadedOptions || (preloadedOptions === undefined && store.loading.inputGuide)\"\n v-model=\"tabByLocalValue\" label=\"Show for\" :options=\"preloadedOptions\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n <PlAutocomplete\n v-else v-model=\"tabByLocalValue\" label=\"Show for\"\n :options-search=\"(str, type) => searchFilterOptions(tabBySource as string, str, type)\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n </div>\n <div\n ref=\"chartContainerRef\" class=\"chart_main-content\"\n :class=\"[{ 'chart_main-content__dendro': store.reactive.chartType === 'dendro' }, 'pl-scrollable']\"\n >\n <div\n id=\"chartSvgContainer\" :class=\"{\n 'chart_ready': graphStatus === 'ready',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n >\n <Loading v-if=\"graphStatus === 'loading'\" :top=\"23\" :bottom=\"32\" :custom-status-text=\"customStatusText\"/>\n <div v-else-if=\"catInBagStatus\" class=\"graph-maker__loading\" :style=\"{top: '23px', bottom: '32px', border: '1px solid #E1E3EB', 'border-radius': '8px', overflow: 'hidden'}\">\n <PlAgOverlayLoading :params=\"{variant: 'not-ready', notReadyText: statusText}\"/>\n </div>\n <div v-else-if=\"catNoDataStatus\" class=\"graph-maker__loading\" :style=\"{top: '23px', bottom: '32px', border: '1px solid #E1E3EB', 'border-radius': '8px', overflow: 'hidden'}\">\n <PlAgOverlayNoRows :params=\"{text: statusText}\"/>\n </div>\n </div>\n <DendroTable\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\" @row-select=\"onTableRowSelect\"\n />\n <DendroTooltip\n v-if=\"store.reactive.dendroInfoByClick\" :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\" :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id: string) => $emit('dendro-tooltip-btn-click', id)\" @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div v-if=\"graphStatus === 'ready'\" class=\"chart_controls\">\n <Zoom />\n <LassoControls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\" />\n <PlBtnGhost v-if=\"hasPrimaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsPrimary()\">\n Hidden (primary)\n </PlBtnGhost>\n <PlBtnGhost v-if=\"hasSecondaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsSecondary()\">\n Hidden (secondary)\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","store","useStore","props","__props","title","ref","watch","graphTitle","tabByState","computed","_a","tabBySource","tabByFilterValue","_b","filtersStates","tabByLocalValue","value","prevValue","loadOptions","sourceId","filtersStateWithTheSameSource","state","selectedValues","selectedValue","searchSelectedFilterValueOptions","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","type","results","searchLabelStr","searchValueStr","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","errorMessage","_c","_d","_e","_f","catInBagStatus","catNoDataStatus","statusText","DEFAULT_STATUS_TEXT","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createBlock","_resolveDynamicComponent","EditIcon","_hoisted_4","_renderSlot","_ctx","_createVNode","_unref","PlNotificationAlert","$event","_cache","_hoisted_5","PlDropdown","PlAutocomplete","str","_normalizeClass","Loading","_hoisted_6","PlAgOverlayLoading","_hoisted_7","PlAgOverlayNoRows","DendroTable","DendroTooltip","$emit","_hoisted_8","Zoom","LassoControls","PlBtnGhost"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,UAAMA,IAAOC,GAEPC,IAAQC,GAAA,GAERC,IAAQC,GAWRC,IAAQC,EAAIH,EAAM,UAAU;AAElC,IAAAI,EAAM,MAAMJ,EAAM,YAAY,CAACK,MAAe;AAC5C,MAAAH,EAAM,QAAQG;AAAA,IAChB,CAAC;AAED,UAAMC,IAAaC,EAAS,MAAA;;AAAM,cAAAC,IAAAV,EAAM,MAAM,SAAS,aAAa,WAAW,UAA7C,gBAAAU,EAAoD,eAAe;AAAA,KAAqC,GACpIC,IAAcF,EAAS,MAAA;;AAAM,cAAAC,IAAAF,EAAW,UAAX,gBAAAE,EAAkB;AAAA,KAAc,GAC7DE,IAAmBH,EAAS,MAAA;;AAAM,cAAAI,KAAAH,IAAAF,EAAW,UAAX,gBAAAE,EAAkB,yBAAlB,gBAAAG,EAAyC;AAAA,KAAE,GAC7EC,IAAgBL,EAAS,MAAA;;AAAM,cAAAC,IAAAV,EAAM,MAAM,SAAS,aAAa,WAAW,YAA7C,gBAAAU,EAAsD;AAAA,KAAuC,GAE5HK,IAAkBV,EAAIO,EAAiB,KAAK;AAClD,IAAAN,EAAM,MAAMK,EAAY,OAAO,CAACK,GAAOC,MAAc;AACnD,MAAID,MAAUC,MACZF,EAAgB,QAAQH,EAAiB;AAAA,IAE7C,GAAG,EAAE,WAAW,IAAM;AAGtB,mBAAeM,EAAYC,GAAkB;;AAC3C,UAAI,CAACnB,EAAM,MAAM;AACf,eAAO,QAAQ,QAAQ,EAAE;AAG3B,YAAMoB,IAAgCN,EAAc,MAAM,KAAK,CAACO,MAAUA,EAAM,mBAAmBF,CAAQ;AAC3G,UAAIC,QAAkCV,IAAAU,EAA8B,yBAA9B,gBAAAV,EAAoD,WAAU,KAAK,GAAG;AAC1G,cAAMY,IAAiBF,EAA8B,wBAAwB,CAAA;AAC7E,eAAO,QAAQ,IAAIE,EAAe,IAAI,CAACC,MAAkBC,EAAiCL,GAAUI,CAAa,CAAC,CAAC;AAAA,MACrH;AACA,YAAME,IAAW,MAAMzB,EAAM,MAAM,WAAW;AAAA,QAC5CA,EAAM,MAAM;AAAA,QACZA,EAAM,MAAM,WAAW;AAAA,QACvBmB;AAAA,QACAO;AAAA,MAAA;AAEF,aAAOD,EAAS,WAAW,OAAOA,EAAS;AAAA,IAC7C;AACA,UAAME,IAAmBtB,EAAA;AACzB,IAAAC,EAAM;AAAA,MACJ,MAAMK,EAAY;AAAA,MAClB,MAAMX,EAAM,MAAM,QAAQ;AAAA,IAAA,GACzB,OAAO,CAAC4B,GAAGC,CAAO,MAAM;AACzB,MAAID,MAAM,UAAaC,KAAW,CAAC7B,EAAM,MAAM,qBAG/C2B,EAAiB,QAAQ,MAAMT,EAAYU,CAAC;AAAA,IAC9C,GAAG,EAAE,WAAW,IAAM,GAEtBtB,EAAM,MAAMqB,EAAiB,OAAO,OAAOG,MAAS;AAClD,UACEnB,EAAY,UAAU,UACnBI,EAAgB,UAAU,UAC1Be,MAAS;AAEZ;AAEF,UAAIC,IAAmBD;AAIvB,UAHIA,MAAS,SACXC,IAAmB,MAAMC,EAAoBrB,EAAY,OAAO,EAAE,IAEhEoB,KAAA,QAAAA,EAAkB,QAAQ;AAC5B,cAAME,IAAkBF,EAAiB,CAAC,EAAE;AAC5C,QAAAhB,EAAgB,QAAQkB,GACxBC,EAAoBD,CAAe;AAAA,MACrC;AAAA,IACF,GAAG,EAAE,WAAW,IAAM;AAEtB,aAASC,EAAoBlB,GAAe;AAC1C,YAAMmB,IAAqBnC,EAAM,MAAM,SAAS,aAAa,WAAW,MAAM;AAC9E,MAAImC,EAAmB,WACrBnC,EAAM,MAAM,SAAS,aAAa,WAAW,MAAM,iBAAiB,CAAC;AAAA,QACnE,GAAGmC,EAAmB,CAAC;AAAA,QACvB,MAAM;AAAA,QACN,sBAAsB,CAACnB,CAAK;AAAA,MAAA,CAC7B;AAAA,IAEL;AAEA,aAASoB,EAAcC,GAAU;AAC/B,YAAMC,IAASD,EAAE;AACjB,MAAAjC,EAAM,QAAQkC,EAAO,OACrBxC,EAAK,sBAAsBwC,EAAO,KAAK;AAAA,IACzC;AAEA,aAASC,EAAiBC,GAAY;AACpC,MAAA1C,EAAK,sBAAsB0C,CAAE;AAAA,IAC/B;AAGA,mBAAeR,EAAoBb,GAAkBsB,GAAmBC,IAA0B,SAAS;;AACzG,UAAI,CAAC1C,EAAM,MAAM;AACf,eAAO,QAAQ,QAAQ,EAAE;AAG3B,YAAMoB,IAAgCN,EAAc,MAAM,KAAK,CAACO,MAAUA,EAAM,mBAAmBF,CAAQ;AAC3G,UAAIC,QAAkCV,IAAAU,EAA8B,yBAA9B,gBAAAV,EAAoD,WAAU,KAAK,GAAG;AAC1G,cAAMY,IAAiBF,EAA8B,wBAAwB,CAAA,GACvEuB,IAAU,MAAM,QAAQ,IAAIrB,EAAe,IAAI,CAACC,MAAkBC,EAAiCL,GAAUI,CAAa,CAAC,CAAC;AAClI,eAAOkB,IAAYE,EAAQ,OAAO,CAACf,MAAMA,EAAE,MAAM,YAAA,EAAc,SAASa,EAAU,YAAA,CAAa,CAAC,IAAIE;AAAA,MACtG;AACA,YAAMC,IAAiBF,MAAS,UAAUD,IAAY,QAChDI,IAAiBH,MAAS,UAAUD,IAAY;AACtD,cAAQ,MAAMzC,EAAM,MAAM,WAAW,gCAAgCA,EAAM,MAAM,kBAAkBA,EAAM,MAAM,WAAW,OAAOmB,GAAUO,GAAgCkB,GAAgBC,CAAc,GAAG;AAAA,IAC9M;AAGA,mBAAerB,EAAiCL,GAAkBI,GAAuB;AACvF,aAAKvB,EAAM,MAAM,mBAGH,MAAMA,EAAM,MAAM,WAAW;AAAA,QACzCA,EAAM,MAAM;AAAA,QAAkBA,EAAM,MAAM,WAAW;AAAA,QACrDmB;AAAA,QAAU;AAAA,QAAG;AAAA,QAAWI;AAAA,MAAA,EAAe,KAAK,CAACK,MAAMA,EAAE,OAAO,CAAC,CAAC,IAJvD,QAAQ,QAAQ,EAAE,OAAOL,GAAe,OAAO,KAAK;AAAA,IAM/D;AAEA,UAAMuB,IAAoBzC,EAAA,GAEpB0C,IAAmBtC,EAAS,MAAM;;AACtC,UAAIT,EAAM,MAAM,SAAS,cAAc;AACrC,eAAO;AAET,YAAMgD,IAAehD,EAAM,MAAM,SAAS,aAAa;AACvD,WAAIU,IAAAsC,EAAa,oBAAb,QAAAtC,EAA8B,eAAe,QAAQ;AACvD,cAAMuC,IAAaD,EAAa,gBAAgB,eAAe,CAAC,EAAE,gBAC5DE,IAAclD,EAAM,MAAM,SAAS,YAAYiD,CAAU;AAC/D,aAAIC,KAAA,gBAAAA,EAAa,UAAS,iBAAiBA,EAAY;AACrD,iBAAO,OAAO,OAAOA,EAAY,MAAM,EAAE,SAAS,KAAKA,EAAY,MAAM,KAAK,CAACtB,MAAA;;AAAM,oBAAAlB,IAAAwC,EAAY,WAAZ,gBAAAxC,EAAqBkB;AAAA,WAAE;AAAA,MAEhH;AACA,aAAO;AAAA,IACT,CAAC,GACKuB,IAAqB1C,EAAS,MAAM;;AACxC,UAAIT,EAAM,MAAM,SAAS,cAAc;AACrC,eAAO;AAET,YAAMgD,IAAehD,EAAM,MAAM,SAAS,aAAa;AACvD,WAAIU,IAAAsC,EAAa,sBAAb,QAAAtC,EAAgC,eAAe,QAAQ;AACzD,cAAMuC,IAAaD,EAAa,kBAAkB,eAAe,CAAC,EAAE,gBAC9DE,IAAclD,EAAM,MAAM,SAAS,YAAYiD,CAAU;AAC/D,aAAIC,KAAA,gBAAAA,EAAa,UAAS,iBAAiBA,EAAY;AACrD,iBAAO,OAAO,OAAOA,EAAY,MAAM,EAAE,SAAS,KAAKA,EAAY,MAAM,KAAK,CAACtB,MAAA;;AAAM,oBAAAlB,IAAAwC,EAAY,WAAZ,gBAAAxC,EAAqBkB;AAAA,WAAE;AAAA,MAEhH;AACA,aAAO;AAAA,IACT,CAAC;AACD,aAASwB,IAA0B;AACjC,MAAApD,EAAM,MAAM,SAAS,gBAAgB,KAAQ,qBAAqB,IAClEA,EAAM,MAAM,SAAS,aAAa;AAAA,IACpC;AACA,aAASqD,IAA4B;AACnC,MAAArD,EAAM,MAAM,SAAS,gBAAgB,KAAQ,uBAAuB,IACpEA,EAAM,MAAM,SAAS,aAAa;AAAA,IACpC;AAEA,UAAMsD,IAAe7C,EAAS,MAAM;;AAClC,eAAIC,IAAAR,EAAM,cAAN,gBAAAQ,EAAiB,UAAS,kBACrB,oBAAoBR,EAAM,UAAU,KAAK,KAAK;AAAA,mBAA6BA,EAAM,UAAU,KAAK,QAAQ;AAAA,6BAE7GW,IAAAX,EAAM,cAAN,gBAAAW,EAAiB,UAAS,yBACrB,4BAAiCX,EAAM,UAAU,KAAK,KAAK;AAAA,mBAA6BA,EAAM,UAAU,KAAK,QAAQ;AAAA,6BAE1HqD,IAAArD,EAAM,cAAN,gBAAAqD,EAAiB,UAAS,2BACrB,8BAAmCrD,EAAM,UAAU,KAAK,KAAK;AAAA,mBAA6BA,EAAM,UAAU,KAAK,QAAQ;AAAA,6BAE5HsD,IAAAtD,EAAM,cAAN,gBAAAsD,EAAiB,UAAS,8BACrB,kCAAuCtD,EAAM,UAAU,KAAK,KAAK;AAAA,mBAA6BA,EAAM,UAAU,KAAK,QAAQ;AAAA,6BAEhIuD,IAAAvD,EAAM,cAAN,gBAAAuD,EAAiB,UAAS,8BACrB,kCAAuCvD,EAAM,UAAU,KAAK,KAAK;AAAA,mBAA6BA,EAAM,UAAU,KAAK,QAAQ;AAAA,6BAEhIwD,IAAAxD,EAAM,cAAN,gBAAAwD,EAAiB,UAAS,2BACrB,oBAAyBxD,EAAM,UAAU,KAAK,KAAK;AAAA,mBAA6BA,EAAM,UAAU,KAAK,QAAQ;AAAA,2BAE/G;AAAA,IACT,CAAC,GAEKyD,IAAiBlD,EAAS,MAAMP,EAAM,gBAAgB,cAAcA,EAAM,gBAAgB,OAAO,GACjG0D,IAAkBnD,EAAS,MAAMP,EAAM,gBAAgB,cAAcA,EAAM,gBAAgB,kBAAkBA,EAAM,gBAAgB,gBAAgBA,EAAM,gBAAgB,cAAc,GAEvL2D,IAAapD,EAAS,MAAM;;AAChC,aAAIP,EAAM,gBAAgB,eACjBoD,EAAa,UAEfzC,KAAAH,IAAAR,EAAM,qBAAN,gBAAAQ,EAAyBR,EAAM,iBAA/B,gBAAAW,EAA6C,UAASiD,GAAoB5D,EAAM,WAAW,EAAE;AAAA,IACtG,CAAC;;;AAKC,aAAA6D,EAAA,GAAAC,EAyEM,OAzENC,IAyEM;AAAA,QAxEJC,EAYM,OAZNC,IAYM;AAAA,UAXJD,EAME,SAAA;AAAA,YALA,OAAM;AAAA,YACL,OAAO9D,EAAA;AAAA,YACP,WAAWD,EAAA;AAAA,YACX,UAAQiC;AAAA,YACR,6BAAcC,MAAC;;AAAQ,eAAA3B,IAAA2B,EAAE,WAAF,QAAA3B,EAA+B;AAAA,YAAI,GAAA,CAAA,OAAA,CAAA;AAAA,UAAA;UAE7BP,EAAA,qBAAhC4D,EAAA,GAAAK,EAA6EC,GAA7DC,EAAQ,GAAA;AAAA;YAA2B,OAAM;AAAA,UAAA;UACzDJ,EAEM,OAFNK,IAEM;AAAA,YADJC,GAAQC,EAAA,QAAA,SAAA;AAAA,UAAA;;QAGZC,EAKsBC,EAAAC,EAAA,GAAA;AAAA,sBAJXD,EAAA3E,CAAA,EAAM,SAAS;AAAA,wDAAf2E,EAAA3E,CAAA,EAAM,SAAS,kBAAe6E;AAAA,UAAE,MAAK;AAAA,UAAU,OAAM;AAAA,UAC9D,OAAM;AAAA,QAAA;qBACP,MAED,CAAA,GAAAC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,cAFC,8BAED,EAAA;AAAA,UAAA;;;QACWnE,EAAA,SAAXoD,EAAA,GAAAC,EAWM,OAXNe,IAWM;AAAA,UATIpD,EAAA,SAAqBA,YAAqB,UAAagD,EAAA3E,CAAA,EAAM,QAAQ,mBAD7EoE,EAIEO,EAAAK,EAAA,GAAA;AAAA;wBAFSjE,EAAA;AAAA;qCAAAA,EAAe,QAAA8D;AAAA,+BACHjD,MAAMM,EAAoBN,CAAC;AAAA,YAAA;AAAA,YADtB,OAAM;AAAA,YAAY,SAASD,EAAA;AAAA,UAAA,gDAGvDyC,EAIEO,EAAAM,EAAA,GAAA;AAAA;wBAHgBlE,EAAA;AAAA;qCAAAA,EAAe,QAAA8D;AAAA,+BAEVjD,MAAMM,EAAoBN,CAAC;AAAA,YAAA;AAAA,YAFf,OAAM;AAAA,YACtC,kBAAc,CAAGsD,GAAKxC,MAASV,EAAoBrB,EAAA,OAAuBuE,GAAKxC,CAAI;AAAA,UAAA;;QAIxFwB,EA8BM,OAAA;AAAA,mBA7BA;AAAA,UAAJ,KAAIpB;AAAA,UAAoB,UAAM,sBAAoB,CAAA,EAAA,8BACT6B,KAAM,SAAS,cAAS,SAAA,GAAA,eAAA,CAAA,CAAA;AAAA,QAAA;UAEjET,EAaM,OAAA;AAAA,YAZJ,IAAG;AAAA,YAAqB,OAAKiB,EAAA;AAAA,2BAA6BhF,EAAA,gBAAW;AAAA,cAAsD,8BAAAwE,IAAAA,EAAA3E,CAAA,EAAM,SAAS,uBAAf2E,gBAAAA,EAAmC,UAAI;AAAA,YAAA;;YAKnJxE,EAAA,gBAAW,kBAA1BiE,EAAyGgB,IAAA;AAAA;cAA9D,KAAK;AAAA,cAAK,QAAQ;AAAA,cAAK,sBAAoBjF,EAAA;AAAA,YAAA,uCACtEwD,EAAA,SAAhBI,EAAA,GAAAC,EAEM,OAFNqB,IAEM;AAAA,cADJX,EAAgFC,EAAAW,EAAA,GAAA;AAAA,gBAA3D,8CAA6CzB,EAAA,MAAA;AAAA,cAAU;kBAE9DD,EAAA,SAAhBG,KAAAC,EAEM,OAFNuB,IAEM;AAAA,cADJb,EAAiDC,EAAAa,EAAA,GAAA;AAAA,gBAA7B,gBAAe3B,EAAA,MAAA;AAAA,cAAU;;;UAIzCc,EAAA3E,CAAA,EAAM,SAAS,0BAA0BG,EAAA,aAAawE,EAAA3E,CAAA,EAAM,SAAS,eAAe,OAAO,kBADnGoE,EAGEqB,IAAA;AAAA;YADC,WAAWtF,EAAA;AAAA,YAAY,aAAYoC;AAAA,UAAA;UAG9BoC,EAAA3E,CAAA,EAAM,SAAS,0BADvBoE,EAOEsB,IAAA;AAAA;YANyC,MAAMf,EAAA3E,CAAA,EAAM,SAAS;AAAA,YAC7D,cAAc8C,EAAA;AAAA,YAAoB,YAAY3C,EAAA;AAAA,YAC9C,mBAAiB2E,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAGtC,MAAemD,EAAAA,kCAAkCnD,CAAE;AAAA,YAAI,SAAKsC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAA;AAAaF,cAAAA,EAAA3E,CAAA,EAAM,SAAS,oBAAiB,MAAmB2F,EAAAA,MAAK,sBAAA,IAAA;AAAA;;;QAM/IxF,EAAA,gBAAW,WAAtB4D,KAAAC,EASM,OATN4B,IASM;AAAA,UARJlB,EAAQmB,EAAA;AAAA,UACalB,EAAA3E,CAAA,EAAM,SAAS,cAAS,2BAA7CoE,EAA8F0B,IAAA;AAAA;YAAvB,aAAW3F,EAAA;AAAA,UAAA;UAChE4C,EAAA,cAAlBqB,EAEaO,EAAAoB,CAAA,GAAA;AAAA;YAFuB,MAAK;AAAA,YAAa,iCAAkB3C,KAAuB,CAAA,MAAA,CAAA;AAAA,UAAA;uBAAI,MAEnG,CAAA,GAAA0B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,gBAFmG,sBAEnG,EAAA;AAAA,YAAA;;;UACkB3B,EAAA,cAAlBiB,EAEaO,EAAAoB,CAAA,GAAA;AAAA;YAFyB,MAAK;AAAA,YAAa,iCAAkB1C,KAAyB,CAAA,MAAA,CAAA;AAAA,UAAA;uBAAI,MAEvG,CAAA,GAAAyB,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,gBAFuG,wBAEvG,EAAA;AAAA,YAAA;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DndBasket.vue.d.ts","sourceRoot":"","sources":["../../../src/components/DragAndDrop/DndBasket.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DndBasket.vue.d.ts","sourceRoot":"","sources":["../../../src/components/DragAndDrop/DndBasket.vue"],"names":[],"mappings":"AAiMA,OAAO,KAAK,EAEV,cAAc,EACd,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,KAAK,WAAW,GAAG,cAAc,CAAC;;;;;;;;;;;;;;;;;AAsTlC,wBASG"}
|