@platforma-sdk/ui-vue 1.48.4 → 1.48.5

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,15 +1,221 @@
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.4 build /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.48.5 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
+ vite v6.3.5 building for production...
8
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.
9
10
 
10
11
  22 import semver from 'semver';
11
12
     ~~~~~~
12
13
 
14
+ transforming...
15
+ ✓ 234 modules transformed.
13
16
  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.
14
17
  Either change the import in "src/components/PlAgDataTable/PlAgDataTableV2.vue?vue&type=script&setup=true&lang.ts" to point directly to the exporting module or do not use "output.preserveModules" to ensure these modules end up in the same chunk.
18
+ rendering chunks...
19
+
20
+ [vite:dts] Start generate declaration files...
21
+ computing gzip size...
22
+ dist/_virtual/re.js  0.08 kB │ gzip: 0.10 kB │ map: 0.09 kB
23
+ dist/components/NotFound.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
24
+ dist/components/BlockLoader.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
25
+ dist/components/PlAgCellFile/PlAgCellFile.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
26
+ dist/components/PlAgDataTable/PlAgRowCount.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
27
+ dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
28
+ dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
29
+ dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
30
+ dist/components/PlAgRowNumHeader.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
31
+ dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
32
+ dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
33
+ dist/components/PlTableFilters/PlTableAddFilterV2.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
34
+ dist/plugins/Monetization/MonetizationSidebar.vue2.js  0.13 kB │ gzip: 0.12 kB │ map: 0.11 kB
35
+ dist/components/PlTableFilters/PlTableFilterEntryV2.vue2.js  0.13 kB │ gzip: 0.12 kB │ map: 0.11 kB
36
+ dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js  0.13 kB │ gzip: 0.12 kB │ map: 0.11 kB
37
+ dist/components/ValueOrErrorsComponent.vue2.js  0.13 kB │ gzip: 0.12 kB │ map: 0.11 kB
38
+ dist/urls.js  0.14 kB │ gzip: 0.15 kB │ map: 0.64 kB
39
+ dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js  0.14 kB │ gzip: 0.13 kB │ map: 0.12 kB
40
+ dist/lib/util/helpers/dist/random.js  0.16 kB │ gzip: 0.16 kB │ map: 0.74 kB
41
+ dist/_virtual/_plugin-vue_export-helper.js  0.19 kB │ gzip: 0.17 kB │ map: 0.12 kB
42
+ dist/components/PlAgDataTable/sources/menu-items.js  0.19 kB │ gzip: 0.16 kB │ map: 0.52 kB
43
+ 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
+ dist/components/PlAgDataTable/sources/common.js  0.21 kB │ gzip: 0.17 kB │ map: 0.65 kB
46
+ 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
47
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/lt.js  0.22 kB │ gzip: 0.18 kB │ map: 0.48 kB
48
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/rcompare.js  0.23 kB │ gzip: 0.18 kB │ map: 0.50 kB
49
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/eq.js  0.23 kB │ gzip: 0.18 kB │ map: 0.48 kB
50
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/gte.js  0.23 kB │ gzip: 0.18 kB │ map: 0.49 kB
51
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/lte.js  0.23 kB │ gzip: 0.18 kB │ map: 0.49 kB
52
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/gtr.js  0.23 kB │ gzip: 0.18 kB │ map: 0.60 kB
53
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/ltr.js  0.23 kB │ gzip: 0.18 kB │ map: 0.60 kB
54
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/neq.js  0.23 kB │ gzip: 0.19 kB │ map: 0.49 kB
55
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare-loose.js  0.23 kB │ gzip: 0.18 kB │ map: 0.50 kB
56
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/major.js  0.24 kB │ gzip: 0.19 kB │ map: 0.48 kB
57
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/minor.js  0.24 kB │ gzip: 0.19 kB │ map: 0.49 kB
58
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/patch.js  0.24 kB │ gzip: 0.19 kB │ map: 0.48 kB
59
+ dist/components/PlAdvancedFilter/index.js  0.24 kB │ gzip: 0.20 kB │ map: 0.66 kB
60
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/sort.js  0.24 kB │ gzip: 0.20 kB │ map: 0.56 kB
61
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/rsort.js  0.24 kB │ gzip: 0.20 kB │ map: 0.56 kB
62
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/parse-options.js  0.25 kB │ gzip: 0.20 kB │ map: 0.79 kB
63
+ 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
64
+ dist/components/PlBtnExportArchive/Item.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
65
+ 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
66
+ dist/_virtual/index.js  0.27 kB │ gzip: 0.21 kB │ map: 0.09 kB
67
+ dist/components/PlBtnExportArchive/Summary.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
68
+ 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
69
+ dist/plugins/Monetization/RunStatus.vue.js  0.28 kB │ gzip: 0.21 kB │ map: 0.10 kB
70
+ dist/plugins/Monetization/LimitCard.vue.js  0.28 kB │ gzip: 0.21 kB │ map: 0.10 kB
71
+ dist/components/BlockLayout.vue.js  0.28 kB │ gzip: 0.22 kB │ map: 0.11 kB
72
+ dist/plugins/Monetization/EndOfPeriod.vue.js  0.29 kB │ gzip: 0.22 kB │ map: 0.11 kB
73
+ dist/components/PlAdvancedFilter/FilterEditor.vue.js  0.29 kB │ gzip: 0.22 kB │ map: 0.11 kB
74
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/debug.js  0.29 kB │ gzip: 0.23 kB │ map: 0.63 kB
75
+ dist/components/PlAdvancedFilter/OperandButton.vue.js  0.29 kB │ gzip: 0.22 kB │ map: 0.11 kB
76
+ dist/components/PlAnnotations/components/PlAnnotations.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
77
+ dist/components/PlAnnotations/components/FilterSidebar.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
78
+ dist/components/PlAgDataTable/PlAgDataTableV2.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
79
+ dist/plugins/Monetization/UserCabinetCard.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
80
+ 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
81
+ 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
82
+ dist/components/PlTableFilters/PlTableFiltersV2.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
83
+ dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
84
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/to-comparators.js  0.30 kB │ gzip: 0.23 kB │ map: 0.78 kB
85
+ dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
86
+ dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
87
+ dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
88
+ dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
89
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/valid.js  0.31 kB │ gzip: 0.22 kB │ map: 0.76 kB
90
+ dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js  0.32 kB │ gzip: 0.23 kB │ map: 0.12 kB
91
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/satisfies.js  0.32 kB │ gzip: 0.23 kB │ map: 0.74 kB
92
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare-build.js  0.32 kB │ gzip: 0.23 kB │ map: 0.80 kB
93
+ dist/lib/util/helpers/dist/strings.js  0.35 kB │ gzip: 0.24 kB │ map: 4.16 kB
94
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/parse.js  0.38 kB │ gzip: 0.25 kB │ map: 0.86 kB
95
+ dist/computedResult.js  0.40 kB │ gzip: 0.26 kB │ map: 2.42 kB
96
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/identifiers.js  0.40 kB │ gzip: 0.26 kB │ map: 1.10 kB
97
+ dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js  0.40 kB │ gzip: 0.30 kB │ map: 0.11 kB
98
+ dist/components/BlockLayout.vue3.js  0.42 kB │ gzip: 0.31 kB │ map: 0.10 kB
99
+ dist/objectHash.js  0.43 kB │ gzip: 0.32 kB │ map: 1.23 kB
100
+ dist/components/PlAnnotations/components/PlAnnotations.vue3.js  0.43 kB │ gzip: 0.30 kB │ map: 0.11 kB
101
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/inc.js  0.44 kB │ gzip: 0.28 kB │ map: 1.10 kB
102
+ dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js  0.45 kB │ gzip: 0.33 kB │ map: 0.11 kB
103
+ dist/components/PlAgCellProgress/PlAgCellProgress.vue.js  0.47 kB │ gzip: 0.32 kB │ map: 0.76 kB
104
+ dist/defineStore.js  0.47 kB │ gzip: 0.31 kB │ map: 1.40 kB
105
+ dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js  0.47 kB │ gzip: 0.33 kB │ map: 0.11 kB
106
+ dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js  0.49 kB │ gzip: 0.34 kB │ map: 0.11 kB
107
+ dist/components/LoaderPage.vue.js  0.51 kB │ gzip: 0.35 kB │ map: 0.55 kB
108
+ dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js  0.52 kB │ gzip: 0.36 kB │ map: 0.11 kB
109
+ dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js  0.52 kB │ gzip: 0.36 kB │ map: 0.11 kB
110
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/min-satisfying.js  0.52 kB │ gzip: 0.31 kB │ map: 1.36 kB
111
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/max-satisfying.js  0.53 kB │ gzip: 0.31 kB │ map: 1.36 kB
112
+ dist/plugins/Monetization/useButtonTarget.js  0.53 kB │ gzip: 0.33 kB │ map: 1.29 kB
113
+ dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js  0.53 kB │ gzip: 0.36 kB │ map: 0.11 kB
114
+ dist/components/PlAnnotations/components/FilterSidebar.vue3.js  0.53 kB │ gzip: 0.34 kB │ map: 0.11 kB
115
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/constants.js  0.60 kB │ gzip: 0.38 kB │ map: 1.59 kB
116
+ dist/components/PlAgDataTable/ag-override.css.js  0.61 kB │ gzip: 0.30 kB │ map: 0.92 kB
117
+ dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js  0.61 kB │ gzip: 0.40 kB │ map: 0.95 kB
118
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/lrucache.js  0.68 kB │ gzip: 0.33 kB │ map: 1.70 kB
119
+ dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js  0.69 kB │ gzip: 0.44 kB │ map: 1.74 kB
120
+ dist/plugins/Monetization/EndOfPeriod.vue3.js  0.72 kB │ gzip: 0.48 kB │ map: 0.10 kB
121
+ dist/components/PlAnnotations/components/style.module.css.js  0.74 kB │ gzip: 0.44 kB │ map: 0.11 kB
122
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/diff.js  0.75 kB │ gzip: 0.39 kB │ map: 2.46 kB
123
+ dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js  0.77 kB │ gzip: 0.45 kB │ map: 1.51 kB
124
+ dist/plugins/Monetization/EndOfPeriod.vue2.js  0.77 kB │ gzip: 0.47 kB │ map: 1.86 kB
125
+ dist/components/BlockLoader.vue.js  0.82 kB │ gzip: 0.48 kB │ map: 1.30 kB
126
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/simplify.js  0.83 kB │ gzip: 0.44 kB │ map: 2.64 kB
127
+ dist/components/PlAdvancedFilter/OperandButton.vue2.js  0.84 kB │ gzip: 0.51 kB │ map: 1.86 kB
128
+ dist/components/PlBtnExportArchive/Summary.vue3.js  0.85 kB │ gzip: 0.49 kB │ map: 0.10 kB
129
+ dist/components/NotFound.vue.js  0.90 kB │ gzip: 0.54 kB │ map: 1.17 kB
130
+ dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js  0.91 kB │ gzip: 0.52 kB │ map: 0.11 kB
131
+ dist/components/PlAdvancedFilter/OperandButton.vue3.js  0.93 kB │ gzip: 0.52 kB │ map: 0.11 kB
132
+ dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js  0.94 kB │ gzip: 0.42 kB │ map: 1.12 kB
133
+ dist/components/ValueOrErrorsComponent.vue.js  0.98 kB │ gzip: 0.50 kB │ map: 1.62 kB
134
+ dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js  1.00 kB │ gzip: 0.55 kB │ map: 2.09 kB
135
+ dist/components/PlBtnExportArchive/Item.vue3.js  1.03 kB │ gzip: 0.52 kB │ map: 0.10 kB
136
+ dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js  1.03 kB │ gzip: 0.49 kB │ map: 0.13 kB
137
+ dist/components/PlAgCellFile/PlAgCellFile.vue.js  1.09 kB │ gzip: 0.59 kB │ map: 3.22 kB
138
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/cmp.js  1.11 kB │ gzip: 0.40 kB │ map: 2.14 kB
139
+ dist/lib/util/helpers/dist/utils.js  1.13 kB │ gzip: 0.53 kB │ map: 7.55 kB
140
+ dist/components/PlAgGridColumnManager/useFilteredItems.js  1.13 kB │ gzip: 0.58 kB │ map: 3.95 kB
141
+ dist/components/PlAgDataTable/sources/value-rendering.js  1.14 kB │ gzip: 0.54 kB │ map: 3.41 kB
142
+ dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js  1.15 kB │ gzip: 0.62 kB │ map: 1.77 kB
143
+ dist/AgGridVue/selection.js  1.17 kB │ gzip: 0.45 kB │ map: 3.53 kB
144
+ dist/plugins/Monetization/validation.js  1.17 kB │ gzip: 0.56 kB │ map: 2.85 kB
145
+ dist/lib/util/helpers/dist/objects.js  1.18 kB │ gzip: 0.53 kB │ map: 9.42 kB
146
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/coerce.js  1.18 kB │ gzip: 0.58 kB │ map: 3.54 kB
147
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/min-version.js  1.20 kB │ gzip: 0.57 kB │ map: 2.88 kB
148
+ dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js  1.23 kB │ gzip: 0.65 kB │ map: 2.46 kB
149
+ dist/components/PlAdvancedFilter/utils.js  1.26 kB │ gzip: 0.60 kB │ map: 5.10 kB
150
+ dist/plugins/Monetization/RunStatus.vue2.js  1.27 kB │ gzip: 0.59 kB │ map: 3.13 kB
151
+ dist/components/PlBtnExportArchive/Summary.vue2.js  1.32 kB │ gzip: 0.58 kB │ map: 2.53 kB
152
+ dist/lib/util/helpers/dist/prettyBytes.js  1.34 kB │ gzip: 0.65 kB │ map: 4.36 kB
153
+ dist/components/PlBtnExportArchive/Item.vue2.js  1.37 kB │ gzip: 0.56 kB │ map: 2.80 kB
154
+ dist/createModel.js  1.39 kB │ gzip: 0.65 kB │ map: 3.91 kB
155
+ dist/components/PlAgDataTable/types.js  1.40 kB │ gzip: 0.56 kB │ map: 9.40 kB
156
+ dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js  1.52 kB │ gzip: 0.73 kB │ map: 0.11 kB
157
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/outside.js  1.55 kB │ gzip: 0.65 kB │ map: 3.99 kB
158
+ dist/plugins/Monetization/UserCabinetCard.vue3.js  1.55 kB │ gzip: 0.77 kB │ map: 0.11 kB
159
+ dist/components/PlAgDataTable/sources/focus-row.js  1.57 kB │ gzip: 0.75 kB │ map: 2.65 kB
160
+ dist/utils.js  1.57 kB │ gzip: 0.72 kB │ map: 3.81 kB
161
+ dist/AgGridVue/createAgGridColDef.js  1.61 kB │ gzip: 0.72 kB │ map: 9.40 kB
162
+ dist/components/PlAgCsvExporter/export-csv.js  1.63 kB │ gzip: 0.74 kB │ map: 3.92 kB
163
+ dist/aggrid.js  1.65 kB │ gzip: 0.79 kB │ map: 3.09 kB
164
+ dist/components/PlAdvancedFilter/constants.js  1.66 kB │ gzip: 0.51 kB │ map: 3.77 kB
165
+ dist/internal/createAppModel.js  1.73 kB │ gzip: 0.77 kB │ map: 4.81 kB
166
+ dist/plugins/Monetization/RunStatus.vue3.js  1.79 kB │ gzip: 0.82 kB │ map: 0.11 kB
167
+ dist/internal/UpdateSerializer.js  1.86 kB │ gzip: 0.80 kB │ map: 4.63 kB
168
+ dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js  1.99 kB │ gzip: 0.86 kB │ map: 2.62 kB
169
+ dist/defineApp.js  2.15 kB │ gzip: 0.96 kB │ map: 9.58 kB
170
+ dist/plugins/Monetization/useInfo.js  2.18 kB │ gzip: 0.80 kB │ map: 4.32 kB
171
+ dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js  2.20 kB │ gzip: 1.05 kB │ map: 3.27 kB
172
+ dist/plugins/Monetization/UserCabinetCard.vue2.js  2.36 kB │ gzip: 0.95 kB │ map: 4.61 kB
173
+ dist/components/PlAdvancedFilter/FilterEditor.vue3.js  2.49 kB │ gzip: 1.00 kB │ map: 0.12 kB
174
+ dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js  2.57 kB │ gzip: 1.16 kB │ map: 5.91 kB
175
+ dist/components/PlTableFilters/PlTableFiltersV2.vue3.js  2.58 kB │ gzip: 0.94 kB │ map: 0.12 kB
176
+ dist/components/PlTableFilters/filters-state.js  2.60 kB │ gzip: 1.08 kB │ map: 7.95 kB
177
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/comparator.js  2.65 kB │ gzip: 0.94 kB │ map: 6.36 kB
178
+ dist/components/PlAnnotations/components/PlAnnotations.vue2.js  2.68 kB │ gzip: 1.08 kB │ map: 4.03 kB
179
+ dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/helpers.js  2.79 kB │ gzip: 1.21 kB │ map: 8.92 kB
180
+ dist/components/PlAgDataTable/sources/row-number.js  3.10 kB │ gzip: 1.34 kB │ map: 8.36 kB
181
+ dist/plugins/Monetization/LimitCard.vue3.js  3.10 kB │ gzip: 1.09 kB │ map: 0.11 kB
182
+ dist/components/PlAgDataTable/sources/table-state-v2.js  3.18 kB │ gzip: 1.16 kB │ map: 9.94 kB
183
+ dist/components/PlTableFilters/PlTableAddFilterV2.vue.js  3.19 kB │ gzip: 1.28 kB │ map: 4.96 kB
184
+ dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/duplex.js  3.33 kB │ gzip: 1.22 kB │ map: 10.70 kB
185
+ dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js  3.37 kB │ gzip: 1.43 kB │ map: 4.14 kB
186
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/subset.js  3.51 kB │ gzip: 1.04 kB │ map: 11.66 kB
187
+ dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js  3.51 kB │ gzip: 1.38 kB │ map: 4.73 kB
188
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/index.js  3.67 kB │ gzip: 1.01 kB │ map: 5.45 kB
189
+ dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js  3.80 kB │ gzip: 1.45 kB │ map: 5.60 kB
190
+ dist/plugins/Monetization/LimitCard.vue2.js  3.84 kB │ gzip: 1.15 kB │ map: 9.38 kB
191
+ dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js  3.85 kB │ gzip: 1.53 kB │ map: 6.90 kB
192
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/re.js  4.03 kB │ gzip: 1.23 kB │ map: 12.92 kB
193
+ dist/components/PlAnnotations/components/FilterSidebar.vue2.js  4.22 kB │ gzip: 1.53 kB │ map: 7.29 kB
194
+ dist/plugins/Monetization/MonetizationSidebar.vue.js  4.71 kB │ gzip: 1.75 kB │ map: 6.69 kB
195
+ dist/components/BlockLayout.vue2.js  4.97 kB │ gzip: 1.84 kB │ map: 3.90 kB
196
+ dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js  5.65 kB │ gzip: 1.67 kB │ map: 0.11 kB
197
+ dist/internal/createAppV1.js  5.76 kB │ gzip: 1.84 kB │ map: 15.33 kB
198
+ dist/composition/fileContent.js  5.78 kB │ gzip: 1.95 kB │ map: 14.16 kB
199
+ dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js  5.93 kB │ gzip: 2.22 kB │ map: 11.97 kB
200
+ dist/components/PlTableFilters/PlTableFiltersV2.vue2.js  6.12 kB │ gzip: 2.03 kB │ map: 11.68 kB
201
+ dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/semver.js  6.70 kB │ gzip: 1.86 kB │ map: 15.20 kB
202
+ dist/internal/createAppV2.js  6.93 kB │ gzip: 2.43 kB │ map: 19.37 kB
203
+ dist/components/PlAgDataTable/sources/table-source-v2.js  7.32 kB │ gzip: 2.67 kB │ map: 22.27 kB
204
+ dist/components/PlTableFilters/PlTableFilterEntryV2.vue.js  7.36 kB │ gzip: 1.62 kB │ map: 10.79 kB
205
+ 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
206
+ dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js  8.33 kB │ gzip: 2.42 kB │ map: 16.80 kB
207
+ 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
208
+ dist/components/PlTableFilters/filters_logic.js  9.18 kB │ gzip: 2.18 kB │ map: 20.22 kB
209
+ dist/components/PlAdvancedFilter/FilterEditor.vue2.js 12.66 kB │ gzip: 3.26 kB │ map: 24.94 kB
210
+ dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js 35.48 kB │ gzip: 26.70 kB │ map: 0.11 kB
211
+ dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js 41.43 kB │ gzip: 30.91 kB │ map: 0.12 kB
212
+ dist/index.js 43.15 kB │ gzip: 29.03 kB │ map: 0.13 kB
213
+ dist/components/PlAgDataTable/PlAgRowCount.vue.js 43.93 kB │ gzip: 29.02 kB │ map: 2.76 kB
214
+ dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js 44.32 kB │ gzip: 29.25 kB │ map: 3.03 kB
215
+ dist/components/PlAgRowNumHeader.vue.js 44.59 kB │ gzip: 29.26 kB │ map: 4.04 kB
216
+ dist/AgGridVue/useAgGridOptions.js 48.98 kB │ gzip: 30.09 kB │ map: 15.74 kB
217
+ dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js 50.37 kB │ gzip: 31.06 kB │ map: 34.73 kB
218
+ [vite:dts] Declaration files built in 5022ms.
219
+
220
+ ✓ built in 6.88s
15
221
  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.4 lint /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.48.5 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.4 type-check /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.48.5 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,15 @@
