@milaboratories/graph-maker 1.1.150 → 1.1.152

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.d.ts.map +1 -1
  2. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.js +2 -1
  3. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.js.map +1 -1
  4. package/dist/GraphMaker/components/Chart.vue.js +3 -3
  5. package/dist/GraphMaker/components/Chart.vue.js.map +1 -1
  6. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts +3 -12
  7. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts.map +1 -1
  8. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js +42 -85
  9. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js.map +1 -1
  10. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.d.ts +1 -9
  11. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.d.ts.map +1 -1
  12. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js +44 -89
  13. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js.map +1 -1
  14. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.d.ts +1 -3
  15. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.d.ts.map +1 -1
  16. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js +68 -86
  17. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js.map +1 -1
  18. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts +7 -11
  19. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts.map +1 -1
  20. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js +48 -91
  21. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js.map +1 -1
  22. package/dist/GraphMaker/components/DragAndDrop/types.d.ts +1 -21
  23. package/dist/GraphMaker/components/DragAndDrop/types.d.ts.map +1 -1
  24. package/dist/GraphMaker/components/PlColorSliderThumb.vue.js +18 -18
  25. package/dist/GraphMaker/components/PlColorSliderThumb.vue.js.map +1 -1
  26. package/dist/GraphMaker/constantsCommon.d.ts +0 -1
  27. package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
  28. package/dist/GraphMaker/constantsCommon.js +95 -95
  29. package/dist/GraphMaker/constantsCommon.js.map +1 -1
  30. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.d.ts.map +1 -1
  31. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js +128 -166
  32. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js.map +1 -1
  33. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.d.ts.map +1 -1
  34. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js +93 -131
  35. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js.map +1 -1
  36. package/dist/GraphMaker/forms/DataMappingForm/utils.d.ts +1 -1
  37. package/dist/GraphMaker/forms/DataMappingForm/utils.d.ts.map +1 -1
  38. package/dist/GraphMaker/forms/DataMappingForm/utils.js +79 -155
  39. package/dist/GraphMaker/forms/DataMappingForm/utils.js.map +1 -1
  40. package/dist/GraphMaker/forms/index.js +2 -2
  41. package/dist/GraphMaker/forms/index.js.map +1 -1
  42. package/dist/GraphMaker/icons/StackedAreaIcon.vue.d.ts +3 -0
  43. package/dist/GraphMaker/icons/StackedAreaIcon.vue.d.ts.map +1 -0
  44. package/dist/GraphMaker/icons/StackedAreaIcon.vue.js +19 -0
  45. package/dist/GraphMaker/icons/StackedAreaIcon.vue.js.map +1 -0
  46. package/dist/GraphMaker/index.vue.js +1 -1
  47. package/dist/GraphMaker/store.d.ts.map +1 -1
  48. package/dist/GraphMaker/store.js +43 -45
  49. package/dist/GraphMaker/store.js.map +1 -1
  50. package/dist/GraphMaker/types.d.ts +1 -1
  51. package/dist/GraphMaker/types.d.ts.map +1 -1
  52. package/dist/GraphMaker/utils/addFixedOptionsToState.js +2 -2
  53. package/dist/GraphMaker/utils/addFixedOptionsToState.js.map +1 -1
  54. package/dist/GraphMaker/utils/createChartSettingsForRender/composeChartSettings.js +25 -25
  55. package/dist/GraphMaker/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
  56. package/dist/GraphMaker/utils/loadDefaultSources.d.ts +2 -3
  57. package/dist/GraphMaker/utils/loadDefaultSources.d.ts.map +1 -1
  58. package/dist/GraphMaker/utils/loadDefaultSources.js +47 -51
  59. package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
  60. package/dist/GraphMaker/utils/loadUniqueValuesToSave.d.ts.map +1 -1
  61. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js +39 -41
  62. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js.map +1 -1
  63. package/dist/lib.js +1 -1
  64. package/dist/node_modules/@milaboratories/helpers/dist/objects.js +33 -0
  65. package/dist/node_modules/@milaboratories/helpers/dist/objects.js.map +1 -0
  66. package/dist/node_modules/@milaboratories/helpers/dist/utils.js +12 -0
  67. package/dist/node_modules/@milaboratories/helpers/dist/utils.js.map +1 -0
  68. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js +6 -5
  69. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js.map +1 -1
  70. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +146 -149
  71. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -1
  72. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +168 -221
  73. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -1
  74. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +95 -102
  75. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -1
  76. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +145 -156
  77. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js.map +1 -1
  78. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js +68 -75
  79. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js.map +1 -1
  80. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +154 -159
  81. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -1
  82. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js +48 -55
  83. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js.map +1 -1
  84. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +114 -122
  85. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -1
  86. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +111 -119
  87. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -1
  88. package/dist/node_modules/@milaboratories/pf-plots/dist/index.js +4 -4
  89. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +70 -69
  90. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -1
  91. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js +2 -2
  92. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js.map +1 -1
  93. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +184 -183
  94. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -1
  95. package/dist/node_modules/@vueuse/shared/index.js.map +1 -1
  96. package/package.json +4 -4
  97. package/dist/node_modules/@milaboratories/helpers/dist/index.js +0 -372
  98. package/dist/node_modules/@milaboratories/helpers/dist/index.js.map +0 -1
