@platforma-sdk/ui-vue 1.48.12 → 1.48.13

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.
@@ -1,16 +1,11 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.48.12 build /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.48.13 build /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > ts-builder build --target browser-lib
5
5
 
6
6
  Building browser-lib project...
7
7
  ↳ vite.js build --config /configs/vite.browser-lib.config.js --mode production
8
8
  vite v6.3.5 building for production...
9
- src/components/PlTableFilters/filters_logic.ts:22:8 - error TS1192: Module '"/home/runner/_work/platforma/platforma/node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/index"' has no default export.
10
-
11
- 22 import semver from 'semver';
12
-    ~~~~~~
13
-
14
9
  transforming...
15
10
  ✓ 235 modules transformed.
16
11
  Export "default" of module "src/components/PlAgGridColumnManager/PlAgGridColumnManager.vue" was reexported through module "src/components/PlAgGridColumnManager/index.ts" while both modules are dependencies of each other and will end up in different chunks by current Rollup settings. This scenario is not well supported at the moment as it will produce a circular dependency between chunks and will likely lead to broken execution order.
@@ -25,8 +20,8 @@ computing gzip size...
25
20
  dist/components/PlAgCellFile/PlAgCellFile.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
26
21
  dist/components/PlAgDataTable/PlAgRowCount.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
27
22
  dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
28
- dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
29
23
  dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
24
+ dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
30
25
  dist/components/PlAgRowNumHeader.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
31
26
  dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
32
27
  dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
@@ -37,11 +32,11 @@ computing gzip size...
37
32
  dist/components/ValueOrErrorsComponent.vue2.js  0.13 kB │ gzip: 0.12 kB │ map: 0.11 kB
38
33
  dist/urls.js  0.14 kB │ gzip: 0.15 kB │ map: 0.64 kB
39
34
  dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js  0.14 kB │ gzip: 0.13 kB │ map: 0.12 kB
35
+ dist/_virtual/index.js  0.16 kB │ gzip: 0.15 kB │ map: 0.09 kB
40
36
  dist/lib/util/helpers/dist/random.js  0.16 kB │ gzip: 0.16 kB │ map: 0.74 kB
41
37
  dist/_virtual/_plugin-vue_export-helper.js  0.19 kB │ gzip: 0.17 kB │ map: 0.12 kB
42
38
  dist/components/PlAgDataTable/sources/menu-items.js  0.19 kB │ gzip: 0.16 kB │ map: 0.52 kB
43
39
  dist/lib/util/helpers/dist/functions.js  0.20 kB │ gzip: 0.17 kB │ map: 5.26 kB
44
- dist/_virtual/_commonjsHelpers.js  0.20 kB │ gzip: 0.18 kB │ map: 0.10 kB
45
40
  dist/components/PlAgDataTable/sources/common.js  0.21 kB │ gzip: 0.17 kB │ map: 0.65 kB
46
41
  dist/components/PlAnnotations/utils.js  0.21 kB │ gzip: 0.21 kB │ map: 1.06 kB
47
42
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/gt.js  0.22 kB │ gzip: 0.18 kB │ map: 0.48 kB
@@ -64,7 +59,6 @@ computing gzip size...
64
59
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare.js  0.26 kB │ gzip: 0.20 kB │ map: 0.58 kB
65
60
  dist/components/PlBtnExportArchive/Item.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
66
61
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/valid.js  0.27 kB │ gzip: 0.21 kB │ map: 0.59 kB
67
- dist/_virtual/index.js  0.27 kB │ gzip: 0.21 kB │ map: 0.09 kB
68
62
  dist/components/PlBtnExportArchive/Summary.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
69
63
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/intersects.js  0.28 kB │ gzip: 0.21 kB │ map: 0.67 kB
70
64
  dist/plugins/Monetization/RunStatus.vue.js  0.28 kB │ gzip: 0.21 kB │ map: 0.10 kB
@@ -77,8 +71,8 @@ computing gzip size...
77
71
  dist/components/PlAnnotations/components/PlAnnotations.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
78
72
  dist/components/PlAnnotations/components/FilterSidebar.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
79
73
  dist/components/PlAgDataTable/PlAgDataTableV2.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
80
- dist/plugins/Monetization/UserCabinetCard.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
81
74
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/clean.js  0.30 kB │ gzip: 0.23 kB │ map: 0.65 kB
75
+ dist/plugins/Monetization/UserCabinetCard.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
82
76
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/prerelease.js  0.30 kB │ gzip: 0.22 kB │ map: 0.68 kB
83
77
  dist/components/PlTableFilters/PlTableFiltersV2.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
84
78
  dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
@@ -206,7 +200,7 @@ computing gzip size...
206
200
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/range.js  7.70 kB │ gzip: 2.49 kB │ map: 25.65 kB
207
201
  dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js  8.33 kB │ gzip: 2.42 kB │ map: 16.80 kB
208
202
  dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/core.js  8.44 kB │ gzip: 2.53 kB │ map: 29.29 kB
209
- dist/components/PlTableFilters/filters_logic.js  9.18 kB │ gzip: 2.18 kB │ map: 20.22 kB
203
+ dist/components/PlTableFilters/filters_logic.js  9.19 kB │ gzip: 2.18 kB │ map: 20.23 kB
210
204
  dist/components/PlAdvancedFilter/FilterEditor.vue2.js 12.66 kB │ gzip: 3.26 kB │ map: 24.94 kB
211
205
  dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js 35.48 kB │ gzip: 26.70 kB │ map: 0.11 kB
212
206
  dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js 41.43 kB │ gzip: 30.91 kB │ map: 0.12 kB
@@ -216,7 +210,7 @@ computing gzip size...
216
210
  dist/components/PlAgRowNumHeader.vue.js 44.62 kB │ gzip: 29.27 kB │ map: 4.05 kB
217
211
  dist/AgGridVue/useAgGridOptions.js 49.01 kB │ gzip: 30.10 kB │ map: 15.74 kB
218
212
  dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js 50.40 kB │ gzip: 31.07 kB │ map: 34.82 kB
219
- [vite:dts] Declaration files built in 5668ms.
213
+ [vite:dts] Declaration files built in 6923ms.
220
214
 
221
- ✓ built in 7.48s
215
+ ✓ built in 8.84s
222
216
  Build completed successfully
@@ -1,5 +1,5 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.48.12 lint /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.48.13 lint /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > eslint .
5
5
 
@@ -1,6 +1,6 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.48.12 type-check /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.48.13 type-check /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > ts-builder types --target browser-lib
5
5
 
6
6
  ↳ vue-tsc.js --noEmit --project ./tsconfig.json --customConditions ,
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @platforma-sdk/ui-vue
2
2
 
3
+ ## 1.48.13
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [72bb768]
8
+ - @platforma-sdk/model@1.48.13
9
+ - @milaboratories/uikit@2.8.5
10
+
3
11
  ## 1.48.12
4
12
 
5
13
  ### Patch Changes
@@ -1,8 +1,6 @@
1
- import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as e } from "../node_modules/.pnpm/semver@7.7.2/node_modules/semver/index.js";
3
- var o = e();
4
- const s = /* @__PURE__ */ r(o);
1
+ import { __require as r } from "../node_modules/.pnpm/semver@7.7.2/node_modules/semver/index.js";
2
+ var s = r();
5
3
  export {
6
- s as default
4
+ s
7
5
  };