1
1
  # @platforma-sdk/ui-vue
2
2
 
3
+ ## 1.48.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 1eb721e: annotations default value
8
+ - @milaboratories/biowasm-tools@2.0.0
9
+ - @milaboratories/uikit@2.8.2
10
+ - @platforma-sdk/model@1.48.4
11
+ - @milaboratories/ptabler-expression-js@1.1.7
12
+
3
13
  ## 1.48.4
4
14
 
5
15
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"PlAdvancedFilter.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAdvancedFilter/PlAdvancedFilter.vue"],"names":[],"mappings":"AAgTA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,EAAwC,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,KAAK,EAA4C,wBAAwB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAKhI,KAAK,WAAW,GAAG;IACjB,6EAA6E;IAC7E,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACjD,wHAAwH;IACxH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yFAAyF;IACzF,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,wBAAwB,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE,KACpI,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;CAClF,CAAC;AAoJF,KAAK,iBAAiB,GAAG;IACzB,SAAS,EAAE,UAAU,CAAC;CACrB,GAAG,WAAW,CAAC;AAKhB,iBAAS,cAAc;WA6QT,OAAO,IAA6B;;qCAVR,GAAG;;;;EAe5C;AA6BD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;eAjdP,OAAO;sBAFA,OAAO,sBAAsB;0BAIzB,OAAO;wFAwd9B,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AA0BpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"PlAdvancedFilter.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAdvancedFilter/PlAdvancedFilter.vue"],"names":[],"mappings":"AAsTA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,EAAwC,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,KAAK,EAA4C,wBAAwB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAKhI,KAAK,WAAW,GAAG;IACjB,6EAA6E;IAC7E,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACjD,wHAAwH;IACxH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yFAAyF;IACzF,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,wBAAwB,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE,KACpI,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;CAClF,CAAC;AAoJF,KAAK,iBAAiB,GAAG;IACzB,SAAS,EAAE,UAAU,CAAC;CACrB,GAAG,WAAW,CAAC;AAKhB,iBAAS,cAAc;WA6QT,OAAO,IAA6B;;qCAVR,GAAG;;;;EAe5C;AA6BD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;eAjdP,OAAO;sBAFA,OAAO,sBAAsB;0BAIzB,OAAO;wFAwd9B,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AA0BpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -1,9 +1,9 @@
1
- import { defineComponent as I, mergeModels as M, useModel as x, computed as Y, createElementBlock as y, openBlock as r, createVNode as b, createBlock as v, createCommentVNode as F, unref as p, withCtx as l, normalizeClass as f, createElementVNode as D, createTextVNode as g, Fragment as q, renderList as W, renderSlot as j, toRaw as H } from "vue";
1
+ import { defineComponent as I, mergeModels as M, useModel as x, computed as Y, createElementBlock as y, openBlock as r, createVNode as b, createBlock as v, createCommentVNode as T, unref as p, withCtx as l, normalizeClass as f, createElementVNode as D, createTextVNode as g, Fragment as q, renderList as W, renderSlot as j, toRaw as H } from "vue";
2
2
  import { PlElementList as $, PlCheckbox as J, PlBtnSecondary as B } from "@milaboratories/uikit";