@@ -1,124 +1,79 @@
1
- import { defineComponent as M, mergeModels as V, useModel as b, reactive as A, watch as f, ref as C, createElementBlock as m, openBlock as d, createElementVNode as a, createCommentVNode as _, normalizeClass as w, createVNode as x, unref as s, toDisplayString as I, Fragment as B, renderList as U, createBlock as F } from "vue";
2
- import $ from "../../assets/drag-and-drop/img/chip-close.svg.js";
3
- import { PlIcon16 as P, PlNumberField as T, PlDropdown as D, PlAutocomplete as E } from "@platforma-sdk/ui-vue";
4
- import { useStore as N } from "../../store.js";
5
- const L = {
1
+ import { defineComponent as _, mergeModels as c, useModel as f, reactive as h, watch as b, createElementBlock as v, openBlock as g, createElementVNode as e, normalizeClass as M, createVNode as s, unref as n, toDisplayString as V } from "vue";
2
+ import C from "../../assets/drag-and-drop/img/chip-close.svg.js";
3
+ import { PlIcon16 as O, PlNumberField as m } from "@platforma-sdk/ui-vue";
4
+ import { useStore as k } from "../../store.js";
5
+ const B = {
6
6
  ref: "chipRoot",
7
7
  class: "dnd-double-chip__group"
8
- }, S = { class: "dnd-double-chip__top" }, q = { class: "dnd-double-chip__icon" }, H = ["title"], R = { class: "dnd-double-chip__title" }, j = ["innerHTML"], z = { class: "dnd-double-chip__bottom-range" }, G = { class: "dnd-double-chip__bottom-range-row" }, J = { class: "dnd-double-chip__bottom-range-row" }, K = {
9
- key: 0,
10
- class: "dnd-basket-chip__fixed-axes-block"
11
- }, Z = /* @__PURE__ */ M({
8
+ }, w = { class: "dnd-double-chip__top" }, E = { class: "dnd-double-chip__icon" }, I = ["title"], y = { class: "dnd-double-chip__title" }, D = ["innerHTML"], N = { class: "dnd-double-chip__bottom-range" }, x = { class: "dnd-double-chip__bottom-range-row" }, H = { class: "dnd-double-chip__bottom-range-row" }, U = /* @__PURE__ */ _({
12
9
  __name: "DnDRangeChip",
13
- props: /* @__PURE__ */ V({
10
+ props: /* @__PURE__ */ c({
14
11
  info: {},
15
- error: { type: Boolean },
16
- searchModel: { type: Function },
17
- searchOptions: { type: Function },
18
- loadOptions: { type: Function }
12
+ error: { type: Boolean }
19
13
  }, {
20
14
  filter: { required: !0 },
21
- filterModifiers: {},
22
- fixedAxes: { required: !0 },
23
- fixedAxesModifiers: {}
15
+ filterModifiers: {}
24
16
  }),
25
- emits: /* @__PURE__ */ V(["close-chip", "update:fixedAxes"], ["update:filter", "update:fixedAxes"]),
26
- setup(p, { emit: y }) {
27
- var v, h;
28
- const n = p, O = N(), g = y, c = b(p, "filter"), i = b(p, "fixedAxes"), u = A({
29
- min: (v = c.value) == null ? void 0 : v[0],
30
- max: (h = c.value) == null ? void 0 : h[1]
17
+ emits: /* @__PURE__ */ c(["close-chip"], ["update:filter"]),
18
+ setup(r, { emit: L }) {
19
+ var a, u;
20
+ const p = r;
21
+ k();
22
+ const d = f(r, "filter"), l = h({
23
+ min: (a = d.value) == null ? void 0 : a[0],
24
+ max: (u = d.value) == null ? void 0 : u[1]
31
25
  });
32
- f(
33
- () => u,
26
+ return b(
27
+ () => l,
34
28
  (o) => {
35
- c.value = o;
29
+ d.value = o;
36
30
  },
37
31
  { deep: !0 }
38
- );
39
- const r = C(n.info.axesToBeFixed.reduce((o, l) => (o[l] = void 0, o), {}));
40
- return f(() => O.value.inputGuide.value, async (o) => {
41
- if (!Object.values(r.value).every((l) => l !== void 0) && n.info.axesToBeFixed.every((l) => o.axesToBeFixedSet.has(l))) {
42
- const l = await Promise.all(n.info.axesToBeFixed.map((e) => n.loadOptions(e)));
43
- r.value = n.info.axesToBeFixed.reduce((e, t, k) => (e[t] = l[k], e), {});
44
- }
45
- }, { immediate: !0 }), f(() => r.value, async (o) => {
46
- for (let l = 0; l < n.info.axesToBeFixed.length; l++) {
47
- const e = n.info.axesToBeFixed[l];
48
- if (i.value[e].axisValue !== void 0 || o[e] === void 0)
49
- continue;
50
- let t = o[e];
51
- o[e] === null && (t = await n.searchOptions(e, "")), t != null && t.length && (i.value[e].axisValue = t[0].value), g("update:fixedAxes", i.value);
52
- }
53
- }, { immediate: !0 }), (o, l) => (d(), m("div", L, [
54
- a("div", {
55
- class: w([{ error: o.error }, "dnd-double-chip"])
32
+ ), (o, t) => (g(), v("div", B, [
33
+ e("div", {
34
+ class: M([{ error: o.error }, "dnd-double-chip"])
56
35
  }, [
57
- a("div", S, [
58
- a("div", q, [
59
- x(s(P), { name: "cell-type-num" })
36
+ e("div", w, [
37
+ e("div", E, [
38
+ s(n(O), { name: "cell-type-num" })
60
39
  ]),
61
- a("div", {
40
+ e("div", {
62
41
  class: "dnd-double-chip__title-wrapper",
63
42
  title: o.info.title
64
43
  }, [
65
- a("div", R, I(o.info.title), 1)
66
- ], 8, H),
67
- a("div", {
68
- innerHTML: s($),
44
+ e("div", y, V(o.info.title), 1)
45
+ ], 8, I),
46
+ e("div", {
47
+ innerHTML: n(C),
69
48
  class: "dnd-double-chip__icon-close",
70
- onClick: l[0] || (l[0] = (e) => o.$emit("close-chip", n.info.id))
71
- }, null, 8, j)
49
+ onClick: t[0] || (t[0] = (i) => o.$emit("close-chip", p.info.id))
50
+ }, null, 8, D)
72
51
  ]),
73
- a("div", z, [
74
- a("div", G, [
75
- x(s(T), {
52
+ e("div", N, [
53
+ e("div", x, [
54
+ s(n(m), {
76
55
  label: "Min",
77
- modelValue: u.min,
78
- "onUpdate:modelValue": l[1] || (l[1] = (e) => u.min = e),
56
+ modelValue: l.min,
57
+ "onUpdate:modelValue": t[1] || (t[1] = (i) => l.min = i),
79
58
  updateOnEnterOrClickOutside: !0,
80
59
  useIncrementButtons: !1
81
60
  }, null, 8, ["modelValue"])
82
61
  ]),
83
- a("div", J, [
84
- x(s(T), {
62
+ e("div", H, [
63
+ s(n(m), {
85
64
  label: "Max",
86
- modelValue: u.max,
87
- "onUpdate:modelValue": l[2] || (l[2] = (e) => u.max = e),
65
+ modelValue: l.max,
66
+ "onUpdate:modelValue": t[2] || (t[2] = (i) => l.max = i),
88
67
  updateOnEnterOrClickOutside: !0,
89
68
  useIncrementButtons: !1
90
69
  }, null, 8, ["modelValue"])
91
70
  ])
92
71
  ])
93
- ], 2),
94
- o.info.axesToBeFixed.length > 0 ? (d(), m("div", K, [
95
- (d(!0), m(B, null, U(o.info.axesToBeFixed, (e) => (d(), m(B, { key: e }, [
96
- i.value[e] && r.value[e] !== null ? (d(), F(s(D), {
97
- key: 0,
98
- modelValue: i.value[e].axisValue,
99
- "onUpdate:modelValue": [
100
- (t) => i.value[e].axisValue = t,
101
- l[3] || (l[3] = (t) => o.$emit("update:fixedAxes", i.value))
102
- ],
103
- options: r.value[e],
104
- label: o.info.axesToBeFixedInfo[e].title
105
- }, null, 8, ["modelValue", "onUpdate:modelValue", "options", "label"])) : i.value[e] ? (d(), F(s(E), {
106
- key: 1,
107
- modelValue: i.value[e].axisValue,
108
- "onUpdate:modelValue": [
109
- (t) => i.value[e].axisValue = t,
110
- l[4] || (l[4] = (t) => o.$emit("update:fixedAxes", i.value))
111
- ],
112
- "options-search": (t) => o.searchOptions(e, t),
113
- "model-search": (t) => o.searchModel(e, t),
114
- label: o.info.axesToBeFixedInfo[e].title
115
- }, null, 8, ["modelValue", "onUpdate:modelValue", "options-search", "model-search", "label"])) : _("", !0)
116
- ], 64))), 128))
117
- ])) : _("", !0)
72
+ ], 2)
118
73
  ], 512));
119
74
  }
120
75
  });
121
76
  export {
122
- Z as default
77
+ U as default
123
78
  };
124
79
  //# sourceMappingURL=DnDRangeChip.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DnDRangeChip.vue.js","sources":["../../../../src/GraphMaker/components/DragAndDrop/DnDRangeChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ChipInfo, FixedAxisData } from './types.ts';\nimport CloseIcon from '../../assets/drag-and-drop/img/chip-close.svg?raw';\nimport { reactive, watch, ref } from 'vue';\nimport { PlAutocomplete, PlDropdown, PlIcon16, ListOption, PlNumberField } from '@platforma-sdk/ui-vue';\nimport { useStore } from '../../store';\n\nconst props = defineProps<{\n info: ChipInfo;\n error: boolean;\n searchModel: (sourceId:string, selectedValue:string) => Promise<ListOption<string>>;\n searchOptions: (sourceId:string, searchStr:string) => Promise<ListOption<string>[]>;\n loadOptions: (sourceId:string) => Promise<ListOption<string>[] | null>;\n}>();\n\nconst store = useStore();\n\nconst emit = defineEmits<{\n (e: 'close-chip', id: ChipInfo['id']): void;\n (e: 'update:fixedAxes', id: Record<string, FixedAxisData>): void;\n}>();\n\nconst filterModel = defineModel('filter', { required: true });\nconst fixedAxesModel = defineModel<Record<string, FixedAxisData>>('fixedAxes', {required: true});\n\nconst range = reactive({\n min: (filterModel.value as number[])?.[0] as number | undefined,\n max: (filterModel.value as number[])?.[1] as number | undefined\n});\n\nwatch(() => range, (rangeValue) => {\n filterModel.value = rangeValue;\n }, { deep: true }\n);\n\nconst preloadedOptionsForAxesToBeFixed = ref<Record<string, ListOption[] | null | undefined>>(props.info.axesToBeFixed.reduce((res, v) => {\n res[v] = undefined;\n return res;\n}, {} as Record<string, ListOption[] | null | undefined>));\n\nwatch(() => store.value.inputGuide.value, async (ig) => {\n if (Object.values(preloadedOptionsForAxesToBeFixed.value).every(v => v !== undefined)) {\n return;\n }\n if (props.info.axesToBeFixed.every((axisId) => ig.axesToBeFixedSet.has(axisId))) {\n const axesToBeFixedOptions = await Promise.all(props.info.axesToBeFixed.map((id) => props.loadOptions(id)));\n preloadedOptionsForAxesToBeFixed.value = props.info.axesToBeFixed.reduce((res, v, idx) => {\n res[v] = axesToBeFixedOptions[idx];\n return res;\n }, {} as Record<string, ListOption[] | null | undefined>)\n }\n}, {immediate: true});\n\nwatch(() => preloadedOptionsForAxesToBeFixed.value, async (opts) => {\n for (let i = 0; i < props.info.axesToBeFixed.length; i++) {\n const axisId = props.info.axesToBeFixed[i];\n if (fixedAxesModel.value[axisId].axisValue !== undefined || opts[axisId] === undefined) {\n continue;\n }\n let availableOptions = opts[axisId];\n if (opts[axisId] === null) {\n availableOptions = await props.searchOptions(axisId, '');\n }\n if (availableOptions?.length) {\n fixedAxesModel.value[axisId].axisValue = availableOptions[0].value as string;\n }\n emit('update:fixedAxes', fixedAxesModel.value);\n }\n}, {immediate: true});\n</script>\n\n<template>\n <div ref=\"chipRoot\" class=\"dnd-double-chip__group\">\n <div :class=\"{ error }\" class=\"dnd-double-chip\">\n <div class=\"dnd-double-chip__top\">\n <div class=\"dnd-double-chip__icon\">\n <PlIcon16 name=\"cell-type-num\" />\n </div>\n <div class=\"dnd-double-chip__title-wrapper\" :title=\"info.title\">\n <div class=\"dnd-double-chip__title\">\n {{ info.title }}\n </div>\n </div>\n <div\n v-html=\"CloseIcon\"\n class=\"dnd-double-chip__icon-close\"\n @click=\"$emit('close-chip', props.info.id)\"\n />\n </div>\n <div class=\"dnd-double-chip__bottom-range\">\n <div class=\"dnd-double-chip__bottom-range-row\">\n <PlNumberField\n label=\"Min\"\n v-model=\"range.min\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n />\n </div>\n <div class=\"dnd-double-chip__bottom-range-row\">\n <PlNumberField\n label=\"Max\"\n v-model=\"range.max\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n />\n </div>\n </div>\n </div>\n <div class=\"dnd-basket-chip__fixed-axes-block\" v-if=\"info.axesToBeFixed.length > 0\">\n <template v-for=\"id in info.axesToBeFixed\" :key=\"id\">\n <PlDropdown\n v-if=\"fixedAxesModel[id] && preloadedOptionsForAxesToBeFixed[id] !== null\"\n v-model=\"fixedAxesModel[id].axisValue\"\n @update:model-value=\"$emit('update:fixedAxes', fixedAxesModel)\"\n :options=\"preloadedOptionsForAxesToBeFixed[id]\"\n :label=\"info.axesToBeFixedInfo[id].title\"\n />\n <PlAutocomplete\n v-else-if=\"fixedAxesModel[id]\"\n v-model=\"fixedAxesModel[id].axisValue\"\n @update:model-value=\"$emit('update:fixedAxes', fixedAxesModel)\"\n :options-search=\"(str) => searchOptions(id, str)\"\n :model-search=\"(v) => searchModel(id, v as string)\"\n :label=\"info.axesToBeFixedInfo[id].title\"\n />\n </template>\n </div>\n </div>\n</template>\n"],"names":["props","__props","store","useStore","emit","__emit","filterModel","_useModel","fixedAxesModel","range","reactive","_a","_b","watch","rangeValue","preloadedOptionsForAxesToBeFixed","ref","res","v","ig","axisId","axesToBeFixedOptions","id","idx","opts","i","availableOptions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAQRC,IAAQC,EAAA,GAERC,IAAOC,GAKPC,IAAcC,EAAWN,GAAC,QAA4B,GACtDO,IAAiBD,EAA0CN,GAAC,WAA6B,GAEzFQ,IAAQC,EAAS;AAAA,MACrB,MAAMC,IAAAL,EAAY,UAAZ,gBAAAK,EAAiC;AAAA,MACvC,MAAMC,IAAAN,EAAY,UAAZ,gBAAAM,EAAiC;AAAA,IAAC,CACzC;AAED,IAAAC;AAAA,MAAM,MAAMJ;AAAA,MAAO,CAACK,MAAe;AAC/B,QAAAR,EAAY,QAAQQ;AAAA,MACtB;AAAA,MAAG,EAAE,MAAM,GAAA;AAAA,IAAK;AAGlB,UAAMC,IAAmCC,EAAqDhB,EAAM,KAAK,cAAc,OAAO,CAACiB,GAAKC,OAClID,EAAIC,CAAC,IAAI,QACFD,IACN,CAAA,CAAqD,CAAC;AAEzD,WAAAJ,EAAM,MAAMX,EAAM,MAAM,WAAW,OAAO,OAAOiB,MAAO;AACtD,UAAI,QAAO,OAAOJ,EAAiC,KAAK,EAAE,MAAM,CAAAG,MAAKA,MAAM,MAAS,KAGhFlB,EAAM,KAAK,cAAc,MAAM,CAACoB,MAAWD,EAAG,iBAAiB,IAAIC,CAAM,CAAC,GAAG;AAC/E,cAAMC,IAAuB,MAAM,QAAQ,IAAIrB,EAAM,KAAK,cAAc,IAAI,CAACsB,MAAOtB,EAAM,YAAYsB,CAAE,CAAC,CAAC;AAC1G,QAAAP,EAAiC,QAAQf,EAAM,KAAK,cAAc,OAAO,CAACiB,GAAKC,GAAGK,OAChFN,EAAIC,CAAC,IAAIG,EAAqBE,CAAG,GAC1BN,IACN,CAAA,CAAqD;AAAA,MAC1D;AAAA,IACF,GAAG,EAAC,WAAW,IAAK,GAEpBJ,EAAM,MAAME,EAAiC,OAAO,OAAOS,MAAS;AAClE,eAASC,IAAI,GAAGA,IAAIzB,EAAM,KAAK,cAAc,QAAQyB,KAAK;AACxD,cAAML,IAASpB,EAAM,KAAK,cAAcyB,CAAC;AACzC,YAAIjB,EAAe,MAAMY,CAAM,EAAE,cAAc,UAAaI,EAAKJ,CAAM,MAAM;AAC3E;AAEF,YAAIM,IAAmBF,EAAKJ,CAAM;AAClC,QAAII,EAAKJ,CAAM,MAAM,SACnBM,IAAmB,MAAM1B,EAAM,cAAcoB,GAAQ,EAAE,IAErDM,KAAA,QAAAA,EAAkB,WACpBlB,EAAe,MAAMY,CAAM,EAAE,YAAYM,EAAiB,CAAC,EAAE,QAE/DtB,EAAK,oBAAoBI,EAAe,KAAK;AAAA,MAC/C;AAAA,IACF,GAAG,EAAC,WAAW,IAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DnDRangeChip.vue.js","sources":["../../../../src/GraphMaker/components/DragAndDrop/DnDRangeChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ChipInfo } from './types.ts';\nimport CloseIcon from '../../assets/drag-and-drop/img/chip-close.svg?raw';\nimport { reactive, watch, ref } from 'vue';\nimport { PlIcon16, ListOption, PlNumberField } from '@platforma-sdk/ui-vue';\nimport { useStore } from '../../store';\n\nconst props = defineProps<{\n info: ChipInfo;\n error: boolean;\n}>();\n\nconst store = useStore();\n\nconst emit = defineEmits<{\n (e: 'close-chip', id: ChipInfo['id']): void;\n}>();\n\nconst filterModel = defineModel('filter', { required: true });\n\nconst range = reactive({\n min: (filterModel.value as number[])?.[0] as number | undefined,\n max: (filterModel.value as number[])?.[1] as number | undefined\n});\n\nwatch(() => range, (rangeValue) => {\n filterModel.value = rangeValue;\n }, { deep: true }\n);\n\n</script>\n\n<template>\n <div ref=\"chipRoot\" class=\"dnd-double-chip__group\">\n <div :class=\"{ error }\" class=\"dnd-double-chip\">\n <div class=\"dnd-double-chip__top\">\n <div class=\"dnd-double-chip__icon\">\n <PlIcon16 name=\"cell-type-num\" />\n </div>\n <div class=\"dnd-double-chip__title-wrapper\" :title=\"info.title\">\n <div class=\"dnd-double-chip__title\">\n {{ info.title }}\n </div>\n </div>\n <div\n v-html=\"CloseIcon\"\n class=\"dnd-double-chip__icon-close\"\n @click=\"$emit('close-chip', props.info.id)\"\n />\n </div>\n <div class=\"dnd-double-chip__bottom-range\">\n <div class=\"dnd-double-chip__bottom-range-row\">\n <PlNumberField\n label=\"Min\"\n v-model=\"range.min\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n />\n </div>\n <div class=\"dnd-double-chip__bottom-range-row\">\n <PlNumberField\n label=\"Max\"\n v-model=\"range.max\"\n :updateOnEnterOrClickOutside=\"true\"\n :useIncrementButtons=\"false\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","useStore","filterModel","_useModel","range","reactive","_a","_b","watch","rangeValue"],"mappings":";;;;;;;;;;;;;;;;;;;AAOA,UAAMA,IAAQC;AAKA,IAAAC,EAAA;AAMd,UAAMC,IAAcC,EAAWH,GAAC,QAA4B,GAEtDI,IAAQC,EAAS;AAAA,MACrB,MAAMC,IAAAJ,EAAY,UAAZ,gBAAAI,EAAiC;AAAA,MACvC,MAAMC,IAAAL,EAAY,UAAZ,gBAAAK,EAAiC;AAAA,IAAC,CACzC;AAED,WAAAC;AAAA,MAAM,MAAMJ;AAAA,MAAO,CAACK,MAAe;AAC/B,QAAAP,EAAY,QAAQO;AAAA,MACtB;AAAA,MAAG,EAAE,MAAM,GAAA;AAAA,IAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,18 +1,16 @@
1
- import { DndBasketProps, SelectFilterValueEvent, SelectFixedAxisValueEvent } from './types';
1
+ import { DndBasketProps, SelectFilterValueEvent } from './types';
2
2
  type __VLS_Props = DndBasketProps;
3
3
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
4
4
  "drop-item": (data: import('./types').DropItemEvent<any>) => any;
5
5
  "remove-item": (data: import('./types').RemoveItemEvent<any>) => any;
6
6
  "select-filter-value": (data: SelectFilterValueEvent) => any;
7
7
  "select-filter-range": (data: SelectFilterValueEvent) => any;
8
- "select-fixed-axis-value": (data: SelectFixedAxisValueEvent) => any;
9
8
  reorder: (data: string[]) => any;
10
9
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
11
10
  "onDrop-item"?: ((data: import('./types').DropItemEvent<any>) => any) | undefined;
12
11
  "onRemove-item"?: ((data: import('./types').RemoveItemEvent<any>) => any) | undefined;
13
12
  "onSelect-filter-value"?: ((data: SelectFilterValueEvent) => any) | undefined;
14
13
  "onSelect-filter-range"?: ((data: SelectFilterValueEvent) => any) | undefined;
15
- "onSelect-fixed-axis-value"?: ((data: SelectFixedAxisValueEvent) => any) | undefined;
16
14
  onReorder?: ((data: string[]) => any) | undefined;
17
15
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
18
16
  basketRoot: HTMLDivElement;
@@ -1 +1 @@
1
- {"version":3,"file":"DndBasket.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndBasket.vue"],"names":[],"mappings":"AA6MA,OAAO,EAEL,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAEjB,KAAK,WAAW,GAAG,cAAc,CAAC;;;;;;;;;;;;;;;;;;;AAkVlC,wBASG"}
1
+ {"version":3,"file":"DndBasket.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndBasket.vue"],"names":[],"mappings":"AA0LA,OAAO,EAEL,cAAc,EACd,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,KAAK,WAAW,GAAG,cAAc,CAAC;;;;;;;;;;;;;;;;;AA8SlC,wBASG"}
@@ -1,15 +1,15 @@
1
- import { defineComponent as x, ref as y, reactive as p, computed as B, watch as b, createElementBlock as i, openBlock as l, normalizeClass as E, createElementVNode as u, createCommentVNode as D, createTextVNode as M, toDisplayString as N, Fragment as A, renderList as z, createBlock as k, unref as r } from "vue";
2
- import { useSortable as P } from "@platforma-sdk/ui-vue";
3
- import H from "./DnDBasketChip.vue.js";
4
- import K from "./DndDoubleChip.vue.js";
5
- import T from "./DnDRangeChip.vue.js";
6
- const Z = { class: "dnd-basket__title" }, _ = {
1
+ import { defineComponent as q, ref as m, reactive as c, computed as h, watch as C, createElementBlock as a, openBlock as s, normalizeClass as E, createElementVNode as d, createCommentVNode as L, createTextVNode as M, toDisplayString as N, Fragment as B, renderList as P, createBlock as v, unref as f } from "vue";
2
+ import { useSortable as z } from "@platforma-sdk/ui-vue";
3
+ import A from "./DnDBasketChip.vue.js";
4
+ import H from "./DndDoubleChip.vue.js";
5
+ import K from "./DnDRangeChip.vue.js";
6
+ const T = { class: "dnd-basket__title" }, Z = {
7
7
  key: 0,
8
8
  class: "dnd-basket__required"
9
9
  }, j = { class: "dnd-basket__drop-container" }, G = {
10
10
  key: 0,
11
11
  class: "dnd-basket__placeholder"
12
- }, I = /* @__PURE__ */ x({
12
+ }, Y = /* @__PURE__ */ q({
13
13
  __name: "DndBasket",
14
14
  props: {
15
15
  id: {},
@@ -21,10 +21,8 @@ const Z = { class: "dnd-basket__title" }, _ = {
21
21
  readonly: { type: Boolean },
22
22
  consistency: {},
23
23
  droppedIds: {},
24
- availableIds: {},
25
24
  selectedFilters: {},
26
25
  selectedRanges: {},
27
- fixedAxes: {},
28
26
  info: {},
29
27
  draggedId: {},
30
28
  sortable: { type: Boolean },
@@ -32,129 +30,113 @@ const Z = { class: "dnd-basket__title" }, _ = {
32
30
  searchSelectedValueFn: { type: Function },
33
31
  loadOptionsFn: { type: Function }
34
32
  },
35
- emits: ["drop-item", "remove-item", "select-filter-value", "select-filter-range", "select-fixed-axis-value", "reorder"],
36
- setup(V, { emit: U }) {
37
- const s = V, F = U, d = y(), C = y(), L = y(0);
38
- let m = p(s.selectedFilters ?? {}), h = p(s.selectedRanges ?? {}), n = p(s.fixedAxes ?? {});
39
- const v = B(() => !(s.disabled || !s.multiple && s.droppedIds.length > 0)), w = B(() => s.disabled ? "1 true" : !v.value && s.draggedId ? "2 true" : !1);
40
- b(
41
- () => s.selectedFilters,
33
+ emits: ["drop-item", "remove-item", "select-filter-value", "select-filter-range", "reorder"],
34
+ setup(D, { emit: $ }) {
35
+ const t = D, g = $, i = m(), y = m(), b = m(0);
36
+ let p = c(t.selectedFilters ?? {}), k = c(t.selectedRanges ?? {});
37
+ const u = h(() => !(t.disabled || !t.multiple && t.droppedIds.length > 0)), w = h(() => t.disabled ? "1 true" : !u.value && t.draggedId ? "2 true" : !1);
38
+ C(
39
+ () => t.selectedFilters,
42
40
  () => {
43
- m = p(s.selectedFilters ?? {});
41
+ p = c(t.selectedFilters ?? {});
44
42
  }
45
- ), b(
46
- () => s.fixedAxes,
43
+ ), C(
44
+ () => t.droppedIds,
47
45
  () => {
48
- n = p(s.fixedAxes ?? {});
49
- }
50
- ), b(
51
- () => s.droppedIds,
52
- () => {
53
- L.value++;
46
+ b.value++;
54
47
  },
55
48
  { deep: !0 }
56
- ), s.sortable && P(C, {
49
+ ), t.sortable && z(y, {
57
50
  handle: ".dnd-basket-chip__handler",
58
51
  onChange(e) {
59
- F(
52
+ g(
60
53
  "reorder",
61
- e.map((a) => s.droppedIds[a])
54
+ e.map((n) => t.droppedIds[n])
62
55
  );
63
56
  }
64
57
  });
65
- function O() {
66
- d.value && !s.disabled && v.value && d.value.classList.add("active");
58
+ function R() {
59
+ i.value && !t.disabled && u.value && i.value.classList.add("active");
67
60
  }
68
- function $() {
69
- d.value && d.value.classList.remove("active");
61
+ function F() {
62
+ i.value && i.value.classList.remove("active");
70
63
  }
71
- function R(e) {
72
- e.stopPropagation(), v.value && (s.draggedId && F("drop-item", { draggedId: s.draggedId, id: s.id }), $());
64
+ function O(e) {
65
+ e.stopPropagation(), u.value && (t.draggedId && g("drop-item", { draggedId: t.draggedId, id: t.id }), F());
73
66
  }
74
- function S(e) {
67
+ function V(e) {
75
68
  e.preventDefault();
76
69
  }
77
- function q(e) {
78
- e.preventDefault(), O();
70
+ function S(e) {
71
+ e.preventDefault(), R();
79
72
  }
80
- const c = async (e, a) => s.searchFn(e, a), g = async (e, a) => (await s.searchSelectedValueFn(e, a))[0];
81
- return (e, a) => (l(), i("div", {
73
+ const _ = async (e, n) => t.searchFn(e, n), U = async (e, n) => (await Promise.all(n.map((l) => t.searchSelectedValueFn(e, l)))).map((l) => l[0]);
74
+ return (e, n) => (s(), a("div", {
82
75
  ref_key: "basketRoot",
83
- ref: d,
76
+ ref: i,
84
77
  class: E([{
85
78
  disabled: w.value,
86
79
  empty: e.droppedIds.length === 0,
87
80
  readonly: e.readonly
88
81
  }, "dnd-basket"]),
89
82
  dropzone: "true",
90
- onDrop: R,
91
- onDragenter: S,
92
- onDragover: q,
93
- onDragleave: $
83
+ onDrop: O,
84
+ onDragenter: V,
85
+ onDragover: S,
86
+ onDragleave: F
94
87
  }, [
95
- u("div", Z, [
96
- e.required ? (l(), i("span", _, a[0] || (a[0] = [
97
- u("svg", {
88
+ d("div", T, [
89
+ e.required ? (s(), a("span", Z, n[0] || (n[0] = [
90
+ d("svg", {
98
91
  xmlns: "http://www.w3.org/2000/svg",
99
92
  width: "6",
100
93
  height: "16",
101
94
  viewBox: "0 0 6 16",
102
95
  fill: "none"
103
96
  }, [
104
- u("path", {
97
+ d("path", {
105
98
  d: "M2.01685 6.8L3 5.34159L3.97612 6.8L4.89607 6.12743L3.81461 4.7469L5.5 4.25133L5.14888 3.16106L3.50562 3.77699L3.56882 2H2.43118L2.49438 3.77699L0.851124 3.16106L0.5 4.25133L2.18539 4.7469L1.09691 6.12743L2.01685 6.8Z",
106
99
  fill: "#F1222F"
107
100
  })
108
101
  ], -1)
109
- ]))) : D("", !0),
102
+ ]))) : L("", !0),
110
103
  M(" " + N(e.title), 1)
111
104
  ]),
112
- u("div", j, [
113
- e.droppedIds.length ? D("", !0) : (l(), i("div", G, " Drop dimensions here ")),
114
- (l(), i("div", {
105
+ d("div", j, [
106
+ e.droppedIds.length ? L("", !0) : (s(), a("div", G, " Drop dimensions here ")),
107
+ (s(), a("div", {
115
108
  ref_key: "listRef",
116
- ref: C,
117
- key: L.value,
109
+ ref: y,
110
+ key: b.value,
118
111
  class: "dnd-basket__chip-wrapper"
119
112
  }, [
120
- (l(!0), i(A, null, z(e.droppedIds, (t, f) => (l(), i(A, { key: t }, [
121
- !e.isFilter || e.info[t].isSubsetFilter ? (l(), k(H, {
113
+ (s(!0), a(B, null, P(e.droppedIds, (r, l) => (s(), a(B, { key: r }, [
114
+ !e.isFilter || e.info[r].isSubsetFilter ? (s(), v(A, {
122
115
  key: 0,
123
- modelValue: r(n)[t],
124
- "onUpdate:modelValue": [(o) => r(n)[t] = o, (o) => e.$emit("select-fixed-axis-value", { v: o, idx: f })],
125
116
  sortable: e.sortable,
126
- error: e.consistency[t] === !1,
127
- info: e.info[t],
128
- "search-options": c,
129
- "search-model": g,
117
+ error: e.consistency[r] === !1,
118
+ info: e.info[r],
130
119
  "load-options": e.loadOptionsFn,
131
- onCloseChip: (o) => e.$emit("remove-item", { chipId: t, basketId: e.id })
132
- }, null, 8, ["modelValue", "onUpdate:modelValue", "sortable", "error", "info", "load-options", "onCloseChip"])) : e.info[t].isDiscreteFilter ? (l(), k(K, {
120
+ onCloseChip: (o) => e.$emit("remove-item", { chipId: r, basketId: e.id })
121
+ }, null, 8, ["sortable", "error", "info", "load-options", "onCloseChip"])) : e.info[r].isDiscreteFilter ? (s(), v(H, {
133
122
  key: 1,
134
- filter: r(m)[t],
135
- "onUpdate:filter": [(o) => r(m)[t] = o, (o) => e.$emit("select-filter-value", { v: o, idx: f })],
136
- "fixed-axes": r(n)[t],
137
- "onUpdate:fixedAxes": [(o) => r(n)[t] = o, (o) => e.$emit("select-fixed-axis-value", { v: o, idx: f })],
138
- info: e.info[t],
139
- error: e.consistency[t] === !1,
123
+ filter: f(p)[r],
124
+ "onUpdate:filter": [(o) => f(p)[r] = o, (o) => e.$emit("select-filter-value", { v: o, idx: l })],
125
+ info: e.info[r],
126
+ error: e.consistency[r] === !1,
140
127
  sortable: e.sortable,
141
- "search-options": c,
142
- "search-model": g,
128
+ "search-options": _,
129
+ "search-model": U,
143
130
  "load-options": e.loadOptionsFn,
144
- onCloseChip: (o) => e.$emit("remove-item", { chipId: t, basketId: e.id })
145
- }, null, 8, ["filter", "onUpdate:filter", "fixed-axes", "onUpdate:fixedAxes", "info", "error", "sortable", "load-options", "onCloseChip"])) : (l(), k(T, {
131
+ onCloseChip: (o) => e.$emit("remove-item", { chipId: r, basketId: e.id })
132
+ }, null, 8, ["filter", "onUpdate:filter", "info", "error", "sortable", "load-options", "onCloseChip"])) : (s(), v(K, {
146
133
  key: 2,
147
- filter: r(h)[t],
148
- "onUpdate:filter": [(o) => r(h)[t] = o, (o) => e.$emit("select-filter-range", { v: o, idx: f })],
149
- "fixed-axes": r(n)[t],
150
- "onUpdate:fixedAxes": [(o) => r(n)[t] = o, (o) => e.$emit("select-fixed-axis-value", { v: o, idx: f })],
151
- info: e.info[t],
152
- error: e.consistency[t] === !1,
153
- "search-options": c,
154
- "search-model": g,
155
- "load-options": e.loadOptionsFn,
156
- onCloseChip: (o) => e.$emit("remove-item", { chipId: t, basketId: e.id })
157
- }, null, 8, ["filter", "onUpdate:filter", "fixed-axes", "onUpdate:fixedAxes", "info", "error", "load-options", "onCloseChip"]))
134
+ filter: f(k)[r],
135
+ "onUpdate:filter": [(o) => f(k)[r] = o, (o) => e.$emit("select-filter-range", { v: o, idx: l })],
136
+ info: e.info[r],
137
+ error: e.consistency[r] === !1,
138
+ onCloseChip: (o) => e.$emit("remove-item", { chipId: r, basketId: e.id })
139
+ }, null, 8, ["filter", "onUpdate:filter", "info", "error", "onCloseChip"]))
158
140
  ], 64))), 128))
159
141
  ]))
160
142
  ])
@@ -162,6 +144,6 @@ const Z = { class: "dnd-basket__title" }, _ = {
162
144
  }
163
145
  });
164
146
  export {
165
- I as default
147
+ Y as default
166
148
  };
167
149
  //# sourceMappingURL=DndBasket.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DndBasket.vue.js","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndBasket.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useSortable } from '@platforma-sdk/ui-vue';\nimport { computed, reactive, ref, watch } from 'vue';\nimport DndBasketChip from './DnDBasketChip.vue';\nimport DndDoubleChip from './DndDoubleChip.vue';\nimport DnDRangeChip from './DnDRangeChip.vue';\nimport {\n DndBasketEmits,\n DndBasketProps,\n SelectFilterValueEvent,\n SelectFixedAxisValueEvent\n} from './types';\n\nconst props = defineProps<DndBasketProps>();\n\nconst emit = defineEmits<DndBasketEmits>();\n\nconst basketRoot = ref<HTMLElement>();\nconst listRef = ref<HTMLElement>();\nconst listKey = ref(0);\n\nlet selectedFilterValues = reactive(props.selectedFilters ?? {});\nlet selectedFilterRanges = reactive(props.selectedRanges ?? {});\nlet selectedAxesValues = reactive(props.fixedAxes ?? {});\n\nconst canPutOneMore = computed(() => {\n if (props.disabled) {\n return false;\n }\n if (!props.multiple && props.droppedIds.length > 0) {\n return false;\n }\n\n return true;\n});\n\nconst isBasketDisable = computed(() => {\n if (props.disabled) {\n return '1 true';\n }\n if (!canPutOneMore.value && props.draggedId) {\n return '2 true';\n }\n return false;\n});\n\nwatch(\n () => props.selectedFilters,\n () => {\n selectedFilterValues = reactive(props.selectedFilters ?? {});\n }\n);\nwatch(\n () => props.fixedAxes,\n () => {\n selectedAxesValues = reactive(props.fixedAxes ?? {});\n }\n);\nwatch(\n () => props.droppedIds,\n () => {\n listKey.value++;\n },\n { deep: true }\n);\n\nif (props.sortable) {\n useSortable(listRef, {\n handle: '.dnd-basket-chip__handler',\n onChange(indices) {\n emit(\n 'reorder',\n indices.map((i) => props.droppedIds[i])\n );\n }\n });\n}\n\nfunction addActiveClass() {\n if (basketRoot.value && !props.disabled && canPutOneMore.value) {\n basketRoot.value.classList.add('active');\n }\n}\n\nfunction removeActiveClass() {\n if (basketRoot.value) {\n basketRoot.value.classList.remove('active');\n }\n}\n\nfunction handleDrop(event: DragEvent) {\n event.stopPropagation();\n if (canPutOneMore.value) {\n if (props.draggedId) {\n emit('drop-item', { draggedId: props.draggedId, id: props.id });\n }\n removeActiveClass();\n }\n}\n\nfunction dragEnter(event: DragEvent) {\n event.preventDefault();\n}\n\nfunction dragOver(event: DragEvent) {\n event.preventDefault();\n addActiveClass();\n}\nconst filterOptions = async (sourceId: string, searchStr: string) => {\n return props.searchFn(sourceId, searchStr);\n};\nconst searchModel = async (sourceId: string, selectedValue: string) => {\n const result = await props.searchSelectedValueFn(sourceId, selectedValue);\n return result[0];\n}\n</script>\n<template>\n <div\n ref=\"basketRoot\"\n :class=\"{\n disabled: isBasketDisable,\n empty: droppedIds.length === 0,\n readonly\n }\"\n class=\"dnd-basket\"\n dropzone=\"true\"\n @drop=\"handleDrop\"\n @dragenter=\"dragEnter\"\n @dragover=\"dragOver\"\n @dragleave=\"removeActiveClass\"\n >\n <div class=\"dnd-basket__title\">\n <span v-if=\"required\" class=\"dnd-basket__required\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"6\"\n height=\"16\"\n viewBox=\"0 0 6 16\"\n fill=\"none\"\n >\n <path\n d=\"M2.01685 6.8L3 5.34159L3.97612 6.8L4.89607 6.12743L3.81461 4.7469L5.5 4.25133L5.14888 3.16106L3.50562 3.77699L3.56882 2H2.43118L2.49438 3.77699L0.851124 3.16106L0.5 4.25133L2.18539 4.7469L1.09691 6.12743L2.01685 6.8Z\"\n fill=\"#F1222F\"\n />\n </svg>\n </span>\n {{ title }}\n </div>\n <div class=\"dnd-basket__drop-container\">\n <div v-if=\"!droppedIds.length\" class=\"dnd-basket__placeholder\">\n Drop dimensions here\n </div>\n <div ref=\"listRef\" :key=\"listKey\" class=\"dnd-basket__chip-wrapper\">\n <template v-for=\"(chipId, idx) in droppedIds\" :key=\"chipId\">\n <DndBasketChip\n v-if=\"!isFilter || info[chipId].isSubsetFilter\"\n v-model=\"selectedAxesValues[chipId]\"\n :sortable=\"sortable\"\n :error=\"consistency[chipId] === false\"\n :info=\"info[chipId]\"\n :search-options=\"filterOptions\"\n :search-model=\"searchModel\"\n :load-options=\"loadOptionsFn\"\n @update:model-value=\"(v: SelectFixedAxisValueEvent['v']) => $emit('select-fixed-axis-value', {v, idx})\"\n @close-chip=\"$emit('remove-item', { chipId, basketId: id })\"\n />\n <DndDoubleChip\n v-else-if=\"info[chipId].isDiscreteFilter\"\n v-model:filter=\"selectedFilterValues[chipId]\"\n v-model:fixed-axes=\"selectedAxesValues[chipId]\"\n :info=\"info[chipId]\"\n :error=\"consistency[chipId] === false\"\n :sortable=\"sortable\"\n :search-options=\"filterOptions\"\n :search-model=\"searchModel\"\n :load-options=\"loadOptionsFn\"\n @close-chip=\"$emit('remove-item', { chipId, basketId: id })\"\n @update:filter=\"(v: SelectFilterValueEvent['v']) => $emit('select-filter-value', { v, idx })\"\n @update:fixedAxes=\"(v: SelectFixedAxisValueEvent['v']) => $emit('select-fixed-axis-value', {v, idx})\"\n />\n <DnDRangeChip\n v-else\n v-model:filter=\"selectedFilterRanges[chipId]\"\n v-model:fixed-axes=\"selectedAxesValues[chipId]\"\n :info=\"info[chipId]\"\n :error=\"consistency[chipId] === false\"\n :search-options=\"filterOptions\"\n :search-model=\"searchModel\"\n :load-options=\"loadOptionsFn\"\n @close-chip=\"$emit('remove-item', { chipId, basketId: id })\"\n @update:filter=\"(v:SelectFilterValueEvent['v']) => $emit('select-filter-range', { v, idx })\"\n @update:fixedAxes=\"(v: SelectFixedAxisValueEvent['v']) => $emit('select-fixed-axis-value', {v, idx})\"\n />\n </template>\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","basketRoot","ref","listRef","listKey","selectedFilterValues","reactive","selectedFilterRanges","selectedAxesValues","canPutOneMore","computed","isBasketDisable","watch","useSortable","indices","i","addActiveClass","removeActiveClass","handleDrop","event","dragEnter","dragOver","filterOptions","sourceId","searchStr","searchModel","selectedValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,UAAMA,IAAQC,GAERC,IAAOC,GAEPC,IAAaC,EAAA,GACbC,IAAUD,EAAA,GACVE,IAAUF,EAAI,CAAC;AAErB,QAAIG,IAAuBC,EAAST,EAAM,mBAAmB,CAAA,CAAE,GAC3DU,IAAuBD,EAAST,EAAM,kBAAkB,CAAA,CAAE,GAC1DW,IAAqBF,EAAST,EAAM,aAAa,CAAA,CAAE;AAEvD,UAAMY,IAAgBC,EAAS,MACzB,EAAAb,EAAM,YAGN,CAACA,EAAM,YAAYA,EAAM,WAAW,SAAS,EAKlD,GAEKc,IAAkBD,EAAS,MAC3Bb,EAAM,WACD,WAEL,CAACY,EAAc,SAASZ,EAAM,YACzB,WAEF,EACR;AAED,IAAAe;AAAA,MACE,MAAMf,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAQ,IAAuBC,EAAST,EAAM,mBAAmB,CAAA,CAAE;AAAA,MAC7D;AAAA,IAAA,GAEFe;AAAA,MACE,MAAMf,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAW,IAAqBF,EAAST,EAAM,aAAa,CAAA,CAAE;AAAA,MACrD;AAAA,IAAA,GAEFe;AAAA,MACE,MAAMf,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAO,EAAQ;AAAA,MACV;AAAA,MACA,EAAE,MAAM,GAAA;AAAA,IAAK,GAGXP,EAAM,YACRgB,EAAYV,GAAS;AAAA,MACnB,QAAQ;AAAA,MACR,SAASW,GAAS;AAChB,QAAAf;AAAA,UACE;AAAA,UACAe,EAAQ,IAAI,CAACC,MAAMlB,EAAM,WAAWkB,CAAC,CAAC;AAAA,QAAA;AAAA,MAE1C;AAAA,IAAA,CACD;AAGH,aAASC,IAAiB;AACxB,MAAIf,EAAW,SAAS,CAACJ,EAAM,YAAYY,EAAc,SACvDR,EAAW,MAAM,UAAU,IAAI,QAAQ;AAAA,IAE3C;AAEA,aAASgB,IAAoB;AAC3B,MAAIhB,EAAW,SACbA,EAAW,MAAM,UAAU,OAAO,QAAQ;AAAA,IAE9C;AAEA,aAASiB,EAAWC,GAAkB;AACpC,MAAAA,EAAM,gBAAA,GACFV,EAAc,UACZZ,EAAM,aACRE,EAAK,aAAa,EAAE,WAAWF,EAAM,WAAW,IAAIA,EAAM,IAAI,GAEhEoB,EAAA;AAAA,IAEJ;AAEA,aAASG,EAAUD,GAAkB;AACnC,MAAAA,EAAM,eAAA;AAAA,IACR;AAEA,aAASE,EAASF,GAAkB;AAClC,MAAAA,EAAM,eAAA,GACNH,EAAA;AAAA,IACF;AACA,UAAMM,IAAgB,OAAOC,GAAkBC,MACtC3B,EAAM,SAAS0B,GAAUC,CAAS,GAErCC,IAAc,OAAOF,GAAkBG,OAC5B,MAAM7B,EAAM,sBAAsB0B,GAAUG,CAAa,GAC1D,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DndBasket.vue.js","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndBasket.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useSortable } from '@platforma-sdk/ui-vue';\nimport { computed, reactive, ref, watch } from 'vue';\nimport DndBasketChip from './DnDBasketChip.vue';\nimport DndDoubleChip from './DndDoubleChip.vue';\nimport DnDRangeChip from './DnDRangeChip.vue';\nimport {\n DndBasketEmits,\n DndBasketProps,\n SelectFilterValueEvent\n} from './types';\n\nconst props = defineProps<DndBasketProps>();\n\nconst emit = defineEmits<DndBasketEmits>();\n\nconst basketRoot = ref<HTMLElement>();\nconst listRef = ref<HTMLElement>();\nconst listKey = ref(0);\n\nlet selectedFilterValues = reactive(props.selectedFilters ?? {});\nlet selectedFilterRanges = reactive(props.selectedRanges ?? {});\n\nconst canPutOneMore = computed(() => {\n if (props.disabled) {\n return false;\n }\n if (!props.multiple && props.droppedIds.length > 0) {\n return false;\n }\n\n return true;\n});\n\nconst isBasketDisable = computed(() => {\n if (props.disabled) {\n return '1 true';\n }\n if (!canPutOneMore.value && props.draggedId) {\n return '2 true';\n }\n return false;\n});\n\nwatch(\n () => props.selectedFilters,\n () => {\n selectedFilterValues = reactive(props.selectedFilters ?? {});\n }\n);\nwatch(\n () => props.droppedIds,\n () => {\n listKey.value++;\n },\n { deep: true }\n);\n\nif (props.sortable) {\n useSortable(listRef, {\n handle: '.dnd-basket-chip__handler',\n onChange(indices) {\n emit(\n 'reorder',\n indices.map((i) => props.droppedIds[i])\n );\n }\n });\n}\n\nfunction addActiveClass() {\n if (basketRoot.value && !props.disabled && canPutOneMore.value) {\n basketRoot.value.classList.add('active');\n }\n}\n\nfunction removeActiveClass() {\n if (basketRoot.value) {\n basketRoot.value.classList.remove('active');\n }\n}\n\nfunction handleDrop(event: DragEvent) {\n event.stopPropagation();\n if (canPutOneMore.value) {\n if (props.draggedId) {\n emit('drop-item', { draggedId: props.draggedId, id: props.id });\n }\n removeActiveClass();\n }\n}\n\nfunction dragEnter(event: DragEvent) {\n event.preventDefault();\n}\n\nfunction dragOver(event: DragEvent) {\n event.preventDefault();\n addActiveClass();\n}\nconst filterOptions = async (sourceId: string, searchStr: string) => {\n return props.searchFn(sourceId, searchStr);\n};\nconst searchModel = async (sourceId: string, selectedValues: string[]) => {\n const result = await Promise.all(selectedValues.map(v => props.searchSelectedValueFn(sourceId, v)));\n return result.map(r => r[0]);\n}\n</script>\n<template>\n <div\n ref=\"basketRoot\"\n :class=\"{\n disabled: isBasketDisable,\n empty: droppedIds.length === 0,\n readonly\n }\"\n class=\"dnd-basket\"\n dropzone=\"true\"\n @drop=\"handleDrop\"\n @dragenter=\"dragEnter\"\n @dragover=\"dragOver\"\n @dragleave=\"removeActiveClass\"\n >\n <div class=\"dnd-basket__title\">\n <span v-if=\"required\" class=\"dnd-basket__required\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"6\"\n height=\"16\"\n viewBox=\"0 0 6 16\"\n fill=\"none\"\n >\n <path\n d=\"M2.01685 6.8L3 5.34159L3.97612 6.8L4.89607 6.12743L3.81461 4.7469L5.5 4.25133L5.14888 3.16106L3.50562 3.77699L3.56882 2H2.43118L2.49438 3.77699L0.851124 3.16106L0.5 4.25133L2.18539 4.7469L1.09691 6.12743L2.01685 6.8Z\"\n fill=\"#F1222F\"\n />\n </svg>\n </span>\n {{ title }}\n </div>\n <div class=\"dnd-basket__drop-container\">\n <div v-if=\"!droppedIds.length\" class=\"dnd-basket__placeholder\">\n Drop dimensions here\n </div>\n <div ref=\"listRef\" :key=\"listKey\" class=\"dnd-basket__chip-wrapper\">\n <template v-for=\"(chipId, idx) in droppedIds\" :key=\"chipId\">\n <DndBasketChip\n v-if=\"!isFilter || info[chipId].isSubsetFilter\"\n :sortable=\"sortable\"\n :error=\"consistency[chipId] === false\"\n :info=\"info[chipId]\"\n :load-options=\"loadOptionsFn\"\n @close-chip=\"$emit('remove-item', { chipId, basketId: id })\"\n />\n <DndDoubleChip\n v-else-if=\"info[chipId].isDiscreteFilter\"\n v-model:filter=\"selectedFilterValues[chipId]\"\n :info=\"info[chipId]\"\n :error=\"consistency[chipId] === false\"\n :sortable=\"sortable\"\n :search-options=\"filterOptions\"\n :search-model=\"searchModel\"\n :load-options=\"loadOptionsFn\"\n @close-chip=\"$emit('remove-item', { chipId, basketId: id })\"\n @update:filter=\"(v: SelectFilterValueEvent['v']) => $emit('select-filter-value', { v, idx })\"\n />\n <DnDRangeChip\n v-else\n v-model:filter=\"selectedFilterRanges[chipId]\"\n :info=\"info[chipId]\"\n :error=\"consistency[chipId] === false\"\n @close-chip=\"$emit('remove-item', { chipId, basketId: id })\"\n @update:filter=\"(v:SelectFilterValueEvent['v']) => $emit('select-filter-range', { v, idx })\"\n />\n </template>\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","basketRoot","ref","listRef","listKey","selectedFilterValues","reactive","selectedFilterRanges","canPutOneMore","computed","isBasketDisable","watch","useSortable","indices","i","addActiveClass","removeActiveClass","handleDrop","event","dragEnter","dragOver","filterOptions","sourceId","searchStr","searchModel","selectedValues","v","r"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,UAAMA,IAAQC,GAERC,IAAOC,GAEPC,IAAaC,EAAA,GACbC,IAAUD,EAAA,GACVE,IAAUF,EAAI,CAAC;AAErB,QAAIG,IAAuBC,EAAST,EAAM,mBAAmB,CAAA,CAAE,GAC3DU,IAAuBD,EAAST,EAAM,kBAAkB,CAAA,CAAE;AAE9D,UAAMW,IAAgBC,EAAS,MACzB,EAAAZ,EAAM,YAGN,CAACA,EAAM,YAAYA,EAAM,WAAW,SAAS,EAKlD,GAEKa,IAAkBD,EAAS,MAC3BZ,EAAM,WACD,WAEL,CAACW,EAAc,SAASX,EAAM,YACzB,WAEF,EACR;AAED,IAAAc;AAAA,MACE,MAAMd,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAQ,IAAuBC,EAAST,EAAM,mBAAmB,CAAA,CAAE;AAAA,MAC7D;AAAA,IAAA,GAEFc;AAAA,MACE,MAAMd,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAO,EAAQ;AAAA,MACV;AAAA,MACA,EAAE,MAAM,GAAA;AAAA,IAAK,GAGXP,EAAM,YACRe,EAAYT,GAAS;AAAA,MACnB,QAAQ;AAAA,MACR,SAASU,GAAS;AAChB,QAAAd;AAAA,UACE;AAAA,UACAc,EAAQ,IAAI,CAACC,MAAMjB,EAAM,WAAWiB,CAAC,CAAC;AAAA,QAAA;AAAA,MAE1C;AAAA,IAAA,CACD;AAGH,aAASC,IAAiB;AACxB,MAAId,EAAW,SAAS,CAACJ,EAAM,YAAYW,EAAc,SACvDP,EAAW,MAAM,UAAU,IAAI,QAAQ;AAAA,IAE3C;AAEA,aAASe,IAAoB;AAC3B,MAAIf,EAAW,SACbA,EAAW,MAAM,UAAU,OAAO,QAAQ;AAAA,IAE9C;AAEA,aAASgB,EAAWC,GAAkB;AACpC,MAAAA,EAAM,gBAAA,GACFV,EAAc,UACZX,EAAM,aACRE,EAAK,aAAa,EAAE,WAAWF,EAAM,WAAW,IAAIA,EAAM,IAAI,GAEhEmB,EAAA;AAAA,IAEJ;AAEA,aAASG,EAAUD,GAAkB;AACnC,MAAAA,EAAM,eAAA;AAAA,IACR;AAEA,aAASE,EAASF,GAAkB;AAClC,MAAAA,EAAM,eAAA,GACNH,EAAA;AAAA,IACF;AACA,UAAMM,IAAgB,OAAOC,GAAkBC,MACtC1B,EAAM,SAASyB,GAAUC,CAAS,GAErCC,IAAc,OAAOF,GAAkBG,OAC5B,MAAM,QAAQ,IAAIA,EAAe,IAAI,CAAAC,MAAK7B,EAAM,sBAAsByB,GAAUI,CAAC,CAAC,CAAC,GACpF,IAAI,CAAAC,MAAKA,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,28 +1,24 @@
1
- import { ListOption } from '@platforma-sdk/ui-vue';
2
- import { ChipInfo, FixedAxisData } from './types';
1
+ import { ListOptionBase } from '@platforma-sdk/ui-vue';
2
+ import { ChipInfo } from './types';
3
3
  type __VLS_Props = {
4
4
  info: ChipInfo;
5
5
  error: boolean;
6
- searchModel: (sourceId: string, selectedValue: string) => Promise<ListOption<string>>;
7
- searchOptions: (sourceId: string, searchStr: string) => Promise<ListOption<string>[]>;
8
- loadOptions: (sourceId: string) => Promise<ListOption<string>[] | null>;
6
+ searchModel: (sourceId: string, selectedValues: string[]) => Promise<ListOptionBase<string>[]>;
7
+ searchOptions: (sourceId: string, searchStr: string) => Promise<ListOptionBase<string>[]>;
8
+ loadOptions: (sourceId: string) => Promise<ListOptionBase<string>[] | null>;
9
9
  sortable?: boolean;
10
10
  };
11
11
  type __VLS_PublicProps = {
12
- 'filter': any;
13
- 'fixedAxes'?: Record<string, FixedAxisData>;
12
+ 'filter': string[];
14
13
  } & __VLS_Props;
15
14
  declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
16
- "update:filter": (value: any) => any;
17
- "update:fixedAxes": (value: Record<string, FixedAxisData>) => any;
15
+ "update:filter": (value: string[]) => any;
18
16
  } & {
19
17
  "close-chip": (id: string) => any;
20
18
  "update:filter": (id: unknown) => any;
21
- "update:fixedAxes": (id: Record<string, FixedAxisData>) => any;
22
19
  }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
23
20
  "onClose-chip"?: ((id: string) => any) | undefined;
24
21
  "onUpdate:filter"?: ((id: unknown) => any) | undefined;
25
- "onUpdate:fixedAxes"?: ((value: Record<string, FixedAxisData>) => any) | undefined;
26
22
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
27
23
  chipRoot: HTMLDivElement;
28
24
  }, HTMLDivElement>;
@@ -1 +1 @@
1
- {"version":3,"file":"DndDoubleChip.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndDoubleChip.vue"],"names":[],"mappings":"AAuIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIlD,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,CAAC,QAAQ,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACpF,aAAa,EAAE,CAAC,QAAQ,EAAC,MAAM,EAAE,SAAS,EAAC,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpF,WAAW,EAAE,CAAC,QAAQ,EAAC,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAqEF,KAAK,iBAAiB,GAAG;IACzB,QAAQ,EAAE,GAAG,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC3C,GAAG,WAAW,CAAC;;;;;;;;;;;;;;;AAoNhB,wBASG"}
1
+ {"version":3,"file":"DndDoubleChip.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndDoubleChip.vue"],"names":[],"mappings":"AAiFA,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,CAAC,QAAQ,EAAC,MAAM,EAAE,cAAc,EAAC,MAAM,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7F,aAAa,EAAE,CAAC,QAAQ,EAAC,MAAM,EAAE,SAAS,EAAC,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxF,WAAW,EAAE,CAAC,QAAQ,EAAC,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAkCF,KAAK,iBAAiB,GAAG;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CAClB,GAAG,WAAW,CAAC;;;;;;;;;;;;AAgJhB,wBASG"}