8
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlAnnotations.vue2.js","sources":["../../../../src/components/PlAnnotations/components/PlAnnotations.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Props as BaseProps } from './FilterSidebar.vue';\nexport type Props = BaseProps & {\n onDeleteSchema?: () => void;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, effect, shallowRef } from 'vue';\n\nimport { isNil } from '@milaboratories/helpers';\nimport { PlSidebarGroup, useConfirm } from '@milaboratories/uikit';\n\nimport type { Annotation } from '../types';\nimport AnnotationsSidebar from './AnnotationsSidebar.vue';\nimport FilterSidebar from './FilterSidebar.vue';\n\n// Models\nconst annotation = defineModel<Annotation>('annotation', { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\nconst selectedStep = computed(() => {\n return isNil(selectedStepId.value) || isNil(annotation.value)\n ? undefined\n : annotation.value.steps.find((step) => step.id === selectedStepId.value);\n});\n\n// Watchers\neffect(function setDefaultStepId() {\n if (selectedStepId.value === undefined && annotation.value.steps.length > 0) {\n selectedStepId.value = annotation.value.steps[0].id;\n }\n});\n// Hooks\nconst confirmResetSchema = useConfirm({\n title: 'Reset Schema',\n message: 'Are you sure you want to reset the schema? This action cannot be undone.',\n confirmLabel: 'Yes, reset',\n cancelLabel: 'No, cancel',\n});\n// Actions\nasync function handleDeleteSchema() {\n if (await confirmResetSchema()) {\n selectedStepId.value = undefined;\n props.onDeleteSchema?.();\n }\n}\n\n</script>\n\n<template>\n <PlSidebarGroup>\n <template #item-0>\n <AnnotationsSidebar\n v-model:annotation=\"annotation\"\n v-model:selectedStepId=\"selectedStepId\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </template>\n <template #item-1>\n <FilterSidebar\n v-if=\"selectedStep\"\n v-model:step=\"selectedStep\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :selectedStepId=\"selectedStepId\"\n :hasSelectedColumns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n />\n </template>\n </PlSidebarGroup>\n</template>\n\n<style module>\n.sidebarItem {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["annotation","_useModel","props","__props","selectedStepId","shallowRef","selectedStep","computed","isNil","step","effect","confirmResetSchema","useConfirm","handleDeleteSchema","_a","_createBlock","_unref","PlSidebarGroup","_createVNode","AnnotationsSidebar","$event","_normalizeClass","$style","FilterSidebar"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,UAAMA,IAAaC,KAAwB,YAAgC,GAErEC,IAAQC,GAERC,IAAiBC,EAA+B,MAAS,GACzDC,IAAeC,EAAS,MACrBC,EAAMJ,EAAe,KAAK,KAAKI,EAAMR,EAAW,KAAK,IACxD,SACAA,EAAW,MAAM,MAAM,KAAK,CAACS,MAASA,EAAK,OAAOL,EAAe,KAAK,CAC3E;AAGD,IAAAM,EAAO,WAA4B;AACjC,MAAIN,EAAe,UAAU,UAAaJ,EAAW,MAAM,MAAM,SAAS,MACxEI,EAAe,QAAQJ,EAAW,MAAM,MAAM,CAAC,EAAE;AAAA,IAErD,CAAC;AAED,UAAMW,IAAqBC,EAAW;AAAA,MACpC,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,aAAa;AAAA,IAAA,CACd;AAED,mBAAeC,IAAqB;;AAClC,MAAI,MAAMF,QACRP,EAAe,QAAQ,SACvBU,IAAAZ,EAAM,mBAAN,QAAAY,EAAA,KAAAZ;AAAA,IAEJ;2BAKEa,EAsBiBC,EAAAC,CAAA,GAAA,MAAA;AAAA,MArBJ,YACT,MAME;AAAA,QANFC,EAMEC,GAAA;AAAA,UALQ,YAAYnB,EAAA;AAAA,wDAAAA,EAAU,QAAAoB;AAAA,UACtB,gBAAgBhB,EAAA;AAAA,4DAAAA,EAAc,QAAAgB;AAAA,UACrC,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,gBAAeW;AAAA,QAAA;;MAGT,YACT,MASE;AAAA,QARMP,EAAA,cADRS,EASEQ,GAAA;AAAA;UAPQ,MAAMjB,EAAA;AAAA,kDAAAA,EAAY,QAAAc;AAAA,UACzB,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,uBAAqBA,EAAM;AAAA,UAC3B,gBAAgBE,EAAA;AAAA,UAChB,oBAAoBF,EAAM;AAAA,UAC1B,6BAA6BA,EAAM;AAAA,QAAA;;;;;;"}
1
+ {"version":3,"file":"PlAnnotations.vue2.js","sources":["../../../../src/components/PlAnnotations/components/PlAnnotations.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Props as BaseProps } from './FilterSidebar.vue';\nexport type Props = BaseProps & {\n onDeleteSchema?: () => void;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, effect, shallowRef } from 'vue';\n\nimport { isNil } from '@milaboratories/helpers';\nimport { PlSidebarGroup, useConfirm } from '@milaboratories/uikit';\n\nimport type { Annotation } from '../types';\nimport AnnotationsSidebar from './AnnotationsSidebar.vue';\nimport FilterSidebar from './FilterSidebar.vue';\n\n// Models\nconst annotation = defineModel<Annotation>('annotation', { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\nconst selectedStep = computed(() => {\n return isNil(selectedStepId.value) || isNil(annotation.value)\n ? undefined\n : annotation.value.steps.find((step) => step.id === selectedStepId.value);\n});\n\n// Watchers\neffect(function setDefaultStepId() {\n if (selectedStepId.value === undefined && annotation.value.steps.length > 0) {\n selectedStepId.value = annotation.value.steps[0].id;\n }\n});\n// Hooks\nconst confirmResetSchema = useConfirm({\n title: 'Reset Schema',\n message: 'Are you sure you want to reset the schema? This action cannot be undone.',\n confirmLabel: 'Yes, reset',\n cancelLabel: 'No, cancel',\n});\n// Actions\nasync function handleDeleteSchema() {\n if (await confirmResetSchema()) {\n selectedStepId.value = undefined;\n props.onDeleteSchema?.();\n }\n}\n\n</script>\n\n<template>\n <PlSidebarGroup>\n <template #item-0>\n <AnnotationsSidebar\n v-model:annotation=\"annotation\"\n v-model:selectedStepId=\"selectedStepId\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </template>\n <template #item-1>\n <FilterSidebar\n v-if=\"selectedStep\"\n v-model:step=\"selectedStep\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :selectedStepId=\"selectedStepId\"\n :hasSelectedColumns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n />\n </template>\n </PlSidebarGroup>\n</template>\n\n<style module>\n.sidebarItem {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["annotation","_useModel","props","__props","selectedStepId","shallowRef","selectedStep","computed","isNil","step","effect","confirmResetSchema","useConfirm","handleDeleteSchema","_a","_createBlock","_unref","PlSidebarGroup","_createVNode","AnnotationsSidebar","$event","_normalizeClass","$style","FilterSidebar"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,UAAMA,IAAaC,KAAwB,YAAgC,GAErEC,IAAQC,GAERC,IAAiBC,EAA+B,MAAS,GACzDC,IAAeC,EAAS,MACrBC,EAAMJ,EAAe,KAAK,KAAKI,EAAMR,EAAW,KAAK,IACxD,SACAA,EAAW,MAAM,MAAM,KAAK,CAACS,MAASA,EAAK,OAAOL,EAAe,KAAK,CAC3E;AAGD,IAAAM,EAAO,WAA4B;AACjC,MAAIN,EAAe,UAAU,UAAaJ,EAAW,MAAM,MAAM,SAAS,MACxEI,EAAe,QAAQJ,EAAW,MAAM,MAAM,CAAC,EAAE;AAAA,IAErD,CAAC;AAED,UAAMW,IAAqBC,EAAW;AAAA,MACpC,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,aAAa;AAAA,IAAA,CACd;AAED,mBAAeC,IAAqB;;AAClC,MAAI,MAAMF,QACRP,EAAe,QAAQ,SACvBU,IAAAZ,EAAM,mBAAN,QAAAY,EAAA,KAAAZ;AAAA,IAEJ;2BAKEa,EAsBiBC,EAAAC,CAAA,GAAA,MAAA;AAAA,MArBJ,YACT,MAME;AAAA,QANFC,EAMEC,GAAA;AAAA,UALQ,YAAYnB,EAAA;AAAA,wDAAAA,EAAU,QAAAoB;AAAA,UACtB,gBAAgBhB,EAAA;AAAA,4DAAAA,EAAc,QAAAgB;AAAA,UACrC,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,gBAAeW;AAAA,QAAA;;MAGT,YAV2E,MAU7C;AAAA,QAE/BP,EAAA,cADRS,EASEQ,GAAA;AAAA;UAPQ,MAAMjB,EAAA;AAAA,kDAAAA,EAAY,QAAAc;AAAA,UACzB,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,uBAAqBA,EAAM;AAAA,UAC3B,gBAAgBE,EAAA;AAAA,UAChB,oBAAoBF,EAAM;AAAA,UAC1B,6BAA6BA,EAAM;AAAA,QAAA;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { readAnnotationJson as p, Annotation as a, readDomain as i, Domain as c, readAnnotation as u, parseJson as d, getRawPlatformaInstance as h } from "@platforma-sdk/model";
2
- import _ from "../../_virtual/index.js";
2
+ import { s as _ } from "../../_virtual/index.js";
3
3
  function T(e, r, n) {
4
4
  if (!r.some((s) => s.value === e.type)) return !1;
5
5
  if (l(e.type) && n.length > 0) {
@@ -174,7 +174,7 @@ function C(e) {
174
174
  throw r instanceof SyntaxError ? Error("Model value is not a regexp.") : r;
175
175
  }
176
176
  }
177
- function z(e, r) {
177
+ function x(e, r) {
178
178
  const n = i(e.spec, c.Alphabet) ?? u(e.spec, a.Alphabet);
179
179
  return n === "nucleotide" ? [{
180
180
  label: "N",
@@ -187,7 +187,7 @@ function z(e, r) {
187
187
  value: s
188
188
  }));
189
189
  }
190
- function x(e) {
190
+ function z(e) {
191
191
  const r = u(e.spec, a.DiscreteValues);
192
192
  if (!r) return [];
193
193
  try {
@@ -328,9 +328,9 @@ export {
328
328
  A as isFilterDiscrete,
329
329
  l as isFilterDiscreteType,
330
330
  T as isFilterValid,
331
- x as makeDiscreteOptions,
331
+ z as makeDiscreteOptions,
332
332
  S as makePredicate,
333
- z as makeWildcardOptions,
333
+ x as makeWildcardOptions,
334
334
  F as parseNumber,
335
335
  C as parseRegex,
336
336
  O as parseString
@@ -1 +1 @@
1
- {"version":3,"file":"filters_logic.js","sources":["../../../src/components/PlTableFilters/filters_logic.ts"],"sourcesContent":["import type {\n PlTableFilterNumberEquals,\n PlTableFilterNumberNotEquals,\n PlTableFilterStringEquals,\n PlTableFilterStringNotEquals,\n} from '@platforma-sdk/model';\nimport {\n type SingleValuePredicateV2,\n type PlTableFilterType,\n type PlTableFilterNumberType,\n type PlTableFilterStringType,\n type PlTableFilter,\n type PTableColumnSpec,\n getRawPlatformaInstance,\n readDomain,\n Annotation,\n Domain,\n readAnnotation,\n parseJson,\n readAnnotationJson,\n} from '@platforma-sdk/model';\nimport semver from 'semver';\nimport type { ListOption } from '@milaboratories/uikit';\n\nexport function isFilterValid(\n filter: PlTableFilter,\n options: ListOption<number | string>[],\n discreteOptions: ListOption<number | string>[],\n): boolean {\n const validOption = options.some((o) => o.value === filter.type);\n if (!validOption) return false;\n\n if (isFilterDiscreteType(filter.type) && discreteOptions.length > 0) {\n const reference = getFilterReference(filter);\n return discreteOptions.some((option) => option.value === reference);\n }\n\n return true;\n}\n\nexport function getFilterLabel(type: PlTableFilterType): string {\n switch (type) {\n case 'isNotNA':\n return 'Is not NA';\n case 'isNA':\n return 'Is NA';\n case 'number_equals':\n case 'string_equals':\n return 'Equals';\n case 'number_notEquals':\n case 'string_notEquals':\n return 'Not equals';\n case 'number_greaterThan':\n return 'Greater than';\n case 'number_greaterThanOrEqualTo':\n return 'Greater than or equal to';\n case 'number_lessThan':\n return 'Less than';\n case 'number_lessThanOrEqualTo':\n return 'Less than or equal to';\n case 'number_between':\n return 'Between';\n case 'string_contains':\n return 'Contains';\n case 'string_doesNotContain':\n return 'Does not contain';\n case 'string_matches':\n return 'Matches';\n case 'string_doesNotMatch':\n return 'Does not match';\n case 'string_containsFuzzyMatch':\n return 'Contains fuzzy match';\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport const filterTypesNumber: PlTableFilterNumberType[] = [\n 'isNotNA',\n 'isNA',\n 'number_equals',\n 'number_notEquals',\n 'number_greaterThan',\n 'number_greaterThanOrEqualTo',\n 'number_lessThan',\n 'number_lessThanOrEqualTo',\n 'number_between',\n] as const;\n\nexport const filterTypesString: PlTableFilterStringType[] = [\n 'isNotNA',\n 'isNA',\n 'string_equals',\n 'string_notEquals',\n 'string_contains',\n 'string_doesNotContain',\n 'string_matches',\n 'string_doesNotMatch',\n 'string_containsFuzzyMatch',\n] as const;\n\nexport function getFilterOptions(column: PTableColumnSpec): ListOption<PlTableFilterType>[] {\n const valueType = column.type === 'column' ? column.spec.valueType : column.spec.type;\n const types: PlTableFilterType[] = valueType === 'String' ? filterTypesString : filterTypesNumber;\n return types\n .filter((type) => column.type === 'axis' ? type !== 'isNotNA' && type !== 'isNA' : true)\n .map((type) => ({ value: type, text: getFilterLabel(type) }));\n}\n\nexport type PlTableFilterDiscrete =\n | PlTableFilterNumberEquals\n | PlTableFilterNumberNotEquals\n | PlTableFilterStringEquals\n | PlTableFilterStringNotEquals;\n\nexport type PlTableFilterDiscreteType = PlTableFilterDiscrete['type'];\n\nexport const filterTypesDiscrete: PlTableFilterDiscreteType[] = [\n 'number_equals',\n 'number_notEquals',\n 'string_equals',\n 'string_notEquals',\n] as const;\n\nexport const isFilterDiscreteType = (\n filter: PlTableFilterType,\n): filter is PlTableFilterDiscreteType => {\n return (filterTypesDiscrete as PlTableFilterType[]).includes(filter);\n};\n\nexport const isFilterDiscrete = (filter: PlTableFilter): filter is PlTableFilterDiscrete => {\n return isFilterDiscreteType(filter.type);\n};\n\nexport function getColumnName(column: PTableColumnSpec, index: string | number) {\n return readAnnotation(column.spec, Annotation.Label)?.trim() ?? 'Unlabeled ' + column.type + ' ' + index.toString();\n}\n\nexport function getFilterReference(filter: PlTableFilter): undefined | number | string {\n const type = filter.type;\n switch (type) {\n case 'isNotNA':\n case 'isNA':\n return undefined;\n case 'number_equals':\n case 'number_notEquals':\n case 'number_greaterThan':\n case 'number_greaterThanOrEqualTo':\n case 'number_lessThan':\n case 'number_lessThanOrEqualTo':\n return filter.reference;\n case 'number_between':\n return filter.lowerBound;\n case 'string_equals':\n case 'string_notEquals':\n case 'string_contains':\n case 'string_doesNotContain':\n case 'string_matches':\n case 'string_doesNotMatch':\n case 'string_containsFuzzyMatch':\n return filter.reference;\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport function getFilterDefault(type: PlTableFilterType, reference?: undefined | number | string): PlTableFilter {\n switch (type) {\n case 'isNotNA':\n case 'isNA':\n return { type };\n case 'number_equals':\n case 'number_notEquals':\n case 'number_greaterThan':\n case 'number_greaterThanOrEqualTo':\n case 'number_lessThan':\n case 'number_lessThanOrEqualTo':\n return { type, reference: typeof reference === 'number' ? reference : 0 };\n case 'number_between':\n return {\n type,\n lowerBound: typeof reference === 'number' ? reference : 0,\n includeLowerBound: true,\n upperBound: 100,\n includeUpperBound: false,\n };\n case 'string_equals':\n case 'string_notEquals':\n case 'string_contains':\n case 'string_doesNotContain':\n case 'string_matches':\n case 'string_doesNotMatch':\n return { type, reference: typeof reference === 'string' ? reference : '' };\n case 'string_containsFuzzyMatch':\n return {\n type,\n reference: typeof reference === 'string' ? reference : '',\n maxEdits: 2,\n substitutionsOnly: false,\n wildcard: undefined,\n };\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport function changeFilter(\n filter: PlTableFilter,\n type: PlTableFilterType,\n discreteOptions: ListOption<number | string>[],\n): PlTableFilter {\n let reference = getFilterReference(filter);\n if (isFilterDiscreteType(type)\n && discreteOptions !== undefined\n && discreteOptions.length > 0\n && !discreteOptions.some((option) => option.value === reference)) {\n reference = discreteOptions[0].value;\n }\n return getFilterDefault(type, reference);\n}\n\nexport function parseNumber(column: PTableColumnSpec, value: string): number {\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) throw Error('Model value is not a number.');\n\n const type = column.type === 'column' ? column.spec.valueType : column.spec.type;\n if ((type === 'Int' || type === 'Long') && !Number.isInteger(parsed)) throw Error('Model value is not an integer.');\n\n const min = readAnnotationJson(column.spec, Annotation.Min);\n if (min !== undefined) {\n if (Number.isFinite(min) && parsed < min) {\n throw Error('Model value is too low.');\n }\n }\n\n const max = readAnnotationJson(column.spec, Annotation.Max);\n if (max !== undefined) {\n if (Number.isFinite(max) && parsed > max) {\n throw Error('Model value is too high.');\n }\n }\n\n return parsed;\n}\n\nexport function parseString(column: PTableColumnSpec, value: string): string {\n const alphabet = readDomain(column.spec, Domain.Alphabet) ?? readAnnotation(column.spec, Annotation.Alphabet);\n if (alphabet === 'nucleotide' && !/^[AaTtGgCcNn]+$/.test(value)) throw Error('Model value is not a nucleotide.');\n if (alphabet === 'aminoacid' && !/^[AaCcDdEeFfGgHhIiKkLlMmNnPpQqRrSsTtVvWwYyXx*_]+$/.test(value)) throw Error('Model value is not an aminoacid.');\n return value;\n}\n\nexport function parseRegex(value: string): string {\n try {\n new RegExp(value);\n return value;\n } catch (err: unknown) {\n if (err instanceof SyntaxError) throw Error('Model value is not a regexp.');\n throw err;\n }\n}\n\nexport function makeWildcardOptions(\n column: PTableColumnSpec,\n reference: string,\n): ListOption<string>[] {\n const alphabet = readDomain(column.spec, Domain.Alphabet) ?? readAnnotation(column.spec, Annotation.Alphabet);\n if (alphabet === 'nucleotide') {\n return [{\n label: 'N',\n value: 'N',\n }];\n }\n if (alphabet === 'aminoacid') {\n return [{\n label: 'X',\n value: 'X',\n }];\n }\n\n const chars = [...new Set<string>(reference).keys()];\n return chars.sort().map((char) => ({\n label: char,\n value: char,\n }));\n}\n\nexport function makeDiscreteOptions(column: PTableColumnSpec): ListOption<number | string>[] {\n const discreteValuesAnnotation = readAnnotation(column.spec, Annotation.DiscreteValues);\n if (!discreteValuesAnnotation) return [];\n\n try {\n const discreteValues = parseJson<number[] | string[]>(discreteValuesAnnotation);\n return discreteValues.map((v) => ({\n label: `${v}`,\n value: v,\n }));\n } catch (err: unknown) {\n console.error(`Column ${column.id} has invalid '${Annotation.DiscreteValues}' annotation: '${discreteValuesAnnotation}'`, err);\n return [];\n }\n}\n\nexport function isAlphabetic(column: PTableColumnSpec): boolean {\n return semver.gt(getRawPlatformaInstance().sdkInfo.sdkVersion, '1.14.0')\n && (column.type === 'column' ? column.spec.valueType : column.spec.type) === 'String'\n && (readDomain(column.spec, Domain.Alphabet) ?? readAnnotation(column.spec, Annotation.Alphabet)) !== undefined;\n}\n\nexport function makePredicate(alphabetic: boolean, filter: PlTableFilter): SingleValuePredicateV2 {\n const type = filter.type;\n switch (type) {\n case 'isNotNA':\n return {\n operator: 'Not',\n operand: {\n operator: 'IsNA',\n },\n };\n case 'isNA':\n return {\n operator: 'IsNA',\n };\n case 'number_equals':\n return {\n operator: 'Equal',\n reference: filter.reference,\n };\n case 'string_equals':\n return {\n operator: alphabetic ? 'IEqual' : 'Equal',\n reference: filter.reference as string,\n };\n case 'number_notEquals':\n return {\n operator: 'Not',\n operand: {\n operator: 'Equal',\n reference: filter.reference,\n },\n };\n case 'string_notEquals':\n return {\n operator: 'Not',\n operand: {\n operator: alphabetic ? 'IEqual' : 'Equal',\n reference: filter.reference,\n },\n };\n case 'number_greaterThan':\n return {\n operator: 'Greater',\n reference: filter.reference,\n };\n case 'number_greaterThanOrEqualTo':\n return {\n operator: 'GreaterOrEqual',\n reference: filter.reference,\n };\n case 'number_lessThan':\n return {\n operator: 'Less',\n reference: filter.reference,\n };\n case 'number_lessThanOrEqualTo':\n return {\n operator: 'LessOrEqual',\n reference: filter.reference,\n };\n case 'number_between':\n return {\n operator: 'And',\n operands: [\n {\n operator: filter.includeLowerBound ? 'GreaterOrEqual' : 'Greater',\n reference: filter.lowerBound,\n },\n {\n operator: filter.includeUpperBound ? 'LessOrEqual' : 'Less',\n reference: filter.upperBound,\n },\n ],\n };\n case 'string_contains':\n return {\n operator: alphabetic ? 'StringIContains' : 'StringContains',\n substring: filter.reference,\n };\n case 'string_doesNotContain':\n return {\n operator: 'Not',\n operand: {\n operator: alphabetic ? 'StringIContains' : 'StringContains',\n substring: filter.reference,\n },\n };\n case 'string_matches':\n return {\n operator: 'Matches',\n regex: filter.reference,\n };\n case 'string_doesNotMatch':\n return {\n operator: 'Not',\n operand: {\n operator: 'Matches',\n regex: filter.reference,\n },\n };\n case 'string_containsFuzzyMatch':\n return {\n operator: alphabetic ? 'StringIContainsFuzzy' : 'StringContainsFuzzy',\n reference: filter.reference,\n maxEdits: filter.maxEdits,\n substitutionsOnly: filter.substitutionsOnly,\n wildcard: filter.wildcard,\n };\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n"],"names":["isFilterValid","filter","options","discreteOptions","o","isFilterDiscreteType","reference","getFilterReference","option","getFilterLabel","type","filterTypesNumber","filterTypesString","getFilterOptions","column","filterTypesDiscrete","isFilterDiscrete","getColumnName","index","_a","readAnnotation","Annotation","getFilterDefault","changeFilter","parseNumber","value","parsed","min","readAnnotationJson","max","parseString","alphabet","readDomain","Domain","parseRegex","err","makeWildcardOptions","char","makeDiscreteOptions","discreteValuesAnnotation","parseJson","v","isAlphabetic","semver","getRawPlatformaInstance","makePredicate","alphabetic"],"mappings":"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"}
1
+ {"version":3,"file":"filters_logic.js","sources":["../../../src/components/PlTableFilters/filters_logic.ts"],"sourcesContent":["import type {\n PlTableFilterNumberEquals,\n PlTableFilterNumberNotEquals,\n PlTableFilterStringEquals,\n PlTableFilterStringNotEquals,\n} from '@platforma-sdk/model';\nimport {\n type SingleValuePredicateV2,\n type PlTableFilterType,\n type PlTableFilterNumberType,\n type PlTableFilterStringType,\n type PlTableFilter,\n type PTableColumnSpec,\n getRawPlatformaInstance,\n readDomain,\n Annotation,\n Domain,\n readAnnotation,\n parseJson,\n readAnnotationJson,\n} from '@platforma-sdk/model';\nimport * as semver from 'semver';\nimport type { ListOption } from '@milaboratories/uikit';\n\nexport function isFilterValid(\n filter: PlTableFilter,\n options: ListOption<number | string>[],\n discreteOptions: ListOption<number | string>[],\n): boolean {\n const validOption = options.some((o) => o.value === filter.type);\n if (!validOption) return false;\n\n if (isFilterDiscreteType(filter.type) && discreteOptions.length > 0) {\n const reference = getFilterReference(filter);\n return discreteOptions.some((option) => option.value === reference);\n }\n\n return true;\n}\n\nexport function getFilterLabel(type: PlTableFilterType): string {\n switch (type) {\n case 'isNotNA':\n return 'Is not NA';\n case 'isNA':\n return 'Is NA';\n case 'number_equals':\n case 'string_equals':\n return 'Equals';\n case 'number_notEquals':\n case 'string_notEquals':\n return 'Not equals';\n case 'number_greaterThan':\n return 'Greater than';\n case 'number_greaterThanOrEqualTo':\n return 'Greater than or equal to';\n case 'number_lessThan':\n return 'Less than';\n case 'number_lessThanOrEqualTo':\n return 'Less than or equal to';\n case 'number_between':\n return 'Between';\n case 'string_contains':\n return 'Contains';\n case 'string_doesNotContain':\n return 'Does not contain';\n case 'string_matches':\n return 'Matches';\n case 'string_doesNotMatch':\n return 'Does not match';\n case 'string_containsFuzzyMatch':\n return 'Contains fuzzy match';\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport const filterTypesNumber: PlTableFilterNumberType[] = [\n 'isNotNA',\n 'isNA',\n 'number_equals',\n 'number_notEquals',\n 'number_greaterThan',\n 'number_greaterThanOrEqualTo',\n 'number_lessThan',\n 'number_lessThanOrEqualTo',\n 'number_between',\n] as const;\n\nexport const filterTypesString: PlTableFilterStringType[] = [\n 'isNotNA',\n 'isNA',\n 'string_equals',\n 'string_notEquals',\n 'string_contains',\n 'string_doesNotContain',\n 'string_matches',\n 'string_doesNotMatch',\n 'string_containsFuzzyMatch',\n] as const;\n\nexport function getFilterOptions(column: PTableColumnSpec): ListOption<PlTableFilterType>[] {\n const valueType = column.type === 'column' ? column.spec.valueType : column.spec.type;\n const types: PlTableFilterType[] = valueType === 'String' ? filterTypesString : filterTypesNumber;\n return types\n .filter((type) => column.type === 'axis' ? type !== 'isNotNA' && type !== 'isNA' : true)\n .map((type) => ({ value: type, text: getFilterLabel(type) }));\n}\n\nexport type PlTableFilterDiscrete =\n | PlTableFilterNumberEquals\n | PlTableFilterNumberNotEquals\n | PlTableFilterStringEquals\n | PlTableFilterStringNotEquals;\n\nexport type PlTableFilterDiscreteType = PlTableFilterDiscrete['type'];\n\nexport const filterTypesDiscrete: PlTableFilterDiscreteType[] = [\n 'number_equals',\n 'number_notEquals',\n 'string_equals',\n 'string_notEquals',\n] as const;\n\nexport const isFilterDiscreteType = (\n filter: PlTableFilterType,\n): filter is PlTableFilterDiscreteType => {\n return (filterTypesDiscrete as PlTableFilterType[]).includes(filter);\n};\n\nexport const isFilterDiscrete = (filter: PlTableFilter): filter is PlTableFilterDiscrete => {\n return isFilterDiscreteType(filter.type);\n};\n\nexport function getColumnName(column: PTableColumnSpec, index: string | number) {\n return readAnnotation(column.spec, Annotation.Label)?.trim() ?? 'Unlabeled ' + column.type + ' ' + index.toString();\n}\n\nexport function getFilterReference(filter: PlTableFilter): undefined | number | string {\n const type = filter.type;\n switch (type) {\n case 'isNotNA':\n case 'isNA':\n return undefined;\n case 'number_equals':\n case 'number_notEquals':\n case 'number_greaterThan':\n case 'number_greaterThanOrEqualTo':\n case 'number_lessThan':\n case 'number_lessThanOrEqualTo':\n return filter.reference;\n case 'number_between':\n return filter.lowerBound;\n case 'string_equals':\n case 'string_notEquals':\n case 'string_contains':\n case 'string_doesNotContain':\n case 'string_matches':\n case 'string_doesNotMatch':\n case 'string_containsFuzzyMatch':\n return filter.reference;\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport function getFilterDefault(type: PlTableFilterType, reference?: undefined | number | string): PlTableFilter {\n switch (type) {\n case 'isNotNA':\n case 'isNA':\n return { type };\n case 'number_equals':\n case 'number_notEquals':\n case 'number_greaterThan':\n case 'number_greaterThanOrEqualTo':\n case 'number_lessThan':\n case 'number_lessThanOrEqualTo':\n return { type, reference: typeof reference === 'number' ? reference : 0 };\n case 'number_between':\n return {\n type,\n lowerBound: typeof reference === 'number' ? reference : 0,\n includeLowerBound: true,\n upperBound: 100,\n includeUpperBound: false,\n };\n case 'string_equals':\n case 'string_notEquals':\n case 'string_contains':\n case 'string_doesNotContain':\n case 'string_matches':\n case 'string_doesNotMatch':\n return { type, reference: typeof reference === 'string' ? reference : '' };\n case 'string_containsFuzzyMatch':\n return {\n type,\n reference: typeof reference === 'string' ? reference : '',\n maxEdits: 2,\n substitutionsOnly: false,\n wildcard: undefined,\n };\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport function changeFilter(\n filter: PlTableFilter,\n type: PlTableFilterType,\n discreteOptions: ListOption<number | string>[],\n): PlTableFilter {\n let reference = getFilterReference(filter);\n if (isFilterDiscreteType(type)\n && discreteOptions !== undefined\n && discreteOptions.length > 0\n && !discreteOptions.some((option) => option.value === reference)) {\n reference = discreteOptions[0].value;\n }\n return getFilterDefault(type, reference);\n}\n\nexport function parseNumber(column: PTableColumnSpec, value: string): number {\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) throw Error('Model value is not a number.');\n\n const type = column.type === 'column' ? column.spec.valueType : column.spec.type;\n if ((type === 'Int' || type === 'Long') && !Number.isInteger(parsed)) throw Error('Model value is not an integer.');\n\n const min = readAnnotationJson(column.spec, Annotation.Min);\n if (min !== undefined) {\n if (Number.isFinite(min) && parsed < min) {\n throw Error('Model value is too low.');\n }\n }\n\n const max = readAnnotationJson(column.spec, Annotation.Max);\n if (max !== undefined) {\n if (Number.isFinite(max) && parsed > max) {\n throw Error('Model value is too high.');\n }\n }\n\n return parsed;\n}\n\nexport function parseString(column: PTableColumnSpec, value: string): string {\n const alphabet = readDomain(column.spec, Domain.Alphabet) ?? readAnnotation(column.spec, Annotation.Alphabet);\n if (alphabet === 'nucleotide' && !/^[AaTtGgCcNn]+$/.test(value)) throw Error('Model value is not a nucleotide.');\n if (alphabet === 'aminoacid' && !/^[AaCcDdEeFfGgHhIiKkLlMmNnPpQqRrSsTtVvWwYyXx*_]+$/.test(value)) throw Error('Model value is not an aminoacid.');\n return value;\n}\n\nexport function parseRegex(value: string): string {\n try {\n new RegExp(value);\n return value;\n } catch (err: unknown) {\n if (err instanceof SyntaxError) throw Error('Model value is not a regexp.');\n throw err;\n }\n}\n\nexport function makeWildcardOptions(\n column: PTableColumnSpec,\n reference: string,\n): ListOption<string>[] {\n const alphabet = readDomain(column.spec, Domain.Alphabet) ?? readAnnotation(column.spec, Annotation.Alphabet);\n if (alphabet === 'nucleotide') {\n return [{\n label: 'N',\n value: 'N',\n }];\n }\n if (alphabet === 'aminoacid') {\n return [{\n label: 'X',\n value: 'X',\n }];\n }\n\n const chars = [...new Set<string>(reference).keys()];\n return chars.sort().map((char) => ({\n label: char,\n value: char,\n }));\n}\n\nexport function makeDiscreteOptions(column: PTableColumnSpec): ListOption<number | string>[] {\n const discreteValuesAnnotation = readAnnotation(column.spec, Annotation.DiscreteValues);\n if (!discreteValuesAnnotation) return [];\n\n try {\n const discreteValues = parseJson<number[] | string[]>(discreteValuesAnnotation);\n return discreteValues.map((v) => ({\n label: `${v}`,\n value: v,\n }));\n } catch (err: unknown) {\n console.error(`Column ${column.id} has invalid '${Annotation.DiscreteValues}' annotation: '${discreteValuesAnnotation}'`, err);\n return [];\n }\n}\n\nexport function isAlphabetic(column: PTableColumnSpec): boolean {\n return semver.gt(getRawPlatformaInstance().sdkInfo.sdkVersion, '1.14.0')\n && (column.type === 'column' ? column.spec.valueType : column.spec.type) === 'String'\n && (readDomain(column.spec, Domain.Alphabet) ?? readAnnotation(column.spec, Annotation.Alphabet)) !== undefined;\n}\n\nexport function makePredicate(alphabetic: boolean, filter: PlTableFilter): SingleValuePredicateV2 {\n const type = filter.type;\n switch (type) {\n case 'isNotNA':\n return {\n operator: 'Not',\n operand: {\n operator: 'IsNA',\n },\n };\n case 'isNA':\n return {\n operator: 'IsNA',\n };\n case 'number_equals':\n return {\n operator: 'Equal',\n reference: filter.reference,\n };\n case 'string_equals':\n return {\n operator: alphabetic ? 'IEqual' : 'Equal',\n reference: filter.reference as string,\n };\n case 'number_notEquals':\n return {\n operator: 'Not',\n operand: {\n operator: 'Equal',\n reference: filter.reference,\n },\n };\n case 'string_notEquals':\n return {\n operator: 'Not',\n operand: {\n operator: alphabetic ? 'IEqual' : 'Equal',\n reference: filter.reference,\n },\n };\n case 'number_greaterThan':\n return {\n operator: 'Greater',\n reference: filter.reference,\n };\n case 'number_greaterThanOrEqualTo':\n return {\n operator: 'GreaterOrEqual',\n reference: filter.reference,\n };\n case 'number_lessThan':\n return {\n operator: 'Less',\n reference: filter.reference,\n };\n case 'number_lessThanOrEqualTo':\n return {\n operator: 'LessOrEqual',\n reference: filter.reference,\n };\n case 'number_between':\n return {\n operator: 'And',\n operands: [\n {\n operator: filter.includeLowerBound ? 'GreaterOrEqual' : 'Greater',\n reference: filter.lowerBound,\n },\n {\n operator: filter.includeUpperBound ? 'LessOrEqual' : 'Less',\n reference: filter.upperBound,\n },\n ],\n };\n case 'string_contains':\n return {\n operator: alphabetic ? 'StringIContains' : 'StringContains',\n substring: filter.reference,\n };\n case 'string_doesNotContain':\n return {\n operator: 'Not',\n operand: {\n operator: alphabetic ? 'StringIContains' : 'StringContains',\n substring: filter.reference,\n },\n };\n case 'string_matches':\n return {\n operator: 'Matches',\n regex: filter.reference,\n };\n case 'string_doesNotMatch':\n return {\n operator: 'Not',\n operand: {\n operator: 'Matches',\n regex: filter.reference,\n },\n };\n case 'string_containsFuzzyMatch':\n return {\n operator: alphabetic ? 'StringIContainsFuzzy' : 'StringContainsFuzzy',\n reference: filter.reference,\n maxEdits: filter.maxEdits,\n substitutionsOnly: filter.substitutionsOnly,\n wildcard: filter.wildcard,\n };\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n"],"names":["isFilterValid","filter","options","discreteOptions","o","isFilterDiscreteType","reference","getFilterReference","option","getFilterLabel","type","filterTypesNumber","filterTypesString","getFilterOptions","column","filterTypesDiscrete","isFilterDiscrete","getColumnName","index","_a","readAnnotation","Annotation","getFilterDefault","changeFilter","parseNumber","value","parsed","min","readAnnotationJson","max","parseString","alphabet","readDomain","Domain","parseRegex","err","makeWildcardOptions","char","makeDiscreteOptions","discreteValuesAnnotation","parseJson","v","isAlphabetic","semver.gt","getRawPlatformaInstance","makePredicate","alphabetic"],"mappings":";;AAwBO,SAASA,EACdC,GACAC,GACAC,GACS;AAET,MAAI,CADgBD,EAAQ,KAAK,CAACE,MAAMA,EAAE,UAAUH,EAAO,IAAI,EAC7C,QAAO;AAEzB,MAAII,EAAqBJ,EAAO,IAAI,KAAKE,EAAgB,SAAS,GAAG;AACnE,UAAMG,IAAYC,EAAmBN,CAAM;AAC3C,WAAOE,EAAgB,KAAK,CAACK,MAAWA,EAAO,UAAUF,CAAS;AAAA,EACpE;AAEA,SAAO;AACT;AAEO,SAASG,EAAeC,GAAiC;AAC9D,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,YAAM,MAAM,4BAA4BA,CAAoB,EAAE;AAAA,EAAA;AAEpE;AAEO,MAAMC,IAA+C;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEaC,IAA+C;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAASC,EAAiBC,GAA2D;AAG1F,WAFkBA,EAAO,SAAS,WAAWA,EAAO,KAAK,YAAYA,EAAO,KAAK,UAChC,WAAWF,IAAoBD,GAE7E,OAAO,CAACD,MAASI,EAAO,SAAS,SAASJ,MAAS,aAAaA,MAAS,SAAS,EAAI,EACtF,IAAI,CAACA,OAAU,EAAE,OAAOA,GAAM,MAAMD,EAAeC,CAAI,EAAA,EAAI;AAChE;AAUO,MAAMK,IAAmD;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEaV,IAAuB,CAClCJ,MAEQc,EAA4C,SAASd,CAAM,GAGxDe,IAAmB,CAACf,MACxBI,EAAqBJ,EAAO,IAAI;AAGlC,SAASgB,EAAcH,GAA0BI,GAAwB;;AAC9E,WAAOC,IAAAC,EAAeN,EAAO,MAAMO,EAAW,KAAK,MAA5C,gBAAAF,EAA+C,WAAU,eAAeL,EAAO,OAAO,MAAMI,EAAM,SAAA;AAC3G;AAEO,SAASX,EAAmBN,GAAoD;AACrF,QAAMS,IAAOT,EAAO;AACpB,UAAQS,GAAA;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AACH;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAOT,EAAO;AAAA,IAChB,KAAK;AACH,aAAOA,EAAO;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAOA,EAAO;AAAA,IAChB;AACE,YAAM,MAAM,4BAA4BS,CAAoB,EAAE;AAAA,EAAA;AAEpE;AAEO,SAASY,EAAiBZ,GAAyBJ,GAAwD;AAChH,UAAQI,GAAA;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,MAAAA,EAAA;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,MAAAA,GAAM,WAAW,OAAOJ,KAAc,WAAWA,IAAY,EAAA;AAAA,IACxE,KAAK;AACH,aAAO;AAAA,QACL,MAAAI;AAAA,QACA,YAAY,OAAOJ,KAAc,WAAWA,IAAY;AAAA,QACxD,mBAAmB;AAAA,QACnB,YAAY;AAAA,QACZ,mBAAmB;AAAA,MAAA;AAAA,IAEvB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,MAAAI,GAAM,WAAW,OAAOJ,KAAc,WAAWA,IAAY,GAAA;AAAA,IACxE,KAAK;AACH,aAAO;AAAA,QACL,MAAAI;AAAA,QACA,WAAW,OAAOJ,KAAc,WAAWA,IAAY;AAAA,QACvD,UAAU;AAAA,QACV,mBAAmB;AAAA,QACnB,UAAU;AAAA,MAAA;AAAA,IAEd;AACE,YAAM,MAAM,4BAA4BI,CAAoB,EAAE;AAAA,EAAA;AAEpE;AAEO,SAASa,EACdtB,GACAS,GACAP,GACe;AACf,MAAIG,IAAYC,EAAmBN,CAAM;AACzC,SAAII,EAAqBK,CAAI,KACxBP,MAAoB,UACpBA,EAAgB,SAAS,KACzB,CAACA,EAAgB,KAAK,CAACK,MAAWA,EAAO,UAAUF,CAAS,MAC/DA,IAAYH,EAAgB,CAAC,EAAE,QAE1BmB,EAAiBZ,GAAMJ,CAAS;AACzC;AAEO,SAASkB,EAAYV,GAA0BW,GAAuB;AAC3E,QAAMC,IAAS,OAAOD,CAAK;AAC3B,MAAI,CAAC,OAAO,SAASC,CAAM,EAAG,OAAM,MAAM,8BAA8B;AAExE,QAAMhB,IAAOI,EAAO,SAAS,WAAWA,EAAO,KAAK,YAAYA,EAAO,KAAK;AAC5E,OAAKJ,MAAS,SAASA,MAAS,WAAW,CAAC,OAAO,UAAUgB,CAAM,EAAG,OAAM,MAAM,gCAAgC;AAElH,QAAMC,IAAMC,EAAmBd,EAAO,MAAMO,EAAW,GAAG;AAC1D,MAAIM,MAAQ,UACN,OAAO,SAASA,CAAG,KAAKD,IAASC;AACnC,UAAM,MAAM,yBAAyB;AAIzC,QAAME,IAAMD,EAAmBd,EAAO,MAAMO,EAAW,GAAG;AAC1D,MAAIQ,MAAQ,UACN,OAAO,SAASA,CAAG,KAAKH,IAASG;AACnC,UAAM,MAAM,0BAA0B;AAI1C,SAAOH;AACT;AAEO,SAASI,EAAYhB,GAA0BW,GAAuB;AAC3E,QAAMM,IAAWC,EAAWlB,EAAO,MAAMmB,EAAO,QAAQ,KAAKb,EAAeN,EAAO,MAAMO,EAAW,QAAQ;AAC5G,MAAIU,MAAa,gBAAgB,CAAC,kBAAkB,KAAKN,CAAK,EAAG,OAAM,MAAM,kCAAkC;AAC/G,MAAIM,MAAa,eAAe,CAAC,oDAAoD,KAAKN,CAAK,EAAG,OAAM,MAAM,kCAAkC;AAChJ,SAAOA;AACT;AAEO,SAASS,EAAWT,GAAuB;AAChD,MAAI;AACF,eAAI,OAAOA,CAAK,GACTA;AAAA,EACT,SAASU,GAAc;AACrB,UAAIA,aAAe,cAAmB,MAAM,8BAA8B,IACpEA;AAAA,EACR;AACF;AAEO,SAASC,EACdtB,GACAR,GACsB;AACtB,QAAMyB,IAAWC,EAAWlB,EAAO,MAAMmB,EAAO,QAAQ,KAAKb,EAAeN,EAAO,MAAMO,EAAW,QAAQ;AAC5G,SAAIU,MAAa,eACR,CAAC;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EAAA,CACR,IAECA,MAAa,cACR,CAAC;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EAAA,CACR,IAGW,CAAC,GAAG,IAAI,IAAYzB,CAAS,EAAE,MAAM,EACtC,KAAA,EAAO,IAAI,CAAC+B,OAAU;AAAA,IACjC,OAAOA;AAAA,IACP,OAAOA;AAAA,EAAA,EACP;AACJ;AAEO,SAASC,EAAoBxB,GAAyD;AAC3F,QAAMyB,IAA2BnB,EAAeN,EAAO,MAAMO,EAAW,cAAc;AACtF,MAAI,CAACkB,EAA0B,QAAO,CAAA;AAEtC,MAAI;AAEF,WADuBC,EAA+BD,CAAwB,EACxD,IAAI,CAACE,OAAO;AAAA,MAChC,OAAO,GAAGA,CAAC;AAAA,MACX,OAAOA;AAAA,IAAA,EACP;AAAA,EACJ,SAASN,GAAc;AACrB,mBAAQ,MAAM,UAAUrB,EAAO,EAAE,iBAAiBO,EAAW,cAAc,kBAAkBkB,CAAwB,KAAKJ,CAAG,GACtH,CAAA;AAAA,EACT;AACF;AAEO,SAASO,EAAa5B,GAAmC;AAC9D,SAAO6B,EAAAA,GAAUC,EAAA,EAA0B,QAAQ,YAAY,QAAQ,MACjE9B,EAAO,SAAS,WAAWA,EAAO,KAAK,YAAYA,EAAO,KAAK,UAAU,aACzEkB,EAAWlB,EAAO,MAAMmB,EAAO,QAAQ,KAAKb,EAAeN,EAAO,MAAMO,EAAW,QAAQ,OAAO;AAC1G;AAEO,SAASwB,EAAcC,GAAqB7C,GAA+C;AAChG,QAAMS,IAAOT,EAAO;AACpB,UAAQS,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,UACP,UAAU;AAAA,QAAA;AAAA,MACZ;AAAA,IAEJ,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,MAAA;AAAA,IAEd,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,WAAWT,EAAO;AAAA,MAAA;AAAA,IAEtB,KAAK;AACH,aAAO;AAAA,QACL,UAAU6C,IAAa,WAAW;AAAA,QAClC,WAAW7C,EAAO;AAAA,MAAA;AAAA,IAEtB,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,UACP,UAAU;AAAA,UACV,WAAWA,EAAO;AAAA,QAAA;AAAA,MACpB;AAAA,IAEJ,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,UACP,UAAU6C,IAAa,WAAW;AAAA,UAClC,WAAW7C,EAAO;AAAA,QAAA;AAAA,MACpB;AAAA,IAEJ,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,WAAWA,EAAO;AAAA,MAAA;AAAA,IAEtB,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,WAAWA,EAAO;AAAA,MAAA;AAAA,IAEtB,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,WAAWA,EAAO;AAAA,MAAA;AAAA,IAEtB,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,WAAWA,EAAO;AAAA,MAAA;AAAA,IAEtB,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,UAAU;AAAA,UACR;AAAA,YACE,UAAUA,EAAO,oBAAoB,mBAAmB;AAAA,YACxD,WAAWA,EAAO;AAAA,UAAA;AAAA,UAEpB;AAAA,YACE,UAAUA,EAAO,oBAAoB,gBAAgB;AAAA,YACrD,WAAWA,EAAO;AAAA,UAAA;AAAA,QACpB;AAAA,MACF;AAAA,IAEJ,KAAK;AACH,aAAO;AAAA,QACL,UAAU6C,IAAa,oBAAoB;AAAA,QAC3C,WAAW7C,EAAO;AAAA,MAAA;AAAA,IAEtB,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,UACP,UAAU6C,IAAa,oBAAoB;AAAA,UAC3C,WAAW7C,EAAO;AAAA,QAAA;AAAA,MACpB;AAAA,IAEJ,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,OAAOA,EAAO;AAAA,MAAA;AAAA,IAElB,KAAK;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,UACP,UAAU;AAAA,UACV,OAAOA,EAAO;AAAA,QAAA;AAAA,MAChB;AAAA,IAEJ,KAAK;AACH,aAAO;AAAA,QACL,UAAU6C,IAAa,yBAAyB;AAAA,QAChD,WAAW7C,EAAO;AAAA,QAClB,UAAUA,EAAO;AAAA,QACjB,mBAAmBA,EAAO;AAAA,QAC1B,UAAUA,EAAO;AAAA,MAAA;AAAA,IAErB;AACE,YAAM,MAAM,4BAA4BS,CAAoB,EAAE;AAAA,EAAA;AAEpE;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/ui-vue",
3
- "version": "1.48.12",
3
+ "version": "1.48.13",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "styles": "dist/index.js",
@@ -26,10 +26,10 @@
26
26
  "zod": "~3.23.8",
27
27
  "@zip.js/zip.js": "^2.8.2",
28
28
  "es-toolkit": "^1.39.10",
29
- "@milaboratories/biowasm-tools": "2.0.0",
30
29
  "@milaboratories/ptabler-expression-js": "1.1.7",
31
- "@platforma-sdk/model": "1.48.12",
32
- "@milaboratories/uikit": "2.8.4"
30
+ "@milaboratories/biowasm-tools": "2.0.0",
31
+ "@platforma-sdk/model": "1.48.13",
32
+ "@milaboratories/uikit": "2.8.5"
33
33
  },
34
34
  "devDependencies": {
35
35
  "happy-dom": "^15.11.7",
@@ -39,7 +39,9 @@
39
39
  "semver": "^7.7.2",
40
40
  "typescript": "~5.6.3",
41
41
  "vite": "^6.3.5",
42
- "vitest": "^4.0.7",
42
+ "vitest": "^4.0.16",
43
+ "@vitest/coverage-istanbul": "^4.0.16",
44
+ "eslint": "^9.25.1",
43
45
  "@vue/test-utils": "^2.4.6",
44
46
  "yarpm": "^1.2.0",
45
47
  "fast-json-patch": "^3.1.1",
@@ -51,7 +53,7 @@
51
53
  "@milaboratories/ts-builder": "1.2.1"
52
54
  },
53
55
  "scripts": {
54
- "test": "vitest run --passWithNoTests",
56
+ "test": "vitest run --coverage",
55
57
  "dev": "ts-builder serve --target browser-lib",
56
58
  "build": "ts-builder build --target browser-lib",
57
59
  "watch": "ts-builder build --target browser-lib --watch",
@@ -19,7 +19,7 @@ import {
19
19
  parseJson,
20
20
  readAnnotationJson,
21
21
  } from '@platforma-sdk/model';
22
- import semver from 'semver';
22
+ import * as semver from 'semver';
23
23
  import type { ListOption } from '@milaboratories/uikit';
24
24
 
25
25
  export function isFilterValid(
package/vitest.config.mts CHANGED
@@ -1,8 +1,8 @@
1
+ import { createVitestVueConfig } from '@milaboratories/build-configs';
1
2
  import { defineConfig } from 'vitest/config';
2
3
 
3
- export default defineConfig({
4
+ export default defineConfig(createVitestVueConfig({
4
5
  test: {
5
- pool: 'threads',
6
6
  includeSource: ['src/**/*.{js,ts}'],
7
7
  },
8
- });
8
+ }));
@@ -1,7 +0,0 @@
1
- function e(t) {
2
- return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t;
3
- }
4
- export {
5
- e as getDefaultExportFromCjs
6
- };
7
- //# sourceMappingURL=_commonjsHelpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_commonjsHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}