@milaboratories/graph-maker 1.1.169 → 1.1.171

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 (74) hide show
  1. package/dist/GraphMaker/components/Chart.vue.d.ts.map +1 -1
  2. package/dist/GraphMaker/components/Chart.vue.js +44 -34
  3. package/dist/GraphMaker/components/Chart.vue.js.map +1 -1
  4. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts +0 -2
  5. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts.map +1 -1
  6. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js +26 -33
  7. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js.map +1 -1
  8. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.d.ts.map +1 -1
  9. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js +14 -17
  10. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js.map +1 -1
  11. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.d.ts.map +1 -1
  12. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js +49 -50
  13. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js.map +1 -1
  14. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts +5 -2
  15. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts.map +1 -1
  16. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js +46 -43
  17. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js.map +1 -1
  18. package/dist/GraphMaker/components/DragAndDrop/types.d.ts +6 -3
  19. package/dist/GraphMaker/components/DragAndDrop/types.d.ts.map +1 -1
  20. package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +3 -2
  21. package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
  22. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.d.ts.map +1 -1
  23. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js +40 -43
  24. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js.map +1 -1
  25. package/dist/GraphMaker/forms/DataMappingForm/DiscreteForm.vue.js +9 -8
  26. package/dist/GraphMaker/forms/DataMappingForm/DiscreteForm.vue.js.map +1 -1
  27. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.d.ts.map +1 -1
  28. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js +15 -18
  29. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js.map +1 -1
  30. package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot/Scatter.vue.js +8 -7
  31. package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot/Scatter.vue.js.map +1 -1
  32. package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot-umap/Scatter.vue.js +3 -2
  33. package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot-umap/Scatter.vue.js.map +1 -1
  34. package/dist/GraphMaker/forms/StatisticsForm/DiscreteStatisticsForm.vue.js +3 -2
  35. package/dist/GraphMaker/forms/StatisticsForm/DiscreteStatisticsForm.vue.js.map +1 -1
  36. package/dist/GraphMaker/index.vue.d.ts.map +1 -1
  37. package/dist/GraphMaker/index.vue.js +49 -48
  38. package/dist/GraphMaker/index.vue.js.map +1 -1
  39. package/dist/GraphMaker/store.d.ts +3 -2
  40. package/dist/GraphMaker/store.d.ts.map +1 -1
  41. package/dist/GraphMaker/store.js +132 -116
  42. package/dist/GraphMaker/store.js.map +1 -1
  43. package/dist/GraphMaker/types.d.ts +8 -1
  44. package/dist/GraphMaker/types.d.ts.map +1 -1
  45. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js +3 -2
  46. package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
  47. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.js +3 -2
  48. package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.js.map +1 -1
  49. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js +3 -2
  50. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
  51. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.js +3 -2
  52. package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.js.map +1 -1
  53. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js +3 -2
  54. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
  55. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +7 -6
  56. package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
  57. package/dist/GraphMaker/utils/getUsedAesInMapping.js +15 -14
  58. package/dist/GraphMaker/utils/getUsedAesInMapping.js.map +1 -1
  59. package/dist/GraphMaker/utils/loadDefaultSources.js +16 -15
  60. package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
  61. package/dist/GraphMaker/utils/loadUniqueValuesToSave.d.ts +5 -3
  62. package/dist/GraphMaker/utils/loadUniqueValuesToSave.d.ts.map +1 -1
  63. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js +66 -72
  64. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js.map +1 -1
  65. package/dist/node_modules/@milaboratories/helpers/dist/utils.js.map +1 -1
  66. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/Lasso.js +98 -103
  67. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/Lasso.js.map +1 -1
  68. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/LowerSVG.js +2 -2
  69. package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  70. package/dist/node_modules/@milaboratories/pl-model-common/dist/bmodel/code.js +6 -0
  71. package/dist/node_modules/@milaboratories/pl-model-common/dist/bmodel/code.js.map +1 -0
  72. package/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js +1 -0
  73. package/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js.map +1 -1
  74. package/package.json +3 -3
@@ -1,4 +1,4 @@
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";
1
+ import { defineComponent as q, ref as m, reactive as c, computed as C, watch as L, createElementBlock as a, openBlock as s, normalizeClass as E, createElementVNode as d, createCommentVNode as h, createTextVNode as M, toDisplayString as N, Fragment as B, renderList as P, createBlock as v, unref as f } from "vue";
2
2
  import { useSortable as z } from "@platforma-sdk/ui-vue";
3
3
  import A from "./DnDBasketChip.vue.js";
4
4
  import H from "./DndDoubleChip.vue.js";
@@ -9,7 +9,7 @@ const T = { class: "dnd-basket__title" }, Z = {
9
9
  }, j = { class: "dnd-basket__drop-container" }, G = {
10
10
  key: 0,
11
11
  class: "dnd-basket__placeholder"
12
- }, Y = /* @__PURE__ */ q({
12
+ }, I = /* @__PURE__ */ q({
13
13
  __name: "DndBasket",
14
14
  props: {
15
15
  id: {},
@@ -32,45 +32,45 @@ const T = { class: "dnd-basket__title" }, Z = {
32
32
  },
33
33
  emits: ["drop-item", "remove-item", "select-filter-value", "select-filter-range", "reorder"],
34
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,
35
+ const r = D, g = $, i = m(), b = m(), y = m(0);
36
+ let u = c(r.selectedFilters ?? {}), k = c(r.selectedRanges ?? {});
37
+ const p = C(() => !(r.disabled || !r.multiple && r.droppedIds.length > 0)), w = C(() => r.disabled ? "1 true" : !p.value && r.draggedId ? "2 true" : !1);
38
+ L(
39
+ () => r.selectedFilters,
40
40
  () => {
41
- p = c(t.selectedFilters ?? {});
41
+ u = c(r.selectedFilters ?? {});
42
42
  }
43
- ), C(
44
- () => t.droppedIds,
43
+ ), r.sortable && (L(
44
+ () => r.droppedIds,
45
45
  () => {
46
- b.value++;
46
+ y.value++;
47
47
  },
48
48
  { deep: !0 }
49
- ), t.sortable && z(y, {
49
+ ), z(b, {
50
50
  handle: ".dnd-basket-chip__handler",
51
51
  onChange(e) {
52
52
  g(
53
53
  "reorder",
54
- e.map((n) => t.droppedIds[n])
54
+ e.map((n) => r.droppedIds[n])
55
55
  );
56
56
  }
57
- });
58
- function R() {
59
- i.value && !t.disabled && u.value && i.value.classList.add("active");
57
+ }));
58
+ function _() {
59
+ i.value && !r.disabled && p.value && i.value.classList.add("active");
60
60
  }
61
61
  function F() {
62
62
  i.value && i.value.classList.remove("active");
63
63
  }
64
- function O(e) {
65
- e.stopPropagation(), u.value && (t.draggedId && g("drop-item", { draggedId: t.draggedId, id: t.id }), F());
64
+ function R(e) {
65
+ e.stopPropagation(), p.value && (r.draggedId && g("drop-item", { draggedId: r.draggedId, id: r.id }), F());
66
66
  }
67
67
  function V(e) {
68
68
  e.preventDefault();
69
69
  }
70
- function S(e) {
71
- e.preventDefault(), R();
70
+ function O(e) {
71
+ e.preventDefault(), _();
72
72
  }
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]);
73
+ const S = async (e, n) => r.searchFn(e, n), U = async (e, n) => (await Promise.all(n.map((l) => r.searchSelectedValueFn(e, l)))).map((l) => l[0]);
74
74
  return (e, n) => (s(), a("div", {
75
75
  ref_key: "basketRoot",
76
76
  ref: i,
@@ -80,9 +80,9 @@ const T = { class: "dnd-basket__title" }, Z = {
80
80
  readonly: e.readonly
81
81
  }, "dnd-basket"]),
82
82
  dropzone: "true",
83
- onDrop: O,
83
+ onDrop: R,
84
84
  onDragenter: V,
85
- onDragover: S,
85
+ onDragover: O,
86
86
  onDragleave: F
87
87
  }, [
88
88
  d("div", T, [
@@ -99,51 +99,50 @@ const T = { class: "dnd-basket__title" }, Z = {
99
99
  fill: "#F1222F"
100
100
  })
101
101
  ], -1)
102
- ]))) : L("", !0),
102
+ ]))) : h("", !0),
103
103
  M(" " + N(e.title), 1)