3
3
  import K from "./FilterEditor.vue.js";
4
4
  import Q from "./OperandButton.vue.js";
5
5
  import { SUPPORTED_FILTER_TYPES as X, DEFAULT_FILTERS as Z, DEFAULT_FILTER_TYPE as _ } from "./constants.js";
6
- import { getNewId as R, createNewGroup as ee, isValidColumnId as N } from "./utils.js";
6
+ import { getNewId as R, createNewGroup as ee, isValidColumnId as P } from "./utils.js";
7
7
  const te = ["onDrop"], de = /* @__PURE__ */ I({
8
8
  __name: "PlAdvancedFilter",
9
9
  props: /* @__PURE__ */ M({
@@ -21,7 +21,7 @@ const te = ["onDrop"], de = /* @__PURE__ */ I({
21
21
  const i = x(m, "filters"), s = m, G = Y(() => {
22
22
  var e;
23
23
  return (e = s.items[0]) == null ? void 0 : e.id;
24
- }), P = [{
24
+ }), N = [{
25
25
  id: -1,
26
26
  type: "and",
27
27
  filters: [],
@@ -90,17 +90,17 @@ const te = ["onDrop"], de = /* @__PURE__ */ I({
90
90
  const o = t.dataTransfer;
91
91
  if (o != null && o.getData("text/plain")) {
92
92
  const n = o.getData("text/plain");
93
- N(n) && w(e, n);
93
+ P(n) && w(e, n);
94
94
  }
95
95
  }
96
96
  function O(e) {
97
97
  const t = e.dataTransfer;
98
98
  if (t != null && t.getData("text/plain")) {
99
99
  const o = t.getData("text/plain");
100
- N(o) && C(o);
100
+ P(o) && C(o);
101
101
  }
102
102
  }
103
- function T(e) {
103
+ function F(e) {
104
104
  e.preventDefault();
105
105
  }
106
106
  function h(e) {
@@ -136,7 +136,7 @@ const te = ["onDrop"], de = /* @__PURE__ */ I({
136
136
  class: f(e.$style.groupContent),
137
137
  dropzone: "true",
138
138
  onDrop: (c) => V(n, c),
139
- onDragover: T
139
+ onDragover: F
140
140
  }, [
141
141
  b(p(J), {
142
142
  "model-value": o.type === "not",
@@ -144,7 +144,7 @@ const te = ["onDrop"], de = /* @__PURE__ */ I({
144
144
  "onUpdate:modelValue": (c) => L(n)
145
145
  }, {
146
146
  default: l(() => [...t[3] || (t[3] = [
147
- g("NOT", -1)
147
+ g(" Filter Out ", -1)
148
148
  ])]),
149
149
  _: 1
150
150
  }, 8, ["model-value", "class", "onUpdate:modelValue"]),
@@ -185,13 +185,13 @@ const te = ["onDrop"], de = /* @__PURE__ */ I({
185
185
  active: i.value.type,
186
186
  disabled: o === d().length - 1,
187
187
  "on-select": (n) => i.value.type = n
188
- }, null, 8, ["class", "active", "disabled", "on-select"])) : F("", !0)
188
+ }, null, 8, ["class", "active", "disabled", "on-select"])) : T("", !0)
189
189
  ]),
190
190
  _: 1
191
191
  }, 8, ["items", "get-item-key", "item-class", "item-class-content", "item-class-title", "is-expanded", "on-expand"]),
192
192
  s.enableAddGroupButton ? (r(), v(p($), {
193
193
  key: 0,
194
- items: P,
194
+ items: N,
195
195
  "get-item-key": (o) => o.id,
196
196
  "item-class": e.$style.filterGroup,
197
197
  "item-class-content": e.$style.filterGroupContent,
@@ -203,7 +203,7 @@ const te = ["onDrop"], de = /* @__PURE__ */ I({
203
203
  disablePinning: !0,
204
204
  dropzone: "true",
205
205
  onDrop: O,
206
- onDragover: T
206
+ onDragover: F
207
207
  }, {
208
208
  "item-title": l(() => [...t[6] || (t[6] = [
209
209
  g("Filter group", -1)
@@ -227,7 +227,7 @@ const te = ["onDrop"], de = /* @__PURE__ */ I({
227
227
  ])
228
228
  ]),
229
229
  _: 3
230
- }, 8, ["get-item-key", "item-class", "item-class-content", "item-class-title"])) : F("", !0)
230
+ }, 8, ["get-item-key", "item-class", "item-class-content", "item-class-title"])) : T("", !0)
231
231
  ]));
232
232
  }
233
233
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PlAdvancedFilter.vue2.js","sources":["../../../src/components/PlAdvancedFilter/PlAdvancedFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlBtnSecondary, PlCheckbox, PlElementList } from '@milaboratories/uikit';\nimport type { ListOptionBase } from '@platforma-sdk/model';\nimport { computed, toRaw } from 'vue';\nimport FilterEditor from './FilterEditor.vue';\nimport OperandButton from './OperandButton.vue';\nimport { DEFAULT_FILTER_TYPE, DEFAULT_FILTERS, SUPPORTED_FILTER_TYPES } from './constants';\nimport type { CommonFilter, EditableFilter, NodeFilter, PlAdvancedFilterColumnId, RootFilter, SourceOptionInfo } from './types';\nimport { createNewGroup, getNewId, isValidColumnId } from './utils';\n\nconst model = defineModel<RootFilter>('filters', { required: true });\n\nconst props = withDefaults(defineProps<{\n /** List of ids of sources (columns, axes) that can be selected in filters */\n items: SourceOptionInfo[];\n /** List of supported filter types */\n supportedFilters?: typeof SUPPORTED_FILTER_TYPES;\n /** If true - new filter can be added by droppind element into filter group; else new column is added by button click */\n enableDnd?: boolean;\n /** If true - \"Add group\" button is shown below the filter groups */\n enableAddGroupButton?: boolean;\n /** Loading function for unique values for Equal/InSet filters and fixed axes options. */\n getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; axisIdx?: number; searchStr: string; searchType: 'value' | 'label' }) =>\n ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;\n}>(), {\n supportedFilters: () => SUPPORTED_FILTER_TYPES,\n getSuggestModel: undefined,\n\n enableDnd: false,\n enableAddGroupButton: false,\n});\n\nconst firstColumnId = computed(() => props.items[0]?.id);\nconst emptyGroup: NodeFilter[] = [{\n id: -1,\n type: 'and',\n filters: [],\n isExpanded: true,\n}];\n\nfunction getRootGroups() {\n if (model.value.type !== 'or' && model.value.type !== 'and') {\n throw new Error('Invalid model structure, expected root to be \"or\" or \"and\" group');\n }\n return model.value.filters;\n}\n\nfunction getRootGroup(idx: number): NodeFilter {\n const groups = getRootGroups();\n const group = groups[idx];\n if (group.type !== 'and' && group.type !== 'or' && group.type !== 'not') {\n throw new Error('Invalid group structure, expected \"and\", \"or\" or \"not\" group');\n }\n return group;\n}\n\nfunction getRootGroupContent(idx: number): Exclude<NodeFilter, { type: 'not' }> {\n const group = getRootGroup(idx);\n\n if (group.type !== 'not') {\n return group;\n }\n\n if (group.filter.type !== 'and' && group.filter.type !== 'or') {\n throw new Error('Invalid group structure, expected \"and\" or \"or\" group inside \"not\"');\n }\n\n return group.filter;\n}\n\nfunction addColumnToGroup(groupIdx: number, selectedSourceId: PlAdvancedFilterColumnId) {\n const group = getRootGroupContent(groupIdx);\n\n group.filters.push({\n ...DEFAULT_FILTERS[DEFAULT_FILTER_TYPE],\n column: selectedSourceId,\n id: getNewId(),\n isExpanded: true,\n } as CommonFilter);\n}\n\nfunction removeFilterFromGroup(groupIdx: number, filterIdx: number) {\n const group = getRootGroupContent(groupIdx);\n\n if (group.filters.length === 1 && filterIdx === 0) {\n removeGroup(groupIdx);\n } else {\n group.filters.splice(filterIdx, 1);\n }\n}\nfunction inverseRootNode(groupIdx: number) {\n const groups = getRootGroups();\n const group = groups[groupIdx];\n if (group.type === 'not') {\n if (group.filter.type !== 'and' && group.filter.type !== 'or') {\n throw new Error('Invalid group structure, expected \"and\" or \"or\" group inside \"not\"');\n }\n groups[groupIdx] = group.filter;\n } else {\n const type = groups[groupIdx].type;\n if (type !== 'and' && type !== 'or' && type !== 'not') {\n throw new Error('Invalid group structure, expected \"and\", \"or\" or \"not\" group');\n }\n\n groups[groupIdx] = {\n id: getNewId(),\n isExpanded: true,\n type: 'not',\n filter: groups[groupIdx],\n };\n }\n}\n\nfunction getNotContent<T extends CommonFilter>(item: T): Exclude<T, { type: 'not' }> {\n return item.type === 'not' ? item.filter as Exclude<T, { type: 'not' }> : item as Exclude<T, { type: 'not' }>;\n}\n\nfunction removeGroup(groupIdx: number) {\n const groups = getRootGroups();\n groups.splice(groupIdx, 1);\n}\nfunction addGroup(selectedSourceId: PlAdvancedFilterColumnId) {\n const newGroup = createNewGroup(selectedSourceId);\n const groups = getRootGroups();\n groups.push(newGroup);\n}\n\nfunction handleDropToExistingGroup(groupIdx: number, event: DragEvent) {\n const dataTransfer = event.dataTransfer;\n if (dataTransfer?.getData('text/plain')) {\n const draggedId = dataTransfer.getData('text/plain');\n if (isValidColumnId(draggedId)) {\n addColumnToGroup(groupIdx, draggedId);\n }\n }\n}\nfunction handleDropToNewGroup(event: DragEvent) {\n const dataTransfer = event.dataTransfer;\n if (dataTransfer?.getData('text/plain')) {\n const draggedId = dataTransfer.getData('text/plain');\n if (isValidColumnId(draggedId)) {\n addGroup(draggedId);\n }\n }\n}\nfunction dragOver(event: DragEvent) {\n event.preventDefault();\n}\n\nfunction validateFilter<T extends CommonFilter>(item: T): EditableFilter {\n if (item.type === 'and' || item.type === 'or' || item.type === 'not') {\n throw new Error('Invalid filter structure, expected leaf filter');\n }\n\n return item as EditableFilter;\n}\n\nfunction updateFilter(filters: CommonFilter[], idx: number, updatedFilter: EditableFilter) {\n filters[idx] = toRaw(updatedFilter as CommonFilter);\n}\n</script>\n<template>\n <div>\n <PlElementList\n v-model:items=\"model.filters\"\n :get-item-key=\"(filter) => filter.id\"\n\n :item-class=\"$style.filterGroup\"\n :item-class-content=\"$style.filterGroupContent\"\n :item-class-title=\"$style.filterGroupTitle\"\n\n :is-expanded=\"(filter) => filter.isExpanded === true\"\n :on-expand=\"(group) => { group.isExpanded = !group.isExpanded}\"\n\n :disableDragging=\"false\"\n :disableRemoving=\"false\"\n :disableToggling=\"true\"\n :disablePinning=\"true\"\n >\n <template #item-title>\n Filter group\n </template>\n <template #item-content=\"{ item, index }\">\n <div\n :class=\"$style.groupContent\"\n dropzone=\"true\"\n @drop=\"(event) => handleDropToExistingGroup(index, event)\"\n @dragover=\"dragOver\"\n >\n <PlCheckbox :model-value=\"item.type === 'not'\" :class=\"$style.notCheckbox\" @update:model-value=\"inverseRootNode(index)\">NOT</PlCheckbox>\n <template v-for=\"(_, filterIdx) in getNotContent(item).filters\" :key=\"filterIdx\">\n <FilterEditor\n :filter=\"validateFilter(getNotContent(item).filters[filterIdx])\"\n :operand=\"getNotContent(item).type\"\n :column-options=\"items\"\n :supported-filters=\"props.supportedFilters\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :enable-dnd=\"Boolean(props.enableDnd)\"\n :is-last=\"filterIdx === getNotContent(item).filters.length - 1\"\n :on-change-operand=\"(v) => getNotContent(item).type = v\"\n :on-delete=\"() => removeFilterFromGroup(index, filterIdx)\"\n @update:filter=\"(value) => updateFilter(getNotContent(item).filters, filterIdx, value)\"\n />\n </template>\n <div v-if=\"props.enableDnd\" :class=\"$style.dropzone\">\n <div>Drop dimensions here</div>\n </div>\n <PlBtnSecondary v-else icon=\"add\" @click=\"addColumnToGroup(index, firstColumnId)\">\n Add filter\n </PlBtnSecondary>\n </div>\n </template>\n <template #item-after=\"{ index }\">\n <OperandButton\n v-if=\"props.enableAddGroupButton || index < getRootGroups().length - 1\"\n :class=\"$style.buttonWrapper\"\n :active=\"model.type\"\n :disabled=\"index === getRootGroups().length - 1\"\n :on-select=\"(v) => model.type = v\"\n />\n </template>\n </PlElementList>\n\n <!-- Last group - always empty, just for adding new groups -->\n <PlElementList\n v-if=\"props.enableAddGroupButton\"\n :items=\"emptyGroup\"\n :get-item-key=\"(group) => group.id\"\n :item-class=\"$style.filterGroup\"\n :item-class-content=\"$style.filterGroupContent\"\n :item-class-title=\"$style.filterGroupTitle\"\n\n :is-expanded=\"() => true\"\n\n :disableDragging=\"true\"\n :disableRemoving=\"true\"\n :disableToggling=\"true\"\n :disablePinning=\"true\"\n dropzone=\"true\"\n @drop=\"handleDropToNewGroup\"\n @dragover=\"dragOver\"\n >\n <template #item-title>Filter group</template>\n <template #item-content>\n <div v-if=\"enableDnd\" :class=\"$style.dropzone\">\n <div>Drop dimensions here</div>\n </div>\n <slot v-else name=\"add-group-buttons\">\n <PlBtnSecondary icon=\"add\" @click=\"addGroup(firstColumnId)\">\n Add filter\n </PlBtnSecondary>\n </slot>\n </template>\n </PlElementList>\n </div>\n</template>\n<style module>\n .filterGroup {\n background: var(--bg-base-light);\n }\n .filterGroup:hover {\n background: rgba(99, 224, 36, 0.12);\n }\n .filterGroupTitle {\n background: none;\n }\n .filterGroupContent {\n padding: 4px 24px 24px 24px;\n }\n .groupContent {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n .notCheckbox {\n margin: 4px 0;\n }\n .dropzone {\n border-radius: 6px;\n border: 1.5px dashed var(--color-div-grey);\n color: var(--txt-03);\n font-family: Manrope;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n height: 40px;\n cursor: default;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .buttonWrapper {\n margin-top: 8px;\n height: 56px;\n display: flex;\n align-items: center;\n }\n :global(.sortable-chosen) .buttonWrapper {\n visibility: hidden;\n }\n</style>\n"],"names":["model","_useModel","__props","props","firstColumnId","computed","_a","emptyGroup","getRootGroups","getRootGroup","idx","group","getRootGroupContent","addColumnToGroup","groupIdx","selectedSourceId","DEFAULT_FILTERS","DEFAULT_FILTER_TYPE","getNewId","removeFilterFromGroup","filterIdx","removeGroup","inverseRootNode","groups","type","getNotContent","item","addGroup","newGroup","createNewGroup","handleDropToExistingGroup","event","dataTransfer","draggedId","isValidColumnId","handleDropToNewGroup","dragOver","validateFilter","updateFilter","filters","updatedFilter","toRaw","_createElementBlock","_createVNode","_unref","PlElementList","_cache","$event","filter","$style","_withCtx","index","_createElementVNode","_normalizeClass","PlCheckbox","_Fragment","_renderList","_","_createBlock","FilterEditor","v","value","PlBtnSecondary","OperandButton","_renderSlot","_ctx"],"mappings":"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"}
1
+ {"version":3,"file":"PlAdvancedFilter.vue2.js","sources":["../../../src/components/PlAdvancedFilter/PlAdvancedFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlBtnSecondary, PlCheckbox, PlElementList } from '@milaboratories/uikit';\nimport type { ListOptionBase } from '@platforma-sdk/model';\nimport { computed, toRaw } from 'vue';\nimport FilterEditor from './FilterEditor.vue';\nimport OperandButton from './OperandButton.vue';\nimport { DEFAULT_FILTER_TYPE, DEFAULT_FILTERS, SUPPORTED_FILTER_TYPES } from './constants';\nimport type { CommonFilter, EditableFilter, NodeFilter, PlAdvancedFilterColumnId, RootFilter, SourceOptionInfo } from './types';\nimport { createNewGroup, getNewId, isValidColumnId } from './utils';\n\nconst model = defineModel<RootFilter>('filters', { required: true });\n\nconst props = withDefaults(defineProps<{\n /** List of ids of sources (columns, axes) that can be selected in filters */\n items: SourceOptionInfo[];\n /** List of supported filter types */\n supportedFilters?: typeof SUPPORTED_FILTER_TYPES;\n /** If true - new filter can be added by droppind element into filter group; else new column is added by button click */\n enableDnd?: boolean;\n /** If true - \"Add group\" button is shown below the filter groups */\n enableAddGroupButton?: boolean;\n /** Loading function for unique values for Equal/InSet filters and fixed axes options. */\n getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; axisIdx?: number; searchStr: string; searchType: 'value' | 'label' }) =>\n ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;\n}>(), {\n supportedFilters: () => SUPPORTED_FILTER_TYPES,\n getSuggestModel: undefined,\n\n enableDnd: false,\n enableAddGroupButton: false,\n});\n\nconst firstColumnId = computed(() => props.items[0]?.id);\nconst emptyGroup: NodeFilter[] = [{\n id: -1,\n type: 'and',\n filters: [],\n isExpanded: true,\n}];\n\nfunction getRootGroups() {\n if (model.value.type !== 'or' && model.value.type !== 'and') {\n throw new Error('Invalid model structure, expected root to be \"or\" or \"and\" group');\n }\n return model.value.filters;\n}\n\nfunction getRootGroup(idx: number): NodeFilter {\n const groups = getRootGroups();\n const group = groups[idx];\n if (group.type !== 'and' && group.type !== 'or' && group.type !== 'not') {\n throw new Error('Invalid group structure, expected \"and\", \"or\" or \"not\" group');\n }\n return group;\n}\n\nfunction getRootGroupContent(idx: number): Exclude<NodeFilter, { type: 'not' }> {\n const group = getRootGroup(idx);\n\n if (group.type !== 'not') {\n return group;\n }\n\n if (group.filter.type !== 'and' && group.filter.type !== 'or') {\n throw new Error('Invalid group structure, expected \"and\" or \"or\" group inside \"not\"');\n }\n\n return group.filter;\n}\n\nfunction addColumnToGroup(groupIdx: number, selectedSourceId: PlAdvancedFilterColumnId) {\n const group = getRootGroupContent(groupIdx);\n\n group.filters.push({\n ...DEFAULT_FILTERS[DEFAULT_FILTER_TYPE],\n column: selectedSourceId,\n id: getNewId(),\n isExpanded: true,\n } as CommonFilter);\n}\n\nfunction removeFilterFromGroup(groupIdx: number, filterIdx: number) {\n const group = getRootGroupContent(groupIdx);\n\n if (group.filters.length === 1 && filterIdx === 0) {\n removeGroup(groupIdx);\n } else {\n group.filters.splice(filterIdx, 1);\n }\n}\nfunction inverseRootNode(groupIdx: number) {\n const groups = getRootGroups();\n const group = groups[groupIdx];\n if (group.type === 'not') {\n if (group.filter.type !== 'and' && group.filter.type !== 'or') {\n throw new Error('Invalid group structure, expected \"and\" or \"or\" group inside \"not\"');\n }\n groups[groupIdx] = group.filter;\n } else {\n const type = groups[groupIdx].type;\n if (type !== 'and' && type !== 'or' && type !== 'not') {\n throw new Error('Invalid group structure, expected \"and\", \"or\" or \"not\" group');\n }\n\n groups[groupIdx] = {\n id: getNewId(),\n isExpanded: true,\n type: 'not',\n filter: groups[groupIdx],\n };\n }\n}\n\nfunction getNotContent<T extends CommonFilter>(item: T): Exclude<T, { type: 'not' }> {\n return item.type === 'not' ? item.filter as Exclude<T, { type: 'not' }> : item as Exclude<T, { type: 'not' }>;\n}\n\nfunction removeGroup(groupIdx: number) {\n const groups = getRootGroups();\n groups.splice(groupIdx, 1);\n}\nfunction addGroup(selectedSourceId: PlAdvancedFilterColumnId) {\n const newGroup = createNewGroup(selectedSourceId);\n const groups = getRootGroups();\n groups.push(newGroup);\n}\n\nfunction handleDropToExistingGroup(groupIdx: number, event: DragEvent) {\n const dataTransfer = event.dataTransfer;\n if (dataTransfer?.getData('text/plain')) {\n const draggedId = dataTransfer.getData('text/plain');\n if (isValidColumnId(draggedId)) {\n addColumnToGroup(groupIdx, draggedId);\n }\n }\n}\nfunction handleDropToNewGroup(event: DragEvent) {\n const dataTransfer = event.dataTransfer;\n if (dataTransfer?.getData('text/plain')) {\n const draggedId = dataTransfer.getData('text/plain');\n if (isValidColumnId(draggedId)) {\n addGroup(draggedId);\n }\n }\n}\nfunction dragOver(event: DragEvent) {\n event.preventDefault();\n}\n\nfunction validateFilter<T extends CommonFilter>(item: T): EditableFilter {\n if (item.type === 'and' || item.type === 'or' || item.type === 'not') {\n throw new Error('Invalid filter structure, expected leaf filter');\n }\n\n return item as EditableFilter;\n}\n\nfunction updateFilter(filters: CommonFilter[], idx: number, updatedFilter: EditableFilter) {\n filters[idx] = toRaw(updatedFilter as CommonFilter);\n}\n</script>\n<template>\n <div>\n <PlElementList\n v-model:items=\"model.filters\"\n :get-item-key=\"(filter) => filter.id\"\n\n :item-class=\"$style.filterGroup\"\n :item-class-content=\"$style.filterGroupContent\"\n :item-class-title=\"$style.filterGroupTitle\"\n\n :is-expanded=\"(filter) => filter.isExpanded === true\"\n :on-expand=\"(group) => { group.isExpanded = !group.isExpanded}\"\n\n :disableDragging=\"false\"\n :disableRemoving=\"false\"\n :disableToggling=\"true\"\n :disablePinning=\"true\"\n >\n <template #item-title>\n Filter group\n </template>\n <template #item-content=\"{ item, index }\">\n <div\n :class=\"$style.groupContent\"\n dropzone=\"true\"\n @drop=\"(event) => handleDropToExistingGroup(index, event)\"\n @dragover=\"dragOver\"\n >\n <PlCheckbox\n :model-value=\"item.type === 'not'\"\n :class=\"$style.notCheckbox\"\n @update:model-value=\"inverseRootNode(index)\"\n >\n Filter Out\n </PlCheckbox>\n <template v-for=\"(_, filterIdx) in getNotContent(item).filters\" :key=\"filterIdx\">\n <FilterEditor\n :filter=\"validateFilter(getNotContent(item).filters[filterIdx])\"\n :operand=\"getNotContent(item).type\"\n :column-options=\"items\"\n :supported-filters=\"props.supportedFilters\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :enable-dnd=\"Boolean(props.enableDnd)\"\n :is-last=\"filterIdx === getNotContent(item).filters.length - 1\"\n :on-change-operand=\"(v) => getNotContent(item).type = v\"\n :on-delete=\"() => removeFilterFromGroup(index, filterIdx)\"\n @update:filter=\"(value) => updateFilter(getNotContent(item).filters, filterIdx, value)\"\n />\n </template>\n <div v-if=\"props.enableDnd\" :class=\"$style.dropzone\">\n <div>Drop dimensions here</div>\n </div>\n <PlBtnSecondary v-else icon=\"add\" @click=\"addColumnToGroup(index, firstColumnId)\">\n Add filter\n </PlBtnSecondary>\n </div>\n </template>\n <template #item-after=\"{ index }\">\n <OperandButton\n v-if=\"props.enableAddGroupButton || index < getRootGroups().length - 1\"\n :class=\"$style.buttonWrapper\"\n :active=\"model.type\"\n :disabled=\"index === getRootGroups().length - 1\"\n :on-select=\"(v) => model.type = v\"\n />\n </template>\n </PlElementList>\n\n <!-- Last group - always empty, just for adding new groups -->\n <PlElementList\n v-if=\"props.enableAddGroupButton\"\n :items=\"emptyGroup\"\n :get-item-key=\"(group) => group.id\"\n :item-class=\"$style.filterGroup\"\n :item-class-content=\"$style.filterGroupContent\"\n :item-class-title=\"$style.filterGroupTitle\"\n\n :is-expanded=\"() => true\"\n\n :disableDragging=\"true\"\n :disableRemoving=\"true\"\n :disableToggling=\"true\"\n :disablePinning=\"true\"\n dropzone=\"true\"\n @drop=\"handleDropToNewGroup\"\n @dragover=\"dragOver\"\n >\n <template #item-title>Filter group</template>\n <template #item-content>\n <div v-if=\"enableDnd\" :class=\"$style.dropzone\">\n <div>Drop dimensions here</div>\n </div>\n <slot v-else name=\"add-group-buttons\">\n <PlBtnSecondary icon=\"add\" @click=\"addGroup(firstColumnId)\">\n Add filter\n </PlBtnSecondary>\n </slot>\n </template>\n </PlElementList>\n </div>\n</template>\n<style module>\n .filterGroup {\n background: var(--bg-base-light);\n }\n .filterGroup:hover {\n background: rgba(99, 224, 36, 0.12);\n }\n .filterGroupTitle {\n background: none;\n }\n .filterGroupContent {\n padding: 4px 24px 24px 24px;\n }\n .groupContent {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n .notCheckbox {\n margin: 4px 0;\n }\n .dropzone {\n border-radius: 6px;\n border: 1.5px dashed var(--color-div-grey);\n color: var(--txt-03);\n font-family: Manrope;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n height: 40px;\n cursor: default;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .buttonWrapper {\n margin-top: 8px;\n height: 56px;\n display: flex;\n align-items: center;\n }\n :global(.sortable-chosen) .buttonWrapper {\n visibility: hidden;\n }\n</style>\n"],"names":["model","_useModel","__props","props","firstColumnId","computed","_a","emptyGroup","getRootGroups","getRootGroup","idx","group","getRootGroupContent","addColumnToGroup","groupIdx","selectedSourceId","DEFAULT_FILTERS","DEFAULT_FILTER_TYPE","getNewId","removeFilterFromGroup","filterIdx","removeGroup","inverseRootNode","groups","type","getNotContent","item","addGroup","newGroup","createNewGroup","handleDropToExistingGroup","event","dataTransfer","draggedId","isValidColumnId","handleDropToNewGroup","dragOver","validateFilter","updateFilter","filters","updatedFilter","toRaw","_createElementBlock","_createVNode","_unref","PlElementList","_cache","$event","filter","$style","_withCtx","index","_createElementVNode","_normalizeClass","PlCheckbox","_Fragment","_renderList","_","_createBlock","FilterEditor","v","value","PlBtnSecondary","OperandButton","_renderSlot","_ctx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AnnotationsSidebar.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAnnotations/components/AnnotationsSidebar.vue"],"names":[],"mappings":"AAkHA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA6B3C,KAAK,iBAAiB,GAAG;IACzB,YAAY,EAAE,UAAU,CAAC;IACzB,gBAAgB,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CACrC,CAAC;;;;;;;;;;;AAkLF,wBAQG"}
1
+ {"version":3,"file":"AnnotationsSidebar.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAnnotations/components/AnnotationsSidebar.vue"],"names":[],"mappings":"AAgIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA4B3C,KAAK,iBAAiB,GAAG;IACzB,YAAY,EAAE,UAAU,CAAC;IACzB,gBAAgB,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CACrC,CAAC;;;;;;;;;;;AA+MF,wBAQG"}
@@ -1,8 +1,8 @@
1
- import { defineComponent as y, mergeModels as S, useModel as u, createBlock as I, openBlock as h, unref as o, createSlots as k, withCtx as s, createVNode as a, withModifiers as C, createTextVNode as r, normalizeClass as i, createElementVNode as p, toDisplayString as V } from "vue";
2
- import { randomInt as f } from "../../../lib/util/helpers/dist/random.js";
3
- import { PlSidebarItem as $, PlBtnGhost as M, PlEditableTitle as P, PlElementList as w, PlBtnSecondary as A } from "@milaboratories/uikit";
4
- import v from "./style.module.css.js";
5
- const T = /* @__PURE__ */ y({
1
+ import { defineComponent as S, mergeModels as k, useModel as m, createBlock as I, openBlock as V, unref as a, createSlots as C, withCtx as n, createVNode as i, withModifiers as p, createTextVNode as r, normalizeClass as s, createElementVNode as v, toDisplayString as P } from "vue";
2
+ import f from "./style.module.css.js";
3
+ import { randomInt as b } from "../../../lib/util/helpers/dist/random.js";
4
+ import { PlSidebarItem as M, PlBtnGhost as $, PlEditableTitle as h, PlTextField as w, PlElementList as x, PlBtnSecondary as A } from "@milaboratories/uikit";
5
+ const N = /* @__PURE__ */ S({
6
6
  __name: "AnnotationsSidebar",
7
7
  props: {
8
8
  annotation: { required: !0 },
@@ -10,41 +10,41 @@ const T = /* @__PURE__ */ y({
10
10
  selectedStepId: {},
11
11
  selectedStepIdModifiers: {}
12
12
  },
13
- emits: /* @__PURE__ */ S(["delete-schema"], ["update:annotation", "update:selectedStepId"]),
14
- setup(m, { emit: c }) {
15
- const l = u(m, "annotation"), d = u(m, "selectedStepId"), g = c;
16
- function b() {
17
- const n = f();
13
+ emits: /* @__PURE__ */ k(["delete-schema"], ["update:annotation", "update:selectedStepId"]),
14
+ setup(u, { emit: c }) {
15
+ const l = m(u, "annotation"), d = m(u, "selectedStepId"), g = c;
16
+ function y() {
17
+ const o = b();
18
18
  l.value.steps.push({
19
- id: n,
19
+ id: o,
20
20
  label: "",
21
21
  filter: {
22
- id: f(),
22
+ id: b(),
23
23
  type: "and",
24
24
  filters: []
25
25
  }
26
- }), d.value = n;
26
+ }), d.value = o;
27
27
  }
28
- return (n, e) => (h(), I(o($), null, k({
29
- "header-content": s(() => [
30
- a(o(P), {
28
+ return (o, e) => (V(), I(a(M), null, C({
29
+ "header-content": n(() => [
30
+ i(a(h), {
31
31
  modelValue: l.value.title,
32
32
  "onUpdate:modelValue": e[0] || (e[0] = (t) => l.value.title = t),
33
- class: i({ [o(v).flashing]: l.value.title.length === 0 }),
33
+ class: s({ [a(f).flashing]: l.value.title.length === 0 }),
34
34
  "max-length": 40,
35
35
  "max-width": "600px",
36
36
  placeholder: "Annotation Title",
37
37
  autofocus: l.value.title.length === 0
38
38
  }, null, 8, ["modelValue", "class", "autofocus"])
39
39
  ]),
40
- "footer-content": s(() => [
41
- a(o(M), {
40
+ "footer-content": n(() => [
41
+ i(a($), {
42
42
  icon: "delete-bin",
43
43
  reverse: "",
44
44
  disabled: l.value.steps.length === 0,
45
- onClick: e[3] || (e[3] = C((t) => g("delete-schema"), ["stop"]))
45
+ onClick: e[5] || (e[5] = p((t) => g("delete-schema"), ["stop"]))
46
46
  }, {
47
- default: s(() => [...e[5] || (e[5] = [
47
+ default: n(() => [...e[7] || (e[7] = [
48
48
  r(" Delete Schema ", -1)
49
49
  ])]),
50
50
  _: 1
@@ -54,32 +54,40 @@ const T = /* @__PURE__ */ y({
54
54
  }, [
55
55
  l.value ? {
56
56
  name: "body-content",
57
- fn: s(() => [
58
- p("div", {
59
- class: i([n.$style.root, { [o(v).disabled]: l.value.title.length === 0 }])
57
+ fn: n(() => [
58
+ v("div", {
59
+ class: s([o.$style.root, { [a(f).disabled]: l.value.title.length === 0 }])
60
60
  }, [
61
- p("span", {
62
- class: i(n.$style.tip)
61
+ v("span", {
62
+ class: s(o.$style.tip)
63
63
  }, "Lower annotations override the ones above. Rearrange them by dragging.", 2),
64
- a(o(w), {
64
+ i(a(w), {
65
+ "model-value": l.value.defaultValue ?? "",
66
+ label: "Default label",
67
+ clearable: "",
68
+ onClick: e[1] || (e[1] = p(() => {
69
+ }, ["stop"])),
70
+ "onUpdate:modelValue": e[2] || (e[2] = (t) => l.value.defaultValue = t === "" ? void 0 : t)
71
+ }, null, 8, ["model-value"]),
72
+ i(a(x), {
65
73
  items: l.value.steps,
66
- "onUpdate:items": e[1] || (e[1] = (t) => l.value.steps = t),
74
+ "onUpdate:items": e[3] || (e[3] = (t) => l.value.steps = t),
67
75
  "get-item-key": (t) => t.id,
68
76
  "is-active": (t) => t.id === d.value,
69
- "item-class": n.$style.stepItem,
70
- class: i(n.$style.steps),
71
- onItemClick: e[2] || (e[2] = (t) => d.value = t.id)
77
+ "item-class": o.$style.stepItem,
78
+ class: s(o.$style.steps),
79
+ onItemClick: e[4] || (e[4] = (t) => d.value = t.id)
72
80
  }, {
73
- "item-title": s(({ item: t }) => [
74
- r(V(t.label), 1)
81
+ "item-title": n(({ item: t }) => [
82
+ r(P(t.label), 1)
75
83
  ]),
76
84
  _: 1
77
85
  }, 8, ["items", "get-item-key", "is-active", "item-class", "class"]),
78
- a(o(A), {
86
+ i(a(A), {
79
87
  icon: "add",
80
- onClick: b
88
+ onClick: y
81
89
  }, {
82
- default: s(() => [...e[4] || (e[4] = [
90
+ default: n(() => [...e[6] || (e[6] = [
83
91
  r(" Add label ", -1)
84
92
  ])]),
85
93
  _: 1
@@ -92,6 +100,6 @@ const T = /* @__PURE__ */ y({
92
100
  }
93
101
  });
94
102
  export {
95
- T as default
103
+ N as default
96
104
  };
97
105
  //# sourceMappingURL=AnnotationsSidebar.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnnotationsSidebar.vue2.js","sources":["../../../../src/components/PlAnnotations/components/AnnotationsSidebar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { randomInt } from '@milaboratories/helpers';\nimport {\n PlBtnGhost,\n PlBtnSecondary,\n PlEditableTitle,\n PlElementList,\n PlSidebarItem,\n} from '@milaboratories/uikit';\nimport type { Annotation } from '../types';\nimport $commonStyle from './style.module.css';\n\n// Models\nconst annotation = defineModel<Annotation>('annotation', { required: true });\nconst selectedStepId = defineModel<undefined | number>('selectedStepId');\n// Emits\nconst emits = defineEmits<{\n (e: 'delete-schema'): void;\n}>();\n// Actions\nfunction handleAddStep() {\n const id = randomInt();\n annotation.value.steps.push({\n id,\n label: '',\n filter: {\n id: randomInt(),\n type: 'and',\n filters: [],\n },\n });\n selectedStepId.value = id;\n};\n</script>\n\n<template>\n <PlSidebarItem>\n <template #header-content>\n <PlEditableTitle\n v-model=\"annotation.title\"\n :class=\"{ [$commonStyle.flashing]: annotation.title.length === 0 }\"\n :max-length=\"40\"\n max-width=\"600px\"\n placeholder=\"Annotation Title\"\n :autofocus=\"annotation.title.length === 0\"\n />\n </template>\n <template v-if=\"annotation\" #body-content>\n <div :class=\"[$style.root, { [$commonStyle.disabled]: annotation.title.length === 0 }]\">\n <span :class=\"$style.tip\">Lower annotations override the ones above. Rearrange them by dragging.</span>\n\n <PlElementList\n v-model:items=\"annotation.steps\"\n :get-item-key=\"(item) => item.id\"\n :is-active=\"(item) => item.id === selectedStepId\"\n :item-class=\"$style.stepItem\"\n :class=\"$style.steps\"\n @item-click=\"(item) => selectedStepId = item.id\"\n >\n <template #item-title=\"{ item }\">\n {{ item.label }}\n </template>\n </PlElementList>\n <PlBtnSecondary icon=\"add\" @click=\"handleAddStep\">\n Add label\n </PlBtnSecondary>\n </div>\n </template>\n <template #footer-content>\n <PlBtnGhost\n icon=\"delete-bin\"\n reverse\n :disabled=\"annotation.steps.length === 0\"\n @click.stop=\"emits('delete-schema')\"\n >\n Delete Schema\n </PlBtnGhost>\n </template>\n </PlSidebarItem>\n</template>\n\n<style lang=\"scss\" module>\n@use '@milaboratories/uikit/styles/variables' as *;\n\n.root {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.tip {\n color: var(--txt-03);\n}\n\n.steps {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.stepItem {\n cursor: pointer;\n}\n</style>\n"],"names":["annotation","_useModel","selectedStepId","__props","emits","__emit","handleAddStep","id","randomInt","_createBlock","_unref","PlSidebarItem","_createSlots","_createVNode","PlEditableTitle","_cache","$event","_normalizeClass","PlBtnGhost","_createElementVNode","$style","$commonStyle","PlElementList","item","_withCtx","_createTextVNode","_toDisplayString","PlBtnSecondary"],"mappings":";;;;;;;;;;;;;;AAaA,UAAMA,IAAaC,KAAwB,YAAgC,GACrEC,IAAiBD,EAA+BE,GAAC,gBAAgB,GAEjEC,IAAQC;AAId,aAASC,IAAgB;AACvB,YAAMC,IAAKC,EAAA;AACX,MAAAR,EAAW,MAAM,MAAM,KAAK;AAAA,QAC1B,IAAAO;AAAA,QACA,OAAO;AAAA,QACP,QAAQ;AAAA,UACN,IAAIC,EAAA;AAAA,UACJ,MAAM;AAAA,UACN,SAAS,CAAA;AAAA,QAAC;AAAA,MACZ,CACD,GACDN,EAAe,QAAQK;AAAA,IACzB;2BAIEE,EA0CgBC,EAAAC,CAAA,GAAA,MAAAC,EAAA;AAAA,MAzCH,oBACT,MAOE;AAAA,QAPFC,EAOEH,EAAAI,CAAA,GAAA;AAAA,UANS,YAAAd,EAAA,MAAW;AAAA,UAAX,uBAAAe,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAhB,EAAA,MAAW,QAAKgB;AAAA,UACxB,OAAKC,EAAA,EAAA,CAAKP,KAAa,QAAQ,GAAGV,EAAA,MAAW,MAAM,WAAM,GAAA;AAAA,UACzD,cAAY;AAAA,UACb,aAAU;AAAA,UACV,aAAY;AAAA,UACX,WAAWA,EAAA,MAAW,MAAM,WAAM;AAAA,QAAA;;MAwB5B,oBACT,MAOa;AAAA,QAPba,EAOaH,EAAAQ,CAAA,GAAA;AAAA,UANX,MAAK;AAAA,UACL,SAAA;AAAA,UACC,UAAUlB,EAAA,MAAW,MAAM,WAAM;AAAA,UACjC,kCAAYI,EAAK,eAAA,GAAA,CAAA,MAAA,CAAA;AAAA,QAAA;qBACnB,MAED,CAAA,GAAAW,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,cAFC,mBAED,EAAA;AAAA,UAAA;;;;;;MA7Bcf,EAAA;cAAa;AAAA,cAC3B,MAkBM;AAAA,UAlBNmB,EAkBM,OAAA;AAAA,YAlBA,OAAKF,EAAA,CAAGG,EAAAA,OAAO,MAAI,EAAA,CAAKV,EAAAW,CAAA,EAAa,QAAQ,GAAGrB,EAAA,MAAW,MAAM,WAAM,GAAA,CAAA;AAAA,UAAA;YAC3EmB,EAAuG,QAAA;AAAA,cAAhG,OAAKF,EAAEG,EAAAA,OAAO,GAAG;AAAA,YAAA,GAAE,0EAAsE,CAAA;AAAA,YAEhGP,EAWgBH,EAAAY,CAAA,GAAA;AAAA,cAVN,OAAOtB,EAAA,MAAW;AAAA,cAAX,kBAAAe,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAhB,EAAA,MAAW,QAAKgB;AAAA,cAC9B,gBAAY,CAAGO,MAASA,EAAK;AAAA,cAC7B,cAAYA,MAASA,EAAK,OAAOrB,EAAA;AAAA,cACjC,cAAYkB,EAAAA,OAAO;AAAA,cACnB,OAAKH,EAAEG,EAAAA,OAAO,KAAK;AAAA,cACnB,8BAAaG,MAASrB,UAAiBqB,EAAK;AAAA,YAAA;cAElC,cAAUC,EACnB,CAAgB,EADO,MAAAD,QAAI;AAAA,gBACxBE,EAAAC,EAAAH,EAAK,KAAK,GAAA,CAAA;AAAA,cAAA;;;YAGjBV,EAEiBH,EAAAiB,CAAA,GAAA;AAAA,cAFD,MAAK;AAAA,cAAO,SAAOrB;AAAA,YAAA;yBAAe,MAElD,CAAA,GAAAS,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,kBAFkD,eAElD,EAAA;AAAA,cAAA;;;;;;;;;;"}
1
+ {"version":3,"file":"AnnotationsSidebar.vue2.js","sources":["../../../../src/components/PlAnnotations/components/AnnotationsSidebar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport $commonStyle from './style.module.css';\n\nimport { randomInt } from '@milaboratories/helpers';\nimport {\n PlBtnGhost,\n PlBtnSecondary,\n PlEditableTitle,\n PlElementList,\n PlSidebarItem,\n PlTextField,\n} from '@milaboratories/uikit';\nimport type { Annotation } from '../types';\n\n// Models\nconst annotation = defineModel<Annotation>('annotation', { required: true });\nconst selectedStepId = defineModel<undefined | number>('selectedStepId');\n// Emits\nconst emits = defineEmits<{\n (e: 'delete-schema'): void;\n}>();\n// Actions\nfunction handleAddStep() {\n const id = randomInt();\n annotation.value.steps.push({\n id,\n label: '',\n filter: {\n id: randomInt(),\n type: 'and',\n filters: [],\n },\n });\n selectedStepId.value = id;\n};\n</script>\n\n<template>\n <PlSidebarItem>\n <template #header-content>\n <PlEditableTitle\n v-model=\"annotation.title\"\n :class=\"{ [$commonStyle.flashing]: annotation.title.length === 0 }\"\n :max-length=\"40\"\n max-width=\"600px\"\n placeholder=\"Annotation Title\"\n :autofocus=\"annotation.title.length === 0\"\n />\n </template>\n <template v-if=\"annotation\" #body-content>\n <div :class=\"[$style.root, { [$commonStyle.disabled]: annotation.title.length === 0 }]\">\n <span :class=\"$style.tip\">Lower annotations override the ones above. Rearrange them by dragging.</span>\n\n <PlTextField\n :model-value=\"annotation.defaultValue ?? ''\"\n label=\"Default label\"\n clearable\n @click.stop\n @update:model-value=\"annotation.defaultValue = $event === '' ? undefined : $event\"\n />\n\n <PlElementList\n v-model:items=\"annotation.steps\"\n :get-item-key=\"(item) => item.id\"\n :is-active=\"(item) => item.id === selectedStepId\"\n :item-class=\"$style.stepItem\"\n :class=\"$style.steps\"\n @item-click=\"(item) => selectedStepId = item.id\"\n >\n <template #item-title=\"{ item }\">\n {{ item.label }}\n </template>\n </PlElementList>\n\n <PlBtnSecondary icon=\"add\" @click=\"handleAddStep\">\n Add label\n </PlBtnSecondary>\n </div>\n </template>\n <template #footer-content>\n <PlBtnGhost\n icon=\"delete-bin\"\n reverse\n :disabled=\"annotation.steps.length === 0\"\n @click.stop=\"emits('delete-schema')\"\n >\n Delete Schema\n </PlBtnGhost>\n </template>\n </PlSidebarItem>\n</template>\n\n<style lang=\"scss\" module>\n@use '@milaboratories/uikit/styles/variables' as *;\n\n.root {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.tip {\n color: var(--txt-03);\n}\n\n.steps {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.stepItem {\n cursor: pointer;\n}\n</style>\n"],"names":["annotation","_useModel","selectedStepId","__props","emits","__emit","handleAddStep","id","randomInt","_createBlock","_unref","PlSidebarItem","_createSlots","_createVNode","PlEditableTitle","_cache","$event","_normalizeClass","PlBtnGhost","_createElementVNode","$style","$commonStyle","PlTextField","PlElementList","item","_withCtx","_createTextVNode","_toDisplayString","PlBtnSecondary"],"mappings":"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"}
@@ -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,YATW,MAWxB;AAAA,QAAYP,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,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;;;;;;"}
@@ -10,5 +10,7 @@ export type Filter = FilterSpecUi<Extract<FilterSpec, {
10
10
  }>> & {
11
11
  id: number;
12
12
  };
13
- export type Annotation = AnnotationSpecUi<Filter>;
13
+ export type Annotation = AnnotationSpecUi<Filter> & {
14
+ defaultValue?: string;
15
+ };
14
16
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/PlAnnotations/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACtH,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,cAAc,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAE1G,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhG,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/PlAnnotations/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACtH,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,cAAc,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAE1G,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhG,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/ui-vue",
3
- "version": "1.48.4",
3
+ "version": "1.48.5",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "styles": "dist/index.js",
@@ -26,9 +26,9 @@
26
26
  "zod": "~3.23.8",
27
27
  "@zip.js/zip.js": "^2.8.2",
28
28
  "es-toolkit": "^1.39.10",
29
- "@milaboratories/ptabler-expression-js": "1.1.7",
30
- "@milaboratories/uikit": "2.8.2",
31
29
  "@milaboratories/biowasm-tools": "2.0.0",
30
+ "@milaboratories/uikit": "2.8.2",
31
+ "@milaboratories/ptabler-expression-js": "1.1.7",
32
32
  "@platforma-sdk/model": "1.48.4"
33
33
  },
34
34
  "devDependencies": {
@@ -44,11 +44,11 @@
44
44
  "yarpm": "^1.2.0",
45
45
  "fast-json-patch": "^3.1.1",
46
46
  "@faker-js/faker": "^9.2.0",
47
- "@milaboratories/ts-configs": "1.2.0",
48
- "@milaboratories/helpers": "1.12.0",
47
+ "@milaboratories/build-configs": "1.2.1",
49
48
  "@milaboratories/eslint-config": "1.0.5",
50
- "@milaboratories/ts-builder": "1.2.0",
51
- "@milaboratories/build-configs": "1.2.0"
49
+ "@milaboratories/ts-builder": "1.2.1",
50
+ "@milaboratories/helpers": "1.12.0",
51
+ "@milaboratories/ts-configs": "1.2.0"
52
52
  },
53
53
  "scripts": {
54
54
  "test": "vitest run --passWithNoTests",
@@ -187,7 +187,13 @@ function updateFilter(filters: CommonFilter[], idx: number, updatedFilter: Edita
187
187
  @drop="(event) => handleDropToExistingGroup(index, event)"
188
188
  @dragover="dragOver"
189
189
  >
190
- <PlCheckbox :model-value="item.type === 'not'" :class="$style.notCheckbox" @update:model-value="inverseRootNode(index)">NOT</PlCheckbox>
190
+ <PlCheckbox
191
+ :model-value="item.type === 'not'"
192
+ :class="$style.notCheckbox"
193
+ @update:model-value="inverseRootNode(index)"
194
+ >
195
+ Filter Out
196
+ </PlCheckbox>
191
197
  <template v-for="(_, filterIdx) in getNotContent(item).filters" :key="filterIdx">
192
198
  <FilterEditor
193
199
  :filter="validateFilter(getNotContent(item).filters[filterIdx])"
@@ -1,4 +1,6 @@
1
1
  <script setup lang="ts">
2
+ import $commonStyle from './style.module.css';
3
+
2
4
  import { randomInt } from '@milaboratories/helpers';
3
5
  import {
4
6
  PlBtnGhost,
@@ -6,9 +8,9 @@ import {
6
8
  PlEditableTitle,
7
9
  PlElementList,
8
10
  PlSidebarItem,
11
+ PlTextField,
9
12
  } from '@milaboratories/uikit';
10
13
  import type { Annotation } from '../types';
11
- import $commonStyle from './style.module.css';
12
14
 
13
15
  // Models
14
16
  const annotation = defineModel<Annotation>('annotation', { required: true });
@@ -49,6 +51,14 @@ function handleAddStep() {
49
51
  <div :class="[$style.root, { [$commonStyle.disabled]: annotation.title.length === 0 }]">
50
52
  <span :class="$style.tip">Lower annotations override the ones above. Rearrange them by dragging.</span>
51
53
 
54
+ <PlTextField
55
+ :model-value="annotation.defaultValue ?? ''"
56
+ label="Default label"
57
+ clearable
58
+ @click.stop
59
+ @update:model-value="annotation.defaultValue = $event === '' ? undefined : $event"
60
+ />
61
+
52
62
  <PlElementList
53
63
  v-model:items="annotation.steps"
54
64
  :get-item-key="(item) => item.id"
@@ -61,6 +71,7 @@ function handleAddStep() {
61
71
  {{ item.label }}
62
72
  </template>
63
73
  </PlElementList>
74
+
64
75
  <PlBtnSecondary icon="add" @click="handleAddStep">
65
76
  Add label
66
77
  </PlBtnSecondary>
@@ -5,4 +5,4 @@ export type FilterSpec = _FilterSpec<FilterSpecLeaf, { id: number; name?: string
5
5
 
6
6
  export type Filter = FilterSpecUi<Extract<FilterSpec, { type: 'and' | 'or' }>> & { id: number };
7
7
 
8
- export type Annotation = AnnotationSpecUi<Filter>;
8
+ export type Annotation = AnnotationSpecUi<Filter> & { defaultValue?: string };
@@ -1,151 +0,0 @@
1
- <script setup lang="ts" generic="T extends FilterSpecLeaf = FilterSpecLeaf">
2
- import { computed, watch } from 'vue';
3
-
4
- import { isNil } from '@milaboratories/helpers';
5
- import type { FilterSpecTypeFieldRecord } from '@milaboratories/uikit';
6
- import { getFilterUiMetadata, getFilterUiTypeOptions, PlCheckbox, PlDropdown, PlNumberField, PlTextField } from '@milaboratories/uikit';
7
- import type { FilterSpecLeaf, SimplifiedUniversalPColumnEntry, SUniversalPColumnId } from '@platforma-sdk/model';
8
-
9
- import type { FilterSpecType } from '../types';
10
-
11
- type ObjectEntries<T, K extends keyof T = keyof T> = [K, T[K]][];
12
-
13
- const formData = defineModel<T>({ default: () => ({}) });
14
-
15
- const props = defineProps<{
16
- columns: SimplifiedUniversalPColumnEntry[];
17
- formMetadata: FilterSpecTypeFieldRecord<T>;
18
- }>();
19
-
20
- const columnSpecRef = computed(() => {
21
- const value = formData.value;
22
- if ('column' in value) {
23
- return props.columns.find((c) => c.id === value.column)?.obj;
24
- }
25
- return undefined;
26
- });
27
-
28
- const typeMetadataRef = computed(() => {
29
- const value = formData.value;
30
- if (value.type && typeof value.type === 'string') {
31
- return getFilterUiMetadata(value.type);
32
- }
33
- return undefined;
34
- });
35
-
36
- const filterUiTypeOptions = computed(() => {
37
- return getFilterUiTypeOptions(columnSpecRef.value);
38
- });
39
-
40
- const firstColumnsOptions = computed(() => props.columns.map((c) => ({ label: c.label, value: c.id })));
41
- const secondColumnOptions = computed(() => {
42
- const typeMetadata = typeMetadataRef.value;
43
- const columnSpec = columnSpecRef.value;
44
- if (typeMetadata && columnSpec) {
45
- return props.columns.filter((c) => typeMetadata.supportedFor(columnSpec, c.obj)).map((c) => ({
46
- label: c.label,
47
- value: c.id,
48
- }));
49
- }
50
- return [];
51
- });
52
-
53
- const setFieldValue = <K extends keyof T>(fieldName: K, value: T[K]) => {
54
- formData.value[fieldName] = value;
55
- };
56
-
57
- watch(() => props.formMetadata, (newForm) => {
58
- for (const [fieldName, field] of Object.entries(newForm) as ObjectEntries<typeof newForm>) {
59
- if (formData.value[fieldName] === undefined) {
60
- const value = field.defaultValue();
61
- if (!isNil(value)) {
62
- formData.value[fieldName] = value;
63
- }
64
- }
65
- }
66
- },
67
- { immediate: true, deep: true },
68
- );
69
-
70
- function isFilterType(type: string | undefined): boolean {
71
- return type === 'FilterType'
72
- // @deprecated version
73
- || type === 'FilterUiType';
74
- }
75
-
76
- </script>
77
-
78
- <template>
79
- <div v-if="formMetadata" :class="$style.form">
80
- <template v-for="(field, fieldName) in formMetadata" :key="fieldName">
81
- <template v-if="field.fieldType === 'form'">
82
- <!-- TODO: Nested Form not described in FilterUi, we need to define it later. Even more in type it don't possible situations -->
83
- <DynamicForm
84
- v-if="'form' in field"
85
- :model-value="formData[fieldName] as any"
86
- :form-metadata="field.form as any"
87
- :columns="props.columns"
88
- @update:model-value="setFieldValue(fieldName, $event as T[keyof T])"
89
- />
90
- </template>
91
- <template v-else-if="isFilterType(field.fieldType)">
92
- <PlDropdown
93
- :model-value="formData[fieldName] as FilterSpecType"
94
- :label="field.label ?? fieldName"
95
- :options="filterUiTypeOptions"
96
- @update:model-value="setFieldValue(fieldName, $event as T[keyof T])"
97
- />
98
- </template>
99
- <template v-else-if="field.fieldType === 'string'">
100
- <PlTextField
101
- :model-value="formData[fieldName] as string"
102
- :label="field.label ?? fieldName"
103
- @update:model-value="setFieldValue(fieldName, $event as T[keyof T])"
104
- />
105
- </template>
106
- <template v-else-if="field.fieldType === 'SUniversalPColumnId'">
107
- <PlDropdown
108
- :model-value="formData[fieldName] as SUniversalPColumnId"
109
- :label="field.label ?? fieldName"
110
- :options="fieldName === 'column' ? firstColumnsOptions : secondColumnOptions"
111
- @update:model-value="setFieldValue(fieldName, $event as T[keyof T])"
112
- />
113
- </template>
114
- <template v-else-if="field.fieldType === 'number'">
115
- <PlNumberField
116
- :model-value="formData[fieldName] as number"
117
- :label="field.label ?? fieldName"
118
- @update:model-value="setFieldValue(fieldName, $event as T[keyof T])"
119
- />
120
- </template>
121
- <template v-else-if="field.fieldType === 'number?'">
122
- <PlNumberField
123
- :model-value="formData[fieldName] as (undefined | number)"
124
- :label="field.label ?? fieldName"
125
- :clearable="true"
126
- @update:model-value="setFieldValue(fieldName, $event as T[keyof T])"
127
- />
128
- </template>
129
- <template v-else-if="field.fieldType === 'boolean' || field.fieldType === 'boolean?'">
130
- <PlCheckbox
131
- :model-value="Boolean(formData[fieldName])"
132
- :label="field.label ?? fieldName"
133
- @update:model-value="setFieldValue(fieldName, $event as T[keyof T])"
134
- >
135
- {{ field.label ?? fieldName }}
136
- </PlCheckbox>
137
- </template>
138
- <template v-else>
139
- <pre>TODO:{{ field.fieldType }}</pre>
140
- </template>
141
- </template>
142
- </div>
143
- </template>
144
-
145
- <style module>
146
- .form {
147
- display: flex;
148
- flex-direction: column;
149
- gap: 12px;
150
- }
151
- </style>