@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.
- package/.turbo/turbo-build.log +7 -13
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +8 -0
- package/dist/_virtual/index.js +3 -5
- package/dist/_virtual/index.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
- package/dist/components/PlTableFilters/filters_logic.js +5 -5
- package/dist/components/PlTableFilters/filters_logic.js.map +1 -1
- package/package.json +8 -6
- package/src/components/PlTableFilters/filters_logic.ts +1 -1
- package/vitest.config.mts +3 -3
- package/dist/_virtual/_commonjsHelpers.js +0 -7
- package/dist/_virtual/_commonjsHelpers.js.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -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.
|
|
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
|
[36mvite v6.3.5 [32mbuilding for production...[36m[39m
|
|
9
|
-
[96msrc/components/PlTableFilters/filters_logic.ts[0m:[93m22[0m:[93m8[0m - [91merror[0m[90m TS1192: [0mModule '"/home/runner/_work/platforma/platforma/node_modules/.pnpm/@types+semver@7.7.0/node_modules/@types/semver/index"' has no default export.
|
|
10
|
-
|
|
11
|
-
[7m22[0m import semver from 'semver';
|
|
12
|
-
[7m [0m [91m ~~~~~~[0m
|
|
13
|
-
|
|
14
9
|
transforming...
|
|
15
10
|
[32m✓[39m 235 modules transformed.
|
|
16
11
|
[33mExport "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
|
[2mdist/[22m[36mcomponents/PlAgCellFile/PlAgCellFile.vue2.js [39m[1m[2m 0.11 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.10 kB[22m
|
|
26
21
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgRowCount.vue2.js [39m[1m[2m 0.11 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.10 kB[22m
|
|
27
22
|
[2mdist/[22m[36mcomponents/PlAgCsvExporter/PlAgCsvExporter.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
28
|
-
[2mdist/[22m[36mcomponents/PlAgCellProgress/PlAgCellProgress.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
29
23
|
[2mdist/[22m[36mcomponents/PlAgColumnHeader/PlAgColumnHeader.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
24
|
+
[2mdist/[22m[36mcomponents/PlAgCellProgress/PlAgCellProgress.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
30
25
|
[2mdist/[22m[36mcomponents/PlAgRowNumHeader.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
31
26
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgOverlayLoading.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
32
27
|
[2mdist/[22m[36mcomponents/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
@@ -37,11 +32,11 @@ computing gzip size...
|
|
|
37
32
|
[2mdist/[22m[36mcomponents/ValueOrErrorsComponent.vue2.js [39m[1m[2m 0.13 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
38
33
|
[2mdist/[22m[36murls.js [39m[1m[2m 0.14 kB[22m[1m[22m[2m │ gzip: 0.15 kB[22m[2m │ map: 0.64 kB[22m
|
|
39
34
|
[2mdist/[22m[36mcomponents/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js [39m[1m[2m 0.14 kB[22m[1m[22m[2m │ gzip: 0.13 kB[22m[2m │ map: 0.12 kB[22m
|
|
35
|
+
[2mdist/[22m[36m_virtual/index.js [39m[1m[2m 0.16 kB[22m[1m[22m[2m │ gzip: 0.15 kB[22m[2m │ map: 0.09 kB[22m
|
|
40
36
|
[2mdist/[22m[36mlib/util/helpers/dist/random.js [39m[1m[2m 0.16 kB[22m[1m[22m[2m │ gzip: 0.16 kB[22m[2m │ map: 0.74 kB[22m
|
|
41
37
|
[2mdist/[22m[36m_virtual/_plugin-vue_export-helper.js [39m[1m[2m 0.19 kB[22m[1m[22m[2m │ gzip: 0.17 kB[22m[2m │ map: 0.12 kB[22m
|
|
42
38
|
[2mdist/[22m[36mcomponents/PlAgDataTable/sources/menu-items.js [39m[1m[2m 0.19 kB[22m[1m[22m[2m │ gzip: 0.16 kB[22m[2m │ map: 0.52 kB[22m
|
|
43
39
|
[2mdist/[22m[36mlib/util/helpers/dist/functions.js [39m[1m[2m 0.20 kB[22m[1m[22m[2m │ gzip: 0.17 kB[22m[2m │ map: 5.26 kB[22m
|
|
44
|
-
[2mdist/[22m[36m_virtual/_commonjsHelpers.js [39m[1m[2m 0.20 kB[22m[1m[22m[2m │ gzip: 0.18 kB[22m[2m │ map: 0.10 kB[22m
|
|
45
40
|
[2mdist/[22m[36mcomponents/PlAgDataTable/sources/common.js [39m[1m[2m 0.21 kB[22m[1m[22m[2m │ gzip: 0.17 kB[22m[2m │ map: 0.65 kB[22m
|
|
46
41
|
[2mdist/[22m[36mcomponents/PlAnnotations/utils.js [39m[1m[2m 0.21 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 1.06 kB[22m
|
|
47
42
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/gt.js [39m[1m[2m 0.22 kB[22m[1m[22m[2m │ gzip: 0.18 kB[22m[2m │ map: 0.48 kB[22m
|
|
@@ -64,7 +59,6 @@ computing gzip size...
|
|
|
64
59
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare.js [39m[1m[2m 0.26 kB[22m[1m[22m[2m │ gzip: 0.20 kB[22m[2m │ map: 0.58 kB[22m
|
|
65
60
|
[2mdist/[22m[36mcomponents/PlBtnExportArchive/Item.vue.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
66
61
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/valid.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.59 kB[22m
|
|
67
|
-
[2mdist/[22m[36m_virtual/index.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.09 kB[22m
|
|
68
62
|
[2mdist/[22m[36mcomponents/PlBtnExportArchive/Summary.vue.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
69
63
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/intersects.js [39m[1m[2m 0.28 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.67 kB[22m
|
|
70
64
|
[2mdist/[22m[36mplugins/Monetization/RunStatus.vue.js [39m[1m[2m 0.28 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
@@ -77,8 +71,8 @@ computing gzip size...
|
|
|
77
71
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/PlAnnotations.vue.js [39m[1m[2m 0.30 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
78
72
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/FilterSidebar.vue.js [39m[1m[2m 0.30 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
79
73
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableV2.vue.js [39m[1m[2m 0.30 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
80
|
-
[2mdist/[22m[36mplugins/Monetization/UserCabinetCard.vue.js [39m[1m[2m 0.30 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
81
74
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/clean.js [39m[1m[2m 0.30 kB[22m[1m[22m[2m │ gzip: 0.23 kB[22m[2m │ map: 0.65 kB[22m
|
|
75
|
+
[2mdist/[22m[36mplugins/Monetization/UserCabinetCard.vue.js [39m[1m[2m 0.30 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
82
76
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/prerelease.js [39m[1m[2m 0.30 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.68 kB[22m
|
|
83
77
|
[2mdist/[22m[36mcomponents/PlTableFilters/PlTableFiltersV2.vue.js [39m[1m[2m 0.30 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
84
78
|
[2mdist/[22m[36mcomponents/PlAdvancedFilter/PlAdvancedFilter.vue.js [39m[1m[2m 0.30 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
@@ -206,7 +200,7 @@ computing gzip size...
|
|
|
206
200
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/range.js [39m[1m[2m 7.70 kB[22m[1m[22m[2m │ gzip: 2.49 kB[22m[2m │ map: 25.65 kB[22m
|
|
207
201
|
[2mdist/[22m[36mcomponents/PlAdvancedFilter/PlAdvancedFilter.vue2.js [39m[1m[2m 8.33 kB[22m[1m[22m[2m │ gzip: 2.42 kB[22m[2m │ map: 16.80 kB[22m
|
|
208
202
|
[2mdist/[22m[36mnode_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/core.js [39m[1m[2m 8.44 kB[22m[1m[22m[2m │ gzip: 2.53 kB[22m[2m │ map: 29.29 kB[22m
|
|
209
|
-
[2mdist/[22m[36mcomponents/PlTableFilters/filters_logic.js [39m[1m[2m 9.
|
|
203
|
+
[2mdist/[22m[36mcomponents/PlTableFilters/filters_logic.js [39m[1m[2m 9.19 kB[22m[1m[22m[2m │ gzip: 2.18 kB[22m[2m │ map: 20.23 kB[22m
|
|
210
204
|
[2mdist/[22m[36mcomponents/PlAdvancedFilter/FilterEditor.vue2.js [39m[1m[2m12.66 kB[22m[1m[22m[2m │ gzip: 3.26 kB[22m[2m │ map: 24.94 kB[22m
|
|
211
205
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgOverlayNoRows.vue3.js [39m[1m[2m35.48 kB[22m[1m[22m[2m │ gzip: 26.70 kB[22m[2m │ map: 0.11 kB[22m
|
|
212
206
|
[2mdist/[22m[36mcomponents/PlAgDataTable/pl-ag-overlay-loading.module.scss.js [39m[1m[2m41.43 kB[22m[1m[22m[2m │ gzip: 30.91 kB[22m[2m │ map: 0.12 kB[22m
|
|
@@ -216,7 +210,7 @@ computing gzip size...
|
|
|
216
210
|
[2mdist/[22m[36mcomponents/PlAgRowNumHeader.vue.js [39m[1m[2m44.62 kB[22m[1m[22m[2m │ gzip: 29.27 kB[22m[2m │ map: 4.05 kB[22m
|
|
217
211
|
[2mdist/[22m[36mAgGridVue/useAgGridOptions.js [39m[1m[2m49.01 kB[22m[1m[22m[2m │ gzip: 30.10 kB[22m[2m │ map: 15.74 kB[22m
|
|
218
212
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableV2.vue2.js [39m[1m[2m50.40 kB[22m[1m[22m[2m │ gzip: 31.07 kB[22m[2m │ map: 34.82 kB[22m
|
|
219
|
-
[vite:dts] Declaration files built in
|
|
213
|
+
[vite:dts] Declaration files built in 6923ms.
|
|
220
214
|
|
|
221
|
-
[32m✓ built in
|
|
215
|
+
[32m✓ built in 8.84s[39m
|
|
222
216
|
Build completed successfully
|
package/.turbo/turbo-lint.log
CHANGED
|
@@ -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.
|
|
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.
|
|
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
package/dist/_virtual/index.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
|
|
331
|
+
z as makeDiscreteOptions,
|
|
332
332
|
S as makePredicate,
|
|
333
|
-
|
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platforma-sdk/ui-vue",
|
|
3
|
-
"version": "1.48.
|
|
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
|
-
"@
|
|
32
|
-
"@
|
|
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.
|
|
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 --
|
|
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",
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_commonjsHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|