@platforma-sdk/ui-vue 1.42.23 → 1.42.26
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 +15 -15
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +12 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +48 -51
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js +6 -8
- package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js.map +1 -1
- package/dist/plugins/Monetization/LimitCard.vue2.js +59 -46
- package/dist/plugins/Monetization/LimitCard.vue2.js.map +1 -1
- package/dist/plugins/Monetization/LimitCard.vue3.js +21 -17
- package/dist/plugins/Monetization/LimitCard.vue3.js.map +1 -1
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js +39 -39
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js.map +1 -1
- package/dist/plugins/Monetization/RunStatus.vue.d.ts +1 -0
- package/dist/plugins/Monetization/RunStatus.vue2.js +17 -20
- package/dist/plugins/Monetization/RunStatus.vue2.js.map +1 -1
- package/dist/plugins/Monetization/RunStatus.vue3.js +15 -13
- package/dist/plugins/Monetization/RunStatus.vue3.js.map +1 -1
- package/dist/plugins/Monetization/UserCabinetCard.vue.d.ts +1 -0
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js +42 -34
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js.map +1 -1
- package/dist/plugins/Monetization/UserCabinetCard.vue3.js +17 -15
- package/dist/plugins/Monetization/UserCabinetCard.vue3.js.map +1 -1
- package/dist/plugins/Monetization/useInfo.js +5 -5
- package/dist/plugins/Monetization/useInfo.js.map +1 -1
- package/package.json +8 -8
- package/src/components/PlAnnotations/components/FilterSidebar.vue +0 -7
- package/src/plugins/Monetization/LimitCard.vue +94 -40
- package/src/plugins/Monetization/MonetizationSidebar.vue +3 -5
- package/src/plugins/Monetization/RunStatus.vue +11 -15
- package/src/plugins/Monetization/UserCabinetCard.vue +23 -1
- package/src/plugins/Monetization/useInfo.ts +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
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.42.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.42.26 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
|
-
↳ vite.js build --config configs/vite.browser-lib.config.js --mode production
|
|
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
9
|
transforming...
|
|
10
10
|
[32m✓[39m 238 modules transformed.
|
|
@@ -21,8 +21,8 @@ computing gzip size...
|
|
|
21
21
|
[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
|
|
22
22
|
[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
|
|
23
23
|
[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
|
|
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
|
|
25
24
|
[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
|
|
25
|
+
[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
|
|
26
26
|
[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
|
|
27
27
|
[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
|
|
28
28
|
[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
|
|
@@ -144,35 +144,34 @@ computing gzip size...
|
|
|
144
144
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/coerce.js [39m[1m[2m 1.18 kB[22m[1m[22m[2m │ gzip: 0.58 kB[22m[2m │ map: 3.54 kB[22m
|
|
145
145
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/min-version.js [39m[1m[2m 1.20 kB[22m[1m[22m[2m │ gzip: 0.57 kB[22m[2m │ map: 2.88 kB[22m
|
|
146
146
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/multi-sequence-alignment.js [39m[1m[2m 1.23 kB[22m[1m[22m[2m │ gzip: 0.70 kB[22m[2m │ map: 4.70 kB[22m
|
|
147
|
-
[2mdist/[22m[36mplugins/Monetization/
|
|
147
|
+
[2mdist/[22m[36mplugins/Monetization/RunStatus.vue2.js [39m[1m[2m 1.27 kB[22m[1m[22m[2m │ gzip: 0.59 kB[22m[2m │ map: 2.46 kB[22m
|
|
148
148
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgOverlayLoading.vue.js [39m[1m[2m 1.30 kB[22m[1m[22m[2m │ gzip: 0.66 kB[22m[2m │ map: 1.40 kB[22m
|
|
149
|
-
[2mdist/[22m[36mplugins/Monetization/RunStatus.vue2.js [39m[1m[2m 1.32 kB[22m[1m[22m[2m │ gzip: 0.61 kB[22m[2m │ map: 2.66 kB[22m
|
|
150
149
|
[2mdist/[22m[36mcreateModel.js [39m[1m[2m 1.39 kB[22m[1m[22m[2m │ gzip: 0.65 kB[22m[2m │ map: 3.91 kB[22m
|
|
151
150
|
[2mdist/[22m[36mcomponents/PlAgDataTable/types.js [39m[1m[2m 1.40 kB[22m[1m[22m[2m │ gzip: 0.56 kB[22m[2m │ map: 9.46 kB[22m
|
|
152
151
|
[2mdist/[22m[36mutils.js [39m[1m[2m 1.51 kB[22m[1m[22m[2m │ gzip: 0.69 kB[22m[2m │ map: 3.53 kB[22m
|
|
153
152
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/outside.js [39m[1m[2m 1.55 kB[22m[1m[22m[2m │ gzip: 0.65 kB[22m[2m │ map: 3.99 kB[22m
|
|
153
|
+
[2mdist/[22m[36mplugins/Monetization/UserCabinetCard.vue3.js [39m[1m[2m 1.55 kB[22m[1m[22m[2m │ gzip: 0.77 kB[22m[2m │ map: 0.11 kB[22m
|
|
154
154
|
[2mdist/[22m[36mcomponents/PlAgDataTable/sources/focus-row.js [39m[1m[2m 1.57 kB[22m[1m[22m[2m │ gzip: 0.75 kB[22m[2m │ map: 2.65 kB[22m
|
|
155
155
|
[2mdist/[22m[36mcomponents/PlAgCsvExporter/export-csv.js [39m[1m[2m 1.60 kB[22m[1m[22m[2m │ gzip: 0.73 kB[22m[2m │ map: 3.72 kB[22m
|
|
156
156
|
[2mdist/[22m[36mAgGridVue/createAgGridColDef.js [39m[1m[2m 1.61 kB[22m[1m[22m[2m │ gzip: 0.72 kB[22m[2m │ map: 9.40 kB[22m
|
|
157
|
-
[2mdist/[22m[36mplugins/Monetization/RunStatus.vue3.js [39m[1m[2m 1.63 kB[22m[1m[22m[2m │ gzip: 0.77 kB[22m[2m │ map: 0.11 kB[22m
|
|
158
157
|
[2mdist/[22m[36maggrid.js [39m[1m[2m 1.65 kB[22m[1m[22m[2m │ gzip: 0.79 kB[22m[2m │ map: 3.09 kB[22m
|
|
159
158
|
[2mdist/[22m[36minternal/createAppModel.js [39m[1m[2m 1.73 kB[22m[1m[22m[2m │ gzip: 0.77 kB[22m[2m │ map: 4.81 kB[22m
|
|
159
|
+
[2mdist/[22m[36mplugins/Monetization/RunStatus.vue3.js [39m[1m[2m 1.79 kB[22m[1m[22m[2m │ gzip: 0.82 kB[22m[2m │ map: 0.11 kB[22m
|
|
160
160
|
[2mdist/[22m[36minternal/UpdateSerializer.js [39m[1m[2m 1.86 kB[22m[1m[22m[2m │ gzip: 0.80 kB[22m[2m │ map: 4.63 kB[22m
|
|
161
161
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/markup.js [39m[1m[2m 1.99 kB[22m[1m[22m[2m │ gzip: 1.02 kB[22m[2m │ map: 6.53 kB[22m
|
|
162
|
-
[2mdist/[22m[36mplugins/Monetization/UserCabinetCard.vue2.js [39m[1m[2m 2.11 kB[22m[1m[22m[2m │ gzip: 0.88 kB[22m[2m │ map: 3.01 kB[22m
|
|
163
162
|
[2mdist/[22m[36mdefineApp.js [39m[1m[2m 2.15 kB[22m[1m[22m[2m │ gzip: 0.96 kB[22m[2m │ map: 9.58 kB[22m
|
|
164
|
-
[2mdist/[22m[36mplugins/Monetization/useInfo.js [39m[1m[2m 2.
|
|
163
|
+
[2mdist/[22m[36mplugins/Monetization/useInfo.js [39m[1m[2m 2.18 kB[22m[1m[22m[2m │ gzip: 0.80 kB[22m[2m │ map: 4.32 kB[22m
|
|
165
164
|
[2mdist/[22m[36mcomponents/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js [39m[1m[2m 2.20 kB[22m[1m[22m[2m │ gzip: 1.05 kB[22m[2m │ map: 2.83 kB[22m
|
|
166
165
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/PlAnnotationCreateDialog.vue.js [39m[1m[2m 2.35 kB[22m[1m[22m[2m │ gzip: 0.96 kB[22m[2m │ map: 2.64 kB[22m
|
|
167
|
-
[2mdist/[22m[36mplugins/Monetization/
|
|
166
|
+
[2mdist/[22m[36mplugins/Monetization/UserCabinetCard.vue2.js [39m[1m[2m 2.36 kB[22m[1m[22m[2m │ gzip: 0.95 kB[22m[2m │ map: 3.49 kB[22m
|
|
168
167
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableSheets.vue2.js [39m[1m[2m 2.57 kB[22m[1m[22m[2m │ gzip: 1.16 kB[22m[2m │ map: 5.30 kB[22m
|
|
169
168
|
[2mdist/[22m[36mcomponents/PlTableFilters/PlTableFiltersV2.vue3.js [39m[1m[2m 2.58 kB[22m[1m[22m[2m │ gzip: 0.94 kB[22m[2m │ map: 0.12 kB[22m
|
|
170
169
|
[2mdist/[22m[36mcomponents/PlTableFilters/filters-state.js [39m[1m[2m 2.60 kB[22m[1m[22m[2m │ gzip: 1.08 kB[22m[2m │ map: 7.95 kB[22m
|
|
171
|
-
[2mdist/[22m[36mplugins/Monetization/LimitCard.vue2.js [39m[1m[2m 2.61 kB[22m[1m[22m[2m │ gzip: 0.88 kB[22m[2m │ map: 4.83 kB[22m
|
|
172
170
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/comparator.js [39m[1m[2m 2.65 kB[22m[1m[22m[2m │ gzip: 0.94 kB[22m[2m │ map: 6.36 kB[22m
|
|
173
171
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js [39m[1m[2m 2.71 kB[22m[1m[22m[2m │ gzip: 1.14 kB[22m[2m │ map: 0.13 kB[22m
|
|
174
172
|
[2mdist/[22m[36mnode_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/helpers.js [39m[1m[2m 2.79 kB[22m[1m[22m[2m │ gzip: 1.21 kB[22m[2m │ map: 8.92 kB[22m
|
|
175
173
|
[2mdist/[22m[36mcomponents/PlAgDataTable/sources/row-number.js [39m[1m[2m 3.10 kB[22m[1m[22m[2m │ gzip: 1.34 kB[22m[2m │ map: 8.36 kB[22m
|
|
174
|
+
[2mdist/[22m[36mplugins/Monetization/LimitCard.vue3.js [39m[1m[2m 3.10 kB[22m[1m[22m[2m │ gzip: 1.09 kB[22m[2m │ map: 0.11 kB[22m
|
|
176
175
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/SeqLogo.vue.js [39m[1m[2m 3.11 kB[22m[1m[22m[2m │ gzip: 1.26 kB[22m[2m │ map: 6.04 kB[22m
|
|
177
176
|
[2mdist/[22m[36mcomposition/fileContent.js [39m[1m[2m 3.15 kB[22m[1m[22m[2m │ gzip: 1.17 kB[22m[2m │ map: 9.49 kB[22m
|
|
178
177
|
[2mdist/[22m[36mcomponents/PlTableFilters/PlTableAddFilterV2.vue.js [39m[1m[2m 3.16 kB[22m[1m[22m[2m │ gzip: 1.27 kB[22m[2m │ map: 3.95 kB[22m
|
|
@@ -186,14 +185,15 @@ computing gzip size...
|
|
|
186
185
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js [39m[1m[2m 3.56 kB[22m[1m[22m[2m │ gzip: 1.19 kB[22m[2m │ map: 5.67 kB[22m
|
|
187
186
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/index.js [39m[1m[2m 3.67 kB[22m[1m[22m[2m │ gzip: 1.01 kB[22m[2m │ map: 5.45 kB[22m
|
|
188
187
|
[2mdist/[22m[36mcomponents/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js [39m[1m[2m 3.84 kB[22m[1m[22m[2m │ gzip: 1.52 kB[22m[2m │ map: 4.99 kB[22m
|
|
188
|
+
[2mdist/[22m[36mplugins/Monetization/LimitCard.vue2.js [39m[1m[2m 3.84 kB[22m[1m[22m[2m │ gzip: 1.15 kB[22m[2m │ map: 7.17 kB[22m
|
|
189
189
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/PlAnnotationsModal.vue2.js [39m[1m[2m 3.89 kB[22m[1m[22m[2m │ gzip: 1.38 kB[22m[2m │ map: 5.48 kB[22m
|
|
190
190
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/re.js [39m[1m[2m 4.03 kB[22m[1m[22m[2m │ gzip: 1.23 kB[22m[2m │ map: 12.92 kB[22m
|
|
191
|
+
[2mdist/[22m[36mcomponents/PlAnnotations/components/FilterSidebar.vue2.js [39m[1m[2m 4.50 kB[22m[1m[22m[2m │ gzip: 1.67 kB[22m[2m │ map: 5.97 kB[22m
|
|
191
192
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/DynamicForm.vue2.js [39m[1m[2m 4.52 kB[22m[1m[22m[2m │ gzip: 1.41 kB[22m[2m │ map: 6.96 kB[22m
|
|
192
|
-
[2mdist/[22m[
|
|
193
|
-
[2mdist/[22m[36mplugins/Monetization/MonetizationSidebar.vue.js [39m[1m[2m 4.73 kB[22m[1m[22m[2m │ gzip: 1.76 kB[22m[2m │ map: 5.01 kB[22m
|
|
193
|
+
[2mdist/[22m[36mplugins/Monetization/MonetizationSidebar.vue.js [39m[1m[2m 4.70 kB[22m[1m[22m[2m │ gzip: 1.74 kB[22m[2m │ map: 4.91 kB[22m
|
|
194
194
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/chemical-properties.js [39m[1m[2m 4.75 kB[22m[1m[22m[2m │ gzip: 1.67 kB[22m[2m │ map: 11.78 kB[22m
|
|
195
195
|
[2mdist/[22m[36mcomponents/BlockLayout.vue2.js [39m[1m[2m 4.96 kB[22m[1m[22m[2m │ gzip: 1.83 kB[22m[2m │ map: 2.96 kB[22m
|
|
196
|
-
[2mdist/[22m[36mcomponents/PlAnnotations/components/FilterSidebar.vue3.js [39m[1m[2m 5.
|
|
196
|
+
[2mdist/[22m[36mcomponents/PlAnnotations/components/FilterSidebar.vue3.js [39m[1m[2m 5.48 kB[22m[1m[22m[2m │ gzip: 1.59 kB[22m[2m │ map: 0.11 kB[22m
|
|
197
197
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/AnnotationsSidebar.vue3.js [39m[1m[2m 5.67 kB[22m[1m[22m[2m │ gzip: 1.67 kB[22m[2m │ map: 0.11 kB[22m
|
|
198
198
|
[2mdist/[22m[36minternal/createAppV1.js [39m[1m[2m 5.75 kB[22m[1m[22m[2m │ gzip: 1.83 kB[22m[2m │ map: 15.32 kB[22m
|
|
199
199
|
[2mdist/[22m[36mcomponents/PlTableFilters/PlTableFiltersV2.vue2.js [39m[1m[2m 6.10 kB[22m[1m[22m[2m │ gzip: 2.02 kB[22m[2m │ map: 9.27 kB[22m
|
|
@@ -215,7 +215,7 @@ computing gzip size...
|
|
|
215
215
|
[2mdist/[22m[36mcomponents/PlAgRowNumHeader.vue.js [39m[1m[2m44.65 kB[22m[1m[22m[2m │ gzip: 29.29 kB[22m[2m │ map: 3.70 kB[22m
|
|
216
216
|
[2mdist/[22m[36mAgGridVue/useAgGridOptions.js [39m[1m[2m49.29 kB[22m[1m[22m[2m │ gzip: 30.15 kB[22m[2m │ map: 16.35 kB[22m
|
|
217
217
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableV2.vue2.js [39m[1m[2m50.33 kB[22m[1m[22m[2m │ gzip: 31.04 kB[22m[2m │ map: 33.70 kB[22m
|
|
218
|
-
[vite:dts] Declaration files built in
|
|
218
|
+
[vite:dts] Declaration files built in 9046ms.
|
|
219
219
|
|
|
220
|
-
[32m✓ built in
|
|
220
|
+
[32m✓ built in 10.84s[39m
|
|
221
221
|
Build completed successfully
|
|
@@ -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.42.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.42.26 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
|
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { defineComponent as E, mergeModels as S, useModel as B, createBlock as m, createCommentVNode as
|
|
2
|
-
import { isNil as
|
|
1
|
+
import { defineComponent as E, mergeModels as S, useModel as B, createBlock as m, createCommentVNode as M, openBlock as i, unref as n, withCtx as a, createElementVNode as y, normalizeClass as v, createVNode as p, createTextVNode as c, createElementBlock as N, toDisplayString as g } from "vue";
|
|
2
|
+
import { isNil as s } from "../../../lib/util/helpers/dist/utils.js";
|
|
3
3
|
import { randomInt as F } from "../../../lib/util/helpers/dist/random.js";
|
|
4
|
-
import { PlSidebarItem as
|
|
4
|
+
import { PlSidebarItem as w, PlBtnSecondary as V, PlElementList as P, PlEditableTitle as U } from "@milaboratories/uikit";
|
|
5
5
|
import { getFilterUiMetadata as $ } from "@platforma-sdk/model";
|
|
6
6
|
import { createDefaultFilterMetadata as D } from "../utils.js";
|
|
7
7
|
import I from "./DynamicForm.vue.js";
|
|
8
|
-
const
|
|
8
|
+
const j = { key: 1 }, H = /* @__PURE__ */ E({
|
|
9
9
|
__name: "FilterSidebar",
|
|
10
10
|
props: /* @__PURE__ */ S({
|
|
11
11
|
columns: {},
|
|
@@ -16,21 +16,21 @@ const L = { key: 1 }, H = /* @__PURE__ */ E({
|
|
|
16
16
|
stepModifiers: {}
|
|
17
17
|
}),
|
|
18
18
|
emits: ["update:step"],
|
|
19
|
-
setup(
|
|
20
|
-
const
|
|
21
|
-
|
|
19
|
+
setup(f) {
|
|
20
|
+
const o = B(f, "step"), d = f, x = () => {
|
|
21
|
+
o.value.filter.filters.push({
|
|
22
22
|
id: F(),
|
|
23
23
|
isExpanded: !0,
|
|
24
24
|
type: void 0
|
|
25
25
|
});
|
|
26
26
|
};
|
|
27
|
-
async function
|
|
28
|
-
const t = await
|
|
27
|
+
async function b() {
|
|
28
|
+
const t = await d.getValuesForSelectedColumns();
|
|
29
29
|
if (!t || t.values.length === 0) return;
|
|
30
|
-
const { columnId: l, values: e } = t,
|
|
31
|
-
|
|
30
|
+
const { columnId: l, values: e } = t, r = e.slice(0, 3).join(", ") + (e.length > 3 ? ` and ${e.length - 3} more` : "");
|
|
31
|
+
o.value.filter.filters.push({
|
|
32
32
|
id: F(),
|
|
33
|
-
name: `Selected list (${
|
|
33
|
+
name: `Selected list (${r})`,
|
|
34
34
|
isExpanded: !1,
|
|
35
35
|
type: "or",
|
|
36
36
|
filters: e.map((u) => ({
|
|
@@ -40,79 +40,76 @@ const L = { key: 1 }, H = /* @__PURE__ */ E({
|
|
|
40
40
|
}))
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
const
|
|
43
|
+
const h = (t) => {
|
|
44
44
|
var l;
|
|
45
|
-
return
|
|
46
|
-
}, k = (t) =>
|
|
47
|
-
return (t, l) =>
|
|
48
|
-
"header-content":
|
|
49
|
-
(
|
|
50
|
-
key:
|
|
51
|
-
modelValue:
|
|
52
|
-
"onUpdate:modelValue": l[0] || (l[0] = (e) =>
|
|
45
|
+
return s(t.name) ? ((l = d.columns.find((e) => "column" in t ? e.id === t.column : !1)) == null ? void 0 : l.label) ?? t.type : t.name;
|
|
46
|
+
}, k = (t) => s(t.type) ? D() : $(t.type).form, C = (t) => t.type === "or" || t.type === "and" ? t.filters.map((l) => "value" in l && !s(l.value) ? l.value : null).filter((l) => !s(l)).join(", ") : null;
|
|
47
|
+
return (t, l) => o.value ? (i(), m(n(w), { key: 0 }, {
|
|
48
|
+
"header-content": a(() => [
|
|
49
|
+
(i(), m(n(U), {
|
|
50
|
+
key: o.value.id,
|
|
51
|
+
modelValue: o.value.label,
|
|
52
|
+
"onUpdate:modelValue": l[0] || (l[0] = (e) => o.value.label = e),
|
|
53
53
|
"max-length": 40,
|
|
54
54
|
"max-width": "600px",
|
|
55
55
|
placeholder: "Annotation Name",
|
|
56
|
-
autofocus:
|
|
56
|
+
autofocus: o.value.label.length === 0
|
|
57
57
|
}, null, 8, ["modelValue", "autofocus"]))
|
|
58
58
|
]),
|
|
59
|
-
"body-content":
|
|
60
|
-
|
|
61
|
-
class:
|
|
59
|
+
"body-content": a(() => [
|
|
60
|
+
y("div", {
|
|
61
|
+
class: v(t.$style.root)
|
|
62
62
|
}, [
|
|
63
|
-
|
|
64
|
-
class:
|
|
63
|
+
y("div", {
|
|
64
|
+
class: v(t.$style.actions)
|
|
65
65
|
}, [
|
|
66
|
-
|
|
66
|
+
p(n(V), {
|
|
67
67
|
style: { width: "100%" },
|
|
68
68
|
icon: "add",
|
|
69
|
-
onClick:
|
|
69
|
+
onClick: x
|
|
70
70
|
}, {
|
|
71
|
-
default:
|
|
72
|
-
|
|
71
|
+
default: a(() => l[2] || (l[2] = [
|
|
72
|
+
c(" Filter ")
|
|
73
73
|
])),
|
|
74
74
|
_: 1
|
|
75
75
|
}),
|
|
76
|
-
|
|
76
|
+
p(n(V), {
|
|
77
77
|
style: { width: "100%" },
|
|
78
78
|
icon: "add",
|
|
79
|
-
disabled: !
|
|
80
|
-
onClick:
|
|
79
|
+
disabled: !d.hasSelectedColumns,
|
|
80
|
+
onClick: b
|
|
81
81
|
}, {
|
|
82
|
-
default:
|
|
83
|
-
|
|
82
|
+
default: a(() => l[3] || (l[3] = [
|
|
83
|
+
c(" From selection ")
|
|
84
84
|
])),
|
|
85
85
|
_: 1
|
|
86
86
|
}, 8, ["disabled"])
|
|
87
87
|
], 2),
|
|
88
|
-
p(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
f(n(P), {
|
|
92
|
-
items: a.value.filter.filters,
|
|
93
|
-
"onUpdate:items": l[1] || (l[1] = (e) => a.value.filter.filters = e),
|
|
88
|
+
p(n(P), {
|
|
89
|
+
items: o.value.filter.filters,
|
|
90
|
+
"onUpdate:items": l[1] || (l[1] = (e) => o.value.filter.filters = e),
|
|
94
91
|
"get-item-key": (e) => e.id,
|
|
95
92
|
"is-expanded": (e) => !!e.isExpanded,
|
|
96
93
|
"on-expand": (e) => e.isExpanded = !e.isExpanded
|
|
97
94
|
}, {
|
|
98
|
-
"item-title":
|
|
99
|
-
|
|
95
|
+
"item-title": a(({ item: e }) => [
|
|
96
|
+
c(g(h(e)), 1)
|
|
100
97
|
]),
|
|
101
|
-
"item-content":
|
|
102
|
-
e.type !== "or" && e.type !== "and" ? (
|
|
98
|
+
"item-content": a(({ item: e, index: r }) => [
|
|
99
|
+
e.type !== "or" && e.type !== "and" ? (i(), m(I, {
|
|
103
100
|
key: 0,
|
|
104
|
-
modelValue:
|
|
105
|
-
"onUpdate:modelValue": (u) =>
|
|
101
|
+
modelValue: o.value.filter.filters[r],
|
|
102
|
+
"onUpdate:modelValue": (u) => o.value.filter.filters[r] = u,
|
|
106
103
|
"form-metadata": k(e),
|
|
107
|
-
columns:
|
|
108
|
-
}, null, 8, ["modelValue", "onUpdate:modelValue", "form-metadata", "columns"])) : (
|
|
104
|
+
columns: d.columns
|
|
105
|
+
}, null, 8, ["modelValue", "onUpdate:modelValue", "form-metadata", "columns"])) : (i(), N("div", j, g(C(e)), 1))
|
|
109
106
|
]),
|
|
110
107
|
_: 1
|
|
111
108
|
}, 8, ["items", "get-item-key", "is-expanded", "on-expand"])
|
|
112
109
|
], 2)
|
|
113
110
|
]),
|
|
114
111
|
_: 1
|
|
115
|
-
})) :
|
|
112
|
+
})) : M("", !0);
|
|
116
113
|
}
|
|
117
114
|
});
|
|
118
115
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterSidebar.vue2.js","sources":["../../../../src/components/PlAnnotations/components/FilterSidebar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { isNil, randomInt } from '@milaboratories/helpers';\nimport {\n PlBtnSecondary,\n PlEditableTitle,\n PlElementList,\n PlSidebarItem,\n} from '@milaboratories/uikit';\nimport type { AnnotationStepUi, FilterUi, PObjectId, SUniversalPColumnId } from '@platforma-sdk/model';\nimport { getFilterUiMetadata } from '@platforma-sdk/model';\nimport type { SimplifiedUniversalPColumnEntry } from '../types';\nimport { createDefaultFilterMetadata } from '../utils';\nimport DynamicForm from './DynamicForm.vue';\n\n// Models\nconst step = defineModel<AnnotationStepUi>('step', { required: true });\n// Props\nconst props = defineProps<{\n columns: SimplifiedUniversalPColumnEntry[];\n hasSelectedColumns: boolean;\n getValuesForSelectedColumns: () => Promise<undefined | { columnId: PObjectId; values: string[] }>;\n}>();\n// Actions\nconst addFilterPlaceholder = () => {\n step.value.filter.filters.push({\n id: randomInt(),\n isExpanded: true,\n type: undefined,\n });\n};\n\nasync function addFilterFromSelected() {\n const data = await props.getValuesForSelectedColumns();\n if (!data || data.values.length === 0) return;\n\n const { columnId, values } = data;\n const shortReminder = values.slice(0, 3).join(', ') + (values.length > 3 ? ` and ${values.length - 3} more` : '');\n\n step.value.filter.filters.push({\n id: randomInt(),\n name: `Selected list (${shortReminder})`,\n isExpanded: false,\n type: 'or',\n filters: values.map((value) => ({\n type: 'patternEquals',\n column: columnId as SUniversalPColumnId,\n value,\n })),\n });\n}\n\n// Getters\nconst getColumnLabel = (filter: FilterUi) => {\n if (!isNil(filter.name)) return filter.name;\n return props.columns\n .find((c) => 'column' in filter ? c.id === filter.column : false)?.label\n ?? filter.type;\n};\n\nconst getFormMetadata = (filter: FilterUi) => {\n return !isNil(filter.type) ? getFilterUiMetadata(filter.type).form : createDefaultFilterMetadata();\n};\n\nconst getFilterValues = (filter: FilterUi) => {\n if (filter.type === 'or' || filter.type === 'and') {\n return filter.filters.map((f) => 'value' in f && !isNil(f.value) ? f.value : null).filter((v) => !isNil(v)).join (', ');\n }\n return null;\n};\n</script>\n\n<template>\n <PlSidebarItem v-if=\"step\">\n <template #header-content>\n <PlEditableTitle\n :key=\"step.id\"\n v-model=\"step.label\"\n :max-length=\"40\"\n max-width=\"600px\"\n placeholder=\"Annotation Name\"\n :autofocus=\"step.label.length === 0\"\n />\n </template>\n <template #body-content>\n <div :class=\"$style.root\">\n <div :class=\"$style.actions\">\n <PlBtnSecondary style=\"width: 100%;\" icon=\"add\" @click=\"addFilterPlaceholder\">\n Filter\n </PlBtnSecondary>\n <PlBtnSecondary style=\"width: 100%;\" icon=\"add\" :disabled=\"!props.hasSelectedColumns\" @click=\"addFilterFromSelected\">\n From selection\n </PlBtnSecondary>\n </div>\n\n <
|
|
1
|
+
{"version":3,"file":"FilterSidebar.vue2.js","sources":["../../../../src/components/PlAnnotations/components/FilterSidebar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { isNil, randomInt } from '@milaboratories/helpers';\nimport {\n PlBtnSecondary,\n PlEditableTitle,\n PlElementList,\n PlSidebarItem,\n} from '@milaboratories/uikit';\nimport type { AnnotationStepUi, FilterUi, PObjectId, SUniversalPColumnId } from '@platforma-sdk/model';\nimport { getFilterUiMetadata } from '@platforma-sdk/model';\nimport type { SimplifiedUniversalPColumnEntry } from '../types';\nimport { createDefaultFilterMetadata } from '../utils';\nimport DynamicForm from './DynamicForm.vue';\n\n// Models\nconst step = defineModel<AnnotationStepUi>('step', { required: true });\n// Props\nconst props = defineProps<{\n columns: SimplifiedUniversalPColumnEntry[];\n hasSelectedColumns: boolean;\n getValuesForSelectedColumns: () => Promise<undefined | { columnId: PObjectId; values: string[] }>;\n}>();\n// Actions\nconst addFilterPlaceholder = () => {\n step.value.filter.filters.push({\n id: randomInt(),\n isExpanded: true,\n type: undefined,\n });\n};\n\nasync function addFilterFromSelected() {\n const data = await props.getValuesForSelectedColumns();\n if (!data || data.values.length === 0) return;\n\n const { columnId, values } = data;\n const shortReminder = values.slice(0, 3).join(', ') + (values.length > 3 ? ` and ${values.length - 3} more` : '');\n\n step.value.filter.filters.push({\n id: randomInt(),\n name: `Selected list (${shortReminder})`,\n isExpanded: false,\n type: 'or',\n filters: values.map((value) => ({\n type: 'patternEquals',\n column: columnId as SUniversalPColumnId,\n value,\n })),\n });\n}\n\n// Getters\nconst getColumnLabel = (filter: FilterUi) => {\n if (!isNil(filter.name)) return filter.name;\n return props.columns\n .find((c) => 'column' in filter ? c.id === filter.column : false)?.label\n ?? filter.type;\n};\n\nconst getFormMetadata = (filter: FilterUi) => {\n return !isNil(filter.type) ? getFilterUiMetadata(filter.type).form : createDefaultFilterMetadata();\n};\n\nconst getFilterValues = (filter: FilterUi) => {\n if (filter.type === 'or' || filter.type === 'and') {\n return filter.filters.map((f) => 'value' in f && !isNil(f.value) ? f.value : null).filter((v) => !isNil(v)).join (', ');\n }\n return null;\n};\n</script>\n\n<template>\n <PlSidebarItem v-if=\"step\">\n <template #header-content>\n <PlEditableTitle\n :key=\"step.id\"\n v-model=\"step.label\"\n :max-length=\"40\"\n max-width=\"600px\"\n placeholder=\"Annotation Name\"\n :autofocus=\"step.label.length === 0\"\n />\n </template>\n <template #body-content>\n <div :class=\"$style.root\">\n <div :class=\"$style.actions\">\n <PlBtnSecondary style=\"width: 100%;\" icon=\"add\" @click=\"addFilterPlaceholder\">\n Filter\n </PlBtnSecondary>\n <PlBtnSecondary style=\"width: 100%;\" icon=\"add\" :disabled=\"!props.hasSelectedColumns\" @click=\"addFilterFromSelected\">\n From selection\n </PlBtnSecondary>\n </div>\n\n <PlElementList\n v-model:items=\"step.filter.filters\"\n :get-item-key=\"(item) => item.id!\"\n :is-expanded=\"(item) => Boolean(item.isExpanded)\"\n :on-expand=\"(item) => item.isExpanded = !Boolean(item.isExpanded)\"\n >\n <template #item-title=\"{ item }\">\n {{ getColumnLabel(item) }}\n </template>\n <template #item-content=\"{ item, index }\">\n <template v-if=\"item.type !== 'or' && item.type !== 'and'\">\n <DynamicForm\n v-model=\"step.filter.filters[index]\"\n :form-metadata=\"getFormMetadata(item)\"\n :columns=\"props.columns\"\n />\n </template>\n <template v-else>\n <div>{{ getFilterValues(item) }}</div>\n </template>\n </template>\n </PlElementList>\n </div>\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.actions {\n display: flex;\n flex-direction: row;\n gap: 12px;\n}\n</style>\n"],"names":["step","_useModel","props","__props","addFilterPlaceholder","randomInt","addFilterFromSelected","data","columnId","values","shortReminder","value","getColumnLabel","filter","isNil","_a","c","getFormMetadata","createDefaultFilterMetadata","getFilterUiMetadata","getFilterValues","f","v"],"mappings":";;;;;;;;;;;;;;;;;;;AAeA,UAAMA,IAAOC,KAA8B,MAA0B,GAE/DC,IAAQC,GAMRC,IAAuB,MAAM;AACjC,MAAAJ,EAAK,MAAM,OAAO,QAAQ,KAAK;AAAA,QAC7B,IAAIK,EAAA;AAAA,QACJ,YAAY;AAAA,QACZ,MAAM;AAAA,MAAA,CACP;AAAA,IACH;AAEA,mBAAeC,IAAwB;AACrC,YAAMC,IAAO,MAAML,EAAM,4BAAA;AACzB,UAAI,CAACK,KAAQA,EAAK,OAAO,WAAW,EAAG;AAEvC,YAAM,EAAE,UAAAC,GAAU,QAAAC,EAAA,IAAWF,GACvBG,IAAgBD,EAAO,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,KAAKA,EAAO,SAAS,IAAI,QAAQA,EAAO,SAAS,CAAC,UAAU;AAE9G,MAAAT,EAAK,MAAM,OAAO,QAAQ,KAAK;AAAA,QAC7B,IAAIK,EAAA;AAAA,QACJ,MAAM,kBAAkBK,CAAa;AAAA,QACrC,YAAY;AAAA,QACZ,MAAM;AAAA,QACN,SAASD,EAAO,IAAI,CAACE,OAAW;AAAA,UAC9B,MAAM;AAAA,UACN,QAAQH;AAAA,UACR,OAAAG;AAAA,QAAA,EACA;AAAA,MAAA,CACH;AAAA,IACH;AAGA,UAAMC,IAAiB,CAACC,MAAqB;;AAC3C,aAAKC,EAAMD,EAAO,IAAI,MACfE,IAAAb,EAAM,QACV,KAAK,CAACc,MAAM,YAAYH,IAASG,EAAE,OAAOH,EAAO,SAAS,EAAK,MAD3D,gBAAAE,EAC8D,UAChEF,EAAO,OAHoBA,EAAO;AAAA,IAIzC,GAEMI,IAAkB,CAACJ,MACfC,EAAMD,EAAO,IAAI,IAA4CK,EAAA,IAAxCC,EAAoBN,EAAO,IAAI,EAAE,MAG1DO,IAAkB,CAACP,MACnBA,EAAO,SAAS,QAAQA,EAAO,SAAS,QACnCA,EAAO,QAAQ,IAAI,CAACQ,MAAM,WAAWA,KAAK,CAACP,EAAMO,EAAE,KAAK,IAAIA,EAAE,QAAQ,IAAI,EAAE,OAAO,CAACC,MAAM,CAACR,EAAMQ,CAAC,CAAC,EAAE,KAAM,IAAI,IAEjH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(":root{--txt-00: #ffffff;--txt-01: light-dark(#110529, #ffffff);--txt-02: #231842;--txt-03: #9d9eae;--txt-mask: #cfd1db;--txt-focus: #07ad3e;--txt-error: #f1222f;--txt-link: #5f31cc;--ic-00: #ffffff;--ic-01: #110529;--ic-02: #cfd1db;--ic-accent: #07ad3e;--border-color-default: #110529;--border-color-hover: #231842;--border-color-focus: #49cc49;--border-color-error: #ff5c5c;--border-color-div-grey: #e1e3eb;--border-color-div-bw: #ffffff;--btn-accent-default: #845cff;--btn-accent-hover: #9470ff;--btn-accent-press: #6f4dd6;--btn-primary-default: #110529;--btn-primary-hover: #231842;--btn-primary-press: #080214;--btn-sec-hover-white: rgba(255, 255, 255, .5);--btn-sec-hover-grey: light-dark(rgba(155, 171, 204, .16), rgba(131, 131, 163, .16));--btn-sec-press-grey: rgba(155, 171, 204, .24);--btn-active-select: rgba(99, 224, 36, .24);--btn-switcher: linear-gradient(180deg, #a1e59c 0%, #d0f5b0 100%);--btn-accent-positive-500: #ECFBE5;--dis-00: #ffffff;--dis-01: light-dark(#cfd1db, #3d3d42);--bg-base-dark: #110529;--bg-base-light: #f7f8fa;--bg-elevated-01: #ffffff;--bg-elevated-02: #e1e3eb;--bg-error: #FFF5F5;--filled-V-BG: #d0f0c0;--filled-D-BG: #ffcecc;--filled-N-BG: #faf5aa;--filled-J-BG: #dedbff;--notification-neutral: linear-gradient(90deg, #d6d9ff 0%, #fff 100%);--notification-success: linear-gradient(90deg, #c9f0b6 0%, #fff 100%);--notification-warning: linear-gradient(90deg, #fee0a3 0%, #fff 100%);--notification-error: linear-gradient(90deg, #ffb8b8 0%, #fff 100%);--gradient-blue-green: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-green-lime: linear-gradient(180deg, #a1e59c 0%, #d0f5b0 100%);--gradient-blue-violet: linear-gradient(180deg, #adb8ff 0%, #d6e9ff 100%);--gradient-blue-clear: linear-gradient(180deg, #85beff 0%, #cef 100%);--gradient-orange: linear-gradient(180deg, #ffb766 0%, #ffeaa3 100%);--gradient-mint: linear-gradient(180deg, #7dd1d1 0%, #c8fae9 100%);--gradient-lime: linear-gradient(180deg, #bfe062 0%, #e4ffad 100%);--gradient-rose: linear-gradient(0deg, #ffddd6 0%, #ff99c9 100%);--gradient-red: linear-gradient(0deg, #ffd5cc 0%, #ff9494 100%);--gradient-violet: linear-gradient(180deg, #bca3ff 0%, #e5e5ff 100%);--TT-gradient-violet: linear-gradient(180deg, #bca3ff 0%, #e5e5ff 100%);--gradient-light-lime: linear-gradient(180deg, #EBFFEB 0%, transparent 100%);--shadow-l: 0px 8px 16px -4px rgba(15, 36, 77, .16), 0px 12px 32px -4px rgba(15, 36, 77, .16);--main-spacing: 24px;--gap-v: 24px;--gap-h: 12px;--border-radius: 6px;--z-splash: 50;--z-slide-shadow: 80;--z-slide-dialog: 81;--z-dialog: 100;--z-dropdown-options: 110;--z-tooltip: 120;--z-context-menu: 1001;--scrollbar-width: 6px}[data-theme=dark]{--txt-00: #ffffff;--txt-01: #FFFFFF;--txt-02: #adaeb8;--txt-03: #60616b;--txt-mask: #3D3D42;--txt-focus: #87e087;--txt-error: #ff5c5c;--txt-link: #9470ff;--ic-00: #ffffff;--ic-01: #FFFFFF;--ic-02: #60616b;--ic-accent: #87e087;--border-color-default: #60616b;--border-color-hover: #adaeb8;--border-color-focus: #49cc49;--border-color-error: #ff5c5c;--border-color-div-grey: #232329;--border-color-div-bw: #000000;--btn-accent-default: #5f31cc;--btn-accent-hover: #5f31cc;--btn-accent-press: #5f31cc;--btn-primary-default: #5f31cc;--btn-primary-hover: #6d3ddb;--btn-primary-press: #5328b8;--btn-sec-hover-white: rgba(131, 131, 163, .16);--btn-sec-hover-grey: rgba(131, 131, 163, .16);--btn-sec-press-grey: rgba(131, 131, 163, .24);--btn-active-select: rgba(99, 224, 36, .24);--btn-switcher: #5e5e70;--dis-00: #65656b;--dis-01: #3D3D42;--bg-base-dark: #0d0d0f;--bg-base-light: #0d0d0f;--bg-elevated-01: #1b1b1f;--bg-elevated-02: #2d2d33;--bg-error: #FFF5F5;--filled-V-BG: rgba(66, 184, 66, .4);--filled-D-BG: rgba(229, 83, 229, .4);--filled-N-BG: rgba(83, 82, 102, .4);--filled-J-BG: rgba(132, 92, 255, .4);--notification-neutral: linear-gradient(90deg, #4d4d8f 0%, #292933 100%);--notification-success: linear-gradient(90deg, #305c3e 0%, #292933 100%);--notification-warning: linear-gradient(90deg, #754f2d 0%, #292933 100%);--notification-error: linear-gradient(90deg, #8f3343 0%, #292933 100%);--gradient-blue-green: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-green-lime: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-blue-violet: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-blue-clear: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-orange: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-mint: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-lime: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-rose: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-red: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-violet: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%)}.
|
|
2
|
-
const
|
|
3
|
-
root:
|
|
4
|
-
actions:
|
|
5
|
-
tip: c
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(":root{--txt-00: #ffffff;--txt-01: light-dark(#110529, #ffffff);--txt-02: #231842;--txt-03: #9d9eae;--txt-mask: #cfd1db;--txt-focus: #07ad3e;--txt-error: #f1222f;--txt-link: #5f31cc;--ic-00: #ffffff;--ic-01: #110529;--ic-02: #cfd1db;--ic-accent: #07ad3e;--border-color-default: #110529;--border-color-hover: #231842;--border-color-focus: #49cc49;--border-color-error: #ff5c5c;--border-color-div-grey: #e1e3eb;--border-color-div-bw: #ffffff;--btn-accent-default: #845cff;--btn-accent-hover: #9470ff;--btn-accent-press: #6f4dd6;--btn-primary-default: #110529;--btn-primary-hover: #231842;--btn-primary-press: #080214;--btn-sec-hover-white: rgba(255, 255, 255, .5);--btn-sec-hover-grey: light-dark(rgba(155, 171, 204, .16), rgba(131, 131, 163, .16));--btn-sec-press-grey: rgba(155, 171, 204, .24);--btn-active-select: rgba(99, 224, 36, .24);--btn-switcher: linear-gradient(180deg, #a1e59c 0%, #d0f5b0 100%);--btn-accent-positive-500: #ECFBE5;--dis-00: #ffffff;--dis-01: light-dark(#cfd1db, #3d3d42);--bg-base-dark: #110529;--bg-base-light: #f7f8fa;--bg-elevated-01: #ffffff;--bg-elevated-02: #e1e3eb;--bg-error: #FFF5F5;--filled-V-BG: #d0f0c0;--filled-D-BG: #ffcecc;--filled-N-BG: #faf5aa;--filled-J-BG: #dedbff;--notification-neutral: linear-gradient(90deg, #d6d9ff 0%, #fff 100%);--notification-success: linear-gradient(90deg, #c9f0b6 0%, #fff 100%);--notification-warning: linear-gradient(90deg, #fee0a3 0%, #fff 100%);--notification-error: linear-gradient(90deg, #ffb8b8 0%, #fff 100%);--gradient-blue-green: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-green-lime: linear-gradient(180deg, #a1e59c 0%, #d0f5b0 100%);--gradient-blue-violet: linear-gradient(180deg, #adb8ff 0%, #d6e9ff 100%);--gradient-blue-clear: linear-gradient(180deg, #85beff 0%, #cef 100%);--gradient-orange: linear-gradient(180deg, #ffb766 0%, #ffeaa3 100%);--gradient-mint: linear-gradient(180deg, #7dd1d1 0%, #c8fae9 100%);--gradient-lime: linear-gradient(180deg, #bfe062 0%, #e4ffad 100%);--gradient-rose: linear-gradient(0deg, #ffddd6 0%, #ff99c9 100%);--gradient-red: linear-gradient(0deg, #ffd5cc 0%, #ff9494 100%);--gradient-violet: linear-gradient(180deg, #bca3ff 0%, #e5e5ff 100%);--TT-gradient-violet: linear-gradient(180deg, #bca3ff 0%, #e5e5ff 100%);--gradient-light-lime: linear-gradient(180deg, #EBFFEB 0%, transparent 100%);--shadow-l: 0px 8px 16px -4px rgba(15, 36, 77, .16), 0px 12px 32px -4px rgba(15, 36, 77, .16);--main-spacing: 24px;--gap-v: 24px;--gap-h: 12px;--border-radius: 6px;--z-splash: 50;--z-slide-shadow: 80;--z-slide-dialog: 81;--z-dialog: 100;--z-dropdown-options: 110;--z-tooltip: 120;--z-context-menu: 1001;--scrollbar-width: 6px}[data-theme=dark]{--txt-00: #ffffff;--txt-01: #FFFFFF;--txt-02: #adaeb8;--txt-03: #60616b;--txt-mask: #3D3D42;--txt-focus: #87e087;--txt-error: #ff5c5c;--txt-link: #9470ff;--ic-00: #ffffff;--ic-01: #FFFFFF;--ic-02: #60616b;--ic-accent: #87e087;--border-color-default: #60616b;--border-color-hover: #adaeb8;--border-color-focus: #49cc49;--border-color-error: #ff5c5c;--border-color-div-grey: #232329;--border-color-div-bw: #000000;--btn-accent-default: #5f31cc;--btn-accent-hover: #5f31cc;--btn-accent-press: #5f31cc;--btn-primary-default: #5f31cc;--btn-primary-hover: #6d3ddb;--btn-primary-press: #5328b8;--btn-sec-hover-white: rgba(131, 131, 163, .16);--btn-sec-hover-grey: rgba(131, 131, 163, .16);--btn-sec-press-grey: rgba(131, 131, 163, .24);--btn-active-select: rgba(99, 224, 36, .24);--btn-switcher: #5e5e70;--dis-00: #65656b;--dis-01: #3D3D42;--bg-base-dark: #0d0d0f;--bg-base-light: #0d0d0f;--bg-elevated-01: #1b1b1f;--bg-elevated-02: #2d2d33;--bg-error: #FFF5F5;--filled-V-BG: rgba(66, 184, 66, .4);--filled-D-BG: rgba(229, 83, 229, .4);--filled-N-BG: rgba(83, 82, 102, .4);--filled-J-BG: rgba(132, 92, 255, .4);--notification-neutral: linear-gradient(90deg, #4d4d8f 0%, #292933 100%);--notification-success: linear-gradient(90deg, #305c3e 0%, #292933 100%);--notification-warning: linear-gradient(90deg, #754f2d 0%, #292933 100%);--notification-error: linear-gradient(90deg, #8f3343 0%, #292933 100%);--gradient-blue-green: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-green-lime: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-blue-violet: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-blue-clear: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-orange: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-mint: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-lime: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-rose: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-red: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%);--gradient-violet: linear-gradient(0deg, #478063 0%, #2e4652 45.93%, #24223d 91.63%)}._root_aq5ub_131{display:flex;flex-direction:column;gap:12px}._actions_aq5ub_137{display:flex;flex-direction:row;gap:12px}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
|
|
2
|
+
const o = "_root_aq5ub_131", t = "_actions_aq5ub_137", s = {
|
|
3
|
+
root: o,
|
|
4
|
+
actions: t
|
|
6
5
|
};
|
|
7
6
|
export {
|
|
8
|
-
|
|
7
|
+
t as actions,
|
|
9
8
|
s as default,
|
|
10
|
-
|
|
11
|
-
c as tip
|
|
9
|
+
o as root
|
|
12
10
|
};
|
|
13
11
|
//# sourceMappingURL=FilterSidebar.vue3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterSidebar.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilterSidebar.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
const
|
|
1
|
+
import { defineComponent as w, computed as i, createElementBlock as u, openBlock as r, normalizeClass as t, createElementVNode as n, toDisplayString as o, createTextVNode as y, createCommentVNode as p, normalizeStyle as b } from "vue";
|
|
2
|
+
const F = { key: 0 }, N = { key: 1 }, A = { key: 0 }, C = { key: 1 }, T = /* @__PURE__ */ w({
|
|
3
3
|
__name: "LimitCard",
|
|
4
4
|
props: {
|
|
5
5
|
type: {},
|
|
@@ -9,57 +9,70 @@ const S = { key: 0 }, B = { key: 1 }, c = /* @__PURE__ */ g({
|
|
|
9
9
|
available: {},
|
|
10
10
|
unit: {}
|
|
11
11
|
},
|
|
12
|
-
setup(
|
|
13
|
-
const s =
|
|
14
|
-
return (e, a) => (
|
|
15
|
-
class:
|
|
12
|
+
setup(B) {
|
|
13
|
+
const l = B, s = i(() => l.available === null ? null : l.available + l.toSpend + l.used), v = i(() => l.available === null ? !1 : l.available < 0), $ = i(() => l.available === null ? null : l.available + l.toSpend), m = (e) => Math.max(0, Math.min(100, e)), g = i(() => s.value === null || s.value === 0 || v.value ? 0 : m(l.toSpend / s.value * 100)), S = i(() => s.value === null || s.value === 0 ? 0 : m(l.used / s.value * 100)), k = i(() => l.available === null || s.value === null || s.value === 0 ? 100 : v.value ? 0 : m(l.available / s.value * 100)), c = i(() => l.type === "unique_launches" ? "Runs Limits" : l.type === "volume_limit" ? "Volume Limits" : l.label), L = (e) => (e / 1024 / 1024 / 1024).toFixed(2) + " GB", d = (e) => l.type === "volume_limit" ? L(e) : e, f = (e) => Number(e.toFixed(2)) > 0;
|
|
14
|
+
return (e, a) => (r(), u("div", {
|
|
15
|
+
class: t(e.$style.container)
|
|
16
16
|
}, [
|
|
17
|
-
|
|
18
|
-
class:
|
|
19
|
-
},
|
|
20
|
-
|
|
21
|
-
class:
|
|
17
|
+
n("span", {
|
|
18
|
+
class: t(e.$style.label)
|
|
19
|
+
}, o(c.value), 3),
|
|
20
|
+
n("div", {
|
|
21
|
+
class: t(e.$style.content)
|
|
22
22
|
}, [
|
|
23
|
-
|
|
24
|
-
class:
|
|
23
|
+
n("div", {
|
|
24
|
+
class: t(e.$style.contentAvailable)
|
|
25
25
|
}, [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
style:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
26
|
+
n("div", null, [
|
|
27
|
+
a[0] || (a[0] = y(" Available: ")),
|
|
28
|
+
a[1] || (a[1] = n("div", { style: { flex: "1" } }, null, -1)),
|
|
29
|
+
$.value !== null ? (r(), u("span", F, [
|
|
30
|
+
n("strong", null, o(d($.value)), 1),
|
|
31
|
+
y(" / " + o(d(e.available + e.toSpend + e.used)), 1)
|
|
32
|
+
])) : (r(), u("span", N, "Unlimited"))
|
|
33
|
+
]),
|
|
34
|
+
n("div", {
|
|
35
|
+
class: t([e.$style.afterRun, { [e.$style.exceeded]: v.value }])
|
|
36
|
+
}, [
|
|
37
|
+
v.value ? (r(), u("span", A, "Too many files selected")) : p("", !0),
|
|
38
|
+
a[2] || (a[2] = n("span", { style: { flex: "1" } }, null, -1)),
|
|
39
|
+
a[3] || (a[3] = n("span", null, "After run:", -1)),
|
|
40
|
+
e.available !== null ? (r(), u("span", C, o(d(e.available)) + " / " + o(d(e.available + e.toSpend + e.used)), 1)) : p("", !0)
|
|
41
|
+
], 2),
|
|
42
|
+
n("div", {
|
|
43
|
+
class: t([e.$style.progressBar, { [e.$style.exceeded]: v.value }])
|
|
44
|
+
}, [
|
|
45
|
+
f(k.value) ? (r(), u("span", {
|
|
46
|
+
key: 0,
|
|
47
|
+
class: t(e.$style.progressBarAvailable),
|
|
48
|
+
style: b({ width: `${k.value.toFixed(2)}%` })
|
|
49
|
+
}, null, 6)) : p("", !0),
|
|
50
|
+
f(g.value) ? (r(), u("span", {
|
|
51
|
+
key: 1,
|
|
52
|
+
class: t(e.$style.progressBarToSpend),
|
|
53
|
+
style: b({ width: `${g.value.toFixed(2)}%` })
|
|
54
|
+
}, null, 6)) : p("", !0),
|
|
55
|
+
f(S.value) ? (r(), u("span", {
|
|
56
|
+
key: 2,
|
|
57
|
+
class: t(e.$style.progressBarUsed),
|
|
58
|
+
style: b({ width: `${S.value.toFixed(2)}%` })
|
|
59
|
+
}, null, 6)) : p("", !0)
|
|
60
|
+
], 2)
|
|
48
61
|
], 2),
|
|
49
|
-
|
|
50
|
-
class:
|
|
62
|
+
n("div", {
|
|
63
|
+
class: t(e.$style.legends)
|
|
51
64
|
}, [
|
|
52
|
-
|
|
53
|
-
class:
|
|
65
|
+
n("div", {
|
|
66
|
+
class: t(e.$style.toSpendLegend)
|
|
54
67
|
}, [
|
|
55
|
-
a[
|
|
56
|
-
|
|
68
|
+
a[4] || (a[4] = n("span", null, null, -1)),
|
|
69
|
+
y(" To spend: " + o(d(e.toSpend)), 1)
|
|
57
70
|
], 2),
|
|
58
|
-
|
|
59
|
-
class:
|
|
71
|
+
n("div", {
|
|
72
|
+
class: t(e.$style.usedLegend)
|
|
60
73
|
}, [
|
|
61
|
-
a[
|
|
62
|
-
|
|
74
|
+
a[5] || (a[5] = n("span", null, null, -1)),
|
|
75
|
+
y(" Used: " + o(d(e.used)), 1)
|
|
63
76
|
], 2)
|
|
64
77
|
], 2)
|
|
65
78
|
], 2)
|
|
@@ -67,6 +80,6 @@ const S = { key: 0 }, B = { key: 1 }, c = /* @__PURE__ */ g({
|
|
|
67
80
|
}
|
|
68
81
|
});
|
|
69
82
|
export {
|
|
70
|
-
|
|
83
|
+
T as default
|
|
71
84
|
};
|
|
72
85
|
//# sourceMappingURL=LimitCard.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LimitCard.vue2.js","sources":["../../../src/plugins/Monetization/LimitCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n type: 'unique_launches' | 'volume_limit';\n label: string;\n used: number;\n toSpend: number;\n available: number | null; // If available is null it means Unlimited\n unit?: string;\n}>();\n\nconst
|
|
1
|
+
{"version":3,"file":"LimitCard.vue2.js","sources":["../../../src/plugins/Monetization/LimitCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n type: 'unique_launches' | 'volume_limit';\n label: string;\n used: number;\n toSpend: number;\n available: number | null; // If available is null it means Unlimited\n unit?: string;\n}>();\n\nconst total = computed(() => {\n if (props.available === null) return null;\n return props.available + props.toSpend + props.used;\n});\n\nconst exceeded = computed(() => {\n if (props.available === null) return false;\n return props.available < 0;\n});\n\nconst availableNow = computed(() => {\n if (props.available === null) return null;\n return props.available + props.toSpend;\n});\n\nconst clampPercentage = (n: number) => Math.max(0, Math.min(100, n));\n\nconst toSpendPercentage = computed(() => {\n if (total.value === null) return 0;\n if (total.value === 0) return 0;\n if (exceeded.value) return 0;\n return clampPercentage((props.toSpend / total.value) * 100);\n});\n\nconst usedPercentage = computed(() => {\n if (total.value === null) return 0;\n if (total.value === 0) return 0;\n return clampPercentage((props.used / total.value) * 100);\n});\n\nconst availablePercentage = computed(() => {\n if (props.available === null) return 100;\n if (total.value === null) return 100;\n if (total.value === 0) return 100;\n if (exceeded.value) return 0;\n return clampPercentage(props.available / total.value * 100);\n});\n\nconst computedLabel = computed(() => {\n if (props.type === 'unique_launches') return 'Runs Limits';\n if (props.type === 'volume_limit') return 'Volume Limits';\n return props.label;\n});\n\nconst toGB = (v: number) => {\n return (v / 1024 / 1024 / 1024).toFixed(2) + ' GB';\n};\n\nconst formatUnit = (v: number) => {\n if (props.type === 'volume_limit') return toGB(v);\n return v;\n};\n\nconst showBar = (n: number) => {\n return Number(n.toFixed(2)) > 0;\n};\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <span :class=\"$style.label\">{{ computedLabel }}</span>\n <div :class=\"$style.content\">\n <div :class=\"$style.contentAvailable\">\n <div>\n Available:\n <div style=\"flex: 1\" />\n <span v-if=\"availableNow !== null\"><strong>{{ formatUnit(availableNow) }}</strong> / {{ formatUnit(available! + toSpend + used) }}</span>\n <span v-else>Unlimited</span>\n </div>\n <div :class=\"[$style.afterRun, { [$style.exceeded]: exceeded }]\">\n <span v-if=\"exceeded\">Too many files selected</span>\n <span style=\"flex: 1\" />\n <span>After run:</span>\n <span v-if=\"available !== null\">{{ formatUnit(available) }} / {{ formatUnit(available + toSpend + used) }}</span>\n </div>\n <div :class=\"[$style.progressBar, { [$style.exceeded]: exceeded }]\">\n <span v-if=\"showBar(availablePercentage)\" :class=\"$style.progressBarAvailable\" :style=\"{ width: `${availablePercentage.toFixed(2)}%` }\" />\n <span v-if=\"showBar(toSpendPercentage)\" :class=\"$style.progressBarToSpend\" :style=\"{ width: `${toSpendPercentage.toFixed(2)}%` }\" />\n <span v-if=\"showBar(usedPercentage)\" :class=\"$style.progressBarUsed\" :style=\"{ width: `${usedPercentage.toFixed(2)}%` }\" />\n </div>\n </div>\n <div :class=\"$style.legends\">\n <div :class=\"$style.toSpendLegend\">\n <span/>\n To spend: {{ formatUnit(toSpend) }}\n </div>\n <div :class=\"$style.usedLegend\">\n <span/>\n Used: {{ formatUnit(used) }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style module>\n.container {\n display: flex;\n flex-direction: column;\n background-color: var(--bg-base-light);\n border-radius: 6px;\n padding: 10px 12px 16px 12px;\n color: var(--txt-01);\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n border: 1px solid var(--border-color-div-grey);\n}\n\n.label {\n display: block;\n min-height: 36px;\n margin-bottom: 8px;\n color: var(--txt-01);\n font-size: 14px;\n font-weight: 600;\n line-height: 20px; /* 142.857% */\n}\n\n.content {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.contentAvailable {\n display: flex;\n flex-direction: column;\n gap: 6px;\n > div {\n display: flex;\n align-items: flex-start;\n }\n >div:first-child {\n gap: 8px;\n strong {\n font-size: 28px;\n font-weight: 500;\n line-height: 36px; /* 128.571% */\n letter-spacing: -0.56px;\n }\n }\n}\n\n.afterRun {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 4px;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 16px;\n color: var(--txt-03);\n &.exceeded {\n color: var(--txt-error);\n }\n}\n\n.progressBar {\n width: 100%;\n height: 12px;\n background-color: #E0E0E0;\n display: flex;\n align-items: center;\n border: 1px solid var(--border-color-default);\n > span {\n display: block;\n height: 100%;\n outline: 1px solid var(--border-color-default);\n }\n &.exceeded {\n opacity: 0.2;\n }\n}\n\n.progressBarAvailable {\n background: linear-gradient(270deg, #A1E59C 0%, #D0F5B0 98.81%);\n}\n\n.progressBarUsed {\n background-color: #FFCECC;\n}\n\n.progressBarToSpend {\n background-color: #FAF5AA;\n}\n\n.legends {\n display: flex;\n justify-content: space-between;\n gap: 8px;\n\n span {\n display: block;\n border-radius: 1px;\n border: 1px solid var(--border-color-default);\n width: 12px;\n height: 12px;\n }\n}\n\n.usedLegend {\n display: flex;\n align-items: center;\n gap: 8px;\n span {\n background: #FFCECC;\n }\n}\n\n.toSpendLegend {\n display: flex;\n align-items: center;\n gap: 8px;\n span {\n background: #FAF5AA;\n }\n}\n</style>\n"],"names":["props","__props","total","computed","exceeded","availableNow","clampPercentage","n","toSpendPercentage","usedPercentage","availablePercentage","computedLabel","toGB","v","formatUnit","showBar"],"mappings":";;;;;;;;;;;;AAGA,UAAMA,IAAQC,GASRC,IAAQC,EAAS,MACjBH,EAAM,cAAc,OAAa,OAC9BA,EAAM,YAAYA,EAAM,UAAUA,EAAM,IAChD,GAEKI,IAAWD,EAAS,MACpBH,EAAM,cAAc,OAAa,KAC9BA,EAAM,YAAY,CAC1B,GAEKK,IAAeF,EAAS,MACxBH,EAAM,cAAc,OAAa,OAC9BA,EAAM,YAAYA,EAAM,OAChC,GAEKM,IAAkB,CAACC,MAAc,KAAK,IAAI,GAAG,KAAK,IAAI,KAAKA,CAAC,CAAC,GAE7DC,IAAoBL,EAAS,MAC7BD,EAAM,UAAU,QAChBA,EAAM,UAAU,KAChBE,EAAS,QAAc,IACpBE,EAAiBN,EAAM,UAAUE,EAAM,QAAS,GAAG,CAC3D,GAEKO,IAAiBN,EAAS,MAC1BD,EAAM,UAAU,QAChBA,EAAM,UAAU,IAAU,IACvBI,EAAiBN,EAAM,OAAOE,EAAM,QAAS,GAAG,CACxD,GAEKQ,IAAsBP,EAAS,MAC/BH,EAAM,cAAc,QACpBE,EAAM,UAAU,QAChBA,EAAM,UAAU,IAAU,MAC1BE,EAAS,QAAc,IACpBE,EAAgBN,EAAM,YAAYE,EAAM,QAAQ,GAAG,CAC3D,GAEKS,IAAgBR,EAAS,MACzBH,EAAM,SAAS,oBAA0B,gBACzCA,EAAM,SAAS,iBAAuB,kBACnCA,EAAM,KACd,GAEKY,IAAO,CAACC,OACJA,IAAI,OAAO,OAAO,MAAM,QAAQ,CAAC,IAAI,OAGzCC,IAAa,CAACD,MACdb,EAAM,SAAS,iBAAuBY,EAAKC,CAAC,IACzCA,GAGHE,IAAU,CAACR,MACR,OAAOA,EAAE,QAAQ,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|