@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.
- package/dist/components/Chart.vue.d.ts +3 -1
- package/dist/components/Chart.vue.d.ts.map +1 -1
- package/dist/components/Chart.vue.js +142 -125
- package/dist/components/Chart.vue.js.map +1 -1
- package/dist/components/DragAndDrop/DndBasket.vue.d.ts.map +1 -1
- package/dist/components/DragAndDrop/DndBasket.vue.js +39 -39
- package/dist/components/DragAndDrop/DndBasket.vue.js.map +1 -1
- package/dist/components/Loading.vue.d.ts +3 -0
- package/dist/components/Loading.vue.d.ts.map +1 -1
- package/dist/components/Loading.vue.js +19 -27
- package/dist/components/Loading.vue.js.map +1 -1
- package/dist/components/SettingsTabs/index.vue.d.ts.map +1 -1
- package/dist/components/SettingsTabs/index.vue.js +13 -13
- package/dist/components/SettingsTabs/index.vue.js.map +1 -1
- package/dist/constantsCommon.d.ts +2 -1
- package/dist/constantsCommon.d.ts.map +1 -1
- package/dist/constantsCommon.js +138 -126
- package/dist/constantsCommon.js.map +1 -1
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +3 -2
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/DataMappingForm/DendroForm.vue.js +42 -42
- package/dist/forms/DataMappingForm/DendroForm.vue.js.map +1 -1
- package/dist/forms/DataMappingForm/DiscreteForm.vue.js +9 -8
- package/dist/forms/DataMappingForm/DiscreteForm.vue.js.map +1 -1
- package/dist/forms/DataMappingForm/useBaskets.js +31 -31
- package/dist/forms/DataMappingForm/useBaskets.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.vue.d.ts.map +1 -1
- package/dist/index.vue.js +114 -106
- package/dist/index.vue.js.map +1 -1
- package/dist/store.d.ts +2 -2
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +29 -29
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +33 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +6 -5
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +25 -24
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
- package/package.json +3 -3
|
@@ -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
|
|
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
|
-
|
|
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(
|
|
37
|
-
() => j(
|
|
36
|
+
}), f = c(() => X(n, a)), M = c(
|
|
37
|
+
() => j(a, v)
|
|
38
38
|
), q = c(
|
|
39
|
-
() => z(
|
|
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((
|
|
44
|
-
e.add(
|
|
45
|
-
}),
|
|
46
|
-
e.add(
|
|
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(
|
|
48
|
+
}), J(a.value, n.components, l.value.uniqueValuesData.value, [...e]);
|
|
49
49
|
});
|
|
50
50
|
function w(e) {
|
|
51
|
-
return
|
|
52
|
-
(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
|
|
58
|
-
(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
|
|
75
|
+
return a.value.components[e].stateConsistency;
|
|
76
76
|
}
|
|
77
77
|
function G(e) {
|
|
78
|
-
return !
|
|
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,
|
|
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,
|
|
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,
|
|
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 =
|
|
92
|
+
const t = a.value.components[e], u = e === "filters" || e === "highlight", i = {
|
|
93
93
|
id: e,
|
|
94
94
|
title: O[e],
|
|
95
|
-
isFilter:
|
|
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: (
|
|
111
|
+
reorder: (o) => x(o, e)
|
|
112
112
|
}
|
|
113
113
|
};
|
|
114
|
-
return
|
|
115
|
-
const d =
|
|
116
|
-
d.type = "equals", d.selectedFilterValues =
|
|
117
|
-
}, i.listeners["select-filter-range"] = (
|
|
118
|
-
const d =
|
|
119
|
-
d.type = "range", d.selectedFilterRange =
|
|
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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"}
|