@milaboratories/graph-maker 1.1.181 → 1.1.183

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 (34) hide show
  1. package/dist/components/AesSettings/AesDataMappingDiscrete.vue.d.ts +1 -3
  2. package/dist/components/AesSettings/AesDataMappingDiscrete.vue.js +7 -323
  3. package/dist/components/AesSettings/AesDataMappingDiscrete.vue.js.map +1 -1
  4. package/dist/components/AesSettings/AesDataMappingDiscrete.vue2.js +215 -2
  5. package/dist/components/AesSettings/AesDataMappingDiscrete.vue2.js.map +1 -1
  6. package/dist/components/AesSettings/AesDataMappingDiscrete.vue3.js +11 -0
  7. package/dist/components/AesSettings/AesDataMappingDiscrete.vue3.js.map +1 -0
  8. package/dist/components/AesSettings/DiscreteRow.vue.d.ts +27 -0
  9. package/dist/components/AesSettings/DiscreteRow.vue.js +10 -0
  10. package/dist/components/AesSettings/DiscreteRow.vue.js.map +1 -0
  11. package/dist/components/AesSettings/DiscreteRow.vue2.js +159 -0
  12. package/dist/components/AesSettings/DiscreteRow.vue2.js.map +1 -0
  13. package/dist/components/AesSettings/DiscreteRow.vue3.js +19 -0
  14. package/dist/components/AesSettings/DiscreteRow.vue3.js.map +1 -0
  15. package/dist/components/Chart.vue.js +165 -148
  16. package/dist/components/Chart.vue.js.map +1 -1
  17. package/dist/components/ReorderForm.vue.d.ts +1 -3
  18. package/dist/components/ReorderForm.vue.js +7 -43
  19. package/dist/components/ReorderForm.vue.js.map +1 -1
  20. package/dist/components/ReorderForm.vue2.js +50 -2
  21. package/dist/components/ReorderForm.vue2.js.map +1 -1
  22. package/dist/components/ReorderForm.vue3.js +11 -0
  23. package/dist/components/ReorderForm.vue3.js.map +1 -0
  24. package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +20 -20
  25. package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.js +53 -53
  26. package/dist/forms/LayersForm/AesSelector.vue.js +29 -29
  27. package/dist/utils/createChartSettingsForRender/composeChartSettings.js +35 -35
  28. package/dist/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
  29. package/dist/utils/createChartSettingsForRender/getLayersDataFromForms.js +49 -52
  30. package/dist/utils/createChartSettingsForRender/getLayersDataFromForms.js.map +1 -1
  31. package/package.json +2 -2
  32. package/dist/icons/Reorder.vue.d.ts +0 -2
  33. package/dist/icons/Reorder.vue.js +0 -19
  34. package/dist/icons/Reorder.vue.js.map +0 -1
