@milaboratories/graph-maker 1.1.213 → 1.1.214

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.
@@ -36,7 +36,7 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
36
36
  const P = p(() => {
37
37
  var t;
38
38
  return (t = o.value.reactive.optionsState.components.tabBy) == null ? void 0 : t.selectorStates[0];
39
- }), m = p(() => {
39
+ }), v = p(() => {
40
40
  var t;
41
41
  return (t = P.value) == null ? void 0 : t.selectedSource;
42
42
  }), G = p(() => {
@@ -45,9 +45,9 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
45
45
  }), L = p(() => {
46
46
  var t;
47
47
  return (t = o.value.reactive.optionsState.components.filters) == null ? void 0 : t.selectorStates;
48
- }), v = h(G.value);
49
- y(() => m.value, (t, e) => {
50
- t !== e && (v.value = G.value);
48
+ }), m = h(G.value);
49
+ y(() => v.value, (t, e) => {
50
+ t !== e && (m.value = G.value);
51
51
  }, { immediate: !0 });
52
52
  async function W(t) {
53
53
  var a;
@@ -68,17 +68,17 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
68
68
  }
69
69
  const f = h();
70
70
  y([
71
- () => m.value,
71
+ () => v.value,
72
72
  () => o.value.loading.inputGuide
73
73
  ], async ([t, e]) => {
74
74
  t === void 0 || e || !o.value.columnsDataStore.value || (f.value = await W(t));
75
75
  }, { immediate: !0 }), y(() => f.value, async (t) => {
76
- if (m.value === void 0 || v.value !== void 0 || t === void 0)
76
+ if (v.value === void 0 || m.value !== void 0 || t === void 0)
77
77
  return;
78
78
  let e = t;
79
- if (t === null && (e = await F(m.value, "")), e != null && e.length) {
79
+ if (t === null && (e = await F(v.value, "")), e != null && e.length) {
80
80
  const l = e[0].value;
81
- v.value = l, b(l);
81
+ m.value = l, b(l);
82
82
  }
83
83
  }, { immediate: !0 });
84
84
  function b(t) {
@@ -187,25 +187,25 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
187
187
  ])]),
188
188
  _: 1
189
189
  }, 8, ["modelValue"]),