104
104
  ]),
105
105
  d("div", j, [
106
- e.droppedIds.length ? L("", !0) : (s(), a("div", G, " Drop dimensions here ")),
106
+ e.droppedIds.length ? h("", !0) : (s(), a("div", G, " Drop dimensions here ")),
107
107
  (s(), a("div", {
108
108
  ref_key: "listRef",
109
- ref: y,
110
- key: b.value,
109
+ ref: b,
110
+ key: y.value,
111
111
  class: "dnd-basket__chip-wrapper"
112
112
  }, [
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, {
115
- key: 0,
113
+ (s(!0), a(B, null, P(e.droppedIds, (t, l) => (s(), a(B, null, [
114
+ !e.isFilter || e.info[t].isSubsetFilter ? (s(), v(A, {
115
+ key: t + "_subset",
116
116
  sortable: e.sortable,
117
- error: e.consistency[r] === !1,
118
- info: e.info[r],
119
- "load-options": e.loadOptionsFn,
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, {
122
- key: 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,
117
+ error: e.consistency[t] === !1,
118
+ info: e.info[t],
119
+ onCloseChip: (o) => e.$emit("remove-item", { chipId: t, basketId: e.id })
120
+ }, null, 8, ["sortable", "error", "info", "onCloseChip"])) : e.info[t].isDiscreteFilter ? (s(), v(H, {
121
+ key: t + "_double",
122
+ filter: f(u)[t],
123
+ "onUpdate:filter": [(o) => f(u)[t] = o, (o) => e.$emit("select-filter-value", { v: o, idx: l })],
124
+ info: e.info[t],
125
+ error: e.consistency[t] === !1,
127
126
  sortable: e.sortable,
128
- "search-options": _,
127
+ "search-options": S,
129
128
  "search-model": U,
130
129
  "load-options": e.loadOptionsFn,
131
- onCloseChip: (o) => e.$emit("remove-item", { chipId: r, basketId: e.id })
130
+ onCloseChip: (o) => e.$emit("remove-item", { chipId: t, basketId: e.id })
132
131
  }, null, 8, ["filter", "onUpdate:filter", "info", "error", "sortable", "load-options", "onCloseChip"])) : (s(), v(K, {
133
- key: 2,
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 })
132
+ key: t + "_range",
133
+ filter: f(k)[t],
134
+ "onUpdate:filter": [(o) => f(k)[t] = o, (o) => e.$emit("select-filter-range", { v: o, idx: l })],
135
+ info: e.info[t],
136
+ error: e.consistency[t] === !1,
137
+ onCloseChip: (o) => e.$emit("remove-item", { chipId: t, basketId: e.id })
139
138
  }, null, 8, ["filter", "onUpdate:filter", "info", "error", "onCloseChip"]))
140
- ], 64))), 128))
139
+ ], 64))), 256))
141
140
  ]))
142
141
  ])
143
142
  ], 34));
144
143
  }
145
144
  });
146
145
  export {
147
- Y as default
146
+ I as default
148
147
  };
149
148
  //# 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} 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
+ {"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);\n\nif (props.sortable) {\n watch(\n () => props.droppedIds,\n () => {\n listKey.value++;\n },\n { deep: true }\n );\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\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\">\n <DndBasketChip\n v-if=\"!isFilter || info[chipId].isSubsetFilter\"\n :key=\"chipId + '_subset'\"\n :sortable=\"sortable\"\n :error=\"consistency[chipId] === false\"\n :info=\"info[chipId]\"\n @close-chip=\"$emit('remove-item', { chipId, basketId: id })\"\n />\n <DndDoubleChip\n v-else-if=\"info[chipId].isDiscreteFilter\"\n :key=\"chipId + '_double'\"\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 :key=\"chipId + '_range'\"\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,GAGEA,EAAM,aACRc;AAAA,MACE,MAAMd,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAO,EAAQ;AAAA,MACV;AAAA,MACA,EAAE,MAAM,GAAA;AAAA,IAAK,GAEfQ,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,11 +1,14 @@
1
- import { ListOptionBase } from '@platforma-sdk/ui-vue';
1
+ import { ListOption, ListOptionBase } from '@platforma-sdk/ui-vue';
2
2
  import { ChipInfo } from './types';
3
3
  type __VLS_Props = {
4
4
  info: ChipInfo;
5
5
  error: boolean;
6
6
  searchModel: (sourceId: string, selectedValues: string[]) => Promise<ListOptionBase<string>[]>;
7
7
  searchOptions: (sourceId: string, searchStr: string) => Promise<ListOptionBase<string>[]>;
8
- loadOptions: (sourceId: string) => Promise<ListOptionBase<string>[] | null>;
8
+ loadOptions: (sourceId: string) => Promise<{
9
+ values: ListOption<string>[];
10
+ overflow: boolean;
11
+ }>;
9
12
  sortable?: boolean;
10
13
  };
11
14
  type __VLS_PublicProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"DndDoubleChip.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndDoubleChip.vue"],"names":[],"mappings":"AAuFA,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAInC,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;AAuCF,KAAK,iBAAiB,GAAG;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CAClB,GAAG,WAAW,CAAC;;;;;;;;;;;;AAgJhB,wBASG"}
