@sfgrp/distinguish 0.0.5 → 0.0.8

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.
@@ -1741,19 +1741,19 @@ function traverse(value, seen) {
1741
1741
  return value;
1742
1742
  }
1743
1743
  function useTransitionState() {
1744
- const state2 = {
1744
+ const state = {
1745
1745
  isMounted: false,
1746
1746
  isLeaving: false,
1747
1747
  isUnmounting: false,
1748
1748
  leavingVNodes: /* @__PURE__ */ new Map()
1749
1749
  };
1750
1750
  onMounted(() => {
1751
- state2.isMounted = true;
1751
+ state.isMounted = true;
1752
1752
  });
1753
1753
  onBeforeUnmount(() => {
1754
- state2.isUnmounting = true;
1754
+ state.isUnmounting = true;
1755
1755
  });
1756
- return state2;
1756
+ return state;
1757
1757
  }
1758
1758
  const TransitionHookValidator = [Function, Array];
1759
1759
  const BaseTransitionImpl = {
@@ -1777,7 +1777,7 @@ const BaseTransitionImpl = {
1777
1777
  },
1778
1778
  setup(props, { slots }) {
1779
1779
  const instance = getCurrentInstance();
1780
- const state2 = useTransitionState();
1780
+ const state = useTransitionState();
1781
1781
  let prevTransitionKey;
1782
1782
  return () => {
1783
1783
  const children = slots.default && getTransitionRawChildren(slots.default(), true);
@@ -1795,14 +1795,14 @@ const BaseTransitionImpl = {
1795
1795
  }
1796
1796
  const rawProps = toRaw(props);
1797
1797
  const { mode } = rawProps;
1798
- if (state2.isLeaving) {
1798
+ if (state.isLeaving) {
1799
1799
  return emptyPlaceholder(child);
1800
1800
  }
1801
1801
  const innerChild = getKeepAliveChild(child);
1802
1802
  if (!innerChild) {
1803
1803
  return emptyPlaceholder(child);
1804
1804
  }
1805
- const enterHooks = resolveTransitionHooks(innerChild, rawProps, state2, instance);
1805
+ const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);
1806
1806
  setTransitionHooks(innerChild, enterHooks);
1807
1807
  const oldChild = instance.subTree;
1808
1808
  const oldInnerChild = oldChild && getKeepAliveChild(oldChild);
@@ -1818,18 +1818,18 @@ const BaseTransitionImpl = {
1818
1818
  }
1819
1819
  }
1820
1820
  if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {
1821
- const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state2, instance);
1821
+ const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);
1822
1822
  setTransitionHooks(oldInnerChild, leavingHooks);
1823
1823
  if (mode === "out-in") {
1824
- state2.isLeaving = true;
1824
+ state.isLeaving = true;
1825
1825
  leavingHooks.afterLeave = () => {
1826
- state2.isLeaving = false;
1826
+ state.isLeaving = false;
1827
1827
  instance.update();
1828
1828
  };
1829
1829
  return emptyPlaceholder(child);
1830
1830
  } else if (mode === "in-out" && innerChild.type !== Comment) {
1831
1831
  leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {
1832
- const leavingVNodesCache = getLeavingNodesForType(state2, oldInnerChild);
1832
+ const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);
1833
1833
  leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;
1834
1834
  el._leaveCb = () => {
1835
1835
  earlyRemove();
@@ -1845,8 +1845,8 @@ const BaseTransitionImpl = {
1845
1845
  }
1846
1846
  };
1847
1847
  const BaseTransition = BaseTransitionImpl;
1848
- function getLeavingNodesForType(state2, vnode) {
1849
- const { leavingVNodes } = state2;
1848
+ function getLeavingNodesForType(state, vnode) {
1849
+ const { leavingVNodes } = state;
1850
1850
  let leavingVNodesCache = leavingVNodes.get(vnode.type);
1851
1851
  if (!leavingVNodesCache) {
1852
1852
  leavingVNodesCache = /* @__PURE__ */ Object.create(null);
@@ -1854,10 +1854,10 @@ function getLeavingNodesForType(state2, vnode) {
1854
1854
  }
1855
1855
  return leavingVNodesCache;
1856
1856
  }
1857
- function resolveTransitionHooks(vnode, props, state2, instance) {
1857
+ function resolveTransitionHooks(vnode, props, state, instance) {
1858
1858
  const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;
1859
1859
  const key = String(vnode.key);
1860
- const leavingVNodesCache = getLeavingNodesForType(state2, vnode);
1860
+ const leavingVNodesCache = getLeavingNodesForType(state, vnode);
1861
1861
  const callHook2 = (hook, args) => {
1862
1862
  hook && callWithAsyncErrorHandling(hook, instance, 9, args);
1863
1863
  };
@@ -1876,7 +1876,7 @@ function resolveTransitionHooks(vnode, props, state2, instance) {
1876
1876
  persisted,
1877
1877
  beforeEnter(el) {
1878
1878
  let hook = onBeforeEnter;
1879
- if (!state2.isMounted) {
1879
+ if (!state.isMounted) {
1880
1880
  if (appear) {
1881
1881
  hook = onBeforeAppear || onBeforeEnter;
1882
1882
  } else {
@@ -1896,7 +1896,7 @@ function resolveTransitionHooks(vnode, props, state2, instance) {
1896
1896
  let hook = onEnter;
1897
1897
  let afterHook = onAfterEnter;
1898
1898
  let cancelHook = onEnterCancelled;
1899
- if (!state2.isMounted) {
1899
+ if (!state.isMounted) {
1900
1900
  if (appear) {
1901
1901
  hook = onAppear || onEnter;
1902
1902
  afterHook = onAfterAppear || onAfterEnter;
@@ -1931,7 +1931,7 @@ function resolveTransitionHooks(vnode, props, state2, instance) {
1931
1931
  if (el._enterCb) {
1932
1932
  el._enterCb(true);
1933
1933
  }
1934
- if (state2.isUnmounting) {
1934
+ if (state.isUnmounting) {
1935
1935
  return remove2();
1936
1936
  }
1937
1937
  callHook2(onBeforeLeave, [el]);
@@ -1959,7 +1959,7 @@ function resolveTransitionHooks(vnode, props, state2, instance) {
1959
1959
  }
1960
1960
  },
1961
1961
  clone(vnode2) {
1962
- return resolveTransitionHooks(vnode2, props, state2, instance);
1962
+ return resolveTransitionHooks(vnode2, props, state, instance);
1963
1963
  }
1964
1964
  };
1965
1965
  return hooks;
@@ -5274,7 +5274,7 @@ var MutationType;
5274
5274
  })(MutationType || (MutationType = {}));
5275
5275
  function createPinia() {
5276
5276
  const scope = effectScope(true);
5277
- const state2 = scope.run(() => ref({}));
5277
+ const state = scope.run(() => ref({}));
5278
5278
  let _p = [];
5279
5279
  let toBeInstalled = [];
5280
5280
  const pinia = markRaw({
@@ -5300,7 +5300,7 @@ function createPinia() {
5300
5300
  _a: null,
5301
5301
  _e: scope,
5302
5302
  _s: /* @__PURE__ */ new Map(),
5303
- state: state2
5303
+ state
5304
5304
  });
5305
5305
  return pinia;
5306
5306
  }
@@ -5348,13 +5348,13 @@ function isComputed(o) {
5348
5348
  return !!(isRef(o) && o.effect);
5349
5349
  }
5350
5350
  function createOptionsStore(id, options, pinia, hot) {
5351
- const { state: state2, actions, getters } = options;
5351
+ const { state, actions, getters } = options;
5352
5352
  const initialState = pinia.state.value[id];
5353
5353
  let store;
5354
5354
  function setup() {
5355
5355
  if (!initialState && true) {
5356
5356
  {
5357
- pinia.state.value[id] = state2 ? state2() : {};
5357
+ pinia.state.value[id] = state ? state() : {};
5358
5358
  }
5359
5359
  }
5360
5360
  const localState = toRefs(pinia.state.value[id]);
@@ -5369,7 +5369,7 @@ function createOptionsStore(id, options, pinia, hot) {
5369
5369
  }
5370
5370
  store = createSetupStore(id, setup, options, pinia, hot, true);
5371
5371
  store.$reset = function $reset() {
5372
- const newState = state2 ? state2() : {};
5372
+ const newState = state ? state() : {};
5373
5373
  this.$patch(($state) => {
5374
5374
  assign($state, newState);
5375
5375
  });
@@ -5477,13 +5477,13 @@ function createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore)
5477
5477
  $reset,
5478
5478
  $subscribe(callback, options2 = {}) {
5479
5479
  const removeSubscription = addSubscription(subscriptions, callback, options2.detached, () => stopWatcher());
5480
- const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state2) => {
5480
+ const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {
5481
5481
  if (options2.flush === "sync" ? isSyncListening : isListening) {
5482
5482
  callback({
5483
5483
  storeId: $id,
5484
5484
  type: MutationType.direct,
5485
5485
  events: debuggerEvents
5486
- }, state2);
5486
+ }, state);
5487
5487
  }
5488
5488
  }, assign({}, $subscribeOptions, options2)));
5489
5489
  return removeSubscription;
@@ -5526,9 +5526,9 @@ function createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore)
5526
5526
  }
5527
5527
  Object.defineProperty(store, "$state", {
5528
5528
  get: () => pinia.state.value[$id],
5529
- set: (state2) => {
5529
+ set: (state) => {
5530
5530
  $patch(($state) => {
5531
- assign($state, state2);
5531
+ assign($state, state);
5532
5532
  });
5533
5533
  }
5534
5534
  });
@@ -5579,20 +5579,6 @@ function defineStore(idOrOptions, setup, setupOptions) {
5579
5579
  useStore.$id = id;
5580
5580
  return useStore;
5581
5581
  }
5582
- const state = {
5583
- baseURL: "",
5584
- projectId: void 0,
5585
- projectToken: void 0,
5586
- userToken: void 0
5587
- };
5588
- const useAPIConfig = () => {
5589
- const updatePreferences = (preferences) => {
5590
- Object.assign(state, preferences);
5591
- };
5592
- return __spreadProps(__spreadValues({}, state), {
5593
- updatePreferences
5594
- });
5595
- };
5596
5582
  var axios$2 = { exports: {} };
5597
5583
  var bind$2 = function bind(fn, thisArg) {
5598
5584
  return function wrap() {
@@ -6813,13 +6799,14 @@ axios$2.exports = axios$1;
6813
6799
  axios$2.exports.default = axios$1;
6814
6800
  var axios = axios$2.exports;
6815
6801
  const useRequest = (instanceConfiguration = {}) => {
6802
+ const store = useSettingsStore();
6816
6803
  const {
6817
6804
  baseURL,
6818
6805
  projectId,
6819
6806
  projectToken,
6820
6807
  userToken,
6821
6808
  csrfToken
6822
- } = useAPIConfig();
6809
+ } = store.getAPIConfig;
6823
6810
  const axiosConfiguration = __spreadValues({
6824
6811
  baseURL,
6825
6812
  params: {
@@ -6935,17 +6922,17 @@ const useObservationMatrixStore = defineStore("observationMatrix", {
6935
6922
  availableLanguages: []
6936
6923
  }),
6937
6924
  getters: {
6938
- getCitation: (state2) => state2.citation,
6939
- getObservationMatrix: (state2) => state2.observationMatrix,
6940
- getDescriptors: (state2) => state2.descriptors,
6941
- getDescriptorById: (state2) => (id) => state2.descriptors.find((d) => d.descriptorId === id),
6942
- getDescriptorsUsed: (state2) => state2.descriptors.filter((d) => d.status === "used"),
6943
- getDescriptorsUseless: (state2) => state2.descriptors.filter((d) => d.status === "useless"),
6944
- getDescriptorsUseful: (state2) => state2.descriptors.filter((d) => d.status === "useful"),
6945
- getEliminated: (state2) => state2.eliminated,
6946
- getKeywords: (state2) => state2.availableKeywords,
6947
- getLanguages: (state2) => state2.availableLanguages,
6948
- getRemaining: (state2) => state2.remaining
6925
+ getCitation: (state) => state.citation,
6926
+ getObservationMatrix: (state) => state.observationMatrix,
6927
+ getDescriptors: (state) => state.descriptors,
6928
+ getDescriptorById: (state) => (id) => state.descriptors.find((d) => d.descriptorId === id),
6929
+ getDescriptorsUsed: (state) => state.descriptors.filter((d) => d.status === "used"),
6930
+ getDescriptorsUseless: (state) => state.descriptors.filter((d) => d.status === "useless"),
6931
+ getDescriptorsUseful: (state) => state.descriptors.filter((d) => d.status === "useful"),
6932
+ getEliminated: (state) => state.eliminated,
6933
+ getKeywords: (state) => state.availableKeywords,
6934
+ getLanguages: (state) => state.availableLanguages,
6935
+ getRemaining: (state) => state.remaining
6949
6936
  },
6950
6937
  actions: {
6951
6938
  setDescriptors(descriptors2) {
@@ -6993,29 +6980,29 @@ const useFilterStore = defineStore("filter", {
6993
6980
  sorting: void 0
6994
6981
  }),
6995
6982
  getters: {
6996
- getKeywordIds: (state2) => state2.keywordIds,
6997
- getLanguageId: (state2) => state2.languageId,
6998
- getRowIds: (state2) => state2.rowIds,
6999
- getDescriptors: (state2) => state2.descriptors,
7000
- getIdentifiedToRank: (state2) => state2.identifiedToRank,
7001
- getEliminateUknown: (state2) => state2.eliminateUnknown,
7002
- getErrorTolerance: (state2) => state2.errorTolerance,
7003
- getSorting: (state2) => state2.sorting,
7004
- getDescriptorValueById: (state2) => (id) => {
7005
- const value = state2.descriptors[id];
6983
+ getKeywordIds: (state) => state.keywordIds,
6984
+ getLanguageId: (state) => state.languageId,
6985
+ getRowIds: (state) => state.rowIds,
6986
+ getDescriptors: (state) => state.descriptors,
6987
+ getIdentifiedToRank: (state) => state.identifiedToRank,
6988
+ getEliminateUknown: (state) => state.eliminateUnknown,
6989
+ getErrorTolerance: (state) => state.errorTolerance,
6990
+ getSorting: (state) => state.sorting,
6991
+ getDescriptorValueById: (state) => (id) => {
6992
+ const value = state.descriptors[id];
7006
6993
  return typeof value === "boolean" ? value : value || "";
7007
6994
  },
7008
- getFilterParams: (state2) => {
7009
- const descriptorsParam = Object.entries(state2.descriptors).map(([key, value]) => Array.isArray(value) ? `${key}:${value.join("|")}` : `${key}:${value}`).join("||");
6995
+ getFilterParams: (state) => {
6996
+ const descriptorsParam = Object.entries(state.descriptors).map(([key, value]) => Array.isArray(value) ? `${key}:${value.join("|")}` : `${key}:${value}`).join("||");
7010
6997
  return {
7011
6998
  selected_descriptors: descriptorsParam,
7012
- language_id: state2.languageId,
7013
- keyword_ids: state2.keywordIds,
7014
- sorting: state2.sorting,
7015
- identified_to_rank: state2.identifiedToRank,
7016
- error_tolerance: state2.errorTolerance,
7017
- eliminate_unknown: state2.eliminateUnknown,
7018
- row_filter: state2.rowIds.join("|")
6999
+ language_id: state.languageId,
7000
+ keyword_ids: state.keywordIds,
7001
+ sorting: state.sorting,
7002
+ identified_to_rank: state.identifiedToRank,
7003
+ error_tolerance: state.errorTolerance,
7004
+ eliminate_unknown: state.eliminateUnknown,
7005
+ row_filter: state.rowIds.join("|")
7019
7006
  };
7020
7007
  }
7021
7008
  },
@@ -7054,15 +7041,24 @@ const useSettingsStore = defineStore("settings", {
7054
7041
  refreshOnlyTaxa: false,
7055
7042
  rowFilter: true,
7056
7043
  shouldUpdate: true,
7057
- observationMatrixId: void 0
7044
+ observationMatrixId: void 0,
7045
+ errorMessage: "",
7046
+ apiConfig: {
7047
+ baseURL: "",
7048
+ projectId: void 0,
7049
+ projectToken: void 0,
7050
+ userToken: void 0
7051
+ }
7058
7052
  }),
7059
7053
  getters: {
7060
- getIsLoading: (state2) => state2.isLoading,
7061
- getLayout: (state2) => state2.gridLayout,
7062
- getRefreshOnlyTaxa: (state2) => state2.refreshOnlyTaxa,
7063
- getRowFilter: (state2) => state2.rowFilter,
7064
- getShouldUpdate: (state2) => state2.shouldUpdate,
7065
- getObservationMatrixId: (state2) => state2.observationMatrixId
7054
+ getErrorMessage: (state) => state.errorMessage,
7055
+ getIsLoading: (state) => state.isLoading,
7056
+ getLayout: (state) => state.gridLayout,
7057
+ getRefreshOnlyTaxa: (state) => state.refreshOnlyTaxa,
7058
+ getRowFilter: (state) => state.rowFilter,
7059
+ getShouldUpdate: (state) => state.shouldUpdate,
7060
+ getObservationMatrixId: (state) => state.observationMatrixId,
7061
+ getAPIConfig: (state) => state.apiConfig
7066
7062
  },
7067
7063
  actions: {
7068
7064
  setObservationMatrixId(value) {
@@ -7074,6 +7070,9 @@ const useSettingsStore = defineStore("settings", {
7074
7070
  setRefreshOnlyTaxa(value) {
7075
7071
  this.refreshOnlyTaxa = value;
7076
7072
  },
7073
+ setAPIConfig(config) {
7074
+ this.apiConfig = config;
7075
+ },
7077
7076
  checkUpdate() {
7078
7077
  const filterStore = useFilterStore();
7079
7078
  const observationStore = useObservationMatrixStore();
@@ -7086,15 +7085,13 @@ const useSettingsStore = defineStore("settings", {
7086
7085
  opt: {
7087
7086
  refreshOnlyTaxa: this.refreshOnlyTaxa
7088
7087
  }
7089
- }).then((_) => {
7090
- this.isLoading = false;
7091
- });
7088
+ }).then((_) => this.errorMessage = "").catch((error) => this.errorMessage = error.message).finally(() => this.isLoading = false);
7092
7089
  }
7093
7090
  }
7094
7091
  }
7095
7092
  });
7096
- const _hoisted_1$v = /* @__PURE__ */ createTextVNode(" Eliminate unknowns ");
7097
- const _sfc_main$y = /* @__PURE__ */ defineComponent({
7093
+ const _hoisted_1$x = /* @__PURE__ */ createTextVNode(" Eliminate unknowns ");
7094
+ const _sfc_main$z = /* @__PURE__ */ defineComponent({
7098
7095
  __name: "FilterEliminateUnknowns",
7099
7096
  setup(__props) {
7100
7097
  const store = useFilterStore();
@@ -7112,18 +7109,18 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
7112
7109
  }, null, 512), [
7113
7110
  [vModelCheckbox, unref(eliminateUknown)]
7114
7111
  ]),
7115
- _hoisted_1$v
7112
+ _hoisted_1$x
7116
7113
  ]);
7117
7114
  };
7118
7115
  }
7119
7116
  });
7120
- const _hoisted_1$u = /* @__PURE__ */ createBaseVNode("label", {
7117
+ const _hoisted_1$w = /* @__PURE__ */ createBaseVNode("label", {
7121
7118
  for: "languages",
7122
7119
  class: "d-block"
7123
7120
  }, " Error tolerance ", -1);
7124
7121
  const _hoisted_2$g = /* @__PURE__ */ createBaseVNode("option", { value: "" }, null, -1);
7125
- const _hoisted_3$9 = ["value"];
7126
- const _sfc_main$x = /* @__PURE__ */ defineComponent({
7122
+ const _hoisted_3$8 = ["value"];
7123
+ const _sfc_main$y = /* @__PURE__ */ defineComponent({
7127
7124
  __name: "FilterErrorTolerance",
7128
7125
  setup(__props) {
7129
7126
  const ERROR_TOLERANCE_VALUES = [0, 1, 2];
@@ -7136,7 +7133,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
7136
7133
  });
7137
7134
  return (_ctx, _cache) => {
7138
7135
  return openBlock(), createElementBlock("div", null, [
7139
- _hoisted_1$u,
7136
+ _hoisted_1$w,
7140
7137
  withDirectives(createBaseVNode("select", {
7141
7138
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(errorTolerance) ? errorTolerance.value = $event : null),
7142
7139
  name: "languages",
@@ -7147,7 +7144,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
7147
7144
  return createBaseVNode("option", {
7148
7145
  key: value,
7149
7146
  value
7150
- }, toDisplayString(value), 9, _hoisted_3$9);
7147
+ }, toDisplayString(value), 9, _hoisted_3$8);
7151
7148
  }), 64))
7152
7149
  ], 512), [
7153
7150
  [vModelSelect, unref(errorTolerance)]
@@ -7167,9 +7164,9 @@ const RANK_TYPES = [
7167
7164
  "subfamily",
7168
7165
  "family"
7169
7166
  ];
7170
- const _hoisted_1$t = /* @__PURE__ */ createBaseVNode("label", { class: "d-block" }, "Identified to rank", -1);
7167
+ const _hoisted_1$v = /* @__PURE__ */ createBaseVNode("label", { class: "d-block" }, "Identified to rank", -1);
7171
7168
  const _hoisted_2$f = /* @__PURE__ */ createBaseVNode("option", { value: void 0 }, null, -1);
7172
- const _sfc_main$w = /* @__PURE__ */ defineComponent({
7169
+ const _sfc_main$x = /* @__PURE__ */ defineComponent({
7173
7170
  __name: "FilterRank",
7174
7171
  setup(__props) {
7175
7172
  const store = useFilterStore();
@@ -7183,7 +7180,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
7183
7180
  });
7184
7181
  return (_ctx, _cache) => {
7185
7182
  return openBlock(), createElementBlock("div", null, [
7186
- _hoisted_1$t,
7183
+ _hoisted_1$v,
7187
7184
  withDirectives(createBaseVNode("select", {
7188
7185
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(rankSelected) ? rankSelected.value = $event : null)
7189
7186
  }, [
@@ -7198,9 +7195,9 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
7198
7195
  };
7199
7196
  }
7200
7197
  });
7201
- const _hoisted_1$s = /* @__PURE__ */ createBaseVNode("label", { class: "d-block" }, "Descriptor sorting", -1);
7198
+ const _hoisted_1$u = /* @__PURE__ */ createBaseVNode("label", { class: "d-block" }, "Descriptor sorting", -1);
7202
7199
  const _hoisted_2$e = /* @__PURE__ */ createBaseVNode("option", { value: void 0 }, null, -1);
7203
- const _sfc_main$v = /* @__PURE__ */ defineComponent({
7200
+ const _sfc_main$w = /* @__PURE__ */ defineComponent({
7204
7201
  __name: "FilterSort",
7205
7202
  setup(__props) {
7206
7203
  const SORT_TYPES = [
@@ -7219,7 +7216,7 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
7219
7216
  });
7220
7217
  return (_ctx, _cache) => {
7221
7218
  return openBlock(), createElementBlock("div", null, [
7222
- _hoisted_1$s,
7219
+ _hoisted_1$u,
7223
7220
  withDirectives(createBaseVNode("select", {
7224
7221
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(sortDescriptors) ? sortDescriptors.value = $event : null)
7225
7222
  }, [
@@ -7234,12 +7231,12 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
7234
7231
  };
7235
7232
  }
7236
7233
  });
7237
- const _hoisted_1$r = /* @__PURE__ */ createBaseVNode("label", {
7234
+ const _hoisted_1$t = /* @__PURE__ */ createBaseVNode("label", {
7238
7235
  for: "languages",
7239
7236
  class: "d-block"
7240
7237
  }, " Languages ", -1);
7241
7238
  const _hoisted_2$d = ["value"];
7242
- const _sfc_main$u = /* @__PURE__ */ defineComponent({
7239
+ const _sfc_main$v = /* @__PURE__ */ defineComponent({
7243
7240
  __name: "FilterLanguage",
7244
7241
  setup(__props) {
7245
7242
  const filterStore = useFilterStore();
@@ -7252,7 +7249,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
7252
7249
  });
7253
7250
  return (_ctx, _cache) => {
7254
7251
  return openBlock(), createElementBlock("div", null, [
7255
- _hoisted_1$r,
7252
+ _hoisted_1$t,
7256
7253
  withDirectives(createBaseVNode("select", {
7257
7254
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(language) ? language.value = $event : null),
7258
7255
  name: "languages",
@@ -7271,12 +7268,14 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
7271
7268
  };
7272
7269
  }
7273
7270
  });
7274
- var VBtn_vue_vue_type_style_index_0_lang = /* @__PURE__ */ (() => ".btn{border-radius:8px;border:none}.btn-primary-color{background-color:var(--primary-color);color:#fff}.btn-medium-size{min-height:var(--btn-medium-size)}\n")();
7275
- const _sfc_main$t = /* @__PURE__ */ defineComponent({
7271
+ var VBtn_vue_vue_type_style_index_0_lang = /* @__PURE__ */ (() => ".btn{border-radius:8px;border:none}.btn-primary-color{background-color:var(--primary-color);color:#fff}.btn-medium-size{min-height:var(--btn-medium-size)}.btn:disabled{background-color:var(--bg-disabled-color);color:var(--disabled-color)}\n")();
7272
+ const _hoisted_1$s = ["disabled"];
7273
+ const _sfc_main$u = /* @__PURE__ */ defineComponent({
7276
7274
  __name: "VBtn",
7277
7275
  props: {
7278
7276
  color: { default: "primary" },
7279
- size: { default: "medium" }
7277
+ size: { default: "medium" },
7278
+ disabled: { type: Boolean }
7280
7279
  },
7281
7280
  setup(__props) {
7282
7281
  const props = __props;
@@ -7287,19 +7286,20 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
7287
7286
  return (_ctx, _cache) => {
7288
7287
  return openBlock(), createElementBlock("button", {
7289
7288
  type: "button",
7290
- class: normalizeClass(["btn", unref(buttonClasses)])
7289
+ class: normalizeClass(["btn", unref(buttonClasses)]),
7290
+ disabled: __props.disabled
7291
7291
  }, [
7292
7292
  renderSlot(_ctx.$slots, "default")
7293
- ], 2);
7293
+ ], 10, _hoisted_1$s);
7294
7294
  };
7295
7295
  }
7296
7296
  });
7297
7297
  var VModal_vue_vue_type_style_index_0_lang = /* @__PURE__ */ (() => '.modal-mask{position:fixed;z-index:1099;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:table;transition:opacity .3s ease}.modal-wrapper{display:table-cell;vertical-align:middle}.modal-container{position:relative;width:300px;margin:0 auto;padding:20px 30px;background-color:#fff;border-radius:2px;box-shadow:0 2px 8px #00000054;transition:all .3s ease;font-family:IBM Plex Sans,Helvetica,Arial,sans-serif;max-height:90vh;overflow-y:auto}.modal-close{position:absolute;cursor:pointer;top:26px;right:30px;width:10px;height:10px;background-image:image-url("close.svg");background-size:10px 10px;opacity:.4}.modal-close:hover{opacity:1}.modal-header h3{margin-top:0;color:#42b983}.modal-body{margin:20px 0}.modal-default-button{float:right}.modal-enter,.modal-leave-active{opacity:0}.modal-enter .modal-container,.modal-leave-active .modal-container{-webkit-transform:scale(1.1);transform:scale(1.1)}.transparent-modal{background-color:#000c!important}.transparent-modal .modal-header h3{margin:0 0 2em 2em;padding:6px 6px 6px 12px;border-radius:3px;background-color:#0000004d;color:#ffffff80}.transparent-modal .modal-close{right:42px;top:30px;color:#ffffff80;background-image:image-url("w_close.svg")}.transparent-modal .modal-container{width:70%;position:relative;background-color:transparent!important;box-shadow:none}.transparent-modal .modal-container .modal-body{overflow:auto;margin-right:1em;max-height:80vh}.transparent-modal .modal-container .modal-body::-webkit-scrollbar{position:absolute;right:40px;-webkit-appearance:none}.transparent-modal .modal-container .modal-body::-webkit-scrollbar:vertical{width:6px}.transparent-modal .modal-container .modal-body::-webkit-scrollbar:horizontal{height:6px}.transparent-modal .modal-container .modal-body::-webkit-scrollbar-thumb{border-radius:8px;width:11px;height:5px;border:rgba(255,255,255,.5);background-color:#ffffff80}.transparent-modal .modal-container .modal-body::-webkit-scrollbar-track{background-color:#0000004d;border-radius:8px}\n')();
7298
- const _hoisted_1$q = { class: "modal-wrapper" };
7298
+ const _hoisted_1$r = { class: "modal-wrapper" };
7299
7299
  const _hoisted_2$c = { class: "modal-header" };
7300
- const _hoisted_3$8 = { class: "modal-body" };
7301
- const _hoisted_4$5 = { class: "modal-footer" };
7302
- const _sfc_main$s = /* @__PURE__ */ defineComponent({
7300
+ const _hoisted_3$7 = { class: "modal-body" };
7301
+ const _hoisted_4$6 = { class: "modal-footer" };
7302
+ const _sfc_main$t = /* @__PURE__ */ defineComponent({
7303
7303
  __name: "VModal",
7304
7304
  props: {
7305
7305
  containerClass: null,
@@ -7323,7 +7323,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
7323
7323
  onClick: _cache[2] || (_cache[2] = ($event) => emit("close")),
7324
7324
  onKey: _cache[3] || (_cache[3] = ($event) => emit("close"))
7325
7325
  }, [
7326
- createBaseVNode("div", _hoisted_1$q, [
7326
+ createBaseVNode("div", _hoisted_1$r, [
7327
7327
  createBaseVNode("div", {
7328
7328
  class: normalizeClass(["modal-container", __props.containerClass]),
7329
7329
  style: normalizeStyle(__spreadValues({}, __props.containerStyle)),
@@ -7337,10 +7337,10 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
7337
7337
  }),
7338
7338
  renderSlot(_ctx.$slots, "header")
7339
7339
  ]),
7340
- createBaseVNode("div", _hoisted_3$8, [
7340
+ createBaseVNode("div", _hoisted_3$7, [
7341
7341
  renderSlot(_ctx.$slots, "body")
7342
7342
  ]),
7343
- createBaseVNode("div", _hoisted_4$5, [
7343
+ createBaseVNode("div", _hoisted_4$6, [
7344
7344
  renderSlot(_ctx.$slots, "footer")
7345
7345
  ])
7346
7346
  ], 6)
@@ -7352,11 +7352,11 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
7352
7352
  };
7353
7353
  }
7354
7354
  });
7355
- const _hoisted_1$p = /* @__PURE__ */ createTextVNode(" Keyword ");
7355
+ const _hoisted_1$q = /* @__PURE__ */ createTextVNode(" Keyword ");
7356
7356
  const _hoisted_2$b = /* @__PURE__ */ createBaseVNode("h3", null, "Keywords", -1);
7357
- const _hoisted_3$7 = { class: "list-none p-0" };
7358
- const _hoisted_4$4 = ["value"];
7359
- const _sfc_main$r = /* @__PURE__ */ defineComponent({
7357
+ const _hoisted_3$6 = { class: "list-none p-0" };
7358
+ const _hoisted_4$5 = ["value"];
7359
+ const _sfc_main$s = /* @__PURE__ */ defineComponent({
7360
7360
  __name: "FilterKeywords",
7361
7361
  setup(__props) {
7362
7362
  const store = useObservationMatrixStore();
@@ -7370,17 +7370,19 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
7370
7370
  });
7371
7371
  return (_ctx, _cache) => {
7372
7372
  return openBlock(), createElementBlock(Fragment, null, [
7373
- createVNode(_sfc_main$t, {
7373
+ createVNode(_sfc_main$u, {
7374
7374
  color: "primary",
7375
7375
  size: "medium",
7376
+ disabled: !unref(store).getKeywords.length,
7377
+ title: !unref(store).getKeywords.length ? "No tags defined." : "",
7376
7378
  onClick: _cache[0] || (_cache[0] = ($event) => isModalVisible.value = true)
7377
7379
  }, {
7378
7380
  default: withCtx(() => [
7379
- _hoisted_1$p
7381
+ _hoisted_1$q
7380
7382
  ]),
7381
7383
  _: 1
7382
- }),
7383
- isModalVisible.value ? (openBlock(), createBlock(_sfc_main$s, {
7384
+ }, 8, ["disabled", "title"]),
7385
+ isModalVisible.value ? (openBlock(), createBlock(_sfc_main$t, {
7384
7386
  key: 0,
7385
7387
  onClose: _cache[2] || (_cache[2] = ($event) => isModalVisible.value = false)
7386
7388
  }, {
@@ -7388,7 +7390,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
7388
7390
  _hoisted_2$b
7389
7391
  ]),
7390
7392
  body: withCtx(() => [
7391
- createBaseVNode("ul", _hoisted_3$7, [
7393
+ createBaseVNode("ul", _hoisted_3$6, [
7392
7394
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(store).getKeywords, ({ keywordId, name }) => {
7393
7395
  return openBlock(), createElementBlock("li", { key: keywordId }, [
7394
7396
  createBaseVNode("label", null, [
@@ -7396,7 +7398,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
7396
7398
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(keywordIds) ? keywordIds.value = $event : null),
7397
7399
  value: keywordId,
7398
7400
  type: "checkbox"
7399
- }, null, 8, _hoisted_4$4), [
7401
+ }, null, 8, _hoisted_4$5), [
7400
7402
  [vModelCheckbox, unref(keywordIds)]
7401
7403
  ]),
7402
7404
  createTextVNode(" " + toDisplayString(name), 1)
@@ -7411,8 +7413,8 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
7411
7413
  };
7412
7414
  }
7413
7415
  });
7414
- const _hoisted_1$o = /* @__PURE__ */ createTextVNode(" Refresh only taxa ");
7415
- const _sfc_main$q = /* @__PURE__ */ defineComponent({
7416
+ const _hoisted_1$p = /* @__PURE__ */ createTextVNode(" Refresh only taxa ");
7417
+ const _sfc_main$r = /* @__PURE__ */ defineComponent({
7416
7418
  __name: "SettingRefresh",
7417
7419
  setup(__props) {
7418
7420
  const store = useSettingsStore();
@@ -7430,7 +7432,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
7430
7432
  }, null, 512), [
7431
7433
  [vModelCheckbox, unref(refreshTaxa)]
7432
7434
  ]),
7433
- _hoisted_1$o
7435
+ _hoisted_1$p
7434
7436
  ]);
7435
7437
  };
7436
7438
  }
@@ -7443,41 +7445,41 @@ var _export_sfc = (sfc, props) => {
7443
7445
  }
7444
7446
  return target;
7445
7447
  };
7446
- const _sfc_main$p = {};
7447
- const _hoisted_1$n = { class: "menu-list" };
7448
+ const _sfc_main$q = {};
7449
+ const _hoisted_1$o = { class: "menu-list" };
7448
7450
  function _sfc_render$2(_ctx, _cache) {
7449
- return openBlock(), createElementBlock("ul", _hoisted_1$n, [
7451
+ return openBlock(), createElementBlock("ul", _hoisted_1$o, [
7450
7452
  renderSlot(_ctx.$slots, "default")
7451
7453
  ]);
7452
7454
  }
7453
- var MenuList = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$2]]);
7455
+ var MenuList = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", _sfc_render$2]]);
7454
7456
  var MenuItem_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => ".list-item[data-v-3f00bdeb]{justify-content:center;padding-left:1em;padding-right:1em;border-right:1px solid #e5e5e5}\n")();
7455
- const _sfc_main$o = {};
7456
- const _hoisted_1$m = { class: "list-item" };
7457
+ const _sfc_main$p = {};
7458
+ const _hoisted_1$n = { class: "list-item" };
7457
7459
  function _sfc_render$1(_ctx, _cache) {
7458
- return openBlock(), createElementBlock("li", _hoisted_1$m, [
7460
+ return openBlock(), createElementBlock("li", _hoisted_1$n, [
7459
7461
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
7460
7462
  ]);
7461
7463
  }
7462
- var MenuListItem = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$1], ["__scopeId", "data-v-3f00bdeb"]]);
7464
+ var MenuListItem = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$1], ["__scopeId", "data-v-3f00bdeb"]]);
7463
7465
  const LAYOUT_MODES = {
7464
7466
  "layout-mode-1": "layout-mode-2",
7465
7467
  "layout-mode-2": "layout-mode-1"
7466
7468
  };
7467
7469
  var VGrid_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => ".grid[data-v-203acd5e]{display:grid;grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr);grid-column-gap:0px;grid-row-gap:0px;grid-gap:1px;background-color:var(--border-color);box-shadow:0 2px 2px #0003}\n")();
7468
- const _sfc_main$n = {};
7469
- const _hoisted_1$l = { class: "grid" };
7470
+ const _sfc_main$o = {};
7471
+ const _hoisted_1$m = { class: "grid" };
7470
7472
  function _sfc_render(_ctx, _cache) {
7471
- return openBlock(), createElementBlock("div", _hoisted_1$l, [
7473
+ return openBlock(), createElementBlock("div", _hoisted_1$m, [
7472
7474
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
7473
7475
  ]);
7474
7476
  }
7475
- var VGrid = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render], ["__scopeId", "data-v-203acd5e"]]);
7477
+ var VGrid = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render], ["__scopeId", "data-v-203acd5e"]]);
7476
7478
  var GridToggle_vue_vue_type_style_index_0_lang = /* @__PURE__ */ (() => ".grid-icon{width:20px;height:12px;border:2px solid transparent;background-color:transparent;grid-gap:2px}.grid-icon>div{background-color:#fff}\n")();
7477
- const _hoisted_1$k = /* @__PURE__ */ createBaseVNode("div", { class: "panel-descriptors" }, null, -1);
7479
+ const _hoisted_1$l = /* @__PURE__ */ createBaseVNode("div", { class: "panel-descriptors" }, null, -1);
7478
7480
  const _hoisted_2$a = /* @__PURE__ */ createBaseVNode("div", { class: "panel-remaining" }, null, -1);
7479
- const _hoisted_3$6 = /* @__PURE__ */ createBaseVNode("div", { class: "panel-eliminated" }, null, -1);
7480
- const _sfc_main$m = /* @__PURE__ */ defineComponent({
7481
+ const _hoisted_3$5 = /* @__PURE__ */ createBaseVNode("div", { class: "panel-eliminated" }, null, -1);
7482
+ const _sfc_main$n = /* @__PURE__ */ defineComponent({
7481
7483
  __name: "GridToggle",
7482
7484
  setup(__props) {
7483
7485
  const store = useSettingsStore();
@@ -7488,16 +7490,16 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
7488
7490
  });
7489
7491
  };
7490
7492
  return (_ctx, _cache) => {
7491
- return openBlock(), createBlock(_sfc_main$t, {
7493
+ return openBlock(), createBlock(_sfc_main$u, {
7492
7494
  class: normalizeClass(unref(LAYOUT_MODES)[unref(gridLayout)]),
7493
7495
  onClick: setLayout
7494
7496
  }, {
7495
7497
  default: withCtx(() => [
7496
7498
  createVNode(VGrid, { class: "grid-icon" }, {
7497
7499
  default: withCtx(() => [
7498
- _hoisted_1$k,
7500
+ _hoisted_1$l,
7499
7501
  _hoisted_2$a,
7500
- _hoisted_3$6
7502
+ _hoisted_3$5
7501
7503
  ]),
7502
7504
  _: 1
7503
7505
  })
@@ -7507,92 +7509,100 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
7507
7509
  };
7508
7510
  }
7509
7511
  });
7510
- const _hoisted_1$j = /* @__PURE__ */ createTextVNode(" Reset ");
7511
- const _sfc_main$l = /* @__PURE__ */ defineComponent({
7512
+ const _hoisted_1$k = /* @__PURE__ */ createTextVNode(" Reset ");
7513
+ const _sfc_main$m = /* @__PURE__ */ defineComponent({
7512
7514
  __name: "ResetButton",
7513
7515
  setup(__props) {
7514
7516
  const store = useFilterStore();
7515
7517
  return (_ctx, _cache) => {
7516
- return openBlock(), createBlock(_sfc_main$t, {
7518
+ return openBlock(), createBlock(_sfc_main$u, {
7517
7519
  color: "primary",
7518
7520
  size: "medium",
7519
7521
  onClick: _cache[0] || (_cache[0] = ($event) => unref(store).$reset())
7520
7522
  }, {
7521
7523
  default: withCtx(() => [
7522
- _hoisted_1$j
7524
+ _hoisted_1$k
7523
7525
  ]),
7524
7526
  _: 1
7525
7527
  });
7526
7528
  };
7527
7529
  }
7528
7530
  });
7529
- var HeaderBar_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => ".header-bar[data-v-2f031624]{background-color:var(--bg-panel-color);padding:1em;box-shadow:#24252614 4px 4px 15px;border-radius:.9rem;display:flex;justify-content:space-between;align-items:center}.header-bar__buttons[data-v-2f031624]{display:flex;align-items:center}\n")();
7530
- const _withScopeId$1 = (n) => (pushScopeId("data-v-2f031624"), n = n(), popScopeId(), n);
7531
+ const _hoisted_1$j = { class: "error-message" };
7532
+ const _sfc_main$l = /* @__PURE__ */ defineComponent({
7533
+ __name: "ErrorMessage",
7534
+ setup(__props) {
7535
+ const store = useSettingsStore();
7536
+ return (_ctx, _cache) => {
7537
+ return openBlock(), createElementBlock("span", _hoisted_1$j, toDisplayString(unref(store).getErrorMessage), 1);
7538
+ };
7539
+ }
7540
+ });
7541
+ var HeaderBar_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => ".header-bar[data-v-1fab3a2c]{background-color:var(--bg-panel-color);padding:1em;box-shadow:#24252614 4px 4px 15px;border-radius:.9rem;display:flex;justify-content:space-between;align-items:center}.header-bar__buttons[data-v-1fab3a2c]{display:flex;align-items:center}\n")();
7531
7542
  const _hoisted_1$i = { class: "header-bar" };
7532
- const _hoisted_2$9 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createBaseVNode("div", null, null, -1));
7533
- const _hoisted_3$5 = { class: "header-bar__buttons" };
7543
+ const _hoisted_2$9 = { class: "header-bar__buttons" };
7534
7544
  const _sfc_main$k = /* @__PURE__ */ defineComponent({
7535
7545
  __name: "HeaderBar",
7536
7546
  setup(__props) {
7537
7547
  return (_ctx, _cache) => {
7538
7548
  return openBlock(), createElementBlock("div", _hoisted_1$i, [
7539
- _hoisted_2$9,
7549
+ createVNode(_sfc_main$l),
7540
7550
  createVNode(MenuList, null, {
7541
7551
  default: withCtx(() => [
7542
7552
  createVNode(MenuListItem, null, {
7543
7553
  default: withCtx(() => [
7544
- createVNode(_sfc_main$q)
7554
+ createVNode(_sfc_main$r)
7545
7555
  ]),
7546
7556
  _: 1
7547
7557
  }),
7548
7558
  createVNode(MenuListItem, null, {
7549
7559
  default: withCtx(() => [
7550
- createVNode(_sfc_main$y)
7560
+ createVNode(_sfc_main$z)
7551
7561
  ]),
7552
7562
  _: 1
7553
7563
  }),
7554
7564
  createVNode(MenuListItem, null, {
7555
7565
  default: withCtx(() => [
7556
- createVNode(_sfc_main$x)
7566
+ createVNode(_sfc_main$y)
7557
7567
  ]),
7558
7568
  _: 1
7559
7569
  }),
7560
7570
  createVNode(MenuListItem, null, {
7561
7571
  default: withCtx(() => [
7562
- createVNode(_sfc_main$w)
7572
+ createVNode(_sfc_main$x)
7563
7573
  ]),
7564
7574
  _: 1
7565
7575
  }),
7566
7576
  createVNode(MenuListItem, null, {
7567
7577
  default: withCtx(() => [
7568
- createVNode(_sfc_main$u)
7578
+ createVNode(_sfc_main$v)
7569
7579
  ]),
7570
7580
  _: 1
7571
7581
  }),
7572
7582
  createVNode(MenuListItem, null, {
7573
7583
  default: withCtx(() => [
7574
- createVNode(_sfc_main$v)
7584
+ createVNode(_sfc_main$w)
7575
7585
  ]),
7576
7586
  _: 1
7577
7587
  }),
7578
7588
  createVNode(MenuListItem, null, {
7579
7589
  default: withCtx(() => [
7580
- createVNode(_sfc_main$r)
7590
+ createVNode(_sfc_main$s)
7581
7591
  ]),
7582
7592
  _: 1
7583
7593
  })
7584
7594
  ]),
7585
7595
  _: 1
7586
7596
  }),
7587
- createBaseVNode("div", _hoisted_3$5, [
7588
- createVNode(_sfc_main$l, { class: "margin-small-right" }),
7589
- createVNode(_sfc_main$m)
7597
+ createBaseVNode("div", _hoisted_2$9, [
7598
+ createVNode(_sfc_main$m, { class: "margin-small-right" }),
7599
+ createVNode(_sfc_main$n)
7590
7600
  ])
7591
7601
  ]);
7592
7602
  };
7593
7603
  }
7594
7604
  });
7595
- var HeaderBar = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-2f031624"]]);
7605
+ var HeaderBar = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-1fab3a2c"]]);
7596
7606
  const _hoisted_1$h = ["innerHTML"];
7597
7607
  const _sfc_main$j = /* @__PURE__ */ defineComponent({
7598
7608
  __name: "PanelRowItem",
@@ -7631,7 +7641,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
7631
7641
  const _hoisted_1$g = /* @__PURE__ */ createTextVNode(" Select ");
7632
7642
  const _hoisted_2$8 = /* @__PURE__ */ createBaseVNode("h3", null, "Filter row", -1);
7633
7643
  const _hoisted_3$4 = { class: "list-none p-0" };
7634
- const _hoisted_4$3 = ["value"];
7644
+ const _hoisted_4$4 = ["value"];
7635
7645
  const _sfc_main$h = /* @__PURE__ */ defineComponent({
7636
7646
  __name: "FilterRow",
7637
7647
  setup(__props) {
@@ -7660,7 +7670,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
7660
7670
  });
7661
7671
  return (_ctx, _cache) => {
7662
7672
  return openBlock(), createElementBlock(Fragment, null, [
7663
- createVNode(_sfc_main$t, {
7673
+ createVNode(_sfc_main$u, {
7664
7674
  color: "primary",
7665
7675
  size: "medium",
7666
7676
  onClick: _cache[0] || (_cache[0] = ($event) => isModalVisible.value = true)
@@ -7670,7 +7680,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
7670
7680
  ]),
7671
7681
  _: 1
7672
7682
  }),
7673
- isModalVisible.value ? (openBlock(), createBlock(_sfc_main$s, {
7683
+ isModalVisible.value ? (openBlock(), createBlock(_sfc_main$t, {
7674
7684
  key: 0,
7675
7685
  onClose: _cache[2] || (_cache[2] = ($event) => isModalVisible.value = false)
7676
7686
  }, {
@@ -7688,7 +7698,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
7688
7698
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(rowIds) ? rowIds.value = $event : null),
7689
7699
  value: row.rowId,
7690
7700
  type: "checkbox"
7691
- }, null, 8, _hoisted_4$3), [
7701
+ }, null, 8, _hoisted_4$4), [
7692
7702
  [vModelCheckbox, unref(rowIds)]
7693
7703
  ]),
7694
7704
  createTextVNode(" " + toDisplayString(row.objectLabel), 1)
@@ -7848,8 +7858,9 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
7848
7858
  });
7849
7859
  var DescriptorModal_vue_vue_type_style_index_0_lang = /* @__PURE__ */ (() => ".descriptor-modal{width:1000px;max-height:90vh;overflow-y:scroll}.descriptor-modal__depiction{display:flex;justify-content:center}\n")();
7850
7860
  const _hoisted_1$b = { key: 0 };
7851
- const _hoisted_2$5 = { class: "descriptor-modal__depiction" };
7852
- const _hoisted_3$3 = /* @__PURE__ */ createBaseVNode("hr", null, null, -1);
7861
+ const _hoisted_2$5 = { key: 1 };
7862
+ const _hoisted_3$3 = { class: "descriptor-modal__depiction" };
7863
+ const _hoisted_4$3 = /* @__PURE__ */ createBaseVNode("hr", null, null, -1);
7853
7864
  const _sfc_main$c = /* @__PURE__ */ defineComponent({
7854
7865
  __name: "DescriptorModal",
7855
7866
  props: {
@@ -7857,13 +7868,13 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
7857
7868
  },
7858
7869
  setup(__props) {
7859
7870
  return (_ctx, _cache) => {
7860
- return openBlock(), createBlock(_sfc_main$s, { "container-class": "descriptor-modal" }, {
7871
+ return openBlock(), createBlock(_sfc_main$t, { "container-class": "descriptor-modal" }, {
7861
7872
  header: withCtx(() => [
7862
7873
  createBaseVNode("h3", null, toDisplayString(__props.descriptor.name), 1),
7863
- __props.descriptor.description ? (openBlock(), createElementBlock("span", _hoisted_1$b, toDisplayString(__props.descriptor.description), 1)) : createCommentVNode("", true)
7874
+ __props.descriptor.description ? (openBlock(), createElementBlock("span", _hoisted_1$b, toDisplayString(__props.descriptor.description), 1)) : (openBlock(), createElementBlock("i", _hoisted_2$5, " No further description available. "))
7864
7875
  ]),
7865
7876
  body: withCtx(() => [
7866
- createBaseVNode("div", _hoisted_2$5, [
7877
+ createBaseVNode("div", _hoisted_3$3, [
7867
7878
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.descriptor.depictionIds, (depictionId) => {
7868
7879
  return openBlock(), createBlock(_sfc_main$f, {
7869
7880
  key: depictionId,
@@ -7871,7 +7882,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
7871
7882
  }, null, 8, ["depiction-id"]);
7872
7883
  }), 128))
7873
7884
  ]),
7874
- _hoisted_3$3,
7885
+ _hoisted_4$3,
7875
7886
  __props.descriptor.type === unref(descriptorTypes).Qualitative ? (openBlock(), createBlock(_sfc_main$d, {
7876
7887
  key: 0,
7877
7888
  descriptor: __props.descriptor
@@ -7928,10 +7939,16 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
7928
7939
  const useStore = useFilterStore();
7929
7940
  const fieldValue = ref(String(useStore.getDescriptorValueById(props.descriptor.descriptorId)));
7930
7941
  const setDescriptorValue = () => {
7931
- useStore.setDescriptor({
7932
- descriptorId: props.descriptor.descriptorId,
7933
- value: fieldValue.value
7934
- });
7942
+ const { descriptorId } = props.descriptor;
7943
+ const value = fieldValue.value.trim();
7944
+ if (value) {
7945
+ useStore.setDescriptor({
7946
+ descriptorId,
7947
+ value
7948
+ });
7949
+ } else {
7950
+ useStore.removeDescriptor(descriptorId);
7951
+ }
7935
7952
  };
7936
7953
  return (_ctx, _cache) => {
7937
7954
  return openBlock(), createBlock(_sfc_main$b, { descriptor: __props.descriptor }, {
@@ -8064,10 +8081,16 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
8064
8081
  const useStore = useFilterStore();
8065
8082
  const fieldValue = ref(String(useStore.getDescriptorValueById(props.descriptor.descriptorId)));
8066
8083
  const setDescriptorValue = () => {
8067
- useStore.setDescriptor({
8068
- descriptorId: props.descriptor.descriptorId,
8069
- value: fieldValue.value
8070
- });
8084
+ const { descriptorId } = props.descriptor;
8085
+ const value = fieldValue.value.trim();
8086
+ if (value) {
8087
+ useStore.setDescriptor({
8088
+ descriptorId,
8089
+ value
8090
+ });
8091
+ } else {
8092
+ useStore.removeDescriptor(descriptorId);
8093
+ }
8071
8094
  };
8072
8095
  return (_ctx, _cache) => {
8073
8096
  return openBlock(), createBlock(_sfc_main$b, { descriptor: __props.descriptor }, {
@@ -8351,19 +8374,17 @@ const __default__ = {
8351
8374
  };
8352
8375
  const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__), {
8353
8376
  props: {
8354
- observationMatrixId: { default: 1 },
8377
+ observationMatrixId: null,
8355
8378
  apiConfig: null
8356
8379
  },
8357
8380
  setup(__props) {
8358
8381
  const props = __props;
8359
8382
  const settingStore = useSettingsStore();
8360
8383
  const filterStore = useFilterStore();
8361
- useObservationMatrixStore();
8362
8384
  const isLoading = computed(() => settingStore.getIsLoading);
8363
8385
  const gridLayout = computed(() => settingStore.getLayout);
8364
8386
  const initialize = () => {
8365
- const api = useAPIConfig();
8366
- api.updatePreferences(props.apiConfig);
8387
+ settingStore.setAPIConfig(props.apiConfig);
8367
8388
  settingStore.setObservationMatrixId(props.observationMatrixId);
8368
8389
  settingStore.checkUpdate();
8369
8390
  };
@@ -8396,7 +8417,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({
8396
8417
  };
8397
8418
  }
8398
8419
  }));
8399
- var main = /* @__PURE__ */ (() => ":root{--bg-color: #f7f8fc;--bg-panel-color: #FFFFFF;--primary-color: #5D9ECE;--border-color: #CCCCCC;--link-color: #5D9ECE;--btn-medium-size: 28px}.d-block{display:block}.d-flex{display:flex}.justify-between{justify-content:space-between}.align-center{align-items:center}.w-100{height:100%}.margin-medium-bottom{margin-bottom:1em}.margin-small-right{margin-right:.5em}.p-0{padding:0}.link{color:var(--link-color);cursor:pointer}.list-none{list-style:none}body{background-color:var(--bg-color)}.vue-interactive-keys{height:calc(100vh - 160px);max-height:calc(100vh - 160px);font-family:Arial,Helvetica,sans-serif;font-size:13px}.vue-interactive-keys .grid-panel{background-color:#fff;padding:1rem;overflow-y:scroll}.vue-interactive-keys .layout-mode-1 .panel-descriptors{grid-area:1/1/2/3}.vue-interactive-keys .layout-mode-1 .panel-remaining{grid-area:2/1/3/2}.vue-interactive-keys .layout-mode-1 .panel-eliminated{grid-area:2/2/3/3}.vue-interactive-keys .layout-mode-2 .panel-descriptors{grid-area:1/1/3/2}.vue-interactive-keys .layout-mode-2 .panel-remaining{grid-area:1/2/2/3}.vue-interactive-keys .layout-mode-2 .panel-eliminated{grid-area:2/2/3/3}.vue-interactive-keys input,.vue-interactive-keys select{padding:.5em 1em;border:1px solid;border-radius:2px;border-color:var(--border-color);background-color:#fff}\n")();
8420
+ var main = /* @__PURE__ */ (() => ":root{--bg-color: #f7f8fc;--bg-panel-color: #FFFFFF;--bg-disabled-color: #e5e5e5;--disabled-color: #999;--error-color: #FF0000;--primary-color: #5D9ECE;--border-color: #CCCCCC;--link-color: #5D9ECE;--btn-medium-size: 28px}.d-block{display:block}.d-flex{display:flex}.justify-between{justify-content:space-between}.align-center{align-items:center}.w-100{height:100%}.margin-medium-bottom{margin-bottom:1em}.margin-small-right{margin-right:.5em}.p-0{padding:0}.link{color:var(--link-color);cursor:pointer}.list-none{list-style:none}body{background-color:var(--bg-color)}.vue-interactive-keys{height:calc(100vh - 160px);max-height:calc(100vh - 160px);font-family:Arial,Helvetica,sans-serif;font-size:13px}.vue-interactive-keys .grid-panel{background-color:#fff;padding:1rem;overflow-y:scroll}.vue-interactive-keys .layout-mode-1 .panel-descriptors{grid-area:1/1/2/3}.vue-interactive-keys .layout-mode-1 .panel-remaining{grid-area:2/1/3/2}.vue-interactive-keys .layout-mode-1 .panel-eliminated{grid-area:2/2/3/3}.vue-interactive-keys .layout-mode-2 .panel-descriptors{grid-area:1/1/3/2}.vue-interactive-keys .layout-mode-2 .panel-remaining{grid-area:1/2/2/3}.vue-interactive-keys .layout-mode-2 .panel-eliminated{grid-area:2/2/3/3}.vue-interactive-keys input,.vue-interactive-keys select{padding:.5em 1em;border:1px solid;border-radius:2px;border-color:var(--border-color);background-color:#fff}.vue-interactive-keys .error-message{color:var(--error-color)}\n")();
8400
8421
  function discoverInteractiveKey(selector) {
8401
8422
  const tag = selector || '[data-interactive-key="true"]';
8402
8423
  const elements = document.querySelectorAll(tag);