190
- m.value ? (s(), w("div", me, [
190
+ v.value ? (s(), w("div", me, [
191
191
  f.value || f.value === void 0 && r(o).loading.inputGuide ? (s(), d(r(ee), {
192
192
  key: 0,
193
- modelValue: v.value,
193
+ modelValue: m.value,
194
194
  "onUpdate:modelValue": [
195
- e[2] || (e[2] = (a) => v.value = a),
195
+ e[2] || (e[2] = (a) => m.value = a),
196
196
  e[3] || (e[3] = (a) => b(a))
197
197
  ],
198
198
  label: "Show for",
199
199
  options: f.value
200
200
  }, null, 8, ["modelValue", "options"])) : (s(), d(r(te), {
201
201
  key: 1,
202
- modelValue: v.value,
202
+ modelValue: m.value,
203
203
  "onUpdate:modelValue": [
204
- e[4] || (e[4] = (a) => v.value = a),
204
+ e[4] || (e[4] = (a) => m.value = a),
205
205
  e[5] || (e[5] = (a) => b(a))
206
206
  ],
207
207
  label: "Show for",
208
- "options-search": (a, i) => F(m.value, a, i)
208
+ "options-search": (a, i) => F(v.value, a, i)
209
209
  }, null, 8, ["modelValue", "options-search"]))
210
210
  ])) : c("", !0),
211
211
  S("div", {
@@ -223,11 +223,11 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
223
223
  }, null, 2),
224
224
  C(se, {
225
225
  graphStatus: n.graphStatus,
226
- top: 0,
226
+ top: v.value ? 24 : 0,
227
227
  bottom: 11,
228
228
  customStatusText: n.customStatusText,
229
229
  errorInfo: n.errorInfo
230
- }, null, 8, ["graphStatus", "customStatusText", "errorInfo"]),
230
+ }, null, 8, ["graphStatus", "top", "customStatusText", "errorInfo"]),
231
231
  r(o).reactive.chartType === "dendro" && n.chartData && r(o).reactive.layersSettings.dendro.showTable ? (s(), d(ae, {
232
232
  key: 0,
233
233
  chartData: n.chartData,
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.vue.js","sources":["../../src/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartInterface, ErrorInfo } from '@milaboratories/miplots4';\nimport type { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport type { ListOption } from '@platforma-sdk/ui-vue';\nimport { PlAutocomplete, PlBtnGhost, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../components/DendroTable.vue';\nimport DendroTooltip from '../components/DendroTooltip.vue';\nimport LassoControls from '../components/LassoControls/index.vue';\nimport Zoom from '../components/Zoom/index.vue';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../constantsCommon.ts';\nimport EditIcon from '../icons/EditIcon.vue';\nimport { useStore } from '../store.ts';\nimport type { GraphStatus, StatusTextData } from '../types.ts';\nimport GraphStatusScreen from './GraphStatusScreen.vue';\n\nconst emit = defineEmits(['graph-title-update', 'dendro-node-select', 'dendro-tooltip-btn-click']);\n\nconst store = useStore();\n\nconst props = defineProps<{\n graphStatus: GraphStatus;\n graphTitle: string;\n dendroTooltipButton?: string;\n chartData: Record<string, unknown> | null;\n chartRef: ChartInterface | null;\n errorInfo: ErrorInfo | null;\n customStatusText?: Partial<StatusTextData>;\n allowTitleEditing?: boolean;\n isScatterplotZoomChanged?: boolean;\n}>();\n\nconst title = ref(props.graphTitle);\n// title can be updated from graph-maker settings\nwatch(() => props.graphTitle, (graphTitle) => {\n title.value = graphTitle;\n});\n\nconst tabByState = computed(() => store.value.reactive.optionsState.components.tabBy?.selectorStates[0] as SelectorStateFilter | undefined);\nconst tabBySource = computed(() => tabByState.value?.selectedSource);\nconst tabByFilterValue = computed(() => tabByState.value?.selectedFilterValues?.[0]);\nconst filtersStates = computed(() => store.value.reactive.optionsState.components.filters?.selectorStates as SelectorStateFilter[]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch(() => tabBySource.value, (value, prevValue) => { // tabBy column changed, needs to update selected value\n if (value !== prevValue) {\n tabByLocalValue.value = tabByFilterValue.value;\n }\n}, { immediate: true });\n\n// try to load full options list, without search query; if result is not overflow, use values from it in regular dropdown, no autocomplete;\nasync function loadOptions(sourceId: string) {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n return Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore.value,\n store.value.inputGuide.value,\n sourceId,\n MAX_SEARCH_OPTIONS_LIST_LENGTH,\n );\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[] | null | undefined>();\nwatch([\n () => tabBySource.value,\n () => store.value.loading.inputGuide,\n], async ([v, loading]) => {\n if (v === undefined || loading || !store.value.columnsDataStore.value) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n}, { immediate: true });\n\nwatch(() => preloadedOptions.value, async (opts) => {\n if (\n tabBySource.value === undefined // no tabBy selected\n || tabByLocalValue.value !== undefined // tabBy selected and has selected value\n || opts === undefined // options not loaded yet\n ) {\n return;\n }\n let availableOptions = opts;\n if (opts === null) { // options loaded but too many unique values\n availableOptions = await searchFilterOptions(tabBySource.value, '');\n }\n if (availableOptions?.length) {\n const nextFilterValue = availableOptions[0].value as string;\n tabByLocalValue.value = nextFilterValue;\n onFilterValueUpdate(nextFilterValue);\n }\n}, { immediate: true });\n\nfunction onFilterValueUpdate(value: string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value],\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\n// search options for autocomplete component; use label-mode search for options and value-mode for search of label of selected by default value;\nasync function searchFilterOptions(sourceId: string, searchStr: string, type: 'value' | 'label' = 'label') {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n const results = await Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n return searchStr ? results.filter((v) => v.label.toLowerCase().includes(searchStr.toLowerCase())) : results;\n }\n const searchLabelStr = type === 'label' ? searchStr : undefined;\n const searchValueStr = type === 'value' ? searchStr : undefined;\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore.value, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchLabelStr, searchValueStr)).values;\n}\n\n// search by value, not by label;\nasync function searchSelectedFilterValueOptions(sourceId: string, selectedValue: string) {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve({ value: selectedValue, label: ' ' }); // don't show non-human-readable value\n }\n const value = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore.value, store.value.inputGuide.value,\n sourceId, 1, undefined, selectedValue).then((v) => v.values[0]);\n return value;\n}\n\nconst chartContainerRef = ref();\n\nconst hasPrimaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.primaryGrouping?.selectorStates.length) {\n const columnName = optionsState.primaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nconst hasSecondaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.secondaryGrouping?.selectorStates.length) {\n const columnName = optionsState.secondaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nfunction openAxesSettingsPrimary() {\n store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\nfunction openAxesSettingsSecondary() {\n store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\n\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input\n class=\"chart_title\"\n :value=\"title\"\n :disabled=\"!allowTitleEditing\"\n @change=\"onTitleChange\"\n @keyup.enter=\"(e) => { (e.target as HTMLInputElement)?.blur() }\"\n />\n <component :is=\"EditIcon\" v-if=\"allowTitleEditing\" class=\"chart_titleEdit\" />\n <div class=\"chart_titleLineSlot\">\n <slot />\n </div>\n </div>\n <PlNotificationAlert\n v-model=\"store.reactive.showTooltipHint\" type=\"success\" class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div v-if=\"tabBySource\" class=\"chart_tabBy\">\n <PlDropdown\n v-if=\"preloadedOptions || (preloadedOptions === undefined && store.loading.inputGuide)\"\n v-model=\"tabByLocalValue\" label=\"Show for\" :options=\"preloadedOptions\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n <PlAutocomplete\n v-else v-model=\"tabByLocalValue\" label=\"Show for\"\n :options-search=\"(str, type) => searchFilterOptions(tabBySource as string, str, type)\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n </div>\n <div\n ref=\"chartContainerRef\" class=\"chart_main-content\"\n :class=\"[{ 'chart_main-content__dendro': store.reactive.chartType === 'dendro' }, 'pl-scrollable']\"\n >\n <div\n id=\"chartSvgContainer\" :class=\"{\n 'chart_ready': graphStatus === 'ready',\n 'chart_loading': graphStatus === 'loading',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n />\n <GraphStatusScreen :graphStatus=\"graphStatus\" :top=\"0\" :bottom=\"11\" :customStatusText=\"customStatusText\" :errorInfo=\"errorInfo\"/>\n <DendroTable\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\" @row-select=\"onTableRowSelect\"\n />\n <DendroTooltip\n v-if=\"store.reactive.dendroInfoByClick\" :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\" :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id: string) => $emit('dendro-tooltip-btn-click', id)\" @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div v-if=\"graphStatus === 'ready'\" class=\"chart_controls\">\n <Zoom />\n <LassoControls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\" :isScatterplotZoomChanged=\"isScatterplotZoomChanged\"/>\n <PlBtnGhost v-if=\"hasPrimaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsPrimary()\">\n Hidden (primary)\n </PlBtnGhost>\n <PlBtnGhost v-if=\"hasSecondaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsSecondary()\">\n Hidden (secondary)\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","store","useStore","props","__props","title","ref","watch","graphTitle","tabByState","computed","_a","tabBySource","tabByFilterValue","_b","filtersStates","tabByLocalValue","value","prevValue","loadOptions","sourceId","filtersStateWithTheSameSource","state","selectedValues","selectedValue","searchSelectedFilterValueOptions","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","type","results","searchLabelStr","searchValueStr","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createBlock","_resolveDynamicComponent","EditIcon","_hoisted_4","_renderSlot","_ctx","_createVNode","_unref","PlNotificationAlert","$event","_cache","_hoisted_5","PlDropdown","PlAutocomplete","str","_normalizeClass","GraphStatusScreen","DendroTable","DendroTooltip","$emit","_hoisted_6","Zoom","LassoControls","PlBtnGhost"],"mappings":"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"}
1
+ {"version":3,"file":"Chart.vue.js","sources":["../../src/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartInterface, ErrorInfo } from '@milaboratories/miplots4';\nimport type { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport type { ListOption } from '@platforma-sdk/ui-vue';\nimport { PlAutocomplete, PlBtnGhost, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../components/DendroTable.vue';\nimport DendroTooltip from '../components/DendroTooltip.vue';\nimport LassoControls from '../components/LassoControls/index.vue';\nimport Zoom from '../components/Zoom/index.vue';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../constantsCommon.ts';\nimport EditIcon from '../icons/EditIcon.vue';\nimport { useStore } from '../store.ts';\nimport type { GraphStatus, StatusTextData } from '../types.ts';\nimport GraphStatusScreen from './GraphStatusScreen.vue';\n\nconst emit = defineEmits(['graph-title-update', 'dendro-node-select', 'dendro-tooltip-btn-click']);\n\nconst store = useStore();\n\nconst props = defineProps<{\n graphStatus: GraphStatus;\n graphTitle: string;\n dendroTooltipButton?: string;\n chartData: Record<string, unknown> | null;\n chartRef: ChartInterface | null;\n errorInfo: ErrorInfo | null;\n customStatusText?: Partial<StatusTextData>;\n allowTitleEditing?: boolean;\n isScatterplotZoomChanged?: boolean;\n}>();\n\nconst title = ref(props.graphTitle);\n// title can be updated from graph-maker settings\nwatch(() => props.graphTitle, (graphTitle) => {\n title.value = graphTitle;\n});\n\nconst tabByState = computed(() => store.value.reactive.optionsState.components.tabBy?.selectorStates[0] as SelectorStateFilter | undefined);\nconst tabBySource = computed(() => tabByState.value?.selectedSource);\nconst tabByFilterValue = computed(() => tabByState.value?.selectedFilterValues?.[0]);\nconst filtersStates = computed(() => store.value.reactive.optionsState.components.filters?.selectorStates as SelectorStateFilter[]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch(() => tabBySource.value, (value, prevValue) => { // tabBy column changed, needs to update selected value\n if (value !== prevValue) {\n tabByLocalValue.value = tabByFilterValue.value;\n }\n}, { immediate: true });\n\n// try to load full options list, without search query; if result is not overflow, use values from it in regular dropdown, no autocomplete;\nasync function loadOptions(sourceId: string) {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n return Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore.value,\n store.value.inputGuide.value,\n sourceId,\n MAX_SEARCH_OPTIONS_LIST_LENGTH,\n );\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[] | null | undefined>();\nwatch([\n () => tabBySource.value,\n () => store.value.loading.inputGuide,\n], async ([v, loading]) => {\n if (v === undefined || loading || !store.value.columnsDataStore.value) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n}, { immediate: true });\n\nwatch(() => preloadedOptions.value, async (opts) => {\n if (\n tabBySource.value === undefined // no tabBy selected\n || tabByLocalValue.value !== undefined // tabBy selected and has selected value\n || opts === undefined // options not loaded yet\n ) {\n return;\n }\n let availableOptions = opts;\n if (opts === null) { // options loaded but too many unique values\n availableOptions = await searchFilterOptions(tabBySource.value, '');\n }\n if (availableOptions?.length) {\n const nextFilterValue = availableOptions[0].value as string;\n tabByLocalValue.value = nextFilterValue;\n onFilterValueUpdate(nextFilterValue);\n }\n}, { immediate: true });\n\nfunction onFilterValueUpdate(value: string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value],\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\n// search options for autocomplete component; use label-mode search for options and value-mode for search of label of selected by default value;\nasync function searchFilterOptions(sourceId: string, searchStr: string, type: 'value' | 'label' = 'label') {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n const results = await Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n return searchStr ? results.filter((v) => v.label.toLowerCase().includes(searchStr.toLowerCase())) : results;\n }\n const searchLabelStr = type === 'label' ? searchStr : undefined;\n const searchValueStr = type === 'value' ? searchStr : undefined;\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore.value, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchLabelStr, searchValueStr)).values;\n}\n\n// search by value, not by label;\nasync function searchSelectedFilterValueOptions(sourceId: string, selectedValue: string) {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve({ value: selectedValue, label: ' ' }); // don't show non-human-readable value\n }\n const value = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore.value, store.value.inputGuide.value,\n sourceId, 1, undefined, selectedValue).then((v) => v.values[0]);\n return value;\n}\n\nconst chartContainerRef = ref();\n\nconst hasPrimaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.primaryGrouping?.selectorStates.length) {\n const columnName = optionsState.primaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nconst hasSecondaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.secondaryGrouping?.selectorStates.length) {\n const columnName = optionsState.secondaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nfunction openAxesSettingsPrimary() {\n store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\nfunction openAxesSettingsSecondary() {\n store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\n\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input\n class=\"chart_title\"\n :value=\"title\"\n :disabled=\"!allowTitleEditing\"\n @change=\"onTitleChange\"\n @keyup.enter=\"(e) => { (e.target as HTMLInputElement)?.blur() }\"\n />\n <component :is=\"EditIcon\" v-if=\"allowTitleEditing\" class=\"chart_titleEdit\" />\n <div class=\"chart_titleLineSlot\">\n <slot />\n </div>\n </div>\n <PlNotificationAlert\n v-model=\"store.reactive.showTooltipHint\" type=\"success\" class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div v-if=\"tabBySource\" class=\"chart_tabBy\">\n <PlDropdown\n v-if=\"preloadedOptions || (preloadedOptions === undefined && store.loading.inputGuide)\"\n v-model=\"tabByLocalValue\" label=\"Show for\" :options=\"preloadedOptions\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n <PlAutocomplete\n v-else v-model=\"tabByLocalValue\" label=\"Show for\"\n :options-search=\"(str, type) => searchFilterOptions(tabBySource as string, str, type)\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n </div>\n <div\n ref=\"chartContainerRef\" class=\"chart_main-content\"\n :class=\"[{ 'chart_main-content__dendro': store.reactive.chartType === 'dendro' }, 'pl-scrollable']\"\n >\n <div\n id=\"chartSvgContainer\" :class=\"{\n 'chart_ready': graphStatus === 'ready',\n 'chart_loading': graphStatus === 'loading',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n />\n <GraphStatusScreen :graphStatus=\"graphStatus\" :top=\"tabBySource ? 24 : 0\" :bottom=\"11\" :customStatusText=\"customStatusText\" :errorInfo=\"errorInfo\"/>\n <DendroTable\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\" @row-select=\"onTableRowSelect\"\n />\n <DendroTooltip\n v-if=\"store.reactive.dendroInfoByClick\" :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\" :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id: string) => $emit('dendro-tooltip-btn-click', id)\" @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div v-if=\"graphStatus === 'ready'\" class=\"chart_controls\">\n <Zoom />\n <LassoControls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\" :isScatterplotZoomChanged=\"isScatterplotZoomChanged\"/>\n <PlBtnGhost v-if=\"hasPrimaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsPrimary()\">\n Hidden (primary)\n </PlBtnGhost>\n <PlBtnGhost v-if=\"hasSecondaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsSecondary()\">\n Hidden (secondary)\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","store","useStore","props","__props","title","ref","watch","graphTitle","tabByState","computed","_a","tabBySource","tabByFilterValue","_b","filtersStates","tabByLocalValue","value","prevValue","loadOptions","sourceId","filtersStateWithTheSameSource","state","selectedValues","selectedValue","searchSelectedFilterValueOptions","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","type","results","searchLabelStr","searchValueStr","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createBlock","_resolveDynamicComponent","EditIcon","_hoisted_4","_renderSlot","_ctx","_createVNode","_unref","PlNotificationAlert","$event","_cache","_hoisted_5","PlDropdown","PlAutocomplete","str","_normalizeClass","GraphStatusScreen","DendroTable","DendroTooltip","$emit","_hoisted_6","Zoom","LassoControls","PlBtnGhost"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../../../src/components/SettingsTabs/index.vue"],"names":[],"mappings":"AAyFA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B,CAAC;;;;;;;;;;AA8MF,wBAOG"}
1
+ {"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../../../src/components/SettingsTabs/index.vue"],"names":[],"mappings":"AA6FA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B,CAAC;;;;;;;;;;AAgNF,wBAOG"}
@@ -1,7 +1,7 @@
1
- import { defineComponent as x, computed as D, ref as P, createElementBlock as c, openBlock as r, Fragment as g, createElementVNode as u, createVNode as d, renderList as T, createBlock as m, unref as n, normalizeClass as M, withCtx as o, resolveDynamicComponent as b, toDisplayString as w, withModifiers as y, createTextVNode as p } from "vue";
2
- import { PlTooltip as L, PlDialogModal as k, PlAlert as A, PlBtnPrimary as N, PlBtnGhost as E } from "@platforma-sdk/ui-vue";
3
- import { tabKeys as j, resolveIcon as z, resolveTitle as F } from "../../forms/index.js";
4
- const G = { class: "settings-tabs" }, I = { style: { "font-family": "var(--font-family-base)" } }, $ = /* @__PURE__ */ x({
1
+ import { defineComponent as x, computed as D, ref as b, createElementBlock as m, openBlock as s, Fragment as g, createElementVNode as d, createVNode as r, renderList as w, createBlock as h, unref as n, normalizeClass as M, withCtx as a, resolveDynamicComponent as k, toDisplayString as L, withModifiers as y, createTextVNode as p } from "vue";
2
+ import { PlTooltip as A, PlDialogModal as E, PlAlert as N, PlBtnPrimary as G, PlBtnGhost as I } from "@platforma-sdk/ui-vue";
3
+ import { tabKeys as O, resolveIcon as j, resolveTitle as z, isOwnGraphMakerTab as S } from "../../forms/index.js";
4
+ const F = { class: "settings-tabs" }, K = { style: { "font-family": "var(--font-family-base)" } }, q = /* @__PURE__ */ x({
5
5
  __name: "index",
6
6
  props: {
7
7
  chartType: {},
@@ -14,76 +14,79 @@ const G = { class: "settings-tabs" }, I = { style: { "font-family": "var(--font-
14
14
  modelValue: {}
15
15
  },
16
16
  emits: ["update:modelValue", "export", "delete"],
17
- setup(a, { emit: h }) {
18
- const f = h, i = a, v = D(() => j().filter(
19
- (e) => !(e === "annotations" && !i.hasAnnotationsSlot) && !(e === "settings" && !i.hasSettingsSlot) && !(e === "log" && !i.hasLogSlot) && !(e === "statistics" && i.chartType !== "discrete" && i.chartType !== "scatterplot") && !(e === "delete" && !i.allowDeleting)
17
+ setup(u, { emit: v }) {
18
+ const f = v, e = u, C = D(() => O().filter(
19
+ (t) => !(t === "annotations" && !e.hasAnnotationsSlot) && !(t === "settings" && !e.hasSettingsSlot) && !(t === "log" && !e.hasLogSlot) && !(t === "statistics" && e.chartType !== "discrete" && e.chartType !== "scatterplot") && !(t === "delete" && !e.allowDeleting)
20
20
  ));
21
- function C(e) {
22
- f("update:modelValue", e === i.modelValue ? null : e);
21
+ function V(t) {
22
+ f("update:modelValue", t === e.modelValue ? null : t);
23
23
  }
24
- const s = P(!1);
25
- function S() {
26
- s.value = !1, f("delete");
24
+ const i = b(!1);
25
+ function B() {
26
+ i.value = !1, f("delete");
27
27
  }
28
- function V() {
29
- s.value = !1;
28
+ function P() {
29
+ i.value = !1;
30
30
  }
31
- return (e, l) => (r(), c(g, null, [
32
- u("div", G, [
33
- (r(!0), c(g, null, T(v.value, (t) => (r(), m(n(L), {
34
- key: t,
31
+ function c(t) {
32
+ return t === "export" && (e.graphStatus !== "ready" || e.chartType === "scatterplot-umap") || e.initialLoading && S(t) || (e.graphStatus === "noPframe" || e.graphStatus === "noPframeWithError" || e.graphStatus === "running") && S(t);
33
+ }
34
+ return (t, l) => (s(), m(g, null, [
35
+ d("div", F, [
36
+ (s(!0), m(g, null, w(C.value, (o) => (s(), h(n(A), {
37
+ key: o,
35
38
  "open-delay": 100,
36
39
  "close-delay": 100,
37
40
  class: M(["has-inline-icon", {
38
- active: a.modelValue === t,
39
- "temp-inactive": t === "export" && (a.graphStatus !== "ready" || a.chartType === "scatterplot-umap") || a.initialLoading && (t === "template" || t === "dataMapping" || t === "axes" || t === "statistics" || t === "layers") || a.graphStatus === "noPframe" && t !== "settings" && t !== "log" && t !== "delete",
40
- [t]: !0
41
+ active: u.modelValue === o && !c(o),
42
+ "temp-inactive": c(o),
43
+ [o]: !0
41
44
  }]),
42
45
  position: "left",
43
- hide: a.modelValue === t,
44
- onClick: (B) => {
45
- B.stopPropagation(), t === "export" ? e.$emit("export") : t === "delete" ? s.value = !0 : C(t);
46
+ hide: u.modelValue === o,
47
+ onClick: (T) => {
48
+ T.stopPropagation(), o === "export" ? t.$emit("export") : o === "delete" ? i.value = !0 : V(o);
46
49
  }
47
50
  }, {
48
- tooltip: o(() => [
49
- u("span", I, w(n(F)(t)), 1)
51
+ tooltip: a(() => [
52
+ d("span", K, L(n(z)(o)), 1)
50
53
  ]),
51
- default: o(() => [
52
- (r(), m(b(n(z)(t))))
54
+ default: a(() => [
55
+ (s(), h(k(n(j)(o))))
53
56
  ]),
54
57
  _: 2
55
58
  }, 1032, ["class", "hide", "onClick"]))), 128))
56
59
  ]),
57
- d(n(k), {
58
- modelValue: s.value,
59
- "onUpdate:modelValue": l[0] || (l[0] = (t) => s.value = t)
60
+ r(n(E), {
61
+ modelValue: i.value,
62
+ "onUpdate:modelValue": l[0] || (l[0] = (o) => i.value = o)
60
63
  }, {
61
- title: o(() => [...l[1] || (l[1] = [
64
+ title: a(() => [...l[1] || (l[1] = [
62
65
  p("Delete chart?", -1)
63
66
  ])]),
64
- actions: o(() => [
65
- d(n(N), {
66
- onClick: y(S, ["stop"])
67
+ actions: a(() => [
68
+ r(n(G), {
69
+ onClick: y(B, ["stop"])
67
70
  }, {
68
- default: o(() => [...l[3] || (l[3] = [
71
+ default: a(() => [...l[3] || (l[3] = [
69
72
  p(" Delete ", -1)
70
73
  ])]),
71
74
  _: 1
72
75
  }),
73
- d(n(E), {
76
+ r(n(I), {
74
77
  "justify-center": !1,
75
- onClick: y(V, ["stop"])
78
+ onClick: y(P, ["stop"])
76
79
  }, {
77
- default: o(() => [...l[4] || (l[4] = [
80
+ default: a(() => [...l[4] || (l[4] = [
78
81
  p("Cancel", -1)
79
82
  ])]),
80
83
  _: 1
81
84
  })
82
85
  ]),
83
- default: o(() => [
84
- d(n(A), { type: "warn" }, {
85
- default: o(() => [...l[2] || (l[2] = [
86
- u("strong", null, "This can't be undone!", -1)
86
+ default: a(() => [
87
+ r(n(N), { type: "warn" }, {
88
+ default: a(() => [...l[2] || (l[2] = [
89
+ d("strong", null, "This can't be undone!", -1)
87
90
  ])]),
88
91
  _: 1
89
92
  })
@@ -94,6 +97,6 @@ const G = { class: "settings-tabs" }, I = { style: { "font-family": "var(--font-
94
97
  }
95
98
  });
96
99
  export {
97
- $ as default
100
+ q as default
98
101
  };
99
102
  //# sourceMappingURL=index.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.js","sources":["../../../src/components/SettingsTabs/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartType } from '@milaboratories/pf-plots';\nimport { PlTooltip, PlDialogModal, PlAlert, PlBtnPrimary, PlBtnGhost } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport type { FormKey } from '../../forms';\nimport { resolveIcon, resolveTitle, tabKeys } from '../../forms';\nimport type { GraphStatus } from '../../types';\n\nconst emit = defineEmits(['update:modelValue', 'export', 'delete']);\n\nconst props = defineProps<{\n chartType: ChartType;\n graphStatus: GraphStatus;\n allowDeleting?: boolean;\n hasSettingsSlot?: boolean;\n hasAnnotationsSlot?: boolean;\n hasLogSlot?: boolean;\n initialLoading: boolean;\n modelValue: FormKey | null;\n}>();\n\nconst tabs = computed(() => tabKeys().filter((key) =>\n !(key === 'annotations' && !props.hasAnnotationsSlot)\n && !(key === 'settings' && !props.hasSettingsSlot)\n && !(key === 'log' && !props.hasLogSlot)\n && !(key === 'statistics' && props.chartType !== 'discrete' && props.chartType !== 'scatterplot')\n && !(key === 'delete' && !props.allowDeleting),\n));\n\nfunction updateModel(v: string) {\n emit('update:modelValue', v === props.modelValue ? null : v);\n}\n\nconst deletingConfirmationModalOpen = ref<boolean>(false);\nfunction onDelete() {\n deletingConfirmationModalOpen.value = false;\n emit('delete');\n}\nfunction onConfirmationModalClose() {\n deletingConfirmationModalOpen.value = false;\n}\n</script>\n\n<template>\n <div class=\"settings-tabs\">\n <PlTooltip\n v-for=\"(name) in tabs\"\n :key=\"name\"\n :open-delay=\"100\"\n :close-delay=\"100\"\n class=\"has-inline-icon\"\n :class=\"{\n 'active': modelValue === name,\n 'temp-inactive':\n name === 'export' && (graphStatus !== 'ready' || chartType === 'scatterplot-umap') ||\n initialLoading && (name === 'template' || name === 'dataMapping' || name === 'axes' || name === 'statistics' || name === 'layers') ||\n graphStatus === 'noPframe' && (name !== 'settings' && name !== 'log' && name !== 'delete'),\n [name]: true\n }\"\n position=\"left\"\n :hide=\"modelValue === name\"\n @click=\"(e:Event) => {\n e.stopPropagation();\n name === 'export' ? $emit('export') :\n name === 'delete' ? deletingConfirmationModalOpen = true :\n updateModel(name)\n }\"\n >\n <component :is=\"resolveIcon(name)\"/>\n <template #tooltip>\n <span style=\"font-family: var(--font-family-base);\">\n {{ resolveTitle(name) }}\n </span>\n </template>\n </PlTooltip>\n </div>\n <PlDialogModal v-model=\"deletingConfirmationModalOpen\">\n <template #title>Delete chart?</template>\n <PlAlert type=\"warn\">\n <strong>This can't be undone!</strong>\n </PlAlert>\n <template #actions>\n <PlBtnPrimary @click.stop=\"onDelete\"> Delete </PlBtnPrimary>\n <PlBtnGhost :justify-center=\"false\" @click.stop=\"onConfirmationModalClose\">Cancel</PlBtnGhost>\n </template>\n </PlDialogModal>\n</template>\n"],"names":["emit","__emit","props","__props","tabs","computed","tabKeys","key","updateModel","v","deletingConfirmationModalOpen","ref","onDelete","onConfirmationModalClose","_createElementVNode","_hoisted_1","_createElementBlock","_Fragment","_renderList","name","_createBlock","_unref","PlTooltip","e","$emit","_hoisted_2","_toDisplayString","resolveTitle","_resolveDynamicComponent","resolveIcon","_createVNode","PlDialogModal","$event","_cache","PlBtnPrimary","PlBtnGhost","PlAlert"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue.js","sources":["../../../src/components/SettingsTabs/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartType } from '@milaboratories/pf-plots';\nimport { PlTooltip, PlDialogModal, PlAlert, PlBtnPrimary, PlBtnGhost } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport type { FormKey } from '../../forms';\nimport { isOwnGraphMakerTab, resolveIcon, resolveTitle, tabKeys } from '../../forms';\nimport type { GraphStatus } from '../../types';\n\nconst emit = defineEmits(['update:modelValue', 'export', 'delete']);\n\nconst props = defineProps<{\n chartType: ChartType;\n graphStatus: GraphStatus;\n allowDeleting?: boolean;\n hasSettingsSlot?: boolean;\n hasAnnotationsSlot?: boolean;\n hasLogSlot?: boolean;\n initialLoading: boolean;\n modelValue: FormKey | null;\n}>();\n\nconst tabs = computed(() => tabKeys().filter((key) =>\n !(key === 'annotations' && !props.hasAnnotationsSlot)\n && !(key === 'settings' && !props.hasSettingsSlot)\n && !(key === 'log' && !props.hasLogSlot)\n && !(key === 'statistics' && props.chartType !== 'discrete' && props.chartType !== 'scatterplot')\n && !(key === 'delete' && !props.allowDeleting),\n));\n\nfunction updateModel(v: string) {\n emit('update:modelValue', v === props.modelValue ? null : v);\n}\n\nconst deletingConfirmationModalOpen = ref<boolean>(false);\nfunction onDelete() {\n deletingConfirmationModalOpen.value = false;\n emit('delete');\n}\nfunction onConfirmationModalClose() {\n deletingConfirmationModalOpen.value = false;\n}\n\nfunction isInactive(name: FormKey) {\n return (name === 'export' && (props.graphStatus !== 'ready' || props.chartType === 'scatterplot-umap'))\n || (props.initialLoading && isOwnGraphMakerTab(name))\n || ((props.graphStatus === 'noPframe' || props.graphStatus === 'noPframeWithError' || props.graphStatus === 'running') && isOwnGraphMakerTab(name));\n}\n\n</script>\n\n<template>\n <div class=\"settings-tabs\">\n <PlTooltip\n v-for=\"(name) in tabs\"\n :key=\"name\"\n :open-delay=\"100\"\n :close-delay=\"100\"\n class=\"has-inline-icon\"\n :class=\"{\n 'active': (modelValue === name) && !isInactive(name),\n 'temp-inactive': isInactive(name),\n [name]: true\n }\"\n position=\"left\"\n :hide=\"modelValue === name\"\n @click=\"(e:Event) => {\n e.stopPropagation();\n name === 'export' ? $emit('export') :\n name === 'delete' ? deletingConfirmationModalOpen = true :\n updateModel(name)\n }\"\n >\n <component :is=\"resolveIcon(name)\"/>\n <template #tooltip>\n <span style=\"font-family: var(--font-family-base);\">\n {{ resolveTitle(name) }}\n </span>\n </template>\n </PlTooltip>\n </div>\n <PlDialogModal v-model=\"deletingConfirmationModalOpen\">\n <template #title>Delete chart?</template>\n <PlAlert type=\"warn\">\n <strong>This can't be undone!</strong>\n </PlAlert>\n <template #actions>\n <PlBtnPrimary @click.stop=\"onDelete\"> Delete </PlBtnPrimary>\n <PlBtnGhost :justify-center=\"false\" @click.stop=\"onConfirmationModalClose\">Cancel</PlBtnGhost>\n </template>\n </PlDialogModal>\n</template>\n"],"names":["emit","__emit","props","__props","tabs","computed","tabKeys","key","updateModel","v","deletingConfirmationModalOpen","ref","onDelete","onConfirmationModalClose","isInactive","name","isOwnGraphMakerTab","_createElementVNode","_hoisted_1","_createElementBlock","_Fragment","_renderList","_createBlock","_unref","PlTooltip","e","$emit","_hoisted_2","_toDisplayString","resolveTitle","_resolveDynamicComponent","resolveIcon","_createVNode","PlDialogModal","$event","_cache","PlBtnPrimary","PlBtnGhost","PlAlert"],"mappings":"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"}
@@ -103,6 +103,7 @@ declare const forms: {
103
103
  };
104
104
  };
105
105
  export type FormKey = keyof typeof forms;
106
+ export declare function isOwnGraphMakerTab(tab: FormKey): boolean;
106
107
  export declare function tabKeys(): FormKey[];
107
108
  export declare function resolveIcon(name: FormKey): Component;
108
109
  export declare function resolveTitle(name: FormKey): string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAqBrC,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDV,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,KAAK,CAAC;AAEzC,wBAAgB,OAAO,IACQ,OAAO,EAAE,CACvC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAEpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,UAEzC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,6HAK5D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAqBrC,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDV,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,KAAK,CAAC;AAEzC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,WAE9C;AAED,wBAAgB,OAAO,IACQ,OAAO,EAAE,CACvC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAEpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,UAEzC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,6HAK5D"}
@@ -1,57 +1,57 @@
1
- import { objects as r } from "@milaboratories/helpers";
1
+ import { objects as m } from "@milaboratories/helpers";
2
2
  import c from "../components/SettingsTabs/icons/AxesIcon.vue.js";
3
3
  import p from "../components/SettingsTabs/icons/DeleteChartIcon.vue.js";
4
4
  import s from "../components/SettingsTabs/icons/ExportIcon.vue.js";
5
- import f from "../components/SettingsTabs/icons/LayersIcon.vue.js";
6
- import a from "../components/SettingsTabs/icons/LinkIcon.vue.js";
5
+ import a from "../components/SettingsTabs/icons/LayersIcon.vue.js";
6
+ import f from "../components/SettingsTabs/icons/LinkIcon.vue.js";
7
7
  import l from "../components/SettingsTabs/icons/LogIcon.vue.js";
8
- import _ from "../components/SettingsTabs/icons/SettingsIcon.vue.js";
9
- import { useComponent as u } from "../composition/useComponent.js";
8
+ import u from "../components/SettingsTabs/icons/SettingsIcon.vue.js";
9
+ import { useComponent as _ } from "../composition/useComponent.js";
10
10
  import g from "../icons/Annotation.vue.js";
11
- import I from "../icons/StatisticsIcon.vue.js";
12
- import x from "../icons/TemplateIcon.vue.js";
11
+ import x from "../icons/StatisticsIcon.vue.js";
12
+ import I from "../icons/TemplateIcon.vue.js";
13
13
  import $ from "./AnnotationsForm.vue.js";
14
- import y from "./AxesSettingsForm/index.vue.js";
15
- import L from "./DataMappingForm/index.vue.js";
16
- import S from "./LayersForm/index.vue.js";
17
- import b from "./LogForm.vue.js";
18
- import A from "./SettingsForm.vue.js";
19
- import F from "./StatisticsForm/index.vue.js";
20
- import d from "./TemplateForm.vue.js";
21
- const t = {
14
+ import d from "./AxesSettingsForm/index.vue.js";
15
+ import y from "./DataMappingForm/index.vue.js";
16
+ import b from "./LayersForm/index.vue.js";
17
+ import L from "./LogForm.vue.js";
18
+ import S from "./SettingsForm.vue.js";
19
+ import A from "./StatisticsForm/index.vue.js";
20
+ import F from "./TemplateForm.vue.js";
21
+ const o = {
22
22
  settings: {
23
- icon: _,
24
- component: A,
23
+ icon: u,
24
+ component: S,
25
25
  title: "Settings"
26
26
  },
27
27
  log: {
28
28
  icon: l,
29
- component: b,
29
+ component: L,
30
30
  title: "Log"
31
31
  },
32
32
  template: {
33
- icon: x,
34
- component: d,
33
+ icon: I,
34
+ component: F,
35
35
  title: "Template"
36
36
  },
37
37
  dataMapping: {
38
- icon: a,
39
- component: L,
38
+ icon: f,
39
+ component: y,
40
40
  title: "Data mapping"
41
41
  },
42
42
  axes: {
43
43
  icon: c,
44
- component: y,
44
+ component: d,
45
45
  title: "Axes settings"
46
46
  },
47
47
  statistics: {
48
- icon: I,
49
- component: F,
48
+ icon: x,
49
+ component: A,
50
50
  title: "Statistics"
51
51
  },
52
52
  layers: {
53
- icon: f,
54
- component: S,
53
+ icon: a,
54
+ component: b,
55
55
  title: "Layers"
56
56
  },
57
57
  annotations: {
@@ -70,23 +70,27 @@ const t = {
70
70
  title: "Export"
71
71
  }
72
72
  };
73
- function Q() {
74
- return Object.keys(t);
73
+ function Q(t) {
74
+ return ["template", "dataMapping", "axes", "statistics", "layers", "delete", "export"].includes(t);
75
+ }
76
+ function R() {
77
+ return Object.keys(o);
75
78
  }
76
- function R(o) {
77
- return t[o].icon ?? "";
79
+ function U(t) {
80
+ return o[t].icon ?? "";
78
81
  }
79
- function U(o) {
80
- return t[o].title ?? "";
82
+ function V(t) {
83
+ return o[t].title ?? "";
81
84
  }
82
- function V(o) {
83
- const n = Object.entries(t).reduce((i, [e, m]) => r.setProp(i, e, m.component), {});
84
- return u(n, o);
85
+ function W(t) {
86
+ const n = Object.entries(o).reduce((e, [i, r]) => m.setProp(e, i, r.component), {});
87
+ return _(n, t);
85
88
  }
86
89
  export {
87
- R as resolveIcon,
88
- U as resolveTitle,
89
- Q as tabKeys,
90
- V as useSettingsForm
90
+ Q as isOwnGraphMakerTab,
91
+ U as resolveIcon,
92
+ V as resolveTitle,
93
+ R as tabKeys,
94
+ W as useSettingsForm
91
95
  };
92
96
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/forms/index.ts"],"sourcesContent":["import { objects } from '@milaboratories/helpers';\nimport type { MaybeRef } from '@platforma-sdk/ui-vue';\nimport type { Component } from 'vue';\nimport AxisIcon from '../components/SettingsTabs/icons/AxesIcon.vue';\nimport DeleteChartIcon from '../components/SettingsTabs/icons/DeleteChartIcon.vue';\nimport ExportIcon from '../components/SettingsTabs/icons/ExportIcon.vue';\nimport LayersIcon from '../components/SettingsTabs/icons/LayersIcon.vue';\nimport LinkIcon from '../components/SettingsTabs/icons/LinkIcon.vue';\nimport LogIcon from '../components/SettingsTabs/icons/LogIcon.vue';\nimport SettingsIcon from '../components/SettingsTabs/icons/SettingsIcon.vue';\nimport { useComponent } from '../composition/useComponent';\nimport AnnotationIcon from '../icons/Annotation.vue';\nimport StatisticsIcon from '../icons/StatisticsIcon.vue';\nimport TemplateIcon from '../icons/TemplateIcon.vue';\nimport AnnotationsForm from './AnnotationsForm.vue';\nimport AxesSettingsForm from './AxesSettingsForm/index.vue';\nimport DataMappingForm from './DataMappingForm/index.vue';\nimport LayersForm from './LayersForm/index.vue';\nimport LogForm from './LogForm.vue';\nimport SettingsForm from './SettingsForm.vue';\nimport StatisticsForm from './StatisticsForm/index.vue';\nimport TemplateForm from './TemplateForm.vue';\n\nconst forms = {\n settings: {\n icon: SettingsIcon,\n component: SettingsForm,\n title: 'Settings',\n },\n log: {\n icon: LogIcon,\n component: LogForm,\n title: 'Log',\n },\n template: {\n icon: TemplateIcon,\n component: TemplateForm,\n title: 'Template',\n },\n dataMapping: {\n icon: LinkIcon,\n component: DataMappingForm,\n title: 'Data mapping',\n },\n axes: {\n icon: AxisIcon,\n component: AxesSettingsForm,\n title: 'Axes settings',\n },\n statistics: {\n icon: StatisticsIcon,\n component: StatisticsForm,\n title: 'Statistics',\n },\n layers: {\n icon: LayersIcon,\n component: LayersForm,\n title: 'Layers',\n },\n annotations: {\n icon: AnnotationIcon,\n component: AnnotationsForm,\n title: 'Annotations',\n },\n delete: {\n icon: DeleteChartIcon,\n component: null,\n title: 'Delete graph',\n },\n export: {\n icon: ExportIcon,\n component: null,\n title: 'Export',\n },\n};\n\nexport type FormKey = keyof typeof forms;\n\nexport function tabKeys() {\n return Object.keys(forms) as FormKey[];\n}\n\nexport function resolveIcon(name: FormKey): Component {\n return forms[name].icon ?? '';\n}\n\nexport function resolveTitle(name: FormKey) {\n return forms[name].title ?? '';\n}\n\nexport function useSettingsForm(tab: MaybeRef<FormKey | null>) {\n const components = Object.entries(forms).reduce((dict, [name, v]) => {\n return objects.setProp(dict, name as FormKey, v.component);\n }, {} as Record<FormKey, Component | null>);\n return useComponent(components, tab);\n}\n"],"names":["forms","SettingsIcon","SettingsForm","LogIcon","LogForm","TemplateIcon","TemplateForm","LinkIcon","DataMappingForm","AxisIcon","AxesSettingsForm","StatisticsIcon","StatisticsForm","LayersIcon","LayersForm","AnnotationIcon","AnnotationsForm","DeleteChartIcon","ExportIcon","tabKeys","resolveIcon","name","resolveTitle","useSettingsForm","tab","components","dict","v","objects","useComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuBA,MAAMA,IAAQ;AAAA,EACZ,UAAU;AAAA,IACR,MAAMC;AAAAA,IACN,WAAWC;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,KAAK;AAAA,IACH,MAAMC;AAAAA,IACN,WAAWC;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,UAAU;AAAA,IACR,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,aAAa;AAAA,IACX,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,MAAM;AAAA,IACJ,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,YAAY;AAAA,IACV,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,QAAQ;AAAA,IACN,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,aAAa;AAAA,IACX,MAAMC;AAAAA,IACN,WAAWC;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,QAAQ;AAAA,IACN,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,QAAQ;AAAA,IACN,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,EAAA;AAEX;AAIO,SAASC,IAAU;AACxB,SAAO,OAAO,KAAKnB,CAAK;AAC1B;AAEO,SAASoB,EAAYC,GAA0B;AACpD,SAAOrB,EAAMqB,CAAI,EAAE,QAAQ;AAC7B;AAEO,SAASC,EAAaD,GAAe;AAC1C,SAAOrB,EAAMqB,CAAI,EAAE,SAAS;AAC9B;AAEO,SAASE,EAAgBC,GAA+B;AAC7D,QAAMC,IAAa,OAAO,QAAQzB,CAAK,EAAE,OAAO,CAAC0B,GAAM,CAACL,GAAMM,CAAC,MACtDC,EAAQ,QAAQF,GAAML,GAAiBM,EAAE,SAAS,GACxD,CAAA,CAAuC;AAC1C,SAAOE,EAAaJ,GAAYD,CAAG;AACrC;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/forms/index.ts"],"sourcesContent":["import { objects } from '@milaboratories/helpers';\nimport type { MaybeRef } from '@platforma-sdk/ui-vue';\nimport type { Component } from 'vue';\nimport AxisIcon from '../components/SettingsTabs/icons/AxesIcon.vue';\nimport DeleteChartIcon from '../components/SettingsTabs/icons/DeleteChartIcon.vue';\nimport ExportIcon from '../components/SettingsTabs/icons/ExportIcon.vue';\nimport LayersIcon from '../components/SettingsTabs/icons/LayersIcon.vue';\nimport LinkIcon from '../components/SettingsTabs/icons/LinkIcon.vue';\nimport LogIcon from '../components/SettingsTabs/icons/LogIcon.vue';\nimport SettingsIcon from '../components/SettingsTabs/icons/SettingsIcon.vue';\nimport { useComponent } from '../composition/useComponent';\nimport AnnotationIcon from '../icons/Annotation.vue';\nimport StatisticsIcon from '../icons/StatisticsIcon.vue';\nimport TemplateIcon from '../icons/TemplateIcon.vue';\nimport AnnotationsForm from './AnnotationsForm.vue';\nimport AxesSettingsForm from './AxesSettingsForm/index.vue';\nimport DataMappingForm from './DataMappingForm/index.vue';\nimport LayersForm from './LayersForm/index.vue';\nimport LogForm from './LogForm.vue';\nimport SettingsForm from './SettingsForm.vue';\nimport StatisticsForm from './StatisticsForm/index.vue';\nimport TemplateForm from './TemplateForm.vue';\n\nconst forms = {\n settings: {\n icon: SettingsIcon,\n component: SettingsForm,\n title: 'Settings',\n },\n log: {\n icon: LogIcon,\n component: LogForm,\n title: 'Log',\n },\n template: {\n icon: TemplateIcon,\n component: TemplateForm,\n title: 'Template',\n },\n dataMapping: {\n icon: LinkIcon,\n component: DataMappingForm,\n title: 'Data mapping',\n },\n axes: {\n icon: AxisIcon,\n component: AxesSettingsForm,\n title: 'Axes settings',\n },\n statistics: {\n icon: StatisticsIcon,\n component: StatisticsForm,\n title: 'Statistics',\n },\n layers: {\n icon: LayersIcon,\n component: LayersForm,\n title: 'Layers',\n },\n annotations: {\n icon: AnnotationIcon,\n component: AnnotationsForm,\n title: 'Annotations',\n },\n delete: {\n icon: DeleteChartIcon,\n component: null,\n title: 'Delete graph',\n },\n export: {\n icon: ExportIcon,\n component: null,\n title: 'Export',\n },\n};\n\nexport type FormKey = keyof typeof forms;\n\nexport function isOwnGraphMakerTab(tab: FormKey) {\n return ['template', 'dataMapping', 'axes', 'statistics', 'layers', 'delete', 'export'].includes(tab);\n}\n\nexport function tabKeys() {\n return Object.keys(forms) as FormKey[];\n}\n\nexport function resolveIcon(name: FormKey): Component {\n return forms[name].icon ?? '';\n}\n\nexport function resolveTitle(name: FormKey) {\n return forms[name].title ?? '';\n}\n\nexport function useSettingsForm(tab: MaybeRef<FormKey | null>) {\n const components = Object.entries(forms).reduce((dict, [name, v]) => {\n return objects.setProp(dict, name as FormKey, v.component);\n }, {} as Record<FormKey, Component | null>);\n return useComponent(components, tab);\n}\n"],"names":["forms","SettingsIcon","SettingsForm","LogIcon","LogForm","TemplateIcon","TemplateForm","LinkIcon","DataMappingForm","AxisIcon","AxesSettingsForm","StatisticsIcon","StatisticsForm","LayersIcon","LayersForm","AnnotationIcon","AnnotationsForm","DeleteChartIcon","ExportIcon","isOwnGraphMakerTab","tab","tabKeys","resolveIcon","name","resolveTitle","useSettingsForm","components","dict","v","objects","useComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuBA,MAAMA,IAAQ;AAAA,EACZ,UAAU;AAAA,IACR,MAAMC;AAAAA,IACN,WAAWC;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,KAAK;AAAA,IACH,MAAMC;AAAAA,IACN,WAAWC;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,UAAU;AAAA,IACR,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,aAAa;AAAA,IACX,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,MAAM;AAAA,IACJ,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,YAAY;AAAA,IACV,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,QAAQ;AAAA,IACN,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,aAAa;AAAA,IACX,MAAMC;AAAAA,IACN,WAAWC;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,QAAQ;AAAA,IACN,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,QAAQ;AAAA,IACN,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,EAAA;AAEX;AAIO,SAASC,EAAmBC,GAAc;AAC/C,SAAO,CAAC,YAAY,eAAe,QAAQ,cAAc,UAAU,UAAU,QAAQ,EAAE,SAASA,CAAG;AACrG;AAEO,SAASC,IAAU;AACxB,SAAO,OAAO,KAAKrB,CAAK;AAC1B;AAEO,SAASsB,EAAYC,GAA0B;AACpD,SAAOvB,EAAMuB,CAAI,EAAE,QAAQ;AAC7B;AAEO,SAASC,EAAaD,GAAe;AAC1C,SAAOvB,EAAMuB,CAAI,EAAE,SAAS;AAC9B;AAEO,SAASE,EAAgBL,GAA+B;AAC7D,QAAMM,IAAa,OAAO,QAAQ1B,CAAK,EAAE,OAAO,CAAC2B,GAAM,CAACJ,GAAMK,CAAC,MACtDC,EAAQ,QAAQF,GAAMJ,GAAiBK,EAAE,SAAS,GACxD,CAAA,CAAuC;AAC1C,SAAOE,EAAaJ,GAAYN,CAAG;AACrC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../src/index.vue"],"names":[],"mappings":"AAmeA,OAAO,KAAK,EAA0B,gBAAgB,EAAa,MAAM,sBAAsB,CAAC;AAIhG,OAAO,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EAAmC,eAAe,EAAe,MAAM,SAAS,CAAC;AAqF7F,iBAAS,KAAK,SAcb;AAED,iBAAS,aAAa,SASrB;AA0TD,iBAAS,cAAc;WAoMT,OAAO,IAA6B;;+BAbf,GAAG;iCACA,GAAG;8BACN,GAAG;yBACR,GAAG;;;;EAehC;AAkCD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;gBApPT,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;IAnZ5B;;;;OAIG;;IAEH;;OAEG;;;;;;;;gBA0YO,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;;;;;6FA+P5B,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../src/index.vue"],"names":[],"mappings":"AAseA,OAAO,KAAK,EAA0B,gBAAgB,EAAa,MAAM,sBAAsB,CAAC;AAIhG,OAAO,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EAAmC,eAAe,EAAe,MAAM,SAAS,CAAC;AAqF7F,iBAAS,KAAK,SAcb;AAED,iBAAS,aAAa,SASrB;AA0TD,iBAAS,cAAc;WAiMT,OAAO,IAA6B;;+BAbf,GAAG;iCACA,GAAG;8BACN,GAAG;yBACR,GAAG;;;;EAehC;AAmCD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;gBAlPT,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;IAnZ5B;;;;OAIG;;IAEH;;OAEG;;;;;;;;gBA0YO,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;;;;;6FA6P5B,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}