@@ -1,23 +1,23 @@
1
- import { defineComponent as _, ref as S, watch as g, computed as p, createElementBlock as T, openBlock as i, createElementVNode as y, createVNode as $, createCommentVNode as s, createBlock as c, withKeys as j, resolveDynamicComponent as K, renderSlot as z, unref as r, withCtx as b, createTextVNode as C, normalizeClass as G, toDisplayString as X, withModifiers as P } from "vue";
2
- import { PlNotificationAlert as J, PlDropdown as Q, PlAutocomplete as Y, PlBtnGhost as E } from "@platforma-sdk/ui-vue";
3
- import Z from "./DendroTable.vue.js";
4
- import ee from "./DendroTooltip.vue.js";
5
- import te from "./LassoControls/index.vue.js";
6
- import oe from "./Loading.vue.js";
7
- import ae from "./Zoom/index.vue.js";
8
- import { MAX_SEARCH_OPTIONS_LIST_LENGTH as M } from "../constantsCommon.js";
9
- import re from "../icons/EditIcon.vue.js";
10
- import { useStore as ne } from "../store.js";
11
- const le = { class: "chart_container" }, ie = { class: "chart_header" }, ue = ["value"], se = { class: "chart_titleLineSlot" }, ce = {
1
+ import { defineComponent as K, ref as S, watch as g, computed as p, createElementBlock as T, openBlock as s, createElementVNode as y, createVNode as I, createCommentVNode as d, createBlock as v, withKeys as z, resolveDynamicComponent as X, renderSlot as J, unref as n, withCtx as C, createTextVNode as B, normalizeClass as E, toDisplayString as Q, withModifiers as M } from "vue";
2
+ import { PlNotificationAlert as Y, PlDropdown as Z, PlAutocomplete as ee, PlBtnGhost as H } from "@platforma-sdk/ui-vue";
3
+ import te from "./DendroTable.vue.js";
4
+ import oe from "./DendroTooltip.vue.js";
5
+ import ae from "./LassoControls/index.vue.js";
6
+ import re from "./Loading.vue.js";
7
+ import ne from "./Zoom/index.vue.js";
8
+ import { MAX_SEARCH_OPTIONS_LIST_LENGTH as L } from "../constantsCommon.js";
9
+ import le from "../icons/EditIcon.vue.js";
10
+ import { useStore as ie } from "../store.js";
11
+ const se = { class: "chart_container" }, ue = { class: "chart_header" }, ce = ["value"], de = { class: "chart_titleLineSlot" }, ve = {
12
12
  key: 0,
13
13
  class: "chart_tabBy"
14
- }, de = {
14
+ }, me = {
15
15
  key: 1,
16
16
  class: "chart_errorMessage"
17
- }, ve = {
17
+ }, fe = {
18
18
  key: 1,
19
19
  class: "chart_controls"
20
- }, be = /* @__PURE__ */ _({
20
+ }, Ce = /* @__PURE__ */ K({
21
21
  __name: "Chart",
22
22
  props: {
23
23
  graphStatus: {},
@@ -28,241 +28,258 @@ const le = { class: "chart_container" }, ie = { class: "chart_header" }, ue = ["
28
28
  errorInfo: {}
29
29
  },
30
30
  emits: ["graph-title-update", "dendro-node-select", "dendro-tooltip-btn-click"],
31
- setup(n, { emit: H }) {
32
- const V = H, o = ne(), u = n, k = S(u.graphTitle);
31
+ setup(l, { emit: R }) {
32
+ const D = R, a = ie(), u = l, w = S(u.graphTitle);
33
33
  g(() => u.graphTitle, (t) => {
34
- k.value = t;
34
+ w.value = t;
35
35
  });
36
- const B = p(() => {
36
+ const x = p(() => {
37
37
  var t;
38
- return (t = o.value.reactive.optionsState.components.tabBy) == null ? void 0 : t.selectorStates[0];
39
- }), d = p(() => {
38
+ return (t = a.value.reactive.optionsState.components.tabBy) == null ? void 0 : t.selectorStates[0];
39
+ }), m = p(() => {
40
40
  var t;
41
- return (t = B.value) == null ? void 0 : t.selectedSource;
42
- }), D = p(() => {
41
+ return (t = x.value) == null ? void 0 : t.selectedSource;
42
+ }), $ = p(() => {
43
43
  var t, e;
44
- return (e = (t = B.value) == null ? void 0 : t.selectedFilterValues) == null ? void 0 : e[0];
45
- }), v = S(D.value);
46
- g(() => d.value, (t, e) => {
47
- t !== e && (v.value = D.value);
44
+ return (e = (t = x.value) == null ? void 0 : t.selectedFilterValues) == null ? void 0 : e[0];
45
+ }), P = p(() => {
46
+ var t;
47
+ return (t = a.value.reactive.optionsState.components.filters) == null ? void 0 : t.selectorStates;
48
+ }), f = S($.value);
49
+ g(() => m.value, (t, e) => {
50
+ t !== e && (f.value = $.value);
48
51
  }, { immediate: !0 });
49
- async function R(t) {
50
- if (!o.value.columnsDataStore)
52
+ async function N(t) {
53
+ var o;
54
+ if (!a.value.columnsDataStore)
51
55
  return Promise.resolve([]);
52
- const e = await o.value.controller.getUniqueSourceValuesWithLabels(o.value.columnsDataStore, o.value.inputGuide.value, t, M);
53
- return e.overflow ? null : e.values;
56
+ const e = P.value.find((i) => i.selectedSource === t);
57
+ if (e && (((o = e.selectedFilterValues) == null ? void 0 : o.length) ?? 0) > 0) {
58
+ const i = e.selectedFilterValues ?? [];
59
+ return Promise.all(i.map((c) => V(t, c)));
60
+ }
61
+ const r = await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, L);
62
+ return r.overflow ? null : r.values;
54
63
  }
55
- const f = S();
64
+ const h = S();
56
65
  g([
57
- () => d.value,
58
- () => o.value.loading.inputGuide
66
+ () => m.value,
67
+ () => a.value.loading.inputGuide
59
68
  ], async ([t, e]) => {
60
- t === void 0 || e || !o.value.columnsDataStore || (f.value = await R(t));
61
- }, { immediate: !0 }), g(() => f.value, async (t) => {
62
- if (d.value === void 0 || v.value !== void 0 || t === void 0)
69
+ t === void 0 || e || !a.value.columnsDataStore || (h.value = await N(t));
70
+ }, { immediate: !0 }), g(() => h.value, async (t) => {
71
+ if (m.value === void 0 || f.value !== void 0 || t === void 0)
63
72
  return;
64
73
  let e = t;
65
- if (t === null && (e = await I(d.value, "")), e != null && e.length) {
66
- const l = e[0].value;
67
- v.value = l, w(l);
74
+ if (t === null && (e = await G(m.value, "")), e != null && e.length) {
75
+ const r = e[0].value;
76
+ f.value = r, k(r);
68
77
  }
69
78
  }, { immediate: !0 });
70
- function w(t) {
71
- const e = o.value.reactive.optionsState.components.tabBy.selectorStates;
72
- e.length && (o.value.reactive.optionsState.components.tabBy.selectorStates = [{
79
+ function k(t) {
80
+ const e = a.value.reactive.optionsState.components.tabBy.selectorStates;
81
+ e.length && (a.value.reactive.optionsState.components.tabBy.selectorStates = [{
73
82
  ...e[0],
74
83
  type: "equals",
75
84
  selectedFilterValues: [t]
76
85
  }]);
77
86
  }
78
- function N(t) {
87
+ function O(t) {
79
88
  const e = t.currentTarget;
80
- k.value = e.value, V("graph-title-update", e.value);
89
+ w.value = e.value, D("graph-title-update", e.value);
81
90
  }
82
- function O(t) {
83
- V("dendro-node-select", t);
91
+ function U(t) {
92
+ D("dendro-node-select", t);
84
93
  }
85
- async function I(t, e) {
86
- return o.value.columnsDataStore ? (await o.value.controller.getUniqueSourceValuesWithLabels(o.value.columnsDataStore, o.value.inputGuide.value, t, M, e || void 0)).values : Promise.resolve([]);
94
+ async function G(t, e) {
95
+ var o;
96
+ if (!a.value.columnsDataStore)
97
+ return Promise.resolve([]);
98
+ const r = P.value.find((i) => i.selectedSource === t);
99
+ if (r && (((o = r.selectedFilterValues) == null ? void 0 : o.length) ?? 0) > 0) {
100
+ const i = r.selectedFilterValues ?? [], c = await Promise.all(i.map((b) => V(t, b)));
101
+ return e ? c.filter((b) => b.label.toLowerCase().includes(e.toLowerCase())) : c;
102
+ }
103
+ return (await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, L, e || void 0)).values;
87
104
  }
88
- async function F(t, e) {
89
- return o.value.columnsDataStore ? await o.value.controller.getUniqueSourceValuesWithLabels(
90
- o.value.columnsDataStore,
91
- o.value.inputGuide.value,
105
+ async function V(t, e) {
106
+ return a.value.columnsDataStore ? await a.value.controller.getUniqueSourceValuesWithLabels(
107
+ a.value.columnsDataStore,
108
+ a.value.inputGuide.value,
92
109
  t,
93
110
  1,
94
111
  void 0,
95
112
  e
96
- ).then((a) => a.values[0]) : Promise.resolve({ value: e, label: " " });
113
+ ).then((o) => o.values[0]) : Promise.resolve({ value: e, label: " " });
97
114
  }
98
- const x = S(), L = p(() => {
115
+ const F = S(), A = p(() => {
99
116
  var e;
100
- if (o.value.reactive.chartType !== "discrete")
117
+ if (a.value.reactive.chartType !== "discrete")
101
118
  return !1;
102
- const t = o.value.reactive.optionsState.components;
119
+ const t = a.value.reactive.optionsState.components;
103
120
  if ((e = t.primaryGrouping) != null && e.selectorStates.length) {
104
- const l = t.primaryGrouping.selectorStates[0].selectedSource, a = o.value.reactive.dataBindAes[l];
105
- if ((a == null ? void 0 : a.type) === "categorical" && a.hidden)
106
- return Object.values(a.hidden).length > 0 && a.order.some((m) => {
107
- var h;
108
- return (h = a.hidden) == null ? void 0 : h[m];
121
+ const r = t.primaryGrouping.selectorStates[0].selectedSource, o = a.value.reactive.dataBindAes[r];
122
+ if ((o == null ? void 0 : o.type) === "categorical" && o.hidden)
123
+ return Object.values(o.hidden).length > 0 && o.order.some((i) => {
124
+ var c;
125
+ return (c = o.hidden) == null ? void 0 : c[i];
109
126
  });
110
127
  }
111
128
  return !1;
112
- }), U = p(() => {
129
+ }), W = p(() => {
113
130
  var e;
114
- if (o.value.reactive.chartType !== "discrete")
131
+ if (a.value.reactive.chartType !== "discrete")
115
132
  return !1;
116
- const t = o.value.reactive.optionsState.components;
133
+ const t = a.value.reactive.optionsState.components;
117
134
  if ((e = t.secondaryGrouping) != null && e.selectorStates.length) {
118
- const l = t.secondaryGrouping.selectorStates[0].selectedSource, a = o.value.reactive.dataBindAes[l];
119
- if ((a == null ? void 0 : a.type) === "categorical" && a.hidden)
120
- return Object.values(a.hidden).length > 0 && a.order.some((m) => {
121
- var h;
122
- return (h = a.hidden) == null ? void 0 : h[m];
135
+ const r = t.secondaryGrouping.selectorStates[0].selectedSource, o = a.value.reactive.dataBindAes[r];
136
+ if ((o == null ? void 0 : o.type) === "categorical" && o.hidden)
137
+ return Object.values(o.hidden).length > 0 && o.order.some((i) => {
138
+ var c;
139
+ return (c = o.hidden) == null ? void 0 : c[i];
123
140
  });
124
141
  }
125
142
  return !1;
126
143
  });
127
- function A() {
128
- o.value.reactive.tabDefaultState.axes.reorderPrimaryOpen = !0, o.value.reactive.currentTab = "axes";
129
- }
130
144
  function q() {
131
- o.value.reactive.tabDefaultState.axes.reorderSecondaryOpen = !0, o.value.reactive.currentTab = "axes";
145
+ a.value.reactive.tabDefaultState.axes.reorderPrimaryOpen = !0, a.value.reactive.currentTab = "axes";
146
+ }
147
+ function _() {
148
+ a.value.reactive.tabDefaultState.axes.reorderSecondaryOpen = !0, a.value.reactive.currentTab = "axes";
132
149
  }
133
- const W = p(() => {
134
- var t, e, l;
150
+ const j = p(() => {
151
+ var t, e, r;
135
152
  return ((t = u.errorInfo) == null ? void 0 : t.type) === "tooManyFacets" ? `Too many facets (${u.errorInfo.info.count}).
136
153
  Maximum count is ${u.errorInfo.info.maxCount}.
137
154
  Try to filter the data.` : ((e = u.errorInfo) == null ? void 0 : e.type) === "tooManyPrimaryGroups" ? `Too many primary groups (${u.errorInfo.info.count}).
138
155
  Maximum count is ${u.errorInfo.info.maxCount}.
139
- Try to filter the data.` : ((l = u.errorInfo) == null ? void 0 : l.type) === "tooManySecondaryGroups" ? `Too many secondary groups (${u.errorInfo.info.count}).
156
+ Try to filter the data.` : ((r = u.errorInfo) == null ? void 0 : r.type) === "tooManySecondaryGroups" ? `Too many secondary groups (${u.errorInfo.info.count}).
140
157
  Maximum count is ${u.errorInfo.info.maxCount}.
141
158
  Try to filter the data.` : "";
142
159
  });
143
160
  return (t, e) => {
144
- var l;
145
- return i(), T("div", le, [
146
- y("div", ie, [
161
+ var r;
162
+ return s(), T("div", se, [
163
+ y("div", ue, [
147
164
  y("input", {
148
165
  class: "chart_title",
149
- value: k.value,
150
- onChange: N,
151
- onKeyup: e[0] || (e[0] = j((a) => {
152
- var m;
153
- (m = a.target) == null || m.blur();
166
+ value: w.value,
167
+ onChange: O,
168
+ onKeyup: e[0] || (e[0] = z((o) => {
169
+ var i;
170
+ (i = o.target) == null || i.blur();
154
171
  }, ["enter"]))
155
- }, null, 40, ue),
156
- (i(), c(K(re), { class: "chart_titleEdit" })),
157
- y("div", se, [
158
- z(t.$slots, "default")
172
+ }, null, 40, ce),
173
+ (s(), v(X(le), { class: "chart_titleEdit" })),
174
+ y("div", de, [
175
+ J(t.$slots, "default")
159
176
  ])
160
177
  ]),
161
- $(r(J), {
162
- modelValue: r(o).reactive.showTooltipHint,
163
- "onUpdate:modelValue": e[1] || (e[1] = (a) => r(o).reactive.showTooltipHint = a),
178
+ I(n(Y), {
179
+ modelValue: n(a).reactive.showTooltipHint,
180
+ "onUpdate:modelValue": e[1] || (e[1] = (o) => n(a).reactive.showTooltipHint = o),
164
181
  type: "success",
165
182
  class: "chart_tooltipHint",
166
183
  width: "170px"
167
184
  }, {
168
- default: b(() => [...e[10] || (e[10] = [
169
- C(" Hit enter to pin tooltip ", -1)
185
+ default: C(() => [...e[10] || (e[10] = [
186
+ B(" Hit enter to pin tooltip ", -1)
170
187
  ])]),
171
188
  _: 1
172
189
  }, 8, ["modelValue"]),
173
- d.value ? (i(), T("div", ce, [
174
- f.value || f.value === void 0 && r(o).loading.inputGuide ? (i(), c(r(Q), {
190
+ m.value ? (s(), T("div", ve, [
191
+ h.value || h.value === void 0 && n(a).loading.inputGuide ? (s(), v(n(Z), {
175
192
  key: 0,
176
- modelValue: v.value,
193
+ modelValue: f.value,
177
194
  "onUpdate:modelValue": [
178
- e[2] || (e[2] = (a) => v.value = a),
179
- e[3] || (e[3] = (a) => w(a))
195
+ e[2] || (e[2] = (o) => f.value = o),
196
+ e[3] || (e[3] = (o) => k(o))
180
197
  ],
181
198
  label: "Show for",
182
- options: f.value
183
- }, null, 8, ["modelValue", "options"])) : (i(), c(r(Y), {
199
+ options: h.value
200
+ }, null, 8, ["modelValue", "options"])) : (s(), v(n(ee), {
184
201
  key: 1,
185
- modelValue: v.value,
202
+ modelValue: f.value,
186
203
  "onUpdate:modelValue": [
187
- e[4] || (e[4] = (a) => v.value = a),
188
- e[5] || (e[5] = (a) => w(a))
204
+ e[4] || (e[4] = (o) => f.value = o),
205
+ e[5] || (e[5] = (o) => k(o))
189
206
  ],
190
207
  label: "Show for",
191
- "options-search": (a) => I(d.value, a),
192
- "model-search": (a) => F(d.value, a)
208
+ "options-search": (o) => G(m.value, o),
209
+ "model-search": (o) => V(m.value, o)
193
210
  }, null, 8, ["modelValue", "options-search", "model-search"]))
194
- ])) : s("", !0),
211
+ ])) : d("", !0),
195
212
  y("div", {
196
213
  ref_key: "chartContainerRef",
197
- ref: x,
198
- class: G(["chart_main-content", [{ "chart_main-content__dendro": r(o).reactive.chartType === "dendro" }, "pl-scrollable"]])
214
+ ref: F,
215
+ class: E(["chart_main-content", [{ "chart_main-content__dendro": n(a).reactive.chartType === "dendro" }, "pl-scrollable"]])
199
216
  }, [
200
217
  y("div", {
201
218
  id: "chartSvgContainer",
202
- class: G({
203
- chart_loading: n.graphStatus === "loading",
204
- chart_noDataMapping: n.graphStatus === "notReady",
205
- chart_emptyData: n.graphStatus === "empty",
206
- chart_inconsistent: n.graphStatus === "inconsistent",
207
- chart_knownError: n.graphStatus === "knownError",
208
- chart_unknownError: n.graphStatus === "unknownError",
209
- chart_activeLassoSelection: ((l = r(o).reactive.lassoControlsState) == null ? void 0 : l.mode) === "selection"
219
+ class: E({
220
+ chart_loading: l.graphStatus === "loading",
221
+ chart_noDataMapping: l.graphStatus === "notReady",
222
+ chart_emptyData: l.graphStatus === "empty",
223
+ chart_inconsistent: l.graphStatus === "inconsistent",
224
+ chart_knownError: l.graphStatus === "knownError",
225
+ chart_unknownError: l.graphStatus === "unknownError",
226
+ chart_activeLassoSelection: ((r = n(a).reactive.lassoControlsState) == null ? void 0 : r.mode) === "selection"
210
227
  })
211
228
  }, [
212
- n.graphStatus === "loading" ? (i(), c(oe, {
229
+ l.graphStatus === "loading" ? (s(), v(re, {
213
230
  key: 0,
214
231
  top: 10
215
- })) : s("", !0),
216
- n.graphStatus === "knownError" ? (i(), T("div", de, X(W.value), 1)) : s("", !0)
232
+ })) : d("", !0),
233
+ l.graphStatus === "knownError" ? (s(), T("div", me, Q(j.value), 1)) : d("", !0)
217
234
  ], 2),
218
- r(o).reactive.chartType === "dendro" && n.chartData && r(o).reactive.layersSettings.dendro.showTable ? (i(), c(Z, {
235
+ n(a).reactive.chartType === "dendro" && l.chartData && n(a).reactive.layersSettings.dendro.showTable ? (s(), v(te, {
219
236
  key: 0,
220
- chartData: n.chartData,
221
- onRowSelect: O
222
- }, null, 8, ["chartData"])) : s("", !0),
223
- r(o).reactive.dendroInfoByClick ? (i(), c(ee, {
237
+ chartData: l.chartData,
238
+ onRowSelect: U
239
+ }, null, 8, ["chartData"])) : d("", !0),
240
+ n(a).reactive.dendroInfoByClick ? (s(), v(oe, {
224
241
  key: 1,
225
- info: r(o).reactive.dendroInfoByClick,
226
- containerRef: x.value,
227
- tooltipBtn: n.dendroTooltipButton,
228
- onTooltipBtnClick: e[6] || (e[6] = (a) => t.$emit("dendro-tooltip-btn-click", a)),
229
- onClose: e[7] || (e[7] = (a) => {
230
- r(o).reactive.dendroInfoByClick = null, t.$emit("dendro-node-select", null);
242
+ info: n(a).reactive.dendroInfoByClick,
243
+ containerRef: F.value,
244
+ tooltipBtn: l.dendroTooltipButton,
245
+ onTooltipBtnClick: e[6] || (e[6] = (o) => t.$emit("dendro-tooltip-btn-click", o)),
246
+ onClose: e[7] || (e[7] = (o) => {
247
+ n(a).reactive.dendroInfoByClick = null, t.$emit("dendro-node-select", null);
231
248
  })
232
- }, null, 8, ["info", "containerRef", "tooltipBtn"])) : s("", !0)
249
+ }, null, 8, ["info", "containerRef", "tooltipBtn"])) : d("", !0)
233
250
  ], 2),
234
- n.graphStatus !== "empty" ? (i(), T("div", ve, [
235
- $(ae),
236
- r(o).reactive.chartType === "scatterplot-umap" ? (i(), c(te, {
251
+ l.graphStatus !== "empty" ? (s(), T("div", fe, [
252
+ I(ne),
253
+ n(a).reactive.chartType === "scatterplot-umap" ? (s(), v(ae, {
237
254
  key: 0,
238
- "chart-ref": n.chartRef
239
- }, null, 8, ["chart-ref"])) : s("", !0),
240
- L.value ? (i(), c(r(E), {
255
+ "chart-ref": l.chartRef
256
+ }, null, 8, ["chart-ref"])) : d("", !0),
257
+ A.value ? (s(), v(n(H), {
241
258
  key: 1,
242
259
  icon: "view-hide",
243
- onClick: e[8] || (e[8] = P(() => A(), ["stop"]))
260
+ onClick: e[8] || (e[8] = M(() => q(), ["stop"]))
244
261
  }, {
245
- default: b(() => [...e[11] || (e[11] = [
246
- C(" Hidden (primary) ", -1)
262
+ default: C(() => [...e[11] || (e[11] = [
263
+ B(" Hidden (primary) ", -1)
247
264
  ])]),
248
265
  _: 1
249
- })) : s("", !0),
250
- U.value ? (i(), c(r(E), {
266
+ })) : d("", !0),
267
+ W.value ? (s(), v(n(H), {
251
268
  key: 2,
252
269
  icon: "view-hide",
253
- onClick: e[9] || (e[9] = P(() => q(), ["stop"]))
270
+ onClick: e[9] || (e[9] = M(() => _(), ["stop"]))
254
271
  }, {
255
- default: b(() => [...e[12] || (e[12] = [
256
- C(" Hidden (secondary) ", -1)
272
+ default: C(() => [...e[12] || (e[12] = [
273
+ B(" Hidden (secondary) ", -1)
257
274
  ])]),
258
275
  _: 1
259
- })) : s("", !0)
260
- ])) : s("", !0)
276
+ })) : d("", !0)
277
+ ])) : d("", !0)
261
278
  ]);
262
279
  };
263
280
  }
264
281
  });
265
282
  export {
266
- be as default
283
+ Ce as default
267
284
  };
268
285
  //# 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]);\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\nasync function loadOptions(sourceId: string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH);\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\nasync function searchFilterOptions(sourceId: string, searchStr: string): Promise<ListOption[]> {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchStr || undefined)).values;\n}\n\nasync function searchSelectedFilterValueOptions(sourceId: string, selectedValue: string): Promise<ListOption> {\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 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\"\n type=\"success\"\n 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\"\n label=\"Show for\"\n :options=\"preloadedOptions\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n <PlAutocomplete\n v-else\n v-model=\"tabByLocalValue\"\n label=\"Show for\"\n :options-search=\"(str) => searchFilterOptions(tabBySource as string, str)\"\n :model-search=\"(v) => searchSelectedFilterValueOptions(tabBySource as string, v as string)\"\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\"\n :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=\"10\"/>\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\"\n @row-select=\"onTableRowSelect\"\n />\n <DendroTooltip\n v-if=\"store.reactive.dendroInfoByClick\"\n :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\"\n :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id:string) => $emit('dendro-tooltip-btn-click', id)\"\n @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","tabByLocalValue","value","prevValue","loadOptions","sourceId","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","searchSelectedFilterValueOptions","selectedValue","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","errorMessage","_c","_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 { 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\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(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH);\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\nasync function searchFilterOptions(sourceId: string, searchStr: 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 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 return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchStr || undefined)).values;\n}\n\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 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) => searchFilterOptions(tabBySource as string, str)\"\n :model-search=\"(v) => searchSelectedFilterValueOptions(tabBySource as string, v as string)\"\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=\"10\" />\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","results","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","errorMessage","_c","_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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"}
@@ -8,7 +8,5 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {},
8
8
  "update:modelValue": (...args: any[]) => void;
9
9
  }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
10
10
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
11
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
12
- optionsListRef: HTMLDivElement;
13
- }, HTMLDivElement>;
11
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
14
12
  export default _default;
@@ -1,46 +1,10 @@
1
- import { defineComponent as c, mergeModels as p, useModel as _, computed as v, ref as f, createElementBlock as r, openBlock as t, createElementVNode as l, Fragment as g, renderList as h, createBlock as k, resolveDynamicComponent as V, toDisplayString as x } from "vue";
2
- import { useSortable as y } from "@platforma-sdk/ui-vue";
3
- import L from "../icons/Reorder.vue.js";
4
- const R = { class: "aes-mapping-block" }, b = { class: "column-value__reorder-icon" }, B = { class: "column-value__title" }, w = /* @__PURE__ */ c({
5
- __name: "ReorderForm",
6
- props: {
7
- modelValue: { required: !0 },
8
- modelModifiers: {}
9
- },
10
- emits: /* @__PURE__ */ p(["update:modelValue"], ["update:modelValue"]),
11
- setup(u, { emit: i }) {
12
- const s = _(u, "modelValue"), d = i, m = v(
13
- () => s.value.map((e) => ({
14
- text: e.label,
15
- value: e.value
16
- }))
17
- ), a = f();
18
- return y(a, {
19
- handle: ".column-value__reorder-icon",
20
- onChange(e) {
21
- d("update:modelValue", e.map((o) => s.value[o]));
22
- }
23
- }), (e, o) => (t(), r("div", R, [
24
- o[0] || (o[0] = l("div", { class: "aes-settings-hint" }, " Drag the rows to reorder ", -1)),
25
- l("div", {
26
- ref_key: "optionsListRef",
27
- ref: a,
28
- class: "column-values-list"
29
- }, [
30
- (t(!0), r(g, null, h(m.value, (n) => (t(), r("div", {
31
- key: n.value,
32
- class: "column-value column-value__with-reorder"
33
- }, [
34
- l("div", b, [
35
- (t(), k(V(L)))
36
- ]),
37
- l("div", B, x(n.text), 1)
38
- ]))), 128))
39
- ], 512)
40
- ]));
41
- }
42
- });
1
+ import o from "./ReorderForm.vue2.js";
2
+ import s from "./ReorderForm.vue3.js";
3
+ import r from "../_virtual/_plugin-vue_export-helper.js";
4
+ const t = {
5
+ $style: s
6
+ }, f = /* @__PURE__ */ r(o, [["__cssModules", t]]);
43
7
  export {
44
- w as default
8
+ f as default
45
9
  };
46
10
  //# sourceMappingURL=ReorderForm.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReorderForm.vue.js","sources":["../../src/components/ReorderForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useSortable } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport Reorder from '../icons/Reorder.vue';\n\nconst model = defineModel<{ value: string; label: string }[]>({ required: true });\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst optionsList = computed(() => model.value.map((v) => ({\n text: v.label,\n value: v.value,\n})),\n);\n\nconst optionsListRef = ref();\nuseSortable(optionsListRef, {\n handle: '.column-value__reorder-icon',\n onChange(indices) {\n emit('update:modelValue', indices.map((idx) => model.value[idx]));\n },\n});\n\n</script>\n\n<template>\n <div class=\"aes-mapping-block\">\n <div class=\"aes-settings-hint\">\n Drag the rows to reorder\n </div>\n <div ref=\"optionsListRef\" class=\"column-values-list\">\n <div v-for=\"item of optionsList\" :key=\"item.value\" class=\"column-value column-value__with-reorder\">\n <div class=\"column-value__reorder-icon\">\n <component :is=\"Reorder\" />\n </div>\n <div class=\"column-value__title\">{{ item.text }}</div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["model","_useModel","__props","emit","__emit","optionsList","computed","v","optionsListRef","ref","useSortable","indices","idx","_openBlock","_createElementBlock","_hoisted_1","_cache","_createElementVNode","_Fragment","_renderList","item","_hoisted_2","_createBlock","_resolveDynamicComponent","Reorder","_hoisted_3","_toDisplayString"],"mappings":";;;;;;;;;;;AAKA,UAAMA,IAAQC,EAA+CC,GAAA,YAAmB,GAE1EC,IAAOC,GAEPC,IAAcC;AAAA,MAAS,MAAMN,EAAM,MAAM,IAAI,CAACO,OAAO;AAAA,QACzD,MAAMA,EAAE;AAAA,QACR,OAAOA,EAAE;AAAA,MAAA,EACT;AAAA,IAAA,GAGIC,IAAiBC,EAAA;AACvB,WAAAC,EAAYF,GAAgB;AAAA,MAC1B,QAAQ;AAAA,MACR,SAASG,GAAS;AAChB,QAAAR,EAAK,qBAAqBQ,EAAQ,IAAI,CAACC,MAAQZ,EAAM,MAAMY,CAAG,CAAC,CAAC;AAAA,MAClE;AAAA,IAAA,CACD,cAKCC,EAAA,GAAAC,EAYM,OAZNC,GAYM;AAAA,MAXJC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAC,EAEM,OAAA,EAFD,OAAM,oBAAA,GAAoB,8BAE/B,EAAA;AAAA,MACAA,EAOM,OAAA;AAAA,iBAPG;AAAA,QAAJ,KAAIT;AAAA,QAAiB,OAAM;AAAA,MAAA;gBAC9BM,EAKMI,GAAA,MAAAC,EALcd,EAAA,OAAW,CAAnBe,YAAZN,EAKM,OAAA;AAAA,UAL4B,KAAKM,EAAK;AAAA,UAAO,OAAM;AAAA,QAAA;UACvDH,EAEM,OAFNI,GAEM;AAAA,aADJR,KAAAS,EAA2BC,EAAXC,CAAO,CAAA;AAAA,UAAA;UAEzBP,EAAsD,OAAtDQ,GAAsDC,EAAlBN,EAAK,IAAI,GAAA,CAAA;AAAA,QAAA;;;;;"}
1
+ {"version":3,"file":"ReorderForm.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}