1
+ {"version":3,"file":"DndDoubleChip.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndDoubleChip.vue"],"names":[],"mappings":"AAoFA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAInC,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;QAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAC,CAAC,CAAC;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAoCF,KAAK,iBAAiB,GAAG;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CAClB,GAAG,WAAW,CAAC;;;;;;;;;;;;AAkJhB,wBASG"}
@@ -1,16 +1,16 @@
1
- import { defineComponent as _, mergeModels as c, useModel as y, ref as b, watch as m, createElementBlock as f, openBlock as r, createElementVNode as i, normalizeClass as h, createCommentVNode as k, createVNode as M, createBlock as a, unref as d, toDisplayString as V } from "vue";
2
- import { PlIcon16 as u, PlDropdownMulti as g, PlAutocompleteMulti as w } from "@platforma-sdk/ui-vue";
3
- import C from "../../assets/drag-and-drop/img/chip-close.svg.js";
4
- import { useStore as B } from "../../store.js";
5
- const O = {
1
+ import { defineComponent as k, mergeModels as h, useModel as M, ref as _, watch as V, createElementBlock as b, openBlock as n, createElementVNode as i, normalizeClass as y, createCommentVNode as w, createVNode as O, createBlock as d, unref as r, toDisplayString as C } from "vue";
2
+ import { PlIcon16 as p, PlDropdownMulti as D, PlAutocompleteMulti as S } from "@platforma-sdk/ui-vue";
3
+ import B from "../../assets/drag-and-drop/img/chip-close.svg.js";
4
+ import { useStore as F } from "../../store.js";
5
+ const P = {
6
6
  ref: "chipRoot",
7
7
  class: "dnd-double-chip__group"
8
- }, D = { class: "dnd-double-chip__top" }, F = {
8
+ }, N = { class: "dnd-double-chip__top" }, E = {
9
9
  key: 0,
10
10
  class: "dnd-basket-chip__handler"
11
- }, S = ["title"], N = { class: "dnd-double-chip__title" }, P = ["innerHTML"], E = { class: "dnd-double-chip__bottom" }, $ = /* @__PURE__ */ _({
11
+ }, H = ["title"], I = { class: "dnd-double-chip__title" }, L = ["innerHTML"], T = { class: "dnd-double-chip__bottom" }, G = /* @__PURE__ */ k({
12
12
  __name: "DndDoubleChip",
13
- props: /* @__PURE__ */ c({
13
+ props: /* @__PURE__ */ h({
14
14
  info: {},
15
15
  error: { type: Boolean },
16
16
  searchModel: { type: Function },
@@ -21,65 +21,68 @@ const O = {
21
21
  filter: { required: !0 },
22
22
  filterModifiers: {}
23
23
  }),
24
- emits: /* @__PURE__ */ c(["close-chip", "update:filter"], ["update:filter"]),
25
- setup(p, { emit: H }) {
26
- const t = p, v = B(), n = y(p, "filter"), s = b();
27
- return m(() => v.value.loading.inputGuide, async (e) => {
28
- e || (s.value = await t.loadOptions(t.info.id));
29
- }, { immediate: !0 }), m(() => s.value, async (e) => {
30
- if (n.value !== void 0 || e === void 0)
24
+ emits: /* @__PURE__ */ h(["close-chip", "update:filter"], ["update:filter"]),
25
+ setup(c, { emit: U }) {
26
+ var f, v;
27
+ const o = c, a = F(), s = M(c, "filter"), u = _((f = a.value.filterSuggestionsData.value[o.info.id]) == null ? void 0 : f.values), m = _(((v = a.value.filterSuggestionsData.value[o.info.id]) == null ? void 0 : v.overflow) ?? !1);
28
+ V(() => a.value.loading.inputGuide, async (e) => {
29
+ if (e)
31
30
  return;
32
- let o = e;
33
- e === null && (o = await t.searchOptions(t.info.id, "")), o != null && o.length && (n.value = [o[0].value]);
34
- }, { immediate: !0 }), (e, o) => (r(), f("div", O, [
31
+ const { values: l, overflow: t } = await o.loadOptions(o.info.id);
32
+ u.value = l, m.value = t;
33
+ }, { immediate: !0 });
34
+ function g(e) {
35
+ return e === "" ? Promise.resolve(u.value ?? []) : o.searchOptions(o.info.id, e);
36
+ }
37
+ return (e, l) => (n(), b("div", P, [
35
38
  i("div", {
36
- class: h([{ error: e.error, sortable: e.sortable }, "dnd-double-chip"])
39
+ class: y([{ error: e.error, sortable: e.sortable }, "dnd-double-chip"])
37
40
  }, [
38
- i("div", D, [
41
+ i("div", N, [
39
42
  i("div", {
40
- class: h(["dnd-double-chip__icon", { error: e.error }])
43
+ class: y(["dnd-double-chip__icon", { error: e.error }])
41
44
  }, [
42
- e.error ? (r(), a(d(u), {
45
+ e.error ? (n(), d(r(p), {
43
46
  key: 0,
44
47
  name: "warning"
45
- })) : (r(), a(d(u), {
48
+ })) : (n(), d(r(p), {
46
49
  key: 1,
47
50
  name: e.info.isSubsetFilter ? "cell-type-subset" : e.info.type === "String" ? "cell-type-txt" : "cell-type-num"
48
51
  }, null, 8, ["name"]))
49
52
  ], 2),
50
- e.sortable ? (r(), f("div", F)) : k("", !0),
51
- M(d(u), { name: "drag-dots" }),
53
+ e.sortable ? (n(), b("div", E)) : w("", !0),
54
+ O(r(p), { name: "drag-dots" }),
52
55
  i("div", {
53
56
  class: "dnd-double-chip__title-wrapper",
54
57
  title: e.info.title
55
58
  }, [
56
- i("div", N, V(e.info.title), 1)
57
- ], 8, S),
59
+ i("div", I, C(e.info.title), 1)
60
+ ], 8, H),
58
61
  i("div", {
59
- innerHTML: d(C),
62
+ innerHTML: r(B),
60
63
  class: "dnd-double-chip__icon-close",
61
- onClick: o[0] || (o[0] = (l) => e.$emit("close-chip", t.info.id))
62
- }, null, 8, P)
64
+ onClick: l[0] || (l[0] = (t) => e.$emit("close-chip", o.info.id))
65
+ }, null, 8, L)
63
66
  ]),
64
- i("div", E, [
65
- s.value !== null ? (r(), a(d(g), {
66
- key: 0,
67
- modelValue: n.value,
68
- "onUpdate:modelValue": o[1] || (o[1] = (l) => n.value = l),
69
- options: s.value
70
- }, null, 8, ["modelValue", "options"])) : (r(), a(d(w), {
67
+ i("div", T, [
68
+ m.value ? (n(), d(r(S), {
71
69
  key: 1,
72
- modelValue: n.value,
73
- "onUpdate:modelValue": o[2] || (o[2] = (l) => n.value = l),
74
- "options-search": (l) => e.searchOptions(t.info.id, l),
75
- "model-search": (l) => e.searchModel(t.info.id, l)
76
- }, null, 8, ["modelValue", "options-search", "model-search"]))
70
+ modelValue: s.value,
71
+ "onUpdate:modelValue": l[2] || (l[2] = (t) => s.value = t),
72
+ "options-search": g,
73
+ "model-search": (t) => e.searchModel(o.info.id, t)
74
+ }, null, 8, ["modelValue", "model-search"])) : (n(), d(r(D), {
75
+ key: 0,
76
+ modelValue: s.value,
77
+ "onUpdate:modelValue": l[1] || (l[1] = (t) => s.value = t),
78
+ options: u.value
79
+ }, null, 8, ["modelValue", "options"]))
77
80
  ])
78
81
  ], 2)
79
82
  ], 512));
80
83
  }
81
84
  });
82
85
  export {
83
- $ as default
86
+ G as default
84
87
  };
85
88
  //# sourceMappingURL=DndDoubleChip.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DndDoubleChip.vue.js","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndDoubleChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport type { ListOption, ListOptionBase } from '@platforma-sdk/ui-vue';\nimport { PlAutocompleteMulti, PlDropdownMulti, PlIcon16 } from '@platforma-sdk/ui-vue';\nimport { ChipInfo } from './types';\nimport CloseIcon from '../../assets/drag-and-drop/img/chip-close.svg?raw';\nimport { useStore } from '../../../GraphMaker/store.ts';\n\nconst props = defineProps<{\n info: ChipInfo;\n error: boolean;\n searchModel: (sourceId:string, selectedValues:string[]) => Promise<ListOptionBase<string>[]>;\n searchOptions: (sourceId:string, searchStr:string) => Promise<ListOptionBase<string>[]>;\n loadOptions: (sourceId:string) => Promise<ListOptionBase<string>[] | null>;\n sortable?: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: 'close-chip', id: ChipInfo['id']): void;\n (e: 'update:filter', id: unknown): void;\n}>();\n\nconst store = useStore();\n\nconst filterModel = defineModel<string[]>('filter', {required: true});\n\nconst preloadedOptions = ref<ListOption[]|null|undefined>();\n\nwatch(() => store.value.loading.inputGuide, async (loading) => {\n if (loading) {\n return;\n }\n preloadedOptions.value = await props.loadOptions(props.info.id);\n}, {immediate: true})\n\nwatch(() => preloadedOptions.value, async (opts) => {\n if (filterModel.value !== undefined || opts === undefined) { // some filter value already selected or options isn't loaded yet\n return;\n }\n let availableOptions = opts;\n if (opts === null) { // options loaded but too many unique values\n availableOptions = await props.searchOptions(props.info.id, '');\n }\n if (availableOptions?.length) {\n filterModel.value = [availableOptions[0].value as string];\n }\n}, {immediate: true});\n\n</script>\n\n<template>\n <div ref=\"chipRoot\" class=\"dnd-double-chip__group\">\n <div :class=\"{ error, sortable }\" class=\"dnd-double-chip\">\n <div class=\"dnd-double-chip__top\">\n <div class=\"dnd-double-chip__icon\" :class=\"{error}\">\n <PlIcon16 v-if=\"error\" name=\"warning\"/>\n <PlIcon16 v-else :name=\"info.isSubsetFilter ? 'cell-type-subset' : info.type === 'String' ? 'cell-type-txt' : 'cell-type-num'\"/>\n </div>\n <div v-if=\"sortable\" class=\"dnd-basket-chip__handler\"></div>\n <PlIcon16 name=\"drag-dots\" />\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\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\">\n <PlDropdownMulti v-if=\"preloadedOptions !== null\" v-model=\"filterModel\" :options=\"preloadedOptions\" />\n <PlAutocompleteMulti\n v-else\n v-model=\"filterModel\"\n :options-search=\"(str) => searchOptions(props.info.id, str)\"\n :model-search=\"(v) => searchModel(props.info.id, v as string[])\"\n />\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","store","useStore","filterModel","_useModel","preloadedOptions","ref","watch","loading","opts","availableOptions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAMA,IAAQC,GAcRC,IAAQC,EAAA,GAERC,IAAcC,EAAqBJ,GAAC,QAA0B,GAE9DK,IAAmBC,EAAA;AAEzB,WAAAC,EAAM,MAAMN,EAAM,MAAM,QAAQ,YAAY,OAAOO,MAAY;AAC7D,MAAIA,MAGJH,EAAiB,QAAQ,MAAMN,EAAM,YAAYA,EAAM,KAAK,EAAE;AAAA,IAChE,GAAG,EAAC,WAAW,IAAK,GAEpBQ,EAAM,MAAMF,EAAiB,OAAO,OAAOI,MAAS;AAClD,UAAIN,EAAY,UAAU,UAAaM,MAAS;AAC9C;AAEF,UAAIC,IAAmBD;AACvB,MAAIA,MAAS,SACXC,IAAmB,MAAMX,EAAM,cAAcA,EAAM,KAAK,IAAI,EAAE,IAE5DW,KAAA,QAAAA,EAAkB,WACpBP,EAAY,QAAQ,CAACO,EAAiB,CAAC,EAAE,KAAe;AAAA,IAE5D,GAAG,EAAC,WAAW,IAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DndDoubleChip.vue.js","sources":["../../../../src/GraphMaker/components/DragAndDrop/DndDoubleChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport type { ListOption, ListOptionBase } from '@platforma-sdk/ui-vue';\nimport { PlAutocompleteMulti, PlDropdownMulti, PlIcon16 } from '@platforma-sdk/ui-vue';\nimport { ChipInfo } from './types';\nimport CloseIcon from '../../assets/drag-and-drop/img/chip-close.svg?raw';\nimport { useStore } from '../../../GraphMaker/store.ts';\n\nconst props = defineProps<{\n info: ChipInfo;\n error: boolean;\n searchModel: (sourceId:string, selectedValues:string[]) => Promise<ListOptionBase<string>[]>;\n searchOptions: (sourceId:string, searchStr:string) => Promise<ListOptionBase<string>[]>;\n loadOptions: (sourceId:string) => Promise<{values: ListOption<string>[], overflow: boolean}>;\n sortable?: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: 'close-chip', id: ChipInfo['id']): void;\n (e: 'update:filter', id: unknown): void;\n}>();\n\nconst store = useStore();\n\nconst filterModel = defineModel<string[]>('filter', {required: true});\n\nconst preloadedOptions = ref<ListOption[] | undefined>(store.value.filterSuggestionsData.value[props.info.id]?.values);\nconst optionsOverflow = ref(store.value.filterSuggestionsData.value[props.info.id]?.overflow ?? false);\n\nwatch(() => store.value.loading.inputGuide, async (loading) => {\n if (loading) {\n return;\n }\n const {values, overflow} = await props.loadOptions(props.info.id);\n preloadedOptions.value = values;\n optionsOverflow.value = overflow;\n}, {immediate: true});\n\nfunction searchOptions(str: string): Promise<ListOptionBase<string>[]> {\n if (str === '') {\n return Promise.resolve((preloadedOptions.value ?? []) as ListOptionBase<string>[]);\n }\n return props.searchOptions(props.info.id, str);\n}\n\n</script>\n\n<template>\n <div ref=\"chipRoot\" class=\"dnd-double-chip__group\">\n <div :class=\"{ error, sortable }\" class=\"dnd-double-chip\">\n <div class=\"dnd-double-chip__top\">\n <div class=\"dnd-double-chip__icon\" :class=\"{error}\">\n <PlIcon16 v-if=\"error\" name=\"warning\"/>\n <PlIcon16 v-else :name=\"info.isSubsetFilter ? 'cell-type-subset' : info.type === 'String' ? 'cell-type-txt' : 'cell-type-num'\"/>\n </div>\n <div v-if=\"sortable\" class=\"dnd-basket-chip__handler\"></div>\n <PlIcon16 name=\"drag-dots\" />\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\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\">\n <PlDropdownMulti v-if=\"!optionsOverflow\" v-model=\"filterModel\" :options=\"preloadedOptions\" />\n <PlAutocompleteMulti\n v-else\n v-model=\"filterModel\"\n :options-search=\"searchOptions\"\n :model-search=\"(v) => searchModel(props.info.id, v as string[])\"\n />\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","store","useStore","filterModel","_useModel","preloadedOptions","ref","_a","optionsOverflow","_b","watch","loading","values","overflow","searchOptions","str"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAMA,IAAQC,GAcRC,IAAQC,EAAA,GAERC,IAAcC,EAAqBJ,GAAC,QAA0B,GAE9DK,IAAmBC,GAA8BC,IAAAN,EAAM,MAAM,sBAAsB,MAAMF,EAAM,KAAK,EAAE,MAArD,gBAAAQ,EAAwD,MAAM,GAC/GC,IAAkBF,IAAIG,IAAAR,EAAM,MAAM,sBAAsB,MAAMF,EAAM,KAAK,EAAE,MAArD,gBAAAU,EAAwD,aAAY,EAAK;AAErG,IAAAC,EAAM,MAAMT,EAAM,MAAM,QAAQ,YAAY,OAAOU,MAAY;AAC7D,UAAIA;AACF;AAEF,YAAM,EAAC,QAAAC,GAAQ,UAAAC,MAAY,MAAMd,EAAM,YAAYA,EAAM,KAAK,EAAE;AAChE,MAAAM,EAAiB,QAAQO,GACzBJ,EAAgB,QAAQK;AAAA,IAC1B,GAAG,EAAC,WAAW,IAAK;AAEpB,aAASC,EAAcC,GAAgD;AACrE,aAAIA,MAAQ,KACH,QAAQ,QAASV,EAAiB,SAAS,CAAA,CAA+B,IAE5EN,EAAM,cAAcA,EAAM,KAAK,IAAIgB,CAAG;AAAA,IAC/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -34,9 +34,12 @@ export type DndBasketProps<T = any> = {
34
34
  label: string;
35
35
  }[]>;
36
36
  loadOptionsFn: (sourceId: string) => Promise<{
37
- value: string;
38
- label: string;
39
- }[] | null>;
37
+ values: {
38
+ value: string;
39
+ label: string;
40
+ }[];
41
+ overflow: boolean;
42
+ }>;
40
43
  };
41
44
  export type DropItemEvent<T = any> = {
42
45
  draggedId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/DragAndDrop/types.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ import { createDefaultMapping as J } from "../../dataBindAes.js";
23
23
  import "../../constantsAesthetic.js";
24
24
  import { getDiscreteLabelsRotation as fe } from "../../utils/createChartSettingsForRender/getAxesDataFromForms.js";
25
25
  import "../../../node_modules/@milaboratories/pf-plots/dist/index.js";
26
+ import "../../../node_modules/@milaboratories/pl-model-common/dist/bmodel/code.js";
26
27
  import "../../../node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js";
27
28
  import "../../../node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js";
28
29
  import "../../../node_modules/@milaboratories/pl-model-common/dist/plid.js";
@@ -47,7 +48,7 @@ const xe = { class: "axes-settings-list" }, Ve = { class: "axes-settings-options
47
48
  }, Te = {
48
49
  key: 4,
49
50
  class: "axes-settings-options-row"
50
- }, Ae = { class: "axes-settings-options-row block" }, Oe = { key: 5 }, Xe = { class: "axes-settings-options-row table" }, Ue = { class: "axes-settings-options-row table" }, Ie = { class: "axes-settings-options-row table" }, Ge = { class: "axes-settings-options-row block" }, Pe = { key: 0 }, Ne = { class: "axes-settings-options-row block" }, Re = { class: "axes-settings-options-row table" }, Ce = { class: "axes-settings-options-row table" }, Fe = { class: "other" }, Be = { class: "axes-settings-options-row" }, De = { class: "axes-settings-options-row" }, Le = { class: "axes-settings-options-row" }, Ye = { class: "axes-settings-options-row block" }, yl = /* @__PURE__ */ ee({
51
+ }, Ae = { class: "axes-settings-options-row block" }, Oe = { key: 5 }, Xe = { class: "axes-settings-options-row table" }, Ue = { class: "axes-settings-options-row table" }, Ie = { class: "axes-settings-options-row table" }, Ge = { class: "axes-settings-options-row block" }, Pe = { key: 0 }, Ne = { class: "axes-settings-options-row block" }, Re = { class: "axes-settings-options-row table" }, Ce = { class: "axes-settings-options-row table" }, Fe = { class: "other" }, Be = { class: "axes-settings-options-row" }, De = { class: "axes-settings-options-row" }, Le = { class: "axes-settings-options-row" }, Ye = { class: "axes-settings-options-row block" }, bl = /* @__PURE__ */ ee({
51
52
  __name: "DiscreteAxesSettingsForm",
52
53
  setup(Me) {
53
54
  const i = te(), t = i.value.reactive.axesSettings, T = {
@@ -393,6 +394,6 @@ const xe = { class: "axes-settings-list" }, Ve = { class: "axes-settings-options
393
394
  }
394
395
  });
395
396
  export {
396
- yl as default
397
+ bl as default
397
398
  };
398
399
  //# sourceMappingURL=DiscreteAxesSettingsForm.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DiscreteAxesSettingsForm.vue.js","sources":["../../../../src/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { Slider, PlToggleSwitch } from '@platforma-sdk/ui-vue';\nimport { useStore } from '../../store';\nimport CollapsableBlock from '../../components/CollapsableBlock.vue';\nimport Right from '../../icons/Right.vue';\nimport Down from '../../icons/Down.vue';\nimport { PlTextField, PlBtnGroup } from '@platforma-sdk/ui-vue';\nimport BtnIconGroup from '../../components/BtnIconGroup.vue';\nimport AlignLeft from '../../icons/AlignLeft.vue';\nimport AlignCenter from '../../icons/AlignCenter.vue';\nimport AlignRight from '../../icons/AlignRight.vue';\nimport FrameFull from '../../icons/FrameFull.vue';\nimport FrameEmpty from '../../icons/FrameEmpty.vue';\nimport Rotation0 from '../../icons/Rotation0.vue';\nimport Rotation45 from '../../icons/Rotation45.vue';\nimport Rotation90 from '../../icons/Rotation90.vue';\nimport FrameLeft from '../../icons/FrameLeft.vue';\nimport FrameBottom from '../../icons/FrameBottom.vue';\nimport FrameLeftBottom from '../../icons/FrameLeftBottom.vue';\nimport AesButton from '../../components/AesButton.vue';\nimport FormWrapper from '../../components/AesSettings/FormWrapper.vue';\nimport { computed, onMounted, ref } from 'vue';\nimport AesDataMapping from '../../components/AesSettings/AesDataMappingDiscrete.vue';\nimport { AestheticMappingCategorical, createDefaultMapping } from '../../dataBindAes';\nimport { LabelsRotation } from '../../types';\nimport { getDiscreteLabelsRotation } from '../../utils';\nimport { watch } from 'vue';\n\nconst store = useStore();\nconst settings = store.value.reactive.axesSettings;\nconst blockSettings = {\n height: 40,\n horizontalPadding: 12,\n defaultState: 'open' as 'open' | 'close'\n};\n\nconst OPTIONS_TITLE_ALIGN = [\n {value: 'left', icon: AlignLeft},\n {value: 'center', icon: AlignCenter},\n {value: 'right', icon: AlignRight},\n]\n// const OPTIONS_FACET_FRAME = [\n// {value: 'empty', icon: FrameEmpty},\n// {value: 'full', icon: FrameFull},\n// ]\nconst OPTIONS_LABELS_ROTATION = [\n { value: 'center', icon: Rotation0 },\n { value: '45deg', icon: Rotation45 },\n { value: '90deg', icon: Rotation90 }\n];\nconst OPTIONS_AXIS_LABEL_MODE = [\n { value: 'auto', text: 'Auto' },\n { value: 'custom', text: 'Custom' },\n { value: 'hidden', text: 'Hide' }\n];\nconst OPTIONS_SCALE = [\n { value: 'linear', text: 'Linear' },\n { value: 'log', text: 'Log' }\n];\nconst OPTIONS_CHART_FRAME = [\n { value: 'empty', icon: FrameEmpty },\n { value: 'left', icon: FrameLeft },\n { value: 'bottom', icon: FrameBottom },\n { value: 'left-bottom', icon: FrameLeftBottom },\n { value: 'full', icon: FrameFull }\n];\n\nconst inputGuide = computed(() => store.value.inputGuide.value)\nconst labelsInfo = computed(() => store.value.uniqueValuesData.value)\n\nconst reorderPrimaryOpen = ref(false);\nconst reorderSecondaryOpen = ref(false);\n\nconst defaultReorderPrimaryOpen = computed(() => store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen);\nconst defaultReorderSecondaryOpen = computed(() => store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen);\nonMounted(() => {\n if (defaultReorderPrimaryOpen.value) {\n reorderPrimaryOpen.value = true;\n }\n if (defaultReorderSecondaryOpen.value) {\n reorderSecondaryOpen.value = true;\n }\n})\nwatch(() => defaultReorderPrimaryOpen.value, (v) => {\n if (v) {\n reorderSecondaryOpen.value = false;\n reorderPrimaryOpen.value = true;\n }\n});\nwatch(() => defaultReorderSecondaryOpen.value, (v) => {\n if (v) {\n reorderPrimaryOpen.value = false;\n reorderSecondaryOpen.value = true;\n }\n});\n\nconst primaryGrouping = computed(() => store.value.reactive.optionsState.components.primaryGrouping?.selectorStates[0]?.selectedSource);\nconst secondaryGrouping = computed(() => store.value.reactive.optionsState.components.secondaryGrouping?.selectorStates[0]?.selectedSource);\n\nconst primaryGroups = computed(() => store.value.commonHelpersData.primaryGroups.value)\nconst secondaryGroups = computed(() => store.value.commonHelpersData.secondaryGroups.value)\n\nconst usedAesInMapping = computed(() => store.value.commonHelpersData.usedAesInMapping.value);\n\nconst mappingPrimary = ref(store.value.reactive.dataBindAes[primaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(primaryGroups.value));\nconst mappingSecondary = ref(store.value.reactive.dataBindAes[secondaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(secondaryGroups.value));\n\nconst primaryInfo = computed(() => {\n if (primaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(primaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[primaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: primaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {})\n };\n }\n});\nconst secondaryInfo = computed(() => {\n if (secondaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(secondaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[secondaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: secondaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {})\n };\n }\n});\n\nfunction updateOrder(value: AestheticMappingCategorical, sourceId: string) {\n store.value.reactive.dataBindAes[sourceId] = value;\n}\n\nconst OPTIONS_FACET_SHARED = [\n { text: 'X', value: 'x' },\n { text: 'Y', value: 'y' },\n { text: 'XY', value: 'xy' },\n { text: 'None', value: 'none' }\n];\n\nconst primaryOptions = computed(() => labelsInfo.value[primaryGrouping.value])\nconst xLabelsRotation = computed({\n get(){\n return getDiscreteLabelsRotation(settings.axisX.labelsRotation, primaryOptions.value?.options)\n },\n set(value:LabelsRotation) {\n settings.axisX.labelsRotation = value;\n }\n})\n</script>\n\n<template>\n <div class=\"axes-form\" @click=\"(e) => e.stopPropagation()\">\n <h3 class=\"axes-title\">\n Axes\n </h3>\n <div class=\"axes-settings-list\">\n <!-- Chart title -->\n <collapsable-block title=\"Title\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.title.mode\"\n />\n </div>\n <div class=\"axes-settings-input\" v-if=\"settings.title.mode === 'custom'\">\n <pl-text-field\n label=\"Chart title\"\n placeholder=\"Chart title\"\n v-model=\"settings.title.value\"\n />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Alignment</span>\n <btn-icon-group :options=\"OPTIONS_TITLE_ALIGN\" v-model=\"settings.title.position\"/>\n </div>\n<!-- <div class=\"axes-settings-options-row\">-->\n<!-- <span>Facet frame style</span>-->\n<!-- <btn-icon-group :options=\"OPTIONS_FACET_FRAME\" v-model=\"settings.title.facetTitleFrame\"/>-->\n<!-- </div>-->\n </collapsable-block>\n <!-- X axis settings-->\n <collapsable-block title=\"X-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row\" v-if=\"primaryGroups.length > 1\">\n <span>Primary groups order: </span>\n <aes-button :data=\"{type: 'data', value: null}\" @click=\"reorderPrimaryOpen = true\" />\n <template v-if=\"reorderPrimaryOpen && primaryInfo\">\n <form-wrapper\n title=\"Reorder primary groups\"\n back-title=\"Axes Settings\"\n @form:open=\"store.reactive.tabDefaultState['axes'].reorderPrimaryOpen = false\"\n @form:close=\"reorderPrimaryOpen = false\"\n >\n <aes-data-mapping\n :column-value-labels=\"primaryInfo.labels\"\n :data-column-label=\"primaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[primaryGrouping]\"\n allow-reordering\n allow-hiding\n :allow-null-option=\"settings.axisX.allowNullPrimaryGroups\"\n v-model=\"mappingPrimary\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, primaryGrouping)\"\n />\n </form-wrapper>\n </template>\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"primaryGroups.length > 1\">\n <span>Allow null primary group</span>\n <pl-toggle-switch v-model=\"settings.axisX.allowNullPrimaryGroups\" />\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"secondaryGroups.length > 1\">\n <span>Secondary groups order: </span>\n <aes-button :data=\"{type: 'data', value: null}\" @click=\"reorderSecondaryOpen = true\" />\n <template v-if=\"reorderSecondaryOpen && secondaryInfo\">\n <form-wrapper\n title=\"Reorder secondary groups\"\n back-title=\"Axes Settings\"\n @form:open=\"store.reactive.tabDefaultState['axes'].reorderSecondaryOpen = false\"\n @form:close=\"reorderSecondaryOpen = false\"\n >\n <aes-data-mapping\n :column-value-labels=\"secondaryInfo.labels\"\n :data-column-label=\"secondaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[secondaryGrouping]\"\n allow-reordering\n allow-hiding\n :allow-null-option=\"settings.axisX.allowNullSecondaryGroups\"\n v-model=\"mappingSecondary\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, secondaryGrouping)\"\n />\n </form-wrapper>\n </template>\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"secondaryGroups.length > 1\">\n <span>Allow null secondary group</span>\n <pl-toggle-switch v-model=\"settings.axisX.allowNullSecondaryGroups\" />\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"store.reactive.chartType === 'discrete'\">\n <span>Labels rotation</span>\n <btn-icon-group :options=\"OPTIONS_LABELS_ROTATION\" v-model=\"xLabelsRotation\" />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.axisX.titleMode\"\n />\n </div>\n <div v-if=\"settings.axisX.titleMode === 'custom'\">\n <pl-text-field\n label=\"Text\"\n placeholder=\"Type\"\n v-model=\"settings.axisX.customTitle\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <pl-toggle-switch v-model=\"settings.axisX.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Lines between categories</span>\n <pl-toggle-switch v-model=\"settings.axisX.linesBetweenCategories\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <pl-toggle-switch v-model=\"settings.axisX.ticks\" />\n </div>\n </collapsable-block>\n <!-- Y axis settings-->\n <collapsable-block title=\"Y-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.axisY.titleMode\"\n />\n </div>\n <div v-if=\"settings.axisY.titleMode === 'custom'\">\n <pl-text-field\n label=\"Text\"\n placeholder=\"Type\"\n v-model=\"settings.axisY.customTitle\"\n />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Scale\"\n :options=\"OPTIONS_SCALE\"\n v-model=\"settings.axisY.scale\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <pl-toggle-switch v-model=\"settings.axisY.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <pl-toggle-switch v-model=\"settings.axisY.ticks\" />\n </div>\n </collapsable-block>\n <!-- Facet settings-->\n <div class=\"other\">\n <div class=\"axes-settings-options-row\">\n <span>Frame</span>\n <btn-icon-group :options=\"OPTIONS_CHART_FRAME\" v-model=\"settings.other.frame\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Reverse axes</span>\n <pl-toggle-switch v-model=\"settings.other.reverse\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <Slider\n :style=\"{width: '100%'}\"\n label=\"Facet column count\"\n :min=\"1\"\n :max=\"6\"\n :step=\"1\"\n :breakpoints=\"true\"\n mode=\"input\"\n v-model=\"settings.other.facetColumns\"\n />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Facet shared by\"\n :options=\"OPTIONS_FACET_SHARED\"\n v-model=\"settings.other.facetSharedBy\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["store","useStore","settings","blockSettings","OPTIONS_TITLE_ALIGN","AlignLeft","AlignCenter","AlignRight","OPTIONS_LABELS_ROTATION","Rotation0","Rotation45","Rotation90","OPTIONS_AXIS_LABEL_MODE","OPTIONS_SCALE","OPTIONS_CHART_FRAME","FrameEmpty","FrameLeft","FrameBottom","FrameLeftBottom","FrameFull","inputGuide","computed","labelsInfo","reorderPrimaryOpen","ref","reorderSecondaryOpen","defaultReorderPrimaryOpen","defaultReorderSecondaryOpen","onMounted","watch","v","primaryGrouping","_b","_a","secondaryGrouping","primaryGroups","secondaryGroups","usedAesInMapping","mappingPrimary","createDefaultMapping","mappingSecondary","primaryInfo","selectedSourceInfo","valueLabels","res","secondaryInfo","updateOrder","value","sourceId","OPTIONS_FACET_SHARED","primaryOptions","xLabelsRotation","getDiscreteLabelsRotation"],"mappings":"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"}
1
+ {"version":3,"file":"DiscreteAxesSettingsForm.vue.js","sources":["../../../../src/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { Slider, PlToggleSwitch } from '@platforma-sdk/ui-vue';\nimport { useStore } from '../../store';\nimport CollapsableBlock from '../../components/CollapsableBlock.vue';\nimport Right from '../../icons/Right.vue';\nimport Down from '../../icons/Down.vue';\nimport { PlTextField, PlBtnGroup } from '@platforma-sdk/ui-vue';\nimport BtnIconGroup from '../../components/BtnIconGroup.vue';\nimport AlignLeft from '../../icons/AlignLeft.vue';\nimport AlignCenter from '../../icons/AlignCenter.vue';\nimport AlignRight from '../../icons/AlignRight.vue';\nimport FrameFull from '../../icons/FrameFull.vue';\nimport FrameEmpty from '../../icons/FrameEmpty.vue';\nimport Rotation0 from '../../icons/Rotation0.vue';\nimport Rotation45 from '../../icons/Rotation45.vue';\nimport Rotation90 from '../../icons/Rotation90.vue';\nimport FrameLeft from '../../icons/FrameLeft.vue';\nimport FrameBottom from '../../icons/FrameBottom.vue';\nimport FrameLeftBottom from '../../icons/FrameLeftBottom.vue';\nimport AesButton from '../../components/AesButton.vue';\nimport FormWrapper from '../../components/AesSettings/FormWrapper.vue';\nimport { computed, onMounted, ref } from 'vue';\nimport AesDataMapping from '../../components/AesSettings/AesDataMappingDiscrete.vue';\nimport { AestheticMappingCategorical, createDefaultMapping } from '../../dataBindAes';\nimport { LabelsRotation } from '../../types';\nimport { getDiscreteLabelsRotation } from '../../utils';\nimport { watch } from 'vue';\n\nconst store = useStore();\nconst settings = store.value.reactive.axesSettings;\nconst blockSettings = {\n height: 40,\n horizontalPadding: 12,\n defaultState: 'open' as 'open' | 'close'\n};\n\nconst OPTIONS_TITLE_ALIGN = [\n {value: 'left', icon: AlignLeft},\n {value: 'center', icon: AlignCenter},\n {value: 'right', icon: AlignRight},\n]\n// const OPTIONS_FACET_FRAME = [\n// {value: 'empty', icon: FrameEmpty},\n// {value: 'full', icon: FrameFull},\n// ]\nconst OPTIONS_LABELS_ROTATION = [\n { value: 'center', icon: Rotation0 },\n { value: '45deg', icon: Rotation45 },\n { value: '90deg', icon: Rotation90 }\n];\nconst OPTIONS_AXIS_LABEL_MODE = [\n { value: 'auto', text: 'Auto' },\n { value: 'custom', text: 'Custom' },\n { value: 'hidden', text: 'Hide' }\n];\nconst OPTIONS_SCALE = [\n { value: 'linear', text: 'Linear' },\n { value: 'log', text: 'Log' }\n];\nconst OPTIONS_CHART_FRAME = [\n { value: 'empty', icon: FrameEmpty },\n { value: 'left', icon: FrameLeft },\n { value: 'bottom', icon: FrameBottom },\n { value: 'left-bottom', icon: FrameLeftBottom },\n { value: 'full', icon: FrameFull }\n];\n\nconst inputGuide = computed(() => store.value.inputGuide.value)\nconst labelsInfo = computed(() => store.value.uniqueValuesData.value)\n\nconst reorderPrimaryOpen = ref(false);\nconst reorderSecondaryOpen = ref(false);\n\nconst defaultReorderPrimaryOpen = computed(() => store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen);\nconst defaultReorderSecondaryOpen = computed(() => store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen);\nonMounted(() => {\n if (defaultReorderPrimaryOpen.value) {\n reorderPrimaryOpen.value = true;\n }\n if (defaultReorderSecondaryOpen.value) {\n reorderSecondaryOpen.value = true;\n }\n})\nwatch(() => defaultReorderPrimaryOpen.value, (v) => {\n if (v) {\n reorderSecondaryOpen.value = false;\n reorderPrimaryOpen.value = true;\n }\n});\nwatch(() => defaultReorderSecondaryOpen.value, (v) => {\n if (v) {\n reorderPrimaryOpen.value = false;\n reorderSecondaryOpen.value = true;\n }\n});\n\nconst primaryGrouping = computed(() => store.value.reactive.optionsState.components.primaryGrouping?.selectorStates[0]?.selectedSource);\nconst secondaryGrouping = computed(() => store.value.reactive.optionsState.components.secondaryGrouping?.selectorStates[0]?.selectedSource);\n\nconst primaryGroups = computed(() => store.value.commonHelpersData.primaryGroups.value)\nconst secondaryGroups = computed(() => store.value.commonHelpersData.secondaryGroups.value)\n\nconst usedAesInMapping = computed(() => store.value.commonHelpersData.usedAesInMapping.value);\n\nconst mappingPrimary = ref(store.value.reactive.dataBindAes[primaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(primaryGroups.value));\nconst mappingSecondary = ref(store.value.reactive.dataBindAes[secondaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(secondaryGroups.value));\n\nconst primaryInfo = computed(() => {\n if (primaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(primaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[primaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: primaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {})\n };\n }\n});\nconst secondaryInfo = computed(() => {\n if (secondaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(secondaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[secondaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: secondaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {})\n };\n }\n});\n\nfunction updateOrder(value: AestheticMappingCategorical, sourceId: string) {\n store.value.reactive.dataBindAes[sourceId] = value;\n}\n\nconst OPTIONS_FACET_SHARED = [\n { text: 'X', value: 'x' },\n { text: 'Y', value: 'y' },\n { text: 'XY', value: 'xy' },\n { text: 'None', value: 'none' }\n];\n\nconst primaryOptions = computed(() => labelsInfo.value[primaryGrouping.value])\nconst xLabelsRotation = computed({\n get(){\n return getDiscreteLabelsRotation(settings.axisX.labelsRotation, primaryOptions.value?.options)\n },\n set(value:LabelsRotation) {\n settings.axisX.labelsRotation = value;\n }\n})\n</script>\n\n<template>\n <div class=\"axes-form\" @click=\"(e) => e.stopPropagation()\">\n <h3 class=\"axes-title\">\n Axes\n </h3>\n <div class=\"axes-settings-list\">\n <!-- Chart title -->\n <collapsable-block title=\"Title\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.title.mode\"\n />\n </div>\n <div class=\"axes-settings-input\" v-if=\"settings.title.mode === 'custom'\">\n <pl-text-field\n label=\"Chart title\"\n placeholder=\"Chart title\"\n v-model=\"settings.title.value\"\n />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Alignment</span>\n <btn-icon-group :options=\"OPTIONS_TITLE_ALIGN\" v-model=\"settings.title.position\"/>\n </div>\n<!-- <div class=\"axes-settings-options-row\">-->\n<!-- <span>Facet frame style</span>-->\n<!-- <btn-icon-group :options=\"OPTIONS_FACET_FRAME\" v-model=\"settings.title.facetTitleFrame\"/>-->\n<!-- </div>-->\n </collapsable-block>\n <!-- X axis settings-->\n <collapsable-block title=\"X-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row\" v-if=\"primaryGroups.length > 1\">\n <span>Primary groups order: </span>\n <aes-button :data=\"{type: 'data', value: null}\" @click=\"reorderPrimaryOpen = true\" />\n <template v-if=\"reorderPrimaryOpen && primaryInfo\">\n <form-wrapper\n title=\"Reorder primary groups\"\n back-title=\"Axes Settings\"\n @form:open=\"store.reactive.tabDefaultState['axes'].reorderPrimaryOpen = false\"\n @form:close=\"reorderPrimaryOpen = false\"\n >\n <aes-data-mapping\n :column-value-labels=\"primaryInfo.labels\"\n :data-column-label=\"primaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[primaryGrouping]\"\n allow-reordering\n allow-hiding\n :allow-null-option=\"settings.axisX.allowNullPrimaryGroups\"\n v-model=\"mappingPrimary\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, primaryGrouping)\"\n />\n </form-wrapper>\n </template>\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"primaryGroups.length > 1\">\n <span>Allow null primary group</span>\n <pl-toggle-switch v-model=\"settings.axisX.allowNullPrimaryGroups\" />\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"secondaryGroups.length > 1\">\n <span>Secondary groups order: </span>\n <aes-button :data=\"{type: 'data', value: null}\" @click=\"reorderSecondaryOpen = true\" />\n <template v-if=\"reorderSecondaryOpen && secondaryInfo\">\n <form-wrapper\n title=\"Reorder secondary groups\"\n back-title=\"Axes Settings\"\n @form:open=\"store.reactive.tabDefaultState['axes'].reorderSecondaryOpen = false\"\n @form:close=\"reorderSecondaryOpen = false\"\n >\n <aes-data-mapping\n :column-value-labels=\"secondaryInfo.labels\"\n :data-column-label=\"secondaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[secondaryGrouping]\"\n allow-reordering\n allow-hiding\n :allow-null-option=\"settings.axisX.allowNullSecondaryGroups\"\n v-model=\"mappingSecondary\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, secondaryGrouping)\"\n />\n </form-wrapper>\n </template>\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"secondaryGroups.length > 1\">\n <span>Allow null secondary group</span>\n <pl-toggle-switch v-model=\"settings.axisX.allowNullSecondaryGroups\" />\n </div>\n <div class=\"axes-settings-options-row\" v-if=\"store.reactive.chartType === 'discrete'\">\n <span>Labels rotation</span>\n <btn-icon-group :options=\"OPTIONS_LABELS_ROTATION\" v-model=\"xLabelsRotation\" />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.axisX.titleMode\"\n />\n </div>\n <div v-if=\"settings.axisX.titleMode === 'custom'\">\n <pl-text-field\n label=\"Text\"\n placeholder=\"Type\"\n v-model=\"settings.axisX.customTitle\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <pl-toggle-switch v-model=\"settings.axisX.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Lines between categories</span>\n <pl-toggle-switch v-model=\"settings.axisX.linesBetweenCategories\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <pl-toggle-switch v-model=\"settings.axisX.ticks\" />\n </div>\n </collapsable-block>\n <!-- Y axis settings-->\n <collapsable-block title=\"Y-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n v-model=\"settings.axisY.titleMode\"\n />\n </div>\n <div v-if=\"settings.axisY.titleMode === 'custom'\">\n <pl-text-field\n label=\"Text\"\n placeholder=\"Type\"\n v-model=\"settings.axisY.customTitle\"\n />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Scale\"\n :options=\"OPTIONS_SCALE\"\n v-model=\"settings.axisY.scale\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <pl-toggle-switch v-model=\"settings.axisY.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <pl-toggle-switch v-model=\"settings.axisY.ticks\" />\n </div>\n </collapsable-block>\n <!-- Facet settings-->\n <div class=\"other\">\n <div class=\"axes-settings-options-row\">\n <span>Frame</span>\n <btn-icon-group :options=\"OPTIONS_CHART_FRAME\" v-model=\"settings.other.frame\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Reverse axes</span>\n <pl-toggle-switch v-model=\"settings.other.reverse\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <Slider\n :style=\"{width: '100%'}\"\n label=\"Facet column count\"\n :min=\"1\"\n :max=\"6\"\n :step=\"1\"\n :breakpoints=\"true\"\n mode=\"input\"\n v-model=\"settings.other.facetColumns\"\n />\n </div>\n <div class=\"axes-settings-options-row block\">\n <pl-btn-group\n label=\"Facet shared by\"\n :options=\"OPTIONS_FACET_SHARED\"\n v-model=\"settings.other.facetSharedBy\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["store","useStore","settings","blockSettings","OPTIONS_TITLE_ALIGN","AlignLeft","AlignCenter","AlignRight","OPTIONS_LABELS_ROTATION","Rotation0","Rotation45","Rotation90","OPTIONS_AXIS_LABEL_MODE","OPTIONS_SCALE","OPTIONS_CHART_FRAME","FrameEmpty","FrameLeft","FrameBottom","FrameLeftBottom","FrameFull","inputGuide","computed","labelsInfo","reorderPrimaryOpen","ref","reorderSecondaryOpen","defaultReorderPrimaryOpen","defaultReorderSecondaryOpen","onMounted","watch","v","primaryGrouping","_b","_a","secondaryGrouping","primaryGroups","secondaryGroups","usedAesInMapping","mappingPrimary","createDefaultMapping","mappingSecondary","primaryInfo","selectedSourceInfo","valueLabels","res","secondaryInfo","updateOrder","value","sourceId","OPTIONS_FACET_SHARED","primaryOptions","xLabelsRotation","getDiscreteLabelsRotation"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DendroForm.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/forms/DataMappingForm/DendroForm.vue"],"names":[],"mappings":";AAizBA,wBAMG"}
1
+ {"version":3,"file":"DendroForm.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/forms/DataMappingForm/DendroForm.vue"],"names":[],"mappings":";AA+yBA,wBAMG"}