@milaboratories/graph-maker 1.1.200 → 1.1.202

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 (41) hide show
  1. package/dist/components/Chart.vue.d.ts +3 -1
  2. package/dist/components/Chart.vue.d.ts.map +1 -1
  3. package/dist/components/Chart.vue.js +142 -125
  4. package/dist/components/Chart.vue.js.map +1 -1
  5. package/dist/components/DragAndDrop/DndBasket.vue.d.ts.map +1 -1
  6. package/dist/components/DragAndDrop/DndBasket.vue.js +39 -39
  7. package/dist/components/DragAndDrop/DndBasket.vue.js.map +1 -1
  8. package/dist/components/Loading.vue.d.ts +3 -0
  9. package/dist/components/Loading.vue.d.ts.map +1 -1
  10. package/dist/components/Loading.vue.js +19 -27
  11. package/dist/components/Loading.vue.js.map +1 -1
  12. package/dist/components/SettingsTabs/index.vue.d.ts.map +1 -1
  13. package/dist/components/SettingsTabs/index.vue.js +13 -13
  14. package/dist/components/SettingsTabs/index.vue.js.map +1 -1
  15. package/dist/constantsCommon.d.ts +2 -1
  16. package/dist/constantsCommon.d.ts.map +1 -1
  17. package/dist/constantsCommon.js +138 -126
  18. package/dist/constantsCommon.js.map +1 -1
  19. package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +3 -2
  20. package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
  21. package/dist/forms/DataMappingForm/DendroForm.vue.js +42 -42
  22. package/dist/forms/DataMappingForm/DendroForm.vue.js.map +1 -1
  23. package/dist/forms/DataMappingForm/DiscreteForm.vue.js +9 -8
  24. package/dist/forms/DataMappingForm/DiscreteForm.vue.js.map +1 -1
  25. package/dist/forms/DataMappingForm/useBaskets.js +31 -31
  26. package/dist/forms/DataMappingForm/useBaskets.js.map +1 -1
  27. package/dist/index.js +1 -1
  28. package/dist/index.vue.d.ts.map +1 -1
  29. package/dist/index.vue.js +114 -106
  30. package/dist/index.vue.js.map +1 -1
  31. package/dist/store.d.ts +2 -2
  32. package/dist/store.d.ts.map +1 -1
  33. package/dist/store.js +29 -29
  34. package/dist/store.js.map +1 -1
  35. package/dist/types.d.ts +33 -1
  36. package/dist/types.d.ts.map +1 -1
  37. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +6 -5
  38. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
  39. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +25 -24
  40. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
  41. package/package.json +3 -3
@@ -2,13 +2,13 @@ import { toRef as N, computed as c, shallowRef as A, ref as S } from "vue";
2
2
  import { MAX_SEARCH_OPTIONS_LIST_LENGTH as h } from "../../constantsCommon.js";
3
3
  import { getAllInputsOptions as X, getFreeMetaOptions as j, getFreeMandatoryOptions as z, getChipInfo as J, toSimpleSingle as Q, toSimpleMulti as T, toFiltersMulti as Y } from "./utils.js";
4
4
  function K(l, F, I, D, v, O) {
5
- const o = l.value.reactive.optionsState, p = N(l.value.reactive, "optionsState"), u = c(() => l.value.inputGuide.value);
5
+ const n = l.value.reactive.optionsState, p = N(l.value.reactive, "optionsState"), a = c(() => l.value.inputGuide.value);
6
6
  function R(e) {
7
7
  return Q(
8
8
  p,
9
9
  e,
10
10
  l.value.controller,
11
- l.value.columnsDataStore
11
+ l.value.columnsDataStore.value
12
12
  );
13
13
  }
14
14
  function y(e) {
@@ -16,7 +16,7 @@ function K(l, F, I, D, v, O) {
16
16
  p,
17
17
  e,
18
18
  l.value.controller,
19
- l.value.columnsDataStore
19
+ l.value.columnsDataStore.value
20
20
  );
21
21
  }
22
22
  function V(e) {
@@ -24,8 +24,8 @@ function K(l, F, I, D, v, O) {
24
24
  p,
25
25
  e,
26
26
  l.value.controller,
27
- l.value.columnsDataStore,
28
- u
27
+ l.value.columnsDataStore.value,
28
+ a
29
29
  );
30
30
  }
31
31
  const b = A({
@@ -33,29 +33,29 @@ function K(l, F, I, D, v, O) {
33
33
  }), r = S({
34
34
  ...I.reduce((e, t) => (e[t] = V(t), e), {}),
35
35
  ...D.reduce((e, t) => (e[t] = y(t), e), {})
36
- }), f = c(() => X(o, u)), M = c(
37
- () => j(u, v)
36
+ }), f = c(() => X(n, a)), M = c(
37
+ () => j(a, v)
38
38
  ), q = c(
39
- () => z(u, v)
39
+ () => z(a, v)
40
40
  ), s = S(null), g = c(() => {
41
41
  const e = /* @__PURE__ */ new Set();
42
42
  return v.forEach((t) => {
43
- f.value[t].forEach((n) => {
44
- e.add(n.value);
45
- }), o.components[t].selectorStates.forEach((n) => {
46
- e.add(n.selectedSource);
43
+ f.value[t].forEach((u) => {
44
+ e.add(u.value);
45
+ }), n.components[t].selectorStates.forEach((u) => {
46
+ e.add(u.selectedSource);
47
47
  });
48
- }), J(u.value, o.components, l.value.uniqueValuesData.value, [...e]);
48
+ }), J(a.value, n.components, l.value.uniqueValuesData.value, [...e]);
49
49
  });
50
50
  function w(e) {
51
- return o.components[e].selectorStates.reduce(
52
- (t, n) => (n.type !== "range" && (t[n.selectedSource] = n.selectedFilterValues ?? []), t),
51
+ return n.components[e].selectorStates.reduce(
52
+ (t, u) => (u.type !== "range" && (t[u.selectedSource] = u.selectedFilterValues ?? []), t),
53
53
  {}
54
54
  );
55
55
  }
56
56
  function C(e) {
57
- return o.components[e].selectorStates.reduce(
58
- (t, n) => (t[n.selectedSource] = n.selectedFilterRange ? [n.selectedFilterRange.min, n.selectedFilterRange.max] : [0, 0], t),
57
+ return n.components[e].selectorStates.reduce(
58
+ (t, u) => (t[u.selectedSource] = u.selectedFilterRange ? [u.selectedFilterRange.min, u.selectedFilterRange.max] : [0, 0], t),
59
59
  {}
60
60
  );
61
61
  }
@@ -72,27 +72,27 @@ function K(l, F, I, D, v, O) {
72
72
  r.value[t] = e;
73
73
  }
74
74
  function _(e) {
75
- return u.value.components[e].stateConsistency;
75
+ return a.value.components[e].stateConsistency;
76
76
  }
77
77
  function G(e) {
78
- return !u.value.readyData || f.value[e].length === 0 || s.value !== null && !g.value[s.value].availableBasketIds.has(e);
78
+ return !a.value.readyData || f.value[e].length === 0 || s.value !== null && !g.value[s.value].availableBasketIds.has(e);
79
79
  }
80
80
  async function H(e, t) {
81
- return l.value.columnsDataStore ? (await l.value.controller.getUniqueSourceValuesWithLabels(l.value.columnsDataStore, u.value, e, h, t || void 0)).values : Promise.resolve([]);
81
+ return l.value.columnsDataStore.value ? (await l.value.controller.getUniqueSourceValuesWithLabels(l.value.columnsDataStore.value, a.value, e, h, t || void 0)).values : Promise.resolve([]);
82
82
  }
83
83
  async function U(e, t) {
84
- return l.value.columnsDataStore ? (await l.value.controller.getUniqueSourceValuesWithLabels(l.value.columnsDataStore, u.value, e, 1, void 0, t)).values : Promise.resolve([]);
84
+ return l.value.columnsDataStore.value ? (await l.value.controller.getUniqueSourceValuesWithLabels(l.value.columnsDataStore.value, a.value, e, 1, void 0, t)).values : Promise.resolve([]);
85
85
  }
86
86
  async function W(e) {
87
- return l.value.columnsDataStore ? l.value.controller.getUniqueSourceValuesWithLabels(l.value.columnsDataStore, u.value, e, h) : Promise.resolve({ values: [], overflow: !1 });
87
+ return l.value.columnsDataStore.value ? l.value.controller.getUniqueSourceValuesWithLabels(l.value.columnsDataStore.value, a.value, e, h) : Promise.resolve({ values: [], overflow: !1 });
88
88
  }
89
89
  const k = c(
90
90
  () => v.map((e) => {
91
91
  var m;
92
- const t = u.value.components[e], n = e === "filters" || e === "highlight", i = {
92
+ const t = a.value.components[e], u = e === "filters" || e === "highlight", i = {
93
93
  id: e,
94
94
  title: O[e],
95
- isFilter: n,
95
+ isFilter: u,
96
96
  sortable: e === "tooltipContent",
97
97
  multiple: t.multipleSelectors,
98
98
  required: t.required,
@@ -108,15 +108,15 @@ function K(l, F, I, D, v, O) {
108
108
  listeners: {
109
109
  "drop-item": L,
110
110
  "remove-item": P,
111
- reorder: (a) => x(a, e)
111
+ reorder: (o) => x(o, e)
112
112
  }
113
113
  };
114
- return n && (i.selectedFilters = w(e), i.selectedRanges = C(e), i.listeners["select-filter-value"] = (a) => {
115
- const d = o.components[e].selectorStates[a.idx];
116
- d.type = "equals", d.selectedFilterValues = a.v;
117
- }, i.listeners["select-filter-range"] = (a) => {
118
- const d = o.components[e].selectorStates[a.idx];
119
- d.type = "range", d.selectedFilterRange = a.v;
114
+ return u && (i.selectedFilters = w(e), i.selectedRanges = C(e), i.listeners["select-filter-value"] = (o) => {
115
+ const d = n.components[e].selectorStates[o.idx];
116
+ d.type = "equals", d.selectedFilterValues = o.v;
117
+ }, i.listeners["select-filter-range"] = (o) => {
118
+ const d = n.components[e].selectorStates[o.idx];
119
+ d.type = "range", d.selectedFilterRange = o.v;
120
120
  }), i;
121
121
  })
122
122
  );
@@ -1 +1 @@
1
- {"version":3,"file":"useBaskets.js","sources":["../../../src/forms/DataMappingForm/useBaskets.ts"],"sourcesContent":["import type {\n ChartType,\n ComponentStateFilter,\n InputGuide,\n InputNamesByChartType,\n InputState,\n SelectorStateFilter,\n} from '@milaboratories/pf-plots';\nimport type { ComputedRef, Ref } from 'vue';\nimport { computed, ref, shallowRef, toRef } from 'vue';\nimport type {\n BasketProps,\n ChipInfo,\n DropItemEvent,\n RemoveItemEvent,\n} from '../../components/DragAndDrop/types';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../../constantsCommon';\nimport type { ComputedStore } from '../../store';\nimport type {\n AllStateOptions } from './utils';\nimport {\n getAllInputsOptions, getChipInfo, getFreeMandatoryOptions, getFreeMetaOptions,\n toFiltersMulti,\n toSimpleMulti,\n toSimpleSingle,\n} from './utils';\n\nexport function useBaskets<\n T extends InputState,\n BasketIds extends keyof T['components'] & InputNamesByChartType[ChartType],\n DataIds extends keyof T['components'] & InputNamesByChartType[ChartType],\n>(\n store: ComputedStore,\n dataKeys: DataIds[],\n filterBasketKeys: BasketIds[],\n simpleBasketKeys: BasketIds[],\n BASKETS: BasketIds[],\n BASKET_LABELS: Record<BasketIds, string>,\n): {\n draggedId: Ref<string | null>;\n cleanDraggedId: () => void;\n basketsData: ComputedRef<BasketProps[]>;\n freeMetaOptions: ComputedRef<ReturnType<typeof getFreeMetaOptions<T>>>;\n freeMandatoryOptions: ComputedRef<ReturnType<typeof getFreeMandatoryOptions<T>>>;\n chipInfo: ComputedRef<Record<string, ChipInfo>>;\n dataStateValues: Ref<Record<DataIds, Ref<string | undefined>>>;\n dataOptions: ComputedRef<AllStateOptions<T>>;\n } {\n const state = store.value.reactive.optionsState as T;\n const stateRef = toRef(store.value.reactive, 'optionsState');\n\n const inputGuide = computed(() => store.value.inputGuide.value) as Ref<InputGuide<T>>;\n\n function getSimpleSingle(inputName: keyof InputState['components']) {\n return toSimpleSingle(\n stateRef,\n inputName,\n store.value.controller,\n store.value.columnsDataStore,\n );\n }\n\n function getSimpleMulti(inputName: keyof InputState['components']) {\n return toSimpleMulti(\n stateRef,\n inputName,\n store.value.controller,\n store.value.columnsDataStore,\n );\n }\n\n function getFiltersMulti(inputName: keyof InputState['components']) {\n return toFiltersMulti(\n stateRef,\n inputName,\n store.value.controller,\n store.value.columnsDataStore,\n inputGuide,\n );\n }\n\n const dataStateValues = shallowRef({\n ...dataKeys.reduce((res: Record<DataIds, Ref<string | undefined>>, key: DataIds) => {\n res[key] = getSimpleSingle(key as keyof InputState['components']);\n return res;\n }, {} as Record<DataIds, Ref<string | undefined>>),\n });\n\ntype InputStateValues = Record<BasketIds, Ref<string[]>>;\n\nconst inputStateValues = ref<InputStateValues>({\n ...filterBasketKeys.reduce((res: InputStateValues, key) => {\n res[key] = getFiltersMulti(key as keyof InputState['components']);\n return res;\n }, {} as InputStateValues),\n ...simpleBasketKeys.reduce((res: InputStateValues, key) => {\n res[key] = getSimpleMulti(key as keyof InputState['components']);\n return res;\n }, {} as InputStateValues),\n});\n\nconst options = computed(() => {\n return getAllInputsOptions(state, inputGuide);\n});\n\nconst freeMetaOptions = computed(() =>\n getFreeMetaOptions(inputGuide, BASKETS),\n);\nconst freeMandatoryOptions = computed(() =>\n getFreeMandatoryOptions(inputGuide, BASKETS),\n);\n\nconst draggedId = ref<string | null>(null);\nconst chipInfo = computed<Record<string, ChipInfo>>(() => {\n const freeAndSelectedIds = new Set<string>();\n BASKETS.forEach((name) => {\n options.value[name].forEach((option) => {\n freeAndSelectedIds.add(option.value);\n });\n state.components[name].selectorStates.forEach((selectorState) => {\n freeAndSelectedIds.add(selectorState.selectedSource);\n });\n });\n return getChipInfo(inputGuide.value, state.components, store.value.uniqueValuesData.value, [...freeAndSelectedIds]);\n});\n\nfunction getFiltersValues(name: BasketIds) {\n return (state.components[name] as ComponentStateFilter).selectorStates.reduce(\n (res: Record<string, string[]>, filterState) => {\n if (filterState.type !== 'range') {\n res[filterState.selectedSource] = filterState.selectedFilterValues ?? [];\n }\n return res;\n },\n {},\n );\n}\n\nfunction getFiltersRanges(name: BasketIds) {\n return (state.components[name] as ComponentStateFilter).selectorStates.reduce(\n (res: Record<string, [number, number]>, filterState) => {\n res[filterState.selectedSource] = filterState.selectedFilterRange\n ? [filterState.selectedFilterRange.min, filterState.selectedFilterRange.max]\n : [0, 0];\n return res;\n },\n {},\n );\n}\n\nfunction commonDropItemHandler(event: DropItemEvent<BasketIds>) {\n inputStateValues.value[event.id] = [\n ...inputStateValues.value[event.id],\n event.draggedId,\n ];\n draggedId.value = null;\n}\n\nfunction commonRemoveItem(event: RemoveItemEvent<BasketIds>) {\n inputStateValues.value[event.basketId]\n = inputStateValues.value[event.basketId].filter((op: string) => op !== event.chipId);\n}\n\nfunction commonReorder(data: ChipInfo['id'][], name: BasketIds) {\n inputStateValues.value[name] = data;\n}\n\nfunction getConsistency(basketId: BasketIds) {\n return inputGuide.value.components[basketId].stateConsistency;\n}\n\nfunction getDisabled(basketId: BasketIds) {\n return (\n !inputGuide.value.readyData\n || options.value[basketId].length === 0\n || (draggedId.value !== null\n && !chipInfo.value[draggedId.value].availableBasketIds.has(basketId))\n );\n}\n\nasync function searchFilterOptions(sourceId: string, searchStr: string): Promise<{ value: string; label: string }[]> {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchStr || undefined)).values;\n}\n\nasync function searchSelectedFilterValueOptions(sourceId: string, selectedValue: string): Promise<{ value: string; label: string }[]> {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, inputGuide.value, sourceId, 1, undefined, selectedValue)).values;\n}\n\nasync function loadOptions(sourceId: string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve({ values: [], overflow: false });\n }\n return store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH);\n}\n\nconst basketsData = computed<BasketProps[]>(() =>\n BASKETS.map((name) => {\n const guide = inputGuide.value.components[name];\n const isFilter = name === 'filters' || name === 'highlight';\n\n const basketProps: BasketProps = {\n id: name,\n title: BASKET_LABELS[name],\n isFilter,\n sortable: name === 'tooltipContent',\n multiple: guide.multipleSelectors,\n required: guide.required,\n disabled: getDisabled(name),\n readonly: store.value.readonlyInputs?.includes(name) ?? false,\n consistency: getConsistency(name),\n draggedId: draggedId.value,\n droppedIds: inputStateValues.value[name],\n info: chipInfo.value,\n\n searchFn: searchFilterOptions,\n searchSelectedValueFn: searchSelectedFilterValueOptions,\n loadOptionsFn: loadOptions,\n\n listeners: {\n 'drop-item': commonDropItemHandler,\n 'remove-item': commonRemoveItem,\n 'reorder': (data: ChipInfo['id'][]) => commonReorder(data, name),\n },\n };\n if (isFilter) {\n basketProps.selectedFilters = getFiltersValues(name);\n basketProps.selectedRanges = getFiltersRanges(name);\n basketProps.listeners['select-filter-value'] = (data) => {\n const selectorState = state.components[name].selectorStates[data.idx] as SelectorStateFilter;\n selectorState.type = 'equals';\n selectorState.selectedFilterValues = data.v as string[];\n };\n basketProps.listeners['select-filter-range'] = (data) => {\n const selectorState = state.components[name].selectorStates[data.idx] as SelectorStateFilter;\n selectorState.type = 'range';\n selectorState.selectedFilterRange = data.v as { min: number; max: number } | undefined;\n };\n }\n return basketProps;\n }),\n);\n\nfunction cleanDraggedId() {\n draggedId.value = null;\n}\n\nreturn {\n draggedId,\n cleanDraggedId,\n basketsData,\n freeMetaOptions,\n freeMandatoryOptions,\n chipInfo,\n dataStateValues,\n dataOptions: options,\n};\n}\n"],"names":["useBaskets","store","dataKeys","filterBasketKeys","simpleBasketKeys","BASKETS","BASKET_LABELS","state","stateRef","toRef","inputGuide","computed","getSimpleSingle","inputName","toSimpleSingle","getSimpleMulti","toSimpleMulti","getFiltersMulti","toFiltersMulti","dataStateValues","shallowRef","res","key","inputStateValues","ref","options","getAllInputsOptions","freeMetaOptions","getFreeMetaOptions","freeMandatoryOptions","getFreeMandatoryOptions","draggedId","chipInfo","freeAndSelectedIds","name","option","selectorState","getChipInfo","getFiltersValues","filterState","getFiltersRanges","commonDropItemHandler","event","commonRemoveItem","op","commonReorder","data","getConsistency","basketId","getDisabled","searchFilterOptions","sourceId","searchStr","MAX_SEARCH_OPTIONS_LIST_LENGTH","searchSelectedFilterValueOptions","selectedValue","loadOptions","basketsData","guide","isFilter","basketProps","_a","cleanDraggedId"],"mappings":"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"}
1
+ {"version":3,"file":"useBaskets.js","sources":["../../../src/forms/DataMappingForm/useBaskets.ts"],"sourcesContent":["import type {\n ChartType,\n ComponentStateFilter,\n InputGuide,\n InputNamesByChartType,\n InputState,\n SelectorStateFilter,\n} from '@milaboratories/pf-plots';\nimport type { ComputedRef, Ref } from 'vue';\nimport { computed, ref, shallowRef, toRef } from 'vue';\nimport type {\n BasketProps,\n ChipInfo,\n DropItemEvent,\n RemoveItemEvent,\n} from '../../components/DragAndDrop/types';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../../constantsCommon';\nimport type { ComputedStore } from '../../store';\nimport type {\n AllStateOptions } from './utils';\nimport {\n getAllInputsOptions, getChipInfo, getFreeMandatoryOptions, getFreeMetaOptions,\n toFiltersMulti,\n toSimpleMulti,\n toSimpleSingle,\n} from './utils';\n\nexport function useBaskets<\n T extends InputState,\n BasketIds extends keyof T['components'] & InputNamesByChartType[ChartType],\n DataIds extends keyof T['components'] & InputNamesByChartType[ChartType],\n>(\n store: ComputedStore,\n dataKeys: DataIds[],\n filterBasketKeys: BasketIds[],\n simpleBasketKeys: BasketIds[],\n BASKETS: BasketIds[],\n BASKET_LABELS: Record<BasketIds, string>,\n): {\n draggedId: Ref<string | null>;\n cleanDraggedId: () => void;\n basketsData: ComputedRef<BasketProps[]>;\n freeMetaOptions: ComputedRef<ReturnType<typeof getFreeMetaOptions<T>>>;\n freeMandatoryOptions: ComputedRef<ReturnType<typeof getFreeMandatoryOptions<T>>>;\n chipInfo: ComputedRef<Record<string, ChipInfo>>;\n dataStateValues: Ref<Record<DataIds, Ref<string | undefined>>>;\n dataOptions: ComputedRef<AllStateOptions<T>>;\n } {\n const state = store.value.reactive.optionsState as T;\n const stateRef = toRef(store.value.reactive, 'optionsState');\n\n const inputGuide = computed(() => store.value.inputGuide.value) as Ref<InputGuide<T>>;\n\n function getSimpleSingle(inputName: keyof InputState['components']) {\n return toSimpleSingle(\n stateRef,\n inputName,\n store.value.controller,\n store.value.columnsDataStore.value,\n );\n }\n\n function getSimpleMulti(inputName: keyof InputState['components']) {\n return toSimpleMulti(\n stateRef,\n inputName,\n store.value.controller,\n store.value.columnsDataStore.value,\n );\n }\n\n function getFiltersMulti(inputName: keyof InputState['components']) {\n return toFiltersMulti(\n stateRef,\n inputName,\n store.value.controller,\n store.value.columnsDataStore.value,\n inputGuide,\n );\n }\n\n const dataStateValues = shallowRef({\n ...dataKeys.reduce((res: Record<DataIds, Ref<string | undefined>>, key: DataIds) => {\n res[key] = getSimpleSingle(key as keyof InputState['components']);\n return res;\n }, {} as Record<DataIds, Ref<string | undefined>>),\n });\n\ntype InputStateValues = Record<BasketIds, Ref<string[]>>;\n\nconst inputStateValues = ref<InputStateValues>({\n ...filterBasketKeys.reduce((res: InputStateValues, key) => {\n res[key] = getFiltersMulti(key as keyof InputState['components']);\n return res;\n }, {} as InputStateValues),\n ...simpleBasketKeys.reduce((res: InputStateValues, key) => {\n res[key] = getSimpleMulti(key as keyof InputState['components']);\n return res;\n }, {} as InputStateValues),\n});\n\nconst options = computed(() => {\n return getAllInputsOptions(state, inputGuide);\n});\n\nconst freeMetaOptions = computed(() =>\n getFreeMetaOptions(inputGuide, BASKETS),\n);\nconst freeMandatoryOptions = computed(() =>\n getFreeMandatoryOptions(inputGuide, BASKETS),\n);\n\nconst draggedId = ref<string | null>(null);\nconst chipInfo = computed<Record<string, ChipInfo>>(() => {\n const freeAndSelectedIds = new Set<string>();\n BASKETS.forEach((name) => {\n options.value[name].forEach((option) => {\n freeAndSelectedIds.add(option.value);\n });\n state.components[name].selectorStates.forEach((selectorState) => {\n freeAndSelectedIds.add(selectorState.selectedSource);\n });\n });\n return getChipInfo(inputGuide.value, state.components, store.value.uniqueValuesData.value, [...freeAndSelectedIds]);\n});\n\nfunction getFiltersValues(name: BasketIds) {\n return (state.components[name] as ComponentStateFilter).selectorStates.reduce(\n (res: Record<string, string[]>, filterState) => {\n if (filterState.type !== 'range') {\n res[filterState.selectedSource] = filterState.selectedFilterValues ?? [];\n }\n return res;\n },\n {},\n );\n}\n\nfunction getFiltersRanges(name: BasketIds) {\n return (state.components[name] as ComponentStateFilter).selectorStates.reduce(\n (res: Record<string, [number, number]>, filterState) => {\n res[filterState.selectedSource] = filterState.selectedFilterRange\n ? [filterState.selectedFilterRange.min, filterState.selectedFilterRange.max]\n : [0, 0];\n return res;\n },\n {},\n );\n}\n\nfunction commonDropItemHandler(event: DropItemEvent<BasketIds>) {\n inputStateValues.value[event.id] = [\n ...inputStateValues.value[event.id],\n event.draggedId,\n ];\n draggedId.value = null;\n}\n\nfunction commonRemoveItem(event: RemoveItemEvent<BasketIds>) {\n inputStateValues.value[event.basketId]\n = inputStateValues.value[event.basketId].filter((op: string) => op !== event.chipId);\n}\n\nfunction commonReorder(data: ChipInfo['id'][], name: BasketIds) {\n inputStateValues.value[name] = data;\n}\n\nfunction getConsistency(basketId: BasketIds) {\n return inputGuide.value.components[basketId].stateConsistency;\n}\n\nfunction getDisabled(basketId: BasketIds) {\n return (\n !inputGuide.value.readyData\n || options.value[basketId].length === 0\n || (draggedId.value !== null\n && !chipInfo.value[draggedId.value].availableBasketIds.has(basketId))\n );\n}\n\nasync function searchFilterOptions(sourceId: string, searchStr: string): Promise<{ value: string; label: string }[]> {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve([]);\n }\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore.value, inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchStr || undefined)).values;\n}\n\nasync function searchSelectedFilterValueOptions(sourceId: string, selectedValue: string): Promise<{ value: string; label: string }[]> {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve([]);\n }\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore.value, inputGuide.value, sourceId, 1, undefined, selectedValue)).values;\n}\n\nasync function loadOptions(sourceId: string) {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve({ values: [], overflow: false });\n }\n return store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore.value, inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH);\n}\n\nconst basketsData = computed<BasketProps[]>(() =>\n BASKETS.map((name) => {\n const guide = inputGuide.value.components[name];\n const isFilter = name === 'filters' || name === 'highlight';\n\n const basketProps: BasketProps = {\n id: name,\n title: BASKET_LABELS[name],\n isFilter,\n sortable: name === 'tooltipContent',\n multiple: guide.multipleSelectors,\n required: guide.required,\n disabled: getDisabled(name),\n readonly: store.value.readonlyInputs?.includes(name) ?? false,\n consistency: getConsistency(name),\n draggedId: draggedId.value,\n droppedIds: inputStateValues.value[name],\n info: chipInfo.value,\n\n searchFn: searchFilterOptions,\n searchSelectedValueFn: searchSelectedFilterValueOptions,\n loadOptionsFn: loadOptions,\n\n listeners: {\n 'drop-item': commonDropItemHandler,\n 'remove-item': commonRemoveItem,\n 'reorder': (data: ChipInfo['id'][]) => commonReorder(data, name),\n },\n };\n if (isFilter) {\n basketProps.selectedFilters = getFiltersValues(name);\n basketProps.selectedRanges = getFiltersRanges(name);\n basketProps.listeners['select-filter-value'] = (data) => {\n const selectorState = state.components[name].selectorStates[data.idx] as SelectorStateFilter;\n selectorState.type = 'equals';\n selectorState.selectedFilterValues = data.v as string[];\n };\n basketProps.listeners['select-filter-range'] = (data) => {\n const selectorState = state.components[name].selectorStates[data.idx] as SelectorStateFilter;\n selectorState.type = 'range';\n selectorState.selectedFilterRange = data.v as { min: number; max: number } | undefined;\n };\n }\n return basketProps;\n }),\n);\n\nfunction cleanDraggedId() {\n draggedId.value = null;\n}\n\nreturn {\n draggedId,\n cleanDraggedId,\n basketsData,\n freeMetaOptions,\n freeMandatoryOptions,\n chipInfo,\n dataStateValues,\n dataOptions: options,\n};\n}\n"],"names":["useBaskets","store","dataKeys","filterBasketKeys","simpleBasketKeys","BASKETS","BASKET_LABELS","state","stateRef","toRef","inputGuide","computed","getSimpleSingle","inputName","toSimpleSingle","getSimpleMulti","toSimpleMulti","getFiltersMulti","toFiltersMulti","dataStateValues","shallowRef","res","key","inputStateValues","ref","options","getAllInputsOptions","freeMetaOptions","getFreeMetaOptions","freeMandatoryOptions","getFreeMandatoryOptions","draggedId","chipInfo","freeAndSelectedIds","name","option","selectorState","getChipInfo","getFiltersValues","filterState","getFiltersRanges","commonDropItemHandler","event","commonRemoveItem","op","commonReorder","data","getConsistency","basketId","getDisabled","searchFilterOptions","sourceId","searchStr","MAX_SEARCH_OPTIONS_LIST_LENGTH","searchSelectedFilterValueOptions","selectedValue","loadOptions","basketsData","guide","isFilter","basketProps","_a","cleanDraggedId"],"mappings":"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"}